diff --git a/crmeb/.gitignore b/crmeb/.gitignore new file mode 100644 index 0000000..c6fc819 --- /dev/null +++ b/crmeb/.gitignore @@ -0,0 +1,47 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/** +!**/src/test/** + + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ + +### VS Code ### +.vscode/ +/crmeb_log/log_debug.log +/crmeb_log/log_error.log +/crmeb_log/log_info.log +/crmeb_log/log_warn.log +/crmeb_log/ +/.idea/ +src/main/java/com/zbkj/.DS_Store +src/main/java/com/.DS_Store +src/main/java/.DS_Store +src/main/.DS_Store +.DS_Store + + + +xx \ No newline at end of file diff --git a/crmeb/.mvn/wrapper/MavenWrapperDownloader.java b/crmeb/.mvn/wrapper/MavenWrapperDownloader.java new file mode 100644 index 0000000..a45eb6b --- /dev/null +++ b/crmeb/.mvn/wrapper/MavenWrapperDownloader.java @@ -0,0 +1,118 @@ +/* + * Copyright 2007-present the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import java.net.*; +import java.io.*; +import java.nio.channels.*; +import java.util.Properties; + +public class MavenWrapperDownloader { + + private static final String WRAPPER_VERSION = "0.5.6"; + /** + * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided. + */ + private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/" + + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar"; + + /** + * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to + * use instead of the default one. + */ + private static final String MAVEN_WRAPPER_PROPERTIES_PATH = + ".mvn/wrapper/maven-wrapper.properties"; + + /** + * Path where the maven-wrapper.jar will be saved to. + */ + private static final String MAVEN_WRAPPER_JAR_PATH = + ".mvn/wrapper/maven-wrapper.jar"; + + /** + * Name of the property which should be used to override the default download url for the wrapper. + */ + private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl"; + + public static void main(String args[]) { + System.out.println("- Downloader started"); + File baseDirectory = new File(args[0]); + System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath()); + + // If the maven-wrapper.properties exists, read it and check if it contains a custom + // wrapperUrl parameter. + File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH); + String url = DEFAULT_DOWNLOAD_URL; + if (mavenWrapperPropertyFile.exists()) { + FileInputStream mavenWrapperPropertyFileInputStream = null; + try { + mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile); + Properties mavenWrapperProperties = new Properties(); + mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream); + url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url); + } catch (IOException e) { + System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'"); + } finally { + try { + if (mavenWrapperPropertyFileInputStream != null) { + mavenWrapperPropertyFileInputStream.close(); + } + } catch (IOException e) { + // Ignore ... + } + } + } + System.out.println("- Downloading from: " + url); + + File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH); + if (!outputFile.getParentFile().exists()) { + if (!outputFile.getParentFile().mkdirs()) { + System.out.println( + "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'"); + } + } + System.out.println("- Downloading to: " + outputFile.getAbsolutePath()); + try { + downloadFileFromURL(url, outputFile); + System.out.println("Done"); + System.exit(0); + } catch (Throwable e) { + System.out.println("- Error downloading"); + e.printStackTrace(); + System.exit(1); + } + } + + private static void downloadFileFromURL(String urlString, File destination) throws Exception { + if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) { + String username = System.getenv("MVNW_USERNAME"); + char[] password = System.getenv("MVNW_PASSWORD").toCharArray(); + Authenticator.setDefault(new Authenticator() { + @Override + protected PasswordAuthentication getPasswordAuthentication() { + return new PasswordAuthentication(username, password); + } + }); + } + URL website = new URL(urlString); + ReadableByteChannel rbc; + rbc = Channels.newChannel(website.openStream()); + FileOutputStream fos = new FileOutputStream(destination); + fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE); + fos.close(); + rbc.close(); + } + +} diff --git a/crmeb/.mvn/wrapper/maven-wrapper.jar b/crmeb/.mvn/wrapper/maven-wrapper.jar new file mode 100644 index 0000000..2cc7d4a Binary files /dev/null and b/crmeb/.mvn/wrapper/maven-wrapper.jar differ diff --git a/crmeb/.mvn/wrapper/maven-wrapper.properties b/crmeb/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000..642d572 --- /dev/null +++ b/crmeb/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1,2 @@ +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip +wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar diff --git a/crmeb/README.md b/crmeb/README.md new file mode 100644 index 0000000..485137e --- /dev/null +++ b/crmeb/README.md @@ -0,0 +1,52 @@ +# 环境 +1. Java Jdk1.8 +2. Redis 5+ +3. Mysql 5.7+ + +# Java项目框架 +1. SpringBoot 2.2.6.RELEASE +2. Maven 3.6.1 +3. Swagger 2.9.2 +4. Mybatis Plus 3.3.1 + +# 部署 +1. 拿到jar包,上传到web目录下,(宝塔配置的域名指向的web目录下即可) +2. 在 jar包同级目录下运行 `start.sh (运行命令为 ./start.sh )` 脚本即可启动项目 +3. shell脚本会自动运行 `tail -f crmeb_out.file` 命令输出当前启动日志 +4. 看到 `Completed 200 OK` 表示启动成功 +5. 默认启动 `20000` 端口号 + + +# +# 注意事项 +1. web端口号不可以设置为`20000` +2. 反向代理地址: `http://127.0.0.1:20000` 【外网域名指向这个地址】 + +# 二次开发帮助文档 +##注解参考: +1. `@NotNull` 注解 作用类型 解释 任何类型 属性不能为 `null` +2. `@NotEmpty` 集合 集合不能为 `null`,且 `size` 大于 `0` +3. `@NotBlank` 只能作用在 `String` 上,不能为 `null`,而且调用 `trim()` 后,长度必须大于 `0` +4. `@AssertTrue` `Boolean、boolean` 布尔属性必须是 `true` +5. `@Min` 数字类型(原子和包装) 限定数字的最小值(整型) +6. `@Max` 同 `@Min` 限定数字的最大值(整型) +7. `@DecimalMin` 同 `@Min` 限定数字的最小值(字符串,可以是小数) +8. `@DecimalMax` 同 `@Min` 限定数字的最大值(字符串,可以是小数) +9. `@Range` 数字类型(原子和包装) 限定数字范围(长整型) +10. `@Length` 字符串 限定字符串长度 +11. `@Size` 集合 限定集合大小 +12. `@Past` 时间、日期 必须是一个过去的时间或日期 +13. `@Future` 时期、时间 必须是一个未来的时间或日期 +14. `@Email` 字符串 必须是一个邮箱格式 +15. `@Pattern` 字符串、字符 正则匹配字符串 + +# 产品复制 +1. 设置 [99api](https://www.99api.com "99api") 对应的api到配置表eb_system_config +2. 配置baseUrl和key 实际的key可以根据自己的定义修改 +3. 目前支持天猫,京东,淘宝,苏宁,拼多多 + +# 打印机 +1. [易联云文档](http://doc2.10ss.net/337744 "易联云文档") +2. [易联云JAVA SDK](http://doc2.10ss.net/337744 "易联云JAVA SDK gitee文档") +3. [如何导入第三方JAVA SDK包](https://blog.csdn.net/weixin_46028577/article/details/106342938?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase "如何导入第三方JAVA SDK包") + diff --git a/crmeb/crmeb-admin/pom.xml b/crmeb/crmeb-admin/pom.xml new file mode 100644 index 0000000..c7d7994 --- /dev/null +++ b/crmeb/crmeb-admin/pom.xml @@ -0,0 +1,77 @@ + + + + crmeb + com.zbkj + 0.0.1-SNAPSHOT + + 4.0.0 + + crmeb-admin + jar + + + 0.0.1-SNAPSHOT + + + + + com.zbkj + crmeb-service + ${crmeb-service} + + + + + + Crmeb-admin + + + org.springframework.boot + spring-boot-maven-plugin + 2.3.0.RELEASE + + + + repackage + + + + + + + + + + + + + + + + + + + + + src/main/resources + true + + + + + + + + + src/main/java + + **/*.xml + + + + + + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/CrmebAdminApplication.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/CrmebAdminApplication.java new file mode 100644 index 0000000..7951499 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/CrmebAdminApplication.java @@ -0,0 +1,38 @@ +package com.zbkj.admin; + +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableAsync; +import org.springframework.transaction.annotation.EnableTransactionManagement; +import springfox.documentation.swagger2.annotations.EnableSwagger2; + +/** + * 程序主入口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@EnableAsync //开启异步调用 +@EnableSwagger2 +@Configuration +@EnableTransactionManagement +@SpringBootApplication(exclude = DataSourceAutoConfiguration.class) //去掉数据源 +@ComponentScan(basePackages = {"com.zbkj"}) +@MapperScan(basePackages = {"com.zbkj.**.dao"}) +public class CrmebAdminApplication { + + public static void main(String[] args) { + SpringApplication.run(CrmebAdminApplication.class, args); + } + +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/acpect/ControllerAspect.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/acpect/ControllerAspect.java new file mode 100644 index 0000000..1e043a8 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/acpect/ControllerAspect.java @@ -0,0 +1,53 @@ +package com.zbkj.admin.acpect; + +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Pointcut; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import java.util.Arrays; + + +/** + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + * 所有的前端controller层的拦截业务,方法的执行时间长度, + */ +@Aspect +@Component +public class ControllerAspect { + + Logger logger = LoggerFactory.getLogger(ControllerAspect.class); + + @Pointcut("execution(* com.zbkj.admin.controller.*.*(..))") + private void pointCutMethodController() { + + } + + @Around("pointCutMethodController()") + public Object doAroundService(ProceedingJoinPoint pjp) throws Throwable { + + long begin = System.nanoTime(); + + Object obj = pjp.proceed(); + + long end = System.nanoTime(); + + logger.info("Controller method:{},prams:{},cost time:{} ns,cost:{} ms", + + pjp.getSignature().toString(), Arrays.toString(pjp.getArgs()), (end - begin), (end - begin) / 1000000); + + return obj; + } + +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/config/CorsConfig.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/config/CorsConfig.java new file mode 100644 index 0000000..b28c73c --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/config/CorsConfig.java @@ -0,0 +1,40 @@ +package com.zbkj.admin.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.cors.CorsConfiguration; +import org.springframework.web.cors.UrlBasedCorsConfigurationSource; +import org.springframework.web.filter.CorsFilter; + +/** 跨域配置 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Configuration +public class CorsConfig{ + private CorsConfiguration buildConfig() { + CorsConfiguration corsConfiguration = new CorsConfiguration(); + //允许任何域名 + corsConfiguration.addAllowedOrigin("*"); + //允许任何头 + corsConfiguration.addAllowedHeader("*"); + //允许任何方法 + corsConfiguration.addAllowedMethod("*"); + return corsConfiguration; + } + + @Bean + public CorsFilter corsFilter() { + UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); + //注册 + source.registerCorsConfiguration("/**", buildConfig()); + return new CorsFilter(source); + } +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/config/DruidConfig.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/config/DruidConfig.java new file mode 100644 index 0000000..07d6b57 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/config/DruidConfig.java @@ -0,0 +1,56 @@ +package com.zbkj.admin.config; + +import com.alibaba.druid.pool.DruidDataSource; +import com.alibaba.druid.support.http.StatViewServlet; +import com.alibaba.druid.support.http.WebStatFilter; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.web.servlet.FilterRegistrationBean; +import org.springframework.boot.web.servlet.ServletRegistrationBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import javax.sql.DataSource; + +/** + * Druid配置组件 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Configuration +public class DruidConfig { + + @Bean + public ServletRegistrationBean druidServlet() { // 主要实现WEB监控的配置处理 + ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*"); // 进行druid监控的配置处理操作 +// servletRegistrationBean.addInitParameter("allow", +// "127.0.0.1,192.168.1.159"); // 白名单 +// servletRegistrationBean.addInitParameter("deny", "192.168.1.200"); // 黑名单 + servletRegistrationBean.addInitParameter("loginUsername", "kf"); // 用户名 + servletRegistrationBean.addInitParameter("loginPassword", "654321"); // 密码 + servletRegistrationBean.addInitParameter("resetEnable", "true"); // 是否可以重置数据源 + return servletRegistrationBean ; + } + @Bean + public FilterRegistrationBean filterRegistrationBean() { + FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean() ; + filterRegistrationBean.setFilter(new WebStatFilter()); + + filterRegistrationBean.addUrlPatterns("/*"); // 所有请求进行监控处理 + //不必监控的请求 + filterRegistrationBean.addInitParameter("exclusions", "*.html,*.png,*.ico,*.js,*.gif,*.jpg,*.css,/druid/*"); + return filterRegistrationBean ; + } + @Bean("dataSource") + @ConfigurationProperties(prefix = "spring.datasource") + public DataSource druidDataSource() { + return new DruidDataSource(); + } +} + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/config/JacksonConfig.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/config/JacksonConfig.java new file mode 100644 index 0000000..b67e03a --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/config/JacksonConfig.java @@ -0,0 +1,36 @@ +package com.zbkj.admin.config; + +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import java.math.BigDecimal; + +/** + * Jackjson配置组件 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Configuration +public class JacksonConfig { + + /** + * Jackson全局转化BigDecimal类型为String,解决jackson序列化时BigDecimal类型缺失精度问题 + * + * @return Jackson2ObjectMapperBuilderCustomizer 注入的对象 + */ + @Bean + public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() { + + return jacksonObjectMapperBuilder -> jacksonObjectMapperBuilder.serializerByType(BigDecimal.class, ToStringSerializer.instance); + } + +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/config/RestTemplateConfig.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/config/RestTemplateConfig.java new file mode 100644 index 0000000..e06a3fc --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/config/RestTemplateConfig.java @@ -0,0 +1,55 @@ +package com.zbkj.admin.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.MediaType; +import org.springframework.http.client.ClientHttpRequestFactory; +import org.springframework.http.client.SimpleClientHttpRequestFactory; +import org.springframework.http.converter.StringHttpMessageConverter; +import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; +import org.springframework.web.client.RestTemplate; + +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.List; + +/** + * RestTemplate配置组件 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Configuration +public class RestTemplateConfig { + @Bean + public RestTemplate restTemplate(ClientHttpRequestFactory factory) { + RestTemplate restTemplate = new RestTemplate(factory); + restTemplate.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8)); + restTemplate.getMessageConverters().add(new WxMappingJackson2HttpMessageConverter()); + return restTemplate; + } + + @Bean + public ClientHttpRequestFactory httpRequestFactory() { + SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory(); + factory.setReadTimeout(10000);//ms + factory.setConnectTimeout(15000);//ms + return factory; + } + + //解决微信返回json Content-Type 值却是 text/plain 的问题 + public class WxMappingJackson2HttpMessageConverter extends MappingJackson2HttpMessageConverter { + public WxMappingJackson2HttpMessageConverter(){ + List mediaTypes = new ArrayList<>(); + mediaTypes.add(MediaType.TEXT_PLAIN); + mediaTypes.add(MediaType.TEXT_HTML); + setSupportedMediaTypes(mediaTypes); + } + } +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/config/SchedulerConfig.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/config/SchedulerConfig.java new file mode 100644 index 0000000..eacb337 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/config/SchedulerConfig.java @@ -0,0 +1,36 @@ +package com.zbkj.admin.config; + +import lombok.Data; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; + +/** + * Spring 定时任务配置 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@Configuration +public class SchedulerConfig implements SchedulingConfigurer { + private final int poolSize = 30; + + @Override + public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) { + ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler(); + + threadPoolTaskScheduler.setPoolSize(getPoolSize()); + threadPoolTaskScheduler.setThreadNamePrefix("crmeb-scheduled-task-pool-"); + threadPoolTaskScheduler.initialize(); + + scheduledTaskRegistrar.setTaskScheduler(threadPoolTaskScheduler); + } +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/config/SwaggerConfig.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/config/SwaggerConfig.java new file mode 100644 index 0000000..9220217 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/config/SwaggerConfig.java @@ -0,0 +1,129 @@ +package com.zbkj.admin.config; + +import com.zbkj.common.constants.Constants; +import com.google.common.base.Predicate; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import springfox.documentation.builders.ApiInfoBuilder; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.service.*; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spi.service.contexts.SecurityContext; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger2.annotations.EnableSwagger2; + +import java.util.ArrayList; +import java.util.List; + +import static com.google.common.collect.Lists.newArrayList; + +/** + * Swagger配置组件 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Configuration +@EnableSwagger2 +@ConfigurationProperties(prefix = "api.doc") +public class SwaggerConfig{ + + //是否开启swagger,正式环境一般是需要关闭的,可根据springboot的多环境配置进行设置 + Boolean swaggerEnabled = true; + + @Value("${server.port}") + private String port; + + @Value("${crmeb.domain}") + private String domain; + + @Bean("admin") + public Docket createRestApis() { + return new Docket(DocumentationType.SWAGGER_2) + .groupName("admin") + .host(domain) + .apiInfo(apiInfo()) + // 是否开启 + .enable(swaggerEnabled) + .select() + // 扫描的路径包 + .apis(RequestHandlerSelectors.basePackage("com.zbkj.admin")) + // 指定路径处理PathSelectors.any()代表所有的路径 + .paths(adminPathsAnt()) + .build() + .securitySchemes(security()) + .securityContexts(securityContexts()) +// .globalOperationParameters(pars) // 针对单个url的验证 如果需要的话 + .pathMapping("/"); + } + + @Bean("public") + public Docket create2RestApis() { + return new Docket(DocumentationType.SWAGGER_2) + .groupName("public") + .host(domain) + .apiInfo(apiInfo()) + // 是否开启 + .enable(swaggerEnabled) + .select() + // 扫描的路径包 + .apis(RequestHandlerSelectors.basePackage("com.zbkj.admin")) + // 指定路径处理PathSelectors.any()代表所有的路径 + .paths(publicPathsAnt()) //只监听 + .build() + .securitySchemes(security()) + .securityContexts(securityContexts()) +// .globalOperationParameters(pars) // 针对单个url的验证 如果需要的话 + .pathMapping("/"); + } + + private Predicate adminPathsAnt() { + return PathSelectors.ant("/api/admin/**"); + } + + private Predicate publicPathsAnt() { + return PathSelectors.ant("/api/public/**"); + } + + private List security() { + return newArrayList( + new ApiKey(Constants.HEADER_AUTHORIZATION_KEY, Constants.HEADER_AUTHORIZATION_KEY, "header") + ); + } + + private ApiInfo apiInfo() { + return new ApiInfoBuilder() + .title("Crmeb Java") + .description("Crmeb") + .termsOfServiceUrl("http://host:port") + .version("1.0.0").build(); + } + + + private List securityContexts() { + List res = new ArrayList<>(); + res.add(SecurityContext.builder() + .securityReferences(defaultAuth()) + .forPaths(PathSelectors.regex("/.*")) + .build()); + return res; + } + + private List defaultAuth() { + List res = new ArrayList<>(); + AuthorizationScope authorizationScope = new AuthorizationScope("global", Constants.HEADER_AUTHORIZATION_KEY); + AuthorizationScope[] authorizationScopes = new AuthorizationScope[1]; + authorizationScopes[0] = authorizationScope; + res.add(new SecurityReference(Constants.HEADER_AUTHORIZATION_KEY, authorizationScopes)); + return res; + } +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/config/TaskExecutorConfig.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/config/TaskExecutorConfig.java new file mode 100644 index 0000000..5d1b876 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/config/TaskExecutorConfig.java @@ -0,0 +1,105 @@ +package com.zbkj.admin.config; + +import lombok.Data; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; + +import java.util.concurrent.RejectedExecutionHandler; +import java.util.concurrent.ThreadPoolExecutor; + +/** + * Task类的线程配置 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@Configuration +public class TaskExecutorConfig { + + //普通模式 + private final int taskCorePoolSize = 20; //核心线程池数量 + private final int taskMaxPoolSize = 100; //最大线程 + private final int taskQueueCapacity = 200; //缓存队列条数 + private final int taskKeepAliveSecond = 10; //允许的空闲时间 + private final String taskNamePrefix = "task-executor-"; //线程名称前缀 + + //发布订阅模式 +// private final int listenerCorePoolSize = 3; +// private final int listenerMaxPoolSize = 20; +// private final int listenerQueueCapacity = 200; +// private final int listenerKeepAliveSecond = 10; +// private final String listenerNamePrefix = "listener-executor-"; + + //普通模式 + @Bean("taskExecutor") + public ThreadPoolTaskExecutor taskExecutor(){ + return initTaskExecutor( + getTaskCorePoolSize(), + getTaskMaxPoolSize(), + getTaskQueueCapacity(), + getTaskKeepAliveSecond(), + getTaskNamePrefix() + ); + } + +// //针对发布订阅(pub listener) 的线程池 +// @Bean("listenerTaskExecutor") +// public ThreadPoolTaskExecutor listenerTaskExecutor(){ +// return initTaskExecutor(getListenerCorePoolSize(), getListenerMaxPoolSize(), +// getListenerQueueCapacity(), getListenerKeepAliveSecond(), getListenerNamePrefix()); +// } + + /** + * + * 初始化TaskExecutor + * @param corePoolSize int 默认线程数 + * @param maxPoolSize int 最大线程数 + * @param queueCapacity int 缓冲队列长度 + * @param keepAliveSecond int 允许空闲时间 + * @param namePrefix String 名称的前缀 + * + * @return ThreadPoolTaskExecutor + */ + private ThreadPoolTaskExecutor initTaskExecutor(int corePoolSize, int maxPoolSize, + int queueCapacity, int keepAliveSecond, String namePrefix){ + //callrunspolicy:由调度线程(提交任务的线程)处理该任务CallerRunsPolicy + return initTaskExecutor(corePoolSize, maxPoolSize, queueCapacity, keepAliveSecond, namePrefix, + new ThreadPoolExecutor.CallerRunsPolicy()); + } + + /** + * 初始化TaskExecutor + * @param corePoolSize int 默认线程数 + * @param maxPoolSize int 最大线程数 + * @param queueCapacity int 缓冲队列长度 + * @param keepAliveSecond int 允许空闲时间 + * @param namePrefix String 名称的前缀 + * @param rejectedExecutionHandler 线程池满的时候如何处理 + * @return ThreadPoolTaskExecutor + */ + private ThreadPoolTaskExecutor initTaskExecutor(int corePoolSize, int maxPoolSize, + int queueCapacity, int keepAliveSecond, String namePrefix, + RejectedExecutionHandler rejectedExecutionHandler){ + ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); + executor.setCorePoolSize(corePoolSize);//核心线程数(默认线程数) + executor.setMaxPoolSize(maxPoolSize);//最大线程数 + executor.setQueueCapacity(queueCapacity);//缓冲队列数 + executor.setKeepAliveSeconds(keepAliveSecond);//允许线程空闲时间(单位默认为秒) + executor.setThreadNamePrefix(namePrefix);//线程名前缀 + + //线程池对拒绝任务的处理策略, + executor.setRejectedExecutionHandler(rejectedExecutionHandler); + + //初始化 + executor.initialize(); + return executor; + } +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/config/WebConfig.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/config/WebConfig.java new file mode 100644 index 0000000..a71594d --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/config/WebConfig.java @@ -0,0 +1,113 @@ +package com.zbkj.admin.config; + +import com.zbkj.admin.filter.ResponseFilter; +import com.zbkj.common.config.CrmebConfig; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.interceptor.SwaggerInterceptor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.boot.web.servlet.FilterRegistrationBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; +import org.springframework.web.servlet.handler.MappedInterceptor; + +/** + * token验证拦截器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Configuration +public class WebConfig implements WebMvcConfigurer { + + // 这里使用一个Bean为的是可以在拦截器中自由注入,也可以在拦截器中使用SpringUtil.getBean 获取 + // 但是觉得这样更优雅 + + @Autowired + CrmebConfig crmebConfig; + + @Bean + public ResponseFilter responseFilter(){ return new ResponseFilter(); } + + @Value("${swagger.basic.username}") + private String username; + @Value("${swagger.basic.password}") + private String password; + @Value("${swagger.basic.check}") + private Boolean check; + + + @Override + public void addInterceptors(InterceptorRegistry registry) { + //添加token拦截器 + //addPathPatterns添加需要拦截的命名空间; + //excludePathPatterns添加排除拦截命名空间 + + +// //后台token拦截 +// registry.addInterceptor(adminTokenInterceptor()). +// addPathPatterns("/api/admin/**"). +// excludePathPatterns("/api/admin/validate/**"). +// excludePathPatterns("/api/admin/login"). +// excludePathPatterns("/api/admin/logout"). +// excludePathPatterns("/api/admin/getLoginPic"). +// excludePathPatterns("/api/admin/wechat/config"). +// excludePathPatterns("/api/admin/authorize/login"). +// excludePathPatterns("/api/admin/payment/callback/**"). +//// excludePathPatterns("/api/admin/system/role/menu"). +// excludePathPatterns("/api/admin/system/role/info"). +// excludePathPatterns("/swagger-resources/**", "/webjars/**", "/v2/**", "/swagger-ui.html/**"); +// +// //后台权限规则 +// registry.addInterceptor(adminAuthInterceptor()). +// addPathPatterns("/api/admin/**"). +// excludePathPatterns("/api/admin/validate/**"). +// excludePathPatterns("/api/admin/login"). +// excludePathPatterns("/api/admin/logout"). +// excludePathPatterns("/api/admin/getLoginPic"). +// excludePathPatterns("/api/admin/payment/callback/**"). +// excludePathPatterns("/swagger-resources/**", "/webjars/**", "/v2/**", "/swagger-ui.html/**"); + + } + + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) { + registry.addResourceHandler("/**") + .addResourceLocations("classpath:/static/"); + registry.addResourceHandler("doc.html") + .addResourceLocations("classpath:/META-INF/resources/"); + registry.addResourceHandler("/webjars/**") + .addResourceLocations("classpath:/META-INF/resources/webjars/"); + + /** 本地文件上传路径 */ + registry.addResourceHandler(Constants.UPLOAD_TYPE_IMAGE + "/**") + .addResourceLocations("file:" + crmebConfig.getImagePath() + "/" + Constants.UPLOAD_TYPE_IMAGE + "/"); + } + + @Bean + public FilterRegistrationBean filterRegister() { + //注册过滤器 + FilterRegistrationBean registration = new FilterRegistrationBean(responseFilter()); + // 仅仅api前缀的请求才会拦截 + registration.addUrlPatterns("/api/admin/*"); + registration.addUrlPatterns("/api/front/*"); + return registration; + } + + /* 必须在此处配置拦截器,要不然拦不到swagger的静态资源 */ + @Bean + @ConditionalOnProperty(name = "swagger.basic.enable", havingValue = "true") + public MappedInterceptor getMappedInterceptor() { + return new MappedInterceptor(new String[]{"/doc.html", "/webjars/**"}, new SwaggerInterceptor(username, password, check)); + } +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/config/WebSecurityConfig.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/config/WebSecurityConfig.java new file mode 100644 index 0000000..73912e8 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/config/WebSecurityConfig.java @@ -0,0 +1,157 @@ +package com.zbkj.admin.config; + +import com.zbkj.admin.filter.JwtAuthenticationTokenFilter; +import com.zbkj.admin.manager.AuthenticationEntryPointImpl; +import com.zbkj.admin.manager.CustomAccessDeniedHandler; +import com.zbkj.admin.manager.CustomAuthenticationProvider; +import com.zbkj.common.constants.Constants; +import com.zbkj.service.service.impl.UserDetailServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.HttpMethod; +import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; +import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.config.http.SessionCreationPolicy; +import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; +import org.springframework.security.web.authentication.logout.LogoutFilter; +import org.springframework.web.filter.CorsFilter; + +/** + * Security配置 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Configuration +@EnableWebSecurity +@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true) +public class WebSecurityConfig extends WebSecurityConfigurerAdapter { + + /** + * 跨域过滤器 + */ + @Autowired + private CorsFilter corsFilter; + + /** + * token认证过滤器 + */ + @Bean + public JwtAuthenticationTokenFilter jwtAuthenticationTokenFilter() { + return new JwtAuthenticationTokenFilter(); + } + + /** + * 认证失败处理类 + */ + @Bean + public AuthenticationEntryPointImpl unauthorizedHandler() { + return new AuthenticationEntryPointImpl(); + } + + /** + * 鉴权失败处理类 + */ + @Bean + public CustomAccessDeniedHandler accessDeniedHandler() { + return new CustomAccessDeniedHandler(); + } + + /** + * 这里将Spring Security自带的authenticationManager声明成Bean,声明它的作用是用它帮我们进行认证操作, + * 调用这个Bean的authenticate方法会由Spring Security自动帮我们做认证。 + */ +// @Bean +// public AuthenticationManager authenticationManager() throws Exception { +// return new CusAuthenticationManager(customAuthenticationProvider); +// } + + @Override + protected void configure(AuthenticationManagerBuilder auth) { + auth.authenticationProvider(new CustomAuthenticationProvider(new UserDetailServiceImpl())); + } + + /** + * anyRequest | 匹配所有请求路径 + * access | SpringEl表达式结果为true时可以访问 + * anonymous | 匿名可以访问 + * denyAll | 用户不能访问 + * fullyAuthenticated | 用户完全认证可以访问(非remember-me下自动登录) + * hasAnyAuthority | 如果有参数,参数表示权限,则其中任何一个权限可以访问 + * hasAnyRole | 如果有参数,参数表示角色,则其中任何一个角色可以访问 + * hasAuthority | 如果有参数,参数表示权限,则其权限可以访问 + * hasIpAddress | 如果有参数,参数表示IP地址,如果用户IP和参数匹配,则可以访问 + * hasRole | 如果有参数,参数表示角色,则其角色可以访问 + * permitAll | 用户可以任意访问 + * rememberMe | 允许通过remember-me登录的用户访问 + * authenticated | 用户登录后可访问 + */ + @Override + protected void configure(HttpSecurity http) throws Exception { + + // CRSF禁用,因为不使用session + http.cors().and().csrf().disable() + // 认证失败处理类 + .exceptionHandling().authenticationEntryPoint(unauthorizedHandler()) + .accessDeniedHandler(accessDeniedHandler()).and() + // 基于token,所以不需要session + .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and() + // 过滤请求 + .authorizeRequests() + // 跨域预检请求 +// .antMatchers(HttpMethod.OPTIONS, "/**").permitAll() + // 对于登录login 验证码captchaImage 和其他放行的目录 允许匿名访问"/citylife/front/**" + .antMatchers("/api/admin/login", "/api/admin/validate/code/get").permitAll() + .antMatchers("/api/admin/getLoginPic").permitAll() + // 放行资源路径 + .antMatchers("/"+ Constants.UPLOAD_TYPE_IMAGE +"/**").anonymous() + // 放行图片、文件上传 + .antMatchers("/api/admin/upload/image").permitAll() + .antMatchers("/api/admin/upload/file").permitAll() + // 代码生成器 + .antMatchers("/api/codegen/code").permitAll() +// .antMatchers("/wx/user/*/login","/citylife/nocheck/**").anonymous() + .antMatchers( + HttpMethod.GET, + "/*.html", + "/**/*.html", + "/**/*.css", + "/**/*.js" + ).permitAll() + .antMatchers("/profile/**").anonymous() + .antMatchers("/common/download**").anonymous() + .antMatchers("/common/download/resource**").anonymous() + .antMatchers("/doc.html").permitAll() + .antMatchers("/swagger-resources/**").permitAll() + .antMatchers("/webjars/**").permitAll() + .antMatchers("/v2/**").permitAll() + .antMatchers("/swagger-ui.html/**").permitAll() + .antMatchers("/*/api-docs").anonymous() + .antMatchers("/druid/**").anonymous() + .antMatchers("/captcha/get", "/captcha/check").anonymous() + .antMatchers("/api/admin/payment/callback/**").anonymous() + .antMatchers("/api/public/**").anonymous() + // 除上面外的所有请求全部需要鉴权认证 + .anyRequest().authenticated() + .and() + .headers().frameOptions().disable();// 防止iframe 造成跨域 +// http.logout().logoutUrl("/logout").logoutSuccessHandler(logoutSuccessHandler); + // 添加JWT filter + // 开启登录认证流程过滤器 + http.addFilterBefore(jwtAuthenticationTokenFilter(), UsernamePasswordAuthenticationFilter.class); + // 添加CORS filter + http.addFilterBefore(corsFilter, JwtAuthenticationTokenFilter.class); + http.addFilterBefore(corsFilter, LogoutFilter.class); + } + +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/AdminLoginController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/AdminLoginController.java new file mode 100644 index 0000000..110bc28 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/AdminLoginController.java @@ -0,0 +1,86 @@ +package com.zbkj.admin.controller; + +import com.zbkj.common.request.SystemAdminLoginRequest; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.response.MenusResponse; +import com.zbkj.common.response.SystemAdminResponse; +import com.zbkj.common.response.SystemLoginResponse; +import com.zbkj.common.utils.CrmebUtil; +import com.zbkj.admin.service.AdminLoginService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.Map; + +/** + * 管理端登录服务 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/admin") +@Api(tags = "管理端登录服务") +public class AdminLoginController { + + @Autowired + private AdminLoginService adminLoginService; + + @ApiOperation(value="PC登录") + @PostMapping(value = "/login", produces = "application/json") + public CommonResult SystemAdminLogin(@RequestBody @Validated SystemAdminLoginRequest systemAdminLoginRequest, HttpServletRequest request) { + String ip = CrmebUtil.getClientIp(request); + SystemLoginResponse systemAdminResponse = adminLoginService.login(systemAdminLoginRequest, ip); + return CommonResult.success(systemAdminResponse, "login success"); + } + + @PreAuthorize("hasAuthority('admin:logout')") + @ApiOperation(value="PC登出") + @GetMapping(value = "/logout") + public CommonResult SystemAdminLogout() { + adminLoginService.logout(); + return CommonResult.success("logout success"); + } + + @PreAuthorize("hasAuthority('admin:info')") + @ApiOperation(value="获取用户详情") + @GetMapping(value = "/getAdminInfoByToken") + public CommonResult getAdminInfo() { + return CommonResult.success(adminLoginService.getInfoByToken()); + } + + /** + * 获取登录页图片 + * @return Map + */ + @ApiOperation(value = "获取登录页图片") + @RequestMapping(value = "/getLoginPic", method = RequestMethod.GET) + public CommonResult> getLoginPic() { + return CommonResult.success(adminLoginService.getLoginPic()); + } + + /** + * 获取管理员可访问目录 + */ + @PreAuthorize("hasAuthority('admin:login:menus')") + @ApiOperation(value = "获取管理员可访问目录") + @RequestMapping(value = "/getMenus", method = RequestMethod.GET) + public CommonResult> getMenus() { + return CommonResult.success(adminLoginService.getMenus()); + } + +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/ArticleController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/ArticleController.java new file mode 100644 index 0000000..4023dc0 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/ArticleController.java @@ -0,0 +1,118 @@ +package com.zbkj.admin.controller; + +import com.zbkj.common.model.article.Article; +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.request.ArticleRequest; +import com.zbkj.common.request.ArticleSearchRequest; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.vo.ArticleVo; +import com.zbkj.service.service.ArticleService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + + +/** + * 文章管理表 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/admin/article") +@Api(tags = "文章管理") +public class ArticleController { + + @Autowired + private ArticleService articleService; + + /** + * 分页显示文章管理表 + * @param request ArticleSearchRequest 搜索条件 + * @param pageParamRequest 分页参数 + */ + @PreAuthorize("hasAuthority('admin:article:list')") + @ApiOperation(value = "分页列表") + @RequestMapping(value = "/list", method = RequestMethod.GET) + @ApiImplicitParam(name="keywords", value="搜索关键字") + public CommonResult> getList(@Validated ArticleSearchRequest request, + @Validated PageParamRequest pageParamRequest) { + return CommonResult.success(CommonPage.restPage(articleService.getAdminList(request, pageParamRequest))); + } + + /** + * 新增文章管理表 + * @param articleRequest 新增参数 + */ + @PreAuthorize("hasAuthority('admin:article:save')") + @ApiOperation(value = "新增") + @RequestMapping(value = "/save", method = RequestMethod.POST) + public CommonResult save(@RequestBody @Validated ArticleRequest articleRequest) { + if (articleService.create(articleRequest)) { + return CommonResult.success(); + } else { + return CommonResult.failed(); + } + } + + /** + * 删除文章管理表 + * @param id Integer + */ + @PreAuthorize("hasAuthority('admin:article:delete')") + @ApiOperation(value = "删除") + @RequestMapping(value = "/delete", method = RequestMethod.GET) + @ApiImplicitParam(name="id", value="文章ID") + public CommonResult delete(@RequestParam(value = "id") Integer id) { + if (articleService.deleteById(id)) { + return CommonResult.success(); + } else { + return CommonResult.failed(); + } + } + + /** + * 修改文章管理表 + * @param id integer id + * @param articleRequest 修改参数 + */ + @PreAuthorize("hasAuthority('admin:article:update')") + @ApiOperation(value = "修改") + @RequestMapping(value = "/update", method = RequestMethod.POST) + @ApiImplicitParam(name="id", value="文章ID") + public CommonResult update(@RequestParam Integer id, @RequestBody @Validated ArticleRequest articleRequest) { + if (articleService.updateArticle(id, articleRequest)) { + return CommonResult.success(); + } else { + return CommonResult.failed(); + } + } + + /** + * 查询文章管理表信息 + * @param id Integer + */ + @PreAuthorize("hasAuthority('admin:article:info')") + @ApiOperation(value = "详情") + @RequestMapping(value = "/info", method = RequestMethod.GET) + @ApiImplicitParam(name="id", value="文章ID") + public CommonResult
info(@RequestParam(value = "id") Integer id) { + return CommonResult.success(articleService.getDetail(id)); + } +} + + + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/CallbackController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/CallbackController.java new file mode 100644 index 0000000..4079e9e --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/CallbackController.java @@ -0,0 +1,61 @@ +package com.zbkj.admin.controller; + +import com.zbkj.service.service.CallbackService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + + +/** + * 支付回调 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/admin/payment/callback") +@Api(tags = "支付回调") +public class CallbackController { + + @Autowired + private CallbackService callbackService; + + /** + * 微信支付回调 + */ + @ApiOperation(value = "微信支付回调") + @RequestMapping(value = "/wechat", method = RequestMethod.POST) + public String weChat(@RequestBody String request) { + System.out.println("微信支付回调 request ===> " + request); + String response = callbackService.weChat(request); + System.out.println("微信支付回调 response ===> " + response); + return response; + } + + /** + * 微信退款回调 + */ + @ApiOperation(value = "微信退款回调") + @RequestMapping(value = "/wechat/refund", method = RequestMethod.POST) + public String weChatRefund(@RequestBody String request) { + System.out.println("微信退款回调 request ===> " + request); + String response = callbackService.weChatRefund(request); + System.out.println("微信退款回调 response ===> " + response); + return response; + } +} + + + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/CategoryController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/CategoryController.java new file mode 100644 index 0000000..3604904 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/CategoryController.java @@ -0,0 +1,189 @@ +package com.zbkj.admin.controller; + +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.model.category.Category; +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.request.CategoryRequest; +import com.zbkj.common.request.CategorySearchRequest; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.utils.CrmebUtil; +import com.zbkj.common.vo.CategoryTreeVo; +import com.zbkj.service.service.CategoryService; +import com.zbkj.service.service.SystemAttachmentService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + + +/** + * 分类表 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/admin/category") +@Api(tags = "分类服务") +public class CategoryController { + + @Autowired + private CategoryService categoryService; + + @Autowired + private SystemAttachmentService systemAttachmentService; + + /** + * 分页显示分类表 + * @param request 搜索条件 + * @param pageParamRequest 分页参数 + * @author Mr.Zhang + * @since 2020-04-16 + */ + @PreAuthorize("hasAuthority('admin:category:list')") + @ApiOperation(value = "分页分类列表") + @RequestMapping(value = "/list", method = RequestMethod.GET) + public CommonResult> getList(@ModelAttribute CategorySearchRequest request, @ModelAttribute PageParamRequest pageParamRequest) { + CommonPage categoryCommonPage = CommonPage.restPage(categoryService.getList(request, pageParamRequest)); + return CommonResult.success(categoryCommonPage); + } + + /** + * 新增分类表 + * @param categoryRequest 新增参数 + */ + @PreAuthorize("hasAuthority('admin:category:save')") + @ApiOperation(value = "新增") + @RequestMapping(value = "/save", method = RequestMethod.POST) + public CommonResult save(@Validated CategoryRequest categoryRequest) { + if (categoryService.create(categoryRequest)) { + return CommonResult.success(); + } else { + return CommonResult.failed(); + } + } + + /** + * 删除分类表 + * @param id Integer + * @author Mr.Zhang + * @since 2020-04-16 + */ + @PreAuthorize("hasAuthority('admin:category:delete')") + @ApiOperation(value = "删除") + @RequestMapping(value = "/delete", method = RequestMethod.GET) + @ApiImplicitParam(name="id", value="分类ID") + public CommonResult delete(@RequestParam(value = "id") Integer id) { + if (categoryService.delete(id) > 0) { + return CommonResult.success(); + } else { + return CommonResult.failed(); + } + } + + /** + * 修改分类表 + * @param id integer id + * @param categoryRequest 修改参数 + * @author Mr.Zhang + * @since 2020-04-16 + */ + @PreAuthorize("hasAuthority('admin:category:update')") + @ApiOperation(value = "修改") + @RequestMapping(value = "/update", method = RequestMethod.POST) + @ApiImplicitParam(name="id", value="分类ID") + public CommonResult update(@RequestParam Integer id, @ModelAttribute CategoryRequest categoryRequest) { + if (null == id || id <= 0) throw new CrmebException("id 参数不合法"); + categoryRequest.setExtra(systemAttachmentService.clearPrefix(categoryRequest.getExtra())); + if (categoryService.update(categoryRequest, id)) { + return CommonResult.success(); + } else { + return CommonResult.failed(); + } + } + + /** + * 查询分类表信息 + * @param id Integer + * @author Mr.Zhang + * @since 2020-04-16 + */ + @PreAuthorize("hasAuthority('admin:category:info')") + @ApiOperation(value = "分类详情") + @RequestMapping(value = "/info", method = RequestMethod.GET) + @ApiImplicitParam(name="id", value="分类ID") + public CommonResult info(@RequestParam(value = "id") Integer id) { + Category category = categoryService.getById(id); + return CommonResult.success(category); + } + + + /** + * 查询分类表信息 + * @author Mr.Zhang + * @since 2020-04-16 + */ + @PreAuthorize("hasAuthority('admin:category:list:tree')") + @ApiOperation(value = "获取tree结构的列表") + @RequestMapping(value = "/list/tree", method = RequestMethod.GET) + @ApiImplicitParams({ + @ApiImplicitParam(name="type", value="类型ID | 类型,1 产品分类,2 附件分类,3 文章分类, 4 设置分类, 5 菜单分类, 6 配置分类, 7 秒杀配置", example = "1"), + @ApiImplicitParam(name="status", value="-1=全部,0=未生效,1=已生效", example = "1"), + @ApiImplicitParam(name="name", value="模糊搜索", example = "电视") + }) + public CommonResult> getListTree(@RequestParam(name = "type") Integer type, + @RequestParam(name = "status") Integer status, + @RequestParam(name = "name", required = false) String name) { + List listTree = categoryService.getListTree(type,status,name); + return CommonResult.success(listTree); + } + + /** + * 根据分类id集合获取分类数据 + * @param ids String id集合字符串 + * @since 2020-04-16 + */ + @PreAuthorize("hasAuthority('admin:category:list:ids')") + @ApiOperation(value = "根据id集合获取分类列表") + @RequestMapping(value = "/list/ids", method = RequestMethod.GET) + @ApiImplicitParam(name = "ids", value="分类id集合") + public CommonResult> getByIds(@Validated @RequestParam(name = "ids") String ids) { + return CommonResult.success(categoryService.getByIds(CrmebUtil.stringToArray(ids))); + } + + /** + * 更改分类状态 + * @param id Integer 分类id + * @since 2020-04-16 + * @return + */ + @PreAuthorize("hasAuthority('admin:category:update:status')") + @ApiOperation(value = "更改分类状态") + @RequestMapping(value = "/updateStatus/{id}", method = RequestMethod.GET) + @ApiImplicitParam(name = "id", value="分类id") + public CommonResult getByIds(@Validated @PathVariable(name = "id") Integer id) { + if (categoryService.updateStatus(id)) { + return CommonResult.success("修改成功"); + } else { + return CommonResult.failed("修改失败"); + } + } +} + + + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/CodeGenerator.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/CodeGenerator.java new file mode 100644 index 0000000..d337467 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/CodeGenerator.java @@ -0,0 +1,71 @@ +package com.zbkj.admin.controller; + +import com.zbkj.common.constants.Constants; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.utils.DateUtil; +import com.zbkj.common.utils.genutils.GenCodePageListUtils; +import com.zbkj.common.utils.genutils.GenCodePageQueryUtils; +import com.zbkj.service.service.impl.CrmebGeneratorCodeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.io.IOUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.Date; +import java.util.Map; + +/** + * 前后端代码生成器 controller + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Controller +@RequestMapping("api/codegen") +@Api(tags = "代码生成") +public class CodeGenerator { + + @Autowired + private CrmebGeneratorCodeService crmebGeneratorCodeService; + + @ResponseBody + @ApiOperation(value="代码生成-新列表") + @GetMapping("/list") + public CommonResult listNew(@RequestParam Map params){ + GenCodePageListUtils pageUtil = crmebGeneratorCodeService.queryList(new GenCodePageQueryUtils(params)); + return CommonResult.success(pageUtil); + } + + /** + * 生成代码 API + */ + @GetMapping("/code") + public void code(@RequestParam String tables, HttpServletResponse response) throws IOException { + byte[] data = crmebGeneratorCodeService.generatorCode(tables.split(",")); + + String contentLength = "Content-Length"; + String contentType = "application/octet-stream; charset=UTF-8;"; + String contentDisposition = "Content-Disposition"; + String attachment = "attachment; filename=\"CRMEB-Java-Code-"+ DateUtil.dateToStr(new Date(), Constants.DATE_FORMAT_HHMM) +".zip\""; + + response.reset(); + response.addHeader(contentLength, data.length +""); + response.setContentType(contentType); + response.setHeader(contentDisposition, attachment); + + IOUtils.write(data, response.getOutputStream()); + } +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/ExcelController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/ExcelController.java new file mode 100644 index 0000000..bc0f11a --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/ExcelController.java @@ -0,0 +1,103 @@ +package com.zbkj.admin.controller; + +import cn.hutool.core.collection.CollUtil; +import com.zbkj.common.request.StoreBargainSearchRequest; +import com.zbkj.common.request.StoreCombinationSearchRequest; +import com.zbkj.common.request.StoreOrderSearchRequest; +import com.zbkj.common.request.StoreProductSearchRequest; +import com.zbkj.common.response.CommonResult; +import com.zbkj.service.service.ExcelService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +import java.util.HashMap; + + +/** + * Excel导出 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/admin/export/excel") +@Api(tags = "导出 -- Excel") +public class ExcelController { + + @Autowired + private ExcelService excelService; + + /** + * 商品导出 + * @param request 搜索条件 + */ + @PreAuthorize("hasAuthority('admin:export:excel:product')") + @ApiOperation(value = "产品") + @RequestMapping(value = "/product", method = RequestMethod.GET) + public CommonResult> export(@Validated StoreProductSearchRequest request) { + String fileName = excelService.exportProduct(request); + HashMap map = CollUtil.newHashMap(); + map.put("fileName", fileName); + return CommonResult.success(map); + } + + /** + * 砍价商品导出 + * @param request 搜索条件 + */ + @PreAuthorize("hasAuthority('admin:export:excel:bargain')") + @ApiOperation(value = "砍价商品导出") + @RequestMapping(value = "/bargain/product", method = RequestMethod.GET) + public CommonResult> exportBargainProduct(@Validated StoreBargainSearchRequest request) { + String fileName = excelService.exportBargainProduct(request); + HashMap map = CollUtil.newHashMap(); + map.put("fileName", fileName); + return CommonResult.success(map); + } + + /** + * 拼团商品导出 + * @param request 搜索条件 + */ + @PreAuthorize("hasAuthority('admin:export:excel:combiantion')") + @ApiOperation(value = "拼团商品导出") + @RequestMapping(value = "/combiantion/product", method = RequestMethod.GET) + public CommonResult> exportCombinationProduct(@Validated StoreCombinationSearchRequest request) { + String fileName = excelService.exportCombinationProduct(request); + HashMap map = CollUtil.newHashMap(); + map.put("fileName", fileName); + return CommonResult.success(map); + } + + /** + * 订单导出 + * @param request 搜索条件 + */ + @PreAuthorize("hasAuthority('admin:export:excel:order')") + @ApiOperation(value = "订单导出") + @RequestMapping(value = "/order", method = RequestMethod.GET) + public CommonResult> exportOrder(@Validated StoreOrderSearchRequest request){ + String fileName = excelService.exportOrder(request); + HashMap map = CollUtil.newHashMap(); + map.put("fileName", fileName); + return CommonResult.success(map); + } + +} + + + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/ExpressController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/ExpressController.java new file mode 100644 index 0000000..c54c577 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/ExpressController.java @@ -0,0 +1,136 @@ +package com.zbkj.admin.controller; + +import com.alibaba.fastjson.JSONObject; +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.request.ExpressUpdateRequest; +import com.zbkj.common.request.ExpressSearchRequest; +import com.zbkj.common.request.ExpressUpdateShowRequest; +import com.zbkj.service.service.ExpressService; +import io.swagger.annotations.ApiImplicitParam; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import com.zbkj.common.model.express.Express; + +import java.util.List; + + +/** + * 快递公司表 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/admin/express") +@Api(tags = "设置 -- 物流 -- 公司") +public class ExpressController { + + @Autowired + private ExpressService expressService; + + /** + * 分页显示快递公司表 + * @param request ExpressSearchRequest 搜索条件 + * @param pageParamRequest 分页参数 + */ + @PreAuthorize("hasAuthority('admin:express:list')") + @ApiOperation(value = "分页列表") + @RequestMapping(value = "/list", method = RequestMethod.GET) + @ApiImplicitParam(name="keywords", value="搜索关键字") + public CommonResult> getList(@Validated ExpressSearchRequest request, + @ModelAttribute PageParamRequest pageParamRequest) { + CommonPage expressCommonPage = CommonPage.restPage(expressService.getList(request, pageParamRequest)); + return CommonResult.success(expressCommonPage); + } + + /** + * 编辑快递公司 + */ + @PreAuthorize("hasAuthority('admin:express:update')") + @ApiOperation(value = "编辑") + @RequestMapping(value = "/update", method = RequestMethod.POST) + public CommonResult update(@RequestBody @Validated ExpressUpdateRequest expressRequest) { + if (expressService.updateExpress(expressRequest)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + *修改显示状态 + */ + @PreAuthorize("hasAuthority('admin:express:update:show')") + @ApiOperation(value = "修改显示状态") + @RequestMapping(value = "/update/show", method = RequestMethod.POST) + public CommonResult update(@RequestBody @Validated ExpressUpdateShowRequest expressRequest) { + if (expressService.updateExpressShow(expressRequest)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 同步物流公司 + */ + @PreAuthorize("hasAuthority('admin:express:sync')") + @ApiOperation(value = "同步物流公司") + @RequestMapping(value = "/sync/express", method = RequestMethod.POST) + public CommonResult syncExpress() { + if (expressService.syncExpress()) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + + /** + * 查询快递公司表信息 + * @param id Integer + */ + @PreAuthorize("hasAuthority('admin:express:info')") + @ApiOperation(value = "详情") + @RequestMapping(value = "/info", method = RequestMethod.GET) + @ApiImplicitParam(name="id", value="快递公司ID", required = true) + public CommonResult info(@RequestParam(value = "id") Integer id) { + return CommonResult.success(expressService.getInfo(id)); + } + + /** + * 查询全部物流公司 + */ + @PreAuthorize("hasAuthority('admin:express:all')") + @ApiOperation(value = "查询全部物流公司") + @RequestMapping(value = "/all", method = RequestMethod.GET) + @ApiImplicitParam(name="type", value="类型:normal-普通,elec-电子面单") + public CommonResult> all(@RequestParam(value = "type") String type) { + return CommonResult.success(expressService.findAll(type)); + } + + /** + * 查询物流公司面单模板 + */ + @PreAuthorize("hasAuthority('admin:express:template')") + @ApiOperation(value = "查询物流公司面单模板") + @RequestMapping(value = "/template", method = RequestMethod.GET) + @ApiImplicitParam(name="com", value="快递公司编号", required = true) + public CommonResult template(@RequestParam(value = "com") String com) { + return CommonResult.success(expressService.template(com)); + } +} + + + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/FundsMonitorController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/FundsMonitorController.java new file mode 100644 index 0000000..f1d2ca4 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/FundsMonitorController.java @@ -0,0 +1,74 @@ +package com.zbkj.admin.controller; + +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.request.BrokerageRecordRequest; +import com.zbkj.common.request.FundsMonitorRequest; +import com.zbkj.common.response.MonitorResponse; +import com.zbkj.common.model.user.UserBrokerageRecord; +import com.zbkj.service.service.UserBillService; +import com.zbkj.service.service.UserFundsMonitorService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + + +/** + * 用户提现表 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/admin/finance/founds/monitor") +@Api(tags = "财务 -- 资金监控") +public class FundsMonitorController { + + @Autowired + private UserBillService userBillService; + + @Autowired + private UserFundsMonitorService userFundsMonitorService; + + /** + * 分页显示资金监控 + * @param request 搜索条件 + * @param pageParamRequest 分页参数 + */ + @PreAuthorize("hasAuthority('admin:finance:monitor:list')") + @ApiOperation(value = "资金监控") + @RequestMapping(value = "/list", method = RequestMethod.GET) + public CommonResult> getList(@Validated FundsMonitorRequest request, @Validated PageParamRequest pageParamRequest){ + CommonPage userExtractCommonPage = CommonPage.restPage(userBillService.fundMonitoring(request, pageParamRequest)); + return CommonResult.success(userExtractCommonPage); + } + + /** + * 佣金记录 + * @param request 搜索条件 + * @param pageParamRequest 分页参数 + */ + @PreAuthorize("hasAuthority('admin:finance:monitor:brokerage:record')") + @ApiOperation(value = "佣金记录") + @RequestMapping(value = "/brokerage/record", method = RequestMethod.GET) + public CommonResult> brokerageRecord(@Validated BrokerageRecordRequest request, @Validated PageParamRequest pageParamRequest){ + return CommonResult.success(CommonPage.restPage(userFundsMonitorService.getBrokerageRecord(request, pageParamRequest))); + } +} + + + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/HomeController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/HomeController.java new file mode 100644 index 0000000..3dc2c0f --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/HomeController.java @@ -0,0 +1,108 @@ +package com.zbkj.admin.controller; + +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.response.HomeRateResponse; +import com.zbkj.service.service.HomeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +import java.util.Map; + + +/** + * 统计 -- 主页 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/admin/statistics/home") +@Api(tags = "统计 -- 主页") +public class HomeController { + + @Autowired + private HomeService homeService; + + @PreAuthorize("hasAuthority('admin:statistics:home:index')") + @ApiOperation(value = "首页数据") + @RequestMapping(value = "/index", method = RequestMethod.GET) + public CommonResult indexDate() { + return CommonResult.success(homeService.indexDate()); + } + + /** + * 用户曲线图 + */ + @PreAuthorize("hasAuthority('admin:statistics:home:chart:user')") + @ApiOperation(value = "用户曲线图") + @RequestMapping(value = "/chart/user", method = RequestMethod.GET) + public CommonResult> chartUser() { + return CommonResult.success(homeService.chartUser()); + } + + /** + * 用户购买统计 + */ + @PreAuthorize("hasAuthority('admin:statistics:home:chart:user:buy')") + @ApiOperation(value = "用户购买统计") + @RequestMapping(value = "/chart/user/buy", method = RequestMethod.GET) + public CommonResult> chartUserBuy() { + return CommonResult.success(homeService.chartUserBuy()); + } + + /** + * 30天订单量趋势 + */ + @PreAuthorize("hasAuthority('admin:statistics:home:chart:order')") + @ApiOperation(value = "30天订单量趋势") + @RequestMapping(value = "/chart/order", method = RequestMethod.GET) + public CommonResult> chartOrder() { + return CommonResult.success(homeService.chartOrder()); + } + + /** + * 周订单量趋势 + */ + @PreAuthorize("hasAuthority('admin:statistics:home:chart:order:week')") + @ApiOperation(value = "周订单量趋势") + @RequestMapping(value = "/chart/order/week", method = RequestMethod.GET) + public CommonResult> chartOrderInWeek() { + return CommonResult.success(homeService.chartOrderInWeek()); + } + + /** + * 月订单量趋势 + */ + @PreAuthorize("hasAuthority('admin:statistics:home:chart:order:month')") + @ApiOperation(value = "月订单量趋势") + @RequestMapping(value = "/chart/order/month", method = RequestMethod.GET) + public CommonResult> chartOrderInMonth() { + return CommonResult.success(homeService.chartOrderInMonth()); + } + + /** + * 年订单量趋势 + */ + @PreAuthorize("hasAuthority('admin:statistics:home:chart:order:year')") + @ApiOperation(value = "年订单量趋势") + @RequestMapping(value = "/chart/order/year", method = RequestMethod.GET) + public CommonResult> chartOrderInYear() { + return CommonResult.success(homeService.chartOrderInYear()); + } +} + + + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/OnePassController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/OnePassController.java new file mode 100644 index 0000000..f3acc31 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/OnePassController.java @@ -0,0 +1,196 @@ +package com.zbkj.admin.controller; + +import com.alibaba.fastjson.JSONObject; +import com.zbkj.common.request.*; +import com.zbkj.common.response.CommonResult; +import com.zbkj.service.service.OnePassService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; + +/** + * 一号通控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/admin/pass") +@Api(tags = "一号通服务") +public class OnePassController { + + @Autowired + private OnePassService onePassService; + + /** + * 获取用户验证码 + * @param phone 手机号码 + */ + @PreAuthorize("hasAuthority('admin:pass:send:code')") + @ApiOperation(value = "获取用户验证码") + @RequestMapping(value = "/sendUserCode", method = RequestMethod.GET) + @ApiImplicitParams({ + @ApiImplicitParam(name="phone", value="手机号"), + @ApiImplicitParam(name="types", value="验证码类型1:修改,0:注册") + }) + public CommonResult sendUserCode(@RequestParam(name = "phone") String phone,@RequestParam(name = "types", required = false) Integer types) { + return CommonResult.success(onePassService.sendUserCode(phone, types)); + } + + /** + * 账号注册 + * @param registerRequest 注册参数 + */ + @PreAuthorize("hasAuthority('admin:pass:register')") + @ApiOperation(value = "账号注册") + @RequestMapping(value = "/register", method = RequestMethod.POST) + public CommonResult register(@Validated @RequestBody OnePassRegisterRequest registerRequest) { + return CommonResult.success(onePassService.register(registerRequest)); + } + + /** + * 一号通用户登录 + * @return + */ + @PreAuthorize("hasAuthority('admin:pass:login')") + @ApiOperation(value = "一号通用户登录") + @RequestMapping(value = "/login", method = RequestMethod.POST) + public CommonResult> account(@Validated @RequestBody OnePassLoginRequest request) { + return CommonResult.success(onePassService.login(request)); + } + + /** + * 判断是否已经登录 + * @return + */ + @PreAuthorize("hasAuthority('admin:pass:is:login')") + @ApiOperation(value = "是否已经登录") + @RequestMapping(value = "/isLogin", method = RequestMethod.GET) + public CommonResult> isLogin() { + return CommonResult.success(onePassService.isLogin()); + } + + /** + * 一号通用户信息 + */ + @PreAuthorize("hasAuthority('admin:pass:info')") + @ApiOperation(value = "一号通用户信息") + @RequestMapping(value = "/info", method = RequestMethod.GET) + public CommonResult getInfo() { + return CommonResult.success(onePassService.info()); + } + + /** + * 注销当前登录 + * @return result + */ + @PreAuthorize("hasAuthority('admin:pass:logout')") + @ApiOperation(value = "注销") + @RequestMapping(value = "/logout", method = RequestMethod.GET) + public CommonResult logOut() { + if (onePassService.logOut()) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 修改密码 + * 手机号+验证码方式修改 + */ + @PreAuthorize("hasAuthority('admin:pass:update:password')") + @ApiOperation(value = "修改密码") + @RequestMapping(value = "/update/password", method = RequestMethod.POST) + public CommonResult updatePassword(@Validated @RequestBody OnePassUpdateRequest request) { + if (onePassService.updatePassword(request)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 修改手机号——验证账号密码 + */ + @PreAuthorize("hasAuthority('admin:pass:update:phone:validator')") + @ApiOperation(value = "修改手机号——验证账号密码") + @RequestMapping(value = "/update/phone/validator", method = RequestMethod.POST) + public CommonResult updatePhone(@Validated @RequestBody OnePassLoginRequest request) { + if (onePassService.beforeUpdatePhoneValidator(request)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 修改手机号 + */ + @PreAuthorize("hasAuthority('admin:pass:update:phone')") + @ApiOperation(value = "修改手机号") + @RequestMapping(value = "/update/phone", method = RequestMethod.POST) + public CommonResult updatePhone(@Validated @RequestBody OnePassUpdateRequest request) { + if (onePassService.updatePhone(request)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 套餐列表 + * @param type 套餐类型:sms,短信;expr_query,物流查询;expr_dump,电子面单;copy,产品复制 + */ + @PreAuthorize("hasAuthority('admin:pass:meal:list')") + @ApiOperation(value = "套餐列表") + @RequestMapping(value = "/meal/list", method = RequestMethod.GET) + @ApiImplicitParam(name="type", value="套餐类型:sms,短信;expr_query,物流查询;expr_dump,电子面单;copy,产品复制") + public CommonResult mealList(@Validated @RequestParam String type) { + return CommonResult.success(onePassService.mealList(type)); + } + + /** + * 套餐购买 + */ + @PreAuthorize("hasAuthority('admin:pass:meal:code')") + @ApiOperation(value = "套餐购买") + @RequestMapping(value = "/meal/code", method = RequestMethod.POST) + public CommonResult mealCode(@RequestBody @Validated MealCodeRequest request) { + return CommonResult.success(onePassService.mealCode(request)); + } + + /** + * 服务开通 + */ + @PreAuthorize("hasAuthority('admin:pass:service:open')") + @ApiOperation(value = "服务开通") + @RequestMapping(value = "/service/open", method = RequestMethod.POST) + public CommonResult serviceOpen(@RequestBody @Validated ServiceOpenRequest request) { + if (onePassService.serviceOpen(request)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 用量记录 + */ + @PreAuthorize("hasAuthority('admin:pass:user:record')") + @ApiOperation(value = "用量记录") + @RequestMapping(value = "/user/record", method = RequestMethod.GET) + public CommonResult record(@Validated OnePassUserRecordRequest request) { + return CommonResult.success(onePassService.userRecord(request)); + } +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/RetailShopController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/RetailShopController.java new file mode 100644 index 0000000..62f96be --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/RetailShopController.java @@ -0,0 +1,129 @@ +package com.zbkj.admin.controller; + +import com.zbkj.common.model.user.User; +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.request.RetailShopRequest; +import com.zbkj.common.request.RetailShopStairUserRequest; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.response.SpreadOrderResponse; +import com.zbkj.common.response.SpreadUserResponse; +import com.zbkj.service.service.RetailShopService; +import com.zbkj.service.service.UserService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +/** + * 分销模块 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/admin/store/retail") +@Api(tags = "分销") +public class RetailShopController { + + @Autowired + private RetailShopService retailShopService; + + @Autowired + private UserService userService; + + /** + * 分销员列表 + * @param keywords 搜索参数 + * @param dateLimit 时间参数 + * @param pageParamRequest 分页参数 + */ + @PreAuthorize("hasAuthority('admin:retail:list')") + @ApiOperation(value = "分销员列表") + @RequestMapping(value = "/list", method = RequestMethod.GET) + @ApiImplicitParams({ + @ApiImplicitParam(name = "keywords", value = "搜索关键字[姓名、电话、uid]"), + @ApiImplicitParam(name = "dateLimit", value = "today,yesterday,lately7,lately30,month,year,/yyyy-MM-dd hh:mm:ss,yyyy-MM-dd hh:mm:ss/") + }) + public CommonResult> getList(@RequestParam(required = false) String keywords, + @RequestParam(required = false) String dateLimit, + @ModelAttribute PageParamRequest pageParamRequest) { + return CommonResult.success(retailShopService.getSpreadPeopleList(keywords, dateLimit, pageParamRequest)); + } + + /** + * 根据用户参数获取推广人列表 + * @param request 查询参数 + * @param pageParamRequest 分页参数 + * @return 查询结果推广人列表 + */ + @PreAuthorize("hasAuthority('admin:retail:spread:list')") + @ApiOperation(value = "根据条件获取推广人列表") + @RequestMapping(value = "/spread/userlist", method = RequestMethod.POST) + public CommonResult> getUserListBySpreadLevel(@RequestBody @Validated RetailShopStairUserRequest request, + @ModelAttribute PageParamRequest pageParamRequest) { + return CommonResult.success(CommonPage.restPage(userService.getUserListBySpreadLevel(request, pageParamRequest))); + } + + + /** + * 根据参数获取推广订单列表 + * @param request 查询参数 + * @param pageParamRequest 分页参数 + * @return 查询结果推广人订单列表 + */ + @PreAuthorize("hasAuthority('admin:retail:spread:order:list')") + @ApiOperation(value = "根据条件获取推广人订单") + @RequestMapping(value = "/spread/orderlist", method = RequestMethod.POST) + public CommonResult> getOrdersBySpreadLevel(@RequestBody @Validated RetailShopStairUserRequest request, + @ModelAttribute PageParamRequest pageParamRequest) { + return CommonResult.success(CommonPage.restPage(userService.getOrderListBySpreadLevel(request, pageParamRequest))); + } + + /** + * 清除上级推广人 + * @param id 当前被清理的用户id + * @return 推广关系清理后的结果 + */ + @PreAuthorize("hasAuthority('admin:retail:spread:clean')") + @ApiOperation(value = "清除上级推广人") + @RequestMapping(value = "/spread/clean/{id}", method = RequestMethod.GET) + public CommonResult clearSpread(@PathVariable Integer id) { + return CommonResult.success(userService.clearSpread(id)); + } + + /** + * 分销设置获取 + * @return 保存分销设置 + */ + @PreAuthorize("hasAuthority('admin:retail:spread:manage:get')") + @ApiOperation(value = "分销配置信息获取") + @RequestMapping(value = "/spread/manage/get", method = RequestMethod.GET) + public CommonResult getSpreadInfo() { + return CommonResult.success(retailShopService.getManageInfo()); + } + + /** + * 分销管理信息保存 + * @param retailShopRequest 分销管理对象 + * @return 保存结果 + */ + @PreAuthorize("hasAuthority('admin:retail:spread:manage:set')") + @ApiOperation(value = "分销管理信息保存") + @RequestMapping(value = "/spread/manage/set", method = RequestMethod.POST) + public CommonResult setSpreadInfo(@RequestBody @Validated RetailShopRequest retailShopRequest) { + return CommonResult.success(retailShopService.setManageInfo(retailShopRequest)); + } +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/ShippingTemplatesController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/ShippingTemplatesController.java new file mode 100644 index 0000000..fe2160f --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/ShippingTemplatesController.java @@ -0,0 +1,112 @@ +package com.zbkj.admin.controller; + +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.request.ShippingTemplatesRequest; +import com.zbkj.common.request.ShippingTemplatesSearchRequest; +import com.zbkj.service.service.ShippingTemplatesService; +import io.swagger.annotations.ApiImplicitParam; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; +import com.zbkj.common.model.express.ShippingTemplates; + +/** + * 物流-模板控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/admin/express/shipping/templates") +@Api(tags = "设置 -- 物流 -- 模板") +public class ShippingTemplatesController { + + @Autowired + private ShippingTemplatesService shippingTemplatesService; + + /** + * 分页显示 + * @param request 搜索条件 + * @param pageParamRequest 分页参数 + */ + @PreAuthorize("hasAuthority('admin:shipping:templates:list')") + @ApiOperation(value = "分页列表") + @RequestMapping(value = "/list", method = RequestMethod.GET) + public CommonResult> getList(@Validated ShippingTemplatesSearchRequest request, @Validated PageParamRequest pageParamRequest){ + CommonPage shippingTemplatesCommonPage = CommonPage.restPage(shippingTemplatesService.getList(request, pageParamRequest)); + return CommonResult.success(shippingTemplatesCommonPage); + } + + /** + * 新增 + * @param request 新增参数 + */ + @PreAuthorize("hasAuthority('admin:shipping:templates:save')") + @ApiOperation(value = "新增") + @RequestMapping(value = "/save", method = RequestMethod.POST) + public CommonResult save(@RequestBody @Validated ShippingTemplatesRequest request){ + if (shippingTemplatesService.create(request)) { + return CommonResult.success(); + } + return CommonResult.failed("新增运费模板失败"); + } + + /** + * 删除 + * @param id Integer + */ + @PreAuthorize("hasAuthority('admin:shipping:templates:delete')") + @ApiOperation(value = "删除") + @RequestMapping(value = "/delete", method = RequestMethod.GET) + @ApiImplicitParam(name="id", value="模板ID", required = true) + public CommonResult delete(@RequestParam(value = "id") Integer id){ + if(shippingTemplatesService.remove(id)){ + return CommonResult.success(); + }else{ + return CommonResult.failed(); + } + } + + /** + * 修改 + * @param id integer id + * @param request ShippingTemplatesRequest 修改参数 + */ + @PreAuthorize("hasAuthority('admin:shipping:templates:update')") + @ApiOperation(value = "修改") + @RequestMapping(value = "/update", method = RequestMethod.POST) + public CommonResult update(@RequestParam Integer id, @RequestBody @Validated ShippingTemplatesRequest request){ + if (shippingTemplatesService.update(id, request)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 查询信息 + * @param id Integer + */ + @PreAuthorize("hasAuthority('admin:shipping:templates:info')") + @ApiOperation(value = "详情") + @RequestMapping(value = "/info", method = RequestMethod.GET) + @ApiImplicitParam(name="id", value="模板ID", required = true) + public CommonResult info(@RequestParam(value = "id") Integer id){ + return CommonResult.success(shippingTemplatesService.getInfo(id)); + } +} + + + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/ShippingTemplatesFreeController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/ShippingTemplatesFreeController.java new file mode 100644 index 0000000..1640987 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/ShippingTemplatesFreeController.java @@ -0,0 +1,50 @@ +package com.zbkj.admin.controller; + +import com.zbkj.common.request.ShippingTemplatesFreeRequest; +import com.zbkj.common.response.CommonResult; +import com.zbkj.service.service.ShippingTemplatesFreeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * 物流控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/admin/express/shipping/free") +@Api(tags = "设置 -- 物流 -- 免费") +public class ShippingTemplatesFreeController { + + @Autowired + private ShippingTemplatesFreeService shippingTemplatesFreeService; + + /** + * 根据模板id查询数据 + * @param tempId Integer 模板id + */ + @PreAuthorize("hasAuthority('admin:shipping:templates:free:list')") + @ApiOperation(value = "根据模板id查询数据") + @RequestMapping(value = "/list", method = RequestMethod.GET) + public CommonResult> getList(@RequestParam Integer tempId){ + return CommonResult.success(shippingTemplatesFreeService.getListGroup(tempId)); + } + +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/ShippingTemplatesRegionController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/ShippingTemplatesRegionController.java new file mode 100644 index 0000000..46a1dc7 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/ShippingTemplatesRegionController.java @@ -0,0 +1,49 @@ +package com.zbkj.admin.controller; + +import com.zbkj.common.request.ShippingTemplatesRegionRequest; +import com.zbkj.common.response.CommonResult; +import com.zbkj.service.service.ShippingTemplatesRegionService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * 物流付费前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/admin/express/shipping/region") +@Api(tags = "设置 -- 物流 -- 付费") +public class ShippingTemplatesRegionController { + + @Autowired + private ShippingTemplatesRegionService shippingTemplatesRegionService; + + /** + * 根据模板id查询数据 + * @param tempId Integer 模板id + */ + @PreAuthorize("hasAuthority('admin:shipping:templates:region:list')") + @ApiOperation(value = "根据模板id查询数据") + @RequestMapping(value = "/list", method = RequestMethod.GET) + public CommonResult> getList(@RequestParam Integer tempId){ + return CommonResult.success(shippingTemplatesRegionService.getListGroup(tempId)); + } +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SmsRecordController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SmsRecordController.java new file mode 100644 index 0000000..dcecdc8 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SmsRecordController.java @@ -0,0 +1,93 @@ +package com.zbkj.admin.controller; + +import com.alibaba.fastjson.JSONObject; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.vo.MyRecord; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.request.SmsApplyTempRequest; +import com.zbkj.common.request.SmsModifySignRequest; +import com.zbkj.service.service.SmsService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; + + +/** + * 短信发送记录表 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/admin/sms") +@Api(tags = "短信服务") +public class SmsRecordController { + + @Autowired + private SmsService smsService; + + /** + * 修改签名 + */ + @PreAuthorize("hasAuthority('admin:sms:modify:sign')") + @ApiOperation(value = "修改签名") + @RequestMapping(value = "/modify/sign", method = RequestMethod.POST) + public CommonResult modifySign(@RequestBody @Validated SmsModifySignRequest request) { + if (smsService.modifySign(request)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 短信模板 + */ + @PreAuthorize("hasAuthority('admin:sms:temps')") + @ApiOperation(value = "短信模板") + @RequestMapping(value = "/temps", method = RequestMethod.GET) + public CommonResult> temps(@ModelAttribute PageParamRequest pageParamRequest) { + MyRecord myRecord = smsService.temps(pageParamRequest); + return CommonResult.success(myRecord); + } + + /** + * 申请短信模板 + */ + @PreAuthorize("hasAuthority('admin:sms:temp:apply')") + @ApiOperation(value = "申请短信模板") + @RequestMapping(value = "/temp/apply", method = RequestMethod.POST) + public CommonResult applyTempMessage(@RequestBody @Validated SmsApplyTempRequest request) { + if (smsService.applyTempMessage(request)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 模板申请记录 + */ + @PreAuthorize("hasAuthority('admin:sms:applys')") + @ApiOperation(value = "模板申请记录") + @RequestMapping(value = "/applys", method = RequestMethod.POST) + @ApiImplicitParam(name="type", value="type (1=验证码 2=通知 3=推广)") + public CommonResult> applys(@RequestParam(name = "type", required = false) Integer type, @ModelAttribute PageParamRequest pageParamRequest) { + return CommonResult.success(smsService.applys(type, pageParamRequest)); + } + +} + + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreBargainController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreBargainController.java new file mode 100644 index 0000000..6e2f471 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreBargainController.java @@ -0,0 +1,169 @@ +package com.zbkj.admin.controller; + +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.request.StoreBargainRequest; +import com.zbkj.common.request.StoreBargainSearchRequest; +import com.zbkj.common.request.StoreBargainUserSearchRequest; +import com.zbkj.common.response.StoreBargainResponse; +import com.zbkj.common.response.StoreBargainUserHelpResponse; +import com.zbkj.common.response.StoreBargainUserResponse; +import com.zbkj.common.response.StoreProductInfoResponse; +import com.zbkj.service.service.StoreBargainService; +import com.zbkj.service.service.StoreBargainUserHelpService; +import com.zbkj.service.service.StoreBargainUserService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + + +/** + * 砍价表 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/admin/store/bargain") +@Api(tags = "商品 -- 砍价 -- 商品") //配合swagger使用 +public class StoreBargainController { + + @Autowired + private StoreBargainService storeBargainService; + + @Autowired + private StoreBargainUserService storeBargainUserService; + + @Autowired + private StoreBargainUserHelpService storeBargainUserHelpService; + + /** + * 分页显示砍价商品列表 + * @param request 搜索条件 + * @param pageParamRequest 分页参数 + */ + @PreAuthorize("hasAuthority('admin:bargain:list')") + @ApiOperation(value = "分页显示砍价商品列表") //配合swagger使用 + @RequestMapping(value = "/list", method = RequestMethod.GET) + public CommonResult> getList(@Validated StoreBargainSearchRequest request, @Validated PageParamRequest pageParamRequest){ + CommonPage storeBargainCommonPage = CommonPage.restPage(storeBargainService.getList(request, pageParamRequest)); + return CommonResult.success(storeBargainCommonPage); + } + + /** + * 新增砍价商品 + * @param storeBargainRequest 新增参数 + */ + @PreAuthorize("hasAuthority('admin:bargain:save')") + @ApiOperation(value = "新增砍价商品") + @RequestMapping(value = "/save", method = RequestMethod.POST) + public CommonResult save(@RequestBody @Validated StoreBargainRequest storeBargainRequest){ + if(storeBargainService.saveBargain(storeBargainRequest)){ + return CommonResult.success("添加砍价商品成功"); + }else{ + return CommonResult.failed("添加砍价商品失败"); + } + } + + /** + * 删除砍价商品 + * @param id Integer + */ + @PreAuthorize("hasAuthority('admin:bargain:delete')") + @ApiOperation(value = "删除砍价商品") + @RequestMapping(value = "/delete", method = RequestMethod.GET) + public CommonResult delete(@RequestParam(value = "id") Integer id){ + if(storeBargainService.deleteById(id)){ + return CommonResult.success(); + }else{ + return CommonResult.failed(); + } + } + + /** + * 修改砍价商品 + * @param storeBargainRequest 修改参数 + */ + @PreAuthorize("hasAuthority('admin:bargain:update')") + @ApiOperation(value = "修改砍价商品") + @RequestMapping(value = "/update", method = RequestMethod.POST) + public CommonResult update(@RequestBody @Validated StoreBargainRequest storeBargainRequest){ + if (storeBargainService.updateBargain(storeBargainRequest)) { + return CommonResult.success(); + } else { + return CommonResult.failed(); + } + } + + /** + * 查询砍价商品详情 + * @param id Integer + */ + @PreAuthorize("hasAuthority('admin:bargain:info')") + @ApiOperation(value = "查询砍价商品详情") + @RequestMapping(value = "/info", method = RequestMethod.GET) + public CommonResult info(@RequestParam(value = "id") Integer id){ + StoreProductInfoResponse storeBargainResponse = storeBargainService.getAdminDetail(id); + return CommonResult.success(storeBargainResponse); + } + + /** + * + * 修改砍价商品状态 + * @param id 商品id + * @param status 商品状态 + * @return {@link CommonResult} + */ + @PreAuthorize("hasAuthority('admin:bargain:update:status')") + @ApiOperation(value = "修改砍价商品状态") + @RequestMapping(value = "/update/status", method = RequestMethod.POST) + public CommonResult updateStatus(@RequestParam @Validated Integer id, @RequestParam @Validated boolean status){ + if(storeBargainService.updateBargainStatus(id,status)){ + return CommonResult.success(); + }else{ + return CommonResult.failed(); + } + } + + /** + * 分页显示砍价列表 + * @param request 搜索条件 + * @param pageParamRequest 分页参数 + */ + @PreAuthorize("hasAuthority('admin:bargain:user:list')") + @ApiOperation(value = "分页显示砍价列表") //配合swagger使用 + @RequestMapping(value = "/bargain_list", method = RequestMethod.GET) + public CommonResult> getBargainUserList(@Validated StoreBargainUserSearchRequest request, @Validated PageParamRequest pageParamRequest){ + CommonPage bargainUserCommonPage = CommonPage.restPage(storeBargainUserService.getList(request, pageParamRequest)); + return CommonResult.success(bargainUserCommonPage); + } + + /** + * 获取砍价参与详情列表 + * @param id StoreBargainUser 砍价参与用户编号 + */ + @PreAuthorize("hasAuthority('admin:bargain:user:help:list')") + @ApiOperation(value = "获取砍价参与详情列表") //配合swagger使用 + @RequestMapping(value = "/bargain_list/{id}", method = RequestMethod.GET) + public CommonResult> getBargainUserHelpDetail(@PathVariable(value = "id") Integer id){ + List list = storeBargainUserHelpService.getList(id); + return CommonResult.success(list); + } +} + + + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreCombinationController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreCombinationController.java new file mode 100644 index 0000000..0df3a4e --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreCombinationController.java @@ -0,0 +1,169 @@ +package com.zbkj.admin.controller; + +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.request.StoreCombinationRequest; +import com.zbkj.common.request.StoreCombinationSearchRequest; +import com.zbkj.common.request.StorePinkSearchRequest; +import com.zbkj.common.response.StoreCombinationResponse; +import com.zbkj.common.response.StorePinkAdminListResponse; +import com.zbkj.common.response.StorePinkDetailResponse; +import com.zbkj.common.response.StoreProductInfoResponse; +import com.zbkj.service.service.StoreCombinationService; +import com.zbkj.service.service.StorePinkService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Map; + +/** + * 拼团商品表 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/admin/store/combination") +@Api(tags = "商品——拼团——商品") //配合swagger使用 +public class StoreCombinationController { + + @Autowired + private StoreCombinationService storeCombinationService; + + @Autowired + private StorePinkService storePinkService; + + /** + * 分页显示拼团商品表 + * @param request 搜索条件 + * @param pageParamRequest 分页参数 + * @return + */ + @PreAuthorize("hasAuthority('admin:combination:list')") + @ApiOperation(value = "分页显示拼团商品表") //配合swagger使用 + @RequestMapping(value = "/list", method = RequestMethod.GET) + public CommonResult> getList(@Validated StoreCombinationSearchRequest request, @Validated PageParamRequest pageParamRequest){ + CommonPage commonPage = CommonPage.restPage(storeCombinationService.getList(request, pageParamRequest)); + return CommonResult.success(commonPage); + } + + /** + * 新增拼团商品表 + * @param request 新增参数 + */ + @PreAuthorize("hasAuthority('admin:combination:save')") + @ApiOperation(value = "新增拼团商品") + @RequestMapping(value = "/save", method = RequestMethod.POST) + public CommonResult save(@RequestBody @Validated StoreCombinationRequest request){ + if(storeCombinationService.saveCombination(request)){ + return CommonResult.success("新增拼团商品成功"); + }else{ + return CommonResult.failed("新增拼团商品失败"); + } + } + + /** + * 删除拼团商品表 + * @param id Integer + */ + @PreAuthorize("hasAuthority('admin:combination:delete')") + @ApiOperation(value = "删除拼团商品") + @RequestMapping(value = "/delete", method = RequestMethod.GET) + public CommonResult delete(@RequestParam(value = "id") Integer id){ + if(storeCombinationService.deleteById(id)){ + return CommonResult.success(); + }else{ + return CommonResult.failed(); + } + } + + /** + * 修改拼团商品表 + * @param storeCombinationRequest 修改参数 + */ + @PreAuthorize("hasAuthority('admin:combination:update')") + @ApiOperation(value = "修改拼团商品") + @RequestMapping(value = "/update", method = RequestMethod.POST) + public CommonResult update(@RequestBody @Validated StoreCombinationRequest storeCombinationRequest){ + if(storeCombinationService.updateCombination(storeCombinationRequest)){ + return CommonResult.success(); + }else{ + return CommonResult.failed(); + } + } + + /** + * 查询拼团商品信息 + * @param id Integer + */ + @PreAuthorize("hasAuthority('admin:combination:info')") + @ApiOperation(value = "拼团商品详情") + @RequestMapping(value = "/info", method = RequestMethod.GET) + public CommonResult info(@RequestParam(value = "id") Integer id){ + StoreProductInfoResponse detail = storeCombinationService.getAdminDetail(id); + return CommonResult.success(detail); + } + + /** + * 修改拼团商品状态 + */ + @PreAuthorize("hasAuthority('admin:combination:update:status')") + @ApiOperation(value = "修改拼团商品状态") + @RequestMapping(value = "/update/status", method = RequestMethod.POST) + public CommonResult updateStatus(@RequestParam(value = "id") Integer id, @RequestParam @Validated boolean isShow){ + if(storeCombinationService.updateCombinationShow(id, isShow)){ + return CommonResult.success(); + }else{ + return CommonResult.failed(); + } + } + + /** + * 拼团统计 + */ + @PreAuthorize("hasAuthority('admin:combination:statistics')") + @ApiOperation(value = "拼团统计") + @RequestMapping(value = "/statistics", method = RequestMethod.GET) + public CommonResult> statistics() { + Map map = storeCombinationService.getAdminStatistics(); + return CommonResult.success(map); + } + + /** + * 拼团列表 + */ + @PreAuthorize("hasAuthority('admin:combination:combine:list')") + @ApiOperation(value = "拼团列表") + @RequestMapping(value = "/combine/list", method = RequestMethod.GET) + public CommonResult> getCombineList(@Validated StorePinkSearchRequest request, @Validated PageParamRequest pageParamRequest){ + CommonPage responseCommonPage = CommonPage.restPage(storePinkService.getList(request, pageParamRequest)); + return CommonResult.success(responseCommonPage); + } + + /** + * 拼团订单列表 + */ + @PreAuthorize("hasAuthority('admin:combination:order:pink')") + @ApiOperation(value = "拼团订单列表") + @RequestMapping(value = "/order_pink/{id}", method = RequestMethod.GET) + public CommonResult> getPinkList(@PathVariable(value = "id") Integer id) { + return CommonResult.success(storePinkService.getAdminList(id)); + } +} + + + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreCouponController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreCouponController.java new file mode 100644 index 0000000..a115f32 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreCouponController.java @@ -0,0 +1,127 @@ +package com.zbkj.admin.controller; + +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.request.SearchAndPageRequest; +import com.zbkj.common.model.coupon.StoreCoupon; +import com.zbkj.common.request.StoreCouponRequest; +import com.zbkj.common.request.StoreCouponSearchRequest; +import com.zbkj.common.response.StoreCouponInfoResponse; +import com.zbkj.service.service.StoreCouponService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + + +/** + * 优惠券表 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/admin/marketing/coupon") +@Api(tags = "营销 -- 优惠券") +public class StoreCouponController { + + @Autowired + private StoreCouponService storeCouponService; + + /** + * 分页显示优惠券表 + * @param request 搜索条件 + * @param pageParamRequest 分页参数 + */ + @PreAuthorize("hasAuthority('admin:coupon:list')") + @ApiOperation(value = "分页列表") + @RequestMapping(value = "/list", method = RequestMethod.GET) + public CommonResult> getList(@Validated StoreCouponSearchRequest request, @Validated PageParamRequest pageParamRequest) { + CommonPage storeCouponCommonPage = CommonPage.restPage(storeCouponService.getList(request, pageParamRequest)); + return CommonResult.success(storeCouponCommonPage); + } + + /** + * 保存优惠券表 + * @param request StoreCouponRequest 新增参数 + */ + @PreAuthorize("hasAuthority('admin:coupon:save')") + @ApiOperation(value = "新增") + @RequestMapping(value = "/save", method = RequestMethod.POST) + public CommonResult save(@RequestBody @Validated StoreCouponRequest request) { + if (storeCouponService.create(request)) { + return CommonResult.success(); + } else { + return CommonResult.failed(); + } + } + + /** + * 是否有效 + * @param id integer id + */ + @PreAuthorize("hasAuthority('admin:coupon:update:status')") + @ApiOperation(value = "修改") + @RequestMapping(value = "/update/status", method = RequestMethod.POST) + public CommonResult updateStatus(@RequestParam Integer id, @RequestParam Boolean status) { + if (storeCouponService.updateStatus(id, status)) { + return CommonResult.success(); + } else { + return CommonResult.failed(); + } + } + + /** + * 详情 + * @param id integer id + */ + @PreAuthorize("hasAuthority('admin:coupon:info')") + @ApiOperation(value = "详情") + @RequestMapping(value = "/info", method = RequestMethod.POST) + @ApiImplicitParam(name="id", value="优惠券ID", required = true) + public CommonResult info(@RequestParam Integer id) { + return CommonResult.success(storeCouponService.info(id)); + } + + /** + * 发送优惠券列表 + * @param searchAndPageRequest 搜索分页参数 + */ + @PreAuthorize("hasAuthority('admin:coupon:send:list')") + @ApiOperation(value = "发送优惠券列表") + @RequestMapping(value = "/send/list", method = RequestMethod.GET) + public CommonResult> getSendList(@Validated SearchAndPageRequest searchAndPageRequest) { + CommonPage storeCouponCommonPage = CommonPage.restPage(storeCouponService.getSendList(searchAndPageRequest)); + return CommonResult.success(storeCouponCommonPage); + } + + /** + * 删除优惠券 + * @param id 优惠券id + */ + @PreAuthorize("hasAuthority('admin:coupon:delete')") + @ApiOperation(value = "删除优惠券") + @RequestMapping(value = "/delete", method = RequestMethod.POST) + public CommonResult delete(@RequestParam Integer id) { + if (storeCouponService.delete(id)) { + return CommonResult.success("删除成功"); + } else { + return CommonResult.failed("删除失败"); + } + } +} + + + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreCouponUserController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreCouponUserController.java new file mode 100644 index 0000000..90430f2 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreCouponUserController.java @@ -0,0 +1,70 @@ +package com.zbkj.admin.controller; + +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.request.StoreCouponUserRequest; +import com.zbkj.common.request.StoreCouponUserSearchRequest; +import com.zbkj.common.response.StoreCouponUserResponse; +import com.zbkj.service.service.StoreCouponUserService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + + +/** + * 优惠券发放记录表 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/admin/marketing/coupon/user") +@Api(tags = "营销 -- 优惠券 -- 领取记录") +public class StoreCouponUserController { + + @Autowired + private StoreCouponUserService storeCouponUserService; + + /** + * 分页显示优惠券发放记录表 + * @param request 搜索条件 + * @param pageParamRequest 分页参数 + */ + @PreAuthorize("hasAuthority('admin:coupon:user:list')") + @ApiOperation(value = "分页列表") + @RequestMapping(value = "/list", method = RequestMethod.GET) + public CommonResult> getList(@Validated StoreCouponUserSearchRequest request, @Validated PageParamRequest pageParamRequest) { + CommonPage storeCouponUserCommonPage = CommonPage.restPage(storeCouponUserService.getList(request, pageParamRequest)); + return CommonResult.success(storeCouponUserCommonPage); + } + + /** + * 领券 + * @param storeCouponUserRequest 新增参数 + */ + @PreAuthorize("hasAuthority('admin:coupon:user:receive')") + @ApiOperation(value = "领券") + @RequestMapping(value = "/receive", method = RequestMethod.POST) + public CommonResult receive(@Validated StoreCouponUserRequest storeCouponUserRequest) { + if(storeCouponUserService.receive(storeCouponUserRequest)) { + return CommonResult.success(); + } else { + return CommonResult.failed(); + } + } +} + + + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreOrderController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreOrderController.java new file mode 100644 index 0000000..f9094d5 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreOrderController.java @@ -0,0 +1,266 @@ +package com.zbkj.admin.controller; + +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.request.*; +import com.zbkj.common.response.*; +import com.zbkj.common.vo.ExpressSheetVo; +import com.zbkj.common.vo.LogisticsResultVo; +import com.zbkj.service.service.StoreOrderService; +import com.zbkj.service.service.StoreOrderVerification; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.hibernate.validator.constraints.Range; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 订单表 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/admin/store/order") +@Api(tags = "订单") //配合swagger使用 +public class StoreOrderController { + + @Autowired + private StoreOrderService storeOrderService; + + @Autowired + private StoreOrderVerification storeOrderVerification; + + /** + * 分页显示订单表 + * @param request 搜索条件 + * @param pageParamRequest 分页参数 + */ + @PreAuthorize("hasAuthority('admin:order:list')") + @ApiOperation(value = "分页列表") //配合swagger使用 + @RequestMapping(value = "/list", method = RequestMethod.GET) + public CommonResult> getList(@Validated StoreOrderSearchRequest request, @Validated PageParamRequest pageParamRequest) { + return CommonResult.success(storeOrderService.getAdminList(request, pageParamRequest)); + } + + /** + * 获取订单各状态数量 + */ + @PreAuthorize("hasAuthority('admin:order:status:num')") + @ApiOperation(value = "获取订单各状态数量") + @RequestMapping(value = "/status/num", method = RequestMethod.GET) + public CommonResult getOrderStatusNum( + @RequestParam(value = "dateLimit", defaultValue = "") String dateLimit, + @RequestParam(value = "type", defaultValue = "2") @Range(min = 0, max = 2, message = "未知的订单类型") Integer type) { + return CommonResult.success(storeOrderService.getOrderStatusNum(dateLimit, type)); + } + + /** + * 获取订单统计数据 + */ + @PreAuthorize("hasAuthority('admin:order:list:data')") + @ApiOperation(value = "获取订单统计数据") + @RequestMapping(value = "/list/data", method = RequestMethod.GET) + public CommonResult getOrderData(@RequestParam(value = "dateLimit", defaultValue = "")String dateLimit) { + return CommonResult.success(storeOrderService.getOrderData(dateLimit)); + } + + + /** + * 订单删除 + */ + @PreAuthorize("hasAuthority('admin:order:delete')") + @ApiOperation(value = "订单删除") + @RequestMapping(value = "/delete", method = RequestMethod.GET) + public CommonResult delete(@RequestParam(value = "orderNo") String orderNo) { + if (storeOrderService.delete(orderNo)) { + return CommonResult.success(); + } else { + return CommonResult.failed(); + } + } + + /** + * 备注订单 + */ + @PreAuthorize("hasAuthority('admin:order:mark')") + @ApiOperation(value = "备注") + @RequestMapping(value = "/mark", method = RequestMethod.POST) + public CommonResult mark(@RequestParam String orderNo, @RequestParam String mark) { + if (storeOrderService.mark(orderNo, mark)) { + return CommonResult.success(); + } else { + return CommonResult.failed(); + } + } + + /** + * 修改订单(改价) + */ + @PreAuthorize("hasAuthority('admin:order:update:price')") + @ApiOperation(value = "修改订单(改价)") + @RequestMapping(value = "/update/price", method = RequestMethod.POST) + public CommonResult updatePrice(@RequestBody @Validated StoreOrderUpdatePriceRequest request) { + if (storeOrderService.updatePrice(request)) { + return CommonResult.success(); + } else { + return CommonResult.failed(); + } + } + + /** + * 订单详情 + */ + @PreAuthorize("hasAuthority('admin:order:info')") + @ApiOperation(value = "详情") + @RequestMapping(value = "/info", method = RequestMethod.GET) + public CommonResult info(@RequestParam(value = "orderNo") String orderNo) { + return CommonResult.success(storeOrderService.info(orderNo)); + } + + /** + * 发送货 + */ + @PreAuthorize("hasAuthority('admin:order:send')") + @ApiOperation(value = "发送货") + @RequestMapping(value = "/send", method = RequestMethod.POST) + public CommonResult send(@RequestBody @Validated StoreOrderSendRequest request) { + if (storeOrderService.send(request)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 退款 + */ + @PreAuthorize("hasAuthority('admin:order:refund')") + @ApiOperation(value = "退款") + @RequestMapping(value = "/refund", method = RequestMethod.GET) + public CommonResult send(@Validated StoreOrderRefundRequest request) { + return CommonResult.success(storeOrderService.refund(request)); + } + + /** + * 拒绝退款 + */ + @PreAuthorize("hasAuthority('admin:order:refund:refuse')") + @ApiOperation(value = "拒绝退款") + @RequestMapping(value = "/refund/refuse", method = RequestMethod.GET) + public CommonResult refundRefuse(@RequestParam String orderNo, @RequestParam String reason) { + if (storeOrderService.refundRefuse(orderNo, reason)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 快递查询 + */ + @PreAuthorize("hasAuthority('admin:order:logistics:info')") + @ApiOperation(value = "快递查询") + @RequestMapping(value = "/getLogisticsInfo", method = RequestMethod.GET) + public CommonResult getLogisticsInfo(@RequestParam(value = "orderNo") String orderNo) { + return CommonResult.success(storeOrderService.getLogisticsInfo(orderNo)); + } + + /** + * 核销订单头部数据 + * + * @author stivepeim + * @since 2020-08-29 + */ + @PreAuthorize("hasAuthority('admin:order:statistics')") + @ApiOperation(value = "核销订单头部数据") + @RequestMapping(value = "/statistics", method = RequestMethod.GET) + public CommonResult getStatistics() { + return CommonResult.success(storeOrderVerification.getOrderVerificationData()); + } + + /** + * 核销订单 月列表数据 + * + * @author stivepeim + * @since 2020-08-29 + */ + @PreAuthorize("hasAuthority('admin:order:statistics:data')") + @ApiOperation(value = "核销订单 月列表数据") + @RequestMapping(value = "/statisticsData", method = RequestMethod.GET) + public CommonResult> getStaffDetail(StoreOrderStaticsticsRequest request) { + return CommonResult.success(storeOrderVerification.getOrderVerificationDetail(request)); + } + + + /** + * 核销码核销订单 + * + * @author stivepeim + * @since 2020-09-01 + */ + @PreAuthorize("hasAuthority('admin:order:write:update')") + @ApiOperation(value = "核销码核销订单") + @RequestMapping(value = "/writeUpdate/{vCode}", method = RequestMethod.GET) + public CommonResult verificationOrder(@PathVariable String vCode) { + return CommonResult.success(storeOrderVerification.verificationOrderByCode(vCode)); + } + + /** + * 核销码查询待核销订单 + * + * @author stivepeim + * @since 2020-09-01 + */ + @PreAuthorize("hasAuthority('admin:order:write:confirm')") + @ApiOperation(value = "核销码查询待核销订单") + @RequestMapping(value = "/writeConfirm/{vCode}", method = RequestMethod.GET) + public CommonResult verificationConfirmOrder( + @PathVariable String vCode) { + return CommonResult.success(storeOrderVerification.getVerificationOrderByCode(vCode)); + } + + /** + * 订单统计详情 + * + * @author stivepeim + * @since 2020-09-01 + */ + @PreAuthorize("hasAuthority('admin:order:time')") + @ApiOperation(value = "订单统计详情") + @RequestMapping(value = "/time", method = RequestMethod.GET) + @ApiImplicitParams({ + @ApiImplicitParam(name = "dateLimit", value = "today,yesterday,lately7,lately30,month,year,/yyyy-MM-dd hh:mm:ss,yyyy-MM-dd hh:mm:ss/", + dataType = "String", required = true), + @ApiImplicitParam(name = "type", value = "1=price 2=order", required = true) + }) + public CommonResult statisticsOrderTime(@RequestParam String dateLimit, + @RequestParam Integer type) { + return CommonResult.success(storeOrderService.orderStatisticsByTime(dateLimit, type)); + } + + /** + * 获取面单默认配置信息 + */ + @PreAuthorize("hasAuthority('admin:order:sheet:info')") + @ApiOperation(value = "获取面单默认配置信息") + @RequestMapping(value = "/sheet/info", method = RequestMethod.GET) + public CommonResult getDeliveryInfo() { + return CommonResult.success(storeOrderService.getDeliveryInfo()); + } + +} + + + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreOrderStatusController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreOrderStatusController.java new file mode 100644 index 0000000..d0b3b1e --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreOrderStatusController.java @@ -0,0 +1,58 @@ +package com.zbkj.admin.controller; + +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.model.order.StoreOrderStatus; +import com.zbkj.common.request.StoreOrderStatusSearchRequest; +import com.zbkj.service.service.StoreOrderStatusService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + + +/** + * 订单操作记录表 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/admin/store/order/status") +@Api(tags = "订单 -- 操作记录") //配合swagger使用 + +public class StoreOrderStatusController { + + @Autowired + private StoreOrderStatusService storeOrderStatusService; + + /** + * 分页显示订单操作记录表 + * @param request 搜索条件 + * @param pageParamRequest 分页参数 + */ + @PreAuthorize("hasAuthority('admin:order:status:list')") + @ApiOperation(value = "分页列表") //配合swagger使用 + @RequestMapping(value = "/list", method = RequestMethod.GET) + public CommonResult> getList(@Validated StoreOrderStatusSearchRequest request, + @Validated PageParamRequest pageParamRequest){ + CommonPage storeOrderStatusCommonPage = CommonPage.restPage(storeOrderStatusService.getList(request, pageParamRequest)); + return CommonResult.success(storeOrderStatusCommonPage); + } +} + + + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreProductController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreProductController.java new file mode 100644 index 0000000..80e43fc --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreProductController.java @@ -0,0 +1,217 @@ +package com.zbkj.admin.controller; + +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.request.StoreCopyProductRequest; +import com.zbkj.common.request.StoreProductAddRequest; +import com.zbkj.common.request.StoreProductRequest; +import com.zbkj.common.request.StoreProductSearchRequest; +import com.zbkj.common.response.StoreProductInfoResponse; +import com.zbkj.common.response.StoreProductResponse; +import com.zbkj.common.response.StoreProductTabsHeader; +import com.zbkj.service.service.StoreCartService; +import com.zbkj.service.service.StoreProductService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.json.JSONException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.io.IOException; +import java.util.List; +import java.util.Map; + + +/** + * 商品表 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/admin/store/product") +@Api(tags = "商品") //配合swagger使用 +public class StoreProductController { + + @Autowired + private StoreProductService storeProductService; + + @Autowired + private StoreCartService storeCartService; + + /** + * 分页显示商品表 + * @param request 搜索条件 + * @param pageParamRequest 分页参数 + */ + @PreAuthorize("hasAuthority('admin:product:list')") + @ApiOperation(value = "分页列表") //配合swagger使用 + @RequestMapping(value = "/list", method = RequestMethod.GET) + public CommonResult> getList(@Validated StoreProductSearchRequest request, + @Validated PageParamRequest pageParamRequest) { + return CommonResult.success(CommonPage.restPage(storeProductService.getAdminList(request, pageParamRequest))); + } + + /** + * 新增商品 + * @param request 新增参数 + */ + @PreAuthorize("hasAuthority('admin:product:save')") + @ApiOperation(value = "新增商品") + @RequestMapping(value = "/save", method = RequestMethod.POST) + public CommonResult save(@RequestBody @Validated StoreProductAddRequest request) { + if (storeProductService.save(request)) { + return CommonResult.success(); + } else { + return CommonResult.failed(); + } + } + + /** + * 删除商品表 + * @param id Integer + */ + @PreAuthorize("hasAuthority('admin:product:delete')") + @ApiOperation(value = "删除") + @RequestMapping(value = "/delete/{id}", method = RequestMethod.GET) + public CommonResult delete(@RequestBody @PathVariable Integer id, @RequestParam(value = "type", required = false, defaultValue = "recycle")String type) { + if (storeProductService.deleteProduct(id, type)) { + if ("recycle".equals(type)) { + storeCartService.productStatusNotEnable(id); + } else { + storeCartService.productDelete(id); + } + return CommonResult.success(); + } else { + return CommonResult.failed(); + } + } + + /** + * 恢复已删除商品表 + * @param id Integer + */ + @PreAuthorize("hasAuthority('admin:product:restore')") + @ApiOperation(value = "恢复商品") + @RequestMapping(value = "/restore/{id}", method = RequestMethod.GET) + public CommonResult restore(@RequestBody @PathVariable Integer id) { + if (storeProductService.reStoreProduct(id)) { + return CommonResult.success(); + } else { + return CommonResult.failed(); + } + } + + /** + * 商品修改 + * @param storeProductRequest 商品参数 + */ + @PreAuthorize("hasAuthority('admin:product:update')") + @ApiOperation(value = "商品修改") + @RequestMapping(value = "/update", method = RequestMethod.POST) + public CommonResult update(@RequestBody @Validated StoreProductAddRequest storeProductRequest) { + if (storeProductService.update(storeProductRequest)) { + return CommonResult.success(); + } else { + return CommonResult.failed(); + } + } + + /** + * 商品详情 + * @param id 商品id + */ + @PreAuthorize("hasAuthority('admin:product:info')") + @ApiOperation(value = "商品详情") + @RequestMapping(value = "/info/{id}", method = RequestMethod.GET) + public CommonResult info(@PathVariable Integer id) { + return CommonResult.success(storeProductService.getInfo(id)); + } + + /** + * 商品tabs表头数据 + */ + @PreAuthorize("hasAuthority('admin:product:tabs:headers')") + @ApiOperation(value = "商品表头数量") + @RequestMapping(value = "/tabs/headers", method = RequestMethod.GET) + public CommonResult> getTabsHeader() { + return CommonResult.success(storeProductService.getTabsHeader()); + } + + + /** + * 上架 + */ + @PreAuthorize("hasAuthority('admin:product:up')") + @ApiOperation(value = "上架") + @RequestMapping(value = "/putOnShell/{id}", method = RequestMethod.GET) + public CommonResult putOn(@PathVariable Integer id) { + if (storeProductService.putOnShelf(id)) { + return CommonResult.success(); + } else { + return CommonResult.failed(); + } + } + + /** + * 下架 + */ + @PreAuthorize("hasAuthority('admin:product:down')") + @ApiOperation(value = "下架") + @RequestMapping(value = "/offShell/{id}", method = RequestMethod.GET) + public CommonResult offShell(@PathVariable Integer id) { + if (storeProductService.offShelf(id)) { + return CommonResult.success(); + } else { + return CommonResult.failed(); + } + } + + @PreAuthorize("hasAuthority('admin:product:import:product')") + @ApiOperation(value = "导入99Api商品") + @RequestMapping(value = "/importProduct", method = RequestMethod.POST) + @ApiImplicitParams({ + @ApiImplicitParam(name = "form", value = "导入平台1=淘宝,2=京东,3=苏宁,4=拼多多, 5=天猫", dataType = "int", required = true), + @ApiImplicitParam(name = "url", value = "URL", dataType = "String", required = true), + }) + public CommonResult importProduct( + @RequestParam @Valid int form, + @RequestParam @Valid String url) throws IOException, JSONException { + StoreProductRequest productRequest = storeProductService.importProductFromUrl(url, form); + return CommonResult.success(productRequest); + } + + /** + * 获取复制商品配置 + */ + @PreAuthorize("hasAuthority('admin:product:copy:config')") + @ApiOperation(value = "获取复制商品配置") + @RequestMapping(value = "/copy/config", method = RequestMethod.POST) + public CommonResult> copyConfig() { + return CommonResult.success(storeProductService.copyConfig()); + } + + @PreAuthorize("hasAuthority('admin:product:copy:product')") + @ApiOperation(value = "复制平台商品") + @RequestMapping(value = "/copy/product", method = RequestMethod.POST) + public CommonResult> copyProduct(@RequestBody @Valid StoreCopyProductRequest request) { + return CommonResult.success(storeProductService.copyProduct(request.getUrl())); + } +} + + + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreProductReplyController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreProductReplyController.java new file mode 100644 index 0000000..6f83495 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreProductReplyController.java @@ -0,0 +1,115 @@ +package com.zbkj.admin.controller; + +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.model.product.StoreProductReply; +import com.zbkj.common.request.StoreProductReplyAddRequest; +import com.zbkj.common.request.StoreProductReplyCommentRequest; +import com.zbkj.common.request.StoreProductReplySearchRequest; +import com.zbkj.common.response.StoreProductReplyResponse; +import com.zbkj.service.service.StoreProductReplyService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + + +/** + * 评论表 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/admin/store/product/reply") +@Api(tags = "商品 -- 评论") //配合swagger使用 +public class StoreProductReplyController { + + @Autowired + private StoreProductReplyService storeProductReplyService; + + /** + * 分页显示评论表 + * @param request 搜索条件 + * @param pageParamRequest 分页参数 + */ + @PreAuthorize("hasAuthority('admin:product:reply:list')") + @ApiOperation(value = "分页列表") //配合swagger使用 + @RequestMapping(value = "/list", method = RequestMethod.GET) + public CommonResult> getList(@Validated StoreProductReplySearchRequest request, + @Validated PageParamRequest pageParamRequest) { + CommonPage storeProductReplyCommonPage = + CommonPage.restPage(storeProductReplyService.getList(request, pageParamRequest)); + return CommonResult.success(storeProductReplyCommonPage); + } + + /** + * 新增评论表 + * @param request 新增参数 + */ + @PreAuthorize("hasAuthority('admin:product:reply:save')") + @ApiOperation(value = "新增") + @RequestMapping(value = "/save", method = RequestMethod.POST) + public CommonResult save(@RequestBody @Validated StoreProductReplyAddRequest request) { + if (storeProductReplyService.virtualCreate(request)) { + return CommonResult.success(); + } else { + return CommonResult.failed(); + } + } + + /** + * 删除评论表 + * @param id Integer + */ + @PreAuthorize("hasAuthority('admin:product:reply:delete')") + @ApiOperation(value = "删除") + @RequestMapping(value = "/delete/{id}", method = RequestMethod.GET) + public CommonResult delete(@PathVariable Integer id) { + if (storeProductReplyService.delete(id)) { + return CommonResult.success(); + } else { + return CommonResult.failed(); + } + } + + /** + * 查询评论表信息 + * @param id Integer + */ + @PreAuthorize("hasAuthority('admin:product:reply:info')") + @ApiOperation(value = "详情") + @RequestMapping(value = "/info/{id}", method = RequestMethod.GET) + public CommonResult info(@PathVariable Integer id) { + StoreProductReply storeProductReply = storeProductReplyService.getById(id); + return CommonResult.success(storeProductReply); + } + + /** + * 回复商品评论 + * @param request StoreProductReplyCommentRequest 回复参数 + */ + @PreAuthorize("hasAuthority('admin:product:reply:comment')") + @ApiOperation(value = "回复") + @RequestMapping(value = "/comment", method = RequestMethod.POST) + public CommonResult comment(@RequestBody StoreProductReplyCommentRequest request) { + if (storeProductReplyService.comment(request)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } +} + + + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreProductRuleController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreProductRuleController.java new file mode 100644 index 0000000..64ed6fa --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreProductRuleController.java @@ -0,0 +1,115 @@ +package com.zbkj.admin.controller; + +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.utils.CrmebUtil; +import com.zbkj.common.model.product.StoreProductRule; +import com.zbkj.common.request.StoreProductRuleRequest; +import com.zbkj.common.request.StoreProductRuleSearchRequest; +import com.zbkj.service.service.StoreProductRuleService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + + +/** + * 商品规则值(规格)表 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/admin/store/product/rule") +@Api(tags = "商品 -- 规则值(规格)") //配合swagger使用 +public class StoreProductRuleController { + + @Autowired + private StoreProductRuleService storeProductRuleService; + + /** + * 分页显示商品规则值(规格)表 + * @param request 搜索条件 + * @param pageParamRequest 分页参数 + */ + @PreAuthorize("hasAuthority('admin:product:rule:list')") + @ApiOperation(value = "分页列表") //配合swagger使用 + @RequestMapping(value = "/list", method = RequestMethod.GET) + public CommonResult> getList( + @Validated StoreProductRuleSearchRequest request, @Validated PageParamRequest pageParamRequest) { + CommonPage storeProductRuleCommonPage = + CommonPage.restPage(storeProductRuleService.getList(request, pageParamRequest)); + return CommonResult.success(storeProductRuleCommonPage); + } + + /** + * 新增商品规则值(规格)表 + * @param storeProductRuleRequest 新增参数 + */ + @PreAuthorize("hasAuthority('admin:product:rule:save')") + @ApiOperation(value = "新增") + @RequestMapping(value = "/save", method = RequestMethod.POST) + public CommonResult save(@RequestBody @Validated StoreProductRuleRequest storeProductRuleRequest) { + if (storeProductRuleService.save(storeProductRuleRequest)) { + return CommonResult.success(); + } else { + return CommonResult.failed(); + } + } + + /** + * 删除商品规则值(规格)表 + * @param ids Integer + */ + @PreAuthorize("hasAuthority('admin:product:rule:delete')") + @ApiOperation(value = "删除") + @RequestMapping(value = "/delete/{ids}", method = RequestMethod.GET) + public CommonResult delete(@PathVariable String ids) { + if (storeProductRuleService.removeByIds(CrmebUtil.stringToArray(ids))) { + return CommonResult.success(); + } else { + return CommonResult.failed(); + } + } + + /** + * 修改商品规则值(规格)表 + * @param storeProductRuleRequest 修改参数 + */ + @PreAuthorize("hasAuthority('admin:product:rule:update')") + @ApiOperation(value = "修改") + @RequestMapping(value = "/update", method = RequestMethod.POST) + public CommonResult update(@RequestBody @Validated StoreProductRuleRequest storeProductRuleRequest) { + if (storeProductRuleService.updateRule(storeProductRuleRequest)) { + return CommonResult.success(); + } else { + return CommonResult.failed(); + } + } + + /** + * 查询商品规则值(规格)表信息 + * @param id Integer + */ + @PreAuthorize("hasAuthority('admin:product:rule:info')") + @ApiOperation(value = "详情") + @RequestMapping(value = "/info/{id}", method = RequestMethod.GET) + public CommonResult info(@PathVariable Integer id) { + StoreProductRule storeProductRule = storeProductRuleService.getById(id); + return CommonResult.success(storeProductRule); + } +} + + + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreSeckillController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreSeckillController.java new file mode 100644 index 0000000..a76572d --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreSeckillController.java @@ -0,0 +1,125 @@ +package com.zbkj.admin.controller; + +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.request.StoreSeckillAddRequest; +import com.zbkj.common.request.StoreSeckillSearchRequest; +import com.zbkj.common.response.StoreSeckillResponse; +import com.zbkj.common.response.StoreProductInfoResponse; +import com.zbkj.service.service.StoreSeckillService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + + +/** + * 商品秒杀产品表 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/admin/store/seckill") +@Api(tags = "商品 -- 秒杀 -- 商品") //配合swagger使用 +public class StoreSeckillController { + + @Autowired + private StoreSeckillService storeSeckillService; + + /** + * 分页显示商品秒杀产品表 + * @param request 搜索条件 + * @param pageParamRequest 分页参数 + */ + @PreAuthorize("hasAuthority('admin:seckill:list')") + @ApiOperation(value = "分页列表") //配合swagger使用 + @RequestMapping(value = "/list", method = RequestMethod.GET) + public CommonResult> getList(@Validated StoreSeckillSearchRequest request, @Validated PageParamRequest pageParamRequest) { + CommonPage storeSeckillCommonPage = + CommonPage.restPage(storeSeckillService.getList(request, pageParamRequest)); + return CommonResult.success(storeSeckillCommonPage); + } + + /** + * 新增商品秒杀产品表 + * @param storeSeckillRequest 新增参数 + */ + @PreAuthorize("hasAuthority('admin:seckill:save')") + @ApiOperation(value = "新增") + @RequestMapping(value = "/save", method = RequestMethod.POST) + public CommonResult save(@RequestBody @Validated StoreSeckillAddRequest storeSeckillRequest) { + if (storeSeckillService.saveSeckill(storeSeckillRequest)) { + return CommonResult.success(); + } else { + return CommonResult.failed(); + } + } + + /** + * 删除商品秒杀产品表 + * @param id Integer + */ + @PreAuthorize("hasAuthority('admin:seckill:delete')") + @ApiOperation(value = "删除") + @RequestMapping(value = "/delete", method = RequestMethod.GET) + public CommonResult delete(@RequestParam(value = "id") Integer id) { + if (storeSeckillService.deleteById(id)) { + return CommonResult.success(); + } else { + return CommonResult.failed(); + } + } + + /** + * 修改商品秒杀产品表 + * @param storeSeckillRequest 修改参数 + */ + @PreAuthorize("hasAuthority('admin:seckill:update')") + @ApiOperation(value = "修改") + @RequestMapping(value = "/update", method = RequestMethod.POST) + public CommonResult update(@RequestBody @Validated StoreSeckillAddRequest storeSeckillRequest) { + if (storeSeckillService.updateSeckill(storeSeckillRequest)) { + return CommonResult.success(); + } else { + return CommonResult.failed(); + } + } + + @PreAuthorize("hasAuthority('admin:seckill:update:status')") + @ApiOperation(value = "修改秒杀商品状态") + @RequestMapping(value = "/update/status", method = RequestMethod.POST) + public CommonResult updateStatus(@RequestParam @Validated Integer id, @RequestParam @Validated boolean status) { + if (storeSeckillService.updateSecKillStatus(id,status)) { + return CommonResult.success(); + } else { + return CommonResult.failed(); + } + } + + /** + * 查询商品秒杀产品表信息 + * @param id Integer + */ + @PreAuthorize("hasAuthority('admin:seckill:info')") + @ApiOperation(value = "详情") + @RequestMapping(value = "/info", method = RequestMethod.GET) + public CommonResult info(@RequestParam(value = "id") Integer id) { + StoreProductInfoResponse storeSeckill = storeSeckillService.getDetailAdmin(id); + return CommonResult.success(storeSeckill); + } +} + + + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreSeckillMangerController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreSeckillMangerController.java new file mode 100644 index 0000000..c6c82a7 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreSeckillMangerController.java @@ -0,0 +1,130 @@ +package com.zbkj.admin.controller; + +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.request.StoreSeckillMangerRequest; +import com.zbkj.common.request.StoreSeckillMangerSearchRequest; +import com.zbkj.common.response.StoreSeckillManagerResponse; +import com.zbkj.service.service.StoreSeckillMangerService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + + +/** + * 秒杀配置 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/admin/store/seckill/manger") +@Api(tags = "商品 -- 秒杀 -- 配置") //配合swagger使用 +public class StoreSeckillMangerController { + + @Autowired + private StoreSeckillMangerService storeSeckillMangerService; + + /** + * 分页显示 + * @param request 搜索条件 + * @param pageParamRequest 分页参数 + */ + @PreAuthorize("hasAuthority('admin:seckill:manger:list')") + @ApiOperation(value = "分页列表") //配合swagger使用 + @RequestMapping(value = "/list", method = RequestMethod.GET) + public CommonResult> getList( + @Validated StoreSeckillMangerSearchRequest request, @Validated PageParamRequest pageParamRequest) { + return CommonResult.success(CommonPage.restPage(storeSeckillMangerService.getList(request, pageParamRequest))); + } + + /** + * 新增 + * @param storeSeckillMangerRequest 新增参数 + */ + @PreAuthorize("hasAuthority('admin:seckill:manger:save')") + @ApiOperation(value = "新增") + @RequestMapping(value = "/save", method = RequestMethod.POST) + public CommonResult save(@RequestBody @Validated StoreSeckillMangerRequest storeSeckillMangerRequest) { + if (storeSeckillMangerService.saveManger(storeSeckillMangerRequest)) { + return CommonResult.success(); + } else { + return CommonResult.failed(); + } + } + + + /** + * 删除 + * @param id Integer + */ + @PreAuthorize("hasAuthority('admin:seckill:manger:delete')") + @ApiOperation(value = "删除") + @RequestMapping(value = "/delete", method = RequestMethod.GET) + public CommonResult delete(@RequestParam(value = "id") Integer id) { + if (storeSeckillMangerService.deleteLogicById(id)) { + return CommonResult.success(); + } else { + return CommonResult.failed(); + } + } + + /** + * 修改 + * @param id integer id + * @param storeSeckillMangerRequest 修改参数 + */ + @PreAuthorize("hasAuthority('admin:seckill:manger:update')") + @ApiOperation(value = "修改") + @RequestMapping(value = "/update", method = RequestMethod.POST) + public CommonResult update(@RequestParam Integer id, @RequestBody @Validated StoreSeckillMangerRequest storeSeckillMangerRequest) { + return storeSeckillMangerService.update(id, storeSeckillMangerRequest) ? CommonResult.success() : CommonResult.failed(); + } + + /** + * 查询信息 + * @param id Integer + */ + @PreAuthorize("hasAuthority('admin:seckill:manger:info')") + @ApiOperation(value = "详情") + @RequestMapping(value = "/info", method = RequestMethod.GET) + public CommonResult info(@RequestParam(value = "id") Integer id) { + return CommonResult.success(storeSeckillMangerService.detail(id)); + } + + /** + * 更新秒杀配置状态 + * @param id 配置id + * @param status 待更新配置状态 + * @return 更新结果 + */ + @PreAuthorize("hasAuthority('admin:seckill:manger:update:status')") + @ApiOperation(value = "秒杀配置状态更新") + @RequestMapping(value = "/update/status/{id}", method = RequestMethod.POST) + @ApiImplicitParams({ + @ApiImplicitParam(name = "id", value = "商品id", dataType = "int", required = true), + @ApiImplicitParam(name = "status", value = "状态", dataType = "boolean", required = true) + }) + public CommonResult updateStatus(@PathVariable(value = "id") Integer id, Boolean status) { + return CommonResult.success(storeSeckillMangerService.updateStatus(id,status)); + } + + +} + + + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemAdminController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemAdminController.java new file mode 100644 index 0000000..3d64714 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemAdminController.java @@ -0,0 +1,142 @@ +package com.zbkj.admin.controller; + +import com.zbkj.common.model.system.SystemAdmin; +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.request.SystemAdminAddRequest; +import com.zbkj.common.request.SystemAdminRequest; +import com.zbkj.common.request.SystemAdminUpdateRequest; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.response.SystemAdminResponse; +import com.zbkj.service.service.SystemAdminService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; + + +/** + * 后台管理员表 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/admin/system/admin") +@Api(tags = "后台用户服务") +public class SystemAdminController { + + @Autowired + private SystemAdminService systemAdminService; + + /** + * 分页显示后台管理员表 + * @param systemAdminRequest 搜索条件 + * @param pageParamRequest 分页参数 + */ + @PreAuthorize("hasAuthority('admin:system:admin:list')") + @ApiOperation(value = "分页列表") + @RequestMapping(value = "/list", method = RequestMethod.GET) + @ResponseBody + public CommonResult> getList(@Validated SystemAdminRequest systemAdminRequest, PageParamRequest pageParamRequest) { + CommonPage systemAdminCommonPage = CommonPage.restPage(systemAdminService.getList(systemAdminRequest, pageParamRequest)); + return CommonResult.success(systemAdminCommonPage); + } + + /** + * 新增后台管理员 + * @param systemAdminAddRequest 新增参数 + */ + @PreAuthorize("hasAuthority('admin:system:admin:save')") + @ApiOperation(value = "新增后台管理员") + @RequestMapping(value = "/save", method = RequestMethod.POST) + public CommonResult save(@RequestBody SystemAdminAddRequest systemAdminAddRequest) { + if (systemAdminService.saveAdmin(systemAdminAddRequest)) { + return CommonResult.success("添加管理员成功"); + } + return CommonResult.failed("添加管理员失败"); + } + + /** + * 删除后台管理员表 + * @param id Integer + */ + @PreAuthorize("hasAuthority('admin:system:admin:delete')") + @ApiOperation(value = "删除") + @RequestMapping(value = "/delete", method = RequestMethod.GET) + public CommonResult delete(@RequestParam(value = "id") Integer id) { + if (systemAdminService.removeById(id)) { + return CommonResult.success(); + } else { + return CommonResult.failed(); + } + } + + /** + * 修改后台管理员表 + * @param systemAdminRequest 修改参数 + */ + @PreAuthorize("hasAuthority('admin:system:admin:update')") + @ApiOperation(value = "修改") + @RequestMapping(value = "/update", method = RequestMethod.POST) + public CommonResult update(@RequestBody SystemAdminUpdateRequest systemAdminRequest) { + if (systemAdminService.updateAdmin(systemAdminRequest)) { + return CommonResult.success(); + } else { + return CommonResult.failed(); + } + } + + /** + * 后台管理员详情 + * @param id Integer + */ + @PreAuthorize("hasAuthority('admin:system:admin:info')") + @ApiOperation(value = "后台管理员详情") + @RequestMapping(value = "/info", method = RequestMethod.GET) + public CommonResult info(@RequestParam(value = "id") @Valid Integer id) { + return CommonResult.success(systemAdminService.getDetail(id)); + } + + /** + * 修改后台管理员状态 + * @param id Integer + */ + @PreAuthorize("hasAuthority('admin:system:admin:update:status')") + @ApiOperation(value = "修改后台管理员状态") + @RequestMapping(value = "/updateStatus", method = RequestMethod.GET) + public CommonResult updateStatus(@RequestParam(value = "id") @Valid Integer id, @RequestParam(value = "status") @Valid Boolean status) { + if (systemAdminService.updateStatus(id, status)) { + return CommonResult.success("修改成功"); + } + return CommonResult.failed("修改失败"); + } + + /** + * 修改后台管理员是否接收状态 + */ + @PreAuthorize("hasAuthority('admin:system:admin:update:sms')") + @ApiOperation(value = "修改后台管理员是否接收状态") + @RequestMapping(value = "/update/isSms", method = RequestMethod.GET) + public CommonResult updateIsSms(@RequestParam(value = "id") @Valid Integer id) { + if (systemAdminService.updateIsSms(id)) { + return CommonResult.success("修改成功"); + } + return CommonResult.failed("修改失败"); + } +} + + + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemAttachmentController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemAttachmentController.java new file mode 100644 index 0000000..5560634 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemAttachmentController.java @@ -0,0 +1,131 @@ +package com.zbkj.admin.controller; + +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.utils.CrmebUtil; +import com.zbkj.common.model.system.SystemAttachment; +import com.zbkj.common.request.SystemAttachmentMoveRequest; +import com.zbkj.common.request.SystemAttachmentRequest; +import com.zbkj.service.service.SystemAttachmentService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +/** + * 附件管理表 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/admin/system/attachment") +@Api(tags = "附件管理") //配合swagger使用 +public class SystemAttachmentController { + + @Autowired + private SystemAttachmentService systemAttachmentService; + + /** + * 分页显示附件管理表 + * @param pageParamRequest 分页参数 + */ + @PreAuthorize("hasAuthority('admin:system:attachment:list')") + @ApiOperation(value = "分页列表") //配合swagger使用 + @RequestMapping(value = "/list", method = RequestMethod.GET) + public CommonResult> getList( + @RequestParam @Validated Integer pid, + @RequestParam( + value = "attType", + defaultValue = "png,jpeg,jpg,audio/mpeg,text/plain,video/mp4,gif", + required = false) String attType, + @Validated PageParamRequest pageParamRequest) { + CommonPage systemAttachmentCommonPage = + CommonPage.restPage(systemAttachmentService.getList(pid, attType, pageParamRequest)); + return CommonResult.success(systemAttachmentCommonPage); + } + + /** + * 新增附件管理表 TODO:未使用的话删除此接口 + * @param systemAttachmentRequest 新增参数 + */ + @PreAuthorize("hasAuthority('admin:system:attachment:save')") + @ApiOperation(value = "新增") + @RequestMapping(value = "/save", method = RequestMethod.POST) + public CommonResult save(@RequestBody @Validated SystemAttachmentRequest systemAttachmentRequest) { + if (systemAttachmentService.add(systemAttachmentRequest)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 删除附件管理表 + * @param ids String + */ + @PreAuthorize("hasAuthority('admin:system:attachment:delete')") + @ApiOperation(value = "删除") + @RequestMapping(value = "/delete/{ids}", method = RequestMethod.GET) + public CommonResult delete(@PathVariable String ids) { + if (systemAttachmentService.removeByIds(CrmebUtil.stringToArray(ids))) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 修改附件管理表 + * @param id integer id + * @param systemAttachmentRequest 修改参数 + */ + @PreAuthorize("hasAuthority('admin:system:attachment:update')") + @ApiOperation(value = "修改") + @RequestMapping(value = "/update", method = RequestMethod.POST) + public CommonResult update(@RequestParam Integer id, + @RequestBody @Validated SystemAttachmentRequest systemAttachmentRequest) { + systemAttachmentRequest.setAttId(id); + if (systemAttachmentService.edit(systemAttachmentRequest)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 查询附件管理表信息 + * @param move SystemAttachmentMoveRequest + */ + @PreAuthorize("hasAuthority('admin:system:attachment:move')") + @ApiOperation(value = "更改图片目录") + @RequestMapping(value = "/move", method = RequestMethod.POST) + public CommonResult updateAttrId(@RequestBody @Validated SystemAttachmentMoveRequest move) { + if (systemAttachmentService.updateAttrId(move)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 附件详情 + * @param id Integer + */ + @PreAuthorize("hasAuthority('admin:system:attachment:info')") + @ApiOperation(value = "附件详情") + @RequestMapping(value = "/info/{id}", method = RequestMethod.GET) + public CommonResult info(@PathVariable Integer id) { + return CommonResult.success(systemAttachmentService.getById(id)); + } +} + + + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemCityController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemCityController.java new file mode 100644 index 0000000..eceee39 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemCityController.java @@ -0,0 +1,108 @@ +package com.zbkj.admin.controller; + +import com.zbkj.common.model.system.SystemCity; +import com.zbkj.common.request.SystemCityRequest; +import com.zbkj.common.request.SystemCitySearchRequest; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.vo.SystemCityTreeVo; +import com.zbkj.service.service.SystemCityService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + + +/** + * 城市表 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/admin/system/city") +@Api(tags = "城市管理") +public class SystemCityController { + + @Autowired + private SystemCityService systemCityService; + + /** + * 分页城市列表 + * @param request 搜索条件 + */ + @PreAuthorize("hasAuthority('admin:system:city:list')") + @ApiOperation(value = "分页城市列表") + @RequestMapping(value = "/list", method = RequestMethod.GET) + public CommonResult getList(@Validated SystemCitySearchRequest request) { + return CommonResult.success(systemCityService.getList(request)); + } + + /** + * 修改城市 + * @param id 城市id + * @param request 修改参数 + */ + @PreAuthorize("hasAuthority('admin:system:city:update')") + @ApiOperation(value = "修改") + @RequestMapping(value = "/update", method = RequestMethod.POST) + public CommonResult update(@RequestParam Integer id, @Validated SystemCityRequest request) { + if (systemCityService.update(id, request)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 修改状态 + * @param id 城市id + * @param status 状态 + */ + @PreAuthorize("hasAuthority('admin:system:city:update:status')") + @ApiOperation(value = "修改状态") + @RequestMapping(value = "/update/status", method = RequestMethod.POST) + public CommonResult updateStatus(@RequestParam Integer id, @RequestParam Boolean status) { + if (systemCityService.updateStatus(id, status)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 城市详情 + * @param id 城市id + */ + @PreAuthorize("hasAuthority('admin:system:city:info')") + @ApiOperation(value = "城市详情") + @RequestMapping(value = "/info", method = RequestMethod.GET) + public CommonResult info(@RequestParam(value = "id") Integer id) { + return CommonResult.success(systemCityService.getById(id)); + } + + /** + * 获取tree结构的列表 + */ + @PreAuthorize("hasAuthority('admin:system:city:list:tree')") + @ApiOperation(value = "获取tree结构的列表") + @RequestMapping(value = "/list/tree", method = RequestMethod.GET) + public CommonResult> getListTree() { + return CommonResult.success(systemCityService.getListTree()); + } +} + + + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemConfigController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemConfigController.java new file mode 100644 index 0000000..c4403c0 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemConfigController.java @@ -0,0 +1,126 @@ +package com.zbkj.admin.controller; + +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.model.system.SystemConfig; +import com.zbkj.common.request.SystemConfigAdminRequest; +import com.zbkj.common.request.SystemFormCheckRequest; +import com.zbkj.service.service.SystemConfigService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.HashMap; +import java.util.List; + + +/** + * 配置表 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/admin/system/config") +@Api(tags = "设置 -- Config") +public class SystemConfigController { + + @Autowired + private SystemConfigService systemConfigService; + + /** + * 查询配置表信息 + * @param formId Integer + */ + @PreAuthorize("hasAuthority('admin:system:config:info')") + @ApiOperation(value = "详情") + @RequestMapping(value = "/info", method = RequestMethod.GET) + public CommonResult> info(@RequestParam(value = "formId") Integer formId) { + return CommonResult.success(systemConfigService.info(formId)); + } + + + /** + * 整体保存表单数据 + * @param systemFormCheckRequest SystemFormCheckRequest 新增参数 + */ + @PreAuthorize("hasAuthority('admin:system:config:save:form')") + @ApiOperation(value = "整体保存表单数据") + @RequestMapping(value = "/save/form", method = RequestMethod.POST) + public CommonResult saveFrom(@RequestBody @Validated SystemFormCheckRequest systemFormCheckRequest) { + if (systemConfigService.saveForm(systemFormCheckRequest)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 检测表单name是否存在 + * @param name name + */ + @PreAuthorize("hasAuthority('admin:system:config:check')") + @ApiOperation(value = "检测表单name是否存在") + @RequestMapping(value = "/check", method = RequestMethod.GET) + public CommonResult check(@RequestParam String name) { + return CommonResult.success(systemConfigService.checkName(name)); + } + + /** + * 配置表中仅仅存储对应的配置 + * @param key 配置表中的配置字段 + * @param value 对应的值 + */ + @PreAuthorize("hasAuthority('admin:system:config:saveuniq')") + @ApiOperation(value = "表单配置中仅仅存储") + @RequestMapping(value = "/saveuniq", method = RequestMethod.POST) + public CommonResult justSaveUniq(@RequestParam String key, @RequestParam String value) { + return CommonResult.success(systemConfigService.updateOrSaveValueByName(key, value)); + } + + /** + * 根据key获取表单配置数据 + * @param key 配置表的的字段 + */ + @PreAuthorize("hasAuthority('admin:system:config:getuniq')") + @ApiOperation(value = "表单配置根据key获取") + @RequestMapping(value = "/getuniq", method = RequestMethod.GET) + public CommonResult justGetUniq(@RequestParam String key) { + return CommonResult.success(systemConfigService.getValueByKey(key),"success"); + } + + /** + * 根据key获取配置 + */ + @PreAuthorize("hasAuthority('admin:system:config:get')") + @ApiOperation(value = "根据key获取配置") + @RequestMapping(value = "/get", method = RequestMethod.GET) + public CommonResult> getByKey(@RequestParam String key) { + return CommonResult.success(systemConfigService.getListByKey(key)); + } + + /** + * 更新配置信息 + */ + @PreAuthorize("hasAuthority('admin:system:config:update')") + @ApiOperation(value = "更新配置信息") + @RequestMapping(value = "/update", method = RequestMethod.POST) + public CommonResult> getByKey(@RequestBody @Validated List requestList) { + if (systemConfigService.updateByList(requestList)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } +} + + + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemFormTempController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemFormTempController.java new file mode 100644 index 0000000..e39d205 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemFormTempController.java @@ -0,0 +1,96 @@ +package com.zbkj.admin.controller; + +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.model.system.SystemFormTemp; +import com.zbkj.common.request.SystemFormTempRequest; +import com.zbkj.common.request.SystemFormTempSearchRequest; +import com.zbkj.service.service.SystemFormTempService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + + +/** + * 表单模板 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/admin/system/form/temp") +@Api(tags = "设置 -- 表单模板") +public class SystemFormTempController { + + @Autowired + private SystemFormTempService systemFormTempService; + + /** + * 分页显示表单模板 + * @param request 搜索条件 + * @param pageParamRequest 分页参数 + */ + @PreAuthorize("hasAuthority('admin:system:form:list')") + @ApiOperation(value = "分页列表") + @RequestMapping(value = "/list", method = RequestMethod.GET) + public CommonResult> getList(@Validated SystemFormTempSearchRequest request, @Validated PageParamRequest pageParamRequest) { + CommonPage systemFormTempCommonPage = CommonPage.restPage(systemFormTempService.getList(request, pageParamRequest)); + return CommonResult.success(systemFormTempCommonPage); + } + + /** + * 新增表单模板 + * @param systemFormTempRequest 新增参数 + */ + @PreAuthorize("hasAuthority('admin:system:form:save')") + @ApiOperation(value = "新增") + @RequestMapping(value = "/save", method = RequestMethod.POST) + public CommonResult save(@RequestBody @Validated SystemFormTempRequest systemFormTempRequest) { + if (systemFormTempService.add(systemFormTempRequest)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 修改表单模板 + * @param id integer id + * @param systemFormTempRequest 修改参数 + */ + @PreAuthorize("hasAuthority('admin:system:form:update')") + @ApiOperation(value = "修改") + @RequestMapping(value = "/update", method = RequestMethod.POST) + public CommonResult update(@RequestParam Integer id, @RequestBody @Validated SystemFormTempRequest systemFormTempRequest) { + if (systemFormTempService.edit(id, systemFormTempRequest)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 查询表单模板信息 + * @param id Integer + */ + @PreAuthorize("hasAuthority('admin:system:form:info')") + @ApiOperation(value = "详情") + @RequestMapping(value = "/info", method = RequestMethod.GET) + public CommonResult info(@RequestParam(value = "id") Integer id) { + SystemFormTemp systemFormTemp = systemFormTempService.getById(id); + return CommonResult.success(systemFormTemp); + } +} + + + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemGroupController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemGroupController.java new file mode 100644 index 0000000..b1ac313 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemGroupController.java @@ -0,0 +1,109 @@ +package com.zbkj.admin.controller; + +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.request.SystemGroupRequest; +import com.zbkj.common.request.SystemGroupSearchRequest; +import com.zbkj.service.service.SystemGroupService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; +import com.zbkj.common.model.system.SystemGroup; + + +/** + * 组合数据表 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/admin/system/group") +@Api(tags = "设置 -- 组合数据") +public class SystemGroupController { + + @Autowired + private SystemGroupService systemGroupService; + + /** + * 分页显示组合数据表 + * @param request 搜索条件 + * @param pageParamRequest 分页参数 + */ + @PreAuthorize("hasAuthority('admin:system:group:list')") + @ApiOperation(value = "分页列表") + @RequestMapping(value = "/list", method = RequestMethod.GET) + public CommonResult> getList(@Validated SystemGroupSearchRequest request, @Validated PageParamRequest pageParamRequest) { + CommonPage systemGroupCommonPage = CommonPage.restPage(systemGroupService.getList(request, pageParamRequest)); + return CommonResult.success(systemGroupCommonPage); + } + + /** + * 新增组合数据 + * @param systemGroupRequest 新增参数 + */ + @PreAuthorize("hasAuthority('admin:system:group:save')") + @ApiOperation(value = "新增") + @RequestMapping(value = "/save", method = RequestMethod.POST) + public CommonResult save(@Validated SystemGroupRequest systemGroupRequest) { + if (systemGroupService.add(systemGroupRequest)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 删除组合数据表 + * @param id Integer + */ + @PreAuthorize("hasAuthority('admin:system:group:delete')") + @ApiOperation(value = "删除") + @RequestMapping(value = "/delete", method = RequestMethod.GET) + public CommonResult delete(@RequestParam(value = "id") Integer id) { + if (systemGroupService.delete(id)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 修改组合数据表 + * @param id integer id + * @param systemGroupRequest 修改参数 + */ + @PreAuthorize("hasAuthority('admin:system:group:update')") + @ApiOperation(value = "修改") + @RequestMapping(value = "/update", method = RequestMethod.POST) + public CommonResult update(@RequestParam Integer id, @Validated SystemGroupRequest systemGroupRequest) { + if (systemGroupService.edit(id, systemGroupRequest)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 查询组合数据表信息 + * @param id Integer + */ + @PreAuthorize("hasAuthority('admin:system:group:info')") + @ApiOperation(value = "详情") + @RequestMapping(value = "/info", method = RequestMethod.GET) + public CommonResult info(@RequestParam(value = "id") Integer id) { + return CommonResult.success(systemGroupService.getById(id)); + } +} + + + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemGroupDataController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemGroupDataController.java new file mode 100644 index 0000000..9de04c2 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemGroupDataController.java @@ -0,0 +1,110 @@ +package com.zbkj.admin.controller; + +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.model.system.SystemGroupData; +import com.zbkj.common.request.SystemGroupDataRequest; +import com.zbkj.common.request.SystemGroupDataSearchRequest; +import com.zbkj.service.service.SystemGroupDataService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + + +/** + * 组合数据详情表 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/admin/system/group/data") +@Api(tags = "设置 -- 组合数据 -- 详情") +public class SystemGroupDataController { + + @Autowired + private SystemGroupDataService systemGroupDataService; + + /** + * 分页组合数据详情 + * @param request 搜索条件 + * @param pageParamRequest 分页参数 + */ + @PreAuthorize("hasAuthority('admin:system:group:data:list')") + @ApiOperation(value = "分页组合数据详情") + @RequestMapping(value = "/list", method = RequestMethod.GET) + public CommonResult> getList(@Validated SystemGroupDataSearchRequest request, @Validated PageParamRequest pageParamRequest) { + CommonPage systemGroupDataCommonPage = CommonPage.restPage(systemGroupDataService.getList(request, pageParamRequest)); + return CommonResult.success(systemGroupDataCommonPage); + } + + /** + * 新增组合数据详情 + * @param systemGroupDataRequest SystemFormCheckRequest 新增参数 + */ + @PreAuthorize("hasAuthority('admin:system:group:data:save')") + @ApiOperation(value = "新增") + @RequestMapping(value = "/save", method = RequestMethod.POST) + public CommonResult save(@RequestBody @Validated SystemGroupDataRequest systemGroupDataRequest) { + if (systemGroupDataService.create(systemGroupDataRequest)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 删除组合数据详情表 + * @param id Integer + */ + @PreAuthorize("hasAuthority('admin:system:group:data:delete')") + @ApiOperation(value = "删除") + @RequestMapping(value = "/delete", method = RequestMethod.GET) + public CommonResult delete(@RequestParam(value = "id") Integer id) { + if (systemGroupDataService.removeById(id)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 修改组合数据详情表 + * @param id integer id + * @param request 修改参数 + */ + @PreAuthorize("hasAuthority('admin:system:group:data:update')") + @ApiOperation(value = "修改") + @RequestMapping(value = "/update", method = RequestMethod.POST) + public CommonResult update(@RequestParam Integer id, @RequestBody @Validated SystemGroupDataRequest request) { + if (systemGroupDataService.update(id, request)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 组合数据详情信息 + * @param id Integer + */ + @PreAuthorize("hasAuthority('admin:system:group:data:info')") + @ApiOperation(value = "组合数据详情信息") + @RequestMapping(value = "/info", method = RequestMethod.GET) + public CommonResult info(@RequestParam(value = "id") Integer id) { + SystemGroupData systemGroupData = systemGroupDataService.getById(id); + return CommonResult.success(systemGroupData); + } +} + + + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemMenuController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemMenuController.java new file mode 100644 index 0000000..0edab45 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemMenuController.java @@ -0,0 +1,128 @@ +package com.zbkj.admin.controller; + +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.model.system.SystemMenu; +import com.zbkj.common.request.SystemMenuRequest; +import com.zbkj.common.request.SystemMenuSearchRequest; +import com.zbkj.common.vo.MenuCheckVo; +import com.zbkj.service.service.SystemMenuService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + + +/** + * 系统菜单管理 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/admin/system/menu") +@Api(tags = "系统菜单管理") +public class SystemMenuController { + + @Autowired + private SystemMenuService systemMenuService; + + /** + * 菜单列表 + * @param request 搜索条件 + */ + @PreAuthorize("hasAuthority('admin:system:menu:list')") + @ApiOperation(value = "菜单列表") + @RequestMapping(value = "/list", method = RequestMethod.GET) + public CommonResult> getList(@Validated SystemMenuSearchRequest request) { + return CommonResult.success(systemMenuService.getAdminList(request)); + } + + /** + * 新增菜单 + * @param systemMenuRequest 新增菜单 + */ + @PreAuthorize("hasAuthority('admin:system:menu:add')") + @ApiOperation(value = "新增菜单") + @RequestMapping(value = "/add", method = RequestMethod.POST) + public CommonResult add(@RequestBody @Validated SystemMenuRequest systemMenuRequest) { + if (systemMenuService.add(systemMenuRequest)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 删除菜单 + * @param id Integer + */ + @PreAuthorize("hasAuthority('admin:system:menu:delete')") + @ApiOperation(value = "删除菜单") + @RequestMapping(value = "/delete/{id}", method = RequestMethod.POST) + public CommonResult delete(@PathVariable(value = "id") Integer id) { + if (systemMenuService.deleteById(id)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 修改菜单 + */ + @PreAuthorize("hasAuthority('admin:system:menu:update')") + @ApiOperation(value = "修改菜单") + @RequestMapping(value = "/update", method = RequestMethod.POST) + public CommonResult update(@RequestBody @Validated SystemMenuRequest systemMenuRequest) { + if (systemMenuService.edit(systemMenuRequest)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 菜单详情 + */ + @PreAuthorize("hasAuthority('admin:system:menu:info')") + @ApiOperation(value = "菜单详情") + @RequestMapping(value = "/info/{id}", method = RequestMethod.GET) + public CommonResult info(@PathVariable(value = "id") Integer id) { + return CommonResult.success(systemMenuService.getInfo(id)); + } + + /** + * 修改菜单显示状态 + */ + @PreAuthorize("hasAuthority('admin:system:menu:show:status')") + @ApiOperation(value = "修改菜单显示状态") + @RequestMapping(value = "/updateShowStatus/{id}", method = RequestMethod.POST) + public CommonResult updateShowStatus(@PathVariable(value = "id") Integer id) { + if (systemMenuService.updateShowStatus(id)) { + return CommonResult.success("修改成功"); + } + return CommonResult.failed("修改失败"); + } + + /** + * 菜单缓存树 + */ + @PreAuthorize("hasAuthority('admin:system:menu:cache:tree')") + @ApiOperation(value = "菜单缓存树") + @RequestMapping(value = "/cache/tree", method = RequestMethod.GET) + public CommonResult> getCacheTree() { + return CommonResult.success(systemMenuService.getCacheTree()); + } +} + + + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemNotificationController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemNotificationController.java new file mode 100644 index 0000000..90c1d57 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemNotificationController.java @@ -0,0 +1,116 @@ +package com.zbkj.admin.controller; + +import com.zbkj.common.model.system.SystemNotification; +import com.zbkj.common.request.NotificationInfoRequest; +import com.zbkj.common.request.NotificationSearchRequest; +import com.zbkj.common.request.NotificationUpdateRequest; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.response.NotificationInfoResponse; +import com.zbkj.service.service.SystemNotificationService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 通知设置 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/admin/system/notification") +@Api(tags = "通知设置-前端控制器") //配合swagger使用 +public class SystemNotificationController { + + @Autowired + private SystemNotificationService systemNotificationService; + + /** + * 系统通知列表 + * @param request ExpressSearchRequest 搜索条件 + */ + @PreAuthorize("hasAuthority('admin:system:notification:list')") + @ApiOperation(value = "系统通知列表") + @RequestMapping(value = "/list", method = RequestMethod.GET) + public CommonResult> getList(@Validated NotificationSearchRequest request) { + return CommonResult.success(systemNotificationService.getList(request)); + } + + /** + * 公众号模板开关 + */ + @PreAuthorize("hasAuthority('admin:system:notification:wechat:switch')") + @ApiOperation(value = "公众号模板开关") + @RequestMapping(value = "/wechat/switch/{id}", method = RequestMethod.POST) + public CommonResult wechatSwitch(@PathVariable Integer id) { + if (systemNotificationService.wechatSwitch(id)) { + return CommonResult.success("更改成功"); + } + return CommonResult.failed("更改失败"); + } + + /** + * 小程序订阅模板开关 + */ + @PreAuthorize("hasAuthority('admin:system:notification:routine:switch')") + @ApiOperation(value = "小程序订阅模板开关") + @RequestMapping(value = "/routine/switch/{id}", method = RequestMethod.POST) + public CommonResult routineSwitch(@PathVariable Integer id) { + if (systemNotificationService.routineSwitch(id)) { + return CommonResult.success("更改成功"); + } + return CommonResult.failed("更改失败"); + } + + /** + * 发送短信开关 + */ + @PreAuthorize("hasAuthority('admin:system:notification:sms:switch')") + @ApiOperation(value = "发送短信开关") + @RequestMapping(value = "/sms/switch/{id}", method = RequestMethod.POST) + public CommonResult smsSwitch(@PathVariable Integer id) { + if (systemNotificationService.smsSwitch(id)) { + return CommonResult.success("更改成功"); + } + return CommonResult.failed("更改失败"); + } + + /** + * 通知详情 + */ + @PreAuthorize("hasAuthority('admin:system:notification:detail')") + @ApiOperation(value = "通知详情") + @RequestMapping(value = "/detail", method = RequestMethod.GET) + public CommonResult info(@Validated NotificationInfoRequest request) { + return CommonResult.success(systemNotificationService.getDetail(request)); + } + + /** + * 修改通知 + */ + @PreAuthorize("hasAuthority('admin:system:notification:update')") + @ApiOperation(value = "修改通知") + @RequestMapping(value = "/update", method = RequestMethod.POST) + public CommonResult update(@Validated @RequestBody NotificationUpdateRequest request) { + if (systemNotificationService.modify(request)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } +} + + + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemRoleController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemRoleController.java new file mode 100644 index 0000000..596cf95 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemRoleController.java @@ -0,0 +1,122 @@ +package com.zbkj.admin.controller; + +import com.zbkj.common.model.system.SystemRole; +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.request.SystemRoleRequest; +import com.zbkj.common.request.SystemRoleSearchRequest; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.response.RoleInfoResponse; +import com.zbkj.service.service.SystemRoleService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + + +/** + * 身份管理表 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/admin/system/role") +@Api(tags = "设置 -- 权限管理 -- 身份管理") +public class SystemRoleController { + + @Autowired + private SystemRoleService systemRoleService; + + /** + * 分页显示身份管理表 + * @param request 搜索条件 + * @param pageParamRequest 分页参数 + */ + @PreAuthorize("hasAuthority('admin:system:role:list')") + @ApiOperation(value = "分页列表") + @RequestMapping(value = "/list", method = RequestMethod.GET) + public CommonResult> getList(@Validated SystemRoleSearchRequest request, @Validated PageParamRequest pageParamRequest) { + CommonPage systemRoleCommonPage = CommonPage.restPage(systemRoleService.getList(request, pageParamRequest)); + return CommonResult.success(systemRoleCommonPage); + } + + /** + * 新增身份 + * @param systemRoleRequest 新增参数 + */ + @PreAuthorize("hasAuthority('admin:system:role:save')") + @ApiOperation(value = "新增身份") + @RequestMapping(value = "/save", method = RequestMethod.POST) + public CommonResult save(@RequestBody @Validated SystemRoleRequest systemRoleRequest) { + if (systemRoleService.add(systemRoleRequest)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 删除身份管理表 + * @param id Integer + */ + @PreAuthorize("hasAuthority('admin:system:role:delete')") + @ApiOperation(value = "删除") + @RequestMapping(value = "/delete", method = RequestMethod.GET) + public CommonResult delete(@RequestParam(value = "id") Integer id) { + if (systemRoleService.delete(id)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 修改身份管理表 + * @param systemRoleRequest 修改参数 + */ + @PreAuthorize("hasAuthority('admin:system:role:update')") + @ApiOperation(value = "修改") + @RequestMapping(value = "/update", method = RequestMethod.POST) + public CommonResult update(@RequestBody @Validated SystemRoleRequest systemRoleRequest) { + if (systemRoleService.edit(systemRoleRequest)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 查询身份详情 + * @param id String + */ + @PreAuthorize("hasAuthority('admin:system:role:info')") + @ApiOperation(value = "详情") + @RequestMapping(value = "/info/{id}", method = RequestMethod.GET) + public CommonResult info(@PathVariable Integer id) { + return CommonResult.success(systemRoleService.getInfo(id)); + } + + /** + * 修改身份状态 + */ + @PreAuthorize("hasAuthority('admin:system:role:update:status')") + @ApiOperation(value = "修改身份状态") + @RequestMapping(value = "/updateStatus", method = RequestMethod.GET) + public CommonResult updateStatus(@Validated @RequestParam(value = "id") Integer id, @Validated @RequestParam(value = "status") Boolean status) { + if (systemRoleService.updateStatus(id, status)) { + return CommonResult.success("修改成功"); + } + return CommonResult.failed("修改失败"); + } +} + + + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemStoreController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemStoreController.java new file mode 100644 index 0000000..bafdb47 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemStoreController.java @@ -0,0 +1,163 @@ +package com.zbkj.admin.controller; + +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.model.system.SystemStore; +import com.zbkj.common.request.SystemStoreRequest; +import com.zbkj.common.request.SystemStoreSearchRequest; +import com.zbkj.service.service.SystemStoreService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.HashMap; + + +/** + * 门店自提 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/admin/system/store") +@Api(tags = "设置 -- 提货点 -- 提货点") +public class SystemStoreController { + + @Autowired + private SystemStoreService systemStoreService; + + /** + * 分页显示门店自提 + * @param request SystemStoreSearchRequest 搜索条件 + * @param pageParamRequest 分页参数 + */ + @PreAuthorize("hasAuthority('admin:system:store:list')") + @ApiOperation(value = "门店自提分页列表") + @RequestMapping(value = "/list", method = RequestMethod.GET) + public CommonResult> getList(@Validated SystemStoreSearchRequest request, @Validated PageParamRequest pageParamRequest) { + CommonPage expressCommonPage = CommonPage.restPage(systemStoreService.getList(request.getKeywords(), request.getStatus(), pageParamRequest)); + return CommonResult.success(expressCommonPage); + } + + /** + * 数量 + */ + @PreAuthorize("hasAuthority('admin:system:store:count')") + @ApiOperation(value = "数量") + @RequestMapping(value = "/getCount", method = RequestMethod.GET) + public CommonResult> getCount() { + return CommonResult.success(systemStoreService.getCount()); + } + + /** + * 新增门店自提 + * @param request SystemStoreRequest 新增参数 + */ + @PreAuthorize("hasAuthority('admin:system:store:save')") + @ApiOperation(value = "新增") + @RequestMapping(value = "/save", method = RequestMethod.POST) + public CommonResult save(@RequestBody @Validated SystemStoreRequest request) { + if (systemStoreService.create(request)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + + /** + * 删除门店自提 + * @param id Integer + */ + @PreAuthorize("hasAuthority('admin:system:store:delete')") + @ApiOperation(value = "删除") + @RequestMapping(value = "/delete", method = RequestMethod.GET) + public CommonResult delete(@RequestParam(value = "id") Integer id) { + if (systemStoreService.delete(id)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 修改门店自提 + * @param id integer id + * @param request 修改参数 + */ + @PreAuthorize("hasAuthority('admin:system:store:update')") + @ApiOperation(value = "修改") + @RequestMapping(value = "/update", method = RequestMethod.POST) + public CommonResult update(@RequestParam Integer id, @RequestBody @Validated SystemStoreRequest request) { + if (systemStoreService.update(id, request)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 修改门店显示状态 + * @param id integer id + * @param status 状态 + */ + @PreAuthorize("hasAuthority('admin:system:store:update:status')") + @ApiOperation(value = "修改门店显示状态") + @RequestMapping(value = "/update/status", method = RequestMethod.GET) + public CommonResult updateStatus(@RequestParam Integer id, @RequestParam Boolean status) { + if (systemStoreService.updateStatus(id, status)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 门店自提详情 + * @param id Integer + */ + @PreAuthorize("hasAuthority('admin:system:store:info')") + @ApiOperation(value = "详情") + @RequestMapping(value = "/info", method = RequestMethod.GET) + public CommonResult info(@RequestParam(value = "id") Integer id) { + return CommonResult.success(systemStoreService.getInfo(id)); + } + + /** + * 彻底删除 + */ + @PreAuthorize("hasAuthority('admin:system:store:completely:delete')") + @ApiOperation(value = "彻底删除") + @RequestMapping(value = "/completely/delete", method = RequestMethod.GET) + public CommonResult completeLyDelete(@RequestParam(value = "id") Integer id) { + if (systemStoreService.completeLyDelete(id)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 恢复 + */ + @PreAuthorize("hasAuthority('admin:system:store:recovery')") + @ApiOperation(value = "提货点恢复") + @RequestMapping(value = "/recovery", method = RequestMethod.GET) + public CommonResult recovery(@RequestParam(value = "id") Integer id) { + if (systemStoreService.recovery(id)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } +} + + + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemStoreStaffController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemStoreStaffController.java new file mode 100644 index 0000000..7323bd1 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemStoreStaffController.java @@ -0,0 +1,125 @@ +package com.zbkj.admin.controller; + +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.model.system.SystemStoreStaff; +import com.zbkj.common.request.SystemStoreStaffRequest; +import com.zbkj.common.response.SystemStoreStaffResponse; +import com.zbkj.service.service.SystemStoreStaffService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + + +/** + * 门店店员表 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/admin/system/store/staff") +@Api(tags = "设置 -- 提货点 -- 核销员") +public class SystemStoreStaffController { + + @Autowired + private SystemStoreStaffService systemStoreStaffService; + + /** + * 分页显示门店核销员列表 + * @param storeId 门店id + * @param pageParamRequest 分页参数 + */ + @PreAuthorize("hasAuthority('admin:system:staff:list')") + @ApiOperation(value = "分页列表") + @RequestMapping(value = "/list", method = RequestMethod.GET) + public CommonResult> getList(@RequestParam(name = "storeId", required = false, defaultValue = "0") Integer storeId, + @ModelAttribute PageParamRequest pageParamRequest) { + CommonPage systemStoreStaffCommonPage = + CommonPage.restPage(systemStoreStaffService.getList(storeId, pageParamRequest)); + return CommonResult.success(systemStoreStaffCommonPage); + } + + /** + * 新增门店店员表 + * @param systemStoreStaffRequest 新增参数 + */ + @PreAuthorize("hasAuthority('admin:system:staff:save')") + @ApiOperation(value = "新增") + @RequestMapping(value = "/save", method = RequestMethod.POST) + public CommonResult save(@RequestBody @ModelAttribute SystemStoreStaffRequest systemStoreStaffRequest) { + if (systemStoreStaffService.saveUnique(systemStoreStaffRequest)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 删除门店店员表 + * @param id Integer + */ + @PreAuthorize("hasAuthority('admin:system:staff:delete')") + @ApiOperation(value = "删除") + @RequestMapping(value = "/delete", method = RequestMethod.GET) + public CommonResult delete(@RequestParam(value = "id") Integer id) { + if (systemStoreStaffService.removeById(id)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 修改门店店员表 + * @param id integer id + * @param systemStoreStaffRequest 修改参数 + */ + @PreAuthorize("hasAuthority('admin:system:staff:update')") + @ApiOperation(value = "修改") + @RequestMapping(value = "/update", method = RequestMethod.POST) + public CommonResult update(@RequestParam Integer id, @RequestBody @ModelAttribute SystemStoreStaffRequest systemStoreStaffRequest) { + if (systemStoreStaffService.edit(id, systemStoreStaffRequest)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 修改门店店员表 + * @param id integer id + * @param status 状态 + */ + @PreAuthorize("hasAuthority('admin:system:staff:update:status')") + @ApiOperation(value = "修改状态") + @RequestMapping(value = "/update/status", method = RequestMethod.GET) + public CommonResult updateStatus(@RequestParam Integer id, @RequestParam Integer status) { + if (systemStoreStaffService.updateStatus(id, status)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 查询门店店员表信息 + * @param id Integer + */ + @PreAuthorize("hasAuthority('admin:system:staff:info')") + @ApiOperation(value = "详情") + @RequestMapping(value = "/info", method = RequestMethod.GET) + public CommonResult info(@RequestParam(value = "id") Integer id) { + return CommonResult.success(systemStoreStaffService.getById(id)); + } +} + + + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemUserLevelController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemUserLevelController.java new file mode 100644 index 0000000..c1e3177 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemUserLevelController.java @@ -0,0 +1,106 @@ +package com.zbkj.admin.controller; + +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.model.system.SystemUserLevel; +import com.zbkj.common.request.SystemUserLevelRequest; +import com.zbkj.common.request.SystemUserLevelUpdateShowRequest; +import com.zbkj.service.service.SystemUserLevelService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + + +/** + * 设置用户等级表 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/admin/system/user/level") +@Api(tags = "设置 -- 会员等级") +public class SystemUserLevelController { + + @Autowired + private SystemUserLevelService systemUserLevelService; + + /** + * 分页显示设置用户等级表 + */ + @PreAuthorize("hasAuthority('admin:system:user:level:list')") + @ApiOperation(value = "分页列表") + @RequestMapping(value = "/list", method = RequestMethod.GET) + public CommonResult> getList() { + return CommonResult.success(systemUserLevelService.getList()); + } + + /** + * 新增等级 + */ + @PreAuthorize("hasAuthority('admin:system:user:level:save')") + @ApiOperation(value = "新增等级") + @RequestMapping(value = "/save", method = RequestMethod.POST) + public CommonResult save(@RequestBody @Validated SystemUserLevelRequest request) { + if (systemUserLevelService.create(request)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 删除等级 + * @param id 等级id + */ + @PreAuthorize("hasAuthority('admin:system:user:level:delete')") + @ApiOperation(value = "删除等级") + @RequestMapping(value = "/delete/{id}", method = RequestMethod.POST) + public CommonResult delete(@PathVariable(value = "id") Integer id) { + if (systemUserLevelService.delete(id)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 更新等级 + */ + @PreAuthorize("hasAuthority('admin:system:user:level:update')") + @ApiOperation(value = "更新等级") + @RequestMapping(value = "/update/{id}", method = RequestMethod.POST) + public CommonResult update(@PathVariable(value = "id") Integer id, + @RequestBody @Validated SystemUserLevelRequest request) { + if (systemUserLevelService.update(id, request)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 使用/禁用 + */ + @PreAuthorize("hasAuthority('admin:system:user:level:use')") + @ApiOperation(value = "使用/禁用") + @RequestMapping(value = "/use", method = RequestMethod.POST) + public CommonResult use(@RequestBody @Validated SystemUserLevelUpdateShowRequest request) { + if (systemUserLevelService.updateShow(request)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } +} + + + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemWriteOffOrderController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemWriteOffOrderController.java new file mode 100644 index 0000000..40109f6 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemWriteOffOrderController.java @@ -0,0 +1,56 @@ +package com.zbkj.admin.controller; + +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.request.SystemWriteOffOrderSearchRequest; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.response.SystemWriteOffOrderResponse; +import com.zbkj.service.service.StoreOrderService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + + +/** + * 订单表 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/admin/system/store/order") +@Api(tags = "设置 -- 提货点 -- 核销订单") //配合swagger使用 +public class SystemWriteOffOrderController { + + @Autowired + private StoreOrderService storeOrderService; + + /** + * 分页显示订单表 + * @param request 搜索条件 + * @param pageParamRequest 分页参数 + */ + @PreAuthorize("hasAuthority('admin:system:order:list')") + @ApiOperation(value = "分页列表") //配合swagger使用 + @RequestMapping(value = "/list", method = RequestMethod.POST) + public CommonResult getList( + @Validated SystemWriteOffOrderSearchRequest request, + @Validated PageParamRequest pageParamRequest) { + return CommonResult.success(storeOrderService.getWriteOffList(request, pageParamRequest)); + } +} + + + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/TemplateMessageController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/TemplateMessageController.java new file mode 100644 index 0000000..d6a330a --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/TemplateMessageController.java @@ -0,0 +1,64 @@ +package com.zbkj.admin.controller; + +import com.zbkj.common.response.CommonResult; +import com.zbkj.service.service.TemplateMessageService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + + +/** + * 微信模板 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/admin/wechat/template") +@Api(tags = "微信 -- 消息模版") //配合swagger使用 +public class TemplateMessageController { + + @Autowired + private TemplateMessageService templateMessageService; + + /** + * 公众号模板消息同步 + */ + @PreAuthorize("hasAuthority('admin:wechat:whcbqhn:sync')") + @ApiOperation(value = "公众号模板消息同步") + @RequestMapping(value = "/whcbqhn/sync", method = RequestMethod.POST) + public CommonResult whcbqhnSync() { + if (templateMessageService.whcbqhnSync()) { + return CommonResult.success("公众号模板消息同步成功"); + } + return CommonResult.failed("公众号模板消息同步失败"); + } + + /** + * 小程序订阅消息同步 + */ + @PreAuthorize("hasAuthority('admin:wechat:routine:sync')") + @ApiOperation(value = "小程序订阅消息同步") + @RequestMapping(value = "/routine/sync", method = RequestMethod.POST) + public CommonResult routineSync() { + if (templateMessageService.routineSync()) { + return CommonResult.success("小程序订阅消息同步成功"); + } + return CommonResult.failed("小程序订阅消息同步失败"); + } +} + + + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/UploadController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/UploadController.java new file mode 100644 index 0000000..6d6a15f --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/UploadController.java @@ -0,0 +1,78 @@ +package com.zbkj.admin.controller; + +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.vo.FileResultVo; +import com.zbkj.service.service.UploadService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; + + +/** + * 上传文件 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/admin/upload") +@Api(tags = "上传文件") +public class UploadController { + + @Autowired + private UploadService uploadService; + + /** + * 图片上传 + */ +// @PreAuthorize("hasAuthority('admin:upload:image')") + @ApiOperation(value = "图片上传") + @RequestMapping(value = "/image", method = RequestMethod.POST) + @ApiImplicitParams({ + @ApiImplicitParam(name = "model", value = "模块 用户user,商品product,微信wechat,news文章"), + @ApiImplicitParam(name = "pid", value = "分类ID 0编辑器,1商品图片,2拼团图片,3砍价图片,4秒杀图片,5文章图片,6组合数据图,7前台用户,8微信系列 ", allowableValues = "range[0,1,2,3,4,5,6,7,8]") + }) + public CommonResult image(MultipartFile multipart, + @RequestParam(value = "model") String model, + @RequestParam(value = "pid") Integer pid) throws IOException { + return CommonResult.success(uploadService.imageUpload(multipart, model, pid)); + } + + /** + * 文件上传 + */ +// @PreAuthorize("hasAuthority('admin:upload:file')") + @ApiOperation(value = "文件上传") + @RequestMapping(value = "/file", method = RequestMethod.POST) + @ApiImplicitParams({ + @ApiImplicitParam(name = "model", value = "模块 用户user,商品product,微信wechat,news文章"), + @ApiImplicitParam(name = "pid", value = "分类ID 0编辑器,1商品图片,2拼团图片,3砍价图片,4秒杀图片,5文章图片,6组合数据图,7前台用户,8微信系列 ", allowableValues = "range[0,1,2,3,4,5,6,7,8]") + }) + public CommonResult file(MultipartFile multipart, + @RequestParam(value = "model") String model, + @RequestParam(value = "pid") Integer pid) throws IOException { + return CommonResult.success(uploadService.fileUpload(multipart, model, pid)); + } + +} + + + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/UserController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/UserController.java new file mode 100644 index 0000000..59c6434 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/UserController.java @@ -0,0 +1,205 @@ +package com.zbkj.admin.controller; + + +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.request.*; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.model.user.User; +import com.zbkj.common.response.TopDetail; +import com.zbkj.common.response.UserResponse; +import com.zbkj.service.service.UserService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.formula.functions.T; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import javax.validation.constraints.Max; +import javax.validation.constraints.Min; +import java.util.List; + +/** + * 用户表 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/admin/user") +@Api(tags = "会员管理") +@Validated +public class UserController { + @Autowired + private UserService userService; + + /** + * 分页显示用户表 + * @param request 搜索条件 + * @param pageParamRequest 分页参数 + */ + @PreAuthorize("hasAuthority('admin:user:list')") + @ApiOperation(value = "分页列表") + @RequestMapping(value = "/list", method = RequestMethod.GET) + public CommonResult> getList(@ModelAttribute @Validated UserSearchRequest request, + @ModelAttribute PageParamRequest pageParamRequest) { + CommonPage userCommonPage = CommonPage.restPage(userService.getList(request, pageParamRequest)); + return CommonResult.success(userCommonPage); + } + + /** + * 修改用户表 + * @param id integer id + * @param userRequest 修改参数 + */ + @PreAuthorize("hasAuthority('admin:user:update')") + @ApiOperation(value = "修改") + @RequestMapping(value = "/update", method = RequestMethod.POST) + public CommonResult update(@RequestParam Integer id, @RequestBody @Validated UserUpdateRequest userRequest) { + userRequest.setUid(id); + if (userService.updateUser(userRequest)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 修改用户手机号 + * @param id 用户uid + * @param phone 手机号 + */ + @PreAuthorize("hasAuthority('admin:user:update:phone')") + @ApiOperation(value = "修改用户手机号") + @RequestMapping(value = "/update/phone", method = RequestMethod.GET) + public CommonResult updatePhone(@RequestParam(name = "id") Integer id, @RequestParam(name = "phone") String phone) { + if (userService.updateUserPhone(id, phone)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 用户详情 + * @param id Integer + */ + @PreAuthorize("hasAuthority('admin:user:info')") + @ApiOperation(value = "详情") + @RequestMapping(value = "/info", method = RequestMethod.GET) + public CommonResult info(@RequestParam(value = "id") Integer id) { + return CommonResult.success(userService.getInfoByUid(id)); + } + + /** + * 根据参数类型查询会员对应的信息 + * @param userId Integer 会员id + * @param type int 类型 0=消费记录,1=积分明细,2=签到记录,3=持有优惠券,4=余额变动,5=好友关系 + * @param pageParamRequest PageParamRequest 分页 + */ + @PreAuthorize("hasAuthority('admin:user:infobycondition')") + @ApiOperation(value="会员详情") + @RequestMapping(value = "/infobycondition", method = RequestMethod.GET) + @ApiImplicitParams({ + @ApiImplicitParam(name = "userId",example = "1", required = true), + @ApiImplicitParam(name = "type", value="0=消费记录,1=积分明细,2=签到记录,3=持有优惠券,4=余额变动,5=好友关系", example = "0" + , required = true) + }) + public CommonResult> infoByCondition(@RequestParam(name = "userId") @Valid Integer userId, + @RequestParam(name = "type") @Valid @Max(5) @Min(0) int type, + @ModelAttribute PageParamRequest pageParamRequest) { + return CommonResult.success(CommonPage.restPage((List) userService.getInfoByCondition(userId,type,pageParamRequest))); + } + + /** + * 会员详情页Top数据 + */ + @PreAuthorize("hasAuthority('admin:user:topdetail')") + @ApiOperation(value = "会员详情页Top数据") + @RequestMapping(value = "topdetail", method = RequestMethod.GET) + public CommonResult topDetail (@RequestParam @Valid Integer userId) { + return CommonResult.success(userService.getTopDetail(userId)); + } + + /** + * 操作积分 + */ + @PreAuthorize("hasAuthority('admin:user:operate:founds')") + @ApiOperation(value = "积分余额") + @RequestMapping(value = "/operate/founds", method = RequestMethod.GET) + public CommonResult founds(@Validated UserOperateIntegralMoneyRequest request) { + if (userService.updateIntegralMoney(request)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 会员分组 + * @param id String id + * @param groupId Integer 分组Id + */ + @PreAuthorize("hasAuthority('admin:user:group')") + @ApiOperation(value = "分组") + @RequestMapping(value = "/group", method = RequestMethod.POST) + public CommonResult group(@RequestParam String id, @RequestParam String groupId) { + if (userService.group(id, groupId)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 会员标签 + * @param id String id + * @param tagId Integer 标签id + */ + @PreAuthorize("hasAuthority('admin:user:tag')") + @ApiOperation(value = "标签") + @RequestMapping(value = "/tag", method = RequestMethod.POST) + public CommonResult tag(@RequestParam String id, @RequestParam String tagId) { + if (userService.tag(id, tagId)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 修改上级推广人 + */ + @PreAuthorize("hasAuthority('admin:user:update:spread')") + @ApiOperation(value = "修改上级推广人") + @RequestMapping(value = "/update/spread", method = RequestMethod.POST) + public CommonResult editSpread(@Validated @RequestBody UserUpdateSpreadRequest request) { + if (userService.editSpread(request)) { + return CommonResult.success("修改成功"); + } + return CommonResult.failed("修改失败"); + } + + /** + * 更新用户会员等级 + */ + @PreAuthorize("hasAuthority('admin:user:update:level')") + @ApiOperation(value = "更新用户会员等级") + @RequestMapping(value = "/update/level", method = RequestMethod.POST) + public CommonResult updateUserLevel(@Validated @RequestBody UpdateUserLevelRequest request) { + if (userService.updateUserLevel(request)) { + return CommonResult.success("更新成功"); + } + return CommonResult.failed("更新失败"); + } +} + + + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/UserExtractController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/UserExtractController.java new file mode 100644 index 0000000..51200c6 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/UserExtractController.java @@ -0,0 +1,107 @@ +package com.zbkj.admin.controller; + +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.model.finance.UserExtract; +import com.zbkj.common.request.UserExtractRequest; +import com.zbkj.common.request.UserExtractSearchRequest; +import com.zbkj.common.response.BalanceResponse; +import com.zbkj.service.service.UserExtractService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + + +/** + * 用户提现表 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/admin/finance/apply") +@Api(tags = "财务 -- 提现申请") +public class UserExtractController { + + @Autowired + private UserExtractService userExtractService; + + /** + * 分页显示用户提现表 + * @param request 搜索条件 + * @param pageParamRequest 分页参数 + */ + @PreAuthorize("hasAuthority('admin:finance:apply:list')") + @ApiOperation(value = "分页列表") + @RequestMapping(value = "/list", method = RequestMethod.GET) + public CommonResult> getList(@Validated UserExtractSearchRequest request, @Validated PageParamRequest pageParamRequest){ + CommonPage userExtractCommonPage = CommonPage.restPage(userExtractService.getList(request, pageParamRequest)); + return CommonResult.success(userExtractCommonPage); + } + + /** + * 修改用户提现表 + * @param id integer id + * @param userExtractRequest 修改参数 + */ + @PreAuthorize("hasAuthority('admin:finance:apply:update')") + @ApiOperation(value = "修改") + @RequestMapping(value = "/update", method = RequestMethod.POST) + public CommonResult update(@RequestParam Integer id, @Validated UserExtractRequest userExtractRequest){ + if (userExtractService.updateExtract(id, userExtractRequest)) { + return CommonResult.success(); + } else { + return CommonResult.failed(); + } + } + + /** + * 提现统计 + * @Param dateLimit 时间限制 today,yesterday,lately7,lately30,month,year,/yyyy-MM-dd hh:mm:ss,yyyy-MM-dd hh:mm:ss/ + */ + @PreAuthorize("hasAuthority('admin:finance:apply:balance')") + @ApiOperation(value = "提现统计") + @RequestMapping(value = "/balance", method = RequestMethod.POST) + public CommonResult balance(@RequestParam(value = "dateLimit", required = false,defaultValue = "") + String dateLimit){ + return CommonResult.success(userExtractService.getBalance(dateLimit)); + } + + /** + * 提现审核 + * @param id 提现id + * @param status 审核状态 -1 未通过 0 审核中 1 已提现 + * @param backMessage 驳回原因 + * @return 审核结果 + */ + @PreAuthorize("hasAuthority('admin:finance:apply:apply')") + @ApiOperation(value = "提现申请审核") + @RequestMapping(value = "/apply", method = RequestMethod.POST) + public CommonResult updateStatus(@RequestParam(value = "id") Integer id, + @RequestParam(value = "status",defaultValue = "审核状态 -1 未通过 0 审核中 1 已提现") Integer status, + @RequestParam(value = "backMessage",defaultValue = "驳回原因", required = false) String backMessage){ + if(userExtractService.updateStatus(id, status, backMessage)){ + return CommonResult.success(); + }else{ + return CommonResult.failed(); + } + } +} + + + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/UserGroupController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/UserGroupController.java new file mode 100644 index 0000000..720cfb1 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/UserGroupController.java @@ -0,0 +1,107 @@ +package com.zbkj.admin.controller; + +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.model.user.UserGroup; +import com.zbkj.common.request.UserGroupRequest; +import com.zbkj.service.service.UserGroupService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + + +/** + * 用户分组表 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/admin/user/group") +@Api(tags = "会员 -- 分组") +public class UserGroupController { + + @Autowired + private UserGroupService userGroupService; + + /** + * 分页显示用户分组表 + * @param pageParamRequest 分页参数 + */ + @PreAuthorize("hasAuthority('admin:user:group:list')") + @ApiOperation(value = "分页列表") + @RequestMapping(value = "/list", method = RequestMethod.GET) + public CommonResult> getList(@Validated PageParamRequest pageParamRequest) { + CommonPage userGroupCommonPage = CommonPage.restPage(userGroupService.getList(pageParamRequest)); + return CommonResult.success(userGroupCommonPage); + } + + /** + * 新增用户分组表 + * @param userGroupRequest 新增参数 + */ + @PreAuthorize("hasAuthority('admin:user:group:save')") + @ApiOperation(value = "新增") + @RequestMapping(value = "/save", method = RequestMethod.POST) + public CommonResult save(@RequestBody @Validated UserGroupRequest userGroupRequest) { + if (userGroupService.create(userGroupRequest)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 删除用户分组表 + * @param id Integer + */ + @PreAuthorize("hasAuthority('admin:user:group:delete')") + @ApiOperation(value = "删除") + @RequestMapping(value = "/delete", method = RequestMethod.GET) + public CommonResult delete(@RequestParam(value = "id") Integer id) { + if (userGroupService.removeById(id)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 修改用户分组表 + * @param id integer id + * @param userGroupRequest 修改参数 + */ + @PreAuthorize("hasAuthority('admin:user:group:update')") + @ApiOperation(value = "修改") + @RequestMapping(value = "/update", method = RequestMethod.POST) + public CommonResult update(@RequestParam Integer id, @RequestBody @Validated UserGroupRequest userGroupRequest) { + if (userGroupService.edit(id, userGroupRequest)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 查询用户分组表信息 + * @param id Integer + */ + @PreAuthorize("hasAuthority('admin:user:group:info')") + @ApiOperation(value = "详情") + @RequestMapping(value = "/info", method = RequestMethod.GET) + public CommonResult info(@RequestParam(value = "id") Integer id) { + return CommonResult.success(userGroupService.getById(id)); + } +} + + + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/UserIntegralController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/UserIntegralController.java new file mode 100644 index 0000000..24a025a --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/UserIntegralController.java @@ -0,0 +1,55 @@ +package com.zbkj.admin.controller; + +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.request.AdminIntegralSearchRequest; +import com.zbkj.common.response.UserIntegralRecordResponse; +import com.zbkj.service.service.UserIntegralRecordService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +/** + * 用户积分管理控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/admin/user/integral") +@Api(tags = "用户积分管理") +public class UserIntegralController { + + @Autowired + private UserIntegralRecordService integralRecordService; + + /** + * 积分分页列表 + * @param request 搜索条件 + * @param pageParamRequest 分页参数 + */ + @PreAuthorize("hasAuthority('admin:user:integral:list')") + @ApiOperation(value = "积分分页列表") + @RequestMapping(value = "/list", method = RequestMethod.POST) + public CommonResult> getList(@RequestBody @Validated AdminIntegralSearchRequest request, @Validated PageParamRequest pageParamRequest) { + CommonPage restPage = CommonPage.restPage(integralRecordService.findAdminList(request, pageParamRequest)); + return CommonResult.success(restPage); + } + + +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/UserLevelController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/UserLevelController.java new file mode 100644 index 0000000..ca21b93 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/UserLevelController.java @@ -0,0 +1,54 @@ +package com.zbkj.admin.controller; + +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.model.user.UserLevel; +import com.zbkj.service.service.UserLevelService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + + +/** + * 用户等级记录表 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/admin/user/level") +@Api(tags = "会员 -- 等级") +public class UserLevelController { + + @Autowired + private UserLevelService userLevelService; + + /** + * 分页显示用户等级记录表 + * @param pageParamRequest 分页参数 + */ + @PreAuthorize("hasAuthority('admin:user:level:list')") + @ApiOperation(value = "分页列表") + @RequestMapping(value = "/list", method = RequestMethod.GET) + public CommonResult> getList(@Validated PageParamRequest pageParamRequest) { + CommonPage userLevelCommonPage = CommonPage.restPage(userLevelService.getList(pageParamRequest)); + return CommonResult.success(userLevelCommonPage); + } +} + + + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/UserRechargeController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/UserRechargeController.java new file mode 100644 index 0000000..c3a02cf --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/UserRechargeController.java @@ -0,0 +1,69 @@ +package com.zbkj.admin.controller; + +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.request.UserRechargeSearchRequest; +import com.zbkj.common.response.UserRechargeResponse; +import com.zbkj.service.service.UserRechargeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +import java.math.BigDecimal; +import java.util.HashMap; + + +/** + * 用户充值表 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/admin/user/topUpLog") +@Api(tags = "财务 -- 充值") +public class UserRechargeController { + + @Autowired + private UserRechargeService userRechargeService; + + /** + * 分页显示用户充值表 + * @param request 搜索条件 + * @param pageParamRequest 分页参数 + */ + @PreAuthorize("hasAuthority('admin:recharge:list')") + @ApiOperation(value = "分页列表") + @RequestMapping(value = "/list", method = RequestMethod.GET) + public CommonResult> getList(@Validated UserRechargeSearchRequest request, @Validated PageParamRequest pageParamRequest){ + CommonPage userRechargeCommonPage = CommonPage.restPage(userRechargeService.getList(request, pageParamRequest)); + return CommonResult.success(userRechargeCommonPage); + } + + /** + * 充值总金额 + */ + @PreAuthorize("hasAuthority('admin:recharge:balance')") + @ApiOperation(value = "提现总金额") + @RequestMapping(value = "/balance", method = RequestMethod.POST) + public CommonResult> balance(){ + return CommonResult.success(userRechargeService.getBalanceList()); + } +} + + + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/UserTagController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/UserTagController.java new file mode 100644 index 0000000..dbdef5e --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/UserTagController.java @@ -0,0 +1,107 @@ +package com.zbkj.admin.controller; + +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.request.UserTagRequest; +import com.zbkj.service.service.UserTagService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; +import com.zbkj.common.model.user.UserTag; + + +/** + * 用户标签 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/admin/user/tag") +@Api(tags = "会员 -- 标签") //配合swagger使用 +public class UserTagController { + + @Autowired + private UserTagService userTagService; + + /** + * 分页显示用户分标签 + * @param pageParamRequest 分页参数 + */ + @PreAuthorize("hasAuthority('admin:user:tag:list')") + @ApiOperation(value = "分页列表") //配合swagger使用 + @RequestMapping(value = "/list", method = RequestMethod.GET) + public CommonResult> getList(@Validated PageParamRequest pageParamRequest) { + CommonPage userTagCommonPage = CommonPage.restPage(userTagService.getList(pageParamRequest)); + return CommonResult.success(userTagCommonPage); + } + + /** + * 新增用户分标签 + * @param userTagRequest 新增参数 + */ + @PreAuthorize("hasAuthority('admin:user:tag:save')") + @ApiOperation(value = "新增") + @RequestMapping(value = "/save", method = RequestMethod.POST) + public CommonResult save(@RequestBody @Validated UserTagRequest userTagRequest) { + if (userTagService.create(userTagRequest)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 删除用户分标签 + * @param id Integer + */ + @PreAuthorize("hasAuthority('admin:user:tag:delete')") + @ApiOperation(value = "删除") + @RequestMapping(value = "/delete", method = RequestMethod.GET) + public CommonResult delete(@RequestParam(value = "id") Integer id) { + if (userTagService.delete(id)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 修改用户标签 + * @param id integer id + * @param userTagRequest 修改参数 + */ + @PreAuthorize("hasAuthority('admin:user:tag:update')") + @ApiOperation(value = "修改") + @RequestMapping(value = "/update", method = RequestMethod.POST) + public CommonResult update(@RequestParam Integer id, @RequestBody @Validated UserTagRequest userTagRequest) { + if (userTagService.updateTag(id, userTagRequest)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 查询用户标签 + * @param id Integer + */ + @PreAuthorize("hasAuthority('admin:user:tag:info')") + @ApiOperation(value = "详情") + @RequestMapping(value = "/info", method = RequestMethod.GET) + public CommonResult info(@RequestParam(value = "id") Integer id) { + return CommonResult.success(userTagService.getById(id)); + } +} + + + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/ValidateCodeController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/ValidateCodeController.java new file mode 100644 index 0000000..d73149b --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/ValidateCodeController.java @@ -0,0 +1,50 @@ +package com.zbkj.admin.controller; + +import com.zbkj.common.response.CommonResult; +import com.zbkj.admin.service.ValidateCodeService; +import com.zbkj.admin.vo.ValidateCode; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + + +/** + * 验证码服务 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/admin/validate/code") +@Api(tags = "验证码服务") +public class ValidateCodeController { + + @Autowired + private ValidateCodeService validateCodeService; + + /** + * 获取图片验证码 + * @return CommonResult + */ +// @PreAuthorize("hasAuthority('admin:validate:code:get')") + @ApiOperation(value="获取验证码") + @GetMapping(value = "/get") + public CommonResult get() { + ValidateCode validateCode = validateCodeService.get(); + return CommonResult.success(validateCode); + } +} + + + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/WeChatAdminController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/WeChatAdminController.java new file mode 100644 index 0000000..675ddc9 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/WeChatAdminController.java @@ -0,0 +1,48 @@ +package com.zbkj.admin.controller; + +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.response.WeChatJsSdkConfigResponse; +import com.zbkj.service.service.WechatNewService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +/** + * 微信 -- 开放平台 admin + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController("WeChatAdminController") +@RequestMapping("api/admin/wechat") +@Api(tags = "微信 -- 开放平台 admin") +public class WeChatAdminController { + + @Autowired + private WechatNewService wechatNewService; + + /** + * 获取微信公众号js配置 + */ + @PreAuthorize("hasAuthority('admin:wechat:config')") + @ApiOperation(value = "获取微信公众号js配置") + @RequestMapping(value = "/config", method = RequestMethod.GET) + @ApiImplicitParam(name = "url", value = "页面地址url") + public CommonResult configJs(@RequestParam(value = "url") String url) { + return CommonResult.success(wechatNewService.getJsSdkConfig(url)); + } +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/WeChatController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/WeChatController.java new file mode 100644 index 0000000..110b80d --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/WeChatController.java @@ -0,0 +1,76 @@ +package com.zbkj.admin.controller; + +import com.alibaba.fastjson.JSONObject; +import com.zbkj.common.response.CommonResult; +import com.zbkj.service.service.WechatPublicService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +/** + * 微信缓存表 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/admin/wechat/menu") +@Api(tags = "微信开放平台 -- 菜单管理") +public class WeChatController { + + @Autowired + private WechatPublicService wechatPublicService; + + /** + * 获取微信菜单 + */ + @PreAuthorize("hasAuthority('admin:wechat:menu:public:get')") + @ApiOperation(value = "获取自定义菜单") + @RequestMapping(value = "/public/get", method = RequestMethod.GET) + public CommonResult get() { + return CommonResult.success(wechatPublicService.getCustomizeMenus()); + } + + /** + * 创建微信菜单 + * @param data 菜单数据,具体json格式参考微信开放平台 + */ + @PreAuthorize("hasAuthority('admin:wechat:menu:public:create')") + @ApiOperation(value = "保存自定义菜单") + @RequestMapping(value = "/public/create", method = RequestMethod.POST) + public CommonResult create(@RequestBody String data) { + if (wechatPublicService.createMenus(data)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 删除微信菜单 + */ + @PreAuthorize("hasAuthority('admin:wechat:menu:public:delete')") + @ApiOperation(value = "删除自定义菜单") + @RequestMapping(value = "/public/delete", method = RequestMethod.GET) + public CommonResult delete() { + if (wechatPublicService.deleteMenus()) { + return CommonResult.success(); + } + return CommonResult.failed(); + } +} + + + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/WechatCallbackController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/WechatCallbackController.java new file mode 100644 index 0000000..e3f7dfc --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/WechatCallbackController.java @@ -0,0 +1,78 @@ +package com.zbkj.admin.controller; + +import com.zbkj.service.service.WechatCallbackService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.PrintWriter; + + +/** + * 微信小程序回调 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/public/wechat/mini/callback") +@Api(tags = "微信开放平台 -- 小程序回调") +public class WechatCallbackController { + + @Autowired + private WechatCallbackService wechatCallbackService; + + /** + * 小程序回调-自己模拟 + */ + @ApiOperation(value = "小程序回调-自己模拟") + @RequestMapping(value = "/test", method = RequestMethod.POST) + public String test(@RequestBody String request) { + return wechatCallbackService.callback(request); + } + + /** + * 小程序回调 + * 目前只用于视频号直播 + */ + @ApiOperation(value = "小程序回调") + @RequestMapping(value = "/index", method = RequestMethod.POST) + public String webHook(@RequestBody String request) { + return wechatCallbackService.callback(request); + } + + /** + * 微信推送地址验证 + * @param signature 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。 + * @param timestamp 时间戳 + * @param nonce 随机数 + * @param echostr 随机字符串 + */ + @RequestMapping(value = { "/index" }, method = RequestMethod.GET) + private void webHook( + @RequestParam(value = "signature", required = false) String signature, + @RequestParam(value = "timestamp", required = false) String timestamp, + @RequestParam(value = "nonce", required = false) String nonce, + @RequestParam(value = "echostr") String echostr, + HttpServletResponse response) throws IOException { + System.out.println("微信小程序回调测试成功"); + PrintWriter writer = response.getWriter(); + writer.print(echostr); + writer.flush(); + writer.close(); + } +} + + + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/WechatMediaController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/WechatMediaController.java new file mode 100644 index 0000000..2fd9526 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/WechatMediaController.java @@ -0,0 +1,47 @@ +package com.zbkj.admin.controller; + +import com.zbkj.common.response.CommonResult; +import com.zbkj.service.service.WechatMediaService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import java.util.Map; + + +/** + * 微信回复表 前端控制器 + */ +@Slf4j +@RestController +@RequestMapping("api/admin/wechat/media") +@Api(tags = "微信开放平台 -- 素材") +public class WechatMediaController { + + @Autowired + private WechatMediaService wechatMediaService; + + /** + * 上传 + */ + @PreAuthorize("hasAuthority('admin:wechat:media:upload')") + @ApiOperation(value = "上传") + @RequestMapping(value = "/upload", method = RequestMethod.POST) + public CommonResult> upload( + @RequestParam("media") @ApiParam(name = "media", value = "待上传素材图片文件", required = true) MultipartFile file, + @RequestParam("type") @ApiParam(name = "type", value = "媒体文件类型,分别有图片(image)、语音(voice", required = true, allowableValues = "range[image,voice]") String type + ) { + return CommonResult.success(wechatMediaService.upload(file, type)); + } +} + + + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/WechatReplyController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/WechatReplyController.java new file mode 100644 index 0000000..a328a4b --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/WechatReplyController.java @@ -0,0 +1,140 @@ +package com.zbkj.admin.controller; + +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.model.wechat.WechatReply; +import com.zbkj.common.request.WechatReplyRequest; +import com.zbkj.common.request.WechatReplySearchRequest; +import com.zbkj.service.service.WechatReplyService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + + +/** + * 微信关键字回复表 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/admin/wechat/keywords/reply") +@Api(tags = "微信开放平台 -- 微信关键字回复") +public class WechatReplyController { + + @Autowired + private WechatReplyService wechatReplyService; + + /** + * 分页显示微信关键字回复表 + * @param request 搜索条件 + * @param pageParamRequest 分页参数 + */ + @PreAuthorize("hasAuthority('admin:wechat:keywords:reply:list')") + @ApiOperation(value = "分页列表") + @RequestMapping(value = "/list", method = RequestMethod.GET) + public CommonResult> getList(@Validated WechatReplySearchRequest request, @Validated PageParamRequest pageParamRequest) { + CommonPage wechatReplyCommonPage = CommonPage.restPage(wechatReplyService.getList(request, pageParamRequest)); + return CommonResult.success(wechatReplyCommonPage); + } + + /** + * 新增微信关键字回复表 + * @param wechatReplyRequest 新增参数 + */ + @PreAuthorize("hasAuthority('admin:wechat:keywords:reply:save')") + @ApiOperation(value = "新增") + @RequestMapping(value = "/save", method = RequestMethod.POST) + public CommonResult save(@RequestBody @Validated WechatReplyRequest wechatReplyRequest) { + WechatReply wechatReply = new WechatReply(); + BeanUtils.copyProperties(wechatReplyRequest, wechatReply); + if (wechatReplyService.create(wechatReply)) { + return CommonResult.success(); + }else{ + return CommonResult.failed(); + } + } + + /** + * 删除微信关键字回复表 + * @param id Integer + */ + @PreAuthorize("hasAuthority('admin:wechat:keywords:reply:delete')") + @ApiOperation(value = "删除") + @RequestMapping(value = "/delete", method = RequestMethod.GET) + public CommonResult delete(@RequestParam(value = "id") Integer id) { + if (wechatReplyService.removeById(id)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 修改微信关键字回复表 + * @param wechatReplyRequest 修改参数 + */ + @PreAuthorize("hasAuthority('admin:wechat:keywords:reply:update')") + @ApiOperation(value = "修改") + @RequestMapping(value = "/update", method = RequestMethod.POST) + public CommonResult update(@RequestBody @Validated WechatReplyRequest wechatReplyRequest) { + if (wechatReplyService.updateReply(wechatReplyRequest)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 修改状态 + * @param id integer id + * @param status boolean 状态 + */ + @PreAuthorize("hasAuthority('admin:wechat:keywords:reply:status')") + @ApiOperation(value = "状态") + @RequestMapping(value = "/status", method = RequestMethod.POST) + public CommonResult update(@RequestParam(value = "id") Integer id, @RequestParam(value = "status") Boolean status) { + if (wechatReplyService.updateStatus(id, status)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 查询微信关键字回复表信息 + * @param id Integer + */ + @PreAuthorize("hasAuthority('admin:wechat:keywords:reply:info')") + @ApiOperation(value = "详情") + @RequestMapping(value = "/info", method = RequestMethod.GET) + public CommonResult info(@RequestParam(value = "id") Integer id) { + WechatReply wechatReply = wechatReplyService.getInfo(id); + return CommonResult.success(wechatReply); + } + + /** + * 根据关键字查询数据 + * @param keywords String 关键字 + */ + @PreAuthorize("hasAuthority('admin:wechat:keywords:reply:info:keywords')") + @ApiOperation(value = "根据关键字查询数据") + @RequestMapping(value = "/info/keywords", method = RequestMethod.GET) + public CommonResult info(@RequestParam(value = "keywords") String keywords) { + WechatReply wechatReply = wechatReplyService.getVoByKeywords(keywords); + return CommonResult.success(wechatReply); + } +} + + + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/YlyPrintController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/YlyPrintController.java new file mode 100644 index 0000000..0b8766d --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/YlyPrintController.java @@ -0,0 +1,41 @@ +package com.zbkj.admin.controller; + +import com.zbkj.common.response.CommonResult; +import com.zbkj.service.service.YlyPrintService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +/** + * 易联云打印订单 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/admin/yly") +@Api(tags = "易联云 打印订单小票") //配合swagger使用 +public class YlyPrintController { + + + @Autowired + private YlyPrintService ylyPrintService; + + @PreAuthorize("hasAuthority('admin:yly:print')") + @ApiOperation(value = "打印小票") + @RequestMapping(value = "/print/{ordid}", method = RequestMethod.GET) + public CommonResult updateStatus(@PathVariable String ordid) { + ylyPrintService.YlyPrint(ordid,false); + return CommonResult.success(); + } +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/filter/JwtAuthenticationTokenFilter.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/filter/JwtAuthenticationTokenFilter.java new file mode 100644 index 0000000..d01d5e2 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/filter/JwtAuthenticationTokenFilter.java @@ -0,0 +1,47 @@ +package com.zbkj.admin.filter; + +import cn.hutool.core.util.ObjectUtil; +import com.zbkj.common.vo.LoginUserVo; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.web.authentication.WebAuthenticationDetailsSource; +import org.springframework.web.filter.OncePerRequestFilter; + +import javax.annotation.Resource; +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +/** + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + * token过滤器 验证token有效性 + */ +public class JwtAuthenticationTokenFilter extends OncePerRequestFilter { + + @Resource + private TokenComponent tokenComponent; + + @Override + protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { + LoginUserVo loginUser = tokenComponent.getLoginUser(request); +// if (ObjectUtil.isNotNull(loginUser) && StringUtils.isNull(SecurityUtils.getAuthentication())) { + if (ObjectUtil.isNotNull(loginUser)) { + tokenComponent.verifyToken(loginUser); + UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(loginUser, null, loginUser.getAuthorities()); + authenticationToken.setDetails(new WebAuthenticationDetailsSource().buildDetails(request)); + // 将authentication信息放入到上下文对象中 + SecurityContextHolder.getContext().setAuthentication(authenticationToken); + } + filterChain.doFilter(request, response); + } +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/filter/ResponseFilter.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/filter/ResponseFilter.java new file mode 100644 index 0000000..ec55522 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/filter/ResponseFilter.java @@ -0,0 +1,56 @@ +package com.zbkj.admin.filter; + + +import com.zbkj.common.utils.RequestUtil; + +import javax.servlet.*; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.nio.charset.StandardCharsets; + + +/** + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + * 返回值输出过滤器 + */ +//@Component +public class ResponseFilter implements Filter { + + @Override + public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) + throws IOException, ServletException { + ResponseWrapper wrapperResponse = new ResponseWrapper((HttpServletResponse) response);//转换成代理类 + // 这里只拦截返回,直接让请求过去,如果在请求前有处理,可以在这里处理 + filterChain.doFilter(request, wrapperResponse); + byte[] content = wrapperResponse.getContent();//获取返回值 + //判断是否有值 + if (content.length > 0) { + String str = new String(content, StandardCharsets.UTF_8); + + try { + HttpServletRequest req = (HttpServletRequest) request; + str = new ResponseRouter().filter(str, RequestUtil.getUri(req)); + } catch (Exception e) { + e.printStackTrace(); + } + //把返回值输出到客户端 + ServletOutputStream outputStream = response.getOutputStream(); + if (str.length() > 0) { + outputStream.write(str.getBytes()); + outputStream.flush(); + outputStream.close(); + //最后添加这一句,输出到客户端 + response.flushBuffer(); + } + } + } +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/filter/ResponseRouter.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/filter/ResponseRouter.java new file mode 100644 index 0000000..0438a68 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/filter/ResponseRouter.java @@ -0,0 +1,46 @@ +package com.zbkj.admin.filter; + +import com.zbkj.common.constants.Constants; +import com.zbkj.common.utils.SpringUtil; +import com.zbkj.service.service.SystemAttachmentService; + +/** + * response路径处理 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class ResponseRouter { + + public String filter(String data, String path) { + boolean result = un().contains(path); + if (result) { + return data; + } + +// if (!path.contains("api/admin/") && !path.contains("api/front/")) { +// return data; +// } + + //根据需要处理返回值 + if (data.contains(Constants.UPLOAD_TYPE_IMAGE+"/") && !data.contains("data:image/png;base64")) { + data = SpringUtil.getBean(SystemAttachmentService.class).prefixImage(data); + } + +// if (data.contains("file/")) { 附件也走crmebimage 目录下 +// data = SpringUtil.getBean(SystemAttachmentService.class).prefixFile(data); +// } + + return data; + } + + public static String un() { + return ""; + } +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/filter/ResponseWrapper.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/filter/ResponseWrapper.java new file mode 100644 index 0000000..358c027 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/filter/ResponseWrapper.java @@ -0,0 +1,77 @@ +package com.zbkj.admin.filter; + + +import javax.servlet.ServletOutputStream; +import javax.servlet.WriteListener; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpServletResponseWrapper; +import java.io.ByteArrayOutputStream; +import java.io.IOException; + +/** + * Response包装类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class ResponseWrapper extends HttpServletResponseWrapper { + + private ByteArrayOutputStream buffer; + + private ServletOutputStream out; + + public ResponseWrapper(HttpServletResponse httpServletResponse) { + super(httpServletResponse); + buffer = new ByteArrayOutputStream(); + out = new WrapperOutputStream(buffer); + } + + @Override + public ServletOutputStream getOutputStream() { + return out; + } + + @Override + public void flushBuffer() + throws IOException { + if (out != null) { + out.flush(); + } + } + + public byte[] getContent() + throws IOException { + flushBuffer(); + return buffer.toByteArray(); + } + + static class WrapperOutputStream extends ServletOutputStream { + private ByteArrayOutputStream bos; + + public WrapperOutputStream(ByteArrayOutputStream bos) { + this.bos = bos; + } + + @Override + public void write(int b) { + bos.write(b); + } + + @Override + public boolean isReady() { + return false; + + } + + @Override + public void setWriteListener(WriteListener arg0) { + + } + } +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/filter/TokenComponent.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/filter/TokenComponent.java new file mode 100644 index 0000000..7dfb020 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/filter/TokenComponent.java @@ -0,0 +1,137 @@ +package com.zbkj.admin.filter; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.utils.RedisUtil; +import com.zbkj.common.vo.LoginUserVo; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.UUID; +import java.util.concurrent.TimeUnit; + +/** + * token验证处理 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Component +public class TokenComponent { + + @Resource + private RedisUtil redisUtil; + + private static final Long MILLIS_MINUTE_TEN = 20 * 60 * 1000L; + + private static final Long MILLIS_MINUTE = 60 * 1000L; + + // 令牌有效期(默认30分钟) todo 调试期改为5小时 +// private static final int expireTime = 30; + private static final int expireTime = 5 * 60; + + // Redis 存储的key + private static final String TOKEN_REDIS = "TOKEN:ADMIN:"; + + /** + * 获取用户身份信息 + * + * @return 用户信息 + */ + public LoginUserVo getLoginUser(HttpServletRequest request) { + // 获取请求携带的令牌 + String token = getToken(request); + if (StrUtil.isNotEmpty(token)) { + String userKey = getTokenKey(token); + return redisUtil.get(userKey); + } + return null; + } + + /** + * 设置用户身份信息 + */ + public void setLoginUser(LoginUserVo loginUser) { + if (ObjectUtil.isNotNull(loginUser) && StrUtil.isNotEmpty(loginUser.getToken())) { + refreshToken(loginUser); + } + } + + /** + * 删除用户身份信息 + */ + public void delLoginUser(String token) { + if (StrUtil.isNotEmpty(token)) { + String userKey = getTokenKey(token); + redisUtil.delete(userKey); + } + } + + /** + * 创建令牌 + * + * @param loginUser 用户信息 + * @return 令牌 + */ + public String createToken(LoginUserVo loginUser) { + String token = UUID.randomUUID().toString().replace("-", ""); + loginUser.setToken(token); +// setUserAgent(loginUser); + refreshToken(loginUser); + return token; + } + + /** + * 验证令牌有效期,相差不足20分钟,自动刷新缓存 + * + * @param loginUser LoginUserVo + */ + public void verifyToken(LoginUserVo loginUser) { + long expireTime = loginUser.getExpireTime(); + long currentTime = System.currentTimeMillis(); + if (expireTime - currentTime <= MILLIS_MINUTE_TEN) + { + refreshToken(loginUser); + } + } + + /** + * 刷新令牌有效期 + * + * @param loginUser 登录信息 + */ + public void refreshToken(LoginUserVo loginUser) { + loginUser.setLoginTime(System.currentTimeMillis()); + loginUser.setExpireTime(loginUser.getLoginTime() + expireTime * MILLIS_MINUTE); + // 根据uuid将loginUser缓存 + String userKey = getTokenKey(loginUser.getToken()); + redisUtil.set(userKey, loginUser, (long) expireTime, TimeUnit.MINUTES); + } + + /** + * 获取请求token + * + * @param request HttpServletRequest + * @return token + */ + private String getToken(HttpServletRequest request) { + String token = request.getHeader(Constants.HEADER_AUTHORIZATION_KEY); + if (StrUtil.isNotEmpty(token) && token.startsWith(TOKEN_REDIS)) { + token = token.replace(TOKEN_REDIS, ""); + } + return token; + } + + private String getTokenKey(String uuid) { + return TOKEN_REDIS + uuid; + } + +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/manager/AuthenticationEntryPointImpl.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/manager/AuthenticationEntryPointImpl.java new file mode 100644 index 0000000..0e87d1d --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/manager/AuthenticationEntryPointImpl.java @@ -0,0 +1,34 @@ +package com.zbkj.admin.manager; + +import com.alibaba.fastjson.JSONObject; +import com.zbkj.common.response.CommonResult; +import org.springframework.security.core.AuthenticationException; +import org.springframework.security.web.AuthenticationEntryPoint; +import org.springframework.stereotype.Component; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.Serializable; + +/** + * 认证失败处理类 返回未授权 + */ +@Component +public class AuthenticationEntryPointImpl implements AuthenticationEntryPoint, Serializable { + + private static final long serialVersionUID = -8970718410437077606L; + + @Override + public void commence(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, AuthenticationException e) { +// String msg = StrUtil.format("请求访问:{},认证失败,无法访问系统资源", httpServletRequest.getRequestURI()); + httpServletResponse.setStatus(200); + httpServletResponse.setContentType("application/json"); + httpServletResponse.setCharacterEncoding("utf-8"); + try { + httpServletResponse.getWriter().print(JSONObject.toJSONString(CommonResult.unauthorized())); + } catch (IOException ioException) { + ioException.printStackTrace(); + } + } +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/manager/CusAuthenticationManager.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/manager/CusAuthenticationManager.java new file mode 100644 index 0000000..342fe50 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/manager/CusAuthenticationManager.java @@ -0,0 +1,35 @@ +package com.zbkj.admin.manager; + +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.authentication.ProviderNotFoundException; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.AuthenticationException; +import org.springframework.stereotype.Component; + +import java.util.Objects; + +/** + * 自定义认证管理器 + * @Author 指缝de阳光 + * @Date 2021/11/17 15:23 + * @Version 1.0 + */ +@Component +public class CusAuthenticationManager implements AuthenticationManager { + +// private final CustomAuthenticationProvider customAuthenticationProvider = new CustomAuthenticationProvider(); + private final CustomAuthenticationProvider customAuthenticationProvider; + + public CusAuthenticationManager(CustomAuthenticationProvider customAuthenticationProvider) { + this.customAuthenticationProvider = customAuthenticationProvider; + } + + @Override + public Authentication authenticate(Authentication authentication) throws AuthenticationException { + Authentication result = customAuthenticationProvider.authenticate(authentication); + if (Objects.nonNull(result)) { + return result; + } + throw new ProviderNotFoundException("Authentication failed!"); + } +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/manager/CustomAccessDeniedHandler.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/manager/CustomAccessDeniedHandler.java new file mode 100644 index 0000000..162985e --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/manager/CustomAccessDeniedHandler.java @@ -0,0 +1,38 @@ +package com.zbkj.admin.manager; + +import com.alibaba.fastjson.JSONObject; +import com.zbkj.common.response.CommonResult; +import org.springframework.security.access.AccessDeniedException; +import org.springframework.security.web.access.AccessDeniedHandler; +import org.springframework.stereotype.Component; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.Serializable; + +/** + * 自定义权限不足处理程序 + * + * @Author 指缝de阳光 + * @Date 2021/11/19 14:45 + * @Version 1.0 + */ +@Component +public class CustomAccessDeniedHandler implements AccessDeniedHandler, Serializable { + + private static final long serialVersionUID = -8970718410437077606L; + + @Override + public void handle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, AccessDeniedException e) throws IOException, ServletException { + httpServletResponse.setStatus(200); + httpServletResponse.setContentType("application/json"); + httpServletResponse.setCharacterEncoding("utf-8"); + try { + httpServletResponse.getWriter().print(JSONObject.toJSONString(CommonResult.forbidden())); + } catch (IOException ioException) { + ioException.printStackTrace(); + } + } +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/manager/CustomAuthenticationProvider.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/manager/CustomAuthenticationProvider.java new file mode 100644 index 0000000..0cbde67 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/manager/CustomAuthenticationProvider.java @@ -0,0 +1,52 @@ +package com.zbkj.admin.manager; + +import cn.hutool.core.util.ObjectUtil; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.utils.CrmebUtil; +import com.zbkj.common.vo.LoginUserVo; +import com.zbkj.service.service.impl.UserDetailServiceImpl; +import org.springframework.security.authentication.AuthenticationProvider; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.AuthenticationException; +import org.springframework.stereotype.Component; + +/** + * 自定义验证(admin登录) + */ +@Component +public class CustomAuthenticationProvider implements AuthenticationProvider { + + private UserDetailServiceImpl userDetailsService; + + public CustomAuthenticationProvider(UserDetailServiceImpl userDetailsService) { + this.userDetailsService = userDetailsService; + } + +// private final UserDetailServiceImpl userDetailsService = new UserDetailServiceImpl(); + + @Override + public Authentication authenticate(Authentication authentication) throws AuthenticationException { + String name = authentication.getPrincipal().toString(); + String password = authentication.getCredentials().toString(); + + //以下自定义方法,判断是否登录成功 + LoginUserVo userDetails = (LoginUserVo) userDetailsService.loadUserByUsername(name); + if (ObjectUtil.isNull(userDetails)) { + throw new CrmebException("用户名不存在"); + } + // base64加密获取真正密码 + String encryptPassword = CrmebUtil.encryptPassword(password, name); + if (!userDetails.getUser().getPwd().equals(encryptPassword)) { + throw new CrmebException("账号或者密码不正确"); + } + return new UsernamePasswordAuthenticationToken(userDetails, password, userDetails.getAuthorities()); + } + + @Override + public boolean supports(Class authentication) { + //确保authentication能转成该类 + return authentication.equals(UsernamePasswordAuthenticationToken.class); + } + +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/pub/GetJSConfig.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/pub/GetJSConfig.java new file mode 100644 index 0000000..d6a3cb9 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/pub/GetJSConfig.java @@ -0,0 +1,34 @@ +package com.zbkj.admin.pub; + +import com.zbkj.common.constants.Constants; +import com.zbkj.service.service.SystemConfigService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +/** + * @program: crmeb + * @author: 大粽子 + * @create: 2021-09-23 09:18 + **/ +@Slf4j +@RestController +@RequestMapping("api/public/jsconfig") +@Api(tags = "公共JS配置") +public class GetJSConfig { + + @Autowired + private SystemConfigService systemConfigService; + + @PreAuthorize("hasAuthority('public:jsconfig:getcrmebchatconfig')") + @ApiOperation(value = "CRMEB-chat客服统计") + @RequestMapping(value = "/getcrmebchatconfig", method = RequestMethod.GET) + public String set(){ + return systemConfigService.getValueByKey(Constants.JS_CONFIG_CRMEB_CHAT_TONGJI); + } +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/pub/ImageMergeController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/pub/ImageMergeController.java new file mode 100644 index 0000000..8eb02b1 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/pub/ImageMergeController.java @@ -0,0 +1,43 @@ +package com.zbkj.admin.pub; + +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.utils.ImageMergeUtil; +import com.zbkj.common.vo.ImageMergeUtilVo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 图片操作 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/public/qrcode") +@Api(tags = "图片操作") +public class ImageMergeController { + + @PreAuthorize("hasAuthority('public:qrcode:merge:list')") + @ApiOperation(value = "合并图片返回文件") + @RequestMapping(value = "/mergeList", method = RequestMethod.POST) + public CommonResult> mergeList(@RequestBody @Validated List list){ + Map map = new HashMap<>(); + map.put("base64Code", ImageMergeUtil.drawWordFile(list)); //需要云服务域名,如果需要存入数据库参照上传图片服务 + return CommonResult.success(map); + } +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/pub/WeChatMessageController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/pub/WeChatMessageController.java new file mode 100644 index 0000000..620c76c --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/pub/WeChatMessageController.java @@ -0,0 +1,75 @@ +package com.zbkj.admin.pub; + +import com.zbkj.admin.service.WeChatMessageService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.PrintWriter; + + +/** + * 微信缓存表 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/public/wechat/message") +@Api(tags = "微信开放平台 -- 消息") +public class WeChatMessageController { + + @Autowired + private WeChatMessageService weChatMessageService; + + /** + * 微信关键字回复 + * @author Mr.Zhang + * @since 2020-04-22 + */ + @ApiOperation(value = "接受微信推送过来的消息") + @RequestMapping(value = "/webHook", method = RequestMethod.POST) + public String webHook(HttpServletRequest request){ + return weChatMessageService.init(request); + } + + /** + * 微信推送地址验证 + * @param signature + * @param timestamp + * @param nonce + * @param echostr + * @param response + * @throws IOException + */ + @RequestMapping(value = { "/webHook" }, method = RequestMethod.GET) + private void webHook( + @RequestParam(value = "signature", required = false) String signature, + @RequestParam(value = "timestamp", required = false) String timestamp, + @RequestParam(value = "nonce", required = false) String nonce, + @RequestParam(value = "echostr") String echostr, + HttpServletResponse response) throws IOException { + PrintWriter writer = response.getWriter(); + writer.print(echostr); + writer.flush(); + writer.close(); + } +} + + + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/pub/WeChatPushController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/pub/WeChatPushController.java new file mode 100644 index 0000000..96cb651 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/pub/WeChatPushController.java @@ -0,0 +1,153 @@ +package com.zbkj.admin.pub; + +import com.alibaba.fastjson.JSONObject; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.utils.RestTemplateUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; + + +/** + * 后台管理员表 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/public/wechat") +@Api(tags = "企业微信消息推送") +public class WeChatPushController { + + private static String url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key="; + + @Resource + private RestTemplateUtil restTemplateUtil; + + + /** + * 新增后台管理员表 + * @param message string message + * @author Mr.Zhang + * @since 2020-04-13 + */ + @ApiOperation(value = "gitlab钩子") + @RequestMapping(value = "/gitlab", method = RequestMethod.POST) + @ApiImplicitParams({ + @ApiImplicitParam(name="message", value="推送消息内容"), + @ApiImplicitParam(name="token", value="企业微信群token"), + }) + public CommonResult gitlab(@RequestBody String message, + @RequestParam(name = "token", required = true) String token){ + + Map map = new HashMap<>(); + map.put("msgtype", "text"); + + Map text = new HashMap<>(); + + //需要@的人 + ArrayList people = new ArrayList<>(); + people.add("@all"); + text.put("mentioned_list", people); + + //gitlab 动作标签 + JSONObject jsonObject = JSONObject.parseObject(message); + String action = jsonObject.getString("object_kind"); + String content; + switch(action){ + case "push": + content = jsonObject.getJSONArray("commits").getJSONObject(0).getJSONObject("author").getString("name") + " " + + action + " " + + jsonObject.getString("ref").replace("refs/heads/", "") + + "\n 备注:\n" + + jsonObject.getJSONArray("commits").getJSONObject(0).getString("message"); + break; + case "tag_push": + content = jsonObject.getString("user_name") + " " + + action + " " + + jsonObject.getString("ref").replace("refs/heads/", "") + + "\n 备注:\n" + + jsonObject.getJSONArray("commits").getJSONObject(0).getString("message"); + break; + case "note": + String author = "未知用户"; + if(jsonObject.containsKey("commit")){ + author = jsonObject.getJSONObject("commit").getJSONObject("author").getString("name"); + } + + if(jsonObject.containsKey("last_commit")){ + author = jsonObject.getJSONObject("last_commit").getJSONObject("author").getString("name"); + } + + content = author + + " 提交代码到 " + + jsonObject.getJSONObject("project").getString("default_branch") + + "\n 备注:\n" + + jsonObject.getJSONObject("object_attributes").getString("note"); + break; + case "merge_request": + content = jsonObject.getJSONObject("object_attributes").getJSONObject("assignee").getString("name") + " " + + "合并代码, 从 " + + jsonObject.getJSONObject("object_attributes").getString("source_branch") + " ---> " + + jsonObject.getJSONObject("object_attributes").getString("target_branch") + + "\n 备注:\n" + + jsonObject.getJSONObject("object_attributes").getJSONObject("last_commit").getString("message"); + break; + default: + content = "gitlab 项目有更新"; + } + + text.put("content", content); + map.put("text", text); + String result = restTemplateUtil.postMapData(url + token, map); + return CommonResult.success(JSONObject.parseObject(result)); + } + + /** + * 新增后台管理员表 + * @param message string message + * @author Mr.Zhang + * @since 2020-04-13 + */ + @ApiOperation(value = "消息推送") + @RequestMapping(value = "/push", method = RequestMethod.GET) + @ApiImplicitParams({ + @ApiImplicitParam(name="message", value="推送消息内容"), + @ApiImplicitParam(name="token", value="企业微信群token"), + }) + public CommonResult push(@RequestParam(name = "message") String message, + @RequestParam(name = "token") String token){ + + Map map = new HashMap<>(); + map.put("msgtype", "text"); + + Map text = new HashMap<>(); + + //需要@的人 + ArrayList people = new ArrayList<>(); + people.add("@all"); + text.put("mentioned_list", people); + text.put("content", message); + map.put("text", text); + String result = restTemplateUtil.postMapData(url + token, map); + return CommonResult.success(JSONObject.parseObject(result)); + } +} + + + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/service/AdminLoginService.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/service/AdminLoginService.java new file mode 100644 index 0000000..c01ce38 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/service/AdminLoginService.java @@ -0,0 +1,51 @@ +package com.zbkj.admin.service; + +import com.zbkj.common.request.SystemAdminLoginRequest; +import com.zbkj.common.response.MenusResponse; +import com.zbkj.common.response.SystemAdminResponse; +import com.zbkj.common.response.SystemLoginResponse; + +import java.util.List; +import java.util.Map; + +/** + * 管理端登录服务 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface AdminLoginService { + + /** + * PC登录 + */ + SystemLoginResponse login(SystemAdminLoginRequest request, String ip); + + /** + * 用户登出 + */ + Boolean logout(); + + /** + * 获取登录页图片 + * @return Map + */ + Map getLoginPic(); + + /** + * 获取管理员可访问目录 + * @return List + */ + List getMenus(); + + /** + * 根据Token获取对应用户信息 + */ + SystemAdminResponse getInfoByToken(); +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/service/ValidateCodeService.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/service/ValidateCodeService.java new file mode 100644 index 0000000..f50df75 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/service/ValidateCodeService.java @@ -0,0 +1,32 @@ +package com.zbkj.admin.service; + + +import com.zbkj.admin.vo.ValidateCode; + +import java.util.HashMap; + +/** + * ValidateCodeService 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface ValidateCodeService { + + /** + * 获取图片验证码 + * @return CommonResult + */ + ValidateCode get(); + + /** + * 验证验证码 + */ + Boolean check(String key, String code); +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/service/WeChatMessageService.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/service/WeChatMessageService.java new file mode 100644 index 0000000..55fae15 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/service/WeChatMessageService.java @@ -0,0 +1,19 @@ +package com.zbkj.admin.service; + +import javax.servlet.http.HttpServletRequest; + +/** + * 用户中心 服务类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface WeChatMessageService{ + String init(HttpServletRequest request); +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/service/impl/AdminLoginServiceImpl.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/service/impl/AdminLoginServiceImpl.java new file mode 100644 index 0000000..58ba227 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/service/impl/AdminLoginServiceImpl.java @@ -0,0 +1,187 @@ +package com.zbkj.admin.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import com.zbkj.admin.filter.TokenComponent; +import com.zbkj.admin.service.AdminLoginService; +import com.zbkj.admin.service.ValidateCodeService; +import com.zbkj.common.constants.SysConfigConstants; +import com.zbkj.common.constants.SysGroupDataConstants; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.model.system.SystemAdmin; +import com.zbkj.common.model.system.SystemMenu; +import com.zbkj.common.model.system.SystemPermissions; +import com.zbkj.common.request.SystemAdminLoginRequest; +import com.zbkj.common.response.MenusResponse; +import com.zbkj.common.response.SystemAdminResponse; +import com.zbkj.common.response.SystemGroupDataAdminLoginBannerResponse; +import com.zbkj.common.response.SystemLoginResponse; +import com.zbkj.common.utils.SecurityUtil; +import com.zbkj.common.vo.LoginUserVo; +import com.zbkj.common.vo.MenuTree; +import com.zbkj.service.service.SystemAdminService; +import com.zbkj.service.service.SystemConfigService; +import com.zbkj.service.service.SystemGroupDataService; +import com.zbkj.service.service.SystemMenuService; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.authentication.BadCredentialsException; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.AuthenticationException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +/** + * 管理端登录服务实现类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class AdminLoginServiceImpl implements AdminLoginService { + + @Resource + private TokenComponent tokenComponent; + + @Resource + private AuthenticationManager authenticationManager; + + @Autowired + private SystemAdminService systemAdminService; + + @Autowired + private ValidateCodeService validateCodeService; + + @Autowired + private SystemConfigService systemConfigService; + + @Autowired + private SystemGroupDataService systemGroupDataService; + + @Autowired + private SystemMenuService systemMenuService; + + /** + * PC登录 + */ + @Override + public SystemLoginResponse login(SystemAdminLoginRequest systemAdminLoginRequest, String ip) { + // 判断验证码 + boolean codeCheckResult = validateCodeService.check(systemAdminLoginRequest.getKey(), systemAdminLoginRequest.getCode()); + if (!codeCheckResult) throw new CrmebException("验证码不正确"); + // 用户验证 + Authentication authentication = null; + // 该方法会去调用UserDetailsServiceImpl.loadUserByUsername + try { + authentication = authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(systemAdminLoginRequest.getAccount(), systemAdminLoginRequest.getPwd())); + } catch (AuthenticationException e) { + if (e instanceof BadCredentialsException) { + throw new CrmebException("用户不存在或密码错误"); + } + throw new CrmebException(e.getMessage()); + } + LoginUserVo loginUser = (LoginUserVo) authentication.getPrincipal(); + SystemAdmin systemAdmin = loginUser.getUser(); + + String token = tokenComponent.createToken(loginUser); + SystemLoginResponse systemAdminResponse = new SystemLoginResponse(); + systemAdminResponse.setToken(token); + BeanUtils.copyProperties(systemAdmin, systemAdminResponse); + + //更新最后登录信息 + systemAdmin.setLoginCount(systemAdmin.getLoginCount() + 1); + systemAdmin.setLastIp(ip); + systemAdminService.updateById(systemAdmin); + return systemAdminResponse; + } + + /** + * 用户登出 + */ + @Override + public Boolean logout() { + LoginUserVo loginUserVo = SecurityUtil.getLoginUserVo(); + if (ObjectUtil.isNotNull(loginUserVo)) { + // 删除用户缓存记录 + tokenComponent.delLoginUser(loginUserVo.getToken()); + } + return true; + } + + /** + * 获取登录页图片 + * @return Map + */ + @Override + public Map getLoginPic() { + Map map = new HashMap<>(); + //背景图 + map.put("backgroundImage", systemConfigService.getValueByKey(SysConfigConstants.CONFIG_KEY_ADMIN_LOGIN_BACKGROUND_IMAGE)); + //logo + map.put("logo", systemConfigService.getValueByKey(SysConfigConstants.CONFIG_KEY_ADMIN_LOGIN_LOGO_LEFT_TOP)); + map.put("loginLogo", systemConfigService.getValueByKey(SysConfigConstants.CONFIG_KEY_ADMIN_LOGIN_LOGO_LOGIN)); + //轮播图 + List bannerList = systemGroupDataService.getListByGid(SysGroupDataConstants.GROUP_DATA_ID_ADMIN_LOGIN_BANNER_IMAGE_LIST, SystemGroupDataAdminLoginBannerResponse.class); + map.put("banner", bannerList); + return map; + } + + /** + * 获取管理员可访问目录 + * @return List + */ + @Override + public List getMenus() { + LoginUserVo loginUserVo = SecurityUtil.getLoginUserVo(); + List roleList = Stream.of(loginUserVo.getUser().getRoles().split(",")).collect(Collectors.toList()); + List menuList; + if (roleList.contains("1")) {// 超管 + menuList = systemMenuService.findAllCatalogue(); + } else { + menuList = systemMenuService.getMenusByUserId(loginUserVo.getUser().getId()); + } + // 组装前端对象 + List responseList = menuList.stream().map(e -> { + MenusResponse response = new MenusResponse(); + BeanUtils.copyProperties(e, response); + return response; + }).collect(Collectors.toList()); + + MenuTree menuTree = new MenuTree(responseList); + return menuTree.buildTree(); + } + + /** + * 根据Token获取对应用户信息 + */ + @Override + public SystemAdminResponse getInfoByToken() { + LoginUserVo loginUserVo = SecurityUtil.getLoginUserVo(); + SystemAdmin systemAdmin = loginUserVo.getUser(); + SystemAdminResponse systemAdminResponse = new SystemAdminResponse(); + BeanUtils.copyProperties(systemAdmin, systemAdminResponse); + List roleList = Stream.of(systemAdmin.getRoles().split(",")).collect(Collectors.toList()); + List permList = CollUtil.newArrayList(); + if (roleList.contains("1")) { + permList.add("*:*:*"); + } else { + permList = loginUserVo.getPermissions().stream().map(SystemPermissions::getPath).collect(Collectors.toList()); + } + systemAdminResponse.setPermissionsList(permList); + return systemAdminResponse; + } +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/service/impl/ValidateCodeServiceImpl.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/service/impl/ValidateCodeServiceImpl.java new file mode 100644 index 0000000..156f915 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/service/impl/ValidateCodeServiceImpl.java @@ -0,0 +1,75 @@ +package com.zbkj.admin.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.utils.CrmebUtil; +import com.zbkj.common.utils.RedisUtil; +import com.zbkj.common.utils.ValidateCodeUtil; +import com.zbkj.admin.service.ValidateCodeService; +import com.zbkj.admin.vo.ValidateCode; +import org.apache.commons.codec.digest.DigestUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.concurrent.TimeUnit; + +/** + * ValidateCodeService 实现类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class ValidateCodeServiceImpl implements ValidateCodeService { + + @Resource + private RedisUtil redisAdminUtil; + + /** + * 获取验证码信息 + */ + @Override + public ValidateCode get() { + ValidateCodeUtil.Validate randomCode = ValidateCodeUtil.getRandomCode();//直接调用静态方法,返回验证码对象 + if (ObjectUtil.isNull(randomCode)) { + return null; + } + + String value = randomCode.getValue().toLowerCase(); + String md5Key = DigestUtils.md5Hex(value); + String redisKey = getRedisKey(md5Key); + redisAdminUtil.set(redisKey, value, 5L, TimeUnit.MINUTES); //5分钟过期 + String base64Str = randomCode.getBase64Str(); + return new ValidateCode(md5Key, CrmebUtil.getBase64Image(base64Str)); + } + + /** + * 获取redis key + * @param md5Key value的md5加密值 + */ + public String getRedisKey(String md5Key) { + return Constants.VALIDATE_REDIS_KEY_PREFIX + md5Key; + } + + /** + * 验证 + */ + public Boolean check(String key, String code) { + if (!redisAdminUtil.exists(getRedisKey(key))) { + throw new CrmebException("验证码错误"); + } + Object redisValue = redisAdminUtil.get(getRedisKey(key)); + if (ObjectUtil.isNull(redisValue)) { + return false; + } + return redisValue.equals(code.toLowerCase()); + } +} + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/service/impl/WeChatMessageServiceImpl.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/service/impl/WeChatMessageServiceImpl.java new file mode 100644 index 0000000..d3cb9df --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/service/impl/WeChatMessageServiceImpl.java @@ -0,0 +1,223 @@ +package com.zbkj.admin.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.zbkj.common.constants.WeChatConstants; +import com.zbkj.common.utils.DateUtil; +import com.zbkj.common.utils.RedisUtil; +import com.zbkj.common.utils.XmlUtil; +import com.zbkj.common.model.article.Article; +import com.zbkj.admin.service.WeChatMessageService; +import com.zbkj.admin.vo.*; +import com.zbkj.common.model.wechat.WechatReply; +import com.zbkj.service.service.ArticleService; +import com.zbkj.service.service.SystemAttachmentService; +import com.zbkj.service.service.UserTokenService; +import com.zbkj.service.service.WechatReplyService; +import lombok.Data; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.servlet.http.HttpServletRequest; +import java.util.Map; + + +/** + * 用户中心 服务实现类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@Service +public class WeChatMessageServiceImpl implements WeChatMessageService { + private static final Logger logger = LoggerFactory.getLogger(WeChatMessageServiceImpl.class); + + @Autowired + private RedisUtil redisUtil; + + @Autowired + private WechatReplyService wechatReplyService; + + @Autowired + private ArticleService articleService; + + @Autowired + private UserTokenService userTokenService; + + @Autowired + private SystemAttachmentService systemAttachmentService; + + //接收人,被动回复消息的时候为发送人 + private String toUserName; + + //发送人,被动回复消息的时候为接收人 + private String fromUserName; + + //接收消息类型 + private String msgType; + + //接收消息内容 + private String content; + + //消息事件 + private String event; + + //事件key + private String eventKey; + + //关键字回复对象 + private WechatReply wechatReply; + + + /** + * 处理微信推送过来的消息,并且组装成需要发送的数据,二次处理 + * @param request HttpServletRequest request请求 + * @author Mr.Zhang + * @since 2020-06-03 + * @return String + */ + @Override + public String init(HttpServletRequest request) { + Map map = XmlUtil.xmlToMap(request); + + setToUserName(map.get("ToUserName")); + setFromUserName(map.get("FromUserName")); + setMsgType(map.getOrDefault("MsgType", "text")); //如果没有类型,则按默认处理 + setContent(map.getOrDefault("Content", "default")); //如果没有内容,则按默认处理 + setEvent(map.getOrDefault("Event", "")); + setEventKey(map.getOrDefault("EventKey", "")); + + + + //处理内容 + getReplyByContent(); + + if(null == getWechatReply()){ + return ""; + } + + //设置需要回复的内容 + String response = setXml(); + + logger.info("微信被动回复消息" + response); + return response; + } + + /** + * 匹配关键字并且组装xml数据 + * @author Mr.Zhang + * @since 2020-06-03 + * @return String + */ + private String setXml() { + if(StringUtils.isBlank(getWechatReply().getType())){ + return ""; + } + String type = getWechatReply().getType().toLowerCase(); + MessageReplyDataVo messageReplyDataVo = JSONObject.toJavaObject(JSONObject.parseObject(wechatReply.getData()), MessageReplyDataVo.class); + + switch (type){ + case WeChatConstants.WE_CHAT_MESSAGE_RESP_MESSAGE_TYPE_TEXT: + MessageTextVo messageTextVo = new MessageTextVo(getFromUserName(), getToUserName(), messageReplyDataVo.getContent()); + return XmlUtil.objectToXml(messageTextVo); + case WeChatConstants.WE_CHAT_MESSAGE_RESP_MESSAGE_TYPE_VOICE: + return XmlUtil.objectToXml(new MessageVoiceVo(getFromUserName(), getToUserName(), new MessageVoiceItemVo(messageReplyDataVo.getMediaId()))); + case WeChatConstants.WE_CHAT_MESSAGE_RESP_MESSAGE_TYPE_IMAGE: + return XmlUtil.objectToXml(new MessageImageVo(getFromUserName(), getToUserName(), new MessageImageItemVo(messageReplyDataVo.getMediaId()))); + case WeChatConstants.WE_CHAT_MESSAGE_RESP_MESSAGE_TYPE_NEWS: + //文章 + return getNews(messageReplyDataVo.getArticleId()); + default: + return ""; + } + } + + /** + * 组装文章消息 + * @param articleId Integer 文章id + * @author Mr.Zhang + * @since 2020-06-03 + * @return MessageVoiceVo + */ + private String getNews(Integer articleId) { + Article article = articleService.getById(articleId); + if(null == article || article.getStatus() || article.getHide()){ + return ""; + } + + return "\n" + + " \n" + + " \n" + + " "+ DateUtil.getNowTime() +"\n" + + " \n" + + " 1\n" + + " \n" + + " \n" + + " <![CDATA["+article.getTitle()+"]]>\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + "\n"; + } + + + /** + * 处理不同的消息类型 + * @author Mr.Zhang + * @since 2020-06-03 + */ + private void getReplyByContent() { + WechatReply wp = new WechatReply(); + switch (getMsgType()){ + case WeChatConstants.WE_CHAT_MESSAGE_REQ_MESSAGE_TYPE_EVENT: + if(StringUtils.isBlank(getEvent())){ + break; + } + switch (getEvent().toLowerCase()){ + case WeChatConstants.WE_CHAT_MESSAGE_EVENT_TYPE_UNSUBSCRIBE: + case WeChatConstants.WE_CHAT_MESSAGE_EVENT_TYPE_SCAN: + case WeChatConstants.WE_CHAT_MESSAGE_EVENT_TYPE_LOCATION: + case WeChatConstants.WE_CHAT_MESSAGE_EVENT_TYPE_VIEW: + //暂时不处理 + break; + case WeChatConstants.WE_CHAT_MESSAGE_EVENT_TYPE_SUBSCRIBE: + wp = wechatReplyService.getVoByKeywords(WeChatConstants.WE_CHAT_MESSAGE_EVENT_TYPE_SUBSCRIBE.toLowerCase()); + break; + case WeChatConstants.WE_CHAT_MESSAGE_EVENT_TYPE_CLICK: + wp = wechatReplyService.getVoByKeywords(eventKey); + break; + + } + break; + case WeChatConstants.WE_CHAT_MESSAGE_REQ_MESSAGE_TYPE_TEXT: + wp = wechatReplyService.getVoByKeywords(getContent()); + break; + case WeChatConstants.WE_CHAT_MESSAGE_REQ_MESSAGE_TYPE_IMAGE: + case WeChatConstants.WE_CHAT_MESSAGE_REQ_MESSAGE_TYPE_VOICE: + case WeChatConstants.WE_CHAT_MESSAGE_REQ_MESSAGE_TYPE_VIDEO: + case WeChatConstants.WE_CHAT_MESSAGE_REQ_MESSAGE_TYPE_LOCATION: + case WeChatConstants.WE_CHAT_MESSAGE_REQ_MESSAGE_TYPE_LINK: + //不需要处理 + break; + default: + break; + } + + if(null == wp){ + //无效关键字回复 + wp = wechatReplyService.getVoByKeywords(WeChatConstants.WE_CHAT_MESSAGE_DEFAULT_CONTENT_KEY); + } + setWechatReply(wp); + } +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/bargain/BargainStopChangeTask.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/bargain/BargainStopChangeTask.java new file mode 100644 index 0000000..9c92cc1 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/bargain/BargainStopChangeTask.java @@ -0,0 +1,48 @@ +package com.zbkj.admin.task.bargain; + +import com.zbkj.common.utils.DateUtil; +import com.zbkj.service.service.StoreBargainService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +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 org.springframework.stereotype.Component; + +/** + * 砍价活动结束状态变化定时任务 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Component +@Configuration //读取配置 +@EnableScheduling // 2.开启定时任务 +public class BargainStopChangeTask { + + //日志 + private static final Logger logger = LoggerFactory.getLogger(BargainStopChangeTask.class); + + @Autowired + private StoreBargainService storeBargainService; + + @Scheduled(cron = "0 0 0 */1 * ?") //5秒钟同步一次数据 + public void init(){ + logger.info("---BargainStopChangeTask------bargain stop status change task: Execution Time - {}", DateUtil.nowDateTime()); + try { + storeBargainService.stopAfterChange(); + }catch (Exception e){ + e.printStackTrace(); + logger.error("BargainStopChangeTask" + " | msg : " + e.getMessage()); + } + + } + +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/brokerage/BrokerageFrozenTask.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/brokerage/BrokerageFrozenTask.java new file mode 100644 index 0000000..85cfb5a --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/brokerage/BrokerageFrozenTask.java @@ -0,0 +1,51 @@ +package com.zbkj.admin.task.brokerage; + + +import com.zbkj.admin.task.order.OrderReceiptTask; +import com.zbkj.common.utils.DateUtil; +import com.zbkj.service.service.UserBrokerageRecordService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +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 org.springframework.stereotype.Component; + +/** + * 佣金冻结期解冻task + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Component +@Configuration //读取配置 +@EnableScheduling // 2.开启定时任务 +public class BrokerageFrozenTask { + + //日志 + private static final Logger logger = LoggerFactory.getLogger(OrderReceiptTask.class); + + @Autowired + private UserBrokerageRecordService userBrokerageRecordService; + + // @Scheduled(fixedDelay = 1000 * 60 * 60L) //1小时同步一次数据 + @Scheduled(fixedDelay = 1000 * 60L) //1分钟同步一次数据 + public void init(){ + logger.info("---BrokerageFrozenTask task------produce Data with fixed rate task: Execution Time - {}", DateUtil.nowDateTime()); + try { + userBrokerageRecordService.brokerageThaw(); + + } catch (Exception e) { + e.printStackTrace(); + logger.error("BrokerageFrozenTask.task" + " | msg : " + e.getMessage()); + } + + } +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/coupon/CouponOverdueTask.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/coupon/CouponOverdueTask.java new file mode 100644 index 0000000..53ee566 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/coupon/CouponOverdueTask.java @@ -0,0 +1,48 @@ +package com.zbkj.admin.task.coupon; + +import com.zbkj.common.utils.DateUtil; +import com.zbkj.service.service.StoreCouponUserService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +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 org.springframework.stereotype.Component; + +/** + * 优惠券过期定时任务 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Component +@Configuration //读取配置 +@EnableScheduling // 2.开启定时任务 +public class CouponOverdueTask { + + //日志 + private static final Logger logger = LoggerFactory.getLogger(CouponOverdueTask.class); + + @Autowired + private StoreCouponUserService couponUserService; + + @Scheduled(fixedDelay = 1000 * 60L) //1分钟同步一次数据 + public void init(){ + logger.info("---CouponOverdueTask task------produce Data with fixed rate task: Execution Time - {}", DateUtil.nowDateTime()); + try { + couponUserService.overdueTask(); + } catch (Exception e) { + e.printStackTrace(); + logger.error("CouponOverdueTask.task" + " | msg : " + e.getMessage()); + } + + } + +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/integral/IntegralFrozenTask.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/integral/IntegralFrozenTask.java new file mode 100644 index 0000000..72c614c --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/integral/IntegralFrozenTask.java @@ -0,0 +1,48 @@ +package com.zbkj.admin.task.integral; + + +import com.zbkj.common.utils.DateUtil; +import com.zbkj.service.service.UserIntegralRecordService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +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 org.springframework.stereotype.Component; + +/** + * 积分冻结期解冻task + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Component +@Configuration //读取配置 +@EnableScheduling // 2.开启定时任务 +public class IntegralFrozenTask { + + //日志 + private static final Logger logger = LoggerFactory.getLogger(IntegralFrozenTask.class); + + @Autowired + private UserIntegralRecordService userIntegralRecordService; + + @Scheduled(fixedDelay = 1000 * 60L) //1分钟同步一次数据 + public void init() { + logger.info("---IntegralFrozenTask task------produce Data with fixed rate task: Execution Time - {}", DateUtil.nowDateTime()); + try { + userIntegralRecordService.integralThaw(); + } catch (Exception e) { + e.printStackTrace(); + logger.error("IntegralFrozenTask.task" + " | msg : " + e.getMessage()); + } + + } +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/log/AutoDeleteLogTask.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/log/AutoDeleteLogTask.java new file mode 100644 index 0000000..03446e1 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/log/AutoDeleteLogTask.java @@ -0,0 +1,51 @@ +package com.zbkj.admin.task.log; + +import com.zbkj.common.utils.DateUtil; +import com.zbkj.service.service.WechatExceptionsService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +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 org.springframework.stereotype.Component; + +/** + * 自动删除不需要的历史日志 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Component +@Configuration //读取配置 +@EnableScheduling // 2.开启定时任务 +public class AutoDeleteLogTask { + + //日志 + private static final Logger logger = LoggerFactory.getLogger(AutoDeleteLogTask.class); + + @Autowired + private WechatExceptionsService wechatExceptionsService; + + /** + * 每天0点执行 + */ + @Scheduled(cron = "0 0 0 */1 * ?") + public void autoDeleteLog() { + // cron : 0 0 0 */1 * ? + logger.info("---AutoDeleteLogTask------bargain stop status change task: Execution Time - {}", DateUtil.nowDateTime()); + try { + wechatExceptionsService.autoDeleteLog(); + } catch (Exception e) { + e.printStackTrace(); + logger.error("AutoDeleteLogTask" + " | msg : " + e.getMessage()); + } + } + +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/order/OrderAutoCancelTask.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/order/OrderAutoCancelTask.java new file mode 100644 index 0000000..aa77d54 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/order/OrderAutoCancelTask.java @@ -0,0 +1,47 @@ +package com.zbkj.admin.task.order; + +import com.zbkj.common.utils.DateUtil; +import com.zbkj.service.service.OrderTaskService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +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 org.springframework.stereotype.Component; + +/** + * 系统自动取消未支付订单task任务 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Component +@Configuration //读取配置 +@EnableScheduling // 2.开启定时任务 +public class OrderAutoCancelTask { + //日志 + private static final Logger logger = LoggerFactory.getLogger(OrderAutoCancelTask.class); + + @Autowired + private OrderTaskService orderTaskService; + + @Scheduled(fixedDelay = 1000 * 60L) //1分钟同步一次数据 + public void init() { + logger.info("---OrderAutoCancelTask task------produce Data with fixed rate task: Execution Time - {}", DateUtil.nowDateTime()); + try { + orderTaskService.autoCancel(); + + } catch (Exception e) { + e.printStackTrace(); + logger.error("OrderAutoCancelTask.task" + " | msg : " + e.getMessage()); + } + + } +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/order/OrderAutoCompleteTask.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/order/OrderAutoCompleteTask.java new file mode 100644 index 0000000..7abc558 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/order/OrderAutoCompleteTask.java @@ -0,0 +1,48 @@ +package com.zbkj.admin.task.order; + +import com.zbkj.common.utils.DateUtil; +import com.zbkj.service.service.OrderTaskService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +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 org.springframework.stereotype.Component; + +/** + * 订单自动完成Task + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Component +@Configuration //读取配置 +@EnableScheduling // 2.开启定时任务 +public class OrderAutoCompleteTask { + + //日志 + private static final Logger logger = LoggerFactory.getLogger(OrderCompleteTask.class); + + @Autowired + private OrderTaskService orderTaskService; + + @Scheduled(fixedDelay = 1000 * 60L * 60) //每小时同步一次数据 + public void init() { + logger.info("---OrderAutoCompleteTask task------produce Data with fixed rate task: Execution Time - {}", DateUtil.nowDateTime()); + try { + orderTaskService.autoComplete(); + } catch (Exception e) { + e.printStackTrace(); + logger.error("OrderAutoCompleteTask.task" + " | msg : " + e.getMessage()); + } + + } + +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/order/OrderCancelTask.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/order/OrderCancelTask.java new file mode 100644 index 0000000..c57343a --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/order/OrderCancelTask.java @@ -0,0 +1,47 @@ +package com.zbkj.admin.task.order; + +import com.zbkj.common.utils.DateUtil; +import com.zbkj.service.service.OrderTaskService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +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 org.springframework.stereotype.Component; + +/** + * 用户取消订单task任务 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Component +@Configuration //读取配置 +@EnableScheduling // 2.开启定时任务 +public class OrderCancelTask { + //日志 + private static final Logger logger = LoggerFactory.getLogger(OrderCancelTask.class); + + @Autowired + private OrderTaskService orderTaskService; + + @Scheduled(fixedDelay = 1000 * 60L) //1分钟同步一次数据 + public void init() { + logger.info("---OrderCancelTask task------produce Data with fixed rate task: Execution Time - {}", DateUtil.nowDateTime()); + try { + orderTaskService.cancelByUser(); + + } catch (Exception e) { + e.printStackTrace(); + logger.error("OrderCancelTask.task" + " | msg : " + e.getMessage()); + } + + } +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/order/OrderCompleteTask.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/order/OrderCompleteTask.java new file mode 100644 index 0000000..2d9fada --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/order/OrderCompleteTask.java @@ -0,0 +1,47 @@ +package com.zbkj.admin.task.order; + +import com.zbkj.common.utils.DateUtil; +import com.zbkj.service.service.OrderTaskService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +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 org.springframework.stereotype.Component; + +/** + * 用户订单完成task任务 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Component +@Configuration //读取配置 +@EnableScheduling // 2.开启定时任务 +public class OrderCompleteTask { + //日志 + private static final Logger logger = LoggerFactory.getLogger(OrderCompleteTask.class); + + @Autowired + private OrderTaskService orderTaskService; + + @Scheduled(fixedDelay = 1000 * 60L) //1分钟同步一次数据 + public void init() { + logger.info("---OrderCompleteTask task------produce Data with fixed rate task: Execution Time - {}", DateUtil.nowDateTime()); + try { + orderTaskService.complete(); + + } catch (Exception e) { + e.printStackTrace(); + logger.error("OrderCompleteTask.task" + " | msg : " + e.getMessage()); + } + + } +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/order/OrderPaySuccessTask.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/order/OrderPaySuccessTask.java new file mode 100644 index 0000000..4731e8d --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/order/OrderPaySuccessTask.java @@ -0,0 +1,48 @@ +package com.zbkj.admin.task.order; + +import com.zbkj.common.utils.DateUtil; +import com.zbkj.service.service.OrderTaskService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +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 org.springframework.stereotype.Component; + +/** + * 订单支付成功后置task任务 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Component +@Configuration //读取配置 +@EnableScheduling // 2.开启定时任务 +public class OrderPaySuccessTask { + + //日志 + private static final Logger logger = LoggerFactory.getLogger(OrderPaySuccessTask.class); + + @Autowired + private OrderTaskService orderTaskService; + + @Scheduled(fixedDelay = 1000 * 60L) //1分钟同步一次数据 + public void init() { + logger.info("---OrderPaySuccessTask task------produce Data with fixed rate task: Execution Time - {}", DateUtil.nowDateTime()); + try { + orderTaskService.orderPaySuccessAfter(); + } catch (Exception e) { + e.printStackTrace(); + logger.error("OrderPaySuccessTask.task" + " | msg : " + e.getMessage()); + } + + } + +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/order/OrderReceiptTask.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/order/OrderReceiptTask.java new file mode 100644 index 0000000..23ccb54 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/order/OrderReceiptTask.java @@ -0,0 +1,46 @@ +package com.zbkj.admin.task.order; + +import com.zbkj.common.utils.DateUtil; +import com.zbkj.service.service.OrderTaskService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +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 org.springframework.stereotype.Component; + +/** 用户确认收货Task + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Component +@Configuration //读取配置 +@EnableScheduling // 2.开启定时任务 +public class OrderReceiptTask { + //日志 + private static final Logger logger = LoggerFactory.getLogger(OrderReceiptTask.class); + + @Autowired + private OrderTaskService orderTaskService; + + @Scheduled(fixedDelay = 1000 * 60L) //1分钟同步一次数据 + public void init() { + logger.info("---OrderReceiptTask task------produce Data with fixed rate task: Execution Time - {}", DateUtil.nowDateTime()); + try { + orderTaskService.orderReceiving(); + + } catch (Exception e) { + e.printStackTrace(); + logger.error("OrderReceiptTask.task" + " | msg : " + e.getMessage()); + } + + } +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/order/OrderRefundTask.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/order/OrderRefundTask.java new file mode 100644 index 0000000..860ff34 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/order/OrderRefundTask.java @@ -0,0 +1,47 @@ +package com.zbkj.admin.task.order; + +import com.zbkj.common.utils.DateUtil; +import com.zbkj.service.service.OrderTaskService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +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 org.springframework.stereotype.Component; + +/** + * 账单退款操作 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Component +@Configuration //读取配置 +@EnableScheduling // 2.开启定时任务 +public class OrderRefundTask { + //日志 + private static final Logger logger = LoggerFactory.getLogger(OrderRefundTask.class); + + @Autowired + private OrderTaskService orderTaskService; + + @Scheduled(fixedDelay = 1000 * 60L) //1分钟同步一次数据 + public void init(){ + logger.info("---OrderRefundTask task------produce Data with fixed rate task: Execution Time - {}", DateUtil.nowDateTime()); + try { + orderTaskService.refundApply(); + + } catch (Exception e) { + e.printStackTrace(); + logger.error("OrderRefundTask.task" + " | msg : " + e.getMessage()); + } + + } +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/pink/PinkStatusChangeTask.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/pink/PinkStatusChangeTask.java new file mode 100644 index 0000000..6e9ce6f --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/pink/PinkStatusChangeTask.java @@ -0,0 +1,46 @@ +package com.zbkj.admin.task.pink; +import com.zbkj.common.utils.DateUtil; +import com.zbkj.service.service.StorePinkService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +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 org.springframework.stereotype.Component; + +/** + * 拼团状态变化Task + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Component +@Configuration //读取配置 +@EnableScheduling // 2.开启定时任务 +public class PinkStatusChangeTask { + + //日志 + private static final Logger logger = LoggerFactory.getLogger(PinkStatusChangeTask.class); + + @Autowired + private StorePinkService storePinkService; + + @Scheduled(cron = "0 */1 * * * ?") //每分钟执行一次 + public void init(){ + logger.info("---PinkStatusChange------bargain stop status change task: Execution Time - {}", DateUtil.nowDateTime()); + try { + storePinkService.detectionStatus(); + } catch (Exception e) { + e.printStackTrace(); + logger.error("PinkStatusChange" + " | msg : " + e.getMessage()); + } + + } +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/product/ProductStockTask.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/product/ProductStockTask.java new file mode 100644 index 0000000..f6316a5 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/product/ProductStockTask.java @@ -0,0 +1,60 @@ +package com.zbkj.admin.task.product; + +import com.zbkj.common.utils.DateUtil; +import com.zbkj.service.service.StoreBargainService; +import com.zbkj.service.service.StoreCombinationService; +import com.zbkj.service.service.StoreProductService; +import com.zbkj.service.service.StoreSeckillService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +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 org.springframework.stereotype.Component; + +/** 操作商品库存 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Component +@Configuration //读取配置 +@EnableScheduling // 2.开启定时任务 +public class ProductStockTask { + //日志 + private static final Logger logger = LoggerFactory.getLogger(ProductStockTask.class); + + @Autowired + private StoreProductService storeProductService; + + @Autowired + private StoreSeckillService storeSeckillService; + + @Autowired + private StoreBargainService storeBargainService; + + @Autowired + private StoreCombinationService storeCombinationService; + + @Scheduled(fixedDelay = 1000 * 60L) //1分钟同步一次数据 + public void init(){ + logger.info("---OrderTakeByUser task------produce Data with fixed rate task: Execution Time - {}", DateUtil.nowDateTime()); + try { + storeProductService.consumeProductStock(); // 商品本身库存任务 + storeSeckillService.consumeProductStock(); // 秒杀本身库存任务 + storeBargainService.consumeProductStock(); // 砍价本身库存任务 + storeCombinationService.consumeProductStock(); // 拼团本身库存任务 + } catch (Exception e) { + e.printStackTrace(); + logger.error("OrderTakeByUser.task" + " | msg : " + e.getMessage()); + } + + } +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/wechat/AsyncWeChatProgramTempMessage.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/wechat/AsyncWeChatProgramTempMessage.java new file mode 100644 index 0000000..77d54a4 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/wechat/AsyncWeChatProgramTempMessage.java @@ -0,0 +1,46 @@ +package com.zbkj.admin.task.wechat; + +import com.zbkj.common.utils.DateUtil; +import com.zbkj.service.service.TemplateMessageService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +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 org.springframework.stereotype.Component; + +/** + * 小程序消费队列消费 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Component +@Configuration //读取配置 +@EnableScheduling // 2.开启定时任务 +public class AsyncWeChatProgramTempMessage { + //日志 + private static final Logger logger = LoggerFactory.getLogger(AsyncWeChatProgramTempMessage.class); + + @Autowired + private TemplateMessageService templateMessageService; + + @Scheduled(fixedDelay = 1000 * 60L) //1分钟同步一次数据 + public void init(){ + logger.info("---AsyncWeChatProgramTempMessage task------produce Data with fixed rate task: Execution Time - {}", DateUtil.nowDate()); + try { + templateMessageService.consumeProgram(); + } catch (Exception e) { + e.printStackTrace(); + logger.error("AsyncWeChatProgramTempMessage.task" + " | msg : " + e.getMessage()); + } + + } +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/wechat/AsyncWeChatPublicTempMessage.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/wechat/AsyncWeChatPublicTempMessage.java new file mode 100644 index 0000000..01936b3 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/wechat/AsyncWeChatPublicTempMessage.java @@ -0,0 +1,48 @@ +package com.zbkj.admin.task.wechat; + +import com.zbkj.common.utils.DateUtil; +import com.zbkj.service.service.TemplateMessageService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +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 org.springframework.stereotype.Component; + +/** + * 公众号消费队列消费 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Component +@Configuration //读取配置 +@EnableScheduling // 2.开启定时任务 +public class AsyncWeChatPublicTempMessage { + //日志 + private static final Logger logger = LoggerFactory.getLogger(AsyncWeChatPublicTempMessage.class); + + @Autowired + private TemplateMessageService templateMessageService; + + @Scheduled(fixedDelay = 1000 * 60L) //1分钟同步一次数据 + public void init() { + logger.info("---AsyncWeChatPublicTempMessage task------produce Data with fixed rate task: Execution Time - {}", DateUtil.nowDate()); + try { + templateMessageService.consumePublic(); + + } catch (Exception e) { + e.printStackTrace(); + logger.error("AsyncWeChatPublicTempMessage.task" + " | msg : " + e.getMessage()); + } + + } +} + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/vo/BaseMessageVo.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/vo/BaseMessageVo.java new file mode 100644 index 0000000..654d558 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/vo/BaseMessageVo.java @@ -0,0 +1,38 @@ +package com.zbkj.admin.vo; + +import com.zbkj.common.utils.DateUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 微信消息基础模板 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="BaseMessageVo对象", description="微信消息基础模板") +public class BaseMessageVo{ + @ApiModelProperty(value = "开发者微信号") + protected String ToUserName; + + @ApiModelProperty(value = "发送方帐号(一个OpenID)") + protected String FromUserName; + + @ApiModelProperty(value = "消息创建时间 (整型)") + protected Long CreateTime = DateUtil.getTime(); + + @ApiModelProperty(value = "消息类型,文本为text") + protected String MsgType = "text"; +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/vo/MessageImageItemVo.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/vo/MessageImageItemVo.java new file mode 100644 index 0000000..fa5a416 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/vo/MessageImageItemVo.java @@ -0,0 +1,33 @@ +package com.zbkj.admin.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 微信消息 图片/语音 模板 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="MessageImageItemVo对象", description="微信消息 图片/语音 模板") +public class MessageImageItemVo{ + public MessageImageItemVo() {} + public MessageImageItemVo(String mediaId) { + MediaId = mediaId; + } + + @ApiModelProperty(value = "通过素材管理中的接口上传多媒体文件,得到的id。") + private String MediaId; +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/vo/MessageImageVo.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/vo/MessageImageVo.java new file mode 100644 index 0000000..5200e67 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/vo/MessageImageVo.java @@ -0,0 +1,38 @@ +package com.zbkj.admin.vo; + +import com.zbkj.common.constants.WeChatConstants; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 微信消息 图片/语音 模板 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="MessageMediaVo对象", description="微信消息 图片/语音 模板") +public class MessageImageVo extends BaseMessageVo { + public MessageImageVo() {} + public MessageImageVo(String toUserName, String fromUserName, MessageImageItemVo image) { + super(); + ToUserName = toUserName; + FromUserName = fromUserName; + MsgType = WeChatConstants.WE_CHAT_MESSAGE_RESP_MESSAGE_TYPE_IMAGE; + Image = image; + } + + @ApiModelProperty(value = "通过素材管理中的接口上传多媒体文件,得到的id。") + private MessageImageItemVo Image; +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/vo/MessageReplyDataVo.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/vo/MessageReplyDataVo.java new file mode 100644 index 0000000..6337eb0 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/vo/MessageReplyDataVo.java @@ -0,0 +1,38 @@ +package com.zbkj.admin.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 数据存储回复消息内容对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="MessageReplyDataVo对象", description="数据存储回复消息内容对象") +public class MessageReplyDataVo{ + + @ApiModelProperty(value = "文本消息内容") + private String Content; + + @ApiModelProperty(value = "图片/音频链接") + private String src; + + @ApiModelProperty(value = "图片/音频媒体ID") + private String mediaId; + + @ApiModelProperty(value = "文本消息内容") + private Integer articleId; +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/vo/MessageTextVo.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/vo/MessageTextVo.java new file mode 100644 index 0000000..2431616 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/vo/MessageTextVo.java @@ -0,0 +1,36 @@ +package com.zbkj.admin.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 微信消息文本模板 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="MessageTextVo对象", description="微信消息文本模板") +public class MessageTextVo extends BaseMessageVo { + public MessageTextVo() {} + public MessageTextVo(String toUserName, String fromUserName, String content) { + super(); + ToUserName = toUserName; + FromUserName = fromUserName; + Content = content; + } + + @ApiModelProperty(value = "文本消息内容") + private String Content; +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/vo/MessageVoiceItemVo.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/vo/MessageVoiceItemVo.java new file mode 100644 index 0000000..2347944 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/vo/MessageVoiceItemVo.java @@ -0,0 +1,33 @@ +package com.zbkj.admin.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 微信消息 图片/语音 模板 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="MessageVoiceItemVo对象", description="微信消息 图片/语音 模板") +public class MessageVoiceItemVo{ + public MessageVoiceItemVo() {} + public MessageVoiceItemVo(String mediaId) { + MediaId = mediaId; + } + + @ApiModelProperty(value = "通过素材管理中的接口上传多媒体文件,得到的id。") + private String MediaId; +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/vo/MessageVoiceVo.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/vo/MessageVoiceVo.java new file mode 100644 index 0000000..51bd60d --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/vo/MessageVoiceVo.java @@ -0,0 +1,38 @@ +package com.zbkj.admin.vo; + +import com.zbkj.common.constants.WeChatConstants; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 微信消息 图片/语音 模板 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="MessageMediaVo对象", description="微信消息 图片/语音 模板") +public class MessageVoiceVo extends BaseMessageVo { + public MessageVoiceVo() {} + public MessageVoiceVo(String toUserName, String fromUserName, MessageVoiceItemVo voice) { + super(); + ToUserName = toUserName; + FromUserName = fromUserName; + MsgType = WeChatConstants.WE_CHAT_MESSAGE_RESP_MESSAGE_TYPE_VOICE; + Voice = voice; + } + + @ApiModelProperty(value = "通过素材管理中的接口上传多媒体文件,得到的id。") + private MessageVoiceItemVo Voice; +} diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/vo/ValidateCode.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/vo/ValidateCode.java new file mode 100644 index 0000000..e7d40c8 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/vo/ValidateCode.java @@ -0,0 +1,42 @@ +package com.zbkj.admin.vo; + + +import java.io.Serializable; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 验证码类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="ValidateCode对象", description="验证码类") +public class ValidateCode implements Serializable { + + public ValidateCode(String key, String code) { + this.key = key; + this.code = code; + } + + @ApiModelProperty(value = "key", required = true) + private String key; + + @ApiModelProperty(value = "code", required = true) + private String code; + +} diff --git a/crmeb/crmeb-admin/src/main/resources/application-beta.yml b/crmeb/crmeb-admin/src/main/resources/application-beta.yml new file mode 100644 index 0000000..367d16c --- /dev/null +++ b/crmeb/crmeb-admin/src/main/resources/application-beta.yml @@ -0,0 +1,48 @@ +# CRMEB 相关配置 +crmeb: + version: CRMEB-JAVA-KY-v1.3.4 # 当前代码版本 + domain: #配合swagger使用 # 待部署域名 + wechat-api-url: #请求微信接口中专服务器 + wechat-js-api-debug: false #微信js api系列是否开启调试模式 + wechat-js-api-beta: true #微信js api是否是beta版本 + asyncConfig: false #是否同步config表数据到redis + asyncWeChatProgramTempList: false #是否同步小程序公共模板库 + imagePath: /www/wwwroot/your Crmeb-admin.jar Path/ # 服务器图片路径配置 斜杠结尾 + +server: + port: 20008 + servlet: + context-path: / # 访问path + tomcat: + uri-encoding: UTF-8 # 默认编码格式 + max-threads: 1000 # 最大线程数量 默认200 + min-spare-threads: 30 # 初始化启动线程数量 + +spring: + profiles: + # 配置的环境 + active: beta + servlet: + multipart: + max-file-size: 50MB #设置单个文件大小 + max-request-size: 50MB #设置单次请求文件的总大小 + # 数据库配置 + datasource: + type: com.alibaba.druid.pool.DruidDataSource + driver-class-name: com.mysql.jdbc.Driver + url: jdbc:mysql://127.0.0.1:3306/crmeb?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimeZone=GMT+8 + username: crmeb + password: 111111 + redis: + host: 127.0.0.1 #地址 + port: 6379 #端口 + password: 111111 + timeout: 10000 # 连接超时时间(毫秒) + database: 3 #默认数据库 + jedis: + pool: + max-active: 200 # 连接池最大连接数(使用负值表示没有限制) + max-wait: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制) + max-idle: 10 # 连接池中的最大空闲连接 + min-idle: 0 # 连接池中的最小空闲连接 + time-between-eviction-runs: -1 #逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1 diff --git a/crmeb/crmeb-admin/src/main/resources/application-dev.yml b/crmeb/crmeb-admin/src/main/resources/application-dev.yml new file mode 100644 index 0000000..404a815 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/resources/application-dev.yml @@ -0,0 +1,42 @@ +# CRMEB 相关配置 +crmeb: + version: CRMEB-JAVA-KY-v1.3.4 # 当前代码版本 + domain: #配合swagger使用 # 待部署域名 + wechat-api-url: #请求微信接口中专服务器 + wechat-js-api-debug: false #微信js api系列是否开启调试模式 + wechat-js-api-beta: true #微信js api是否是beta版本 + asyncConfig: false #是否同步config表数据到redis + asyncWeChatProgramTempList: false #是否同步小程序公共模板库 + imagePath: /www/wwwroot/Crmeb-admin.jar path/ # 服务器图片路径配置 斜杠结尾 + +server: + port: 20010 + +spring: + profiles: + # 配置的环境 + active: dev + # 数据库配置 + servlet: + multipart: + max-file-size: 50MB #设置单个文件大小 + max-request-size: 50MB #设置单次请求文件的总大小 + datasource: + type: com.alibaba.druid.pool.DruidDataSource + driver-class-name: com.mysql.jdbc.Driver + url: jdbc:mysql://127.0.0.1:3306/crmeb?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimeZone=GMT+8 + username: crmeb + password: 111111 + redis: + host: 127.0.0.1 #地址 + port: 6379 #端口 + password: 111111 + timeout: 10000 # 连接超时时间(毫秒) + database: 10 #默认数据库 + jedis: + pool: + max-active: 200 # 连接池最大连接数(使用负值表示没有限制) + max-wait: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制) + max-idle: 10 # 连接池中的最大空闲连接 + min-idle: 0 # 连接池中的最小空闲连接 + time-between-eviction-runs: -1 #逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1 diff --git a/crmeb/crmeb-admin/src/main/resources/application-prod.yml b/crmeb/crmeb-admin/src/main/resources/application-prod.yml new file mode 100644 index 0000000..e1544e3 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/resources/application-prod.yml @@ -0,0 +1,66 @@ +# CRMEB 相关配置 +crmeb: + version: CRMEB-JAVA-KY-v1.3.4 # 当前代码版本 + domain: #配合swagger使用 # 待部署域名 + wechat-api-url: #请求微信接口中专服务器 + wechat-js-api-debug: false #微信js api系列是否开启调试模式 + wechat-js-api-beta: true #微信js api是否是beta版本 + asyncConfig: false #是否同步config表数据到redis + asyncWeChatProgramTempList: false #是否同步小程序公共模板库 + imagePath: /www/wwwroot/your Crmeb-admin.jar Path/ # 服务器图片路径配置 斜杠结尾 + +server: + port: 20000 + +spring: + profiles: + # 配置的环境 + active: prod + servlet: + multipart: + max-file-size: 50MB #设置单个文件大小 + max-request-size: 50MB #设置单次请求文件的总大小 + # 数据库配置 + datasource: + type: com.alibaba.druid.pool.DruidDataSource + driver-class-name: com.mysql.jdbc.Driver + url: jdbc:mysql://127.0.0.1:3306/crmeb?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimeZone=GMT+8 + username: crmeb + password: 1111111 + redis: + host: 127.0.0.1 #地址 + port: 6379 #端口 + password: 111111 + timeout: 10000 # 连接超时时间(毫秒) + database: 15 #默认数据库 + jedis: + pool: + max-active: 200 # 连接池最大连接数(使用负值表示没有限制) + max-wait: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制) + max-idle: 10 # 连接池中的最大空闲连接 + min-idle: 0 # 连接池中的最小空闲连接 + time-between-eviction-runs: -1 #逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1 + +debug: true +logging: + level: + io.swagger.*: error + com.zbjk.crmeb: debug + org.springframework.boot.autoconfigure: ERROR + config: classpath:logback-spring.xml + file: + path: ./crmeb_log + +# mybatis 配置 +mybatis-plus: + # 配置slq打印日志 + configuration: + log-impl: + +#swagger 配置 +swagger: + basic: + enable: true #是否开启界面 + check: true #是否打开验证 + username: #访问swagger的账号 + password: #访问swagger的密码 diff --git a/crmeb/crmeb-admin/src/main/resources/application.yml b/crmeb/crmeb-admin/src/main/resources/application.yml new file mode 100644 index 0000000..02720d8 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/resources/application.yml @@ -0,0 +1,90 @@ +# CRMEB 相关配置 +crmeb: + version: CRMEB-JAVA-KY-v1.3.4 # 当前代码版本 + domain: #配合swagger使用 # 待部署域名 + wechat-api-url: #请求微信接口中专服务器 + wechat-js-api-debug: false #微信js api系列是否开启调试模式 + wechat-js-api-beta: true #微信js api是否是beta版本 + asyncConfig: false #是否同步config表数据到redis + asyncWeChatProgramTempList: false #是否同步小程序公共模板库 + imagePath: /当前项目更根目录的素材文件(绝对路径)/crmebimage/ # 服务器图片路径配置 斜杠结尾 + database: mysql + +# 配置端口 +server: + port: 8080 + servlet: + context-path: / # 访问path + tomcat: + uri-encoding: UTF-8 # 默认编码格式 + max-threads: 1000 # 最大线程数量 默认200 + min-spare-threads: 30 # 初始化启动线程数量 + +spring: + profiles: + # 配置的环境 + active: + servlet: + multipart: + max-file-size: 50MB #设置单个文件大小 + max-request-size: 50MB #设置单次请求文件的总大小 + application: + name: cemrb-admin #这个很重要,这在以后的服务与服务之间相互调用一般都是根据这个name + jackson: + locale: zh_CN + time-zone: GMT+8 + date-format: yyyy-MM-dd HH:mm:ss + # 数据库配置 + datasource: + type: com.alibaba.druid.pool.DruidDataSource + driver-class-name: com.mysql.jdbc.Driver + url: jdbc:mysql://127.0.0.1:3306/crmeb?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimeZone=GMT+8 + username: crmeb + password: 111111 + + redis: + host: 127.0.0.1 #地址 + port: 6379 #端口 + password: 111111 + timeout: 30000 # 连接超时时间(毫秒) + database: 15 #默认数据库 + jedis: + pool: + max-active: 200 # 连接池最大连接数(使用负值表示没有限制) + max-wait: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制) + max-idle: 10 # 连接池中的最大空闲连接 + min-idle: 0 # 连接池中的最小空闲连接 + time-between-eviction-runs: -1 #逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1 + + +debug: true +logging: + level: + io.swagger.*: error + com.zbjk.crmeb: debug + org.springframework.boot.autoconfigure: ERROR + config: classpath:logback-spring.xml + file: + path: ./crmeb_log + +# mybatis 配置 +mybatis-plus: + mapper-locations: classpath*:mapper/*/*Mapper.xml #xml扫描,多个目录用逗号或者分号分隔(告诉 Mapper 所对应的 XML 文件位置) + typeAliasesPackage: com.zbkj.**.model + # 配置slq打印日志 + configuration: + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + global-config: + db-config: +# logic-delete-field: isDel #全局逻辑删除字段值 3.3.0开始支持,详情看下面。 + logic-delete-value: 1 # 逻辑已删除值(默认为 1) + logic-not-delete-value: 0 # 逻辑未删除值(默认为 0) + + +#swagger 配置 +swagger: + basic: + enable: true #是否开启 + check: false #是否打开验证 + username: #访问swagger的账号 + password: #访问swagger的密码 diff --git a/crmeb/crmeb-admin/src/main/resources/banner.txt b/crmeb/crmeb-admin/src/main/resources/banner.txt new file mode 100644 index 0000000..373ff0e --- /dev/null +++ b/crmeb/crmeb-admin/src/main/resources/banner.txt @@ -0,0 +1,11 @@ + ,ad8888ba, 88888888ba 88b d88 88888888888 88888888ba + d8"' `"8b 88 "8b 888b d888 88 88 "8b +d8' 88 ,8P 88`8b d8'88 88 88 ,8P +88 88aaaaaa8P' 88 `8b d8' 88 88aaaaa 88aaaaaa8P' +88 88""""88' 88 `8b d8' 88 88""""" 88""""""8b, +Y8, 88 `8b 88 `8b d8' 88 88 88 `8b + Y8a. .a8P 88 `8b 88 `888' 88 88 88 a8P + `"Y8888Y"' 88 `8b 88 `8' 88 88888888888 88888888P" +文档地址: https://help.crmeb.net/crmeb_java/1748037 +演示站WEBPC: https://admin.java.crmeb.ne +演示站H5: https://java.crmeb.net diff --git a/crmeb/crmeb-admin/src/main/resources/generator.properties b/crmeb/crmeb-admin/src/main/resources/generator.properties new file mode 100644 index 0000000..4660d50 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/resources/generator.properties @@ -0,0 +1,65 @@ +#\u4EE3\u7801\u751F\u6210\u5668\uFF0C\u914D\u7F6E\u4FE1\u606F + +mainPath=com.zbkj +#\u5305\u540D +package=com.zbkj.modules +moduleName=autogencode +#\u4F5C\u8005 +author=\u5927\u7CBD\u5B50 +#Email +email=stivepeim@outlook.com +#\u8868\u524D\u7F00(\u7C7B\u540D\u4E0D\u4F1A\u5305\u542B\u8868\u524D\u7F00) +tablePrefix=tb_ + +#\u7C7B\u578B\u8F6C\u6362\uFF0C\u914D\u7F6E\u4FE1\u606F +tinyint=Integer +smallint=Integer +mediumint=Integer +int=Integer +integer=Integer +bigint=Long +float=Float +double=Double +decimal=BigDecimal +bit=Boolean + +char=String +varchar=String +tinytext=String +text=String +mediumtext=String +longtext=String + + +date=Date +datetime=Date +timestamp=Date + +NUMBER=Integer +INT=Integer +INTEGER=Integer +BINARY_INTEGER=Integer +LONG=String +FLOAT=Float +BINARY_FLOAT=Float +DOUBLE=Double +BINARY_DOUBLE=Double +DECIMAL=BigDecimal +CHAR=String +VARCHAR=String +VARCHAR2=String +NVARCHAR=String +NVARCHAR2=String +CLOB=String +BLOB=String +DATE=Date +DATETIME=Date +TIMESTAMP=Date +TIMESTAMP(6)=Date + +int8=Long +int4=Integer +int2=Integer +numeric=BigDecimal + +nvarchar=String diff --git a/crmeb/crmeb-admin/src/main/resources/logback-spring.xml b/crmeb/crmeb-admin/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..c087b23 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/resources/logback-spring.xml @@ -0,0 +1,233 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { + "app": "${APP_NAME}", + "timestamp":"%d{yyyy-MM-dd HH:mm:ss.SSS}", + "level": "%level", + "thread": "%thread", + "class": "%logger{40}", + "message": "%msg" } + %n + + + utf-8 + + + + + + + + + + + ${log.path}/log_debug.log + + + + + + + + { + "app": "${APP_NAME}", + "timestamp":"%d{yyyy-MM-dd HH:mm:ss.SSS}", + "level": "%level", + "thread": "%thread", + "class": "%logger{40}", + "message": "%msg" } + %n + + + utf-8 + + + + + ${log.path}/debug/log-debug-%d{yyyy-MM-dd}.%i.log + + 100MB + + + 30 + + + + debug + ACCEPT + DENY + + + + + + + ${log.path}/log_info.log + + + + + + + + { + "app": "${APP_NAME}", + "timestamp":"%d{yyyy-MM-dd HH:mm:ss.SSS}", + "level": "%level", + "thread": "%thread", + "class": "%logger{40}", + "message": "%msg" } + %n + + + utf-8 + + + + + ${log.path}/info/log-info-%d{yyyy-MM-dd}.%i.log + + 100MB + + + 30 + + + + info + ACCEPT + DENY + + + + + + + ${log.path}/log_warn.log + + + + + + + + { + "app": "${APP_NAME}", + "timestamp":"%d{yyyy-MM-dd HH:mm:ss.SSS}", + "level": "%level", + "thread": "%thread", + "class": "%logger{40}", + "message": "%msg" } + %n + + + utf-8 + + + + ${log.path}/warn/log-warn-%d{yyyy-MM-dd}.%i.log + + 100MB + + + 2 + + + + warn + ACCEPT + DENY + + + + + + + + ${log.path}/log_error.log + + + + + + + + { + "app": "${APP_NAME}", + "timestamp":"%d{yyyy-MM-dd HH:mm:ss.SSS}", + "level": "%level", + "thread": "%thread", + "class": "%logger{40}", + "message": "%msg" } + %n + + + utf-8 + + + + ${log.path}/error/log-error-%d{yyyy-MM-dd}.%i.log + + 100MB + + + 30 + + + + ERROR + ACCEPT + DENY + + + + + + + + ${LOG_HOME}/${APP_NAME}-%d{yyyy-MM-dd}.log + + + + + + + + + + + + + diff --git a/crmeb/crmeb-common/pom.xml b/crmeb/crmeb-common/pom.xml new file mode 100644 index 0000000..01c3a9c --- /dev/null +++ b/crmeb/crmeb-common/pom.xml @@ -0,0 +1,326 @@ + + + + crmeb + com.zbkj + 0.0.1-SNAPSHOT + + 4.0.0 + + crmeb-common + crmeb-common + + + 1.10 + 1.7 + + + + + org.springframework.boot + spring-boot-starter-test + test + + + org.junit.vintage + junit-vintage-engine + + + + + + + + + + + + + javax.servlet + javax.servlet-api + + + javax.servlet + jstl + + + org.apache.tomcat.embed + tomcat-embed-jasper + + + org.apache.tomcat + tomcat-jsp-api + + + + commons-configuration + commons-configuration + ${commons.configuration.version} + + + velocity + org.apache.velocity + ${velocity.version} + + + + + com.alibaba + fastjson + + + + + com.alibaba + druid + + + + + + + mysql + mysql-connector-java + + + + + org.projectlombok + lombok + + + com.baomidou + mybatis-plus-boot-starter + + + + + org.springframework.boot + spring-boot-test + + + junit + junit + + + org.springframework + spring-test + + + + com.baomidou + mybatis-plus + + + + + com.baomidou + mybatis-plus-generator + + + + io.swagger + swagger-annotations + + + + + io.springfox + springfox-swagger2 + + + io.swagger + swagger-models + + + com.github.xiaoymin + swagger-bootstrap-ui + + + + + org.springframework.boot + spring-boot-autoconfigure + + + + + ch.qos.logback + logback-classic + + + + net.logstash.logback + logstash-logback-encoder + + + + org.springframework.boot + spring-boot-starter-web + + + + + org.springframework.boot + spring-boot-starter-data-redis + + + redis.clients + jedis + + + + + com.github.pagehelper + pagehelper-spring-boot-starter + + + javax.validation + validation-api + + + + org.springframework.data + spring-data-commons + + + cn.hutool + hutool-all + + + + org.springframework.boot + spring-boot-starter-actuator + + + + + org.apache.httpcomponents + httpclient + + + + + org.springframework.boot + spring-boot-starter-aop + + + + + org.apache.commons + commons-lang3 + + + + + org.apache.poi + poi + + + org.apache.poi + poi-ooxml + + + + + commons-fileupload + commons-fileupload + + + + commons-io + commons-io + + + + net.coobird + thumbnailator + + + + + com.aliyun.oss + aliyun-sdk-oss + + + + + com.qcloud + cos_api + + + + + com.qiniu + qiniu-java-sdk + + + + + dom4j + dom4j + + + + com.thoughtworks.xstream + xstream + 1.4.18 + + + + + + org.mongodb + mongodb-driver-core + + + com.vaadin.external.google + android-json + + + + org.apache.httpcomponents + httpmime + + + + + com.google.zxing + core + + + com.google.zxing + javase + + + + + com.belerweb + pinyin4j + + + + + io.jsonwebtoken + jjwt + + + com.auth0 + jwks-rsa + + + + + org.springframework.boot + spring-boot-starter-security + + + + + + diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/annotation/StringContains.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/annotation/StringContains.java new file mode 100644 index 0000000..899fc9a --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/annotation/StringContains.java @@ -0,0 +1,34 @@ +package com.zbkj.common.annotation; + +import com.zbkj.common.validation.StringContainsValidator; + +import javax.validation.Constraint; +import javax.validation.Payload; +import java.lang.annotation.*; + +/** + * 校验一个字符串是否包含在指定字符数组内 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Documented +@Constraint(validatedBy = StringContainsValidator.class) +@Target({ ElementType.PARAMETER,ElementType.FIELD }) +@Retention(RetentionPolicy.RUNTIME) +public @interface StringContains { + + String message() default "字符串不符合规则"; + + String[] limitValues() default {}; + + Class[] groups() default { }; + + Class[] payload() default { }; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/config/CrmebConfig.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/config/CrmebConfig.java new file mode 100644 index 0000000..12f21a5 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/config/CrmebConfig.java @@ -0,0 +1,102 @@ +package com.zbkj.common.config; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +/** + * Crmeb 基础配置 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Configuration +@ConfigurationProperties(prefix = "crmeb") +public class CrmebConfig { + // 当前代码版本 + private String version; + // 待部署域名 + private String domain; + // #请求微信接口中专服务器 + private String wechatApiUrl; + // #微信js api系列是否开启调试模式 + private boolean wechatJsApiDebug; + // #微信js api是否是beta版本 + private boolean wechatJsApiBeta; + // #是否同步config表数据到redis + private boolean asyncConfig; + // #是否同步小程序公共模板库 + private boolean asyncWeChatProgramTempList; + // 本地图片路径配置 + private String imagePath; + + public String getVersion() { + return version; + } + + public void setVersion(String version) { + this.version = version; + } + + public String getDomain() { + return domain; + } + + public void setDomain(String domain) { + this.domain = domain; + } + + public String getWechatApiUrl() { + return wechatApiUrl; + } + + public void setWechatApiUrl(String wechatApiUrl) { + this.wechatApiUrl = wechatApiUrl; + } + + public boolean isWechatJsApiDebug() { + return wechatJsApiDebug; + } + + public void setWechatJsApiDebug(boolean wechatJsApiDebug) { + this.wechatJsApiDebug = wechatJsApiDebug; + } + + public boolean isWechatJsApiBeta() { + return wechatJsApiBeta; + } + + public void setWechatJsApiBeta(boolean wechatJsApiBeta) { + this.wechatJsApiBeta = wechatJsApiBeta; + } + + public boolean isAsyncConfig() { + return asyncConfig; + } + + public void setAsyncConfig(boolean asyncConfig) { + this.asyncConfig = asyncConfig; + } + + public boolean isAsyncWeChatProgramTempList() { + return asyncWeChatProgramTempList; + } + + public void setAsyncWeChatProgramTempList(boolean asyncWeChatProgramTempList) { + this.asyncWeChatProgramTempList = asyncWeChatProgramTempList; + } + + public String getImagePath() { + return imagePath; + } + + public void setImagePath(String imagePath) { + this.imagePath = imagePath; + } +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/config/RedisConfig.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/config/RedisConfig.java new file mode 100644 index 0000000..1bc163e --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/config/RedisConfig.java @@ -0,0 +1,145 @@ +package com.zbkj.common.config; + +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.PropertyAccessor; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.connection.RedisStandaloneConfiguration; +import org.springframework.data.redis.connection.jedis.JedisClientConfiguration; +import org.springframework.data.redis.connection.jedis.JedisConnectionFactory; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; +import org.springframework.data.redis.serializer.StringRedisSerializer; +import redis.clients.jedis.JedisPoolConfig; + +import java.time.Duration; + +/** + * Redis配置组件 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Configuration +@EnableCaching +public class RedisConfig { + + @Value("${spring.redis.host}") + private String redisHost; + + @Value("${spring.redis.port}") + private int redisPort; + + @Value("${spring.redis.password}") + private String redisPass; + + @Value("${spring.redis.database}") + private int redisDb; + + @Value("${spring.redis.timeout}") + private String timeout; + + @Value("${spring.redis.jedis.pool.max-active}") + private int maxTotal; + + @Value("${spring.redis.jedis.pool.max-idle}") + private int maxIdle; + + @Value("${spring.redis.jedis.pool.min-idle}") + private int minIdle; + + @Value("${spring.redis.jedis.pool.max-wait}") + private int maxWaitMillis; + + @Value("${spring.redis.jedis.pool.time-between-eviction-runs}") + private String timeBetweenEvictionRunsMillis; + + @Bean + public JedisPoolConfig jedisPoolConfig() { + JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); + jedisPoolConfig.setMaxIdle(maxIdle); + jedisPoolConfig.setMaxTotal(maxTotal); + jedisPoolConfig.setMaxWaitMillis(maxWaitMillis); + jedisPoolConfig.setMinIdle(minIdle); + jedisPoolConfig.setTimeBetweenEvictionRunsMillis(Integer.parseInt(timeBetweenEvictionRunsMillis)); + return jedisPoolConfig; + } + + @Bean + public RedisConnectionFactory taskConnectionFactory() { + RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration(); + redisStandaloneConfiguration.setPort(redisPort); + redisStandaloneConfiguration.setHostName(redisHost); + redisStandaloneConfiguration.setDatabase(redisDb); + redisStandaloneConfiguration.setPassword(redisPass); + //获得默认的连接池构造 + //这里需要注意的是,RedisConnectionFactoryJ对于Standalone模式的没有(RedisStandaloneConfiguration,jedisPoolConfig)的构造函数,对此 + //我们用JedisClientConfiguration接口的builder方法实例化一个构造器,还得类型转换 + JedisClientConfiguration.DefaultJedisClientConfigurationBuilder jpConfigBuilder = (JedisClientConfiguration.DefaultJedisClientConfigurationBuilder) JedisClientConfiguration.builder(); + //修改我们的连接池配置 + jpConfigBuilder.usePooling(); + jpConfigBuilder.poolConfig(jedisPoolConfig()); + jpConfigBuilder.readTimeout(Duration.ofMillis(Integer.parseInt(timeout))); + jpConfigBuilder.connectTimeout(Duration.ofMillis(Integer.parseInt(timeout))); + //通过构造器来构造jedis客户端配置 + JedisClientConfiguration jedisClientConfiguration = jpConfigBuilder.build(); + //配置连接池属性 +// jedisConnectionFactory.setTimeout(Integer.parseInt(timeout)); + return new JedisConnectionFactory(redisStandaloneConfiguration, jedisClientConfiguration); + } + + /** + * redisTemplate相关配置 + * @param redisConnectionFactory redis链接工厂 + * + */ + @Bean + public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){ + //配置redisTemplate + RedisTemplate redisTemplate = new RedisTemplate<>(); + redisTemplate.setConnectionFactory(redisConnectionFactory); + // 使用StringRedisSerializer来序列化和反序列化redis的key值 + StringRedisSerializer stringSerializer = new StringRedisSerializer(); + // 用Jackson2JsonRedisSerializer来序列化和反序列化redis的value值 + Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = serializer(); + + redisTemplate.setKeySerializer(stringSerializer);//key序列化 + redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);//value序列化 + redisTemplate.setHashKeySerializer(stringSerializer);//Hash key序列化 + redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);//Hash value序列化 + redisTemplate.afterPropertiesSet(); + return redisTemplate; + } + + /** + * 配置Jackson2JsonRedisSerializer序列化策略 + */ + private Jackson2JsonRedisSerializer serializer() { + //设置序列化 + Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class); + ObjectMapper om = new ObjectMapper(); + // 指定要序列化的域,field,get和set,以及修饰符范围,ANY是都有包括private和public + om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); + // 指定序列化输入的类型,类必须是非final修饰的,final修饰的类,比如String,Integer等会跑出异常 + om.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL); + // 不存在的字段,不被序列化 + om.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + jackson2JsonRedisSerializer.setObjectMapper(om); + return jackson2JsonRedisSerializer; + } + +} + + diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/AlipayConfig.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/AlipayConfig.java new file mode 100644 index 0000000..a30cc4c --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/AlipayConfig.java @@ -0,0 +1,51 @@ +package com.zbkj.common.constants; + +/** + * 支付宝配置 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class AlipayConfig { + + // 商户appid + public static String APPID = "ali_pay_appid"; + + // 私钥 pkcs8格式的 + public static String RSA_PRIVATE_KEY = "ali_pay_private_key"; + + // 服务器异步通知页面路径 需http://或者https://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问 + public static String notify_url = "ali_pay_notifu_url"; + + // 页面跳转同步通知页面路径 需http://或者https://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问 商户可以自定义同步跳转地址 + public static String return_url = "ali_pay_return_url"; + + // 用户付款中途退出返回商户网站的地址 + public static String quit_url = "ali_pay_quit_url"; + + // 请求网关地址 + public static String URL = "https://openapi.alipay.com/gateway.do"; + + // 编码 + public static String CHARSET = "UTF-8"; + + // 返回格式 + public static String FORMAT = "json"; + + // 支付宝公钥 + public static String ALIPAY_PUBLIC_KEY_2 = "ali_pay_public_key2"; + public static String ALIPAY_PUBLIC_KEY = "ali_pay_public_key"; + // 日志记录目录 + public static String LOG_PATH = "/log"; + // RSA2 + public static String SIGNTYPE = "RSA2"; + + // 是否开启支付宝支付 + public static String ALIPAY_IS_OPEN = "ali_pay_is_open"; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/BargainConstants.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/BargainConstants.java new file mode 100644 index 0000000..374878c --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/BargainConstants.java @@ -0,0 +1,24 @@ +package com.zbkj.common.constants; + +/** + * 砍价常量类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class BargainConstants { + + /** 用户砍价状态-参与中 */ + public static final Integer BARGAIN_USER_STATUS_PARTICIPATE = 1; + /** 用户砍价状态-活动结束参与失败 */ + public static final Integer BARGAIN_USER_STATUS_FAIL = 2; + /** 用户砍价状态-活动结束参与成功 */ + public static final Integer BARGAIN_USER_STATUS_SUCCESS = 3; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/BrokerageRecordConstants.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/BrokerageRecordConstants.java new file mode 100644 index 0000000..4abae48 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/BrokerageRecordConstants.java @@ -0,0 +1,58 @@ +package com.zbkj.common.constants; + +/** + * 佣金记录常量类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class BrokerageRecordConstants { + + /** 佣金记录类型—增加 */ + public static final Integer BROKERAGE_RECORD_TYPE_ADD = 1; + + /** 佣金记录类型—扣减 */ + public static final Integer BROKERAGE_RECORD_TYPE_SUB = 2; + + /** 佣金记录状态—创建 */ + public static final Integer BROKERAGE_RECORD_STATUS_CREATE = 1; + + /** 佣金记录状态—冻结期 */ + public static final Integer BROKERAGE_RECORD_STATUS_FROZEN = 2; + + /** 佣金记录状态—完成 */ + public static final Integer BROKERAGE_RECORD_STATUS_COMPLETE = 3; + + /** 佣金记录状态—失效(订单退款) */ + public static final Integer BROKERAGE_RECORD_STATUS_INVALIDATION = 4; + + /** 佣金记录状态—提现申请 */ + public static final Integer BROKERAGE_RECORD_STATUS_WITHDRAW = 5; + + /** 佣金记录关联类型—订单 */ + public static final String BROKERAGE_RECORD_LINK_TYPE_ORDER = "order"; + + /** 佣金记录关联类型—提现 */ + public static final String BROKERAGE_RECORD_LINK_TYPE_WITHDRAW = "withdraw"; + + /** 佣金记录关联类型—转余额 */ + public static final String BROKERAGE_RECORD_LINK_TYPE_YUE = "yue"; + + /** 佣金记录标题—订单获得佣金 */ + public static final String BROKERAGE_RECORD_TITLE_ORDER = "获得推广佣金"; + + /** 佣金记录标题—提现申请 */ + public static final String BROKERAGE_RECORD_TITLE_WITHDRAW_APPLY = "提现申请"; + + /** 佣金记录标题—提现拒绝 */ + public static final String BROKERAGE_RECORD_TITLE_WITHDRAW_FAIL = "提现申请拒绝"; + + /** 佣金记录标题—提现拒绝 */ + public static final String BROKERAGE_RECORD_TITLE_BROKERAGE_YUE = "佣金转余额"; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/CategoryConstants.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/CategoryConstants.java new file mode 100644 index 0000000..4b3ff5e --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/CategoryConstants.java @@ -0,0 +1,37 @@ +package com.zbkj.common.constants; + +/** + * 分类常量类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class CategoryConstants { + + /** 分类状态-正常 */ + public static final Integer CATEGORY_STATUS_NORMAL = 1; + /** 分类状态-失效 */ + public static final Integer CATEGORY_STATUS_INVALID = 0; + + /** 分类类型-产品分类 */ + public static final Integer CATEGORY_TYPE_PRODUCT = 1; + /** 分类类型-附件分类 */ + public static final Integer CATEGORY_TYPE_ATTACHMENT = 2; + /** 分类类型-文章分类 */ + public static final Integer CATEGORY_TYPE_ARTICLE = 3; + /** 分类类型-设置分类 */ + public static final Integer CATEGORY_TYPE_SETTING = 4; + /** 分类类型-菜单分类 */ + public static final Integer CATEGORY_TYPE_MENU = 5; + /** 分类类型-配置分类 */ + public static final Integer CATEGORY_TYPE_CONFIG = 6; + /** 分类类型-秒杀配置 */ + public static final Integer CATEGORY_TYPE_SECKILL = 7; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/Constants.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/Constants.java new file mode 100644 index 0000000..1e15f3a --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/Constants.java @@ -0,0 +1,566 @@ +package com.zbkj.common.constants; + +/** + * 配置类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class Constants { + public static final long TOKEN_EXPRESS_MINUTES = (60 * 24); //3小时 + + public static final int HTTPSTATUS_CODE_SUCCESS = 200; + + public static final int NUM_ZERO = 0; + public static final int NUM_ONE = 1; + public static final int NUM_TWO = 2; + public static final int NUM_THREE = 3; + public static final int NUM_FIVE = 5; + public static final int NUM_SEVEN = 7; + public static final int NUM_TEN = 10; + public static final int NUM_ONE_HUNDRED = 100; + //头部 token令牌key + public static final String HEADER_AUTHORIZATION_KEY = "Authori-zation"; + + //验证码redis key前缀 + public static final String VALIDATE_REDIS_KEY_PREFIX = "validate_code_"; + + + public static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss"; + public static final String DATE_FORMAT_UTC = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"; + public static final String DATE_FORMAT_DATE = "yyyy-MM-dd"; + public static final String DATE_FORMAT_YEAR = "yyyy"; + public static final String DATE_FORMAT_MONTH_DATE = "MM-dd"; + public static final String DATE_FORMAT_MONTH = "yyyy-MM"; + public static final String DATE_TIME_FORMAT_NUM = "yyyyMMddHHmmss"; + public static final String DATE_FORMAT_NUM = "yyyyMMdd"; + public static final String DATE_FORMAT_START = "yyyy-MM-dd 00:00:00"; + public static final String DATE_FORMAT_END = "yyyy-MM-dd 23:59:59"; + public static final String DATE_FORMAT_MONTH_START = "yyyy-MM-01 00:00:00"; + public static final String DATE_FORMAT_YEAR_START = "yyyy-01-01 00:00:00"; + public static final String DATE_FORMAT_YEAR_END = "yyyy-12-31 23:59:59"; + public static final String DATE_FORMAT_HHMMSS = "HH:mm:ss"; + public static final String DATE_FORMAT_START_PEREND = "00:00:00"; + public static final String DATE_FORMAT_END_PEREND = "23:59:59"; + public static final String DATE_FORMAT_HHMM = "yyyy-MM-dd HH:mm"; + + //后台管理员操作资金mark + public static final String USER_BILL_OPERATE_LOG_TITLE = "{$title}{$operate}了{$value}{$founds}"; + + //用户等级升级 + public static final String USER_LEVEL_OPERATE_LOG_MARK = "尊敬的用户 【{$userName}】, 在{$date}赠送会员等级成为{$levelName}会员"; + public static final String USER_LEVEL_UP_LOG_MARK = "尊敬的用户 【{$userName}】, 在{$date}您升级为为{$levelName}会员"; + + + //用户登录密码加密混淆字符串 + public static final String USER_LOGIN_PASSWORD_MD5_KEYWORDS = "crmeb"; + + //用户登token redis存储前缀 + public static final String USER_TOKEN_REDIS_KEY_PREFIX = "TOKEN_USER:"; + + + //用户登录方式 h5 + public static final String USER_LOGIN_TYPE_H5 = "h5"; + + //用户登录方式 公众号 + public static final String USER_LOGIN_TYPE_PUBLIC = "wechat"; + + //用户登录方式 小程序 + public static final String USER_LOGIN_TYPE_PROGRAM = "routine"; + + // 用户登录方式 App + public static final String USER_LOGIN_TYPE_IOS_WX = "iosWx"; + public static final String USER_LOGIN_TYPE_ANDROID_WX = "androidWx"; + + // 用户登录方式 App + public static final String USER_LOGIN_TYPE_IOS = "ios"; + + + //用户默认头像 + public static final String USER_DEFAULT_AVATAR_CONFIG_KEY = "h5_avatar"; + + //用户默认推广人id + public static final Integer USER_DEFAULT_SPREAD_ID = 0; + + //默认分页 + public static final int DEFAULT_PAGE = 1; + + //默认分页 + public static final int DEFAULT_LIMIT = 20; + + //升序排序 + public static final String SORT_ASC = "asc"; + + //降序排序 + public static final String SORT_DESC = "desc"; + + //导出最大数值 + public static final Integer EXPORT_MAX_LIMIT = 99999; + + //商品最多选择的分类数量 + public static final Integer PRODUCT_SELECT_CATEGORY_NUM_MAX = 10; + + //上传类型 + public static final String UPLOAD_TYPE_IMAGE = "crmebimage"; + + //上传类型 + public static final String UPLOAD_TYPE_FILE = "file"; + public static final String UPLOAD_MODEL_PATH_EXCEL = "excel";// excel + + //图片上传 + public static final String UPLOAD_IMAGE_EXT_STR_CONFIG_KEY = "image_ext_str";//图片上传 + public static final String UPLOAD_IMAGE_MAX_SIZE_CONFIG_KEY = "image_max_size"; + + //文件上传 + public static final String UPLOAD_FILE_EXT_STR_CONFIG_KEY = "file_ext_str"; + //最大上传文件 + public static final String UPLOAD_FILE_MAX_SIZE_CONFIG_KEY = "file_max_size"; + + // 移动端文章顶部的banner图最大数量 配置数据最小3最大10 + public static final String ARTICLE_BANNER_LIMIT = "news_slides_limit"; + + //城市数据 redis key + public static final String CITY_LIST = "city_list"; + //城市数据 tree redis key + public static final String CITY_LIST_TREE = "city_list_tree"; + //城市数据 tree redis key + public static final String CITY_LIST_LEVEL_1 = "city_list_level_1"; + + //商品库存变动队列key + public static final String PRODUCT_STOCK_UPDATE = "product_stock_update"; + // 商品秒杀库存队列Key + public static final String PRODUCT_SECKILL_STOCK_UPDATE = "product_seckill_stock_update"; + // 商品砍价库存队列Key + public static final String PRODUCT_BARGAIN_STOCK_UPDATE = "product_bargain_stock_update"; + // 商品拼团库存队列Key + public static final String PRODUCT_COMBINATION_STOCK_UPDATE = "product_combination_stock_update"; + //商品库存redis key + public static final String PRODUCT_STOCK_LIST = "product_stock_list"; + + + //消息模板队列key + public static final String WE_CHAT_MESSAGE_KEY_PUBLIC = "we_chat_public_message_list"; + public static final String WE_CHAT_MESSAGE_KEY_PROGRAM = "we_chat_program_message_list"; + public static final String WE_CHAT_MESSAGE_INDUSTRY_KEY = "we_chat_message_industry"; + + //config表数据redis + public static final String CONFIG_LIST = "config_list"; //配置列表 + + + //快递信息缓存 + public static final String LOGISTICS_KEY = "logistics_"; + + //config配置的key + public static final String CONFIG_KEY_SITE_URL = "site_url"; //域名 + public static final String CONFIG_KEY_API_URL = "api_url"; //admin接口地址 + public static final String CONFIG_KEY_FRONT_API_URL = "front_api_url"; //移动商城接口地址 + public static final String CONFIG_KEY_SITE_LOGO = "mobile_top_logo"; //logo地址 + public static final String CONFIG_KEY_MOBILE_LOGIN_LOGO = "mobile_login_logo"; // 移动端登录 logo + public static final String CONFIG_KEY_SITE_NAME = "site_name"; //网站名称 + public static final String CONFIG_SITE_TENG_XUN_MAP_KEY = "tengxun_map_key"; //腾讯地图key + public static final String CONFIG_BANK_LIST = "user_extract_bank"; //可提现银行 + public static final String CONFIG_EXTRACT_FREEZING_TIME = "extract_time"; //提现冻结时间 + public static final String CONFIG_EXTRACT_MIN_PRICE = "user_extract_min_price"; //提现最低金额 + public static final String CONFIG_RECHARGE_ATTENTION = "recharge_attention"; //充值注意事项 + + public static final String CONFIG_KEY_PAY_WE_CHAT_APP_ID = "pay_weixin_appid"; //公众号appId + public static final String CONFIG_KEY_PAY_WE_CHAT_MCH_ID = "pay_weixin_mchid"; //公众号配的商户号 + public static final String CONFIG_KEY_PAY_WE_CHAT_APP_SECRET = "pay_weixin_appsecret"; //公众号秘钥 + public static final String CONFIG_KEY_PAY_WE_CHAT_APP_KEY = "pay_weixin_key"; //公众号支付key + public static final String CONFIG_KEY_PAY_ROUTINE_APP_ID = "pay_routine_appid"; //小程序appId + public static final String CONFIG_KEY_PAY_ROUTINE_MCH_ID = "pay_routine_mchid"; //小程序分配的商户号 + public static final String CONFIG_KEY_PAY_ROUTINE_APP_SECRET = "pay_routine_appsecret"; //小程序秘钥 + public static final String CONFIG_KEY_PAY_ROUTINE_APP_KEY = "pay_routine_key"; //小程序支付key + + public static final String CONFIG_KEY_PAY_WE_CHAT_APP_APP_ID = "pay_weixin_app_appid"; //公众号appId + public static final String CONFIG_KEY_PAY_WE_CHAT_APP_MCH_ID = "pay_weixin_app_mchid"; //公众号配的商户号 + public static final String CONFIG_KEY_PAY_WE_CHAT_APP_APP_KEY = "pay_weixin_app_key"; //公众号支付key + + public static final String CONFIG_KEY_RECHARGE_MIN_AMOUNT = "store_user_min_recharge"; //最小充值金额 +// public static final String CONFIG_KEY_PROGRAM_LOGO = "routine_logo"; //小程序logo +// public static final String CONFIG_KEY_PUBLIC_LOGO = "wechat_avatar"; //公众号logo + + public static final String CONFIG_KEY_LOGISTICS_APP_CODE = "system_express_app_code"; //快递查询密钥 + + //云智服 小程序插件 + public static final String CONFIG_KEY_YZF_H5_URL = "yzf_h5_url"; //云智服H5 url + // 客服电话 + public static final String CONFIG_KEY_CONSUMER_HOTLINE = "consumer_hotline"; + // 客服电话服务开关 + public static final String CONFIG_KEY_TELEPHONE_SERVICE_SWITCH = "telephone_service_switch"; + //商品分类页配置 + public static final String CONFIG_CATEGORY_CONFIG = "category_page_config"; //商品分类页配置 + public static final String CONFIG_IS_SHOW_CATEGORY = "is_show_category"; //是否隐藏一级分类 + public static final String CONFIG_IS_PRODUCT_LIST_STYLE = "homePageSaleListStyle"; //首页商品列表模板配置 + // app 版本号 + public static final String CONFIG_APP_VERSION = "app_version"; + // android版本地址 + public static final String CONFIG_APP_ANDROID_ADDRESS = "android_address"; + // ios版本地址 + public static final String CONFIG_APP_IOS_ADDRESS = "ios_address"; + // 开放式升级 + public static final String CONFIG_APP_OPEN_UPGRADE = "open_upgrade"; + + + + //分销 + public static final String CONFIG_KEY_STORE_BROKERAGE_LEVEL = "store_brokerage_rate_num"; //返佣比例前缀 + public static final String CONFIG_KEY_STORE_BROKERAGE_RATE_ONE = "store_brokerage_ratio"; //一级返佣比例前缀 + public static final String CONFIG_KEY_STORE_BROKERAGE_RATE_TWO = "store_brokerage_two"; //二级返佣比例前缀 + public static final String CONFIG_KEY_STORE_BROKERAGE_USER_EXTRACT_MIN_PRICE = "user_extract_min_price"; //提现最低金额 + public static final String CONFIG_KEY_STORE_BROKERAGE_MODEL = "store_brokerage_status"; //分销模式1-指定分销2-人人分销 + public static final String CONFIG_KEY_STORE_BROKERAGE_USER_EXTRACT_BANK = "user_extract_bank"; //提现银行卡 + public static final String CONFIG_KEY_STORE_BROKERAGE_EXTRACT_TIME = "extract_time"; //佣金冻结时间 + public static final String CONFIG_KEY_STORE_INTEGRAL_EXTRACT_TIME = "freeze_integral_day"; //积分冻结时间 + public static final String CONFIG_KEY_STORE_BROKERAGE_PERSON_PRICE = "store_brokerage_price"; //人人分销满足金额 + public static final String CONFIG_KEY_STORE_BROKERAGE_IS_OPEN = "brokerage_func_status"; //分销启用 + public static final String CONFIG_KEY_STORE_BROKERAGE_BIND_TYPE = "brokerageBindind"; //分销关系绑定0-所有游湖,2-新用户 + + //积分 + public static final String CONFIG_KEY_INTEGRAL_RATE = "integral_ratio"; //积分抵用比例(1积分抵多少金额 + public static final String CONFIG_KEY_INTEGRAL_RATE_ORDER_GIVE = "order_give_integral"; //下单支付金额按比例赠送积分(实际支付1元赠送多少积分 + + //分销 + public static final String CONFIG_KEY_DISTRIBUTION_TYPE = "brokerage_bindind"; + + //验证码过期时间 + public static final String CONFIG_KEY_SMS_CODE_EXPIRE = "sms_code_expire"; + + + //config配置的formId + public static final int CONFIG_FORM_ID_INDEX = 133; //首页配置 + public static final int CONFIG_FORM_ID_PUBLIC = 65; //公众号配置 + + + //第三方登录token类型 + public static final int THIRD_LOGIN_TOKEN_TYPE_PUBLIC = 1; //公众号 + public static final int THIRD_LOGIN_TOKEN_TYPE_PROGRAM = 2; //小程序 + public static final int THIRD_LOGIN_TOKEN_TYPE_UNION_ID = 3; //unionid + public static final int THIRD_ADMIN_LOGIN_TOKEN_TYPE_PUBLIC = 4; //后台登录公众号 + public static final int THIRD_LOGIN_TOKEN_TYPE_IOS_WX = 5; //ios 微信 + public static final int THIRD_LOGIN_TOKEN_TYPE_ANDROID_WX = 6; //android微信 + public static final int THIRD_LOGIN_TOKEN_TYPE_IOS = 7; //ios + + + // 商品类型 活动类型 0=商品,1=秒杀,2=砍价,3=拼团 attrResult表用到 + public static final Integer PRODUCT_TYPE_NORMAL = 0; + public static final String PRODUCT_TYPE_NORMAL_STR = "默认"; + public static final Integer PRODUCT_TYPE_SECKILL = 1; + public static final String PRODUCT_TYPE_SECKILL_STR = "秒杀"; + public static final Integer PRODUCT_TYPE_BARGAIN = 2; + public static final String PRODUCT_TYPE_BARGAIN_STR = "砍价"; + public static final Integer PRODUCT_TYPE_PINGTUAN= 3; + public static final String PRODUCT_TYPE_PINGTUAN_STR= "拼团"; + public static final Integer PRODUCT_TYPE_COMPONENT= 4; + public static final String PRODUCT_TYPE_COMPONENT_STR= "组件"; + public static final Integer PRODUCT_TYPE_GROUP = 0; + + + + + //group gid + public static final Integer GROUP_DATA_ID_INDEX_BEST_BANNER = 37; //中部推荐banner图 + public static final Integer GROUP_DATA_ID_INDEX_BANNER = 48; //首页banner滚动图 + public static final Integer GROUP_DATA_ID_INDEX_RECOMMEND_BANNER = 52; //首页精品推荐Banner图片 + public static final Integer GROUP_DATA_ID_ORDER_STATUS_PIC = 53; //订单详情状态图 + public static final Integer GROUP_DATA_ID_USER_CENTER_MENU = 54; //个人中心菜单 + public static final Integer GROUP_DATA_ID_SIGN = 55; //签到配置 + public static final Integer GROUP_DATA_ID_HOT_SEARCH = 56; //热门搜索 + public static final Integer GROUP_DATA_ID_INDEX_HOT_BANNER = 57; //热门榜单推荐Banner图片 + public static final Integer GROUP_DATA_ID_INDEX_NEW_BANNER = 58; //首发新品推荐Banner图片 + public static final Integer GROUP_DATA_ID_INDEX_BENEFIT_BANNER = 59; //首页促销单品推荐Banner图片 + public static final Integer GROUP_DATA_ID_SPREAD_BANNER_LIST = 60; //推广海报图 + public static final Integer GROUP_DATA_ID_RECHARGE_LIST = 62; //充值金额设置 + public static final Integer GROUP_DATA_ID_USER_CENTER_BANNER = 65; //个人中心轮播图 + public static final Integer GROUP_DATA_ID_INDEX_MENU = 67; //导航模块 + public static final Integer GROUP_DATA_ID_INDEX_NEWS_BANNER = 68; //首页滚动新闻 + public static final Integer GROUP_DATA_ID_INDEX_ACTIVITY_BANNER = 69; //首页活动区域图片 + public static final Integer GROUP_DATA_ID_INDEX_EX_BANNER = 70; //首页超值爆款 + public static final Integer GROUP_DATA_ID_INDEX_KEYWORDS = 71; //热门搜索 + public static final Integer GROUP_DATA_ID_ADMIN_LOGIN_BANNER_IMAGE_LIST = 72; //后台登录页面轮播图 + public static final Integer GROUP_DATA_ID_COMBINATION_LIST_BANNNER = 73; //拼团列表banner + + + + //签到 + public static final Integer SIGN_TYPE_INTEGRAL = 1; //积分 + public static final Integer SIGN_TYPE_EXPERIENCE = 2; //经验 + public static final String SIGN_TYPE_INTEGRAL_TITLE = "签到积分奖励"; //积分 + public static final String SIGN_TYPE_EXPERIENCE_TITLE = "签到经验奖励"; //经验 + + + //会员搜索日期类型 + public static final String SEARCH_DATE_DAY = "today"; //今天 + public static final String SEARCH_DATE_YESTERDAY = "yesterday"; //昨天 + public static final String SEARCH_DATE_LATELY_7 = "lately7"; //最近7天 + public static final String SEARCH_DATE_LATELY_30 = "lately30"; //最近30天 + public static final String SEARCH_DATE_WEEK = "week"; //本周 + public static final String SEARCH_DATE_PRE_WEEK = "preWeek"; //上周 + public static final String SEARCH_DATE_MONTH = "month"; //本月 + public static final String SEARCH_DATE_PRE_MONTH = "preMonth"; //上月 + public static final String SEARCH_DATE_YEAR = "year"; //年 + public static final String SEARCH_DATE_PRE_YEAR = "preYear"; //上一年 + + //分类服务类型 类型,1 产品分类,2 附件分类,3 文章分类, 4 设置分类, 5 菜单分类, 6 配置分类, 7 秒杀配置 + public static final int CATEGORY_TYPE_PRODUCT = 1; //产品 + public static final int CATEGORY_TYPE_ATTACHMENT = 2; //附件分类 + public static final int CATEGORY_TYPE_ARTICLE = 3; //文章分类 + public static final int CATEGORY_TYPE_SET = 4; //设置分类 + public static final int CATEGORY_TYPE_MENU = 5; //菜单分类 + public static final int CATEGORY_TYPE_CONFIG = 6; //配置分类 + public static final int CATEGORY_TYPE_SKILL = 7; //秒杀配置 + + //首页Banner图片 + public static final int INDEX_RECOMMEND_BANNER = 1; //首页精品推荐Banner图片 + public static final int INDEX_HOT_BANNER = 2; //热门榜单推荐Banner图片 + public static final int INDEX_NEW_BANNER = 3; //首页首发新品推荐Banner图片 + public static final int INDEX_BENEFIT_BANNER = 4; //首页促销单品推荐Banner图片 + public static final int INDEX_LIMIT_DEFAULT = 3; //首页默认list分页条数 + public static final int INDEX_GOOD_BANNER = 5; //优选推荐 + + public static final String INDEX_BAST_LIMIT = "bastNumber"; //精品推荐个数 + public static final String INDEX_FIRST_LIMIT = "firstNumber"; //首发新品个数 + public static final String INDEX_SALES_LIMIT = "promotionNumber"; //促销单品个数 + public static final String INDEX_HOT_LIMIT = "hotNumber"; //热门推荐个数 + + + //用户资金 + public static final String USER_BILL_CATEGORY_MONEY = "now_money"; //用户余额 + public static final String USER_BILL_CATEGORY_INTEGRAL = "integral"; //积分 + public static final String USER_BILL_CATEGORY_SHARE = "share"; //分享 + public static final String USER_BILL_CATEGORY_EXPERIENCE = "experience"; //经验 + public static final String USER_BILL_CATEGORY_BROKERAGE_PRICE = "brokerage_price"; //佣金金额 + public static final String USER_BILL_CATEGORY_SIGN_NUM = "sign_num"; //签到天数 + + public static final String USER_BILL_TYPE_BROKERAGE = "brokerage"; //推广佣金 + public static final String USER_BILL_TYPE_DEDUCTION = "deduction"; //抵扣 + public static final String USER_BILL_TYPE_EXTRACT = "extract"; //提现 + public static final String USER_BILL_TYPE_TRANSFER_IN = "transferIn"; //佣金转入余额 + public static final String USER_BILL_TYPE_GAIN = "gain"; //购买商品赠送 + public static final String USER_BILL_TYPE_PAY_MONEY = "pay_money"; //购买 + public static final String USER_BILL_TYPE_PAY_PRODUCT = "pay_product"; //购买商品 + public static final String USER_BILL_TYPE_PAY_PRODUCT_INTEGRAL_BACK = "pay_product_integral_back"; //商品退积分 + public static final String USER_BILL_TYPE_PAY_PRODUCT_REFUND = "pay_product_refund"; //商品退款 + public static final String USER_BILL_TYPE_RECHARGE = "recharge"; //佣金转入 + public static final String USER_BILL_TYPE_PAY_RECHARGE = "pay_recharge"; //充值 + public static final String USER_BILL_TYPE_SHARE = "share"; //用户分享记录 + public static final String USER_BILL_TYPE_SIGN = "sign"; //签到 + public static final String USER_BILL_TYPE_ORDER = "order"; //订单 + public static final String USER_BILL_TYPE_PAY_ORDER = "pay_order"; //订单支付 + public static final String USER_BILL_TYPE_SYSTEM_ADD = "system_add"; //系统增加 + public static final String USER_BILL_TYPE_SYSTEM_SUB = "system_sub"; //系统减少 + public static final String USER_BILL_TYPE_PAY_MEMBER = "pay_member";// 会员支付 + public static final String USER_BILL_TYPE_OFFLINE_SCAN = "offline_scan";// 线下支付 + public static final String USER_BILL_TYPE_USER_RECHARGE_REFUND = "user_recharge_refund";// 用户充值退款 + + //订单状态 + public static final String ORDER_STATUS_ALL = "all"; //所有 + public static final String ORDER_STATUS_UNPAID = "unPaid"; //未支付 + public static final String ORDER_STATUS_NOT_SHIPPED = "notShipped"; //未发货 + public static final String ORDER_STATUS_SPIKE = "spike"; //待收货 + public static final String ORDER_STATUS_BARGAIN = "bargain"; //已收货待评价 + public static final String ORDER_STATUS_COMPLETE = "complete"; //交易完成 + public static final String ORDER_STATUS_TOBE_WRITTEN_OFF = "toBeWrittenOff"; //待核销 + public static final String ORDER_STATUS_APPLY_REFUNDING = "applyRefund"; //申请退款 + public static final String ORDER_STATUS_REFUNDING = "refunding"; //退款中 + public static final String ORDER_STATUS_REFUNDED = "refunded"; //已退款 + public static final String ORDER_STATUS_DELETED = "deleted"; //已删除 + + public static final String ORDER_STATUS_STR_UNPAID = "未支付"; //未支付 + public static final String ORDER_STATUS_STR_NOT_SHIPPED = "未发货"; //未发货 + public static final String ORDER_STATUS_STR_SPIKE = "待收货"; //待收货 + public static final String ORDER_STATUS_STR_BARGAIN = "待评价"; //已收货待评价 + public static final String ORDER_STATUS_STR_TAKE = "用户已收货"; //用户已收货 + public static final String ORDER_STATUS_STR_COMPLETE = "交易完成"; //交易完成 + public static final String ORDER_STATUS_STR_TOBE_WRITTEN_OFF = "待核销"; //待核销 + public static final String ORDER_STATUS_STR_APPLY_REFUNDING = "申请退款"; //申请退款 + public static final String ORDER_STATUS_STR_REFUNDING = "退款中"; //退款中 + public static final String ORDER_STATUS_STR_REFUNDED = "已退款"; //已退款 + public static final String ORDER_STATUS_STR_DELETED = "已删除"; //已删除 + + // H5 端订单状态 + public static final int ORDER_STATUS_H5_UNPAID = 0; // 未支付 + public static final int ORDER_STATUS_H5_NOT_SHIPPED = 1; // 待发货 + public static final int ORDER_STATUS_H5_SPIKE = 2; // 待收货 + public static final int ORDER_STATUS_H5_JUDGE = 3; // 待评价 + public static final int ORDER_STATUS_H5_COMPLETE = 4; // 已完成 + public static final int ORDER_STATUS_H5_VERIFICATION = 5; // 待核销 + public static final int ORDER_STATUS_H5_REFUNDING = -1; // 退款中 + public static final int ORDER_STATUS_H5_REFUNDED = -2; // 已退款 + public static final int ORDER_STATUS_H5_REFUND = -3; // 退款 + + public static final int ORDER_STATUS_INT_PAID = 0; //已支付 + public static final int ORDER_STATUS_INT_SPIKE = 1; //待收货 + public static final int ORDER_STATUS_INT_BARGAIN = 2; //已收货,待评价 + public static final int ORDER_STATUS_INT_COMPLETE = 3; //已完成 + + + //订单操作redis队列 + public static final String ORDER_TASK_REDIS_KEY_AFTER_DELETE_BY_USER = "alterOrderDeleteByUser"; // 用户删除订单后续操作 + public static final String ORDER_TASK_REDIS_KEY_AFTER_COMPLETE_BY_USER = "alterOrderCompleteByUser"; // 用户完成订单后续操作 + public static final String ORDER_TASK_REDIS_KEY_AFTER_CANCEL_BY_USER = "alterOrderCancelByUser"; // 用户取消订单后续操作 + public static final String ORDER_TASK_REDIS_KEY_AFTER_REFUND_BY_USER = "alterOrderRefundByUser"; // 用户订单退款后续操作 + + public static final String ORDER_STATUS_CACHE_CREATE_ORDER = "cache_key_create_order"; + + //支付方式 + public static final String PAY_TYPE_WE_CHAT = "weixin"; //微信支付 + public static final String PAY_TYPE_YUE = "yue"; //余额支付 + public static final String PAY_TYPE_OFFLINE = "offline"; //线下支付 + public static final String PAY_TYPE_ALI_PAY = "alipay"; //支付宝 + + //支付客户端类型 + public static final String PAY_TYPE_WE_CHAT_FROM_H5 = "weixinh5"; //H5唤起微信支付 + public static final String PAY_TYPE_WE_CHAT_FROM_PUBLIC = "public"; //公众号 + public static final String PAY_TYPE_WE_CHAT_FROM_PROGRAM = "routine"; //小程序 + + //后台微信登录类型 + public static final String ADMIN_LOGIN_TYPE_WE_CHAT_FROM_PUBLIC = "admin_public"; //公众号 + + + + //支付方式 + public static final String PAY_TYPE_STR_WE_CHAT = "微信支付"; //微信支付 + public static final String PAY_TYPE_STR_YUE = "余额支付"; //余额支付 + public static final String PAY_TYPE_STR_OFFLINE = "线下支付"; //线下支付 + public static final String PAY_TYPE_STR_ALI_PAY = "支付宝支付"; //支付宝 + public static final String PAY_TYPE_STR_OTHER = "其他支付"; //其他支付 + + //需要支付的业务类型 + public static final String SERVICE_PAY_TYPE_ORDER = "order"; //订单 + public static final String SERVICE_PAY_TYPE_RECHARGE = "recharge"; //充值 + + + + //订单操作类型 + public static final String ORDER_STATUS_STR_SPIKE_KEY = "send"; //待收货 KEY + public static final String ORDER_LOG_REFUND_PRICE = "refund_price"; //退款 + public static final String ORDER_LOG_EXPRESS = "express"; //快递 + public static final String ORDER_LOG_DELIVERY = "delivery"; //送货 + public static final String ORDER_LOG_DELIVERY_GOODS = "delivery_goods"; //送货 + public static final String ORDER_LOG_REFUND_REFUSE = "refund_refuse"; //不退款 + public static final String ORDER_LOG_REFUND_APPLY = "apply_refund"; // + public static final String ORDER_LOG_PAY_SUCCESS = "pay_success"; //支付成功 + public static final String ORDER_LOG_DELIVERY_VI = "delivery_fictitious"; //虚拟发货 + public static final String ORDER_LOG_EDIT = "order_edit"; //编辑订单 + public static final String ORDER_LOG_PAY_OFFLINE = "offline"; //线下付款订单 + + + // 订单缓存 + public static final long ORDER_CASH_CONFIRM = (60); + public static final String ORDER_CACHE_PER = "ORDER_CACHE:"; // redis缓存订单前缀 + + //订单操作类型 -> 消息 + public static final String ORDER_LOG_MESSAGE_REFUND_PRICE = "退款给用户{amount}元"; //退款 + public static final String ORDER_LOG_MESSAGE_EXPRESS = "已发货 快递公司:{deliveryName}, 快递单号:{deliveryCode}"; //快递 + public static final String ORDER_LOG_MESSAGE_DELIVERY = "已配送 发货人:{deliveryName}, 发货人电话:{deliveryCode}"; //送货 + public static final String ORDER_LOG_MESSAGE_DELIVERY_FICTITIOUS = "已虚拟发货"; //已虚拟发货 + public static final String ORDER_LOG_MESSAGE_REFUND_REFUSE = "不退款款因:{reason}"; //不退款款因 + public static final String ORDER_LOG_MESSAGE_PAY_SUCCESS = "用户付款成功"; //用户付款成功 + + public static final String ORDER_NO_PREFIX_WE_CHAT = "wx"; //微信平台下单订单号前缀 + public static final String ORDER_NO_PREFIX_H5 = "h5"; //微信平台下单订单号前缀 + + //支付渠道 订单表 + public static final int ORDER_PAY_CHANNEL_PUBLIC = 0; //公众号 + public static final int ORDER_PAY_CHANNEL_PROGRAM = 1; //小程序 + public static final int ORDER_PAY_CHANNEL_H5 = 2; //H5 + public static final int ORDER_PAY_CHANNEL_YUE = 3; //余额 + public static final int ORDER_PAY_CHANNEL_APP_IOS = 4; //app-ios + public static final int ORDER_PAY_CHANNEL_APP_ANDROID = 5; //app-android + + //微信消息模板 tempKey + public static final String WE_CHAT_TEMP_KEY_FIRST = "first"; + public static final String WE_CHAT_TEMP_KEY_END = "remark"; + // 公众号模板消息 + public static final String WE_CHAT_TEMP_KEY_COMBINATION_SUCCESS = "OPENTM407456411";// 拼团成功 + public static final String WE_CHAT_TEMP_KEY_BARGAIN_SUCCESS = "OPENTM410292733";// 砍价成功 + public static final String WE_CHAT_TEMP_KEY_EXPRESS = "OPENTM200565259";// 订单发货提醒 + public static final String WE_CHAT_TEMP_KEY_DELIVERY = "OPENTM207707249";// 订单配送通知 + public static final String WE_CHAT_TEMP_KEY_ORDER_PAY = "OPENTM207791277";// 订单支付成功通知 + public static final String WE_CHAT_TEMP_KEY_ORDER_RECEIVING = "OPENTM413386489";// 订单收货通知 + public static final String WE_CHAT_TEMP_KEY_ORDER_REFUND = "OPENTM207791277";// 退款进度通知 + public static final String WE_CHAT_PUBLIC_TEMP_KEY_RECHARGE = "OPENTM200565260";// 充值成功 + + // 小程序服务通知 + public static final String WE_CHAT_PROGRAM_TEMP_KEY_COMBINATION_SUCCESS = "5164";// 拼团成功 + public static final String WE_CHAT_PROGRAM_TEMP_KEY_BARGAIN_SUCCESS = "2920";// 砍价成功 + public static final String WE_CHAT_PROGRAM_TEMP_KEY_EXPRESS = "467";// 订单发货提醒 + public static final String WE_CHAT_PROGRAM_TEMP_KEY_DELIVERY = "14198";// 订单配送通知 + public static final String WE_CHAT_PROGRAM_TEMP_KEY_ORDER_PAY = "516";// 订单支付成功通知 + public static final String WE_CHAT_PROGRAM_TEMP_KEY_ORDER_RECEIVING = "9283";// 订单收货通知 + public static final String WE_CHAT_PROGRAM_TEMP_KEY_RECHARGE = "OPENTM200565260"; + + + + //CND URL测试用 + public static String CND_URL = "https://wuht-1300909283.cos.ap-chengdu.myqcloud.com"; + + //物流 https://market.aliyun.com/products/56928004/cmapi021863.html#sku=yuncode15863000015 + public static String LOGISTICS_API_URL = "https://wuliu.market.alicloudapi.com/kdi"; + + // 订单 基本 操作字样 + public static String RESULT_ORDER_NOTFOUND = "订单号 ${orderCode} 未找到"; + public static String RESULT_ORDER_NOTFOUND_IN_ID = "订单id ${orderId} 未找到"; + public static String RESULT_ORDER_PAYED = "订单号 ${orderCode} 已支付"; + public static String RESULT_ORDER_EDIT_PRICE_SAME = "修改价格不能和支付价格相同 原价 ${oldPrice} 修改价 ${editPrice}"; + public static String RESULT_ORDER_EDIT_PRICE_SUCCESS = "订单号 ${orderNo} 修改价格 ${price} 成功"; + public static String RESULT_ORDER_EDIT_PRICE_LOGS = "订单价格 ${orderPrice} 修改实际支付金额为 ${price} 元"; + + // 订单 支付 操作字样 + public static String RESULT_ORDER_PAY_OFFLINE = "订单号 ${orderNo} 现在付款 ${price} 成功"; + + // 订单核销 返回字样 Order response text info + public static String RESULT_VERIFICATION_ORDER_NOT_FUND = "核销码 ${vCode} 的订单未找到"; + public static String RESULT_VERIFICATION_ORDER_VED = "核销码 ${vCode} 的订单已核销"; + public static String RESULT_VERIFICATION_NOTAUTH = "没有核销权限"; + public static String RESULT_VERIFICATION_USER_EXIST = "当前用户已经是核销员"; + + + // QRcode Response text info + public static String RESULT_QRCODE_PRAMERROR = "生成二维码参数不合法"; + + // 砍价计算比例下行 + public static String BARGAIN_TATIO_DOWN = "0.2"; + // 砍价计算比例上行 + public static String BARGAIN_TATIO_UP = "0.8"; + + // 时间类型开始时间 + public static String DATE_TIME_TYPE_BEGIN = "begin"; + + // 时间类型结束时间 + public static String DATE_TIME_TYPE_END = "end"; + + // 商品评论类型——普通商品 + public static String STORE_REPLY_TYPE_PRODUCT = "product"; + // 商品评论类型——秒杀 + public static String STORE_REPLY_TYPE_SECKILL = "seckill"; + // 商品评论类型——拼团 + public static String STORE_REPLY_TYPE_PINTUAN = "pintuan"; + // 商品评论类型——砍价 + public static String STORE_REPLY_TYPE_BARGAIN = "bargain"; + + // 商品记录Key(pv、uv)用 + public static String PRODUCT_LOG_KEY = "visit_log_key"; + + public static final String FAIL = "FAIL"; + public static final String SUCCESS = "SUCCESS"; + + // 订单取消Key + public static final String ORDER_AUTO_CANCEL_KEY = "order_auto_cancel_key"; + + /** 公共开关:0关闭 */ + public static final String COMMON_SWITCH_CLOSE = "0"; + /** 公共开关:1开启 */ + public static final String COMMON_SWITCH_OPEN = "1"; + + /** 公共JS配置 */ + // CRMEB chat 统计 + public static final String JS_CONFIG_CRMEB_CHAT_TONGJI="crmeb_tongji_js"; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/CouponConstants.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/CouponConstants.java new file mode 100644 index 0000000..fea50fb --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/CouponConstants.java @@ -0,0 +1,71 @@ +package com.zbkj.common.constants; + +/** + * 优惠券常量类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class CouponConstants { + + /** + * --------------------------------------- + * --------优惠券常量---------------------- + * --------------------------------------- + */ + + /** 优惠券类型—手动领取 */ + public static final Integer COUPON_TYPE_RECEIVE = 1; + + /** 优惠券类型—新人券 */ + public static final Integer COUPON_TYPE_NEW_PEOPLE = 2; + + /** 优惠券类型—赠送券 */ + public static final Integer COUPON_TYPE_GIVE_AWAY = 3; + + /** 优惠券使用类型-通用 */ + public static final Integer COUPON_USE_TYPE_COMMON = 1; + + /** 优惠券使用类型-商品 */ + public static final Integer COUPON_USE_TYPE_PRODUCT = 2; + + /** 优惠券使用类型-品类 */ + public static final Integer COUPON_USE_TYPE_CATEGORY = 3; + + + /** + * --------------------------------------- + * --------用户优惠券常量------------------- + * --------------------------------------- + */ + + /** 用户优惠券领取类型—用户注册 */ + public static final String STORE_COUPON_USER_TYPE_REGISTER = "new"; + + /** 用户优惠券领取类型—用户领取 */ + public static final String STORE_COUPON_USER_TYPE_GET = "receive"; + + /** 用户优惠券领取类型—后台发放 */ + public static final String STORE_COUPON_USER_TYPE_SEND = "send"; + + /** 用户优惠券领取类型—买赠送 */ + public static final String STORE_COUPON_USER_TYPE_BUY = "buy"; + + /** 用户优惠券状态—未使用 */ + public static final Integer STORE_COUPON_USER_STATUS_USABLE = 0; + + /** 用户优惠券状态—已使用 */ + public static final Integer STORE_COUPON_USER_STATUS_USED = 1; + + /** 用户优惠券状态—已失效 */ + public static final Integer STORE_COUPON_USER_STATUS_LAPSED = 2; + + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/ExperienceRecordConstants.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/ExperienceRecordConstants.java new file mode 100644 index 0000000..09ea077 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/ExperienceRecordConstants.java @@ -0,0 +1,46 @@ +package com.zbkj.common.constants; + +/** + * 经验记录常量类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class ExperienceRecordConstants { + + /** 经验记录类型—增加 */ + public static final Integer EXPERIENCE_RECORD_TYPE_ADD = 1; + + /** 经验记录类型—扣减 */ + public static final Integer EXPERIENCE_RECORD_TYPE_SUB = 2; + + /** 经验记录状态—创建 */ + public static final Integer EXPERIENCE_RECORD_STATUS_CREATE = 1; + + /** 经验记录关联类型—订单 */ + public static final String EXPERIENCE_RECORD_LINK_TYPE_ORDER = "order"; + + /** 经验记录关联类型—签到 */ + public static final String EXPERIENCE_RECORD_LINK_TYPE_SIGN = "sign"; + + /** 经验记录关联类型—系统后台 */ + public static final String EXPERIENCE_RECORD_LINK_TYPE_SYSTEM = "system"; + + /** 经验记录标题—用户订单付款成功 */ + public static final String EXPERIENCE_RECORD_TITLE_ORDER = "用户订单付款成功"; + + /** 经验记录标题—签到经验奖励 */ + public static final String EXPERIENCE_RECORD_TITLE_SIGN = "签到经验奖励"; + + /** 经验记录标题—用户退款 */ + public static final String EXPERIENCE_RECORD_TITLE_REFUND = "用户退款"; + + /** 经验记录标题—PC管理员操作 */ + public static final String EXPERIENCE_RECORD_TITLE_ADMIN = "管理员操作"; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/IntegralRecordConstants.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/IntegralRecordConstants.java new file mode 100644 index 0000000..06fd7bb --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/IntegralRecordConstants.java @@ -0,0 +1,55 @@ +package com.zbkj.common.constants; + +/** + * 积分记录常量类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class IntegralRecordConstants { + + /** 佣金记录类型—增加 */ + public static final Integer INTEGRAL_RECORD_TYPE_ADD = 1; + + /** 佣金记录类型—扣减 */ + public static final Integer INTEGRAL_RECORD_TYPE_SUB = 2; + + /** 佣金记录状态—创建 */ + public static final Integer INTEGRAL_RECORD_STATUS_CREATE = 1; + + /** 佣金记录状态—冻结期 */ + public static final Integer INTEGRAL_RECORD_STATUS_FROZEN = 2; + + /** 佣金记录状态—完成 */ + public static final Integer INTEGRAL_RECORD_STATUS_COMPLETE = 3; + + /** 佣金记录状态—失效(订单退款) */ + public static final Integer INTEGRAL_RECORD_STATUS_INVALIDATION = 4; + + /** 佣金记录关联类型—订单 */ + public static final String INTEGRAL_RECORD_LINK_TYPE_ORDER = "order"; + + /** 佣金记录关联类型—签到 */ + public static final String INTEGRAL_RECORD_LINK_TYPE_SIGN = "sign"; + + /** 佣金记录关联类型—系统后台 */ + public static final String INTEGRAL_RECORD_LINK_TYPE_SYSTEM = "system"; + + /** 佣金记录标题—用户订单付款成功 */ + public static final String BROKERAGE_RECORD_TITLE_ORDER = "用户订单付款成功"; + + /** 佣金记录标题—签到经验奖励 */ + public static final String BROKERAGE_RECORD_TITLE_SIGN = "签到积分奖励"; + + /** 佣金记录标题—后台积分操作 */ + public static final String BROKERAGE_RECORD_TITLE_SYSTEM = "后台积分操作"; + + /** 佣金记录标题—订单退款 */ + public static final String BROKERAGE_RECORD_TITLE_REFUND = "订单退款"; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/NotifyConstants.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/NotifyConstants.java new file mode 100644 index 0000000..08cb527 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/NotifyConstants.java @@ -0,0 +1,42 @@ +package com.zbkj.common.constants; + +/** + * 通知常量类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class NotifyConstants { + + /** 支付成功标记*/ + public static final String PAY_SUCCESS_MARK = "paySuccess"; + /** 发货标记 */ + public static final String DELIVER_GOODS_MARK = "deliverGoods"; + /** 收货标记 */ + public static final String RECEIPT_GOODS_MARK = "receiptGoods"; + /** 改价标记 */ + public static final String MODIFY_ORDER_PRICE_MARK = "modifyOrderPrice"; + /** 拼团成功标记 */ + public static final String GROUP_SUCCESS_MARK = "groupSuccess"; + /** 砍价成功标记 */ + public static final String BARGAINING_SUCCESS_MARK = "bargainingSuccess"; + /** 订单配送标记 */ + public static final String FULFILLMENT_ORDER_MARK = "fulfillmentOrder"; + /** 充值成功标记 */ + public static final String RECHARGE_SUCCESS_MARK = "rechargeSuccess"; + + /** 支付成功(管理员短信)标记 */ + public static final String PAY_SUCCESS_ADMIN_MARK = "adminPaySuccess"; + /** 收货(管理员)标记 */ + public static final String RECEIPT_GOODS_ADMIN_MARK = "adminReceiptGoods"; + /** 用户下单(管理员)标记 */ + public static final String PLACE_AN_ORDER_ADMIN_MARK = "adminPlaceAnOrder"; + /** 用户发起退款(管理员)标记 */ + public static final String APPLY_ORDER_REFUND_ADMIN_MARK = "adminApplyOrderRefund"; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/OnePassConstants.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/OnePassConstants.java new file mode 100644 index 0000000..83873f7 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/OnePassConstants.java @@ -0,0 +1,107 @@ +package com.zbkj.common.constants; + +/** + * 一号通常量类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class OnePassConstants { + + // 一号通token + public static final String ONE_PASS_TOKEN_KEY_PREFIX = "one_pass_token_{}"; + + // 接口异常错误码 + public static final Integer ONE_PASS_ERROR_CODE = 400; + + // 用户token前缀 + public static final String ONE_PASS_USER_TOKEN_PREFIX = "Bearer-"; + + // 一号通请求地址 + public static final String ONE_PASS_API_URL = "https://sms.crmeb.net/api/";// 正式环境 +// public static final String ONE_PASS_API_URL = "http://plat.crmeb.net/api/";// 测试环境 + + // 验证码地址 + public static final String REGISTER_CAPTCHA_URI = "user/code"; + + // 账号注册地址 + public static final String USER_REGISTER_URI = "user/register"; + + // 用户登录地址 + public static final String USER_LOGIN_URI = "user/login"; + + // 获取账号信息 + public static final String USER_INFO_URI = "user/info"; + + // 修改用户密码 + public static final String USER_UPDATE_PASSWORD_URI = "user/modify"; + + // 修改用户手机 + public static final String USER_UPDATE_PHONE_URI = "user/modify/phone"; + + // 套餐列表 + public static final String ONE_PASS_MEAL_LIST_URI = "meal/list"; + + // 支付二维码 + public static final String ONE_PASS_MEAL_CODE_URI = "meal/code"; + + // 开通短信服务 + public static final String ONE_PASS_SMS_OPEN_URI = "sms_v2/open"; + + // 开通物流服务 + public static final String ONE_PASS_EXPRESS_OPEN_URI = "expr/open"; + + // 开通产品复制服务 + public static final String ONE_PASS_COPY_OPEN_URI = "copy/open"; + + // 用量记录 + public static final String ONE_PASS_USER_RECORD_URI = "user/record"; + + // 修改签名 + public static final String ONE_PASS_SMS_MODIFY_URI = "sms_v2/modify"; + + // 短信模板列表 + public static final String ONE_PASS_TEMP_LIST_URI = "sms_v2/temps"; + + // 申请模板 + public static final String ONE_PASS_TEMP_APPLY_URI = "sms_v2/apply"; + + // 申请模板记录 + public static final String ONE_PASS_APPLYS_LIST_URI = "sms_v2/applys"; + + // 发送短信 + public static final String ONE_PASS_API_SEND_URI = "sms_v2/send"; + + // 快递公司 + public static final String ONE_PASS_API_EXPRESS_URI = "expr/express"; + + // 快递公司面单模板 + public static final String ONE_PASS_API_EXPRESS_TEMP_URI = "expr/temp"; + + // 复制商品 + public static final String ONE_PASS_API_COPY_GOODS_URI = "copy/goods"; + + // 电子面单 + public static final String ONE_PASS_API_EXPRESS_DUMP_URI = "expr/dump"; + + // 物流追踪 + public static final String ONE_PASS_API_EXPRESS_QUEARY_URI = "expr/query"; + + // 套餐类型——短信 + public static final String ONE_PASS_MEAL_TYPE_SMS = "sms"; + // 套餐类型——物流 + public static final String ONE_PASS_MEAL_TYPE_EXPR = "expr_query"; + // 套餐类型——电子面单 + public static final String ONE_PASS_MEAL_TYPE_DUMP = "expr_dump"; + // 套餐类型——产品复制 + public static final String ONE_PASS_MEAL_TYPE_COPY = "copy"; + + // 物流公司缓存key + public static final String ONE_PASS_EXPRESS_CACHE_KEY = "sync_express"; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/PayConstants.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/PayConstants.java new file mode 100644 index 0000000..4793d32 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/PayConstants.java @@ -0,0 +1,56 @@ +package com.zbkj.common.constants; + +/** + * 支付相关常量类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class PayConstants { + + //支付方式 + public static final String PAY_TYPE_WE_CHAT = "weixin"; //微信支付 + public static final String PAY_TYPE_YUE = "yue"; //余额支付 + public static final String PAY_TYPE_OFFLINE = "offline"; //线下支付 + public static final String PAY_TYPE_ALI_PAY = "alipay"; //支付宝 + public static final String PAY_TYPE_ZERO_PAY = "zeroPay"; // 零元付 + + //支付渠道 + public static final String PAY_CHANNEL_WE_CHAT_H5 = "weixinh5"; //H5唤起微信支付 + public static final String PAY_CHANNEL_WE_CHAT_PUBLIC = "public"; //公众号 + public static final String PAY_CHANNEL_WE_CHAT_PROGRAM = "routine"; //小程序 + public static final String PAY_CHANNEL_WE_CHAT_APP_IOS = "weixinAppIos"; //微信App支付ios + public static final String PAY_CHANNEL_WE_CHAT_APP_ANDROID = "weixinAppAndroid"; //微信App支付android + + public static final String PAY_CHANNEL_ALI_PAY = "alipay"; //支付宝支付 + public static final String PAY_CHANNEL_ALI_APP_PAY = "appAliPay"; //支付宝App支付 + + public static final String WX_PAY_TRADE_TYPE_JS = "JSAPI"; + public static final String WX_PAY_TRADE_TYPE_H5 = "MWEB"; + + //微信支付接口请求地址 + public static final String WX_PAY_API_URL = "https://api.mch.weixin.qq.com/"; + // 微信统一预下单 + public static final String WX_PAY_API_URI = "pay/unifiedorder"; + // 微信查询订单 + public static final String WX_PAY_ORDER_QUERY_API_URI = "pay/orderquery"; + // 微信支付回调地址 + public static final String WX_PAY_NOTIFY_API_URI = "/api/admin/payment/callback/wechat"; + // 微信退款回调地址 + public static final String WX_PAY_REFUND_NOTIFY_API_URI = "/api/admin/payment/callback/wechat/refund"; + + public static final String WX_PAY_SIGN_TYPE_MD5 = "MD5"; + public static final String WX_PAY_SIGN_TYPE_SHA256 = "HMAC-SHA256"; + + public static final String PAY_BODY = "Crmeb支付中心-订单支付"; + public static final String FIELD_SIGN = "sign"; + + // 公共号退款 + public static final String WX_PAY_REFUND_API_URI= "secapi/pay/refund"; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/ProductConstants.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/ProductConstants.java new file mode 100644 index 0000000..2621417 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/ProductConstants.java @@ -0,0 +1,40 @@ +package com.zbkj.common.constants; + +/** + * 商品常量类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class ProductConstants { + + /** 单规格属性 */ + public static final String SINGLE_ATTR_NAME = "规格"; + /** 单规格属性值 */ + public static final String SINGLE_ATTR_VALUE = "默认"; + + // 商品类型 活动类型 0=商品,1=秒杀,2=砍价,3=拼团 attrResult表用到 + /** 商品活动类型——普通商品 */ + public static final Integer PRODUCT_TYPE_NORMAL = 0; + /** 商品活动类型——普通商品文字 */ + public static final String PRODUCT_TYPE_NORMAL_STR = "默认"; + /** 商品活动类型——秒杀商品 */ + public static final Integer PRODUCT_TYPE_SECKILL = 1; + /** 商品活动类型——秒杀商品文字 */ + public static final String PRODUCT_TYPE_SECKILL_STR = "秒杀"; + /** 商品活动类型——砍价商品 */ + public static final Integer PRODUCT_TYPE_BARGAIN = 2; + /** 商品活动类型——砍价商品文字 */ + public static final String PRODUCT_TYPE_BARGAIN_STR = "砍价"; + /** 商品活动类型——拼团商品 */ + public static final Integer PRODUCT_TYPE_PINGTUAN= 3; + /** 商品活动类型——拼团商品文字 */ + public static final String PRODUCT_TYPE_PINGTUAN_STR= "拼团"; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/RedisConstatns.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/RedisConstatns.java new file mode 100644 index 0000000..77f068d --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/RedisConstatns.java @@ -0,0 +1,27 @@ +package com.zbkj.common.constants; + +/** + * Redis常量类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class RedisConstatns { + + /** 用户注册信息缓存Key */ + public static final String USER_REGISTER_KEY = "USER:REGISTER:"; + + /** 商品浏览量(每日) */ + public static final String PRO_PAGE_VIEW_KEY = "statistics:product:page_view:"; + public static final String PRO_PRO_PAGE_VIEW_KEY = "statistics:product:pro_page_view:{}:{}"; + + /** 商品加购量(每日) */ + public static final String PRO_ADD_CART_KEY = "statistics:product:add_cart:"; + public static final String PRO_PRO_ADD_CART_KEY = "statistics:product:pro_add_cart:{}:{}"; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/RegularConstants.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/RegularConstants.java new file mode 100644 index 0000000..a58b45f --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/RegularConstants.java @@ -0,0 +1,110 @@ +package com.zbkj.common.constants; + +/** + * 正则表达式类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class RegularConstants { + //数字 + public static final String NUMBER = "^-?[0-9]+"; + + //邮箱 + public static final String EMAIL = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$"; + + //手机 + public static final String PHONE = "^1([358][0-9]|4[579]|66|7[0135678]|9[89])[0-9]{8}$"; + + //只校验手机为11位 + public static final String PHONE_TWO = "^1\\d{10}$"; + + //整数或者小数: + public static final String INTEGER_OR_FLOAT = "^[0-9]+=\\.{0,1}[0-9]{0,2}$"; + + //n位的数字 + public static final String NUMBER_LEN = "^\\d{n}$"; + + //n位的数字 + public static final String NUMBER_MIN_LEN = "^\\d{n,}$"; + + //m~n位的数字 + public static final String NUMBER_LEN_RANGE = "^\\d{m,n}$"; + + //零和非零开头的数字 + public static final String NUMBER_LEN_UNSIGNED_CONTAINS_ZERO = "^(0|[1-9][0-9]*)$"; + + //有两位小数的正实数 + public static final String FLOAT_TWO_LEN = "^[0-9]+(.[0-9]{2})?$"; + + //有两位小数的正实数 + public static final String FLOAT_LEN_RANGE = "^[0-9]+(.[0-9]{1,3})?$"; + + //非零的正整数 + public static final String NUMBER_UNSIGNED = "^\\+?[1-9][0-9]*$"; + + //非0的负数 + public static final String NUMBER_NOT_UNSIGNED = "^\\-[1-9][]0-9\"*$"; + + //3位字符串 + public static final String STRING_THREE_LEN = "^.{3}$"; + + //所有英文字母 + public static final String STRING_ALL_EN_CHARS = "^[A-Za-z]+$"; + + //由26个大写英文字母组成的字符串 + public static final String STRING_UPPER_EN_CHARS = "^[A-Z]+$"; + + //由26个小写英文字母组成的字符串 + public static final String STRING_LOWER_EN_CHARS = "^[a-z]+$"; + + //由数字和26个英文字母组成的字符串 + public static final String STRING_ALL_EN_CHARS_AND_NUMBER = "^[A-Za-z0-9]+$"; + + //由数字和26个英文字母组成的字符串 + public static final String STRING_ALL_EN_CHARS_AND_UNDER_LINE = "^\\w+"; + + //验证用户密码, 正确格式为:以字母开头,长度在6~18之间,只能包含字符、数字和下划线。 + public static final String PASSWORD = "^[a-zA-Z]\\w{5,17}$"; + + //验证码, 正确格式为:4位数字验证码。 + public static final String SMS_VALIDATE_CODE_NUM = "^\\d{6}$"; + + //验证码, 正确格式为:6位数字验证码。 + public static final String VALIDATE_CODE_NUM_SIX = "^\\d{6}$"; + + //汉字 + public static final String CHINESE = "^[\\u4e00-\\u9fa5]{0,}$"; + + //url http开头 + public static final String URL = "^http://([\\w-]+\\.)+[\\w-]+(/[\\w-./?%&=]*)?$"; + + //电话 正确格式为:"XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX" + public static final String TEL = "^(\\(\\d{3,4}-)|\\d{3.4}-)?\\d{7,8}$"; + + //验证身份证号 (15位或18位数字) + public static final String ID_CARD = "^\\d{15}|\\d{18}$"; + + // 验证一年的12个月 正确格式为:"01"~"09"和"1"~"12" + public static final String MONTH = "^(0?[1-9]|1[0-2])$"; + + // 验证一个月的31天 正确格式为;"01"~"09"和"1"~"31" + public static final String DAY = "^((0?[1-9])|((1|2)[0-9])|30|31)$"; + + // 匹配空行的正则表达式 + public static final String EMPTY_LINE = "\\n[\\s| ]*\\r"; + + // 匹配html标签的正则表达式 + public static final String HTML_TAG = "<(.*)>(.*)<\\/(.*)>|<(.*)\\/>"; + + // 匹配首尾空格的正则表达式 + public static final String TRIM = "(^\\s*)|(\\s*$)"; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/SmsConstants.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/SmsConstants.java new file mode 100644 index 0000000..748a3c3 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/SmsConstants.java @@ -0,0 +1,109 @@ +package com.zbkj.common.constants; + +/** + * 短信常量类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class SmsConstants { + + /** 接口异常错误码 */ + public static final Integer SMS_ERROR_CODE = 400; + + /** 短信发送队列key */ + public static final String SMS_SEND_KEY = "sms_send_list"; + + /** 手机验证码redis key */ + public static final String SMS_VALIDATE_PHONE = "sms:validate:code:"; + + /** + * --------------------- + * 短信模版配置开关常量 + * --------------------- + */ + /** 验证码 */ + public static final String SMS_CONFIG_VERIFICATION_CODE = "verificationCode"; +// public static final Integer SMS_CONFIG_VERIFICATION_CODE_TEMP_ID = 518076; + /** 验证码模板ID */ + public static final Integer SMS_CONFIG_VERIFICATION_CODE_TEMP_ID = 538393; + + /** 支付成功短信提醒 */ + public static final String SMS_CONFIG_LOWER_ORDER_SWITCH = "lowerOrderSwitch"; + /** 支付成功短信提醒模版ID */ + public static final Integer SMS_CONFIG_LOWER_ORDER_SWITCH_TEMP_ID = 520268; + + /** 发货短信提醒 */ + public static final String SMS_CONFIG_DELIVER_GOODS_SWITCH = "deliverGoodsSwitch"; + /** 发货短信提醒模版ID */ + public static final Integer SMS_CONFIG_DELIVER_GOODS_SWITCH_TEMP_ID = 520269; + + /** 确认收货短信提醒 */ + public static final String SMS_CONFIG_CONFIRM_TAKE_OVER_SWITCH = "confirmTakeOverSwitch"; + /** 确认收货短信提醒模版ID */ + public static final Integer SMS_CONFIG_CONFIRM_TAKE_OVER_SWITCH_TEMP_ID = 520271; + + /** 用户下单管理员短信提醒 */ + public static final String SMS_CONFIG_ADMIN_LOWER_ORDER_SWITCH = "adminLowerOrderSwitch"; + /** 用户下单管理员短信提醒模版ID */ + public static final Integer SMS_CONFIG_ADMIN_LOWER_ORDER_SWITCH_TEMP_ID = 520272; + + /** 支付成功管理员短信提醒 */ + public static final String SMS_CONFIG_ADMIN_PAY_SUCCESS_SWITCH = "adminPaySuccessSwitch"; + /** 支付成功管理员短信提醒模版ID */ + public static final Integer SMS_CONFIG_ADMIN_PAY_SUCCESS_SWITCH_TEMP_ID = 520273; + + /** 用户确认收货管理员短信提醒 */ + public static final String SMS_CONFIG_ADMIN_REFUND_SWITCH = "adminRefundSwitch"; + /** 用户确认收货管理员短信提醒模版ID */ + public static final Integer SMS_CONFIG_ADMIN_REFUND_SWITCH_TEMP_ID = 520422; + + /** 用户发起退款管理员短信提醒 */ + public static final String SMS_CONFIG_ADMIN_CONFIRM_TAKE_OVER_SWITCH = "adminConfirmTakeOverSwitch"; + /** 用户发起退款管理员短信提醒模版ID */ + public static final Integer SMS_CONFIG_ADMIN_CONFIRM_TAKE_OVER_SWITCH_TEMP_ID = 520274; + + /** 改价短信提醒 */ + public static final String SMS_CONFIG_PRICE_REVISION_SWITCH = "priceRevisionSwitch"; + /** 改价短信提醒模版ID */ + public static final Integer SMS_CONFIG_PRICE_REVISION_SWITCH_TEMP_ID = 528288; + + /** 订单未支付 */ + public static final String SMS_CONFIG_ORDER_PAY_FALSE = "orderPayFalse"; + /** 订单未支付模版ID */ + public static final Integer SMS_CONFIG_ORDER_PAY_FALSE_TEMP_ID = 528116; + + /** + * 短信类型 + * 短信模版配置开关常量 + */ + /** 验证码 */ + public static final int SMS_CONFIG_TYPE_VERIFICATION_CODE = 1; + /** 支付成功短信提醒 */ + public static final int SMS_CONFIG_TYPE_LOWER_ORDER_SWITCH = 2; + /** 发货短信提醒 */ + public static final int SMS_CONFIG_TYPE_DELIVER_GOODS_SWITCH = 3; + /** 确认收货短信提醒 */ + public static final int SMS_CONFIG_TYPE_CONFIRM_TAKE_OVER_SWITCH = 4; + /** 用户下单管理员短信提醒 */ + public static final int SMS_CONFIG_TYPE_ADMIN_LOWER_ORDER_SWITCH = 5; + /** 支付成功管理员短信提醒 */ + public static final int SMS_CONFIG_TYPE_ADMIN_PAY_SUCCESS_SWITCH = 6; + /** 用户确认收货管理员短信提醒 */ + public static final int SMS_CONFIG_TYPE_ADMIN_REFUND_SWITCH = 7; + /** 用户发起退款管理员短信提醒 */ + public static final int SMS_CONFIG_TYPE_ADMIN_CONFIRM_TAKE_OVER_SWITCH = 8; + /** 改价短信提醒 */ + public static final int SMS_CONFIG_TYPE_PRICE_REVISION_SWITCH = 9; + /** 订单未支付 */ + public static final int SMS_CONFIG_TYPE_ORDER_PAY_FALSE = 10; + + /** 发送短信参数模板 */ + public static final String SMS_COMMON_PARAM_FORMAT = "param[{}]"; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/SysConfigConstants.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/SysConfigConstants.java new file mode 100644 index 0000000..c7b2fad --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/SysConfigConstants.java @@ -0,0 +1,79 @@ +package com.zbkj.common.constants; + +/** + * 系统设置常量类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class SysConfigConstants { + + //后台首页登录图片 + /** 登录页LOGO */ + public static final String CONFIG_KEY_ADMIN_LOGIN_LOGO_LEFT_TOP = "site_logo_lefttop"; + public static final String CONFIG_KEY_ADMIN_LOGIN_LOGO_LOGIN = "site_logo_login"; + /** 登录页背景图 */ + public static final String CONFIG_KEY_ADMIN_LOGIN_BACKGROUND_IMAGE = "admin_login_bg_pic"; + + /** 微信分享图片(公众号) */ + public static final String CONFIG_KEY_ADMIN_WECHAT_SHARE_IMAGE = "wechat_share_img"; + /** 微信分享标题(公众号) */ + public static final String CONFIG_KEY_ADMIN_WECHAT_SHARE_TITLE = "wechat_share_title"; + /** 微信分享简介(公众号) */ + public static final String CONFIG_KEY_ADMIN_WECHAT_SHARE_SYNOSIS = "wechat_share_synopsis"; + + + /** 是否启用分销 */ + public static final String CONFIG_KEY_BROKERAGE_FUNC_STATUS = "brokerage_func_status"; + /** 分销模式 :1-指定分销,2-人人分销 */ + public static final String CONFIG_KEY_STORE_BROKERAGE_STATUS = "store_brokerage_status"; + /** 分销模式 :1-指定分销 */ + public static final String STORE_BROKERAGE_STATUS_APPOINT = "1"; + /** 分销模式 :2-人人分销 */ + public static final String STORE_BROKERAGE_STATUS_PEOPLE = "2"; + /** 一级返佣比例 */ + public static final String CONFIG_KEY_STORE_BROKERAGE_RATIO = "store_brokerage_ratio"; + /** 二级返佣比例 */ + public static final String CONFIG_KEY_STORE_BROKERAGE_TWO = "store_brokerage_two"; + /** 判断是否开启气泡 */ + public static final String CONFIG_KEY_STORE_BROKERAGE_IS_BUBBLE = "store_brokerage_is_bubble"; + /** 判断是否分销消费门槛 */ + public static final String CONFIG_KEY_STORE_BROKERAGE_QUOTA = "store_brokerage_quota"; + + /** 是否开启会员功能 */ + public static final String CONFIG_KEY_VIP_OPEN = "vip_open"; + /** 是否开启充值功能 */ + public static final String CONFIG_KEY_RECHARGE_SWITCH = "recharge_switch"; + /** 是否开启门店自提 */ + public static final String CONFIG_KEY_STORE_SELF_MENTION = "store_self_mention"; + /** 腾讯地图key */ + public static final String CONFIG_SITE_TENG_XUN_MAP_KEY = "tengxun_map_key"; + /** 退款理由 */ + public static final String CONFIG_KEY_STOR_REASON = "stor_reason"; + /** 提现最低金额 */ + public static final String CONFIG_EXTRACT_MIN_PRICE = "user_extract_min_price"; + /** 提现冻结时间 */ + public static final String CONFIG_EXTRACT_FREEZING_TIME = "extract_time"; + + /** 全场满额包邮开关 */ + public static final String STORE_FEE_POSTAGE_SWITCH = "store_free_postage_switch"; + /** 全场满额包邮金额 */ + public static final String STORE_FEE_POSTAGE = "store_free_postage"; + /** 积分抵用比例(1积分抵多少金额) */ + public static final String CONFIG_KEY_INTEGRAL_RATE = "integral_ratio"; + /** 下单支付金额按比例赠送积分(实际支付1元赠送多少积分) */ + public static final String CONFIG_KEY_INTEGRAL_RATE_ORDER_GIVE = "order_give_integral"; + + /** 微信支付开关 */ + public static final String CONFIG_PAY_WEIXIN_OPEN = "pay_weixin_open"; + /** 余额支付状态 */ + public static final String CONFIG_YUE_PAY_STATUS = "yue_pay_status"; + /** 支付宝支付状态 */ + public static final String CONFIG_ALI_PAY_STATUS = "ali_pay_status"; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/SysGroupDataConstants.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/SysGroupDataConstants.java new file mode 100644 index 0000000..4bc7f2b --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/SysGroupDataConstants.java @@ -0,0 +1,56 @@ +package com.zbkj.common.constants; + +/** + * 组合数据常量类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class SysGroupDataConstants { + + /** 中部推荐banner图 */ + public static final Integer GROUP_DATA_ID_INDEX_BEST_BANNER = 37; + /** 首页banner滚动图 */ + public static final Integer GROUP_DATA_ID_INDEX_BANNER = 48; + /** 首页精品推荐Banner图片 */ + public static final Integer GROUP_DATA_ID_INDEX_RECOMMEND_BANNER = 52; + /** 订单详情状态图 */ + public static final Integer GROUP_DATA_ID_ORDER_STATUS_PIC = 53; + /** 个人中心菜单 */ + public static final Integer GROUP_DATA_ID_USER_CENTER_MENU = 54; + /** 签到配置 */ + public static final Integer GROUP_DATA_ID_SIGN = 55; + /** 热门搜索 */ + public static final Integer GROUP_DATA_ID_HOT_SEARCH = 56; + /** 热门榜单推荐Banner图片 */ + public static final Integer GROUP_DATA_ID_INDEX_HOT_BANNER = 57; + /** 首发新品推荐Banner图片 */ + public static final Integer GROUP_DATA_ID_INDEX_NEW_BANNER = 58; + /** 首页促销单品推荐Banner图片 */ + public static final Integer GROUP_DATA_ID_INDEX_BENEFIT_BANNER = 59; + /** 推广海报图 */ + public static final Integer GROUP_DATA_ID_SPREAD_BANNER_LIST = 60; + /** 充值金额设置 */ + public static final Integer GROUP_DATA_ID_RECHARGE_LIST = 62; + /** 个人中心轮播图 */ + public static final Integer GROUP_DATA_ID_USER_CENTER_BANNER = 65; + /** 导航模块 */ + public static final Integer GROUP_DATA_ID_INDEX_MENU = 67; + /** 首页滚动新闻 */ + public static final Integer GROUP_DATA_ID_INDEX_NEWS_BANNER = 68; + /** 首页活动区域图片 */ + public static final Integer GROUP_DATA_ID_INDEX_ACTIVITY_BANNER = 69; + /** 首页超值爆款 */ + public static final Integer GROUP_DATA_ID_INDEX_EX_BANNER = 70; + /** 热门搜索 */ + public static final Integer GROUP_DATA_ID_INDEX_KEYWORDS = 71; + /** 后台登录页面轮播图 */ + public static final Integer GROUP_DATA_ID_ADMIN_LOGIN_BANNER_IMAGE_LIST = 72; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/TaskConstants.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/TaskConstants.java new file mode 100644 index 0000000..e58c071 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/TaskConstants.java @@ -0,0 +1,21 @@ +package com.zbkj.common.constants; + +/** + * 定时任务常量类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class TaskConstants { + + /** 订单支付成功后Task */ + public static final String ORDER_TASK_PAY_SUCCESS_AFTER = "orderPaySuccessTask"; + /** 订单收货后Task */ + public static final String ORDER_TASK_REDIS_KEY_AFTER_TAKE_BY_USER = "alterOrderTakeByUser"; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/UserConstants.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/UserConstants.java new file mode 100644 index 0000000..95494f3 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/UserConstants.java @@ -0,0 +1,35 @@ +package com.zbkj.common.constants; + +/** + * 用户常量表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class UserConstants { + + /** 用户类型——H5 */ + public static final String USER_TYPE_H5 = "h5"; + /** 用户类型——公众号 */ + public static final String USER_TYPE_WECHAT = "wechat"; + /** 用户类型——小程序 */ + public static final String USER_TYPE_ROUTINE = "routine"; + + /** + * ========================================================= + * UserToken部分 + * ========================================================= + */ + /** 用户Token类型——公众号 */ + public static final Integer USER_TOKEN_TYPE_WECHAT = 1; + /** 用户Token类型——小程序 */ + public static final Integer USER_TOKEN_TYPE_ROUTINE = 2; + /** 用户Token类型——unionid */ + public static final Integer USER_TOKEN_TYPE_UNIONID = 3; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/WeChatConstants.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/WeChatConstants.java new file mode 100644 index 0000000..14edfc0 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/WeChatConstants.java @@ -0,0 +1,387 @@ +package com.zbkj.common.constants; + +/** 微信配置 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class WeChatConstants { + + //-------------------------------------------微信系统配置------------------------------------------------------------ + /** 公众号appId key */ + public static final String WECHAT_PUBLIC_APPID = "wechat_appid"; + /** 公众号appSecret key */ + public static final String WECHAT_PUBLIC_APPSECRET = "wechat_appsecret"; + /** 小程序appId key */ + public static final String WECHAT_MINI_APPID = "routine_appid"; + // 小程序 名称 + public static final String WECHAT_MINI_NAME = "routine_name"; + /** 小程序appSecret key */ + public static final String WECHAT_MINI_APPSECRET = "routine_appsecret"; + + + + + + //------------------------------------------------微信公众号------------------------------------------------ + //微信接口请求地址 + public static final String API_URL = "https://api.weixin.qq.com/"; + //获取token + public static final String API_TOKEN_URI = "cgi-bin/token?grant_type=client_credential"; + // 微信token 过期时间,娶了一个中间值 4000 官方的7200不靠谱 + public static final Long API_TOKEN_EXPIRES = 3000L; + //微信公众号菜单创建 + public static final String PUBLIC_API_MENU_CREATE_URI = "cgi-bin/menu/create"; + //微信公众号菜单获取 + public static final String PUBLIC_API_MENU_GET_URI = "cgi-bin/menu/get"; + //微信公众号菜单删除 + public static final String PUBLIC_API_MENU_DELETE_URI = "cgi-bin/menu/delete"; + //微信公众号,获取自定义菜单配置接口 + public static final String PUBLIC_API_MENU_SELF_SET_URI = "cgi-bin/get_current_selfmenu_info"; + //微信公众号,创建个性化菜单 + public static final String PUBLIC_API_MENU_ADD_CONDITIONAL_URI = "cgi-bin/menu/addconditional"; + //微信公众号,删除个性化菜单 + public static final String PUBLIC_API_MENU_DEL_CONDITIONAL_URI = "cgi-bin/menu/delconditional"; + //微信公众号,测试个性化菜单匹配结果 + public static final String PUBLIC_API_USER_INFO_URI = "cgi-bin/menu/trymatch"; + //获取公众号已创建的标签 + public static final String PUBLIC_API_TAG_LIST_URI = "cgi-bin/tags/get"; + //创建标签 + public static final String PUBLIC_API_TAG_CREATE_URI = "cgi-bin/tags/create"; + //编辑标签 + public static final String PUBLIC_API_TAG_UPDATE_URI = "cgi-bin/tags/update"; + //删除标签 + public static final String PUBLIC_API_TAG_DELETE_URI = "cgi-bin/tags/delete"; + //获取标签下粉丝列表 + public static final String PUBLIC_API_TAG_USER_GET_URI = "cgi-bin/user/tag/get"; + //批量为用户打标签 + public static final String PUBLIC_API_TAG_MEMBER_BATCH_URI = "cgi-bin/tags/members/batchtagging"; + //批量为用户取消标签 + public static final String PUBLIC_API_TAG_MEMBER_BATCH_UN_URI = "cgi-bin/tags/members/batchuntagging"; + //获取用户身上的标签列表 + public static final String PUBLIC_API_TAG_GET_ID_LIST_URI = "cgi-bin/tags/getidlist"; + //获取 JsApiTicket + public static final String PUBLIC_API_JS_API_TICKET = "cgi-bin/ticket/getticket"; + //发送公众号模板消息 + public static final String PUBLIC_API_PUBLIC_TEMPLATE_MESSAGE_SEND = "cgi-bin/message/template/send"; + //获取设置的行业信息 + public static final String PUBLIC_API_TEMPLATE_MESSAGE_INDUSTRY = "cgi-bin/template/get_industry"; + //新增其他类型永久素材 + public static final String PUBLIC_API_MEDIA_UPLOAD = "cgi-bin/material/add_material"; + //获取永久素材 + public static final String PUBLIC_API_MEDIA_GET = "cgi-bin/material/get_material"; + //获取微信素材总数 + public static final String PUBLIC_API_MEDIA_COUNT = "cgi-bin/material/get_materialcount"; + //发送客服消息 + public static final String PUBLIC_API_KF_MESSAGE_SEND = "cgi-bin/message/custom/send"; + + + //------------------------------------------------微信小程序------------------------------------------------ + //小程序行业消息 + public static final String PUBLIC_API_PROGRAM_CATEGORY = "wxaapi/newtmpl/getcategory"; + //小程序公共模板库 + public static final String PUBLIC_API_PROGRAM_PUBLIC_TEMP = "wxaapi/newtmpl/getpubtemplatetitles"; + //小程序模板关键词列表 + public static final String PUBLIC_API_PROGRAM_PUBLIC_TEMP_KEYWORDS = "wxaapi/newtmpl/getpubtemplatekeywords"; + //添加小程序订阅消息 + public static final String PUBLIC_API_ADD_PROGRAM_TEMPLATE = "wxaapi/newtmpl/addtemplate"; + //删除小程序订阅消息 + public static final String PUBLIC_API_DELETE_PROGRAM_TEMPLATE = "wxaapi/newtmpl/deltemplate"; + //发送小程序模板消息 + public static final String PUBLIC_API_PROGRAM_TEMPLATE_MESSAGE_SEND = "cgi-bin/message/subscribe/send"; + + //授权登录 + + //获取临时code跳转地址 + public static final String WE_CHAT_AUTHORIZE_REDIRECT_URI_URL = "/api/front/wechat/authorize/login"; + + //获取openId + public static final String WE_CHAT_AUTHORIZE_GET_OPEN_ID = "sns/oauth2/access_token"; + + //获取小程序openId + public static final String WE_CHAT_AUTHORIZE_PROGRAM_GET_OPEN_ID = "sns/jscode2session"; + + //获取用户信息 + public static final String WE_CHAT_AUTHORIZE_GET_USER_INFO = "sns/userinfo"; + + //生成二维码 + public static final String WE_CHAT_CREATE_QRCODE = "wxa/getwxacodeunlimit"; + + //微信消息存储队列 + public static final String WE_CHAT_MESSAGE_SEND_KEY = "we_chat_message_send_list"; + + //大家注意这里消息类型的定义,以 RESP 开头的表示返回的消息类型,以 REQ 表示微信服务器发来的消息类型 + /** + * 返回消息类型:文本 + */ + public static final String WE_CHAT_MESSAGE_RESP_MESSAGE_TYPE_TEXT = "text"; + /** + * 返回消息类型:音乐 + */ + public static final String WE_CHAT_MESSAGE_RESP_MESSAGE_TYPE_MUSIC = "music"; + /** + * 返回消息类型:图文 + */ + public static final String WE_CHAT_MESSAGE_RESP_MESSAGE_TYPE_NEWS = "news"; + /** + * 返回消息类型:图片 + */ + public static final String WE_CHAT_MESSAGE_RESP_MESSAGE_TYPE_IMAGE = "image"; + /** + * 返回消息类型:语音 + */ + public static final String WE_CHAT_MESSAGE_RESP_MESSAGE_TYPE_VOICE = "voice"; + /** + * 返回消息类型:视频 + */ + public static final String WE_CHAT_MESSAGE_RESP_MESSAGE_TYPE_VIDEO = "video"; + /** + * 请求消息类型:文本 + */ + public static final String WE_CHAT_MESSAGE_REQ_MESSAGE_TYPE_TEXT = "text"; + /** + * 请求消息类型:图片 + */ + public static final String WE_CHAT_MESSAGE_REQ_MESSAGE_TYPE_IMAGE = "image"; + /** + * 请求消息类型:链接 + */ + public static final String WE_CHAT_MESSAGE_REQ_MESSAGE_TYPE_LINK = "link"; + /** + * 请求消息类型:地理位置 + */ + public static final String WE_CHAT_MESSAGE_REQ_MESSAGE_TYPE_LOCATION = "location"; + /** + * 请求消息类型:音频 + */ + public static final String WE_CHAT_MESSAGE_REQ_MESSAGE_TYPE_VOICE = "voice"; + /** + * 请求消息类型:视频 + */ + public static final String WE_CHAT_MESSAGE_REQ_MESSAGE_TYPE_VIDEO = "video"; + /** + * 请求消息类型:推送 + */ + public static final String WE_CHAT_MESSAGE_REQ_MESSAGE_TYPE_EVENT = "event"; + /** + * 事件类型:subscribe(订阅) + */ + public static final String WE_CHAT_MESSAGE_EVENT_TYPE_SUBSCRIBE = "subscribe"; + /** + * 事件类型:unsubscribe(取消订阅) + */ + public static final String WE_CHAT_MESSAGE_EVENT_TYPE_UNSUBSCRIBE = "unsubscribe"; + /** + * 事件类型:CLICK(自定义菜单点击事件) + */ + public static final String WE_CHAT_MESSAGE_EVENT_TYPE_CLICK = "click"; + /** + * 事件类型:VIEW(自定义菜单 URl 视图) + */ + public static final String WE_CHAT_MESSAGE_EVENT_TYPE_VIEW = "view"; + /** + * 事件类型:LOCATION(上报地理位置事件) + */ + public static final String WE_CHAT_MESSAGE_EVENT_TYPE_LOCATION = "LOCATION"; + /** + * 事件类型:LOCATION(上报地理位置事件) + */ + public static final String WE_CHAT_MESSAGE_EVENT_TYPE_SCAN = "SCAN"; + + //无效关键字key + public static final String WE_CHAT_MESSAGE_DEFAULT_CONTENT_KEY = "default"; + //Js sdk api 列表 + public static final String PUBLIC_API_JS_API_SDK_LIST = "openAddress,updateTimelineShareData,updateAppMessageShareData,onMenuShareTimeline,onMenuShareAppMessage,onMenuShareQQ,onMenuShareWeibo,onMenuShareQZone,startRecord,stopRecord,onVoiceRecordEnd,playVoice,pauseVoice,stopVoice,onVoicePlayEnd,uploadVoice,downloadVoice,chooseImage,previewImage,uploadImage,downloadImage,translateVoice,getNetworkType,openLocation,getLocation,hideOptionMenu,showOptionMenu,hideMenuItems,showMenuItems,hideAllNonBaseMenuItem,showAllNonBaseMenuItem,closeWindow,scanQRCode,chooseWXPay,openProductSpecificView,addCard,chooseCard,openCard"; + + + //token + public static final String REDIS_TOKEN_KEY = "wechat_token"; + public static final String REDIS_PROGRAM_TOKEN_KEY = "wechat_program_token"; + //tag + public static final String REDIS_TAGS_LIST_KEY = "wechat_tags_list"; + //user tag + public static final String REDIS_TAGS_LIST_USER_KEY = "wechat_tags_user_list"; + //微信菜单 + public static final String REDIS_PUBLIC_MENU_KEY = "wechat_public_menu_key"; + //微信自定义菜单 + public static final String REDIS_PUBLIC_MENU_SELF_KEY = "wechat_public_menu_self_key"; + + + + //授权请求地址 + public static final String WE_CHAT_AUTHORIZE_URL = "https://open.weixin.qq.com/connect/oauth2/authorize?appid={$appId}&redirect_uri={$redirectUri}&response_type=code&scope=snsapi_base&state=#wechat_redirect"; + + + //-------------------------------------------微信支付------------------------------------------------------------ + //微信支付接口请求地址 + public static final String PAY_API_URL = "https://api.mch.weixin.qq.com/"; + public static final String PAY_API_URI = "pay/unifiedorder"; + public static final String PAY_NOTIFY_API_URI_WECHAT = "/api/admin/payment/callback/wechat"; + // 公共号退款 + public static final String PAY_REFUND_API_URI_WECHAT = "secapi/pay/refund"; + + public static final String PAY_TYPE_JS = "JSAPI"; + public static final String PAY_TYPE_H5 = "MWEB"; + + // -------------------------------------------------------------------------------------------------------- + // 微信部分 + // -------------------------------------------------------------------------------------------------------- + + /** 获取accessToken的url */ + public static final String WECHAT_ACCESS_TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={}&secret={}"; + /** 开放平台获取accessToken的url */ + public static final String WECHAT_OAUTH2_ACCESS_TOKEN_URL = "https://api.weixin.qq.com/sns/oauth2/access_token?appid={}&secret={}&code={}&grant_type=authorization_code"; + /** 开放平台获取用户的url */ + public static final String WECHAT_SNS_USERINFO_URL = "https://api.weixin.qq.com/sns/userinfo?access_token={}&openid={}&lang={}"; + + /** 公众号js-sdk获取ticket的url */ + public static final String WECHAT_PUBLIC_JS_TICKET_URL = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={}&type=jsapi"; + /** 公众号发送模板消息的url */ + public static final String WECHAT_PUBLIC_SEND_TEMPLATE_URL = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token={}"; + /** 公众号获取自定义菜单配置的url */ + public static final String WECHAT_PUBLIC_MENU_GET_URL = "https://api.weixin.qq.com/cgi-bin/menu/get?access_token={}"; + /** 公众号创建自定义菜单的url */ + public static final String WECHAT_PUBLIC_MENU_CREATE_URL = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token={}"; + /** 公众号删除自定义菜单的url */ + public static final String WECHAT_PUBLIC_MENU_DELETE_URL = "https://api.weixin.qq.com/cgi-bin/menu/delete?access_token={}"; + /** 企业号上传其他类型永久素材的url */ + public static final String WECHAT_PUBLIC_QYAPI_ADD_MATERIAL_URL = "https://qyapi.weixin.qq.com/cgi-bin/material/add_material?type={}&access_token={}"; + /** 公众号获取模板列表(自己的) */ + public static final String WECHAT_PUBLIC_GET_ALL_PRIVATE_TEMPLATE_URL = "https://api.weixin.qq.com/cgi-bin/template/get_all_private_template?access_token={}"; + /** 公众号删除模板(自己的) */ + public static final String WECHAT_PUBLIC_DEL_PRIVATE_TEMPLATE_URL = "https://api.weixin.qq.com/cgi-bin/template/del_private_template?access_token={}"; + /** 公众号添加模板(自己的) */ + public static final String WECHAT_PUBLIC_API_ADD_TEMPLATE_URL = "https://api.weixin.qq.com/cgi-bin/template/api_add_template?access_token={}"; + + + /** 小程序登录凭证校验的url */ + public static final String WECHAT_MINI_SNS_AUTH_CODE2SESSION_URL = "https://api.weixin.qq.com/sns/jscode2session?appid={}&secret={}&js_code={}&grant_type=authorization_code"; + /** 小程序生成小程序码的url */ + public static final String WECHAT_MINI_QRCODE_UNLIMITED_URL = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token={}"; + /** 小程序发送订阅消息的url */ + public static final String WECHAT_MINI_SEND_SUBSCRIBE_URL = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token={}"; + /** 小程序获取订阅列表(自己的) */ + public static final String WECHAT_MINI_GET_ALL_PRIVATE_TEMPLATE_URL = "https://api.weixin.qq.com/wxaapi/newtmpl/gettemplate?access_token={}"; + /** 小程序删除模板(自己的) */ + public static final String WECHAT_MINI_DEL_PRIVATE_TEMPLATE_URL = "https://api.weixin.qq.com/wxaapi/newtmpl/deltemplate?access_token={}"; + /** 小程序获取订阅模板(小程序的) */ + public static final String WECHAT_MINI_GET_TEMPLATE_URL = "https://api.weixin.qq.com/wxaapi/newtmpl/getpubtemplatekeywords?access_token={}&tid={}"; + /** 公众号添加模板(自己的) */ + public static final String WECHAT_MINI_API_ADD_TEMPLATE_URL = "https://api.weixin.qq.com/wxaapi/newtmpl/addtemplate?access_token={}"; + + /** 小程序accessToken redis key */ + public static final String REDIS_WECAHT_MINI_ACCESS_TOKEN_KEY = "wechat_mini_accessToken"; + /** 公众号accessToken redis key */ + public static final String REDIS_WECAHT_PUBLIC_ACCESS_TOKEN_KEY = "wechat_public_accessToken"; + /** 公众号JsApiTicket redis key */ + public static final String REDIS_PUBLIC_JS_API_TICKET = "wechat_js_api_ticket"; + public static final Long REDIS_PUBLIC_JS_API_TICKET_EXPRESS = 7100L; + + /** + * -------------------------------------------------------------------------------------------------------- + * 以下为视频号相关部分 + * -------------------------------------------------------------------------------------------------------- + */ + + /*------------------------------------------ 申请接入接口 START ---------------------------------------*/ + + /* 申请接入申请 */ + public static final String WECHAT_SHOP_REGISTER_APPLY = "https://api.weixin.qq.com/shop/register/apply?access_token={}"; + /* 获取接入状态 */ + public static final String WECHAT_SHOP_REGISTER_CHECK = "https://api.weixin.qq.com/shop/register/check?access_token={}"; + + /*------------------------------------------ 申请接入接口 END ---------------------------------------*/ + + + /*------------------------------------------ 接入商品前必须接口 START ---------------------------------------*/ + /** 获取商品类目(自定义交易组件) */ + public static final String WECHAT_SHOP_CAT_GET_URL = "https://api.weixin.qq.com/shop/cat/get?access_token={}"; + /** 上传图片 **/ + public static final String WECHAT_SHOP_IMG_UPLOAD = "https://api.weixin.qq.com/shop/img/upload?&access_token={}"; + /** 上传品牌信息 */ + public static final String WECHAT_SHOP_AUDIT_AUDIT_BRAND = "https://api.weixin.qq.com/shop/audit/audit_brand?&access_token={}"; + /** 上传类目资质 */ + public static final String WECHAT_SHOP_AUDIT_AUDIT_CATEGORY = "https://api.weixin.qq.com/shop/audit/audit_category?&access_token={}"; + /** 查询类目审核结果 */ + public static final String WECHAT_SHOP_AUDIT_RESULT= "https://api.weixin.qq.com/shop/audit/result?access_token={}"; + /** 获取小程序提交过的入驻资质信息 */ + public static final String WECHAT_SHOP_AUDIT_GET_MINIAPP_CERTIFICATE= "https://api.weixin.qq.com/shop/audit/get_miniapp_certificate?access_token={}"; + /*------------------------------------------ 接入商品前必须接口 END ---------------------------------------*/ + + + /*------------------------------------------ 商家入驻接口 START ---------------------------------------*/ + /** 获取类目列表 */ + public static final String WECHAT_SHOP_ACCOUNT_GET_CATEGORY_LIST = "https://api.weixin.qq.com/shop/account/get_category_list?access_token={}"; + /** 获取品牌列表 */ + public static final String WECHAT_SHOP_ACCOUNT_GET_BRAND_LIST = "https://api.weixin.qq.com/shop/account/get_brand_list?access_token={}"; + /** 更新商家信息 */ + public static final String WECHAT_SHOP_ACCOUNT_UPDATE_INFO = "https://api.weixin.qq.com/shop/account/update_info?access_token={}"; + /** 获取商家信息 */ + public static final String WECHAT_SHOP_ACCOUNT_GET_INFO = "https://api.weixin.qq.com/shop/account/get_info?access_token={}"; + /*------------------------------------------ 商家入驻接口 END ---------------------------------------*/ + + /*------------------------------------------ SPU 接口 START ---------------------------------------*/ +// /** 获取品牌列表(自定义交易组件) */ +// public static final String WECHAT_SHOP_BRAND_GET_URL = "https://api.weixin.qq.com/shop/account/get_brand_list?access_token={}"; + /** 添加商品(自定义交易组件) */ + public static final String WECHAT_SHOP_SPU_ADD_URL = "https://api.weixin.qq.com/shop/spu/add?access_token={}"; + /** 删除商品(自定义交易组件) */ + public static final String WECHAT_SHOP_SPU_DEL_URL = "https://api.weixin.qq.com/shop/spu/del?access_token={}"; + /** 撤回商品审核(自定义交易组件) */ + public static final String WECHAT_SHOP_SPU_DEL_AUDIT_URL = "https://api.weixin.qq.com/shop/spu/del_audit?access_token={}"; + /** 获取商品(自定义交易组件) */ + public static final String WECHAT_SHOP_SPU_GET_URL = "https://api.weixin.qq.com/shop/spu/get?access_token={}"; + /** 获取商品列表(自定义交易组件) */ + public static final String WECHAT_SHOP_SPU_GET_LIST_URL = "https://api.weixin.qq.com/shop/spu/get_list?access_token={}"; + /** 更新商品(自定义交易组件) */ + public static final String WECHAT_SHOP_SPU_UPDATE_URL = "https://api.weixin.qq.com/shop/spu/update?access_token={}"; + /** 上架商品(自定义交易组件) */ + public static final String WECHAT_SHOP_SPU_LISTING_URL = "https://api.weixin.qq.com/shop/spu/listing?access_token={}"; + /** 下架商品(自定义交易组件) */ + public static final String WECHAT_SHOP_SPU_DELISTING_URL = "https://api.weixin.qq.com/shop/spu/delisting?access_token={}"; + /** 检查场景值是否在支付校验范围内(自定义交易组件) */ + public static final String WECHAT_SHOP_SCENE_CHECK_URL = "https://api.weixin.qq.com/shop/scene/check?access_token={}"; + /*------------------------------------------ SPU 接口 END ---------------------------------------*/ + + /*------------------------------------------ 订单 接口 START ---------------------------------------*/ + /** 生成订单并获取ticket(自定义交易组件) */ + public static final String WECHAT_SHOP_ORDER_ADD_URL = "https://api.weixin.qq.com/shop/order/add?access_token={}"; + /** 同步订单支付结果(自定义交易组件) */ + public static final String WECHAT_SHOP_ORDER_PAY_URL = "https://api.weixin.qq.com/shop/order/pay?access_token={}"; + /** 获取订单(自定义交易组件) */ + public static final String WECHAT_SHOP_ORDER_GET_URL = "https://api.weixin.qq.com/shop/order/get?access_token={}"; + /*------------------------------------------ 订单 接口 END ---------------------------------------*/ + + /*------------------------------------------ 物流 接口 START ---------------------------------------*/ + /** 获取快递公司列表(自定义交易组件) */ + public static final String WECHAT_SHOP_DELIVERY_GET_COMPANY_LIST_URL = "https://api.weixin.qq.com/shop/delivery/get_company_list?access_token={}"; + /** 订单发货(自定义交易组件) */ + public static final String WECHAT_SHOP_DELIVERY_SEND_URL = "https://api.weixin.qq.com/shop/delivery/send?access_token={}"; + /** 订单确认收货(自定义交易组件) */ + public static final String WECHAT_SHOP_DELIVERY_RECIEVE_URL = "https://api.weixin.qq.com/shop/delivery/recieve?access_token={}"; + /*------------------------------------------ 物流 接口 END ---------------------------------------*/ + + /*------------------------------------------ 售后 接口 START ---------------------------------------*/ + /** 创建售后(自定义交易组件) */ + public static final String WECHAT_SHOP_AFTERSALE_ADD_URL = "https://api.weixin.qq.com/shop/aftersale/add?access_token={}"; + /** 获取售后(自定义交易组件) */ + public static final String WECHAT_SHOP_AFTERSALE_GET_URL = "https://api.weixin.qq.com/shop/aftersale/get?access_token={}"; + /** 更新售后(自定义交易组件) */ + public static final String WECHAT_SHOP_AFTERSALE_UPDATE_URL = "https://api.weixin.qq.com/shop/aftersale/update?access_token={}"; + /*------------------------------------------ 售后 接口 END ---------------------------------------*/ + + + /** 自定义组件,商品类型 redis key */ + public static final String REDIS_WECHAT_SHOP_CAT_KEY = "wechat_shop_cat"; + + /** 微信小程序回调,商品审核回调事件 */ + public static final String WECAHT_CALLBACK_EVENT_SPU_AUDIT = "open_product_spu_audit"; + /** 微信小程序回调,品牌审核回调事件 */ + public static final String WECAHT_CALLBACK_EVENT_BRAND_AUDIT = "open_product_brand_audit"; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/YlyConstants.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/YlyConstants.java new file mode 100644 index 0000000..9d98e65 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/YlyConstants.java @@ -0,0 +1,31 @@ +package com.zbkj.common.constants; + +/** + * 易联云打印 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class YlyConstants { + + // 易联云应用ID + public static final String YLY_PRINT_APP_ID = "ylyprint_app_id"; + // 易联云应用密钥 + public static final String YLY_PRINT_APP_SECRET = "ylyprint_app_secret"; + // 易联云打印机设备码 + public static final String YLY_PRINT_APP_MACHINE_CODE = "ylyprint_app_machine_code"; + // 易联云打印机设备密钥 + public static final String YLY_PRINT_APP_MACHINE_MSIGN = "ylyprint_app_machine_msign"; + // 易联云打印开关 + public static final String YLY_PRINT_AUTO_STATUS = "ylyprint_auto_status"; + public static final String YLY_PRINT_STATUS = "ylyprint_status"; + + // + public static final String YLY_REDIS_TOKEN = "yly_token"; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/enums/EnumYly.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/enums/EnumYly.java new file mode 100644 index 0000000..e7f3c8b --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/enums/EnumYly.java @@ -0,0 +1,40 @@ +package com.zbkj.common.enums; + +/** 易联云 枚举 + * @program: crmeb + * @author: 大粽子 + * @create: 2021-11-27 10:38 + **/ +public enum EnumYly { + VOLUME_RESPONSE_TYPE_FENGMINGQI("蜂鸣器","buzzer"), + VOLUME_RESPONSE_TYPE_HORN("喇叭","horn"), + VOLUME_RESPONSE_VOICE1("音量1","1"), + VOLUME_RESPONSE_VOICE2("音量2","2"), + VOLUME_RESPONSE_VOICE3("音量3","3"), + VOLUME_RESPONSE_VOICE4("音量4","4"), + ; + + private String name; + private String code; + + EnumYly(String name, String code) { + this.name = name; + this.code = code; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/exception/CrmebException.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/exception/CrmebException.java new file mode 100644 index 0000000..03b5e59 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/exception/CrmebException.java @@ -0,0 +1,29 @@ +package com.zbkj.common.exception; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.RestControllerAdvice; + +/** + * Crmeb异常类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestControllerAdvice +public class CrmebException extends RuntimeException { + + private static final long serialVersionUID = 1L; + + public CrmebException() {} + + public CrmebException(String message) { + super(message); + } +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/exception/ExceptionCodeEnum.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/exception/ExceptionCodeEnum.java new file mode 100644 index 0000000..fdea92b --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/exception/ExceptionCodeEnum.java @@ -0,0 +1,44 @@ +package com.zbkj.common.exception; + +/** + * Exception 拦截 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public enum ExceptionCodeEnum implements ExceptionHandler{ + // 数据操作错误定义 + SUCCESS(200, "操作成功"), + FAILED(500, "操作失败"), + PRAM_NOT_MATCH(400, "参数不正确"), + VALIDATE_FAILED(400, "参数检验失败"), + UNAUTHORIZED(401, "未登录或token过期,请登录!"), + FORBIDDEN(403, "没有相关权限"), + NOT_FOUND(404, "没有找到相关数据"), + ERROR(500, "系统异常"), + ; + + private long code; + private String message; + + private ExceptionCodeEnum(long code, String message){ + this.code = code; + this.message = message; + } + + @Override + public long getCode() { + return code; + } + + @Override + public String getMessage() { + return message; + } +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/exception/ExceptionHandler.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/exception/ExceptionHandler.java new file mode 100644 index 0000000..db53bac --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/exception/ExceptionHandler.java @@ -0,0 +1,20 @@ +package com.zbkj.common.exception; + +/** + * Exception 接口定义 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface ExceptionHandler { + + long getCode(); + + String getMessage(); +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/exception/GlobalExceptionHandler.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/exception/GlobalExceptionHandler.java new file mode 100644 index 0000000..5dd172a --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/exception/GlobalExceptionHandler.java @@ -0,0 +1,82 @@ +package com.zbkj.common.exception; + +import com.zbkj.common.response.CommonResult; +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.HttpStatus; +import org.springframework.validation.BindException; +import org.springframework.validation.BindingResult; +import org.springframework.web.HttpMediaTypeNotSupportedException; +import org.springframework.web.bind.MethodArgumentNotValidException; +import org.springframework.web.bind.MissingServletRequestParameterException; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.ResponseStatus; +import org.springframework.web.bind.annotation.RestControllerAdvice; + +import java.util.Objects; + +/** + * 全局参数、异常拦截 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestControllerAdvice +public class GlobalExceptionHandler { +// private static final Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class); + + /** + * 拦截表单参数校验 + */ + @ResponseStatus(HttpStatus.OK) + @ExceptionHandler({BindException.class}) + public CommonResult bindException(BindException e) { + BindingResult bindingResult = e.getBindingResult(); + return CommonResult.failed(ExceptionCodeEnum.VALIDATE_FAILED, Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); + } + + /** + * 拦截JSON参数校验 + */ + @ResponseStatus(HttpStatus.OK) + @ExceptionHandler(MethodArgumentNotValidException.class) + public CommonResult bindException(MethodArgumentNotValidException e) { + BindingResult bindingResult = e.getBindingResult(); + return CommonResult.failed(ExceptionCodeEnum.VALIDATE_FAILED,Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); + } + + /** + * 拦截参数类型不正确 + * @param e + * @return + */ + @ResponseStatus(HttpStatus.OK) + @ExceptionHandler(HttpMediaTypeNotSupportedException.class) + public CommonResult bindException(HttpMediaTypeNotSupportedException e){ + return CommonResult.failed(ExceptionCodeEnum.PRAM_NOT_MATCH,Objects.requireNonNull(e.getMessage())); + } + + + //声明要捕获的异常 + @ResponseStatus(HttpStatus.OK) + @ExceptionHandler(Exception.class) + @ResponseBody + public CommonResult defaultExceptionHandler(Exception e) { + e.printStackTrace(); + if(e instanceof CrmebException) { + return CommonResult.failed(ExceptionCodeEnum.FAILED,Objects.requireNonNull(e.getMessage())); + } + if(e instanceof MissingServletRequestParameterException){ + return CommonResult.failed(ExceptionCodeEnum.PRAM_NOT_MATCH, Objects.requireNonNull(e.getMessage())); + } + //未知错误 + return CommonResult.failed(ExceptionCodeEnum.ERROR,e.getMessage()); + } +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/interceptor/SwaggerInterceptor.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/interceptor/SwaggerInterceptor.java new file mode 100644 index 0000000..0660f31 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/interceptor/SwaggerInterceptor.java @@ -0,0 +1,80 @@ +package com.zbkj.common.interceptor; + +import cn.hutool.core.codec.Base64; +import org.springframework.core.io.Resource; +import org.springframework.core.io.support.PathMatchingResourcePatternResolver; +import org.springframework.core.io.support.ResourcePatternResolver; +import org.springframework.util.AntPathMatcher; +import org.springframework.util.FileCopyUtils; +import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.PrintWriter; + +/** + * Swagger 文档 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class SwaggerInterceptor extends HandlerInterceptorAdapter { + private String username; + private String password; + private Boolean check; + public SwaggerInterceptor(String username, String password, Boolean check) { + this.username = username; + this.password = password; + this.check = check; + } + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { + String authorization = request.getHeader("Authorization"); + boolean isAuthSuccess = httpBasicAuth(authorization); + if (!isAuthSuccess) { + response.setCharacterEncoding("utf-8"); + response.setStatus(401); +// response.setStatus(401,"Unauthorized"); + response.setHeader("WWW-authenticate", "Basic realm=\"Realm\""); + try (PrintWriter writer = response.getWriter()) { + writer.print("Forbidden, unauthorized user"); + } + } + return isAuthSuccess; + } + public boolean httpBasicAuth(String authorization) throws IOException { + if(check){ + if (authorization != null && authorization.split(" ").length == 2) { + String userAndPass = Base64.decodeStr(authorization.split(" ")[1]); + String username = userAndPass.split(":").length == 2 ? userAndPass.split(":")[0] : null; + String password = userAndPass.split(":").length == 2 ? userAndPass.split(":")[1] : null; + return this.username.equals(username) && this.password.equals(password); + } + return false; + } + return true; + } + @Override + public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { + String uri = request.getRequestURI(); + AntPathMatcher pathMatcher = new AntPathMatcher(); + if (!pathMatcher.match("/swagger-ui.html", uri) && !pathMatcher.match("/webjars/**", uri)) { + response.setStatus(404); + return; + } + ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); + Resource[] resources = resolver.getResources("classpath:/META-INF/resources" + uri); + if (resources.length > 0) { + FileCopyUtils.copy(resources[0].getInputStream(), response.getOutputStream()); + } else { + response.setStatus(404); + } + } +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/article/Article.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/article/Article.java new file mode 100644 index 0000000..ff370fa --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/article/Article.java @@ -0,0 +1,104 @@ +package com.zbkj.common.model.article; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + +/** + * 文章管理表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_article") +@ApiModel(value="Article对象", description="文章管理表") +public class Article implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "文章管理ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "分类id") + private String cid; + + @ApiModelProperty(value = "文章标题") + private String title; + + @ApiModelProperty(value = "文章作者") + private String author; + + @ApiModelProperty(value = "文章图片") + private String imageInput; + + @ApiModelProperty(value = "文章简介") + private String synopsis; + + @ApiModelProperty(value = "文章分享标题") + private String shareTitle; + + @ApiModelProperty(value = "文章分享简介") + private String shareSynopsis; + + @ApiModelProperty(value = "浏览次数") + private String visit; + + @ApiModelProperty(value = "排序") + private Integer sort; + + @ApiModelProperty(value = "原文链接") + private String url; + + @ApiModelProperty(value = "微信素材id") + private String mediaId; + + @ApiModelProperty(value = "状态") + private Boolean status; + + @ApiModelProperty(value = "是否隐藏") + private Boolean hide; + + @ApiModelProperty(value = "管理员id") + private Integer adminId; + + @ApiModelProperty(value = "商户id") + private Integer merId; + + @ApiModelProperty(value = "商品关联id") + private Integer productId; + + @ApiModelProperty(value = "是否热门(小程序)") + private Boolean isHot; + + @ApiModelProperty(value = "是否轮播图(小程序)") + private Boolean isBanner; + + @ApiModelProperty(value = "文章内容") + private String content; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "创建时间") + private Date updateTime; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/bargain/StoreBargain.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/bargain/StoreBargain.java new file mode 100644 index 0000000..5a7cf60 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/bargain/StoreBargain.java @@ -0,0 +1,146 @@ +package com.zbkj.common.model.bargain; + +import java.math.BigDecimal; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 砍价表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_store_bargain") +@ApiModel(value="StoreBargain对象", description="砍价表") +public class StoreBargain implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "砍价商品ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "关联商品ID") + private Integer productId; + + @ApiModelProperty(value = "砍价活动名称") + private String title; + + @ApiModelProperty(value = "砍价活动图片") + private String image; + + @ApiModelProperty(value = "单位名称") + private String unitName; + + @ApiModelProperty(value = "库存") + private Integer stock; + + @ApiModelProperty(value = "销量") + private Integer sales; + + @ApiModelProperty(value = "砍价商品轮播图") + private String images; + + @ApiModelProperty(value = "砍价开启时间") + private Long startTime; + + @ApiModelProperty(value = "砍价结束时间") + private Long stopTime; + + @ApiModelProperty(value = "砍价商品名称") + private String storeName; + + @ApiModelProperty(value = "砍价金额") + private BigDecimal price; + + @ApiModelProperty(value = "砍价商品最低价") + private BigDecimal minPrice; + + @ApiModelProperty(value = "购买数量限制") + // 单个活动每个用户发起砍价次数限制 + private Integer num; + + @ApiModelProperty(value = "用户每次砍价的最大金额") + private BigDecimal bargainMaxPrice; + + @ApiModelProperty(value = "用户每次砍价的最小金额") + private BigDecimal bargainMinPrice; + + @ApiModelProperty(value = "帮砍次数") + // 单个商品用户可以帮砍的次数,例:次数设置为1,甲和乙同时将商品A的砍价链接发给丙,丙只能帮甲或乙其中一个人砍价 + private Integer bargainNum; + + @ApiModelProperty(value = "砍价状态 0(到砍价时间不自动开启) 1(到砍价时间自动开启时间)") + private Boolean status; + + @ApiModelProperty(value = "反多少积分") + private Integer giveIntegral; + + @ApiModelProperty(value = "砍价活动简介") + private String info; + + @ApiModelProperty(value = "成本价") + private BigDecimal cost; + + @ApiModelProperty(value = "排序") + private Integer sort; + + @ApiModelProperty(value = "是否推荐0不推荐1推荐") + private Boolean isHot; + + @ApiModelProperty(value = "是否删除 0未删除 1删除") + private Boolean isDel; + + @ApiModelProperty(value = "添加时间") + private Long addTime; + + @ApiModelProperty(value = "是否包邮 0不包邮 1包邮") + private Boolean isPostage; + + @ApiModelProperty(value = "邮费") + private BigDecimal postage; + + @ApiModelProperty(value = "砍价规则") + private String rule; + + @ApiModelProperty(value = "砍价商品浏览量") + private Integer look; + + @ApiModelProperty(value = "砍价商品分享量") + private Integer share; + + @ApiModelProperty(value = "运费模板ID") + private Integer tempId; + + @ApiModelProperty(value = "重量") + private BigDecimal weight; + + @ApiModelProperty(value = "体积") + private BigDecimal volume; + + @ApiModelProperty(value = "限购总数") + private Integer quota; + + @ApiModelProperty(value = "限量总数显示") + private Integer quotaShow; + + @ApiModelProperty(value = "帮助砍价好友人数") + private Integer peopleNum; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/bargain/StoreBargainUser.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/bargain/StoreBargainUser.java new file mode 100644 index 0000000..6584b74 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/bargain/StoreBargainUser.java @@ -0,0 +1,65 @@ +package com.zbkj.common.model.bargain; + +import java.math.BigDecimal; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 用户参与砍价表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_store_bargain_user") +@ApiModel(value="StoreBargainUser对象", description="用户参与砍价表") +public class StoreBargainUser implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "用户参与砍价表ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "用户ID") + private Integer uid; + + @ApiModelProperty(value = "砍价商品id") + private Integer bargainId; + + @ApiModelProperty(value = "砍价的最低价") + private BigDecimal bargainPriceMin; + + @ApiModelProperty(value = "砍价金额") + private BigDecimal bargainPrice; + + @ApiModelProperty(value = "砍掉的价格") + private BigDecimal price; + + @ApiModelProperty(value = "状态 1参与中 2 活动结束参与失败 3活动结束参与成功") + private Integer status; + + @ApiModelProperty(value = "参与时间") + private Long addTime; + + @ApiModelProperty(value = "是否取消") + private Boolean isDel; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/bargain/StoreBargainUserHelp.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/bargain/StoreBargainUserHelp.java new file mode 100644 index 0000000..4f52fc8 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/bargain/StoreBargainUserHelp.java @@ -0,0 +1,67 @@ +package com.zbkj.common.model.bargain; + +import java.math.BigDecimal; + +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 java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 砍价用户帮助表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_store_bargain_user_help") +@ApiModel(value="StoreBargainUserHelp对象", description="砍价用户帮助表") +public class StoreBargainUserHelp implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "砍价用户帮助表ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "帮助的用户id") + private Integer uid; + + @ApiModelProperty(value = "砍价商品ID") + private Integer bargainId; + + @ApiModelProperty(value = "用户参与砍价表id") + private Integer bargainUserId; + + @ApiModelProperty(value = "帮助砍价多少金额") + private BigDecimal price; + + @ApiModelProperty(value = "添加时间") + private Long addTime; + + @ApiModelProperty(value = "用户昵称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty(value = "用户头像") + @TableField(exist = false) + private String avatar; + + @ApiModelProperty(value = "添加时间(前端用)") + @TableField(exist = false) + private String addTimeStr; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/cat/StoreCart.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/cat/StoreCart.java new file mode 100644 index 0000000..547ab7e --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/cat/StoreCart.java @@ -0,0 +1,80 @@ +package com.zbkj.common.model.cat; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 购物车表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_store_cart") +@ApiModel(value="StoreCart对象", description="购物车表") +public class StoreCart implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "购物车表ID") + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + @ApiModelProperty(value = "用户ID") + private Integer uid; + + @ApiModelProperty(value = "类型") + private String type; + + @ApiModelProperty(value = "商品ID") + private Integer productId; + + @ApiModelProperty(value = "商品属性") + private String productAttrUnique; + + @ApiModelProperty(value = "商品数量") + private Integer cartNum; + + @ApiModelProperty(value = "是否为立即购买") + private Boolean isNew; + + @ApiModelProperty(value = "拼团id") + private Integer combinationId; + + @ApiModelProperty(value = "秒杀商品ID") + private Integer seckillId; + + @ApiModelProperty(value = "砍价id") + private Integer bargainId; + + @ApiModelProperty(value = "添加时间") + private Date createTime; + + @ApiModelProperty(value = "更新时间") + private Date updateTime; + + @ApiModelProperty(value = "已添加的商品是否有效状态") + private Boolean status; + + @ApiModelProperty(value = "团长拼团id") + @TableField(exist = false) + private Integer pinkId; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/category/Category.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/category/Category.java new file mode 100644 index 0000000..b28675b --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/category/Category.java @@ -0,0 +1,62 @@ +package com.zbkj.common.model.category; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 分类表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_category") +@ApiModel(value="Category对象", description="分类表") +public class Category implements Serializable { + + private static final long serialVersionUID=1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "父级ID") + private Integer pid; + + @ApiModelProperty(value = "路径") + private String path; + + @ApiModelProperty(value = "分类名称") + private String name; + + @ApiModelProperty(value = "类型ID | 类型,1 产品分类,2 附件分类,3 文章分类, 4 设置分类, 5 菜单分类, 6 配置分类, 7 秒杀配置 ") + private Integer type; + + @ApiModelProperty(value = "地址") + private String url; + + @ApiModelProperty(value = "扩展字段") + private String extra; + + @ApiModelProperty(value = "状态,1正常,0失效") + private Boolean status; + + @ApiModelProperty(value = "排序") + private Integer sort; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/combination/StoreCombination.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/combination/StoreCombination.java new file mode 100644 index 0000000..6236128 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/combination/StoreCombination.java @@ -0,0 +1,148 @@ +package com.zbkj.common.model.combination; + +import java.math.BigDecimal; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import io.swagger.models.auth.In; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 拼团商品表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_store_combination") +@ApiModel(value="StoreCombination对象", description="拼团商品表") +public class StoreCombination implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "拼团商品ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "商品id") + private Integer productId; + + @ApiModelProperty(value = "商户id") + private Integer merId; + + @ApiModelProperty(value = "推荐图") + private String image; + + @ApiModelProperty(value = "轮播图") + private String images; + + @ApiModelProperty(value = "活动标题") + private String title; + + @ApiModelProperty(value = "活动属性") + private String attr; + + @ApiModelProperty(value = "参团人数") + private Integer people; + + @ApiModelProperty(value = "简介") + private String info; + + @ApiModelProperty(value = "价格") + private BigDecimal price; + + @ApiModelProperty(value = "排序") + private Integer sort; + + @ApiModelProperty(value = "销量") + private Integer sales; + + @ApiModelProperty(value = "库存") + private Integer stock; + + @ApiModelProperty(value = "添加时间") + private Long addTime; + + @ApiModelProperty(value = "推荐") + private Boolean isHost; + + @ApiModelProperty(value = "商品状态") + private Boolean isShow; + + private Boolean isDel; + + private Boolean combination; + + @ApiModelProperty(value = "商户是否可用1可用0不可用") + private Boolean merUse; + + @ApiModelProperty(value = "是否包邮1是0否") + private Boolean isPostage; + + @ApiModelProperty(value = "邮费") + private BigDecimal postage; + + @ApiModelProperty(value = "拼团开始时间") + private Long startTime; + + @ApiModelProperty(value = "拼团结束时间") + private Long stopTime; + + @ApiModelProperty(value = "拼团订单有效时间(小时)") + private Integer effectiveTime; + + @ApiModelProperty(value = "拼图商品成本") + private BigDecimal cost; + + @ApiModelProperty(value = "浏览量") + private Integer browse; + + @ApiModelProperty(value = "单位名") + private String unitName; + + @ApiModelProperty(value = "运费模板ID") + private Integer tempId; + + @ApiModelProperty(value = "重量") + private BigDecimal weight; + + @ApiModelProperty(value = "体积") + private BigDecimal volume; + + @ApiModelProperty(value = "单次购买数量") + private Integer num; + + @ApiModelProperty(value = "限购总数") + private Integer quota; + + @ApiModelProperty(value = "限量总数显示") + private Integer quotaShow; + + @ApiModelProperty(value = "原价") + private BigDecimal otPrice; + + @ApiModelProperty(value = "每个订单可购买数量") + private Integer onceNum; + + @ApiModelProperty(value = "虚拟成团百分比") + private Integer virtualRation; + + @ApiModelProperty(value = "限量百分比") + @TableField(exist = false) + private Integer quotaPercent; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/combination/StorePink.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/combination/StorePink.java new file mode 100644 index 0000000..bbc68f5 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/combination/StorePink.java @@ -0,0 +1,94 @@ +package com.zbkj.common.model.combination; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 拼团表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_store_pink") +@ApiModel(value="StorePink对象", description="拼团表") +public class StorePink implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "拼团ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "用户id") + private Integer uid; + + @ApiModelProperty(value = "订单id 生成") + private String orderId; + + @ApiModelProperty(value = "订单id 数据库") + private Integer orderIdKey; + + @ApiModelProperty(value = "购买商品个数") + private Integer totalNum; + + @ApiModelProperty(value = "购买总金额") + private BigDecimal totalPrice; + + @ApiModelProperty(value = "拼团商品id") + private Integer cid; + + @ApiModelProperty(value = "商品id") + private Integer pid; + + @ApiModelProperty(value = "拼图总人数") + private Integer people; + + @ApiModelProperty(value = "拼团商品单价") + private BigDecimal price; + + @ApiModelProperty(value = "开始时间") + private Long addTime; + + @ApiModelProperty(value = "结束时间") + private Long stopTime; + + @ApiModelProperty(value = "团长id 0为团长") + private Integer kId; + + @ApiModelProperty(value = "是否发送模板消息0未发送1已发送") + private Boolean isTpl; + + @ApiModelProperty(value = "是否退款 0未退款 1已退款") + private Boolean isRefund; + + @ApiModelProperty(value = "状态1进行中2已完成3未完成") + private Integer status; + + @ApiModelProperty(value = "用户昵称") + private String nickname; + + @ApiModelProperty(value = "用户头像") + private String avatar; + + @ApiModelProperty(value = "是否虚拟拼团") + private Boolean is_virtual; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/coupon/StoreCoupon.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/coupon/StoreCoupon.java new file mode 100644 index 0000000..a74acd9 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/coupon/StoreCoupon.java @@ -0,0 +1,105 @@ +package com.zbkj.common.model.coupon; + +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 io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 优惠券表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_store_coupon") +@ApiModel(value="StoreCoupon对象", description="优惠券表") +public class StoreCoupon implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "优惠券表ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "优惠券名称") + private String name; + + @ApiModelProperty(value = "兑换的优惠券面值") + private BigDecimal money; + + @ApiModelProperty(value = "是否限量, 默认0 不限量, 1限量") + private Boolean isLimited; + + @ApiModelProperty(value = "发放总数") + private Integer total; + + @ApiModelProperty(value = "剩余数量") + private Integer lastTotal; + + @ApiModelProperty(value = "使用类型 1 全场通用, 2 商品券, 3 品类券") + private Integer useType; + + @ApiModelProperty(value = "主键id 商品id/分类id", required = true) + private String primaryKey; + + @ApiModelProperty(value = "最低消费,0代表不限制") + private BigDecimal minPrice; + + @ApiModelProperty(value = "可领取开始时间") + private Date receiveStartTime; + + @ApiModelProperty(value = "可领取结束时间") + private Date receiveEndTime; + + @ApiModelProperty(value = "是否固定使用时间, 默认0 否, 1是") + private Boolean isFixedTime; + + @ApiModelProperty(value = "可使用时间范围 开始时间") + private Date useStartTime; + + @ApiModelProperty(value = "可使用时间范围 结束时间") + private Date useEndTime; + + @ApiModelProperty(value = "天数") + private Integer day; + + @ApiModelProperty(value = "优惠券类型 1 手动领取, 2 新人券, 3 赠送券") + private Integer type; + + @ApiModelProperty(value = "排序") + private Integer sort; + + @ApiModelProperty(value = "状态(0:关闭,1:开启)") + private Boolean status; + + @ApiModelProperty(value = "是否删除 状态(0:否,1:是)") + private Boolean isDel; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "更新时间") + private Date updateTime; + + @ApiModelProperty(value = "是否领取") + @TableField(exist = false) + private Boolean isGet = false; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/coupon/StoreCouponUser.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/coupon/StoreCouponUser.java new file mode 100644 index 0000000..09af66e --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/coupon/StoreCouponUser.java @@ -0,0 +1,86 @@ +package com.zbkj.common.model.coupon; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 优惠卷记录表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_store_coupon_user") +@ApiModel(value="StoreCouponUser对象", description="优惠券记录表") +public class StoreCouponUser implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "id") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "优惠券发布id") + private Integer couponId; + + @ApiModelProperty(value = "兑换的项目id") + private Integer cid; + + @ApiModelProperty(value = "领取人id") + private Integer uid; + + @ApiModelProperty(value = "优惠券名称") + private String name; + + @ApiModelProperty(value = "优惠券的面值") + private BigDecimal money; + + @ApiModelProperty(value = "最低消费多少金额可用优惠券") + private BigDecimal minPrice; + + @ApiModelProperty(value = "获取方式,send后台发放, 用户领取 get,register用户注册") + private String type; + + @ApiModelProperty(value = "状态(0:未使用,1:已使用, 2:已失效)") + private Integer status; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "更新时间") + private Date updateTime; + + @ApiModelProperty(value = "开始使用时间") + private Date startTime; + + @ApiModelProperty(value = "过期时间") + private Date endTime; + + @ApiModelProperty(value = "使用时间") + private Date useTime; + + @ApiModelProperty(value = "使用类型 1 全场通用, 2 商品券, 3 品类券") + private Integer useType; + + @ApiModelProperty(value = "主键id 商品id/分类id", required = true) + private String primaryKey; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/express/Express.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/express/Express.java new file mode 100644 index 0000000..898700c --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/express/Express.java @@ -0,0 +1,70 @@ +package com.zbkj.common.model.express; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 快递公司表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_express") +@ApiModel(value="Express对象", description="快递公司表") +public class Express implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "快递公司id") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "快递公司简称") + private String code; + + @ApiModelProperty(value = "快递公司全称") + private String name; + + @ApiModelProperty(value = "是否需要月结账号") + private Boolean partnerId; + + @ApiModelProperty(value = "是否需要月结密码") + private Boolean partnerKey; + + @ApiModelProperty(value = "是否需要取件网店") + private Boolean net; + + @ApiModelProperty(value = "账号") + private String account; + + @ApiModelProperty(value = "密码") + private String password; + + @ApiModelProperty(value = "网点名称") + private String netName; + + @ApiModelProperty(value = "排序") + private Integer sort; + + @ApiModelProperty(value = "是否显示") + private Boolean isShow; + + @ApiModelProperty(value = "是否可用") + private Boolean status; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/express/ShippingTemplates.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/express/ShippingTemplates.java new file mode 100644 index 0000000..81e858a --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/express/ShippingTemplates.java @@ -0,0 +1,59 @@ +package com.zbkj.common.model.express; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 运费模版对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_shipping_templates") +@ApiModel(value="ShippingTemplates对象", description="") +public class ShippingTemplates implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "编号") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "模板名称") + private String name; + + @ApiModelProperty(value = "计费方式") + private Integer type; + + @ApiModelProperty(value = "指定包邮") + private Boolean appoint; + + @ApiModelProperty(value = "排序") + private Integer sort; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/express/ShippingTemplatesFree.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/express/ShippingTemplatesFree.java new file mode 100644 index 0000000..d9449e6 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/express/ShippingTemplatesFree.java @@ -0,0 +1,72 @@ +package com.zbkj.common.model.express; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 免费运费模版 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_shipping_templates_free") +@ApiModel(value="ShippingTemplatesFree对象", description="") +public class ShippingTemplatesFree implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "编号") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "模板ID") + private Integer tempId; + + @ApiModelProperty(value = "城市ID") + private Integer cityId; + + @ApiModelProperty(value = "描述") + private String title; + + @ApiModelProperty(value = "包邮件数") + private BigDecimal number; + + @ApiModelProperty(value = "包邮金额") + private BigDecimal price; + + @ApiModelProperty(value = "计费方式") + private Integer type; + + @ApiModelProperty(value = "分组唯一值") + private String uniqid; + + @ApiModelProperty(value = "是否无效") + private Boolean status; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/express/ShippingTemplatesRegion.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/express/ShippingTemplatesRegion.java new file mode 100644 index 0000000..9cac138 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/express/ShippingTemplatesRegion.java @@ -0,0 +1,78 @@ +package com.zbkj.common.model.express; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 运费模版区域 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_shipping_templates_region") +@ApiModel(value="ShippingTemplatesRegion对象", description="") +public class ShippingTemplatesRegion implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "编号") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "模板ID") + private Integer tempId; + + @ApiModelProperty(value = "城市ID") + private Integer cityId; + + @ApiModelProperty(value = "描述") + private String title; + + @ApiModelProperty(value = "首件") + private BigDecimal first; + + @ApiModelProperty(value = "首件运费") + private BigDecimal firstPrice; + + @ApiModelProperty(value = "续件") + private BigDecimal renewal; + + @ApiModelProperty(value = "续件运费") + private BigDecimal renewalPrice; + + @ApiModelProperty(value = "计费方式 1按件数 2按重量 3按体积") + private Integer type; + + @ApiModelProperty(value = "分组唯一值") + private String uniqid; + + @ApiModelProperty(value = "是否无效") + private Boolean status; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/finance/UserExtract.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/finance/UserExtract.java new file mode 100644 index 0000000..85678f9 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/finance/UserExtract.java @@ -0,0 +1,96 @@ +package com.zbkj.common.model.finance; + +import java.math.BigDecimal; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.springframework.data.annotation.Transient; + +/** + * 用户 提现表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_user_extract") +@ApiModel(value="UserExtract对象", description="用户提现表") +public class UserExtract implements Serializable { + + private static final long serialVersionUID=1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + private Integer uid; + + @ApiModelProperty(value = "名称") + private String realName; + + @ApiModelProperty(value = "bank = 银行卡 alipay = 支付宝 weixin=微信") + private String extractType; + + @ApiModelProperty(value = "银行卡") + private String bankCode; + + @ApiModelProperty(value = "开户地址") + private String bankAddress; + + @ApiModelProperty(value = "支付宝账号") + private String alipayCode; + + @ApiModelProperty(value = "提现金额") + private BigDecimal extractPrice; + + @ApiModelProperty(value = "备注") + private String mark; + + @ApiModelProperty(value = "金额") + private BigDecimal balance; + + @ApiModelProperty(value = "无效原因") + private String failMsg; + + @ApiModelProperty(value = "-1 未通过 0 审核中 1 已提现") + private Integer status; + + @ApiModelProperty(value = "微信号") + private String wechat; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "更新时间") + private Date updateTime; + + @ApiModelProperty(value = "失败时间") + private Date failTime; + + @ApiModelProperty(value = "银行名称") + private String bankName; + + @ApiModelProperty(value = "银行名称") + private String qrcodeUrl; + + @Transient + @TableField(exist = false) + private String nickName; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/finance/UserRecharge.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/finance/UserRecharge.java new file mode 100644 index 0000000..a5d97d3 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/finance/UserRecharge.java @@ -0,0 +1,68 @@ +package com.zbkj.common.model.finance; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 用户充值表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_user_recharge") +@ApiModel(value="UserRecharge对象", description="用户充值表") +public class UserRecharge implements Serializable { + + private static final long serialVersionUID=1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "充值用户UID") + private Integer uid; + + @ApiModelProperty(value = "订单号") + private String orderId; + + @ApiModelProperty(value = "充值金额") + private BigDecimal price; + + @ApiModelProperty(value = "购买赠送金额") + private BigDecimal givePrice; + + @ApiModelProperty(value = "充值类型") + private String rechargeType; + + @ApiModelProperty(value = "是否充值") + private Boolean paid; + + @ApiModelProperty(value = "充值支付时间") + private Date payTime; + + @ApiModelProperty(value = "充值时间") + private Date createTime; + + @ApiModelProperty(value = "退款金额") + private BigDecimal refundPrice; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/gencode/mysql/ColumnEntity.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/gencode/mysql/ColumnEntity.java new file mode 100644 index 0000000..873c901 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/gencode/mysql/ColumnEntity.java @@ -0,0 +1,69 @@ +package com.zbkj.common.model.gencode.mysql; + +/** + * 列的属性 + * + * @author chenshun + * @email sunlightcs@gmail.com + * @date 2016年12月20日 上午12:01:45 + */ +public class ColumnEntity { + //列名 + private String columnName; + //列名类型 + private String dataType; + //列名备注 + private String comments; + + //属性名称(第一个字母大写),如:user_name => UserName + private String attrName; + //属性名称(第一个字母小写),如:user_name => userName + private String attrname; + //属性类型 + private String attrType; + //auto_increment + private String extra; + + public String getColumnName() { + return columnName; + } + public void setColumnName(String columnName) { + this.columnName = columnName; + } + public String getDataType() { + return dataType; + } + public void setDataType(String dataType) { + this.dataType = dataType; + } + public String getComments() { + return comments; + } + public void setComments(String comments) { + this.comments = comments; + } + public String getAttrname() { + return attrname; + } + public void setAttrname(String attrname) { + this.attrname = attrname; + } + public String getAttrName() { + return attrName; + } + public void setAttrName(String attrName) { + this.attrName = attrName; + } + public String getAttrType() { + return attrType; + } + public void setAttrType(String attrType) { + this.attrType = attrType; + } + public String getExtra() { + return extra; + } + public void setExtra(String extra) { + this.extra = extra; + } +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/gencode/mysql/TableEntity.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/gencode/mysql/TableEntity.java new file mode 100644 index 0000000..21482bd --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/gencode/mysql/TableEntity.java @@ -0,0 +1,63 @@ +package com.zbkj.common.model.gencode.mysql; + +import java.util.List; + +/** + * 表数据 + * + * @author chenshun + * @email sunlightcs@gmail.com + * @date 2016年12月20日 上午12:02:55 + */ +public class TableEntity { + //表的名称 + private String tableName; + //表的备注 + private String comments; + //表的主键 + private ColumnEntity pk; + //表的列名(不包含主键) + private List columns; + + //类名(第一个字母大写),如:sys_user => SysUser + private String className; + //类名(第一个字母小写),如:sys_user => sysUser + private String classname; + + public String getTableName() { + return tableName; + } + public void setTableName(String tableName) { + this.tableName = tableName; + } + public String getComments() { + return comments; + } + public void setComments(String comments) { + this.comments = comments; + } + public ColumnEntity getPk() { + return pk; + } + public void setPk(ColumnEntity pk) { + this.pk = pk; + } + public List getColumns() { + return columns; + } + public void setColumns(List columns) { + this.columns = columns; + } + public String getClassName() { + return className; + } + public void setClassName(String className) { + this.className = className; + } + public String getClassname() { + return classname; + } + public void setClassname(String classname) { + this.classname = classname; + } +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/log/StoreProductLog.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/log/StoreProductLog.java new file mode 100644 index 0000000..bcfe3e7 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/log/StoreProductLog.java @@ -0,0 +1,83 @@ +package com.zbkj.common.model.log; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 商品统计 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_store_product_log") +@ApiModel(value="StoreProductLog对象", description="商品统计") +public class StoreProductLog implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "商品统计表ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "类型visit,cart,order,pay,collect,refund") + private String type; + + @ApiModelProperty(value = "商品ID") + private Integer productId; + + @ApiModelProperty(value = "用户ID") + private Integer uid; + + @ApiModelProperty(value = "是否浏览") + private Boolean visitNum; + + @ApiModelProperty(value = "加入购物车数量") + private Integer cartNum; + + @ApiModelProperty(value = "下单数量") + private Integer orderNum; + + @ApiModelProperty(value = "支付数量") + private Integer payNum; + + @ApiModelProperty(value = "支付金额") + private BigDecimal payPrice; + + @ApiModelProperty(value = "商品成本价") + private BigDecimal costPrice; + + @ApiModelProperty(value = "支付用户ID") + private Integer payUid; + + @ApiModelProperty(value = "退款数量") + private Integer refundNum; + + @ApiModelProperty(value = "退款金额") + private BigDecimal refundPrice; + + @ApiModelProperty(value = "收藏") + private Boolean collectNum; + + @ApiModelProperty(value = "添加时间") + private Long addTime; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/order/StoreOrder.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/order/StoreOrder.java new file mode 100644 index 0000000..e5fd2b8 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/order/StoreOrder.java @@ -0,0 +1,211 @@ +package com.zbkj.common.model.order; + +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 io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 订单表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_store_order") +@ApiModel(value="StoreOrder对象", description="订单表") +public class StoreOrder implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "订单ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "订单号") + private String orderId; + + @ApiModelProperty(value = "用户id") + private Integer uid; + + @ApiModelProperty(value = "用户姓名") + private String realName; + + @ApiModelProperty(value = "用户电话") + private String userPhone; + + @ApiModelProperty(value = "详细地址") + private String userAddress; + + @ApiModelProperty(value = "运费金额") + private BigDecimal freightPrice; + + @ApiModelProperty(value = "订单商品总数") + private Integer totalNum; + + @ApiModelProperty(value = "订单总价") + private BigDecimal totalPrice; + + @ApiModelProperty(value = "邮费") + private BigDecimal totalPostage; + + @ApiModelProperty(value = "实际支付金额") + private BigDecimal payPrice; + + @ApiModelProperty(value = "支付邮费") + private BigDecimal payPostage; + + @ApiModelProperty(value = "抵扣金额") + private BigDecimal deductionPrice; + + @ApiModelProperty(value = "优惠券id") + private Integer couponId; + + @ApiModelProperty(value = "优惠券金额") + private BigDecimal couponPrice; + + @ApiModelProperty(value = "支付状态") + private Boolean paid; + + @ApiModelProperty(value = "支付时间") + private Date payTime; + + @ApiModelProperty(value = "支付方式") + private String payType; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "订单状态(0:待发货;1:待收货;2:已收货,待评价;3:已完成;)") + private Integer status; + + @ApiModelProperty(value = "0 未退款 1 申请中 2 已退款 3 退款中") + private Integer refundStatus; + + @ApiModelProperty(value = "退款图片") + private String refundReasonWapImg; + + @ApiModelProperty(value = "退款用户说明") + private String refundReasonWapExplain; + + @ApiModelProperty(value = "前台退款原因") + private String refundReasonWap; + + @ApiModelProperty(value = "不退款的理由") + private String refundReason; + + @ApiModelProperty(value = "退款时间") + private Date refundReasonTime; + + @ApiModelProperty(value = "退款金额") + private BigDecimal refundPrice; + + @ApiModelProperty(value = "快递名称/送货人姓名") + private String deliveryName; + + @ApiModelProperty(value = "发货类型") + private String deliveryType; + + @ApiModelProperty(value = "快递单号/手机号") + private String deliveryId; + + @ApiModelProperty(value = "消费赚取积分") + private Integer gainIntegral; + + @ApiModelProperty(value = "使用积分") + private Integer useIntegral; + + @ApiModelProperty(value = "给用户退了多少积分") + private Integer backIntegral; + + @ApiModelProperty(value = "备注") + private String mark; + + @ApiModelProperty(value = "是否删除") + private Boolean isDel; + + @ApiModelProperty(value = "管理员备注") + private String remark; + + @ApiModelProperty(value = "商户ID") + private Integer merId; + + private Integer isMerCheck; + + @ApiModelProperty(value = "拼团商品id0一般商品") + private Integer combinationId; + + @ApiModelProperty(value = "拼团id 0没有拼团") + private Integer pinkId; + + @ApiModelProperty(value = "成本价") + private BigDecimal cost; + + @ApiModelProperty(value = "秒杀商品ID") + private Integer seckillId; + + @ApiModelProperty(value = "砍价id") + private Integer bargainId; + + @ApiModelProperty(value = "用户砍价活动id") + private Integer bargainUserId; + + @ApiModelProperty(value = "核销码") + private String verifyCode; + + @ApiModelProperty(value = "门店id") + private Integer storeId; + + @ApiModelProperty(value = "配送方式 1=快递 ,2=门店自提") + private Integer shippingType; + + @ApiModelProperty(value = "店员id") + private Integer clerkId; + + @ApiModelProperty(value = "支付渠道(0-微信公众号,1-微信小程序,2-H5,3-余额,4-微信AppIos,5-微信AppIos安卓,6-支付宝支付,7-支付宝app支付)") + private Integer isChannel; + + @ApiModelProperty(value = "消息提醒") + private Boolean isRemind; + + @ApiModelProperty(value = "后台是否删除") + private Boolean isSystemDel; + + @ApiModelProperty(value = "更新时间") + private Date updateTime; + + @ApiModelProperty(value = "快递公司简称") + private String deliveryCode; + + @ApiModelProperty(value = "订单类型:0-普通订单,1-视频号订单") + private Integer type; + + @ApiModelProperty(value = "商品总价") + private BigDecimal proTotalPrice; + + @ApiModelProperty(value = "改价前支付金额") + private BigDecimal beforePayPrice; + + @ApiModelProperty(value = "是否改价,0-否,1-是") + private Boolean isAlterPrice; + + @ApiModelProperty(value = "商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号") + private String outTradeNo; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/order/StoreOrderInfo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/order/StoreOrderInfo.java new file mode 100644 index 0000000..7c6752e --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/order/StoreOrderInfo.java @@ -0,0 +1,95 @@ +package com.zbkj.common.model.order; + +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 java.io.Serializable; +import java.math.BigDecimal; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 订单购物详情表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_store_order_info") +@ApiModel(value="StoreOrderInfo对象", description="订单购物详情表") +public class StoreOrderInfo implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "id") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "订单id") + private Integer orderId; + + @ApiModelProperty(value = "商品ID") + private Integer productId; + + @ApiModelProperty(value = "购买东西的详细信息") + private String info; + + @ApiModelProperty(value = "唯一id") + @TableField(value = "`unique`") + private String unique; + + @ApiModelProperty(value = "订单号") + private String orderNo; + + @ApiModelProperty(value = "商品名称") + private String productName; + + @ApiModelProperty(value = "规格属性id") + private Integer attrValueId; + + @ApiModelProperty(value = "商品图片") + private String image; + + @ApiModelProperty(value = "sku") + private String sku; + + @ApiModelProperty(value = "单价") + private BigDecimal price; + + @ApiModelProperty(value = "购买数量") + private Integer payNum; + + @ApiModelProperty(value = "重量") + private BigDecimal weight; + + @ApiModelProperty(value = "体积") + private BigDecimal volume; + + @ApiModelProperty(value = "获得积分") + private Integer giveIntegral; + + @ApiModelProperty(value = "是否评价") + private Boolean isReply; + + @ApiModelProperty(value = "是否单独分佣") + private Boolean isSub; + + @ApiModelProperty(value = "会员价") + private BigDecimal vipPrice; + + @ApiModelProperty(value = "商品类型:0-普通,1-秒杀,2-砍价,3-拼团,4-视频号") + private Integer productType; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/order/StoreOrderStatus.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/order/StoreOrderStatus.java new file mode 100644 index 0000000..6831914 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/order/StoreOrderStatus.java @@ -0,0 +1,47 @@ +package com.zbkj.common.model.order; + +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 订单操作记录表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_store_order_status") +@ApiModel(value="StoreOrderStatus对象", description="订单操作记录表") +public class StoreOrderStatus implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "订单id") + private Integer oid; + + @ApiModelProperty(value = "操作类型") + private String changeType; + + @ApiModelProperty(value = "操作备注") + private String changeMessage; + + @ApiModelProperty(value = "操作时间") + private Date createTime; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProduct.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProduct.java new file mode 100644 index 0000000..e15c161 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProduct.java @@ -0,0 +1,169 @@ +package com.zbkj.common.model.product; + +import java.math.BigDecimal; + +import com.baomidou.mybatisplus.annotation.*; + +import java.io.Serializable; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 商品表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_store_product") +@ApiModel(value="StoreProduct对象", description="商品表") +public class StoreProduct implements Serializable { + + private static final long serialVersionUID=1L; + + public StoreProduct() { + } + + @ApiModelProperty(value = "商品id") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "商户Id(0为总后台管理员创建,不为0的时候是商户后台创建)") + private Integer merId; + + @ApiModelProperty(value = "商品图片") + private String image; + + @ApiModelProperty(value = "轮播图") + private String sliderImage; + + @ApiModelProperty(value = "商品名称") + private String storeName; + + @ApiModelProperty(value = "商品简介") + private String storeInfo; + + @ApiModelProperty(value = "关键字") + private String keyword; + + @ApiModelProperty(value = "商品条码(一维码)") + private String barCode; + + @ApiModelProperty(value = "分类id") + private String cateId; + + @ApiModelProperty(value = "商品价格") + private BigDecimal price; + + @ApiModelProperty(value = "会员价格") + private BigDecimal vipPrice; + + @ApiModelProperty(value = "市场价") + private BigDecimal otPrice; + + @ApiModelProperty(value = "邮费") + private BigDecimal postage; + + @ApiModelProperty(value = "单位名") + private String unitName; + + @ApiModelProperty(value = "排序") + private Integer sort; + + @ApiModelProperty(value = "销量") + private Integer sales; + + @ApiModelProperty(value = "库存") + private Integer stock; + + @ApiModelProperty(value = "状态(0:未上架,1:上架)") + private Boolean isShow; + + @ApiModelProperty(value = "是否热卖") + private Boolean isHot; + + @ApiModelProperty(value = "是否优惠") + private Boolean isBenefit; + + @ApiModelProperty(value = "是否精品") + private Boolean isBest; + + @ApiModelProperty(value = "是否新品") + private Boolean isNew; + + @ApiModelProperty(value = "添加时间") + private Integer addTime; + + @ApiModelProperty(value = "是否包邮") + private Boolean isPostage; + + @ApiModelProperty(value = "是否回收站") + private Boolean isRecycle; + + @ApiModelProperty(value = "是否删除") + private Boolean isDel; + + @ApiModelProperty(value = "商户是否代理 0不可代理1可代理") + private Boolean merUse; + + @ApiModelProperty(value = "获得积分") + private Integer giveIntegral; + + @ApiModelProperty(value = "成本价") + private BigDecimal cost; + + @ApiModelProperty(value = "秒杀状态 0 未开启 1已开启") + private Boolean isSeckill; + + @ApiModelProperty(value = "砍价状态 0未开启 1开启") + private Boolean isBargain; + + @ApiModelProperty(value = "是否优品推荐") + private Boolean isGood; + + @ApiModelProperty(value = "是否单独分佣") + private Boolean isSub; + + @ApiModelProperty(value = "虚拟销量") + private Integer ficti; + + @ApiModelProperty(value = "浏览量") + private Integer browse; + + @ApiModelProperty(value = "商品二维码地址(用户小程序海报)") + private String codePath; + + @ApiModelProperty(value = "淘宝京东1688类型") + private String soureLink; + + @ApiModelProperty(value = "主图视频链接") + private String videoLink; + + @ApiModelProperty(value = "运费模板ID") + private Integer tempId; + + @ApiModelProperty(value = "规格 0单 1多") + private Boolean specType; + + @ApiModelProperty(value = "活动显示排序0=默认,1=秒杀,2=砍价,3=拼团") + private String activity; + + @ApiModelProperty(value = "展示图") + private String flatPattern; + + @ApiModelProperty(value = "商品详情") + @TableField(exist = false) + private String content; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductAttr.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductAttr.java new file mode 100644 index 0000000..29e45bc --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductAttr.java @@ -0,0 +1,52 @@ +package com.zbkj.common.model.product; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 商品属性表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_store_product_attr") +@ApiModel(value="StoreProductAttr对象", description="商品属性表") +public class StoreProductAttr implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "attrId") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "商品ID") + private Integer productId; + + @ApiModelProperty(value = "属性名") + private String attrName; + + @ApiModelProperty(value = "属性值") + private String attrValues; + + @ApiModelProperty(value = "活动类型 0=商品,1=秒杀,2=砍价,3=拼团") + private Integer type; + + @ApiModelProperty(value = "是否删除,0-否,1-是") + private Boolean isDel; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductAttrResult.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductAttrResult.java new file mode 100644 index 0000000..29b453a --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductAttrResult.java @@ -0,0 +1,49 @@ +package com.zbkj.common.model.product; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 商品属性详情表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_store_product_attr_result") +@ApiModel(value="StoreProductAttrResult对象", description="商品属性详情表") +public class StoreProductAttrResult implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "ID") + private Integer id; + + @ApiModelProperty(value = "商品ID") + private Integer productId; + + @ApiModelProperty(value = "商品属性参数") + private String result; + + @ApiModelProperty(value = "上次修改时间") + private Integer changeTime; + + @ApiModelProperty(value = "活动类型 0=商品,1=秒杀,2=砍价,3=拼团") + private Integer type; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductAttrValue.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductAttrValue.java new file mode 100644 index 0000000..4c30fff --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductAttrValue.java @@ -0,0 +1,98 @@ +package com.zbkj.common.model.product; + +import java.math.BigDecimal; + +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 java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 商品属性值表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_store_product_attr_value") +@ApiModel(value="StoreProductAttrValue对象", description="商品属性值表") +public class StoreProductAttrValue implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "attrId") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "商品ID") + private Integer productId; + + @ApiModelProperty(value = "商品属性索引值 (attr_value|attr_value[|....])") + private String suk; + + @ApiModelProperty(value = "属性对应的库存") + private Integer stock; + + @ApiModelProperty(value = "销量") + private Integer sales; + + @ApiModelProperty(value = "属性金额") + private BigDecimal price; + + @ApiModelProperty(value = "图片") + private String image; + + @TableField(value = "`unique`") + @ApiModelProperty(value = "唯一值") + private String unique; + + @ApiModelProperty(value = "成本价") + private BigDecimal cost; + + @ApiModelProperty(value = "商品条码") + private String barCode; + + @ApiModelProperty(value = "原价") + private BigDecimal otPrice; + + @ApiModelProperty(value = "重量") + private BigDecimal weight; + + @ApiModelProperty(value = "体积") + private BigDecimal volume; + + @ApiModelProperty(value = "一级返佣") + private BigDecimal brokerage; + + @ApiModelProperty(value = "二级返佣") + private BigDecimal brokerageTwo; + + @ApiModelProperty(value = "活动类型 0=商品,1=秒杀,2=砍价,3=拼团") + private Integer type; + + @ApiModelProperty(value = "活动限购数量") + private Integer quota; + + @ApiModelProperty(value = "活动限购数量显示") + private Integer quotaShow; + + @ApiModelProperty(value = "产品属性值和属性名对应关系") + private String attrValue; + + @ApiModelProperty(value = "是否删除,0-否,1-是") + private Boolean isDel; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductCate.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductCate.java new file mode 100644 index 0000000..3f1f857 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductCate.java @@ -0,0 +1,47 @@ +package com.zbkj.common.model.product; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 商品分类辅助表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_store_product_cate") +@ApiModel(value="StoreProductCate对象", description="商品分类辅助表") +public class StoreProductCate implements Serializable { + + private static final long serialVersionUID=1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "商品id") + private Integer productId; + + @ApiModelProperty(value = "分类id") + private Integer cateId; + + @ApiModelProperty(value = "添加时间") + private Integer addTime; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductCoupon.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductCoupon.java new file mode 100644 index 0000000..0d8a99d --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductCoupon.java @@ -0,0 +1,56 @@ +package com.zbkj.common.model.product; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 商品优惠券 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_store_product_coupon") +@ApiModel(value="StoreProductCoupon对象", description="") +public class StoreProductCoupon implements Serializable { + + private static final long serialVersionUID=1L; + + public StoreProductCoupon() { + } + + public StoreProductCoupon(Integer productId, Integer issueCouponId, Integer addTime) { + this.productId = productId; + this.issueCouponId = issueCouponId; + this.addTime = addTime; + } + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "商品id") + private Integer productId; + + @ApiModelProperty(value = "优惠劵id") + private Integer issueCouponId; + + @ApiModelProperty(value = "添加时间") + private Integer addTime; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductDescription.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductDescription.java new file mode 100644 index 0000000..02996ed --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductDescription.java @@ -0,0 +1,47 @@ +package com.zbkj.common.model.product; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 商品描述表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_store_product_description") +@ApiModel(value="StoreProductDescription对象", description="商品描述表") +public class StoreProductDescription implements Serializable { + + private static final long serialVersionUID=1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "商品ID") + private Integer productId; + + @ApiModelProperty(value = "商品详情") + private String description; + + @ApiModelProperty(value = "商品类型") + private Integer type; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductRelation.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductRelation.java new file mode 100644 index 0000000..c3aa8dc --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductRelation.java @@ -0,0 +1,58 @@ +package com.zbkj.common.model.product; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + +/** + * 商品点赞和收藏表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_store_product_relation") +@ApiModel(value="StoreProductRelation对象", description="商品点赞和收藏表") +public class StoreProductRelation implements Serializable { + + private static final long serialVersionUID=1L; + @ApiModelProperty(value = "id") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "用户ID") + private Integer uid; + + @ApiModelProperty(value = "商品ID") + private Integer productId; + + @ApiModelProperty(value = "类型(收藏(collect)、点赞(like))") + private String type = "collect"; + + @ApiModelProperty(value = "某种类型的商品(普通商品、秒杀商品)") + private String category; + + @ApiModelProperty(value = "创建时间") + private Date updateTime; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductReply.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductReply.java new file mode 100644 index 0000000..b41c471 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductReply.java @@ -0,0 +1,95 @@ +package com.zbkj.common.model.product; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 评论表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_store_product_reply") +@ApiModel(value="StoreProductReply对象", description="评论表") +public class StoreProductReply implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "评论ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "用户ID") + private Integer uid; + + @ApiModelProperty(value = "订单ID") + private Integer oid; + + @ApiModelProperty(value = "商品id") + private Integer productId; + + @ApiModelProperty(value = "商品 属性id") + @TableField(value = "`unique`") + private String unique; + + @ApiModelProperty(value = "某种商品类型(普通商品、秒杀商品)") + private String replyType; + + @ApiModelProperty(value = "商品分数") + private Integer productScore; + + @ApiModelProperty(value = "服务分数") + private Integer serviceScore; + + @ApiModelProperty(value = "评论内容") + private String comment; + + @ApiModelProperty(value = "评论图片") + private String pics; + + @ApiModelProperty(value = "管理员回复内容") + private String merchantReplyContent; + + @ApiModelProperty(value = "管理员回复时间") + private Integer merchantReplyTime; + + @ApiModelProperty(value = "0未删除1已删除") + private Boolean isDel; + + @ApiModelProperty(value = "0未回复1已回复") + private Boolean isReply; + + @ApiModelProperty(value = "用户名称") + private String nickname; + + @ApiModelProperty(value = "用户头像") + private String avatar; + + @ApiModelProperty(value = "评论时间") + private Date createTime; + + @ApiModelProperty(value = "更新时间") + private Date updateTime; + + @ApiModelProperty(value = "商品规格属性值") + private String sku; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductRule.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductRule.java new file mode 100644 index 0000000..e07bde2 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductRule.java @@ -0,0 +1,44 @@ +package com.zbkj.common.model.product; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 商品规则值(规格)表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_store_product_rule") +@ApiModel(value="StoreProductRule对象", description="商品规则值(规格)表") +public class StoreProductRule implements Serializable { + + private static final long serialVersionUID=1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "规格名称") + private String ruleName; + + @ApiModelProperty(value = "规格值") + private String ruleValue; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/record/UserVisitRecord.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/record/UserVisitRecord.java new file mode 100644 index 0000000..cdb5edd --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/record/UserVisitRecord.java @@ -0,0 +1,48 @@ +package com.zbkj.common.model.record; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 用户访问记录表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_user_visit_record") +@ApiModel(value="UserVisitRecord对象", description="用户访问记录表") +public class UserVisitRecord implements Serializable { + + private static final long serialVersionUID=1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "日期") + private String date; + + @ApiModelProperty(value = "用户uid") + private Integer uid; + + @ApiModelProperty(value = "访问类型:1-首页,2-详情页,3-营销活动详情页,4-个人中心") + private Integer visitType; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/seckill/StoreSeckill.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/seckill/StoreSeckill.java new file mode 100644 index 0000000..1cc20b8 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/seckill/StoreSeckill.java @@ -0,0 +1,132 @@ +package com.zbkj.common.model.seckill; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 商品秒杀产品表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_store_seckill") +@ApiModel(value="StoreSeckill对象", description="商品秒杀产品表") +public class StoreSeckill implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "商品秒杀产品表id") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "商品id") + private Integer productId; + + @ApiModelProperty(value = "推荐图") + private String image; + + @ApiModelProperty(value = "轮播图") + private String images; + + @ApiModelProperty(value = "活动标题") + private String title; + + @ApiModelProperty(value = "简介") + private String info; + + @ApiModelProperty(value = "价格") + private BigDecimal price; + + @ApiModelProperty(value = "成本") + private BigDecimal cost; + + @ApiModelProperty(value = "原价") + private BigDecimal otPrice; + + @ApiModelProperty(value = "返多少积分") + private Integer giveIntegral; + + @ApiModelProperty(value = "排序") + private Integer sort; + + @ApiModelProperty(value = "库存") + private Integer stock; + + @ApiModelProperty(value = "销量") + private Integer sales; + + @ApiModelProperty(value = "单位名") + private String unitName; + + @ApiModelProperty(value = "邮费") + private BigDecimal postage; + + @ApiModelProperty(value = "内容") + private String description; + + @ApiModelProperty(value = "开始时间") + private Date startTime; + + @ApiModelProperty(value = "结束时间") + private Date stopTime; + + @ApiModelProperty(value = "添加时间") + private Date createTime; + + @ApiModelProperty(value = "秒杀状态 0=关闭 1=开启") + private Integer status; + + @ApiModelProperty(value = "是否包邮") + private Boolean isPostage; + + @ApiModelProperty(value = "删除 0未删除1已删除") + private Boolean isDel; + + @ApiModelProperty(value = "最多秒杀几个") + private Integer num; + + @ApiModelProperty(value = "显示") + private Boolean isShow; + + @ApiModelProperty(value = "时间段ID") + private Integer timeId; + + @ApiModelProperty(value = "运费模板ID") + private Integer tempId; + + @ApiModelProperty(value = "重量") + private BigDecimal weight; + + @ApiModelProperty(value = "体积") + private BigDecimal volume; + + @ApiModelProperty(value = "限购总数 随销量递减") + private Integer quota; + + @ApiModelProperty(value = "限购总数显示 不变") + private Integer quotaShow; + + @ApiModelProperty(value = "规格 0单 1多") + private Boolean specType; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/seckill/StoreSeckillManger.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/seckill/StoreSeckillManger.java new file mode 100644 index 0000000..e670176 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/seckill/StoreSeckillManger.java @@ -0,0 +1,69 @@ +package com.zbkj.common.model.seckill; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 商品秒杀管理表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_store_seckill_manger") +@ApiModel(value="StoreSeckillManger对象", description="商品秒杀管理表") +public class StoreSeckillManger implements Serializable { + + private static final long serialVersionUID=1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "秒杀名称") + private String name; + + @ApiModelProperty(value = "秒杀开始时间段") + private Integer startTime; + + @ApiModelProperty(value = "秒杀结束时间段") + private Integer endTime; + + @ApiModelProperty(value = "主图") + private String img; + + @ApiModelProperty(value = "轮播图") + private String silderImgs; + + @ApiModelProperty(value = "排序") + private Integer sort; + + @ApiModelProperty(value = "状态 0=关闭 1=开启") + private Integer status; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "更新时间") + private Date updateTime; + + @ApiModelProperty(value = "0未删除1已删除") + private Boolean isDel; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/sms/SmsRecord.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/sms/SmsRecord.java new file mode 100644 index 0000000..48b12ec --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/sms/SmsRecord.java @@ -0,0 +1,66 @@ +package com.zbkj.common.model.sms; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + +/** + * 短信发送记录表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_sms_record") +@ApiModel(value="SmsRecord对象", description="短信发送记录表") +public class SmsRecord implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "短信发送记录编号") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "短信平台账号") + private String uid; + + @ApiModelProperty(value = "接受短信的手机号") + private String phone; + + @ApiModelProperty(value = "短信内容") + private String content; + + @ApiModelProperty(value = "添加记录ip") + private String addIp; + + @ApiModelProperty(value = "短信模板ID") + private String template; + + @ApiModelProperty(value = "状态码 100=成功,130=失败,131=空号,132=停机,133=关机,134=无状态") + private Integer resultcode; + + @ApiModelProperty(value = "发送记录id") + private Integer recordId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "备注") + private String memo; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/sms/SmsTemplate.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/sms/SmsTemplate.java new file mode 100644 index 0000000..31c65e9 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/sms/SmsTemplate.java @@ -0,0 +1,65 @@ +package com.zbkj.common.model.sms; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + +/** + * 短信模板表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_sms_template") +@ApiModel(value="SmsTemplate对象", description="短信模板表") +public class SmsTemplate implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "id") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "短信模板id") + private String tempId; + + @ApiModelProperty(value = "模板类型") + private Integer tempType; + + @ApiModelProperty(value = "模板说明") + private String title; + + @ApiModelProperty(value = "类型") + private String type; + + @ApiModelProperty(value = "模板编号") + private String tempKey; + + @ApiModelProperty(value = "状态") + private Integer status; + + @ApiModelProperty(value = "短息内容") + private String content; + + @ApiModelProperty(value = "添加时间") + private Date createTime; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemAdmin.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemAdmin.java new file mode 100644 index 0000000..d184478 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemAdmin.java @@ -0,0 +1,78 @@ +package com.zbkj.common.model.system; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + +/** + * 后台管理员表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_system_admin") +@ApiModel(value="SystemAdmin对象", description="后台管理员表") +public class SystemAdmin implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "后台管理员表ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "后台管理员账号") + private String account; + + @ApiModelProperty(value = "后台管理员密码") + private String pwd; + + @ApiModelProperty(value = "后台管理员姓名") + private String realName; + + @ApiModelProperty(value = "后台管理员权限(menus_id)") + private String roles; + + @ApiModelProperty(value = "后台管理员最后一次登录ip") + private String lastIp; + + @ApiModelProperty(value = "后台管理员最后一次登录时间") + private Date updateTime; + + @ApiModelProperty(value = "后台管理员添加时间") + private Date createTime; + + @ApiModelProperty(value = "后台管理员级别") + private Integer level; + + @ApiModelProperty(value = "后台管理员状态 1有效0无效") + private Boolean status; + + @ApiModelProperty(value = "是否删除 1是0否") + private Boolean isDel; + + @ApiModelProperty(value = "登录次数") + private Integer loginCount; + + @ApiModelProperty(value = "手机号码") + private String phone; + + @ApiModelProperty(value = "是否接收短信") + private Boolean isSms; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemAttachment.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemAttachment.java new file mode 100644 index 0000000..729a5af --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemAttachment.java @@ -0,0 +1,66 @@ +package com.zbkj.common.model.system; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 附件管理表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_system_attachment") +@ApiModel(value="SystemAttachment对象", description="附件管理表") +public class SystemAttachment implements Serializable { + + private static final long serialVersionUID=1L; + + @TableId(value = "att_id", type = IdType.AUTO) + private Integer attId; + + @ApiModelProperty(value = "附件名称") + private String name; + + @ApiModelProperty(value = "附件路径") + private String attDir; + + @ApiModelProperty(value = "压缩图片路径") + private String sattDir; + + @ApiModelProperty(value = "附件大小") + private String attSize; + + @ApiModelProperty(value = "附件类型") + private String attType; + + @ApiModelProperty(value = "分类ID 0编辑器,1商品图片,2拼团图片,3砍价图片,4秒杀图片,5文章图片,6组合数据图,7前台用户,8微信系列") + private Integer pid; + + @ApiModelProperty(value = "图片上传类型 1本地 2七牛云 3OSS 4COS ") + private Integer imageType; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "更新时间") + private Date updateTime; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemCity.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemCity.java new file mode 100644 index 0000000..1c05d6b --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemCity.java @@ -0,0 +1,72 @@ +package com.zbkj.common.model.system; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 城市表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_system_city") +@ApiModel(value="SystemCity对象", description="城市表") +public class SystemCity implements Serializable { + + private static final long serialVersionUID=1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "城市id") + private Integer cityId; + + @ApiModelProperty(value = "省市级别") + private Integer level; + + @ApiModelProperty(value = "父级id") + private Integer parentId; + + @ApiModelProperty(value = "区号") + private String areaCode; + + @ApiModelProperty(value = "名称") + private String name; + + @ApiModelProperty(value = "合并名称") + private String mergerName; + + @ApiModelProperty(value = "经度") + private String lng; + + @ApiModelProperty(value = "纬度") + private String lat; + + @ApiModelProperty(value = "是否展示") + private Boolean isShow; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemConfig.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemConfig.java new file mode 100644 index 0000000..15452e4 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemConfig.java @@ -0,0 +1,60 @@ +package com.zbkj.common.model.system; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 配置表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_system_config") +@ApiModel(value="SystemConfig对象", description="配置表") +public class SystemConfig implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "配置id") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "字段名称") + private String name; + + @ApiModelProperty(value = "字段提示文字") + private String title; + + @ApiModelProperty(value = "表单id") + private Integer formId; + + @ApiModelProperty(value = "值") + private String value; + + @ApiModelProperty(value = "是否隐藏") + private Boolean status; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "更新时间") + private Date updateTime; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemFormTemp.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemFormTemp.java new file mode 100644 index 0000000..54b9337 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemFormTemp.java @@ -0,0 +1,55 @@ +package com.zbkj.common.model.system; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 表单模板 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_system_form_temp") +@ApiModel(value="SystemFormTemp对象", description="表单模板") +public class SystemFormTemp implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "表单模板id") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "表单名称") + private String name; + + @ApiModelProperty(value = "表单简介") + private String info; + + @ApiModelProperty(value = "表单内容") + private String content; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "更新时间") + private Date updateTime; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemGroup.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemGroup.java new file mode 100644 index 0000000..5c57723 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemGroup.java @@ -0,0 +1,55 @@ +package com.zbkj.common.model.system; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 组合数据表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_system_group") +@ApiModel(value="SystemGroup对象", description="组合数据表") +public class SystemGroup implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "组合数据ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "数据组名称") + private String name; + + @ApiModelProperty(value = "简介") + private String info; + + @ApiModelProperty(value = "form 表单 id") + private Integer formId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "更新时间") + private Date updateTime; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemGroupData.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemGroupData.java new file mode 100644 index 0000000..4304350 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemGroupData.java @@ -0,0 +1,59 @@ +package com.zbkj.common.model.system; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + +/** + * 组合数据详情表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_system_group_data") +@ApiModel(value="SystemGroupData对象", description="组合数据详情表") +public class SystemGroupData implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "组合数据详情ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "对应的数据组id") + private Integer gid; + + @ApiModelProperty(value = "数据组对应的数据值(json数据)") + private String value; + + @ApiModelProperty(value = "数据排序") + private Integer sort; + + @ApiModelProperty(value = "状态(1:开启;0:关闭;)") + private Boolean status; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "更新时间") + private Date updateTime; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemMenu.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemMenu.java new file mode 100644 index 0000000..ddbf3c2 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemMenu.java @@ -0,0 +1,76 @@ +package com.zbkj.common.model.system; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + +/** + * 系统菜单表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_system_menu") +@ApiModel(value="SystemMenu对象", description="系统菜单表") +public class SystemMenu implements Serializable { + + private static final long serialVersionUID=1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "父级ID") + private Integer pid; + + @ApiModelProperty(value = "名称") + private String name; + + @ApiModelProperty(value = "icon") + private String icon; + + @ApiModelProperty(value = "权限标识") + private String perms; + + @ApiModelProperty(value = "组件路径") + private String component; + + @ApiModelProperty(value = "类型,M-目录,C-菜单,A-按钮") + private String menuType; + + @ApiModelProperty(value = "排序") + private Integer sort; + + @ApiModelProperty(value = "显示状态") + private Boolean isShow; + + @ApiModelProperty(value = "是否删除") + @JsonIgnore + private Boolean isDelte; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "更新时间") + @JsonIgnore + private Date updateTime; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemNotification.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemNotification.java new file mode 100644 index 0000000..3148770 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemNotification.java @@ -0,0 +1,74 @@ +package com.zbkj.common.model.system; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + +/** + * 通知设置表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_system_notification") +@ApiModel(value="SystemNotification对象", description="通知设置表") +public class SystemNotification implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "id") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "标识") + private String mark; + + @ApiModelProperty(value = "通知类型") + private String type; + + @ApiModelProperty(value = "通知场景说明") + private String description; + + @ApiModelProperty(value = "公众号模板消息(0:不存在,1:开启,2:关闭)") + private Integer isWechat; + + @ApiModelProperty(value = "模板消息id") + private Integer wechatId; + + @ApiModelProperty(value = "小程序订阅消息(0:不存在,1:开启,2:关闭)") + private Integer isRoutine; + + @ApiModelProperty(value = "订阅消息id") + private Integer routineId; + + @ApiModelProperty(value = "发送短信(0:不存在,1:开启,2:关闭)") + private Integer isSms; + + @ApiModelProperty(value = "短信id") + private Integer smsId; + + @ApiModelProperty(value = "发送类型(1:用户,2:管理员)") + private Integer sendType; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemPermissions.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemPermissions.java new file mode 100644 index 0000000..650f1a8 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemPermissions.java @@ -0,0 +1,51 @@ +package com.zbkj.common.model.system; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + *

+ * 系统权限表 + *

+ * + * @author HZW + * @since 2021-11-17 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +//@TableName("eb_system_permissions") +@ApiModel(value="SystemPermissions对象", description="系统权限表") +public class SystemPermissions implements Serializable { + + private static final long serialVersionUID=1L; + +// @TableId(value = "id", type = IdType.AUTO) + @ApiModelProperty(value = "id") + private Integer id; + + @ApiModelProperty(value = "父级ID") + private Integer pid; + + @ApiModelProperty(value = "权限名称") + private String name; + + @ApiModelProperty(value = "权限地址") + private String path; + + @ApiModelProperty(value = "排序") + private Integer sort; + + @ApiModelProperty(value = "是否删除") + private Boolean isDelte; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemRole.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemRole.java new file mode 100644 index 0000000..7529478 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemRole.java @@ -0,0 +1,57 @@ +package com.zbkj.common.model.system; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + +/** + * 身份管理表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_system_role") +@ApiModel(value="SystemRole对象", description="身份管理表") +public class SystemRole implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "身份管理id") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "身份管理名称") + private String roleName; + + @ApiModelProperty(value = "身份管理权限(menus_id)") + private String rules; + + private Integer level; + + @ApiModelProperty(value = "状态:0-关闭,1-正常") + private Boolean status; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemRoleMenu.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemRoleMenu.java new file mode 100644 index 0000000..82b6985 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemRoleMenu.java @@ -0,0 +1,40 @@ +package com.zbkj.common.model.system; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 角色菜单关联表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_system_role_menu") +@ApiModel(value="SystemRoleMenu对象", description="角色菜单关联表") +public class SystemRoleMenu implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "角色id") + private Integer rid; + + @ApiModelProperty(value = "权限id") + private Integer menuId; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemStore.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemStore.java new file mode 100644 index 0000000..7a4076a --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemStore.java @@ -0,0 +1,83 @@ +package com.zbkj.common.model.system; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.apache.ibatis.type.JdbcType; + +/** + * 门店自提 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_system_store") +@ApiModel(value="SystemStore对象", description="门店自提") +public class SystemStore implements Serializable { + + private static final long serialVersionUID=1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "门店名称") + private String name; + + @ApiModelProperty(value = "简介") + private String introduction; + + @ApiModelProperty(value = "手机号码") + private String phone; + + @ApiModelProperty(value = "省市区") + private String address; + + @ApiModelProperty(value = "详细地址") + private String detailedAddress; + + @ApiModelProperty(value = "门店logo") + private String image; + + @ApiModelProperty(value = "纬度") + private String latitude; + + @ApiModelProperty(value = "经度") + private String longitude; + + @ApiModelProperty(value = "核销有效日期") + private String validTime; + + @ApiModelProperty(value = "每日营业开关时间") + private String dayTime; + + @ApiModelProperty(value = "是否显示") + private Boolean isShow; + + @ApiModelProperty(value = "是否删除") + private Boolean isDel; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemStoreStaff.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemStoreStaff.java new file mode 100644 index 0000000..a717c7f --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemStoreStaff.java @@ -0,0 +1,65 @@ +package com.zbkj.common.model.system; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + +/** + * 门店店员表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_system_store_staff") +@ApiModel(value="SystemStoreStaff对象", description="门店店员表") +public class SystemStoreStaff implements Serializable { + + private static final long serialVersionUID=1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "微信用户id") + private Integer uid; + + @ApiModelProperty(value = "店员头像") + private String avatar; + + @ApiModelProperty(value = "门店id") + private Integer storeId; + + @ApiModelProperty(value = "店员名称") + private String staffName; + + @ApiModelProperty(value = "手机号码") + private String phone; + + @ApiModelProperty(value = "核销开关") + private Integer verifyStatus; + + @ApiModelProperty(value = "状态") + private Integer status; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "更新时间") + private Date updateTime; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemUserLevel.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemUserLevel.java new file mode 100644 index 0000000..5338941 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemUserLevel.java @@ -0,0 +1,66 @@ +package com.zbkj.common.model.system; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 用户等级表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_system_user_level") +@ApiModel(value="SystemUserLevel对象", description="用户等级表") +public class SystemUserLevel implements Serializable { + + private static final long serialVersionUID=1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "会员名称") + private String name; + + @ApiModelProperty(value = "购买金额|经验达到") + private Integer experience; + + @ApiModelProperty(value = "是否显示 1=显示,0=隐藏") + private Boolean isShow; + + @ApiModelProperty(value = "会员等级") + private Integer grade; + + @ApiModelProperty(value = "享受折扣") + private Integer discount; + + @ApiModelProperty(value = "会员图标") + private String icon; + + @ApiModelProperty(value = "是否删除.1=删除,0=未删除") + private Boolean isDel; + + @ApiModelProperty(value = "创建时间") + private Date updateTime; + + @ApiModelProperty(value = "创建时间") + private Date createTime; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/User.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/User.java new file mode 100644 index 0000000..b2e651b --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/User.java @@ -0,0 +1,159 @@ +package com.zbkj.common.model.user; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 用户表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_user") +@ApiModel(value="User对象", description="用户表") +public class User implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "用户id") + @TableId(value = "uid", type = IdType.AUTO) + private Integer uid; + + @ApiModelProperty(value = "用户账号") + private String account; + + @ApiModelProperty(value = "用户密码") + @JsonIgnore + private String pwd; + + @ApiModelProperty(value = "真实姓名") + private String realName; + + @ApiModelProperty(value = "生日") + private String birthday; + + @ApiModelProperty(value = "身份证号码") + private String cardId; + + @ApiModelProperty(value = "用户备注") + private String mark; + + @ApiModelProperty(value = "合伙人id") + private Integer partnerId; + + @ApiModelProperty(value = "用户分组id") + private String groupId; + + @ApiModelProperty(value = "用户标签id") + private String tagId; + + @ApiModelProperty(value = "用户昵称") + private String nickname; + + @ApiModelProperty(value = "用户头像") + private String avatar; + + @ApiModelProperty(value = "手机号码") + private String phone; + + @ApiModelProperty(value = "性别") + private int sex; + + @ApiModelProperty(value = "国家") + private String country; + + @ApiModelProperty(value = "添加ip") + private String addIp; + + @ApiModelProperty(value = "最后一次登录ip") + private String lastIp; + + @ApiModelProperty(value = "用户余额") + private BigDecimal nowMoney; + + @ApiModelProperty(value = "佣金金额") + private BigDecimal brokeragePrice; + + @ApiModelProperty(value = "用户剩余积分") + private Integer integral; + + @ApiModelProperty(value = "用户剩余经验") + private Integer experience; + + @ApiModelProperty(value = "连续签到天数") + private Integer signNum; + + @ApiModelProperty(value = "1为正常,0为禁止") + private Boolean status; + + @ApiModelProperty(value = "等级") + private Integer level; + + @ApiModelProperty(value = "推广人id") + private Integer spreadUid; + + @ApiModelProperty(value = "推广员关联时间") + private Date spreadTime; + + @ApiModelProperty(value = "用户类型") + private String userType; + + @ApiModelProperty(value = "是否为推广员") + private Boolean isPromoter; + + @ApiModelProperty(value = "用户购买次数") + private Integer payCount; + + @ApiModelProperty(value = "下级人数") + private Integer spreadCount; + + @ApiModelProperty(value = "详细地址") + private String addres; + + @ApiModelProperty(value = "管理员编号 ") + private Integer adminid; + + @ApiModelProperty(value = "用户登陆类型,h5,wechat,routine") + private String loginType; + + @ApiModelProperty(value = "创建时间") + private Date updateTime; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "最后一次登录时间") + private Date lastLoginTime; + + @ApiModelProperty(value = "最后一次登录时间") + private Date cleanTime; + + @ApiModelProperty(value = "用户推广等级") + private String path; + + @ApiModelProperty(value = "是否关注公众号") + private Boolean subscribe; + + @ApiModelProperty(value = "成为分销员时间") + private Date promoterTime; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserAddress.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserAddress.java new file mode 100644 index 0000000..fbcdfa4 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserAddress.java @@ -0,0 +1,88 @@ +package com.zbkj.common.model.user; + +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 用户地址表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_user_address") +@ApiModel(value="UserAddress对象", description="用户地址表") +public class UserAddress implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "用户地址id") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "用户id") + private Integer uid; + + @ApiModelProperty(value = "收货人姓名") + private String realName; + + @ApiModelProperty(value = "收货人电话") + private String phone; + + @ApiModelProperty(value = "收货人所在省") + private String province; + + @ApiModelProperty(value = "收货人所在市") + private String city; + + @ApiModelProperty(value = "城市id") + private Integer cityId; + + @ApiModelProperty(value = "收货人所在区") + private String district; + + @ApiModelProperty(value = "收货人详细地址") + private String detail; + + @ApiModelProperty(value = "邮编") + private Integer postCode; + + @ApiModelProperty(value = "经度") + private String longitude; + + @ApiModelProperty(value = "纬度") + private String latitude; + + @ApiModelProperty(value = "是否默认") + private Boolean isDefault; + + @TableLogic + @ApiModelProperty(value = "是否删除") + private Boolean isDel; + + @ApiModelProperty(value = "创建时间") + private Date updateTime; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserBill.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserBill.java new file mode 100644 index 0000000..0f9feac --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserBill.java @@ -0,0 +1,81 @@ +package com.zbkj.common.model.user; + +import java.math.BigDecimal; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import java.util.Date; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 用户账单表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_user_bill") +@ApiModel(value="UserBill对象", description="用户账单表") +public class UserBill implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "用户账单id") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "用户uid") + private Integer uid; + + @ApiModelProperty(value = "关联id") + private String linkId; + + @ApiModelProperty(value = "0 = 支出 1 = 获得") + private int pm; + + @ApiModelProperty(value = "账单标题") + private String title; + + @ApiModelProperty(value = "明细种类") + private String category; + + @ApiModelProperty(value = "明细类型") + private String type; + + @ApiModelProperty(value = "明细数字") + private BigDecimal number; + + @ApiModelProperty(value = "剩余") + private BigDecimal balance; + + @ApiModelProperty(value = "备注") + private String mark; + + @ApiModelProperty(value = "0 = 带确定 1 = 有效 -1 = 无效") + private Integer status; + + @ApiModelProperty(value = "创建时间") + private Date updateTime; + + @JsonProperty(value = "add_time") + @ApiModelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserBrokerageRecord.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserBrokerageRecord.java new file mode 100644 index 0000000..b865b9d --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserBrokerageRecord.java @@ -0,0 +1,87 @@ +package com.zbkj.common.model.user; + +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 io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 用户佣金记录表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_user_brokerage_record") +@ApiModel(value="UserBrokerageRecord对象", description="用户佣金记录表") +public class UserBrokerageRecord implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "记录id") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "用户uid") + private Integer uid; + + @ApiModelProperty(value = "关联id(orderNo,提现id)") + private String linkId; + + @ApiModelProperty(value = "关联类型(order,extract,yue)") + private String linkType; + + @ApiModelProperty(value = "类型:1-增加,2-扣减(提现)") + private Integer type; + + @ApiModelProperty(value = "标题") + private String title; + + @ApiModelProperty(value = "金额") + private BigDecimal price; + + @ApiModelProperty(value = "剩余") + private BigDecimal balance; + + @ApiModelProperty(value = "备注") + private String mark; + + @ApiModelProperty(value = "状态:1-订单创建,2-冻结期,3-完成,4-失效(订单退款),5-提现申请") + private Integer status; + + @ApiModelProperty(value = "冻结期时间(天)") + private Integer frozenTime; + + @ApiModelProperty(value = "解冻时间") + private Long thawTime; + + @ApiModelProperty(value = "添加时间") + private Date createTime; + + @ApiModelProperty(value = "更新时间") + private Date updateTime; + + @ApiModelProperty(value = "分销等级") + private Integer brokerageLevel; + + @ApiModelProperty(value = "用户昵称") + @TableField(exist = false) + private String userName; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserExperienceRecord.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserExperienceRecord.java new file mode 100644 index 0000000..e635f5b --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserExperienceRecord.java @@ -0,0 +1,74 @@ +package com.zbkj.common.model.user; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + +/** + * 用户经验记录表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_user_experience_record") +@ApiModel(value="UserExperienceRecord对象", description="用户经验记录表") +public class UserExperienceRecord implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "记录id") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "用户uid") + private Integer uid; + + @ApiModelProperty(value = "关联id-orderNo,(sign,system默认为0)") + private String linkId; + + @ApiModelProperty(value = "关联类型(order,sign,system)") + private String linkType; + + @ApiModelProperty(value = "类型:1-增加,2-扣减") + private Integer type; + + @ApiModelProperty(value = "标题") + private String title; + + @ApiModelProperty(value = "经验") + private Integer experience; + + @ApiModelProperty(value = "剩余") + private Integer balance; + + @ApiModelProperty(value = "备注") + private String mark; + + @ApiModelProperty(value = "状态:1-成功(保留字段)") + private Integer status; + + @ApiModelProperty(value = "添加时间") + private Date createTime; + + @ApiModelProperty(value = "更新时间") + private Date updateTime; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserGroup.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserGroup.java new file mode 100644 index 0000000..0c3dd89 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserGroup.java @@ -0,0 +1,41 @@ +package com.zbkj.common.model.user; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 用户分组表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_user_group") +@ApiModel(value="UserGroup对象", description="用户分组表") +public class UserGroup implements Serializable { + + private static final long serialVersionUID=1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "用户分组名称") + private String groupName; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserIntegralRecord.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserIntegralRecord.java new file mode 100644 index 0000000..55e54e3 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserIntegralRecord.java @@ -0,0 +1,80 @@ +package com.zbkj.common.model.user; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + +/** + * 用户积分记录表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_user_integral_record") +@ApiModel(value="UserIntegralRecord对象", description="用户积分记录表") +public class UserIntegralRecord implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "记录id") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "用户uid") + private Integer uid; + + @ApiModelProperty(value = "关联id-orderNo,(sign,system默认为0)") + private String linkId; + + @ApiModelProperty(value = "关联类型(order,sign,system)") + private String linkType; + + @ApiModelProperty(value = "类型:1-增加,2-扣减") + private Integer type; + + @ApiModelProperty(value = "标题") + private String title; + + @ApiModelProperty(value = "积分") + private Integer integral; + + @ApiModelProperty(value = "剩余") + private Integer balance; + + @ApiModelProperty(value = "备注") + private String mark; + + @ApiModelProperty(value = "状态:1-订单创建,2-冻结期,3-完成,4-失效(订单退款)") + private Integer status; + + @ApiModelProperty(value = "冻结期时间(天)") + private Integer frozenTime; + + @ApiModelProperty(value = "解冻时间") + private Long thawTime; + + @ApiModelProperty(value = "添加时间") + private Date createTime; + + @ApiModelProperty(value = "更新时间") + private Date updateTime; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserLevel.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserLevel.java new file mode 100644 index 0000000..f31bf0e --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserLevel.java @@ -0,0 +1,70 @@ +package com.zbkj.common.model.user; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 用户等级记录表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_user_level") +@ApiModel(value="UserLevel对象", description="用户等级记录表") +public class UserLevel implements Serializable { + + private static final long serialVersionUID=1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "用户uid") + private Integer uid; + + @ApiModelProperty(value = "等级vip") + private Integer levelId; + + @ApiModelProperty(value = "会员等级") + private Integer grade; + + @ApiModelProperty(value = "0:禁止,1:正常") + private Boolean status; + + @ApiModelProperty(value = "备注") + private String mark; + + @ApiModelProperty(value = "是否已通知") + private Boolean remind; + + @ApiModelProperty(value = "是否删除,0=未删除,1=删除") + private Boolean isDel; + + @ApiModelProperty(value = "享受折扣") + private Integer discount; + + @ApiModelProperty(value = "创建时间") + private Date updateTime; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserSign.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserSign.java new file mode 100644 index 0000000..0c89485 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserSign.java @@ -0,0 +1,61 @@ +package com.zbkj.common.model.user; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + +/** + * 签到记录表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_user_sign") +@ApiModel(value="UserSign对象", description="签到记录表") +public class UserSign implements Serializable { + + private static final long serialVersionUID=1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "用户uid") + private Integer uid; + + @ApiModelProperty(value = "签到说明") + private String title; + + @ApiModelProperty(value = "获得积分") + private Integer number; + + @ApiModelProperty(value = "剩余积分") + private Integer balance; + + @ApiModelProperty(value = "类型,1积分,2经验") + private Integer type; + + @ApiModelProperty(value = "签到日期") + private Date createDay; + + @ApiModelProperty(value = "添加时间") + private Date createTime; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserTag.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserTag.java new file mode 100644 index 0000000..11ba2e9 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserTag.java @@ -0,0 +1,41 @@ +package com.zbkj.common.model.user; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 用户标签表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_user_tag") +@ApiModel(value="UserTag对象", description="用户标签表") +public class UserTag implements Serializable { + + private static final long serialVersionUID=1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "标签名称") + private String name; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserToken.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserToken.java new file mode 100644 index 0000000..4056202 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserToken.java @@ -0,0 +1,57 @@ +package com.zbkj.common.model.user; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 用户token表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_user_token") +@ApiModel(value="UserToken对象", description="") +public class UserToken implements Serializable { + + private static final long serialVersionUID=1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "用户 id") + private Integer uid; + + @ApiModelProperty(value = "token") + private String token; + + @ApiModelProperty(value = "类型, 1公众号, 2小程序, 5AppIos,6AppAndroid,7ios") + private int type; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "到期事件") + private Date expiresTime; + + @ApiModelProperty(value = "登录ip") + private String loginIp; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/wechat/TemplateMessage.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/wechat/TemplateMessage.java new file mode 100644 index 0000000..4dbc505 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/wechat/TemplateMessage.java @@ -0,0 +1,66 @@ +package com.zbkj.common.model.wechat; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import java.util.Date; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.springframework.boot.context.properties.ConfigurationProperties; + +/** + * 微信模板 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_template_message") +@ApiModel(value="TemplateMessage对象", description="微信模板") +public class TemplateMessage implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "模板id") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "0=订阅消息,1=微信模板消息") + private Boolean type; + + @ApiModelProperty(value = "模板编号") + private String tempKey; + + @ApiModelProperty(value = "模板名") + @JsonProperty + private String name; + + @ApiModelProperty(value = "回复内容") + private String content; + + @ApiModelProperty(value = "模板ID") + private String tempId; + + @ApiModelProperty(value = "状态") + private Integer status; + + @ApiModelProperty(value = "添加时间") + private Date createTime; + + @ApiModelProperty(value = "更新时间") + private Date updateTime; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/wechat/WechatCallback.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/wechat/WechatCallback.java new file mode 100644 index 0000000..50d3105 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/wechat/WechatCallback.java @@ -0,0 +1,58 @@ +package com.zbkj.common.model.wechat; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + +/** + *

+ * 微信回调表 + *

+ * + * @author HZW + * @since 2021-05-19 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_wechat_callback") +@ApiModel(value="WechatCallback对象", description="微信回调表") +public class WechatCallback implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "主键ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "商家小程序名称") + private String toUserName; + + @ApiModelProperty(value = "微信团队的 OpenID(固定值)") + private String fromUserName; + + @ApiModelProperty(value = "事件时间,Unix时间戳") + private Long createTime; + + @ApiModelProperty(value = "消息类型") + private String msgType; + + @ApiModelProperty(value = "事件类型") + private String event; + + @ApiModelProperty(value = "内容") + private String content; + + @ApiModelProperty(value = "创建时间") + private Date addTime; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/wechat/WechatExceptions.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/wechat/WechatExceptions.java new file mode 100644 index 0000000..2b0ff99 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/wechat/WechatExceptions.java @@ -0,0 +1,59 @@ +package com.zbkj.common.model.wechat; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + +/** + * 微信异常表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_wechat_exceptions") +@ApiModel(value="WechatExceptions对象", description="微信异常表") +public class WechatExceptions implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "id") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "错误码") + private String errcode; + + @ApiModelProperty(value = "错误信息") + private String errmsg; + + @ApiModelProperty(value = "回复数据") + private String data; + + @ApiModelProperty(value = "备注") + private String remark; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "更新时间") + private Date updateTime; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/wechat/WechatPayInfo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/wechat/WechatPayInfo.java new file mode 100644 index 0000000..878fa1b --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/wechat/WechatPayInfo.java @@ -0,0 +1,132 @@ +package com.zbkj.common.model.wechat; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 微信订单表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_wechat_pay_info") +@ApiModel(value="WechatPayInfo对象", description="微信订单表") +public class WechatPayInfo implements Serializable { + + private static final long serialVersionUID=1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "公众号唯一标识") + private String appId; + + @ApiModelProperty(value = "商户号") + private String mchId; + + @ApiModelProperty(value = "设备号,PC网页或公众号内支付可以传-WEB") + private String deviceInfo; + + @ApiModelProperty(value = "用户的唯一标识") + private String openId; + + @ApiModelProperty(value = "随机字符串") + private String nonceStr; + + @ApiModelProperty(value = "签名") + private String sign; + + @ApiModelProperty(value = "签名类型,默认为MD5,支持HMAC-SHA256和MD5") + private String signType; + + @ApiModelProperty(value = "商品描述") + private String body; + + @ApiModelProperty(value = "商品详细描述,对于使用单品优惠的商户,该字段必须按照规范上传") + private String detail; + + @ApiModelProperty(value = "附加数据,在查询API和支付通知中原样返回,可作为自定义参数使用") + private String attach; + + @ApiModelProperty(value = "商户订单号,要求32个字符内") + private String outTradeNo; + + @ApiModelProperty(value = "标价币种:CNY:人民币 GBP:英镑 HKD:港币 USD:美元 JPY:日元 CAD:加拿大元 AUD:澳大利亚元 EUR:欧元 NZD:新西兰元 KRW:韩元 THB:泰铢") + private String feeType; + + @ApiModelProperty(value = "标价金额") + private Integer totalFee; + + @ApiModelProperty(value = "终端IP") + private String spbillCreateIp; + + @ApiModelProperty(value = "交易起始时间") + private String timeStart; + + @ApiModelProperty(value = "交易结束时间") + private String timeExpire; + + @ApiModelProperty(value = "通知地址") + private String notifyUrl; + + @ApiModelProperty(value = "交易类型,取值为:JSAPI,NATIVE,APP等") + private String tradeType; + + @ApiModelProperty(value = "商品ID") + private String productId; + + @ApiModelProperty(value = "场景信息") + private String sceneInfo; + + @ApiModelProperty(value = "错误代码") + private String errCode; + + @ApiModelProperty(value = "预支付交易会话标识") + private String prepayId; + + @ApiModelProperty(value = "二维码链接") + private String codeUrl; + + @ApiModelProperty(value = "是否关注公众账号") + private String isSubscribe; + + @ApiModelProperty(value = "交易状态") + private String tradeState; + + @ApiModelProperty(value = "付款银行") + private String bankType; + + @ApiModelProperty(value = "现金支付金额") + private Integer cashFee; + + @ApiModelProperty(value = "代金券金额") + private Integer couponFee; + + @ApiModelProperty(value = "微信支付订单号") + private String transactionId; + + @ApiModelProperty(value = "支付完成时间") + private String timeEnd; + + @ApiModelProperty(value = "交易状态描述") + private String tradeStateDesc; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/wechat/WechatQrcode.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/wechat/WechatQrcode.java new file mode 100644 index 0000000..4b75757 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/wechat/WechatQrcode.java @@ -0,0 +1,71 @@ +package com.zbkj.common.model.wechat; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 微信二维码管理表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_wechat_qrcode") +@ApiModel(value="WechatQrcode对象", description="微信二维码管理表") +public class WechatQrcode implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "微信二维码ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "二维码类型") + private String thirdType; + + @ApiModelProperty(value = "用户id") + private Integer thirdId; + + @ApiModelProperty(value = "二维码参数") + private String ticket; + + @ApiModelProperty(value = "二维码有效时间") + private Integer expireSeconds; + + @ApiModelProperty(value = "状态") + private Boolean status; + + @ApiModelProperty(value = "微信访问url") + private String url; + + @ApiModelProperty(value = "微信二维码url") + private String qrcodeUrl; + + @ApiModelProperty(value = "被扫的次数") + private Integer scan; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/wechat/WechatReply.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/wechat/WechatReply.java new file mode 100644 index 0000000..29c1dc2 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/wechat/WechatReply.java @@ -0,0 +1,59 @@ +package com.zbkj.common.model.wechat; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 微信关键字回复表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_wechat_reply") +@ApiModel(value="WechatReply对象", description="微信关键字回复表") +public class WechatReply implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "微信关键字回复id") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "关键字") + private String keywords; + + @ApiModelProperty(value = "回复类型") + private String type; + + @ApiModelProperty(value = "回复数据") + private String data; + + @ApiModelProperty(value = "0=不可用 1 =可用") + private Boolean status; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/page/CommonPage.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/page/CommonPage.java new file mode 100644 index 0000000..68f7104 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/page/CommonPage.java @@ -0,0 +1,95 @@ +package com.zbkj.common.page; + +import com.zbkj.common.constants.Constants; +import com.github.pagehelper.PageInfo; +import lombok.Data; +import org.springframework.beans.BeanUtils; +import org.springframework.data.domain.Page; + +import java.util.ArrayList; +import java.util.List; + +/** + * 公共分页对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class CommonPage { + private Integer page = Constants.DEFAULT_PAGE; + private Integer limit = Constants.DEFAULT_LIMIT; + private Integer totalPage = 0; + private Long total = 0L ; + private List list = new ArrayList<>(); + + + /** + * 将PageHelper分页后的list转为分页信息 + */ + public static CommonPage restPage(List list) { + CommonPage result = new CommonPage(); + PageInfo pageInfo = new PageInfo(list); + result.setTotalPage(pageInfo.getPages()); + result.setPage(pageInfo.getPageNum()); + result.setLimit(pageInfo.getPageSize()); + result.setTotal(pageInfo.getTotal()); + result.setList(pageInfo.getList()); + return result; + } + + /** + * 将SpringData分页后的list转为分页信息 + */ + public static CommonPage restPage(Page pageInfo) { + CommonPage result = new CommonPage(); + result.setTotalPage(pageInfo.getTotalPages()); + result.setPage(pageInfo.getNumber()); + result.setLimit(pageInfo.getSize()); + result.setTotal(pageInfo.getTotalElements()); + result.setList(pageInfo.getContent()); + return result; + } + + /** + * 将PageHelper分页后的 PageInfo 转为分页信息 + * @return + */ + public static CommonPage restPage(PageInfo pageInfo) { + CommonPage result = new CommonPage(); + result.setTotalPage(pageInfo.getPages()); + result.setPage(pageInfo.getPageNum()); + result.setLimit(pageInfo.getPageSize()); + result.setTotal(pageInfo.getTotal()); + result.setList(pageInfo.getList()); + return result; + } + + /** + * 对象A复制对象B的分页信息 // 多次数据查询导致分页数据异常解决办法 + */ + public static PageInfo copyPageInfo(com.github.pagehelper.Page originPageInfo, List list) { + PageInfo pageInfo = new PageInfo<>(list); + BeanUtils.copyProperties(originPageInfo, pageInfo, "list"); + return pageInfo; + } + + /** + * 对象A复制对象B的分页信息 // 多次数据查询导致分页数据异常解决办法 + */ + public static PageInfo copyPageInfo(PageInfo originPageInfo, List list) { + PageInfo pageInfo = new PageInfo<>(list); + pageInfo.setPages(originPageInfo.getPages()); + pageInfo.setPageNum(originPageInfo.getPageNum()); + pageInfo.setPageSize(originPageInfo.getPageSize()); + pageInfo.setTotal(originPageInfo.getTotal()); + pageInfo.setList(list); + return pageInfo; + } +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/AdminIntegralSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/AdminIntegralSearchRequest.java new file mode 100644 index 0000000..85cd65f --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/AdminIntegralSearchRequest.java @@ -0,0 +1,40 @@ +package com.zbkj.common.request; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 后台积分查询请求对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="AdminIntegralSearchRequest对象", description="后台积分查询请求对象") +public class AdminIntegralSearchRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "添加时间") + private String dateLimit; + + @ApiModelProperty(value = "搜索关键字") + private String keywords; + + @ApiModelProperty(value = "用户id") + private Integer uid; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ArticleRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ArticleRequest.java new file mode 100644 index 0000000..434b2fb --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ArticleRequest.java @@ -0,0 +1,79 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * 文章管理 Request + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="ArticleRequest对象", description="文章管理表") +public class ArticleRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "分类id", required = true) + @NotBlank(message = "请选择分类") + private String cid; + + @ApiModelProperty(value = "文章标题", required = true) + @NotBlank(message = "请填写文章标题") + @Length(max = 200, message = "文章标题最多200个字符") + private String title; + + @ApiModelProperty(value = "文章作者", required = true) + @NotBlank(message = "请填写文章作者") + @Length(max = 50, message = "文章作者最多50个字符") + private String author; + + @ApiModelProperty(value = "文章图片", required = true) + @NotBlank(message = "请上传文章图片") + @Length(max = 255, message = "文章图片名称最多255个字符") + private String imageInput; + + @ApiModelProperty(value = "文章简介", required = true) + @Length(max = 200, message = "文章简介最多200个字符") + @NotBlank(message = "请填写文章简介") + private String synopsis; + + @ApiModelProperty(value = "文章分享标题", required = true) + @NotBlank(message = "请填写文章分享标题") + @Length(max = 200, message = "文章分享标题最多200个字符") + private String shareTitle; + + @ApiModelProperty(value = "文章分享简介", required = true) + @NotBlank(message = "请填写文章分享简介") + @Length(max = 200, message = "文章分享简介最多200个字符") + private String shareSynopsis; + + @ApiModelProperty(value = "是否热门(小程序)", example = "false") + @NotNull(message = "是否热门(小程序)不能为空") + private Boolean isHot; + + @ApiModelProperty(value = "是否轮播图(小程序)" , example = "true") + @NotNull(message = "是否轮播图(小程序)不能为空") + private Boolean isBanner; + + @ApiModelProperty(value = "文章内容", required = true) + @NotBlank(message = "请填写文章内容") + private String content; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ArticleSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ArticleSearchRequest.java new file mode 100644 index 0000000..cd647fd --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ArticleSearchRequest.java @@ -0,0 +1,38 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * + * 文章管理 搜索Request + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="ArticleSearchRequest对象", description="文章管理表") +public class ArticleSearchRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "分类id") + private String cid; + + @ApiModelProperty(value = "搜索关键字") + private String keywords; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/BargainFrontRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/BargainFrontRequest.java new file mode 100644 index 0000000..e8ad7b4 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/BargainFrontRequest.java @@ -0,0 +1,38 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotNull; + +/** + * H5 砍价公共请求对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="BargainFrontRequest对象", description="砍价公共请求对象") +public class BargainFrontRequest { + + @ApiModelProperty(value = "砍价商品ID", required = true) + @NotNull(message = "砍价商品编号不能为空") + private Integer bargainId; + + @ApiModelProperty(value = "用户砍价活动ID") + private Integer bargainUserId; + + @ApiModelProperty(value = "用户砍价活动Uid") + private Integer bargainUserUid; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/BrokerageRecordRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/BrokerageRecordRequest.java new file mode 100644 index 0000000..7333425 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/BrokerageRecordRequest.java @@ -0,0 +1,37 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Range; + +import java.io.Serializable; + +/** + * 资金监控 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="BrokerageRecordRequest对象", description="佣金记录请求对象") +public class BrokerageRecordRequest implements Serializable { + + private static final long serialVersionUID = 3362714265772774491L; + + @ApiModelProperty(value = "类型:1-订单返佣,2-申请提现,3-提现失败,4-提现成功,5-佣金转余额") + @Range(min = 1, max = 5, message = "未知的类型") + private Integer type; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/CartNumRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/CartNumRequest.java new file mode 100644 index 0000000..4e29201 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/CartNumRequest.java @@ -0,0 +1,43 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.Max; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * 购物车数量请求对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="CartRequest对象", description="购物车数量请求对象") +public class CartNumRequest implements Serializable { + + private static final long serialVersionUID = -1186533756329913311L; + + @ApiModelProperty(value = "数量类型:total-商品数量,sum-购物数量", required = true) + @NotNull(message = "数量类型不能为空") + private String type; + + @ApiModelProperty(value = "商品类型:true-有效商品,false-无效商品", required = true) + @NotNull(message = "商品类型不能为空") + private Boolean numType; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/CartRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/CartRequest.java new file mode 100644 index 0000000..1737370 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/CartRequest.java @@ -0,0 +1,46 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.Max; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * 添加购物车参数 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="CartRequest对象", description="购物车") +public class CartRequest { + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "商品ID", required = true) + @NotNull(message = "商品id不能为空") + private Integer productId; + + @ApiModelProperty(value = "商品属性 -- attr 对象的id") + @NotBlank(message = "商品属性id不能为空") + private String productAttrUnique; + + @ApiModelProperty(value = "商品数量", required = true) + @NotNull(message = "商品数量不能为空") + @Min(value = 1, message = "商品数量不能小于1") + @Max(value = 99, message = "单个商品数量不能大于99") + private Integer cartNum; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/CartResetRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/CartResetRequest.java new file mode 100644 index 0000000..cb6289b --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/CartResetRequest.java @@ -0,0 +1,39 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * 购物车重选Request对象类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class CartResetRequest { + + @ApiModelProperty(value = "购物车id") + @NotNull(message = "id 不能为空") + private Long id; + + @ApiModelProperty(value = "购物车数量") + @NotNull(message = "num 不能为空") + private Integer num; + + @ApiModelProperty(value = "商品id") + @NotNull(message = "productId 不能为空") + private Integer productId; + + @ApiModelProperty(value = "AttrValue Id") + @NotNull(message = "unique 不能为空") + private Integer unique; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/CategoryRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/CategoryRequest.java new file mode 100644 index 0000000..9bc4f95 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/CategoryRequest.java @@ -0,0 +1,72 @@ +package com.zbkj.common.request; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Length; +import org.hibernate.validator.constraints.Range; + +import javax.validation.constraints.DecimalMin; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * 分类表 Request + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_category") +@ApiModel(value="Category对象", description="分类表") +public class CategoryRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "父级ID") + @NotNull(message = "请选择父级分类") + @Min(value = 0, message = "请选择父级分类") + private Integer pid; + + @ApiModelProperty(value = "分类名称") + @NotBlank(message = "分类名称必须填写") + @Length(max = 50, message = "分类名称不能超过50个字符") + private String name; + + @ApiModelProperty(value = "类型,类型,1 产品分类,2 附件分类,3 文章分类, 4 设置分类, 5 菜单分类, 6 配置分类, 7 秒杀配置") + @NotNull(message = "类型必须选择") + @Range(min = 1, max = 6, message = "类型,1 产品分类,2 附件分类,3 文章分类, 4 设置分类, 5 菜单分类, 6 配置分类, 7 秒杀配置之间") //取值范围 + private Integer type; + + @ApiModelProperty(value = "地址") +// @NotBlank(message = "地址名称必须填写") + private String url; + + @ApiModelProperty(value = "扩展字段") + private String extra; + + @ApiModelProperty(value = "状态, 0正常,1失效") + @NotNull(message = "状态必须选择") + private Boolean status; + + @ApiModelProperty(value = "排序") + @NotNull(message = "排序数字为空") //不可为空 + @Min(value = 0, message = "排序数字必须大于等于0") //数字最小值为0 + private Integer sort; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/CategorySearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/CategorySearchRequest.java new file mode 100644 index 0000000..aba9559 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/CategorySearchRequest.java @@ -0,0 +1,47 @@ +package com.zbkj.common.request; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 分类表 搜索Request + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_category") +@ApiModel(value="Category对象", description="分类表") +public class CategorySearchRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "父级ID") + private Integer pid; + + @ApiModelProperty(value = "分类名称") + private String name; + + @ApiModelProperty(value = "类型ID | 类型,1 产品分类,2 附件分类,3 文章分类, 4 设置分类, 5 菜单分类, 6 配置分类, 7 秒杀配置") + private Integer type; + + @ApiModelProperty(value = "状态, 1正常,0失效 -1全部") + private Integer status; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ComponentProductSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ComponentProductSearchRequest.java new file mode 100644 index 0000000..7099e74 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ComponentProductSearchRequest.java @@ -0,0 +1,37 @@ +package com.zbkj.common.request; + + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 组件商品列表搜索Request对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="ComponentProductSearchRequest对象", description="组件商品列表搜索Request对象") +public class ComponentProductSearchRequest implements Serializable { + + private static final long serialVersionUID = -2196197495866986580L; + + @ApiModelProperty(value = "商品ID") + private Integer proId; + + @ApiModelProperty(value = "模糊搜索内容,目前只支持商品名称") + private String search; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/CreateOrderRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/CreateOrderRequest.java new file mode 100644 index 0000000..9ec8eaf --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/CreateOrderRequest.java @@ -0,0 +1,74 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Range; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * 创建订单请求对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="CreateOrderRequest对象", description="创建订单请求对象") +public class CreateOrderRequest implements Serializable { + + private static final long serialVersionUID = -6133994384185333872L; + + @ApiModelProperty(value = "预下单订单号") + @NotBlank(message = "预下单订单号不能为空") + private String preOrderNo; + + @ApiModelProperty(value = "快递类型: 1-快递配送,2-到店自提") + @NotNull(message = "快递类型不能为空") + @Range(min = 1, max = 2, message = "未知的快递类型") + private Integer shippingType; + + @ApiModelProperty(value = "收货地址id") + private Integer addressId; + + @ApiModelProperty(value = "优惠券编号") + private Integer couponId; + + @ApiModelProperty(value = "支付类型:weixin-微信支付,yue-余额支付,alipay-支付宝支付") + @NotBlank(message = "支付类型不能为空") + private String payType; + + @ApiModelProperty(value = "支付渠道:weixinh5-微信H5支付,public-公众号支付,routine-小程序支付,weixinAppIos-微信appios支付,weixinAppAndroid-微信app安卓支付,alipay-支付宝支付,appAliPay-App支付宝支付") + @NotBlank(message = "支付渠道不能为空") + private String payChannel; + + @ApiModelProperty(value = "是否使用积分") + @NotNull(message = "是否使用积分不能为空") + private Boolean useIntegral; + + @ApiModelProperty(value = "订单备注") + private String mark; + + // 以下为到店自提参数 + + @ApiModelProperty(value = "自提点id") + private Integer storeId; + + @ApiModelProperty(value = "真实名称") + private String realName; + + @ApiModelProperty(value = "手机号码") + private String phone; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ExpressSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ExpressSearchRequest.java new file mode 100644 index 0000000..633d26f --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ExpressSearchRequest.java @@ -0,0 +1,34 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 快递公司 搜索Request + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="ExpressSearchRequest对象", description="快递公司") +public class ExpressSearchRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "搜索关键字", required = true) + private String keywords; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ExpressUpdateRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ExpressUpdateRequest.java new file mode 100644 index 0000000..24277bb --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ExpressUpdateRequest.java @@ -0,0 +1,61 @@ +package com.zbkj.common.request; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * 快递公司编辑请求体 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_express") +@ApiModel(value="ExpressRequest对象", description="快递公司编辑请求体") +public class ExpressUpdateRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "快递公司id") + @NotNull(message = "快递公司id不能为空") + private Integer id; + + @ApiModelProperty(value = "账号") + private String account; + + @ApiModelProperty(value = "密码") + private String password; + + @ApiModelProperty(value = "网点名称") + private String netName; + + @ApiModelProperty(value = "排序") + @NotNull(message = "排序不能为空") + private Integer sort; + +// @ApiModelProperty(value = "是否显示") +// @NotNull(message = "是否显示不能为空") +// private Boolean isShow; + + @ApiModelProperty(value = "是否可用") + @NotNull(message = "是否可用不能为空") + private Boolean status; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ExpressUpdateShowRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ExpressUpdateShowRequest.java new file mode 100644 index 0000000..8b42ab5 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ExpressUpdateShowRequest.java @@ -0,0 +1,41 @@ +package com.zbkj.common.request; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * 快递公司编辑请求体 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_express") +@ApiModel(value="ExpressRequest对象", description="快递公司编辑请求体") +public class ExpressUpdateShowRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "快递公司id") + @NotNull(message = "快递公司id不能为空") + private Integer id; + + @ApiModelProperty(value = "是否显示") + @NotNull(message = "是否显示不能为空") + private Boolean isShow; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/FundsMonitorRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/FundsMonitorRequest.java new file mode 100644 index 0000000..e320242 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/FundsMonitorRequest.java @@ -0,0 +1,45 @@ +package com.zbkj.common.request; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.zbkj.common.annotation.StringContains; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.List; + +/** + * 资金监控 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="FundsMonitorRequest对象", description="资金监控") +public class FundsMonitorRequest implements Serializable { + + private static final long serialVersionUID = 3362714265772774491L; + + @ApiModelProperty(value = "搜索关键字") + private String keywords; + + @ApiModelProperty(value = "添加时间") + private String dateLimit; + + @ApiModelProperty(value = "明细类型:recharge-充值支付,admin-后台操作,productRefund商品退款,payProduct购买商品") + @StringContains(limitValues = {"recharge", "admin", "productRefund", "payProduct"}, message = "请选择正确的明细类型") + private String title; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/FundsMonitorSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/FundsMonitorSearchRequest.java new file mode 100644 index 0000000..0e4181d --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/FundsMonitorSearchRequest.java @@ -0,0 +1,66 @@ +package com.zbkj.common.request; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.List; + +/** + * 资金监控 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="FundsMonitorSearchRequest对象", description="资金监控") +public class FundsMonitorSearchRequest implements Serializable { + + @ApiModelProperty(value = "搜索关键字") + private String keywords; + + @ApiModelProperty(value = "类型") + private String category; + + @ApiModelProperty(value = "类型") + private String type; + + @ApiModelProperty(value = "添加时间") + private String dateLimit; + + @ApiModelProperty(value = "最大佣金") + private BigDecimal max; + + @ApiModelProperty(value = "最小佣金") + private BigDecimal min; + + @ApiModelProperty(value = "排序 asc/desc") + private String sort; + + @JsonIgnore + @ApiModelProperty(value = "关联id") + private String linkId; + + @JsonIgnore + @ApiModelProperty(value = "操作类型") + private Integer pm; + + @ApiModelProperty(value = "用户id list") + private List userIdList; + + @ApiModelProperty(value = "用户id list") + private Integer uid; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/GetProductReply.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/GetProductReply.java new file mode 100644 index 0000000..4e404ec --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/GetProductReply.java @@ -0,0 +1,32 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModelProperty; +import io.swagger.annotations.ApiOperation; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * 获取商品评论对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class GetProductReply { + + @ApiModelProperty(value = "商品attrid") + @NotBlank(message = "商品uniId不能为空") + private String uni; + + @ApiModelProperty(value = "订单id") + @NotNull(message = "订单id不能为空") + private Integer orderId; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/IosBindingPhoneRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/IosBindingPhoneRequest.java new file mode 100644 index 0000000..c3bb477 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/IosBindingPhoneRequest.java @@ -0,0 +1,36 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 微信绑定手机号请求对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="IosBindingPhoneRequest", description="Ios绑定手机号请求对象") +public class IosBindingPhoneRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "手机号", required = true) + private String phone; + + @ApiModelProperty(value = "验证码", required = true) + private String captcha; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/IosLoginRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/IosLoginRequest.java new file mode 100644 index 0000000..5aceb28 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/IosLoginRequest.java @@ -0,0 +1,40 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotBlank; + +/** + * ios登录请求体 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="IosLoginRequest对象", description="ios登录请求体") +public class IosLoginRequest { + + @ApiModelProperty(value = "iosToken", required = true) +// @NotBlank(message = "identityToken不能为空") + private String identityToken; + + @ApiModelProperty(value = "App服务商唯一用户标识", required = true) + @NotBlank(message = "openId不能为空") + private String openId; + + @ApiModelProperty(value = "Ios用户电子邮箱") +// @NotBlank(message = "email不能为空") + private String email; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/LoginMobileRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/LoginMobileRequest.java new file mode 100644 index 0000000..6a37290 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/LoginMobileRequest.java @@ -0,0 +1,50 @@ +package com.zbkj.common.request; + +import com.zbkj.common.constants.RegularConstants; +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Pattern; +import java.io.Serializable; + +/** + * 手机号注册 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="LoginMobileRequest对象", description="手机号注册") +public class LoginMobileRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "手机号", required = true) + @NotBlank(message = "手机号不能为空") + @Pattern(regexp = RegularConstants.PHONE_TWO, message = "手机号码格式错误") + private String phone; + + @ApiModelProperty(value = "验证码", required = true) + @Pattern(regexp = RegularConstants.VALIDATE_CODE_NUM_SIX, message = "验证码格式错误,验证码必须为6位数字") + private String captcha; + + @ApiModelProperty(value = "推广人id") + @JsonProperty(value = "spread_spid") + private Integer spreadPid; + + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/LoginRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/LoginRequest.java new file mode 100644 index 0000000..292a2db --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/LoginRequest.java @@ -0,0 +1,48 @@ +package com.zbkj.common.request; + +import com.zbkj.common.constants.RegularConstants; +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Pattern; +import java.io.Serializable; + +/** + * 移动端手机密码登录请求对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="LoginRequest对象", description="移动端手机密码登录请求对象") +public class LoginRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "手机号", required = true, example = "18888888") + @NotBlank(message = "手机号不能为空") + @Pattern(regexp = RegularConstants.PHONE_TWO, message = "手机号码格式错误") + @JsonProperty(value = "account") + private String phone; + + @ApiModelProperty(value = "密码", required = true, example = "1~[6,18]") +// @Pattern(regexp = RegularConstants.PASSWORD, message = "密码格式错误,密码必须以字母开头,长度在6~18之间,只能包含字符、数字和下划线") + private String password; + + @ApiModelProperty(value = "推广人id") + @JsonProperty(value = "spread_spid") + private Integer spreadPid = 0; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/MealCodeRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/MealCodeRequest.java new file mode 100644 index 0000000..ff81363 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/MealCodeRequest.java @@ -0,0 +1,56 @@ +package com.zbkj.common.request; + +import com.zbkj.common.annotation.StringContains; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; + +/** + * 套餐购买请求对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value = "MealCodeRequest对象", description = "套餐购买请求对象") +public class MealCodeRequest { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "套餐ID", required = true) + @NotNull(message = "套餐ID不能为空") + private Integer mealId; + + @ApiModelProperty(value = "套餐金额", required = true) + @NotNull(message = "套餐金额不能为空") + private BigDecimal price; + + @ApiModelProperty(value = "套餐量", required = true) + @NotNull(message = "套餐量不能为空") + private Integer num; + + @ApiModelProperty(value = "套餐类型:sms,短信;copy,产品复制;expr_query,物流查询;expr_dump,电子面单", required = true) + @NotBlank(message = "套餐类型不能为空") + @StringContains(limitValues = {"sms","copy","expr_query","expr_dump"}, message = "未知的套餐类型") + private String type; + + @ApiModelProperty(value = "支付类型 weixin:微信支付/alipay:支付宝支付", required = true) + @NotBlank(message = "支付类型不能为空") + @StringContains(limitValues = {"weixin","alipay"}, message = "未知的支付类型") + private String payType; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/NotificationInfoRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/NotificationInfoRequest.java new file mode 100644 index 0000000..0684ab1 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/NotificationInfoRequest.java @@ -0,0 +1,41 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * 系统通知详情请求对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="NotificationInfoRequest对象", description="系统通知详情请求对象") +public class NotificationInfoRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "通知id") + @NotNull(message = "通知id不能为空") + private Integer id; + + @ApiModelProperty(value = "wechat-公众号模板消息,routine-小程序订阅消息,sms-短信") + @NotEmpty(message = "详情类型不能为空") + private String detailType; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/NotificationSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/NotificationSearchRequest.java new file mode 100644 index 0000000..2f43d88 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/NotificationSearchRequest.java @@ -0,0 +1,36 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Range; + +import java.io.Serializable; + +/** + * 系统通知查询对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="NotificationSearchRequest对象", description="系统通知查询对象") +public class NotificationSearchRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "发送类型(1:通知会员,2:通知平台)") + @Range(min = 1, max = 2, message = "未知的发送类型") + private Integer sendType; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/NotificationUpdateRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/NotificationUpdateRequest.java new file mode 100644 index 0000000..60b04e5 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/NotificationUpdateRequest.java @@ -0,0 +1,47 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * 系统通知修改请求对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="NotificationUpdateRequest对象", description="系统通知修改请求对象") +public class NotificationUpdateRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "通知id") + @NotNull(message = "通知id不能为空") + private Integer id; + + @ApiModelProperty(value = "wechat-公众号模板消息,routine-小程序订阅消息,sms-短信") + @NotEmpty(message = "详情类型不能为空") + private String detailType; + + @ApiModelProperty(value = "模板id(wechat、routine)") + private String tempId; + + @ApiModelProperty(value = "状态,1-开启,2-关闭") + @NotNull(message = "状态不能为空") + private Integer status; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/OnePassLoginRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/OnePassLoginRequest.java new file mode 100644 index 0000000..0ef79e4 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/OnePassLoginRequest.java @@ -0,0 +1,39 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * 一号通用户登录请求对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value = "OnePassLoginRequest对象", description = "一号通用户登录请求对象") +public class OnePassLoginRequest { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "账号", required = true) + @NotBlank(message = "账号不能为空") + private String account; + + @ApiModelProperty(value = "password", required = true) + @NotBlank(message = "密码不能为空") + private String password; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/OnePassRegisterRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/OnePassRegisterRequest.java new file mode 100644 index 0000000..b9733c0 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/OnePassRegisterRequest.java @@ -0,0 +1,52 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * 一号通账号注册 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value = "OnePassRegisterRequest对象", description = "一号通账号注册") +public class OnePassRegisterRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "账号", required = true) + @NotBlank(message = "账号不能为空") + private String account; + + @ApiModelProperty(value = "手机号", required = true) + @NotNull(message = "手机号不能为空") + private String phone; + + @ApiModelProperty(value = "密码", required = true) + @NotNull(message = "密码不能为空") + private String password; + + @ApiModelProperty(value = "域名", required = true) + @NotNull(message = "域名不能为空") + private String domain; + + @ApiModelProperty(value = "验证码") + @NotNull(message = "验证码不能为空") + private String code; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/OnePassUpdateRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/OnePassUpdateRequest.java new file mode 100644 index 0000000..ac3f532 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/OnePassUpdateRequest.java @@ -0,0 +1,49 @@ +package com.zbkj.common.request; + +import com.zbkj.common.constants.RegularConstants; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Pattern; +import java.io.Serializable; + +/** + * 一号通账号修改 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value = "OnePassUpdateRequest对象", description = "一号通账号修改") +public class OnePassUpdateRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "账号", required = true) + @NotNull(message = "账号不能为空") + private String account; + + @ApiModelProperty(value = "手机号", required = true) + @NotNull(message = "手机号不能为空") + @Pattern(regexp = RegularConstants.PHONE_TWO, message = "请填写正确的手机号") + private String phone; + + @ApiModelProperty(value = "密码") + private String password; + + @ApiModelProperty(value = "验证码", required = true) + @NotNull(message = "验证码不能为空") + private String code; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/OnePassUserRecordRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/OnePassUserRecordRequest.java new file mode 100644 index 0000000..96fbf24 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/OnePassUserRecordRequest.java @@ -0,0 +1,49 @@ +package com.zbkj.common.request; + +import com.zbkj.common.annotation.StringContains; +import com.zbkj.common.constants.Constants; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Range; + +import javax.validation.constraints.NotBlank; + +/** + * 一号通用量记录请求对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value = "OnePassUserRecordRequest对象", description = "一号通用量记录请求对象") +public class OnePassUserRecordRequest { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "记录类型:sms,短信;copy,产品复制;expr_query,物流查询;expr_dump,电子面单", required = true) + @NotBlank(message = "记录类型不能为空") + @StringContains(limitValues = {"sms","copy","expr_query","expr_dump"}, message = "未知的记录类型") + private String type; + + @ApiModelProperty(value = "短信状态(短信类型时必传):0发送中,1成功,2失败,3全部") + @Range(min = 0, max = 3, message = "未知的短信状态") + private Integer status; + + @ApiModelProperty(value = "页码", example = Constants.DEFAULT_PAGE + "") + private int page = Constants.DEFAULT_PAGE; + + @ApiModelProperty(value = "每页数量", example = Constants.DEFAULT_LIMIT + "") + private int limit = Constants.DEFAULT_LIMIT; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/OrderComputedPriceRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/OrderComputedPriceRequest.java new file mode 100644 index 0000000..4067e60 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/OrderComputedPriceRequest.java @@ -0,0 +1,50 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Range; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * 计算订单价格请求对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="OrderComputedPriceRequest对象", description="计算订单价格请求对象") +public class OrderComputedPriceRequest { + + @ApiModelProperty(value = "预下单订单号") + @NotBlank(message = "预下单订单号不能为空") + private String preOrderNo; + + @ApiModelProperty(value = "地址id") + private Integer addressId; + + @ApiModelProperty(value = "优惠券id") + private Integer couponId; + + @ApiModelProperty(value = "快递类型: 1-快递配送,2-到店自提") + @NotNull(message = "快递类型不能为空") + @Range(min = 1, max = 2, message = "未知的快递类型") + private Integer shippingType; + + @ApiModelProperty(value = "是否使用积分") + @NotNull(message = "是否使用积分不能为空") + private Boolean useIntegral; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/OrderPayRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/OrderPayRequest.java new file mode 100644 index 0000000..0913211 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/OrderPayRequest.java @@ -0,0 +1,50 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotNull; + +/** + * 支付订单参数 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="OrderPayRequest对象", description="订单支付") +public class OrderPayRequest { + + @ApiModelProperty(value = "订单id") +// @NotNull(message = "订单id不能为空") + private String uni; + + @ApiModelProperty(value = "订单编号") + @NotNull(message = "订单编号不能为空") + private String orderNo; + + @ApiModelProperty(value = "支付类型:weixin-微信支付,yue-余额支付,offline-线下支付,alipay-支付包支付") + @NotNull(message = "支付类型不能为空") + private String payType; + + @ApiModelProperty(value = "支付渠道:weixinh5-微信H5支付,public-公众号支付,routine-小程序支付,weixinAppIos-微信appios支付,weixinAppAndroid-微信app安卓支付,alipay-支付包支付,appAliPay-App支付宝支付") + @NotNull(message = "支付渠道不能为空") + private String payChannel; + + @ApiModelProperty(value = "支付平台") + private String from; + + @ApiModelProperty(value = "下单时小程序的场景值") + private Integer scene; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/OrderRefundApplyRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/OrderRefundApplyRequest.java new file mode 100644 index 0000000..1f37c27 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/OrderRefundApplyRequest.java @@ -0,0 +1,54 @@ +package com.zbkj.common.request; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.Max; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * 添加购物车参数Request对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="OrderRefundApplyRequest对象", description="订单申请退款") +public class OrderRefundApplyRequest { + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "退款原因", required = true) + @NotNull(message = "退款原因必须填写") + @Length(max = 255, message = "退款原因不能超过255个字符") + private String text; + + @ApiModelProperty(value = "订单id", required = true) + private Integer id; + + @ApiModelProperty(value = "退款凭证图片(多个图片请用,(英文逗号)隔开)") + @JsonProperty("refund_reason_wap_img") + private String reasonImage; + + @ApiModelProperty(value = "备注说明") + @JsonProperty("refund_reason_wap_explain") + private String explain; + + @ApiModelProperty(value = "待退款订单") + @NotNull(message = "待退款订单 不能为空") + private String uni; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/PageParamRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/PageParamRequest.java new file mode 100644 index 0000000..567b29e --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/PageParamRequest.java @@ -0,0 +1,28 @@ +package com.zbkj.common.request; + +import com.zbkj.common.constants.Constants; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 分页公共请求对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class PageParamRequest { + + @ApiModelProperty(value = "页码", example= Constants.DEFAULT_PAGE + "") + private int page = Constants.DEFAULT_PAGE; + + @ApiModelProperty(value = "每页数量", example = Constants.DEFAULT_LIMIT + "") + private int limit = Constants.DEFAULT_LIMIT; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/PasswordRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/PasswordRequest.java new file mode 100644 index 0000000..66d4305 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/PasswordRequest.java @@ -0,0 +1,51 @@ +package com.zbkj.common.request; + +import com.zbkj.common.constants.RegularConstants; +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Pattern; +import java.io.Serializable; + +/** + * 绑定手机号 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="PasswordRequest对象", description="修改密码") +public class PasswordRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "手机号", required = true) + @NotBlank(message = "手机号不能为空") + @Pattern(regexp = RegularConstants.PHONE_TWO, message = "手机号码格式错误") + @JsonProperty(value = "account") + private String phone; + + @ApiModelProperty(value = "密码", required = true) + @Pattern(regexp = RegularConstants.PASSWORD, message = "密码格式错误,密码必须以字母开头,长度在6~18之间,只能包含字符、数字和下划线") + private String password; + + @ApiModelProperty(value = "验证码", required = true) + @Pattern(regexp = RegularConstants.VALIDATE_CODE_NUM_SIX, message = "验证码格式错误,验证码必须为6位数字") + @JsonProperty(value = "captcha") + private String validateCode; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/PayComponentProductAddRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/PayComponentProductAddRequest.java new file mode 100644 index 0000000..82a3e1f --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/PayComponentProductAddRequest.java @@ -0,0 +1,89 @@ +package com.zbkj.common.request; + + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.List; + +/** + * 组件商品添加Request对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="PayComponentProductAddRequest对象", description="组件商品添加Request对象") +public class PayComponentProductAddRequest implements Serializable { + + private static final long serialVersionUID = -2196197495866986580L; + + @ApiModelProperty(value = "商品ID(更新时必填)") + private Integer id; + + @ApiModelProperty(value = "主商品ID", required = true) + @NotNull(message = "请先选择主商品") + private Integer primaryProductId; + + @ApiModelProperty(value = "标题", required = true) + @NotNull(message = "标题不能为空") + private String title; + + @ApiModelProperty(value = "轮播图,多张", required = true) + @NotNull(message = "轮播图不能为空") + private String headImg; + + @ApiModelProperty(value = "商品资质图片,多张") + private String qualificationPics; + + @ApiModelProperty(value = "第三级类目ID", required = true) + @NotNull(message = "第三级类目不能为空") + private Integer thirdCatId; + + @ApiModelProperty(value = "品牌id") + private Integer brandId; + + @ApiModelProperty(value = "商品详情") + private String descInfo; + + @ApiModelProperty(value = "商品详情图片,多图") + private String descImgs; + + @ApiModelProperty(value = "运费模板ID", required = true) + @NotNull(message = "运费模板不能为空") + private Integer tempId; + + @ApiModelProperty(value = "库存") + private Integer stock; + + @ApiModelProperty(value = "单位名", required = true) + private String unitName; + + @ApiModelProperty(value = "获得积分", required = true) + private Integer giveIntegral; + + @ApiModelProperty(value = "虚拟销量", required = true) + private Integer ficti; + + @ApiModelProperty(value = "规格 0单 1多", required = true) + private Boolean specType; + + @ApiModelProperty(value = "商品属性") + private List attr; + + @ApiModelProperty(value = "商品属性详情") + private List attrValue; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/PreOrderDetailRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/PreOrderDetailRequest.java new file mode 100644 index 0000000..115b624 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/PreOrderDetailRequest.java @@ -0,0 +1,57 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 预下单详情请求对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="PreOrderRequest对象", description="预下单详情请求对象") +public class PreOrderDetailRequest { + + @ApiModelProperty(value = "购物车编号,购物车预下单时必填") + private Long shoppingCartId; + + @ApiModelProperty(value = "商品id(立即购买必填)") + private Integer productId; + + @ApiModelProperty(value = "商品规格属性id(立即购买、活动购买必填)") + private Integer attrValueId; + + @ApiModelProperty(value = "商品数量(立即购买、活动购买必填)") + private Integer productNum; + + @ApiModelProperty(value = "订单编号(再次购买必填)") + private String orderNo; + + @ApiModelProperty(value = "砍价商品id") + private Integer bargainId = 0; + + @ApiModelProperty(value = "用户砍价活动id") + private Integer bargainUserId = 0; + + @ApiModelProperty(value = "拼团商品id") + private Integer combinationId = 0; + + @ApiModelProperty(value = "拼团团长id") + private Integer pinkId = 0; + + @ApiModelProperty(value = "秒杀商品id") + private Integer seckillId = 0; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/PreOrderRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/PreOrderRequest.java new file mode 100644 index 0000000..e48072c --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/PreOrderRequest.java @@ -0,0 +1,37 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotBlank; +import java.util.List; + +/** + * 预下单请求对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="PreOrderRequest对象", description="预下单请求对象") +public class PreOrderRequest { + + @ApiModelProperty(value = "预下单类型(“shoppingCart”:购物车下单,“buyNow”:立即购买,”again“: 再次购买,”video“: 视频号商品下单)") + @NotBlank(message = "预下单类型不能为空") + private String preOrderType; + + @ApiModelProperty(value = "订单详情列表") + private List orderDetails; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ProductListRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ProductListRequest.java new file mode 100644 index 0000000..94bc9ed --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ProductListRequest.java @@ -0,0 +1,37 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 商品列表请求对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="ProductListRequest对象", description="商品列表请求对象") +public class ProductListRequest implements Serializable { + + private static final long serialVersionUID = 3481659942630712958L; + + @ApiModelProperty(value = "搜索关键字") + private String keyword; + + @ApiModelProperty(value = "分类id") + private Integer cid; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ProductRankingRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ProductRankingRequest.java new file mode 100644 index 0000000..8a1c43b --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ProductRankingRequest.java @@ -0,0 +1,46 @@ +package com.zbkj.common.request; + +import com.zbkj.common.constants.Constants; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * 商品排行请求对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="ProductRankingRequest对象", description="商品排行请求对象") +public class ProductRankingRequest implements Serializable { + + private static final long serialVersionUID = 3362714265772774491L; + + @ApiModelProperty(value = "排序参数:pageviews-浏览量,collectNum-收藏数,addCartNum-加购数,salesNum-销量,salesAmount-销售额") + @NotBlank(message = "请选择排序参数") + private String sortKey; + + @ApiModelProperty(value = "时间参数") + @NotBlank(message = "请先选择时间") + private String dateLimit; + + @ApiModelProperty(value = "页码", example= Constants.DEFAULT_PAGE + "") + private int page = Constants.DEFAULT_PAGE; + + @ApiModelProperty(value = "每页数量", example = Constants.DEFAULT_LIMIT + "") + private int limit = Constants.DEFAULT_LIMIT; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ProductRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ProductRequest.java new file mode 100644 index 0000000..7b46303 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ProductRequest.java @@ -0,0 +1,45 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 商品搜索 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="ProductRequest对象", description="商品搜索") +public class ProductRequest implements Serializable { + + private static final long serialVersionUID = 3481659942630712958L; + + @ApiModelProperty(value = "搜索关键字") + private String keyword; + + @ApiModelProperty(value = "分类id") + private Integer cid; + + @ApiModelProperty(value = "价格排序", allowableValues = "range[asc,desc]") + private String priceOrder; + + @ApiModelProperty(value = "销量排序", allowableValues = "range[asc,desc]") + private String salesOrder; + + @ApiModelProperty(value = "是否新品") + private Boolean news; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/RegisterAppWxRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/RegisterAppWxRequest.java new file mode 100644 index 0000000..f06eaa5 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/RegisterAppWxRequest.java @@ -0,0 +1,58 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * App微信注册/登录请求对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="RegisterAppWxRequest对象", description="App微信注册/登录请求对象") +public class RegisterAppWxRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "用户openId") + private String openId; + + @ApiModelProperty(value = "用户unionId") + private String unionId; + + @ApiModelProperty(value = "用户昵称", required = true) + private String nickName; + + @ApiModelProperty(value = "性别:0未知,1-男,2-女", required = true) + private String gender; + + @ApiModelProperty(value = "用户个人资料填写的省份") + private String province; + + @ApiModelProperty(value = "普通用户个人资料填写的城市") + private String city; + + @ApiModelProperty(value = "国家,如中国为CN") + private String country; + + @ApiModelProperty(value = "微信App用户头像", required = true) + private String avatarUrl; + + @ApiModelProperty(value = "微信App类型:iosWx-苹果微信,androidWx-安卓微信", required = true) + private String type; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/RegisterThirdUserRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/RegisterThirdUserRequest.java new file mode 100644 index 0000000..abf0b0a --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/RegisterThirdUserRequest.java @@ -0,0 +1,62 @@ +package com.zbkj.common.request; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 用户地址表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="RegisterThirdUserRequest对象", description="三方用户注册对象") +public class RegisterThirdUserRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "用户昵称", required = true) + private String nickName; + + @ApiModelProperty(value = "性别", required = true) + private String sex; + + @ApiModelProperty(value = "用户个人资料填写的省份") + private String province; + + @ApiModelProperty(value = "普通用户个人资料填写的城市") + private String city; + + @ApiModelProperty(value = "国家,如中国为CN") + private String country; + + @ApiModelProperty(value = "微信小程序用户头像", required = true) + private String avatar; + + @ApiModelProperty(value = "推广人id") + @JsonProperty(value = "spread_spid", defaultValue = "0") + private Integer spreadPid; + + @ApiModelProperty(value = "微信公众号用户头像", required = true) + private String headimgurl; + + @ApiModelProperty(value = "用户类型:wechat-公众号,routine-小程序,h5-H5,iosWx-苹果微信,androidWx-安卓微信") + private String type; + + @ApiModelProperty(value = "用户openId") + private String openId; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/RetailShopRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/RetailShopRequest.java new file mode 100644 index 0000000..2b854a6 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/RetailShopRequest.java @@ -0,0 +1,77 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.hibernate.validator.constraints.Range; + +import javax.validation.constraints.DecimalMin; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; +import java.util.List; + +/** + * 分销设置参数 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class RetailShopRequest { + + public RetailShopRequest() { + } + + @ApiModelProperty(value = "是否启用分销:1-启用,0-禁止") + @NotNull(message = "是否启用分销 不能为空") + private Integer brokerageFuncStatus; + +// @ApiModelProperty(value = "分销模式:1-指定分销,2-人人分销,3-满额分销") +// @NotNull(message = "分销模式 不能为空") +// private String storeBrokerageStatus; + + @ApiModelProperty(value = "分销额度:-1-关闭,0--用户购买金额大于等于设置金额时,用户自动成为分销员") + @NotNull(message = "分销额度 不能为空") + @Min(value = -1, message = "分销额度,不能小于-1") + private Integer storeBrokerageQuota; + + @ApiModelProperty(value = "一级返佣比例") + @NotNull(message = "一级返佣比例 不能为空") + @Range(min = 0, max = 100, message = "一级返佣比例请在0-100中选择") + private Integer storeBrokerageRatio; + + @ApiModelProperty(value = "二级返佣比例") + @NotNull(message = "二级返佣比例 不能为空") + @Range(min = 0, max = 100, message = "二级返佣比例在0-100中选择") + private Integer storeBrokerageTwo; + + @ApiModelProperty(value = "分销关系绑定:0-所有用户,1-新用户") + @NotNull(message = "分销关系绑定 不能为空") + private Integer brokerageBindind; + + @ApiModelProperty(value = "用户提现最低金额") + @NotNull(message = "用户提现最低金额 不能为空") + @DecimalMin(value = "0", message = "用户提现最低金额最小为0") + private BigDecimal userExtractMinPrice; + + @ApiModelProperty(value = "提现银行") + @NotNull(message = "提现银行 不能为空") + private String userExtractBank; + + @ApiModelProperty(value = "冻结时间") + @NotNull(message = "冻结时间 不能为空") + @Min(value = 0, message = "冻结时间最少为0天") + private Integer extractTime; + + @ApiModelProperty(value = "是否展示分销气泡:0-展示,1-展示") + @NotNull(message = "是否展示分销气泡 不能为空") + @Range(min = 0, max = 1, message = "是否展示分销气泡只能选择0-1") + private Integer storeBrokerageIsBubble; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/RetailShopStairUserRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/RetailShopStairUserRequest.java new file mode 100644 index 0000000..0a3c3bd --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/RetailShopStairUserRequest.java @@ -0,0 +1,42 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.hibernate.validator.constraints.Range; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; + +/** + * 推广列表参数 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@ApiModel(value = "RetailShopStairUserRequest对象", description = "推广等级参数") +public class RetailShopStairUserRequest { + + @ApiModelProperty(value = "搜索关键字") + private String nickName; + + @ApiModelProperty(value = "时间参数 today,yesterday,lately7,lately30,month,year,/yyyy-MM-dd hh:mm:ss,yyyy-MM-dd hh:mm:ss/") + private String dateLimit; + + // 类型 0 = 全部 1=一级推广人 2=二级推广人 + @ApiModelProperty(value = "类型 0 = 全部 1=一级推广人 2=二级推广人") + @NotNull(message = "推广人类型不能为空") + @Range(min = 0, max = 3, message = "请选择正确的用户类型") + private Integer type; + + @ApiModelProperty(value = "用户id") + @Min(value = 1, message = "用户id不能为空") + private Integer uid; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SearchAndPageRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SearchAndPageRequest.java new file mode 100644 index 0000000..25c5ba8 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SearchAndPageRequest.java @@ -0,0 +1,33 @@ +package com.zbkj.common.request; + +import com.zbkj.common.constants.Constants; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 查询分页公共请求对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class SearchAndPageRequest { + + @ApiModelProperty(value = "搜索关键字") + private String keywords; + + @ApiModelProperty(value = "页码", example= Constants.DEFAULT_PAGE + "") + private int page = Constants.DEFAULT_PAGE; + + @ApiModelProperty(value = "每页数量", example = Constants.DEFAULT_LIMIT + "") + private int limit = Constants.DEFAULT_LIMIT; + + @ApiModelProperty(value = "优惠券类型:1-手动领取,3-赠送券") + private Integer type; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ServiceOpenRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ServiceOpenRequest.java new file mode 100644 index 0000000..1799afb --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ServiceOpenRequest.java @@ -0,0 +1,60 @@ +package com.zbkj.common.request; + +import com.zbkj.common.annotation.StringContains; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; + +/** + * 服务开通请求对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value = "ServiceOpenRequest对象", description = "服务开通请求对象") +public class ServiceOpenRequest { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "服务类型:sms,短信;copy,产品复制;expr_query,物流查询;expr_dump,电子面单", required = true) + @NotBlank(message = "服务类型不能为空") + @StringContains(limitValues = {"sms","copy","expr_query","expr_dump"}, message = "未知的服务类型") + private String type; + + @ApiModelProperty(value = "短信签名,短信开通必填") + private String sign; + + @ApiModelProperty(value = "快递公司简称,电子面单开通必填") + private String com; + + @ApiModelProperty(value = "快递公司模板Id、电子面单开通必填") + private String tempId; + + @ApiModelProperty(value = "快递面单发货人姓名,电子面单开通必填") + private String toName; + + @ApiModelProperty(value = "快递面单发货人电话,电子面单开通必填") + private String toTel; + + @ApiModelProperty(value = "发货人详细地址,电子面单开通必填") + private String toAddress; + + @ApiModelProperty(value = "电子面单打印机编号,电子面单开通必填") + private String siid; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ShippingTemplatesFreeRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ShippingTemplatesFreeRequest.java new file mode 100644 index 0000000..76d4fe5 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ShippingTemplatesFreeRequest.java @@ -0,0 +1,53 @@ +package com.zbkj.common.request; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.DecimalMin; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 免费模版 Request + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_shipping_templates_free") +@ApiModel(value="ShippingTemplatesFreeRequest对象", description="免费") +public class ShippingTemplatesFreeRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "城市ID, 多个逗号分割。 全国 all", required = true, example = "1,2,3,4") + @NotNull(message = "请选择城市") + private String cityId; + + @ApiModelProperty(value = "城市名称描述") + private String title; + + @ApiModelProperty(value = "包邮件数", required = true, example = "1") +// @Min(value = 1, message = "请填写包邮件数") + @DecimalMin(value = "0.1", message = "包邮不能低于0.1") + private BigDecimal number; + + @ApiModelProperty(value = "包邮金额", required = true, example = "0.1") + @NotNull(message = "请填写包邮金额") + @DecimalMin(value = "0", message = "包邮金额不能低于0") + private BigDecimal price; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ShippingTemplatesRegionRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ShippingTemplatesRegionRequest.java new file mode 100644 index 0000000..dee4433 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ShippingTemplatesRegionRequest.java @@ -0,0 +1,61 @@ +package com.zbkj.common.request; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.DecimalMin; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 模板区域Reuqest + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_shipping_templates_region") +@ApiModel(value="ShippingTemplatesRegionRequest对象", description="付费") +public class ShippingTemplatesRegionRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "城市ID, 多个逗号分割。全国 all", required = true, example = "1,2,3,4") + @NotNull(message = "请选择城市") + private String cityId; + + @ApiModelProperty(value = "城市名称描述") + private String title; + + @ApiModelProperty(value = "首件", required = true, example = "0.1") + @DecimalMin(value = "0.1", message = "首件金额不能低于0.1") + private BigDecimal first; + + @ApiModelProperty(value = "首件运费", required = true, example = "0.1") + @DecimalMin(value = "0.1", message = "首件运费金额不能低于0.1") + private BigDecimal firstPrice; + + @ApiModelProperty(value = "续件", required = true, example = "0.1") + @DecimalMin(value = "0.1", message = "续件不能低于0.1") + private BigDecimal renewal; + + @ApiModelProperty(value = "续件运费", required = true, example = "0.1") + @DecimalMin(value = "0.1", message = "续件运费金额不能低于0.1") + private BigDecimal renewalPrice; + + @ApiModelProperty(value = "分组唯一值") + private String uniqid; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ShippingTemplatesRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ShippingTemplatesRequest.java new file mode 100644 index 0000000..5e732c0 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ShippingTemplatesRequest.java @@ -0,0 +1,64 @@ +package com.zbkj.common.request; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Length; +import org.hibernate.validator.constraints.Range; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.List; + +/** + * 模版Request + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_shipping_templates") +@ApiModel(value="ShippingTemplatesRequest对象", description="模板") +public class ShippingTemplatesRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "模板名称", required = true) + @NotBlank(message = "模板名称必须填写") + @Length(max = 200, message = "模板名称不能超过200个字符") + private String name; + + @ApiModelProperty(value = "计费方式 1(按件数), 2(按重量),3(按体积)", example = "1", required = true) + @NotNull(message = "计费方式必须选择") + @Range(min = 1, max = 3, message = "计费方式选择区间 1(按件数), 2(按重量),3(按体积)") + private Integer type; + + @ApiModelProperty(value = "配送区域及运费", required = true) + private List shippingTemplatesRegionRequestList; + + @ApiModelProperty(value = "指定包邮", example = "1", required = true) + @NotNull(message = "指定包邮必须选择") + private Boolean appoint; + + @ApiModelProperty(value = "指定包邮设置", required = true) + private List shippingTemplatesFreeRequestList; + + @ApiModelProperty(value = "排序", example = "0") + @NotNull(message = "排序数字必须填写") + @Min(value = 0, message = "排序最小为0") + private Integer sort; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ShippingTemplatesSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ShippingTemplatesSearchRequest.java new file mode 100644 index 0000000..a2c277a --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ShippingTemplatesSearchRequest.java @@ -0,0 +1,35 @@ +package com.zbkj.common.request; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 模板搜索Request + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_shipping_templates") +@ApiModel(value="ShippingTemplatesSearchRequest对象", description="模板搜索") +public class ShippingTemplatesSearchRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "模板名称") + private String keywords; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SmsApplyTempRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SmsApplyTempRequest.java new file mode 100644 index 0000000..9e22b3e --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SmsApplyTempRequest.java @@ -0,0 +1,49 @@ +package com.zbkj.common.request; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Range; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; +import java.io.Serializable; + +/** + * 申请短信模板请求对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="SmsApplyTempRequest对象", description="申请短信模板请求对象") +public class SmsApplyTempRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "模板标题") + @NotBlank(message = "模板标题不能为空") + private String title; + + @ApiModelProperty(value = "模板内容(仅内容,不需要签名)") + @NotBlank(message = "模板内容不能为空") + private String content; + + @ApiModelProperty(value = "模板类型:1验证码,2通知,3推广") + @NotNull(message = "模板类型不能为空") + @Range(min = 1, max = 3, message = "未知的模板类型") + private Integer type; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SmsModifySignRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SmsModifySignRequest.java new file mode 100644 index 0000000..7a4d211 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SmsModifySignRequest.java @@ -0,0 +1,44 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * 短信修改签名请求对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value = "SmsModifySignRequest对象", description = "短信修改签名请求对象") +public class SmsModifySignRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "新的短信签名", required = true) + @NotBlank(message = "短信签名不能为空") + private String sign; + + @ApiModelProperty(value = "账号绑定的手机号", required = true) + @NotBlank(message = "手机号不能为空") + private String phone; + + @ApiModelProperty(value = "短信验证码", required = true) + @NotBlank(message = "短信验证码不能为空") + private String code; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreBargainRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreBargainRequest.java new file mode 100644 index 0000000..bae331a --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreBargainRequest.java @@ -0,0 +1,128 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.*; +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.List; + +/** + * 砍价商品Request + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="StoreBargain对象", description="砍价表") +public class StoreBargainRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "砍价商品id|新增时不填,修改时必填") + private Integer id; + + @ApiModelProperty(value = "关联商品ID") + @NotNull(message = "商品编号不能为空") + @Min(value = 1, message = "关联商品ID不能小于1") + private Integer productId; + + @ApiModelProperty(value = "砍价活动名称") + @NotBlank(message = "砍价活动名称不能为空") + @Length(max = 200, message = "砍价活动名称不能超过200个字符") + private String title; + + @ApiModelProperty(value = "砍价活动图片") + @NotBlank(message = "砍价活动图片不能为空") + @Length(max = 150, message = "砍价活动图片不能超过150个字符") + private String image; + + @ApiModelProperty(value = "单位名称") + @NotBlank(message = "单位名称不能为空") + @Length(max = 16, message = "单位名称不能超过16个字符") + private String unitName; + + @ApiModelProperty(value = "砍价商品轮播图") + @NotBlank(message = "轮播图不能为空") + @Length(max = 2000, message = "砍价商品轮播图不能超过2000个字符") + private String images; + + @ApiModelProperty(value = "砍价开启时间") + @NotBlank(message = "砍价开启时间不能为空") + private String startTime; + + @ApiModelProperty(value = "砍价结束时间") + @NotBlank(message = "砍价结束时间不能为空") + private String stopTime; + + @ApiModelProperty(value = "砍价商品名称") + @NotBlank(message = "砍价商品名称不能为空") + @Length(max = 200, message = "砍价商品名称不能超过200个字符") + private String storeName; + + @ApiModelProperty(value = "砍价金额") + private BigDecimal price; + + @ApiModelProperty(value = "砍价商品最低价") + private BigDecimal minPrice; + + @ApiModelProperty(value = "购买数量限制") + @NotNull(message = "购买数量限制不能为空") + @Min(value = 1, message = "购买数量限制必须大于0") + private Integer num; + +// @ApiModelProperty(value = "用户每次砍价的最大金额") +// private BigDecimal bargainMaxPrice; + +// @ApiModelProperty(value = "用户每次砍价的最小金额") +// private BigDecimal bargainMinPrice; + + @ApiModelProperty(value = "帮砍次数") + @NotNull(message = "帮砍次数不能为空") + @Min(value = 1, message = "帮砍次数必须大于0") + private Integer bargainNum; + + @ApiModelProperty(value = "砍价状态 0(到砍价时间不自动开启) 1(到砍价时间自动开启时间)") + @NotNull(message = "砍价活动状态不能为空") + private Boolean status; + +// @ApiModelProperty(value = "砍价活动简介") +// @NotBlank(message = "砍价活动简介不能为空") +// private String info; + +// @ApiModelProperty(value = "砍价规则") +// private String rule; + + @ApiModelProperty(value = "运费模板ID") + @NotNull(message = "运费模板ID不能为空") + private Integer tempId; + + @ApiModelProperty(value = "砍价活动发起人数") + @Min(value = 2, message = "砍价人数最少两人") + @Max(value = 9999, message = "砍价人数最多9999") + private Integer peopleNum; + + @ApiModelProperty(value = "商品属性") + @NotEmpty(message = "商品属性不能为空") + private List attr; + + @ApiModelProperty(value = "商品属性详情") + @NotEmpty(message = "商品属性详情不能为空") + private List attrValue; + + @ApiModelProperty(value = "商品描述") + private String content; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreBargainSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreBargainSearchRequest.java new file mode 100644 index 0000000..0e400eb --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreBargainSearchRequest.java @@ -0,0 +1,39 @@ +package com.zbkj.common.request; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 砍价商品查询Request + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="StoreBargain对象", description="砍价表") +public class StoreBargainSearchRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "搜索关键字 商品id或者名称") + private String keywords; + + @ApiModelProperty(value = "砍价状态 0(到砍价时间不自动开启) 1(到砍价时间自动开启时间)") + private Integer status; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreBargainUserSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreBargainUserSearchRequest.java new file mode 100644 index 0000000..5cb772c --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreBargainUserSearchRequest.java @@ -0,0 +1,39 @@ +package com.zbkj.common.request; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 用户参与砍价查询Request + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_store_bargain_user") +@ApiModel(value="StoreBargainUser对象", description="用户参与砍价表") +public class StoreBargainUserSearchRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "状态 1参与中 2 活动结束参与失败 3活动结束参与成功") + private Integer status; + + @ApiModelProperty(value = "today,yesterday,lately7,lately30,month,year,/yyyy-MM-dd hh:mm:ss,yyyy-MM-dd hh:mm:ss/") + private String dateLimit; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreCombinationRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreCombinationRequest.java new file mode 100644 index 0000000..a71d61d --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreCombinationRequest.java @@ -0,0 +1,117 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.Max; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.List; + +/** + * 拼团商品表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="StoreCombinationRequest对象", description="拼团商品请求对象") +public class StoreCombinationRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "拼团商品ID|新增时不填,修改时必填") + private Integer id; + + @ApiModelProperty(value = "商品id") + @NotNull(message = "商品编号不能为空") + @Min(value = 1, message = "商品编号不能小于1") + private Integer productId; + + @ApiModelProperty(value = "推荐图") + @NotNull(message = "商品主图不能为空") + @Length(max = 255, message = "推荐图不能超过255个字符") + private String image; + + @ApiModelProperty(value = "轮播图") + @NotNull(message = "轮播图不能为空") + @Length(max = 2000, message = "轮播图不能超过2000个字符") + private String images; + + @ApiModelProperty(value = "活动标题") + @NotNull(message = "拼团名称不能为空") + @Length(max = 200, message = "活动标题不能超过200个字符") + private String title; + + @ApiModelProperty(value = "参团人数") + @Min(value = 2, message = "拼团人数不能小于2") + @Max(value = 99999, message = "拼团人数不能大于99999") + private Integer people; + + @ApiModelProperty(value = "简介") +// @NotNull(message = "拼团简介不能为空") + private String info; + + @ApiModelProperty(value = "活动状态") + @NotNull(message = "活动状态不能为空") + private Boolean isShow; + + @ApiModelProperty(value = "拼团开始时间") + @NotNull(message = "开始时间不能为空") + private String startTime; + + @ApiModelProperty(value = "拼团结束时间") + @NotNull(message = "结束时间不能为空") + private String stopTime; + + @ApiModelProperty(value = "拼团订单有效时间(小时)") + @NotNull(message = "拼团时效不能为空") + @Min(value = 1, message = "拼团订单有效时间不能小于1") + private Integer effectiveTime; + + @ApiModelProperty(value = "单位名") + @NotNull(message = "单位不能为空") + @Length(max = 32, message = "单位名不能超过32个字符") + private String unitName; + + @ApiModelProperty(value = "运费模板ID") + @NotNull(message = "运费模板不能为空") + private Integer tempId; + + @ApiModelProperty(value = "购买数量") + @Min(value = 1, message = "购买数量限制不能小于1") + private Integer num; + + @ApiModelProperty(value = "单次购买数量") + @Min(value = 1, message = "单次购买数量限制不能小于1") + private Integer onceNum; + + @ApiModelProperty(value = "虚拟成团数量") + @Min(value = 0, message = "虚拟成团数量不能小于0") + private Integer virtualRation; + + @ApiModelProperty(value = "商品属性") + private List attr; + + @ApiModelProperty(value = "商品属性详情") + private List attrValue; + + @ApiModelProperty(value = "商品描述") + private String content; + + @ApiModelProperty(value = "规格 0单 1多") + private Boolean specType; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreCombinationSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreCombinationSearchRequest.java new file mode 100644 index 0000000..0db656a --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreCombinationSearchRequest.java @@ -0,0 +1,42 @@ +package com.zbkj.common.request; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 拼团商品表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_store_combination") +@ApiModel(value="StoreCombination对象", description="拼团商品表") +public class StoreCombinationSearchRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "搜索关键字 商品id或者名称") + private String keywords; + + @ApiModelProperty(value = "砍价状态 0(不开启) 1(开启)") + private Integer isShow; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreCopyProductRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreCopyProductRequest.java new file mode 100644 index 0000000..7c35709 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreCopyProductRequest.java @@ -0,0 +1,34 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * 复制商品请求对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="StoreCopyProductRequest对象", description="复制商品请求对象") +public class StoreCopyProductRequest { + + @ApiModelProperty(value = "复制商品地址") + @NotBlank(message = "复制商品地址 不能为空") + private String url; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreCouponRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreCouponRequest.java new file mode 100644 index 0000000..6e0f7fe --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreCouponRequest.java @@ -0,0 +1,101 @@ +package com.zbkj.common.request; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Length; +import org.hibernate.validator.constraints.Range; + +import javax.validation.constraints.*; +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 优惠卷表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_store_coupon") +@ApiModel(value="StoreCouponRequest对象", description="优惠券表") +public class StoreCouponRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "优惠券名称", required = true) + @NotBlank(message = "请填写优惠券名称") + @Length(max = 64, message = "优惠券名称长度不能超过64个字符") + private String name; + + @ApiModelProperty(value = "兑换的优惠券面值", required = true) + @NotNull(message = "请填写优惠券兑换的优惠券面值") + @DecimalMax(value = "99999.99", message = "优惠券面值不能大于99999.99") + private BigDecimal money; + + @ApiModelProperty(value = "是否限量, 默认0 否, 1是", required = true) + @NotNull(message = "请设置是否限量") + private Boolean isLimited; + + @ApiModelProperty(value = "发放总数") + private Integer total; + + @ApiModelProperty(value = "使用类型 1 全场通用, 2 商品券, 3 品类券") + @Range(min = 1, max = 3, message = "请选择优惠券使用类型") + private Integer useType; + + @ApiModelProperty(value = "主键id 商品id/分类id", required = true) + private String primaryKey; + + @ApiModelProperty(value = "最低消费,0代表不限制", required = true) + private BigDecimal minPrice; + + @ApiModelProperty(value = "是否固定领取时间, 默认0 否, 1是", required = true) + @NotNull(message = "请选择领取是否限时") + private Boolean isForever; + + @ApiModelProperty(value = "可领取开始时间") + private Date receiveStartTime; + + @ApiModelProperty(value = "可领取结束时间") + private Date receiveEndTime; + + @ApiModelProperty(value = "请设置是否固定使用时间, 默认0 否, 1是", required = true) + @NotNull(message = "请设置是否固定使用时间") + private Boolean isFixedTime; + + @ApiModelProperty(value = "可使用时间范围 开始时间") + private Date useStartTime; + + @ApiModelProperty(value = "可使用时间范围 结束时间") + private Date useEndTime; + + @ApiModelProperty(value = "天数") + @Max(value = 999, message = "天数不能超过999天") + private Integer day; + + @ApiModelProperty(value = "优惠券类型 1 手动领取, 2 新人券, 3 赠送券") + @Range(min = 1, max = 3, message = "请选择优惠券领取方式") + private Integer type; + + @ApiModelProperty(value = "排序") + @NotNull(message = "排序不能为空") + @Min(value = 0, message = "排序不能小于0") + private Integer sort; + + @ApiModelProperty(value = "状态(0:关闭,1:开启)") + @NotNull(message = "优惠券状态不能为空") + private Boolean status; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreCouponSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreCouponSearchRequest.java new file mode 100644 index 0000000..b128675 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreCouponSearchRequest.java @@ -0,0 +1,45 @@ +package com.zbkj.common.request; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 优惠卷模板搜索 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_store_coupon") +@ApiModel(value="StoreCouponSearchRequest对象", description="优惠券模板搜索") +public class StoreCouponSearchRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "优惠券名称") + private String name; + + @ApiModelProperty(value = "优惠券类型 1 手动领取, 2 新人券, 3 赠送券") + private Integer type; + + @ApiModelProperty(value = "使用类型 1 全场通用, 2 商品券, 3 品类券") + private Integer useType; + + @ApiModelProperty(value = "状态(0:关闭,1:开启)") + private Boolean status; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreCouponUserRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreCouponUserRequest.java new file mode 100644 index 0000000..f376dfb --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreCouponUserRequest.java @@ -0,0 +1,48 @@ +package com.zbkj.common.request; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 优惠券领取 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_store_coupon_user") +@ApiModel(value="StoreCouponUserRequest对象", description="优惠券领取") +public class StoreCouponUserRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "优惠券发布id") + @NotNull(message = "优惠券id不能为空") + private Integer couponId; + + @ApiModelProperty(value = "领取人id, 多个id逗号分割") + @NotBlank(message = "领取人不能为空") + private String uid; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreCouponUserSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreCouponUserSearchRequest.java new file mode 100644 index 0000000..993312d --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreCouponUserSearchRequest.java @@ -0,0 +1,52 @@ +package com.zbkj.common.request; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 优惠卷领取搜索 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_store_coupon_user") +@ApiModel(value="StoreCouponUser对象", description="优惠券领取搜索") +public class StoreCouponUserSearchRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "优惠券所属用户") + private Integer uid; + + @ApiModelProperty(value = "优惠券id") + private Integer couponId; + + @ApiModelProperty(value = "优惠券名称") + private String name; + + @ApiModelProperty(value = "状态(0:未使用,1:已使用, 2:已过期)") + private Integer status; + + @ApiModelProperty(value = "最低消费多少金额可用优惠券") + private BigDecimal minPrice; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreDateRangeSqlPram.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreDateRangeSqlPram.java new file mode 100644 index 0000000..5fde368 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreDateRangeSqlPram.java @@ -0,0 +1,27 @@ +package com.zbkj.common.request; + +import lombok.Data; + +/** + * 订单时间参数,开始时间结束时间 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class StoreDateRangeSqlPram { + + public StoreDateRangeSqlPram(String startTime, String endTime) { + this.startTime = startTime; + this.endTime = endTime; + } + + private String startTime; + private String endTime; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreNearRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreNearRequest.java new file mode 100644 index 0000000..4b1a0ea --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreNearRequest.java @@ -0,0 +1,36 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 附近的门店 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="StoreNearRequest对象", description="附近的门店") +public class StoreNearRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "经度") + private String latitude; + + @ApiModelProperty(value = "纬度") + private String longitude; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreOrderRefundRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreOrderRefundRequest.java new file mode 100644 index 0000000..bdd9a47 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreOrderRefundRequest.java @@ -0,0 +1,43 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Range; + +import javax.validation.constraints.DecimalMin; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; + +/** + * 订单退款表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="StoreOrderRefundRequest对象", description="订单退款") +public class StoreOrderRefundRequest { + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "订单编号") + @NotBlank(message = "订单编号不能为空") + private String orderNo; + + @ApiModelProperty(value = "退款金额") + @DecimalMin(value = "0.00", message = "退款金额不能少于0.00") + private BigDecimal amount; + + private Integer orderId; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreOrderSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreOrderSearchRequest.java new file mode 100644 index 0000000..6aea508 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreOrderSearchRequest.java @@ -0,0 +1,49 @@ +package com.zbkj.common.request; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.zbkj.common.annotation.StringContains; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Range; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * 订单列表请求对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_store_order") +@ApiModel(value="StoreOrderSearchRequest对象", description="订单列表请求对象") +public class StoreOrderSearchRequest implements Serializable { + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "订单号") + private String orderNo; + + @ApiModelProperty(value = "创建时间区间") + private String dateLimit; + + @ApiModelProperty(value = "订单状态(all 总数; 未支付 unPaid; 未发货 notShipped;待收货 spike;待评价 bargain;已完成 complete;待核销 toBeWrittenOff;退款中:refunding;已退款:refunded;已删除:deleted") + @StringContains(limitValues = {"all","unPaid","notShipped","spike","bargain","complete","toBeWrittenOff","refunding","refunded","deleted"}, message = "未知的订单状态") + private String status; + + @ApiModelProperty(value = "订单类型:0普通订单,1-视频号订单, 2-全部订单") + @NotNull(message = "订单类型不能为空") + @Range(min = 0, max = 2, message = "未知的订单类型") + private Integer type; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreOrderSendRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreOrderSendRequest.java new file mode 100644 index 0000000..36dcdbe --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreOrderSendRequest.java @@ -0,0 +1,76 @@ +package com.zbkj.common.request; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 订单发货对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="StoreOrderSendRequest对象", description="订单发货对象") +public class StoreOrderSendRequest { + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "订单id") + private Integer id; + + @ApiModelProperty(value = "订单编号") + @NotBlank(message = "订单编号不能为空") + private String orderNo; + + @ApiModelProperty(value = "类型, 1发货,2送货,3虚拟", allowableValues = "range[1,2,3]") + @NotBlank(message = "请选择类型") + private String type; + + @ApiModelProperty(value = "快递公司名,发货类型必传") + private String expressName; + + @ApiModelProperty(value = "快递公司编码,发货类型必传") + private String expressCode; + + @ApiModelProperty(value = "快递单号,发货类型必传") + private String expressNumber; + + @ApiModelProperty(value = "发货记录类型,1正常、2电子面单,发货类型必传") + private String expressRecordType; + + @ApiModelProperty(value = "电子面单模板,电子面单必传") + private String expressTempId; + + @ApiModelProperty(value = "寄件人姓名,电子面单必传") + private String toName; + + @ApiModelProperty(value = "寄件人电话,电子面单必传") + private String toTel; + + @ApiModelProperty(value = "寄件人地址,电子面单必传") + private String toAddr; + + @ApiModelProperty(value = "送货人姓名,送货类型必传") + private String deliveryName; + + @ApiModelProperty(value = "送货人电话,送货类型必传") + private String deliveryTel; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreOrderStaticsticsRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreOrderStaticsticsRequest.java new file mode 100644 index 0000000..1681499 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreOrderStaticsticsRequest.java @@ -0,0 +1,36 @@ +package com.zbkj.common.request; + +import com.zbkj.common.constants.Constants; +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 订单统计详情request + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class StoreOrderStaticsticsRequest { + @ApiModelProperty(value = "页码", example= Constants.DEFAULT_PAGE + "") + private int page = Constants.DEFAULT_PAGE; + + @ApiModelProperty(value = "每页数量", example = Constants.DEFAULT_LIMIT + "") + private int limit = Constants.DEFAULT_LIMIT; + + @ApiModelProperty(value = "today,yesterday,lately7,lately30,month,year,/yyyy-MM-dd hh:mm:ss,yyyy-MM-dd hh:mm:ss/") + private String dateLimit; + + @JsonIgnore + private String startTime; + + @JsonIgnore + private String endTime; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreOrderStatusSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreOrderStatusSearchRequest.java new file mode 100644 index 0000000..36acb5b --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreOrderStatusSearchRequest.java @@ -0,0 +1,31 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 订单操作记录表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="StoreOrderStatusSearchRequest对象", description="订单操作记录公共查询对象") +public class StoreOrderStatusSearchRequest { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "订单编号") + private String orderNo; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreOrderUpdatePriceRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreOrderUpdatePriceRequest.java new file mode 100644 index 0000000..e111887 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreOrderUpdatePriceRequest.java @@ -0,0 +1,47 @@ +package com.zbkj.common.request; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.DecimalMin; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 订单修改对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="StoreOrderUpdatePriceRequest对象", description="订单修改价格请求对象") +public class StoreOrderUpdatePriceRequest { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "订单编号") + @NotBlank(message = "订单编号不能为空") + private String orderNo; + + @ApiModelProperty(value = "实际支付金额") + @NotNull(message = "实际支付金额不能为空") + @DecimalMin(value = "0.01", message = "实际支付金额不能小于1分") + private BigDecimal payPrice; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StorePinkRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StorePinkRequest.java new file mode 100644 index 0000000..85e113a --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StorePinkRequest.java @@ -0,0 +1,41 @@ +package com.zbkj.common.request; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 拼团表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_store_pink") +@ApiModel(value="StorePink对象", description="拼团表") +public class StorePinkRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "拼团ID") + private Integer id; + + @ApiModelProperty(value = "拼团商品id") + private Integer cid; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StorePinkSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StorePinkSearchRequest.java new file mode 100644 index 0000000..6e51506 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StorePinkSearchRequest.java @@ -0,0 +1,42 @@ +package com.zbkj.common.request; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 拼团表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_store_pink") +@ApiModel(value="StorePink对象", description="拼团表") +public class StorePinkSearchRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "状态1进行中2已完成3未完成") + private Integer status; + + @ApiModelProperty(value = "today,yesterday,lately7,lately30,month,year,/yyyy-MM-dd hh:mm:ss,yyyy-MM-dd hh:mm:ss/") + private String dateLimit; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductAddRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductAddRequest.java new file mode 100644 index 0000000..07115bb --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductAddRequest.java @@ -0,0 +1,132 @@ +package com.zbkj.common.request; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.List; + +/** + * 商品添加对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_store_product") +@ApiModel(value="StoreProductAddRequest对象", description="商品添加对象") +public class StoreProductAddRequest implements Serializable { + + private static final long serialVersionUID = -452373239606480650L; + + @ApiModelProperty(value = "商品id|添加时不填,修改时必填") + private Integer id; + + @ApiModelProperty(value = "商品图片", required = true) + @NotBlank(message = "商品图片不能为空") + @Length(max = 255, message = "商品图片名称长度不能超过255个字符") + private String image; + + @ApiModelProperty(value = "轮播图", required = true) + @NotBlank(message = "轮播图不能为空") + @Length(max = 2000, message = "轮播图名称长度不能超过2000个字符") + private String sliderImage; + + @ApiModelProperty(value = "商品名称", required = true) + @NotBlank(message = "商品名称不能为空") + @Length(max = 128, message = "商品名称长度不能超过128个字符") + private String storeName; + + @ApiModelProperty(value = "商品简介", required = true) + @NotBlank(message = "商品简介不能为空") + @Length(max = 256, message = "商品简介长度不能超过256个字符") + private String storeInfo; + + @ApiModelProperty(value = "关键字", required = true) + @Length(max = 255, message = "关键字长度不能超过255个字符") + @NotBlank(message = "关键字不能为空") + private String keyword; + + @ApiModelProperty(value = "分类id|逗号分隔", required = true) + @NotBlank(message = "商品分类不能为空") + @Length(max = 64, message = "商品分类组合长度不能超过64个字符") + private String cateId; + + @ApiModelProperty(value = "单位名", required = true) + @NotBlank(message = "单位名称不能为空") + @Length(max = 32, message = "单位名长度不能超过32个字符") + private String unitName; + + @ApiModelProperty(value = "排序") + private Integer sort; + + @ApiModelProperty(value = "是否热卖") + private Boolean isHot; + + @ApiModelProperty(value = "是否优惠") + private Boolean isBenefit; + + @ApiModelProperty(value = "是否精品") + private Boolean isBest; + + @ApiModelProperty(value = "是否新品") + private Boolean isNew; + + @ApiModelProperty(value = "是否优品推荐") + private Boolean isGood; + + @ApiModelProperty(value = "获得积分") + private Integer giveIntegral; + + @ApiModelProperty(value = "是否单独分佣", required = true) + @NotNull(message = "是否单独分佣不能为空") + private Boolean isSub; + + @ApiModelProperty(value = "虚拟销量") + private Integer ficti; + + @ApiModelProperty(value = "运费模板ID", required = true) + @NotNull(message = "运费模板不能为空") + private Integer tempId; + + @ApiModelProperty(value = "规格 0单 1多", required = true) + @NotNull(message = "商品规格类型不能为空") + private Boolean specType; + + @ApiModelProperty(value = "活动显示排序 0=默认,1=秒杀,2=砍价,3=拼团") + private List activity; + + @ApiModelProperty(value = "商品属性", required = true) + @NotEmpty(message = "商品属性不能为空") + private List attr; + + @ApiModelProperty(value = "商品属性详情", required = true) + @NotEmpty(message = "商品属性详情不能为空") + private List attrValue; + + @ApiModelProperty(value = "商品描述") + private String content; + + @ApiModelProperty(value = "优惠券id集合") + private List couponIds; + + @ApiModelProperty(value = "展示图") + @Length(max = 1000, message = "展示图名称长度不能超过1000个字符") + private String flatPattern; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductAttrAddRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductAttrAddRequest.java new file mode 100644 index 0000000..278e877 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductAttrAddRequest.java @@ -0,0 +1,42 @@ +package com.zbkj.common.request; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.List; + +/** + * 商品属性添加对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="StoreProductAttrAddRequest对象", description="商品属性添加对象") +public class StoreProductAttrAddRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "attrID|新增时不填,修改时必填") + private Integer id; + + @ApiModelProperty(value = "属性名", required = true) + private String attrName; + + @ApiModelProperty(value = "属性值|逗号分隔", required = true) + private String attrValues; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductAttrValueAddRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductAttrValueAddRequest.java new file mode 100644 index 0000000..aa1c6bf --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductAttrValueAddRequest.java @@ -0,0 +1,110 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.DecimalMin; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 商品属性值表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="StoreProductAttrValueAddRequest对象", description="商品规格属性添加对象") +public class StoreProductAttrValueAddRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "ID") + private Integer id; + + @ApiModelProperty(value = "商品ID|添加时为0,修改时为商品id", example = "0", required = true) + @Min(value = 0, message = "请选择商品") + private Integer productId; + + @ApiModelProperty(value = "商品规格属性库存", required = true) + @NotNull(message = "商品规格属性库存不能为空") + @Min(value = 0, message = "库存不能小于0") + private Integer stock; + + @ApiModelProperty(value = "sku|活动商品必传") + private String suk; + +// @ApiModelProperty(value = "销量", required = true) +// @NotNull(message = "销量不能为空") +// @Min(value = 0, message = "销量不能小于0") +// private Integer sales; + + @ApiModelProperty(value = "规格属性金额", required = true) + @NotNull(message = "规格属性金额不能为空") + @DecimalMin(value = "0", message = "金额不能小于0") + private BigDecimal price; + + @ApiModelProperty(value = "图片", required = true) + @NotBlank(message = "商品规格属性图片不能为空") + private String image; + + @ApiModelProperty(value = "成本价", required = true) + @NotNull(message = "规格属性成本价不能为空") + @DecimalMin(value = "0", message = "成本价不能小于0") + private BigDecimal cost; + + @ApiModelProperty(value = "原价", required = true) + @NotNull(message = "规格属性原价不能为空") + @DecimalMin(value = "0", message = "原价不能小于0") + private BigDecimal otPrice; + + @ApiModelProperty(value = "重量", required = true) + @NotNull(message = "规格属性重量不能为空") + @DecimalMin(value = "0", message = "重量不能小于0") + private BigDecimal weight; + + @ApiModelProperty(value = "体积", required = true) + @NotNull(message = "规格属性体积不能为空") + @DecimalMin(value = "0", message = "体积不能小于0") + private BigDecimal volume; + + @ApiModelProperty(value = "一级返佣", required = true) + @NotNull(message = "规格属性一级返佣不能为空") + @DecimalMin(value = "0", message = "一级返佣不能小于0") + private BigDecimal brokerage; + + @ApiModelProperty(value = "二级返佣", required = true) + @NotNull(message = "规格属性二级返佣不能为空") + @DecimalMin(value = "0", message = "二级返佣不能小于0") + private BigDecimal brokerageTwo; + + @ApiModelProperty(value = "attr_values 创建更新时的属性对应", required = true, example = "{\"尺码\":\"2XL\",\"颜色\":\"DX027白色\"}") + @NotBlank(message = "attr_values不能为空") + private String attrValue; + + @ApiModelProperty(value = "活动限购数量|活动商品专用字段") + private Integer quota; + + @ApiModelProperty(value = "活动限购数量显示|活动商品专用字段,添加时不传") + private Integer quotaShow; + +// @ApiModelProperty(value = "是否选中-秒杀用") +// private Boolean checked; + + @ApiModelProperty(value = "砍价商品最低价|砍价专用") + private BigDecimal minPrice; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductAttrValueRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductAttrValueRequest.java new file mode 100644 index 0000000..9a692f0 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductAttrValueRequest.java @@ -0,0 +1,103 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.Min; +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import java.util.LinkedHashMap; + +/** + * 商品属性值表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="StoreProductAttrValueRequest对象", description="商品属性值表") +public class StoreProductAttrValueRequest implements Serializable { + + private static final long serialVersionUID=1L; + @ApiModelProperty(value = "ID") + private Integer id; + + @ApiModelProperty(value = "商品ID", example = "0") + @Min(value = 0, message = "请选择商品") + private Integer productId; + + @ApiModelProperty(value = "商品属性索引值 (attr_value|attr_value[|....])") + private String suk; + + @ApiModelProperty(value = "属性对应的库存") + private Integer stock; + + @ApiModelProperty(value = "销量") + private Integer sales; + + @ApiModelProperty(value = "属性金额") + private BigDecimal price; + + @ApiModelProperty(value = "图片") + private String image; + + @ApiModelProperty(value = "唯一值") + private String unique; + + @ApiModelProperty(value = "成本价") + private BigDecimal cost; + + @ApiModelProperty(value = "商品条码") + private String barCode; + + @ApiModelProperty(value = "原价") + private BigDecimal otPrice; + + @ApiModelProperty(value = "重量") + private BigDecimal weight; + + @ApiModelProperty(value = "体积") + private BigDecimal volume; + + @ApiModelProperty(value = "一级返佣") + private BigDecimal brokerage; + + @ApiModelProperty(value = "二级返佣") + private BigDecimal brokerageTwo; + + @ApiModelProperty(value = "活动类型 0=商品,1=秒杀,2=砍价,3=拼团") + private Integer type; + + @ApiModelProperty(value = "活动限购数量") + private Integer quota; + + @ApiModelProperty(value = "活动限购数量显示") + private Integer quotaShow; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "更新时间") + private Date updateTime; + + @ApiModelProperty(value = "attrValue字段,前端传递后用作sku字段") + private String attrValue; + + @ApiModelProperty(value = "是否选中-秒杀用") + private Boolean checked; + + @ApiModelProperty(value = "砍价商品最低价") + private BigDecimal minPrice; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductReplyAddRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductReplyAddRequest.java new file mode 100644 index 0000000..8f7b8c9 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductReplyAddRequest.java @@ -0,0 +1,72 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Length; +import org.hibernate.validator.constraints.Range; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * 评论添加对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="StoreProductReplyAddRequest对象", description="评论添加对象") +public class StoreProductReplyAddRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "订单编号, 移动端必须传递此参数") + private String orderNo; + + @ApiModelProperty(value = "用户id, 后端必须传递此参数") + private Integer userId; + + @ApiModelProperty(value = "商品id", required = true) + @Min(value = 1, message = "请选择商品") + private Integer productId; + + @ApiModelProperty(value = "商品 属性id") + private String unique; + + @ApiModelProperty(value = "商品分数", example = "5", required = true) + @Range(min = 1, max = 5, message = "商品分数为1-5") + private Integer productScore; + + @ApiModelProperty(value = "服务分数", example = "5", required = true) + @Range(min = 1, max = 5, message = "服务分数为1-5") + private Integer serviceScore; + + @ApiModelProperty(value = "评论内容", required = true) + @NotBlank(message = "请填写评论内容") + @Length(max = 512, message = "评论内容长度不能超过512个字符") + private String comment; + + @ApiModelProperty(value = "评论图片", required = true) + private String pics; + + @ApiModelProperty(value = "评论人头像 [虚拟评论参数]") + private String avatar; + + @ApiModelProperty(value = "评论人昵称 [虚拟评论参数]") + private String nickname; + + @ApiModelProperty(value = "商品规格属性值,多规格时用英文逗号拼接") + private String sku; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductReplyCommentRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductReplyCommentRequest.java new file mode 100644 index 0000000..cf2781d --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductReplyCommentRequest.java @@ -0,0 +1,40 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * 回复商品评论对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="StoreProductReplyCommentRequest对象", description="回复商品评论对象") +public class StoreProductReplyCommentRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "评论id", required = true) + @NotNull(message = "评论id不能为空") + private Integer ids; + + @ApiModelProperty(value = "管理员回复内容", required = true) + @NotBlank(message = "请填写评论内容") + private String merchantReplyContent; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductReplySearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductReplySearchRequest.java new file mode 100644 index 0000000..84dd897 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductReplySearchRequest.java @@ -0,0 +1,43 @@ +package com.zbkj.common.request; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 商品评论查询对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="StoreProductReplySearchRequest对象", description="商品评论查询对象") +public class StoreProductReplySearchRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "商品名称") + private String productSearch; + + @ApiModelProperty(value = "0未回复1已回复") + private Boolean isReply; + + @ApiModelProperty(value = "用户名称(支持模糊搜索)") + private String nickname; + + @ApiModelProperty(value = "时间区间") + private String dateLimit; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductRequest.java new file mode 100644 index 0000000..0c956df --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductRequest.java @@ -0,0 +1,180 @@ +package com.zbkj.common.request; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.zbkj.common.model.product.StoreProductAttr; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.List; + +/** + * 商品请求对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_store_product") +@ApiModel(value="StoreProductRequest对象", description="商品请求对象") +public class StoreProductRequest implements Serializable { + + private static final long serialVersionUID = -452373239606480650L; + + @ApiModelProperty(value = "商品id") + private Integer id; + + @ApiModelProperty(value = "商户Id(0为总后台管理员创建,不为0的时候是商户后台创建)") + private Integer merId; + + @ApiModelProperty(value = "商品图片") + @NotNull(message = "商拼图片不能为空") + private String image; + + @ApiModelProperty(value = "轮播图") + @NotNull(message = "轮播图不能为空") + private String sliderImage; + + @ApiModelProperty(value = "商品名称") + @NotNull(message = "商品名称不能为空") + private String storeName; + + @ApiModelProperty(value = "商品简介") + @NotNull(message = "商品简介不能为空") + private String storeInfo; + + @ApiModelProperty(value = "关键字") + @NotNull(message = "关键字不能为空") + private String keyword; + + @ApiModelProperty(value = "商品条码(一维码)") + private String barCode; + + @ApiModelProperty(value = "分类id") + @NotNull(message = "分类id不能为空") + private String cateId; + + @ApiModelProperty(value = "商品价格") + private BigDecimal price; + + @ApiModelProperty(value = "会员价格") + private BigDecimal vipPrice; + + @ApiModelProperty(value = "市场价") + private BigDecimal otPrice; + + @ApiModelProperty(value = "邮费") + private BigDecimal postage; + + @ApiModelProperty(value = "单位名") + @NotNull(message = "单位名称不能为空") + private String unitName; + + @ApiModelProperty(value = "排序") + private Integer sort; + + @ApiModelProperty(value = "销量") + private Integer sales; + + @ApiModelProperty(value = "库存") + private Integer stock; + + @ApiModelProperty(value = "状态(0:未上架,1:上架)") + private Boolean isShow; + + @ApiModelProperty(value = "是否热卖") + private Boolean isHot; + + @ApiModelProperty(value = "是否优惠") + private Boolean isBenefit; + + @ApiModelProperty(value = "是否精品") + private Boolean isBest; + + @ApiModelProperty(value = "是否新品") + private Boolean isNew; + + @ApiModelProperty(value = "添加时间") + private Integer addTime; + + @ApiModelProperty(value = "是否包邮") + private Boolean isPostage; + + @ApiModelProperty(value = "是否删除") + private Boolean isDel; + + @ApiModelProperty(value = "商户是否代理 0不可代理1可代理") + private Boolean merUse; + + @ApiModelProperty(value = "获得积分") + private Integer giveIntegral; + + @ApiModelProperty(value = "成本价") + private BigDecimal cost; + + @ApiModelProperty(value = "秒杀状态 0 未开启 1已开启") + private Boolean isSeckill; + + @ApiModelProperty(value = "砍价状态 0未开启 1开启") + private Boolean isBargain; + + @ApiModelProperty(value = "是否优品推荐") + private Boolean isGood; + + @ApiModelProperty(value = "是否单独分佣") + private Boolean isSub; + + @ApiModelProperty(value = "虚拟销量") + private Integer ficti; + + @ApiModelProperty(value = "浏览量") + private Integer browse; + + @ApiModelProperty(value = "商品二维码地址(用户小程序海报)") + private String codePath; + + @ApiModelProperty(value = "淘宝京东1688类型") + private String soureLink; + + @ApiModelProperty(value = "主图视频链接") + private String videoLink; + + @ApiModelProperty(value = "运费模板ID") + private Integer tempId; + + @ApiModelProperty(value = "规格 0单 1多") + @NotNull(message = "商品规格不能为空") + private Boolean specType; + + @ApiModelProperty(value = "活动显示排序 0=默认,1=秒杀,2=砍价,3=拼团") + private List activity; + + @ApiModelProperty(value = "商品属性") + private List attr; + + @ApiModelProperty(value = "商品属性详情") + private List attrValue; + + @ApiModelProperty(value = "商品分类") + private List cateIds; + + @ApiModelProperty(value = "商品描述") +// @NotNull(message = "商品描述不能为空") + private String content; + + @ApiModelProperty(value = "优惠券id集合") + private List couponIds; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductRuleRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductRuleRequest.java new file mode 100644 index 0000000..028ee41 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductRuleRequest.java @@ -0,0 +1,47 @@ +package com.zbkj.common.request; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; +import java.util.List; + +/** + * 商品规则值(规格)表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_store_product_rule") +@ApiModel(value="StoreProductRuleRequest对象", description="商品规则值(规格)表") +public class StoreProductRuleRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "规则id") + private Integer id; + + @ApiModelProperty(value = "规格名称") + @NotBlank(message = "规格名称不能为空") + @Length(max = 32, message = "规格名称长度不能超过32个字符") + private String ruleName; + + @ApiModelProperty(value = "规格值【JSON字符串】 [{\\\"detail\\\": [\\\"string\\\"],\\\"title\\\": \\\"string\\\"}]") + @NotBlank(message = "规格值不能为空") + private String ruleValue; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductRuleSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductRuleSearchRequest.java new file mode 100644 index 0000000..f9199cd --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductRuleSearchRequest.java @@ -0,0 +1,35 @@ +package com.zbkj.common.request; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 商品规则值(规格)表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_store_product_rule") +@ApiModel(value="StoreProductRuleSearchRequest对象", description="商品规则值(规格)表") +public class StoreProductRuleSearchRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "搜索关键字") + private String keywords; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductSearchRequest.java new file mode 100644 index 0000000..5cdc555 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductSearchRequest.java @@ -0,0 +1,46 @@ +package com.zbkj.common.request; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Range; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * 商品表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_store_product") +@ApiModel(value="StoreProduct对象", description="商品表") +public class StoreProductSearchRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "类型(1:出售中(已上架),2:仓库中(未上架),3:已售罄,4:警戒库存,5:回收站)") + @NotNull(message = "商品类型不能为空") + @Range(min = 1, max = 5, message = "未知的商品类型") + private int type; + + @ApiModelProperty(value = "分类ID, 多个逗号分隔") + private String cateId; + + @ApiModelProperty(value = "关键字搜索, 支持(商品名称, 商品简介, 关键字, 商品条码)") + private String keywords; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductStockRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductStockRequest.java new file mode 100644 index 0000000..92dea39 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductStockRequest.java @@ -0,0 +1,63 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import io.swagger.annotations.ApiOperation; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; +import java.io.Serializable; +import java.util.List; + +/** + * 商品库存 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="StoreProductStockRequest对象", description="库存修改") +public class StoreProductStockRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "商品ID", required = true) + @NotEmpty(message = "请选择商品") + private Integer productId; + + private Integer seckillId; + + private Integer bargainId; + + private Integer combinationId; + + @ApiModelProperty(value = "商品属性ID集合", required = true) + @NotEmpty(message = "请选择商品属性id集合") + private Integer attrId; + + @ApiModelProperty(value = "类型, 增加 add | 减少 diff", required = true) + @NotBlank(message = "请选择类型") + private String operationType; + + @ApiModelProperty(value = "数量", required = true) + @Min(value = 0, message = "请填写数量") + private Integer num; + + @ApiModelProperty(value = "商品类型 0=普通 1=秒杀", required = false) + private Integer type; + + @ApiModelProperty(value = "商品SKU信息") + private String suk; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreSeckillAddRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreSeckillAddRequest.java new file mode 100644 index 0000000..edccb15 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreSeckillAddRequest.java @@ -0,0 +1,108 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Length; +import org.hibernate.validator.constraints.Range; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * 秒杀商品添加请求对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="StoreSeckillAddRequest对象", description="秒杀商品添加请求对象") +public class StoreSeckillAddRequest { + + @ApiModelProperty(value = "商品秒杀产品表id|新增时不填,修改时必填") + private Integer id; + + @ApiModelProperty(value = "主商品id", required = true) + @NotNull(message = "主商品id不能为空") + private Integer productId; + + @ApiModelProperty(value = "推荐图", required = true) + @NotBlank(message = "推荐图不能为空") + @Length(max = 255, message = "推荐图名称长度不能超过255个字符") + private String image; + + @ApiModelProperty(value = "轮播图", required = true) + @NotBlank(message = "轮播图不能为空") + @Length(max = 2000, message = "轮播图长度不能超过2000个字符") + private String images; + + @ApiModelProperty(value = "活动标题", required = true) + @NotBlank(message = "活动标题不能为空") + @Length(max = 255, message = "活动标题长度不能超过255个字符") + private String title; + + @ApiModelProperty(value = "简介", required = true) + @NotBlank(message = "简介不能为空") + @Length(max = 255, message = "简介长度不能超过255个字符") + private String info; + + @ApiModelProperty(value = "单位名", required = true) + @NotBlank(message = "单位名不能为空") + @Length(max = 16, message = "单位名长度不能超过16个字符") + private String unitName; + + @ApiModelProperty(value = "开始时间", required = true) + @NotBlank(message = "开始时间不能为空") + private String startTime; + + @ApiModelProperty(value = "结束时间", required = true) + @NotBlank(message = "结束时间不能为空") + private String stopTime; + + @ApiModelProperty(value = "秒杀状态 0=关闭 1=开启", required = true) + @NotNull(message = "秒杀状态不能为空") + @Range(min = 0, max = 1, message = "未知的秒杀状态") + private Integer status; + + @ApiModelProperty(value = "当天参加秒杀次数", required = true) + @NotNull(message = "当天参加秒杀次数不能为空") + private Integer num; + + @ApiModelProperty(value = "时间段ID", required = true) + @NotNull(message = "时间段不能为空") + private Integer timeId; + + @ApiModelProperty(value = "运费模板ID", required = true) + @NotNull(message = "运费模板不能为空") + private Integer tempId; + + @ApiModelProperty(value = "商品属性", required = true) + @NotEmpty(message = "商品属性不能为空") + private List attr; + + @ApiModelProperty(value = "商品属性详情|只传选中项", required = true) + @NotEmpty(message = "商品属性详情不能为空") + private List attrValue; + + @ApiModelProperty(value = "商品描述") + private String content; + + @ApiModelProperty(value = "排序") + private Integer sort; + + @ApiModelProperty(value = "规格 0单 1多", required = true) + @NotNull(message = "规格类型不能为空") + private Boolean specType; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreSeckillMangerRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreSeckillMangerRequest.java new file mode 100644 index 0000000..fd88d3b --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreSeckillMangerRequest.java @@ -0,0 +1,71 @@ +package com.zbkj.common.request; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Length; +import org.hibernate.validator.constraints.Range; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.util.Date; + +/** + * 秒杀商品管理Request对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="StoreSeckillMangerRequest对象", description="") +public class StoreSeckillMangerRequest { + + @ApiModelProperty(value = "秒杀配置id") + private Integer id; + + @ApiModelProperty(value = "秒杀时段名称") + @NotBlank(message = "秒杀时段名称不能为空") + @Length(max = 255, message = "秒杀时段名称不能超过255个字符") + private String name; + +// @ApiModelProperty(value = "秒杀开始时间段") +// private Integer startTime; +// +// @ApiModelProperty(value = "秒杀结束时间段") +// private Integer endTime; + + @ApiModelProperty(value = "秒杀结束时间段") + @NotBlank(message = "秒杀时间段不能为空") + private String time; // 接收参数一个字段,入库时分割为startTime/endTime + + @ApiModelProperty(value = "主图") + private String img; + + @ApiModelProperty(value = "轮播图") + @NotBlank(message = "轮播图不能为空") + private String silderImgs; + + @ApiModelProperty(value = "排序") + private Integer sort; + + @ApiModelProperty(value = "状态 0=关闭 1=开启") + @NotNull(message = "状态不能为空") + @Range(min = 0, max = 1, message = "未知的状态") + private Integer status; + + @ApiModelProperty(value = "0未删除1已删除") + private Boolean isDel; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreSeckillMangerSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreSeckillMangerSearchRequest.java new file mode 100644 index 0000000..8066090 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreSeckillMangerSearchRequest.java @@ -0,0 +1,40 @@ +package com.zbkj.common.request; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 商品秒杀配置 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("StoreSeckillMangerSearchRequest") +@ApiModel(value="StoreSeckillMangerSearchRequest", description="商品秒杀配置") +public class StoreSeckillMangerSearchRequest { + + @ApiModelProperty(value = "秒杀名称") + private String name; + + @ApiModelProperty(value = "状态 0=关闭 1=开启") + private Integer status; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreSeckillSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreSeckillSearchRequest.java new file mode 100644 index 0000000..b6ff6cb --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreSeckillSearchRequest.java @@ -0,0 +1,30 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 秒杀搜索参数 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class StoreSeckillSearchRequest { + + @ApiModelProperty(value = "搜索关键字 商品id或者名称") + private String keywords; + + @ApiModelProperty(value = "秒杀时段") + private Integer timeId; + + @ApiModelProperty(value = "是否显示关键字 0/1") + private Integer status; +} + diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemAdminAddRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemAdminAddRequest.java new file mode 100644 index 0000000..e241ea9 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemAdminAddRequest.java @@ -0,0 +1,67 @@ +package com.zbkj.common.request; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.zbkj.common.constants.RegularConstants; +import com.zbkj.common.utils.ValidateFormUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Length; +import org.hibernate.validator.constraints.Range; + +import javax.validation.constraints.*; +import java.io.Serializable; + +/** + * 后台管理员表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_system_admin") +@ApiModel(value="SystemAdminAddRequest对象", description="后台管理员表") +public class SystemAdminAddRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "后台管理员账号", required = true) + @NotNull(message = "后台管理员账号不能为空") + @Length(max = 32, message = "账号长度不能超过32个字符") + private String account; + + @ApiModelProperty(value = "后台管理员密码", required = true) + @NotNull(message = "管理员密码不能为空") + @Length(max = 32, message = "密码长度不能超过32个字符") + private String pwd; + + @ApiModelProperty(value = "后台管理员姓名", required = true) + @NotNull(message = "管理姓名不能为空") + @Length(max = 16, message = "姓名长度不能超过16个字符") + private String realName; + + @ApiModelProperty(value = "后台管理员角色(menus_id)", required = true) + @NotNull(message = "后台管理员角色不能为空") + @Length(max = 128, message = "角色组合长度不能超过128个字符") + private String roles; + + @ApiModelProperty(value = "后台管理员状态 1有效0无效", required = true) + @NotNull(message = "status 字段不能为空") + @Range(min = 0, max = 1, message = "未知的状态") + private Boolean status; + + @ApiModelProperty(value = "手机号") + @NotBlank(message = "手机号不能为空") + @Pattern(regexp = RegularConstants.PHONE_TWO, message = "请填写正确的手机号") + private String phone; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemAdminLoginCaptchaRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemAdminLoginCaptchaRequest.java new file mode 100644 index 0000000..7ca4c35 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemAdminLoginCaptchaRequest.java @@ -0,0 +1,32 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * PC登录请求对象 行为验证码 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class SystemAdminLoginCaptchaRequest { + + @ApiModelProperty(required = true) + String captchaVerification; + + @ApiModelProperty(required = true) + String token; + + @ApiModelProperty(required = true) + String secretKey; + + +} + diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemAdminLoginRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemAdminLoginRequest.java new file mode 100644 index 0000000..ffef295 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemAdminLoginRequest.java @@ -0,0 +1,40 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotEmpty; + +/** + * PC登录请求对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class SystemAdminLoginRequest { + @ApiModelProperty(value = "后台管理员账号", example = "userName") + @NotEmpty(message = "账号 不能为空") + @Length(max = 32, message = "账号长度不能超过32个字符") + private String account; + + @ApiModelProperty(value = "后台管理员密码", example = "userPassword") + @NotEmpty(message = "密码 不能为空") + @Length(min = 6, max = 30 ,message = "密码长度在6-30个字符") + private String pwd; + + @ApiModelProperty(value = "key", required = true) + @NotEmpty(message = "验证码key 不能为空") + private String key; + + @ApiModelProperty(value = "code", required = true) + @NotEmpty(message = "验证码 不能为空") + private String code; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemAdminRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemAdminRequest.java new file mode 100644 index 0000000..bd777ff --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemAdminRequest.java @@ -0,0 +1,43 @@ +package com.zbkj.common.request; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + +/** + * 后台管理员表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="SystemAdminRequest对象", description="后台管理员请求对象") +public class SystemAdminRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "后台管理员姓名") + private String realName; + + @ApiModelProperty(value = "后台管理员权限(menus_id)") + private String roles; + + @ApiModelProperty(value = "后台管理员状态 1有效0无效") + private Boolean status; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemAdminUpdateRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemAdminUpdateRequest.java new file mode 100644 index 0000000..e2cc342 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemAdminUpdateRequest.java @@ -0,0 +1,69 @@ +package com.zbkj.common.request; + +import com.zbkj.common.constants.RegularConstants; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Length; +import org.hibernate.validator.constraints.Range; + +import javax.validation.constraints.*; +import java.io.Serializable; +import java.util.Date; + +/** + * 后台管理员修改对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="SystemAdminUpdateRequest对象", description="后台管理员修改对象") +public class SystemAdminUpdateRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "后台管理员表ID") + @NotNull(message = "管理员id不能为空") + private Integer id; + + @ApiModelProperty(value = "后台管理员账号", required = true) + @NotNull(message = "后台管理员账号不能为空") + @Length(max = 32, message = "账号长度不能超过32个字符") + private String account; + + @ApiModelProperty(value = "后台管理员密码", required = true) + @NotNull(message = "管理员密码不能为空") + @Length(max = 32, message = "密码长度不能超过32个字符") + private String pwd; + + @ApiModelProperty(value = "后台管理员姓名", required = true) + @NotNull(message = "管理姓名不能为空") + @Length(max = 16, message = "姓名长度不能超过16个字符") + private String realName; + + @ApiModelProperty(value = "后台管理员权限(menus_id)") + @NotBlank(message = "后台管理员权限不能为空") + @Length(max = 128, message = "角色组合长度不能超过128个字符") + private String roles; + + @ApiModelProperty(value = "后台管理员状态 1有效0无效") + @NotNull(message = "status 字段不能为空") + @Range(min = 0, max = 1, message = "未知的状态") + private Boolean status; + + @ApiModelProperty(value = "手机号码") + @NotBlank(message = "手机号不能为空") + @Pattern(regexp = RegularConstants.PHONE_TWO, message = "请填写正确的手机号") + private String phone; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemAttachmentMoveRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemAttachmentMoveRequest.java new file mode 100644 index 0000000..8d51a5a --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemAttachmentMoveRequest.java @@ -0,0 +1,32 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * 系统附件移动Request对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class SystemAttachmentMoveRequest { + + + @ApiModelProperty(value = "父级id") + @NotNull(message = "父级id不能为空") + private Integer pid; + + @ApiModelProperty(value = "附件id") + @NotBlank(message = "请选择附件") + private String attrId; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemAttachmentRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemAttachmentRequest.java new file mode 100644 index 0000000..0963410 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemAttachmentRequest.java @@ -0,0 +1,55 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * 系统附件类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class SystemAttachmentRequest { + private static final long serialVersionUID=1L; + + private Integer attId; + + @ApiModelProperty(value = "附件名称") + private String name; + + @ApiModelProperty(value = "附件路径") + private String attDir; + + @ApiModelProperty(value = "压缩图片路径") + private String sattDir; + + @ApiModelProperty(value = "服务器上存储的绝对地址") + private String rootDir; + + @ApiModelProperty(value = "附件大小") + private String attSize; + + @ApiModelProperty(value = "附件类型") + private String attType; + + @ApiModelProperty(value = "模块,store") + private String model; + + @ApiModelProperty(value = "图片上传类型 1本地 2七牛云 3OSS 4COS ") + private Integer imageType; + + @ApiModelProperty(value = "图片上传模块类型 1 后台上传 2 用户生成") + private Integer moduleType; + + @ApiModelProperty(value = "创建时间") + private Date createTime; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemCityRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemCityRequest.java new file mode 100644 index 0000000..ffd4afd --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemCityRequest.java @@ -0,0 +1,48 @@ +package com.zbkj.common.request; + + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Length; + +import javax.management.MXBean; +import javax.validation.constraints.DecimalMin; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * 城市表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_system_city") +@ApiModel(value="SystemCity对象", description="城市表") +public class SystemCityRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "父级id", required = true, example= "0") + @NotNull(message = "父级id不能为空") //不可为空 + @DecimalMin(value = "0", message = "父级id必须大于等于0") //数字最小值为0 + private Integer parentId; + + @ApiModelProperty(value = "名称") + @NotNull(message = "城市名称不能为空") + @Length(max = 100, message = "城市名称不能超过100个字符") + private String name; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemCitySearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemCitySearchRequest.java new file mode 100644 index 0000000..f46650f --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemCitySearchRequest.java @@ -0,0 +1,41 @@ +package com.zbkj.common.request; + + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.DecimalMin; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * 城市表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_system_city") +@ApiModel(value="SystemCitySearchRequest对象", description="城市表列表搜索条件") +public class SystemCitySearchRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "父级id", required = true, example= "0") + @NotNull(message = "父级id不能为空") //不可为空 + @DecimalMin(value = "0", message = "父级id必须大于等于0") //数字最小值为0 + private Integer parentId; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemConfigAdminRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemConfigAdminRequest.java new file mode 100644 index 0000000..76541a6 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemConfigAdminRequest.java @@ -0,0 +1,56 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * 系统配置请求对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="SystemConfigAdminRequest对象", description="系统配置请求对象") +public class SystemConfigAdminRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "配置id") + @NotNull(message = "配置id不能为空") + private Integer id; + + @ApiModelProperty(value = "字段名称") + @NotBlank(message = "字段名称不能为空") + private String name; + + @ApiModelProperty(value = "字段提示文字") + @NotBlank(message = "字段提示文字不能为空") + private String title; + + @ApiModelProperty(value = "表单id") + @NotNull(message = "表单id不能为空") + private Integer formId; + + @ApiModelProperty(value = "值") + @NotBlank(message = "值不能为空") + private String value; + + @ApiModelProperty(value = "是否隐藏") + @NotNull(message = "状态不能为空") + private Boolean status; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemFormCheckRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemFormCheckRequest.java new file mode 100644 index 0000000..51c6a3a --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemFormCheckRequest.java @@ -0,0 +1,50 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.Size; +import java.io.Serializable; +import java.util.List; + +/** + * 整体保存表单数据 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="SystemFormCheckRequest对象", description="整体保存表单数据") +public class SystemFormCheckRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "表单名称", required = true) + @Min(value = 0, message = "请选择表单") + private Integer id; + + @ApiModelProperty(value = "排序", required = true) + private Integer sort; + + @ApiModelProperty(value = "状态(1:开启;0:关闭;)") + private Boolean status; + + @ApiModelProperty(value = "字段值列表", required = true) + @NotEmpty(message = "fields 至少要有一组数据") + @Size(min = 1, message = "fields 至少要有一组数据") + private List fields; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemFormItemCheckRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemFormItemCheckRequest.java new file mode 100644 index 0000000..0040089 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemFormItemCheckRequest.java @@ -0,0 +1,43 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.Valid; +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * 配置表表单字段明细 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="SystemFormItemCheckRequest对象", description="表单字段明细") +public class SystemFormItemCheckRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "字段名称", required = true) + @NotBlank(message = "请设置 SystemFormItemCheckRequest 对象的 name 属性") + private String name; + + @ApiModelProperty(value = "字段值", required = true) + private String value; + + @ApiModelProperty(value = "字段显示文字", required = true) + private String title; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemFormTempRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemFormTempRequest.java new file mode 100644 index 0000000..c7e0977 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemFormTempRequest.java @@ -0,0 +1,53 @@ +package com.zbkj.common.request; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.Date; + +/** + * 表单模板 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_system_form_temp") +@ApiModel(value="SystemFormTempRequest对象", description="表单模板") +public class SystemFormTempRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "表单名称", required = true) + @NotBlank(message = "请填写表单名称") + @Length(max = 500, message = "表单名称长度不能超过500个字符") + private String name; + + @ApiModelProperty(value = "表单简介", required = true) + @NotBlank(message = "请填写表单简介") + @Length(max = 500, message = "表单简介长度不能超过500个字符") + private String info; + + @ApiModelProperty(value = "表单内容", required = true) + @NotBlank(message = "请填写表单内容") + private String content; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemFormTempSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemFormTempSearchRequest.java new file mode 100644 index 0000000..30db6e6 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemFormTempSearchRequest.java @@ -0,0 +1,39 @@ +package com.zbkj.common.request; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + +/** + * 表单模板 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_system_form_temp") +@ApiModel(value="SystemFormTempSearchRequest对象", description="表单模板") +public class SystemFormTempSearchRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "搜索关键字") + private String keywords; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemGroupDataRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemGroupDataRequest.java new file mode 100644 index 0000000..a64e41d --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemGroupDataRequest.java @@ -0,0 +1,38 @@ +package com.zbkj.common.request; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 组合数据详情表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_system_group_data") +@ApiModel(value="SystemGroupDataRequest对象", description="组合数据详情表") +public class SystemGroupDataRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "对应的数据组id") + private Integer gid; + + @ApiModelProperty(value = "表单数据") + private SystemFormCheckRequest form; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemGroupDataSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemGroupDataSearchRequest.java new file mode 100644 index 0000000..ff9b002 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemGroupDataSearchRequest.java @@ -0,0 +1,44 @@ +package com.zbkj.common.request; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + +/** + * 组合数据详情表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_system_group_data") +@ApiModel(value="SystemGroupDataSearchRequest对象", description="组合数据详情表") +public class SystemGroupDataSearchRequest implements Serializable { + + private static final long serialVersionUID=1L; + @ApiModelProperty(value = "关键字") + private String keywords; + + @ApiModelProperty(value = "分组id") + private Integer gid; + + @ApiModelProperty(value = "状态(1:开启;2:关闭;)") + private Boolean status; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemGroupRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemGroupRequest.java new file mode 100644 index 0000000..95ff89a --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemGroupRequest.java @@ -0,0 +1,48 @@ +package com.zbkj.common.request; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Length; + +import java.io.Serializable; +import java.util.Date; + +/** + * 组合数据表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_system_group") +@ApiModel(value="SystemGroupRequest对象", description="组合数据表") +public class SystemGroupRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "数据组名称") + @Length(max = 50, message = "数据组名称长度不能超过50个字符") + private String name; + + @ApiModelProperty(value = "简介") + @Length(max = 256, message = "数据组名称长度不能超过256个字符") + private String info; + + @ApiModelProperty(value = "form 表单 id") + private Integer formId; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemGroupSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemGroupSearchRequest.java new file mode 100644 index 0000000..4480427 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemGroupSearchRequest.java @@ -0,0 +1,38 @@ +package com.zbkj.common.request; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + +/** + * 组合数据表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_system_group") +@ApiModel(value="SystemGroupSearchRequest对象", description="组合数据表") +public class SystemGroupSearchRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "关键字") + private String keywords; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemMenuRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemMenuRequest.java new file mode 100644 index 0000000..680b8c3 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemMenuRequest.java @@ -0,0 +1,68 @@ +package com.zbkj.common.request; + +import com.zbkj.common.annotation.StringContains; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.Date; + +/** + *

+ * 系统菜单请求对象 + *

+ * + * @author HZW + * @since 2021-11-17 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="SystemMenu对象", description="系统菜单请求对象") +public class SystemMenuRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "菜单ID,新增时不填,修改时必填") + private Integer id; + + @ApiModelProperty(value = "父级ID") + private Integer pid; + + @NotEmpty(message = "菜单名称不能为空") + @ApiModelProperty(value = "名称") + @Length(max = 100, message = "菜单名称不能超过100个字符") + private String name; + + @ApiModelProperty(value = "icon") + private String icon; + + @ApiModelProperty(value = "权限标识") + private String perms; + + @ApiModelProperty(value = "组件路径") + private String component; + + @NotEmpty(message = "菜单类型不能为空") + @ApiModelProperty(value = "类型,M-目录,C-菜单,A-按钮") + @StringContains(limitValues = {"M","C","A"}, message = "未知的菜单类型") + private String menuType; + + @ApiModelProperty(value = "排序") + @NotNull(message = "排序不能为空") + @Min(value = 0, message = "排序最小为0") + private Integer sort; + + @ApiModelProperty(value = "显示状态") + @NotNull(message = "显示状态不能为空") + private Boolean isShow; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemMenuSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemMenuSearchRequest.java new file mode 100644 index 0000000..dd301a4 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemMenuSearchRequest.java @@ -0,0 +1,31 @@ +package com.zbkj.common.request; + +import com.zbkj.common.annotation.StringContains; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 菜单搜索Request对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@ApiModel(value="SystemMenuSearchRequest对象", description="菜单搜索Request对象") +public class SystemMenuSearchRequest { + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "菜单名称") + private String name; + + @ApiModelProperty(value = "菜单类型:M-目录,C-菜单,A-按钮") + @StringContains(limitValues = {"M","C","A"}, message = "未知的菜单类型") + private String menuType; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemRoleRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemRoleRequest.java new file mode 100644 index 0000000..3b07f82 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemRoleRequest.java @@ -0,0 +1,48 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * 身份管理请求对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="SystemRoleRequest对象", description="身份管理请求对象") +public class SystemRoleRequest implements Serializable { + + private static final long serialVersionUID = -7616469901068422271L; + + @ApiModelProperty(value = "角色id(添加时不填,修改时必填)") + private Integer id; + + @ApiModelProperty(value = "身份管理名称", required = true) + @NotNull(message = "身份管理名称不能为空") + @Length(max = 32, message = "身份管理名称不能超过32个字符") + private String roleName; + + @ApiModelProperty(value = "权限字符串(英文逗号拼接)", required = true) + @NotNull(message = "权限不能为空") + private String rules; + + @ApiModelProperty(value = "状态:0-关闭,1-正常", required = true) + @NotNull(message = "状态不能为空") + private Boolean status; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemRoleSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemRoleSearchRequest.java new file mode 100644 index 0000000..e976031 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemRoleSearchRequest.java @@ -0,0 +1,27 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 身份管理搜索Request对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class SystemRoleSearchRequest { + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "身份管理名称") + private String roleName; + + @ApiModelProperty(value = "状态") + private Boolean status; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemStoreRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemStoreRequest.java new file mode 100644 index 0000000..24d54e3 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemStoreRequest.java @@ -0,0 +1,74 @@ +package com.zbkj.common.request; + +import com.zbkj.common.constants.RegularConstants; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Pattern; +import java.io.Serializable; + +/** + * 门店自提 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="SystemStoreRequest对象", description="提货点") +public class SystemStoreRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "门店名称") + @NotBlank(message = "请填写门店名称") + @Length(max = 100, message = "门店名称不能超过100个字符") + private String name; + + @ApiModelProperty(value = "简介") + private String introduction; + + @ApiModelProperty(value = "手机号码") + @Pattern(regexp = RegularConstants.PHONE_TWO, message = "手机号码格式错误") + private String phone; + + @ApiModelProperty(value = "提货点地址省市区") + @NotBlank(message = "提货点地址") + @Length(max = 255, message = "提货点地址不能超过255个字符") + private String address; + + @ApiModelProperty(value = "详细地址") + @NotBlank(message = "请填写详细地址") + @Length(max = 255, message = "详细地址不能超过255个字符") + private String detailedAddress; + + @ApiModelProperty(value = "每日营业开关时间") + private String dayTime; + + @ApiModelProperty(value = "门店logo") + @NotBlank(message = "请上传门店logo") + @Length(max = 255, message = "门店logo不能超过255个字符") + private String image; + + @ApiModelProperty(value = "纬度") + @NotBlank(message = "请选择经纬度") + private String latitude; + + @ApiModelProperty(value = "经度", example = "1,2") + private String longitude; + + @ApiModelProperty(value = "核销有效日期") + private String validTime; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemStoreSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemStoreSearchRequest.java new file mode 100644 index 0000000..b1be919 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemStoreSearchRequest.java @@ -0,0 +1,42 @@ +package com.zbkj.common.request; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Range; + +import java.io.Serializable; +import java.util.Date; + +/** + * 提货点搜索 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_system_store") +@ApiModel(value="SystemStoreSearchRequest对象", description="提货点搜索") +public class SystemStoreSearchRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "搜索关键字,支持 门店名称|简介|手机号码||省市区|详细地址") + private String keywords; + + @ApiModelProperty(value = "状态,0隐藏,1显示,2回收站", example = "1") + @Range(min = 0, max = 2, message = "未知的状态") + private int status; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemStoreStaffRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemStoreStaffRequest.java new file mode 100644 index 0000000..7d64899 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemStoreStaffRequest.java @@ -0,0 +1,65 @@ +package com.zbkj.common.request; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * 门店店员表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_system_store_staff") +@ApiModel(value="SystemStoreStaff对象", description="门店店员表") +public class SystemStoreStaffRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "管理员 id") + @Min(value = 1, message = "请选择管理员") + private Integer uid; + + @ApiModelProperty(value = "管理员头像") + private String avatar; + + @ApiModelProperty(value = "提货点id") + @Min(value = 1, message = "请选择提货点") + private Integer storeId; + + @ApiModelProperty(value = "核销员 名称 [昵称]") + @NotBlank(message = "核销员名称不能为空") + @Length(max = 64,message = "核销员名称不能超过64个字符") + private String staffName; + + @ApiModelProperty(value = "手机号码") + private String phone; + + @ApiModelProperty(value = "核销开关") + private boolean verifyStatus = false; + + @ApiModelProperty(value = "状态") + private boolean status = false; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemUserLevelRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemUserLevelRequest.java new file mode 100644 index 0000000..7b37550 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemUserLevelRequest.java @@ -0,0 +1,69 @@ +package com.zbkj.common.request; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.Max; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * 设置用户等级表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_system_user_level") +@ApiModel(value="SystemUserLevelRequest对象", description="设置用户等级表") +public class SystemUserLevelRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "等级id") + private Integer id; + + @ApiModelProperty(value = "等级名称") + @NotBlank(message = "等级名称不能为空") + @Length(max = 50, message = "等级名称不能超过50个字符") + private String name; + + @ApiModelProperty(value = "达到多少升级经验") + @NotNull(message = "等级经验不能为空") + private Integer experience; + + @ApiModelProperty(value = "会员等级") + @NotNull(message = "会员等级不能为空") + @Min(value = 1, message = "会员等级最小为1") + private Integer grade; + + @ApiModelProperty(value = "享受折扣") + @NotNull(message = "折扣不能为空") + @Min(value = 1, message = "折扣值不能小于1") + @Max(value = 100, message = "折扣值不能大于100") + private Integer discount; + + @ApiModelProperty(value = "会员图标") + @NotBlank(message = "会员图标不能为空") + private String icon; + + @ApiModelProperty(value = "是否显示 1=显示,0=隐藏") + @NotNull(message = "是否显示不能为空") + private Boolean isShow; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemUserLevelUpdateShowRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemUserLevelUpdateShowRequest.java new file mode 100644 index 0000000..52c5cb8 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemUserLevelUpdateShowRequest.java @@ -0,0 +1,40 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * 设置用户等级表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="SystemUserLevelUpdateShowRequest对象", description="等级更改显示状态请求") +public class SystemUserLevelUpdateShowRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "等级id") + @NotNull(message = "等级id不能为空") + private Integer id; + + @ApiModelProperty(value = "是否显示 1=显示,0=隐藏") + @NotNull(message = "是否显示不能为空") + private Boolean isShow; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemWriteOffOrderSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemWriteOffOrderSearchRequest.java new file mode 100644 index 0000000..ba05038 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemWriteOffOrderSearchRequest.java @@ -0,0 +1,40 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 核销 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="SystemWriteOffOrderSearchRequest对象", description="核销订单搜索") +public class SystemWriteOffOrderSearchRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "核销点ID") + private Integer storeId; + + @ApiModelProperty(value = "时间") + private String dateLimit; + + @ApiModelProperty(value = "关键字") + private String keywords; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UpdateUserLevelRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UpdateUserLevelRequest.java new file mode 100644 index 0000000..34e35ca --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UpdateUserLevelRequest.java @@ -0,0 +1,43 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * 更新用户会员等级 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="UpdateUserLevelRequest", description="更新用户会员等级对象") +public class UpdateUserLevelRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "uid") + @NotNull(message = "用户id不能为空") + private Integer uid; + + @ApiModelProperty(value = "会员等级") + @NotNull(message = "等级id不能为空") + private Integer levelId; + + @ApiModelProperty(value = "是否扣减积分,true-扣减,false-不扣减") + private Boolean isSub; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserAddressCityRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserAddressCityRequest.java new file mode 100644 index 0000000..d18df0b --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserAddressCityRequest.java @@ -0,0 +1,47 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * 用户地址详细对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="UserAddressCityRequest对象", description="用户地址详细对象") +public class UserAddressCityRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "收货人所在省", required = true) + @NotBlank(message = "收货人所在省不能为空") + private String province; + + @ApiModelProperty(value = "收货人所在市", required = true) + @NotBlank(message = "收货人所在市不能为空") + private String city; + + @ApiModelProperty(value = "城市id") + private Integer cityId = 0; + + @ApiModelProperty(value = "收货人所在区", required = true) + @NotBlank(message = "收货人所在区不能为空") + private String district; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserAddressDelRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserAddressDelRequest.java new file mode 100644 index 0000000..00db12d --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserAddressDelRequest.java @@ -0,0 +1,35 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.Min; +import java.io.Serializable; + +/** + * 用户地址表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="UserAddressDelRequest对象", description="用户地址") +public class UserAddressDelRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "用户地址id") + @Min(value = 1, message = "请选择用户地址") + private Integer id; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserAddressRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserAddressRequest.java new file mode 100644 index 0000000..5271c20 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserAddressRequest.java @@ -0,0 +1,60 @@ +package com.zbkj.common.request; + +import com.zbkj.common.constants.RegularConstants; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Length; + +import javax.validation.Valid; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Pattern; +import java.io.Serializable; + +/** + * 新增用户地址对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="UserAddressRequest对象", description="新增用户地址对象") +public class UserAddressRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "用户地址id") + private Integer id; + + @ApiModelProperty(value = "收货人姓名", required = true) + @NotBlank(message = "收货人姓名不能为空") + @Length(max = 32, message = "收货人姓名不能超过32个字符") + private String realName; + + @ApiModelProperty(value = "收货人电话", required = true) + @NotBlank(message = "收货人电话不能为空") + @Pattern(regexp = RegularConstants.PHONE_TWO, message = "请填写正确的收货人电话") + private String phone; + + @ApiModelProperty(value = "收货人详细地址", required = true) + @NotBlank(message = "收货人详细地址不能为空") + @Length(max = 256, message = "收货人详细地址不能超过32个字符") + private String detail; + + @ApiModelProperty(value = "是否默认", example = "false", required = true) + private Boolean isDefault; + + @Valid + @ApiModelProperty(value = "城市信息", required = true) + private UserAddressCityRequest address; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserBindingPhoneUpdateRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserBindingPhoneUpdateRequest.java new file mode 100644 index 0000000..7e72385 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserBindingPhoneUpdateRequest.java @@ -0,0 +1,40 @@ +package com.zbkj.common.request; + +import com.zbkj.common.constants.RegularConstants; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.Pattern; +import java.io.Serializable; + +/** + * 换绑手机号请求对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="UserBindingPhoneUpdateRequest", description="换绑手机号请求对象") +public class UserBindingPhoneUpdateRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "手机号", required = true) + @Pattern(regexp = RegularConstants.PHONE_TWO, message = "手机号码格式错误") + private String phone; + + @ApiModelProperty(value = "验证码", required = true) + @Pattern(regexp = RegularConstants.VALIDATE_CODE_NUM_SIX, message = "验证码格式错误,验证码必须为6位数字") + private String captcha; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserCollectAllRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserCollectAllRequest.java new file mode 100644 index 0000000..4bae59c --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserCollectAllRequest.java @@ -0,0 +1,42 @@ +package com.zbkj.common.request; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Size; +import java.io.Serializable; + +/** + * 商品点赞和收藏表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="StoreProductRelationRequest对象", description="商品点赞和收藏表") +public class UserCollectAllRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "商品ID") + @JsonProperty("id") + @Size(min = 1, message = "请选择产品") + private Integer[] productId; + + @ApiModelProperty(value = "产品类型|store=普通产品,product_seckill=秒杀产品(默认 普通产品 store)") + @NotBlank(message = "请选择产品类型") + private String category; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserCollectRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserCollectRequest.java new file mode 100644 index 0000000..27bdee8 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserCollectRequest.java @@ -0,0 +1,45 @@ +package com.zbkj.common.request; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * 商品点赞和收藏表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_store_product_relation") +@ApiModel(value="UserCollectRequest对象", description="商品点赞和收藏表") +public class UserCollectRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "商品ID") + @JsonProperty("id") + @Min(value = 1, message = "请选择产品") + private Integer productId; + + @ApiModelProperty(value = "产品类型|store=普通产品,product_seckill=秒杀产品(默认 普通产品 store)") + @JsonProperty("category") + @NotBlank(message = "请选择产品类型") + private String category; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserCouponReceiveRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserCouponReceiveRequest.java new file mode 100644 index 0000000..e625423 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserCouponReceiveRequest.java @@ -0,0 +1,38 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; +import java.io.Serializable; + +/** + * 用户领取优惠券请求对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="UserCouponReceiveRequest对象", description="用户领取优惠券请求对象") +public class UserCouponReceiveRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "优惠券id") + @NotNull(message = "优惠券编号不能为空") + private Integer couponId; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserEditRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserEditRequest.java new file mode 100644 index 0000000..c9f5d1c --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserEditRequest.java @@ -0,0 +1,42 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * 用户编辑Request + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="UserEditRequest对象", description="修改个人资料") +public class UserEditRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "用户昵称") + @NotBlank(message = "请填写用户昵称") + @Length(max = 255, message = "用户昵称不能超过255个字符") + private String nickname; + + @ApiModelProperty(value = "用户头像") + @NotBlank(message = "请上传用户头像") + @Length(max = 255, message = "用户头像不能超过255个字符") + private String avatar; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserExtractRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserExtractRequest.java new file mode 100644 index 0000000..75f8a87 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserExtractRequest.java @@ -0,0 +1,71 @@ +package com.zbkj.common.request; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.DecimalMin; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 用户提现表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="UserExtractRequest对象", description="用户提现") +public class UserExtractRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "姓名") + @NotBlank(message = "提现用户名称必须填写") + @Length(max = 64, message = "提现用户名称不能超过64个字符") + @JsonProperty(value = "name") + private String realName; + + @ApiModelProperty(value = "提现方式| alipay=支付宝,bank=银行卡,weixin=微信", allowableValues = "range[alipay,weixin,bank]") + @NotBlank(message = "请选择提现方式, 支付宝|微信|银行卡") + private String extractType; + + @ApiModelProperty(value = "银行卡") + @JsonProperty(value = "cardum") + private String bankCode; + + @ApiModelProperty(value = "提现银行名称") + private String bankName; + + @ApiModelProperty(value = "支付宝账号") + private String alipayCode; + + @ApiModelProperty(value = "提现金额") + @JsonProperty(value = "money") + @NotNull(message = "请输入提现金额") + @DecimalMin(value = "0.1", message = "提现金额不能小于0.1") + private BigDecimal extractPrice; + + @ApiModelProperty(value = "微信号") + private String wechat; + + @ApiModelProperty(value = "备注") + private String mark; + + @ApiModelProperty(value = "微信收款码") + private String qrcodeUrl; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserExtractSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserExtractSearchRequest.java new file mode 100644 index 0000000..2057559 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserExtractSearchRequest.java @@ -0,0 +1,45 @@ +package com.zbkj.common.request; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 用户提现表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_user_extract") +@ApiModel(value="UserExtract对象", description="用户提现表") +public class UserExtractSearchRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "搜索关键字") + private String keywords; + + @ApiModelProperty(value = "bank = 银行卡 alipay = 支付宝 weixin = 微信") + private String extractType; + + @ApiModelProperty(value = "-1 未通过 0 审核中 1 已提现") + private Integer status; + + @ApiModelProperty(value = "today,yesterday,lately7,lately30,month,year,/yyyy-MM-dd hh:mm:ss,yyyy-MM-dd hh:mm:ss/") + private String dateLimit; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserGroupRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserGroupRequest.java new file mode 100644 index 0000000..783ed93 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserGroupRequest.java @@ -0,0 +1,42 @@ +package com.zbkj.common.request; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * 用户分组表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_user_group") +@ApiModel(value="UserGroup对象", description="用户分组表") +public class UserGroupRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "用户分组名称") + @NotBlank(message = "请填写分组名称") + @Length(max = 64, message = "用户分组名称不能超过64个字符") + private String groupName; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserOperateIntegralMoneyRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserOperateIntegralMoneyRequest.java new file mode 100644 index 0000000..12ff920 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserOperateIntegralMoneyRequest.java @@ -0,0 +1,59 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Range; + +import javax.validation.constraints.*; +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 资金操作 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="资金操作", description="资金操作") +public class UserOperateIntegralMoneyRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "uid") + @NotNull + @Min(value = 1, message = "请输入正确的uid") + private Integer uid; + + @ApiModelProperty(value = "积分类型, 1 = 增加, 2 = 减少") + @NotNull + @Range(min = 1, max = 2, message = "请选择正确的类型, 【1 = 增加, 2 = 减少】") + private Integer integralType; + + @ApiModelProperty(value = "积分") + @Min(value = 0) + @Max(value = 999999) + private Integer integralValue; + + @ApiModelProperty(value = "余额类型, 1 = 增加, 2 = 减少") + @NotNull + @Range(min = 1, max = 2, message = "请选择正确的类型, 【1 = 增加, 2 = 减少】") + private Integer moneyType; + + @ApiModelProperty(value = "余额") + @DecimalMin(value = "0.00") + @DecimalMax(value = "999999.99") + private BigDecimal moneyValue; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserRechargeRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserRechargeRequest.java new file mode 100644 index 0000000..028b6f3 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserRechargeRequest.java @@ -0,0 +1,60 @@ +package com.zbkj.common.request; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 充值 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="UserRechargeRequest对象", description="充值") +public class UserRechargeRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "充值金额") +// @DecimalMin(value = "1", message = "充值金额不能小于1") todo 测试完后放开 + private BigDecimal price; + + @ApiModelProperty(value = "选择金额组合数据id") + @JsonProperty(value = "rechar_id") + private Integer groupDataId; + + @ApiModelProperty(value = "支付方式| weixin = 微信,alipay = 支付宝") + private String payType = "weixin"; + + @ApiModelProperty(value = "来源 | public = 微信公众号, weixinh5 =微信H5支付, routine = 小程序,weixinAppIos-微信appios支付,weixinAppAndroid-微信app安卓支付,alipay-支付包支付,appAliPay-App支付宝支付") + @JsonProperty(value = "from") + private String fromType; + + @ApiModelProperty(value = "客户端ip") + @JsonIgnore + private String clientIp; + + @ApiModelProperty(value = "用户id") + @JsonIgnore + private Integer userId; + + @ApiModelProperty(value = "赠送金额") + @JsonIgnore + private BigDecimal givePrice; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserRechargeSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserRechargeSearchRequest.java new file mode 100644 index 0000000..1ee5164 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserRechargeSearchRequest.java @@ -0,0 +1,39 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 用户充值记录查询对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="UserRechargeSearchRequest对象", description="用户充值记录查询对象") +public class UserRechargeSearchRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "搜索关键字") + private String keywords; + + @ApiModelProperty(value = "today,yesterday,lately7,lately30,month,year,/yyyy-MM-dd hh:mm:ss,yyyy-MM-dd hh:mm:ss/") + private String dateLimit; + + @ApiModelProperty(value = "用户uid") + private Integer uid; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserSearchRequest.java new file mode 100644 index 0000000..10912ae --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserSearchRequest.java @@ -0,0 +1,81 @@ +package com.zbkj.common.request; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.zbkj.common.annotation.StringContains; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * 用户表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_user") +@ApiModel(value="User对象", description="用户表") +public class UserSearchRequest implements Serializable { + + private static final long serialVersionUID=1L; + + + @ApiModelProperty(value = "关键字") + private String keywords; + + @ApiModelProperty(value = "时间") + private String dateLimit; + + @ApiModelProperty(value = "用户分组") + private String groupId; + + @ApiModelProperty(value = "用户标签") + private String labelId; + + @ApiModelProperty(value = "用户登陆类型,h5 = h5, wechat = wechat,routine = routine", allowableValues = "range[h5,wechat,routine]") + @StringContains(limitValues = {"h5","wechat","routine"}, message = "请选择正确的用户登录类型") + private String userType; + + @ApiModelProperty(value = "状态是否正常, 0 = 禁止, 1 = 正常") + private Boolean status = null; + + @ApiModelProperty(value = "是否为推广员, 0 = 禁止, 1 = 正常") + private Boolean isPromoter = null; + + @ApiModelProperty(value = "消费情况") + private String payCount; + + @ApiModelProperty(value = "等级") + private String level; + + //时间类型 + @ApiModelProperty(value = "访问情况, 0 = 全部, 1 = 首次, 2 = 访问过, 3 = 未访问", allowableValues = "range[0,1,2,3]") + @NotNull(message = "访问情况不能为空") + private Integer accessType = 0; + + @ApiModelProperty(value = "国家,中国CN,其他OTHER") + private String country; + + @ApiModelProperty(value = "省份") + private String province; + + @ApiModelProperty(value = "城市") + private String city; + + @ApiModelProperty(value = "性别,0未知,1男,2女,3保密") + private String sex; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserSpreadPeopleRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserSpreadPeopleRequest.java new file mode 100644 index 0000000..0d89a0c --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserSpreadPeopleRequest.java @@ -0,0 +1,46 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Range; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * 用户表 推广人 Request + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="UserSpreadPeopleRequest对象", description="推广用户") +public class UserSpreadPeopleRequest implements Serializable { + + private static final long serialVersionUID=1L; + + + @ApiModelProperty(value = "推荐人类型|0=一级|1=二级", allowableValues = "range[0,1]") + @Range(min = 0, max = 1, message = "推荐人类型必须在 0(一级),1(二级) 中选择") + private Integer grade = 0; + + @ApiModelProperty(value = "搜索关键字") + private String keyword; + + @ApiModelProperty(value = "排序, 排序|childCount=团队排序,numberCount=金额排序,orderCount=订单排序", allowableValues = "range[childCount,numberCount,orderCount]") + private String sortKey; + + @ApiModelProperty(value = "排序值 DESC ASC") + private String isAsc = "DESC"; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserTagRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserTagRequest.java new file mode 100644 index 0000000..2841b08 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserTagRequest.java @@ -0,0 +1,43 @@ +package com.zbkj.common.request; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.Max; +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * 用户分组表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="UserTagRequest对象", description="会员标签") +public class UserTagRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "标签名称") + @NotBlank(message = "请填写标签名称") + @Length(max = 50, message = "标签名称不能超过50个字符") + private String name; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserUpdateRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserUpdateRequest.java new file mode 100644 index 0000000..ec8d4cf --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserUpdateRequest.java @@ -0,0 +1,67 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * 用户更新请求对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="UserUpdateRequest", description="用户更新请求对象") +public class UserUpdateRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "uid") + private Integer uid; + + @ApiModelProperty(value = "真实姓名") + private String realName; + + @ApiModelProperty(value = "生日") + private String birthday; + + @ApiModelProperty(value = "身份证号码") + private String cardId; + + @ApiModelProperty(value = "用户备注") + private String mark; + + @ApiModelProperty(value = "状态是否正常, 0 = 禁止, 1 = 正常") + @NotNull(message = "状态不能为空") + private Boolean status; + + @ApiModelProperty(value = "详细地址") + private String addres; + +// @ApiModelProperty(value = "等级") +// private Integer level; + + @ApiModelProperty(value = "用户分组id") + private String groupId; + + @ApiModelProperty(value = "用户标签id") + private String tagId; + + @ApiModelProperty(value = "是否为推广员") + @NotNull(message = "是否为推广员不能为空") + private Boolean isPromoter; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserUpdateSpreadRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserUpdateSpreadRequest.java new file mode 100644 index 0000000..34c37cc --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserUpdateSpreadRequest.java @@ -0,0 +1,44 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * 更新推广人请求对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="UserUpdateSpreadRequest对象", description="更新推广人请求对象") +public class UserUpdateSpreadRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "用户编号") + @NotNull(message = "请选择用户") + private Integer userId; + + @ApiModelProperty(value = "用户头像") + @NotBlank(message = "请选择用户头像") + private String image; + + @ApiModelProperty(value = "推广人编号") + @NotNull(message = "请选择推广人") + private Integer spreadUid; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/VideoOrderSendRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/VideoOrderSendRequest.java new file mode 100644 index 0000000..d264f9b --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/VideoOrderSendRequest.java @@ -0,0 +1,41 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotBlank; + +/** + * 视频订单发货对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="VideoOrderSendRequest对象", description="视频订单发货对象") +public class VideoOrderSendRequest { + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "订单编号") + @NotBlank(message = "订单编号不能为空") + private String orderNo; + + @ApiModelProperty(value = "快递公司ID") + @NotBlank(message = "快递公司ID不能为空") + private String deliveryId; + + @ApiModelProperty(value = "快递单号") + @NotBlank(message = "快递单号不能为空") + private String waybillId; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/WechatProgramMyTempSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/WechatProgramMyTempSearchRequest.java new file mode 100644 index 0000000..c29ce20 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/WechatProgramMyTempSearchRequest.java @@ -0,0 +1,44 @@ +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 小程序我的模板 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="WechatProgramMyTempSearchRequest对象", description="小程序我的模板") +public class WechatProgramMyTempSearchRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "模版标题") + private String title; + + @ApiModelProperty(value = "我的模板id") + private String tempId; + + @ApiModelProperty(value = "状态 0,禁用,1启用") + private Boolean status; + + @ApiModelProperty(value = "应用场景") + private String type; + + private Integer id; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/WechatReplyRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/WechatReplyRequest.java new file mode 100644 index 0000000..9b8d579 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/WechatReplyRequest.java @@ -0,0 +1,53 @@ +package com.zbkj.common.request; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * 微信关键字回复表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_wechat_reply") +@ApiModel(value="WechatReplyRequest对象", description="微信关键字回复表") +public class WechatReplyRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "关键字id") + private Integer id; + + @ApiModelProperty(value = "关键字") + @NotBlank(message = "请填写关键字, 关注 = subscribe, 默认 = default") + private String keywords; + + @ApiModelProperty(value = "回复类型 text=文本 image =图片 news =图文 voice =音频" , example = "text") + @NotBlank(message = "请选择回复类型") + private String type; + + @ApiModelProperty(value = "回复数据") + @NotBlank(message = "请填写回复数据") + private String data; + + @ApiModelProperty(value = "回复状态 0=不可用 1 =可用", example = "1") + @NotNull(message = "请选择回复状态") + private Boolean status; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/WechatReplySearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/WechatReplySearchRequest.java new file mode 100644 index 0000000..871b8d9 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/WechatReplySearchRequest.java @@ -0,0 +1,42 @@ +package com.zbkj.common.request; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * 微信关键字回复表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_wechat_reply") +@ApiModel(value="WechatReply对象", description="微信关键字回复表") +public class WechatReplySearchRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "关键字") + private String keywords; + + @ApiModelProperty(value = "回复类型 text=文本 image =图片 news =图文 voice =音频" , example = "text") + private String type; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/WxBindingPhoneRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/WxBindingPhoneRequest.java new file mode 100644 index 0000000..84cba0f --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/WxBindingPhoneRequest.java @@ -0,0 +1,58 @@ +package com.zbkj.common.request; + +import com.zbkj.common.constants.RegularConstants; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Pattern; +import java.io.Serializable; + +/** + * 微信绑定手机号请求对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="WxBindingPhoneRequest", description="微信绑定手机号请求对象") +public class WxBindingPhoneRequest implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "手机号", required = true) + @Pattern(regexp = RegularConstants.PHONE_TWO, message = "请输入正确的手机号") + private String phone; + + @ApiModelProperty(value = "验证码", required = true) + @Pattern(regexp = RegularConstants.VALIDATE_CODE_NUM_SIX, message = "请输入6位验证码") + private String captcha; + + @ApiModelProperty(value = "类型:public-公众号,routine-小程序,iosWx-苹果微信,androidWx-安卓微信, ios-ios登录") + @NotBlank(message = "类型不能为空") + private String type; + + @ApiModelProperty(value = "新用户登录时返回的key") + @NotBlank(message = "key不能为空") + private String key; + + @ApiModelProperty(value = "小程序获取手机号加密数据") + private String encryptedData; + + @ApiModelProperty(value = "加密算法的初始向量") + private String iv; + + @ApiModelProperty(value = "小程序code") + private String code; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/YlyPrintRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/YlyPrintRequest.java new file mode 100644 index 0000000..83e1485 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/YlyPrintRequest.java @@ -0,0 +1,28 @@ +package com.zbkj.common.request; + +import lombok.Data; + +import java.util.List; + +/** + * 易联云打印参数 + * @program: crmeb + * @author: 大粽子 + * @create: 2021-11-27 10:51 + **/ +@Data +public class YlyPrintRequest { + private String BusinessName; + private String OrderNo; + private String Date; + private String Name; + private String Phone; + private String Address; + private String Note; + private List Goods; + private String Amount; // 合计 + private String Discount; // 优惠 + private String Postal; // 邮费 + private String Deduction; // 折扣 + private String PayMoney; // 实际金额 +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/YlyPrintRequestGoods.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/YlyPrintRequestGoods.java new file mode 100644 index 0000000..5f582c8 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/YlyPrintRequestGoods.java @@ -0,0 +1,29 @@ +package com.zbkj.common.request; + +import lombok.Data; +import org.apache.commons.lang3.StringUtils; + +/** 易联云打印商品详情 + * @program: crmeb + * @author: 大粽子 + * @create: 2021-11-27 10:56 + **/ +@Data +public class YlyPrintRequestGoods { + private String GoodsName; + private String UnitPrice; + private String Num; + private String Money; + + public YlyPrintRequestGoods(String goodsName, String unitPrice, String num, String money) { + // 打印商品名称只打印前10位 + String LastGoodsName = goodsName; + if(StringUtils.isNotBlank(goodsName) && goodsName.length() > 10){ + LastGoodsName = goodsName.substring(0,11); + } + GoodsName = LastGoodsName; + UnitPrice = unitPrice; + Num = num; + Money = money; + } +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/ApplyRefundOrderInfoResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/ApplyRefundOrderInfoResponse.java new file mode 100644 index 0000000..8bee7e1 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/ApplyRefundOrderInfoResponse.java @@ -0,0 +1,51 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.List; + +/** + * 申请退款订单响应对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="ApplyRefundOrderInfoResponse对象", description="申请退款订单响应对象") +public class ApplyRefundOrderInfoResponse implements Serializable { + + private static final long serialVersionUID = 1387727608277207652L; + + @ApiModelProperty(value = "订单id") + private Integer id; + + @ApiModelProperty(value = "订单编号") + private String orderId; + + @ApiModelProperty(value = "支付状态") + private Boolean paid; + + @ApiModelProperty(value = "支付金额") + private BigDecimal payPrice; + + @ApiModelProperty(value = "订单商品总数") + private Integer totalNum; + + @ApiModelProperty(value = "订单详情对象列表") + private List orderInfoList; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/ArticleResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/ArticleResponse.java new file mode 100644 index 0000000..22708c1 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/ArticleResponse.java @@ -0,0 +1,60 @@ +package com.zbkj.common.response; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + +/** + * 文章响应对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="ArticleResponse对象", description="文章响应对象") +public class ArticleResponse implements Serializable { + + private static final long serialVersionUID = -4585094537501770138L; + + @ApiModelProperty(value = "文章管理ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "文章标题") + private String title; + + @ApiModelProperty(value = "文章作者") + private String author; + + @ApiModelProperty(value = "文章图片 前端用") + private String imageInput; + + @ApiModelProperty(value = "文章简介") + private String synopsis; + + @ApiModelProperty(value = "浏览次数") + private String visit; + + @ApiModelProperty(value = "文章内容") + private String content; + + @ApiModelProperty(value = "创建时间") + @JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8") + private Date createTime; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/AttrValueResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/AttrValueResponse.java new file mode 100644 index 0000000..63ef014 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/AttrValueResponse.java @@ -0,0 +1,87 @@ +package com.zbkj.common.response; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.Min; +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 商品属性值响应对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="AttrValueResponse对象", description="商品属性值响应对象") +public class AttrValueResponse implements Serializable { + + private static final long serialVersionUID=1L; + @ApiModelProperty(value = "ID") + private Integer id; + + @ApiModelProperty(value = "商品ID") + private Integer productId; + + @ApiModelProperty(value = "sku") + private String suk; + + @ApiModelProperty(value = "属性对应的库存") + private Integer stock; + + @ApiModelProperty(value = "销量") + private Integer sales; + + @ApiModelProperty(value = "属性金额") + private BigDecimal price; + + @ApiModelProperty(value = "图片") + private String image; + + @ApiModelProperty(value = "成本价") + private BigDecimal cost; + + @ApiModelProperty(value = "原价") + private BigDecimal otPrice; + + @ApiModelProperty(value = "重量") + private BigDecimal weight; + + @ApiModelProperty(value = "体积") + private BigDecimal volume; + + @ApiModelProperty(value = "一级返佣") + private BigDecimal brokerage; + + @ApiModelProperty(value = "二级返佣") + private BigDecimal brokerageTwo; + + @ApiModelProperty(value = "活动类型 0=商品,1=秒杀,2=砍价,3=拼团") + private Integer type; + + @ApiModelProperty(value = "活动限购数量") + private Integer quota; + + @ApiModelProperty(value = "活动限购数量显示") + private Integer quotaShow; + + @ApiModelProperty(value = "attrValue字段") + private String attrValue; + + @ApiModelProperty(value = "砍价商品最低价|砍价专用字段") + private BigDecimal minPrice; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/BalanceResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/BalanceResponse.java new file mode 100644 index 0000000..a4c09a6 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/BalanceResponse.java @@ -0,0 +1,51 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 用户地址表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="BalanceResponse对象", description="提现金额") +public class BalanceResponse implements Serializable { + + public BalanceResponse() {} + public BalanceResponse(BigDecimal withdrawn, BigDecimal unDrawn, BigDecimal commissionTotal, BigDecimal toBeWithdrawn) { + this.withdrawn = withdrawn; + this.unDrawn = unDrawn; + this.commissionTotal = commissionTotal; + ToBeWithdrawn = toBeWithdrawn; + } + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "已提现") + private BigDecimal withdrawn; + + @ApiModelProperty(value = "未提现") + private BigDecimal unDrawn; + + @ApiModelProperty(value = "佣金总金额") + private BigDecimal commissionTotal; + + @ApiModelProperty(value = "待提现") + private BigDecimal ToBeWithdrawn; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/BargainDetailH5Response.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/BargainDetailH5Response.java new file mode 100644 index 0000000..5d8e2ec --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/BargainDetailH5Response.java @@ -0,0 +1,90 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 砍价商品详情响应对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="BargainDetailH5Response对象", description="砍价商品详情响应对象") +public class BargainDetailH5Response implements Serializable { + + private static final long serialVersionUID = 4177599369617161973L; + + @ApiModelProperty(value = "砍价商品ID") + private Integer id; + + @ApiModelProperty(value = "关联商品ID") + private Integer productId; + + @ApiModelProperty(value = "砍价活动名称") + private String title; + + @ApiModelProperty(value = "砍价活动图片") + private String image; + + @ApiModelProperty(value = "单位名称") + private String unitName; + + @ApiModelProperty(value = "销量") + private Integer sales; + + @ApiModelProperty(value = "砍价开启时间") + private Long startTime; + + @ApiModelProperty(value = "砍价结束时间") + private Long stopTime; + + @ApiModelProperty(value = "砍价金额") + private BigDecimal price; + + @ApiModelProperty(value = "砍价商品最低价") + private BigDecimal minPrice; + + @ApiModelProperty(value = "购买数量限制") + // 单个活动每个用户发起砍价次数限制 + private Integer num; + + @ApiModelProperty(value = "砍价活动简介") + private String info; + +// @ApiModelProperty(value = "砍价规则") +// private String rule; + + @ApiModelProperty(value = "限购总数") + private Integer quota; + + @ApiModelProperty(value = "限量总数显示") + private Integer quotaShow; + + @ApiModelProperty(value = "商品规格sku") + private String sku; + + @ApiModelProperty(value = "商品规格属性id") + private Integer attrValueId; + + @ApiModelProperty(value = "商品详情") + private String content; + + @ApiModelProperty(value = "主商品状态:normal-正常,sellOut-售罄,soldOut-下架,delete-删除") + private String masterStatus; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/BargainHeaderResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/BargainHeaderResponse.java new file mode 100644 index 0000000..bc295ad --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/BargainHeaderResponse.java @@ -0,0 +1,36 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.util.HashMap; +import java.util.List; + +/** + * 砍价商品列表header响应对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="BargainHeaderResponse对象", description="砍价商品列表header响应对象") +public class BargainHeaderResponse { + + @ApiModelProperty(value = "参与砍价总人数") + private Integer bargainTotal; + + @ApiModelProperty(value = "砍价成功列表(默认7条)") + private List> bargainSuccessList; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/BargainIndexResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/BargainIndexResponse.java new file mode 100644 index 0000000..541a2aa --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/BargainIndexResponse.java @@ -0,0 +1,33 @@ +package com.zbkj.common.response; + +import com.zbkj.common.model.bargain.StoreBargain; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.util.List; + +/** + * 砍价首页响应对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="BargainIndexResponse对象", description="砍价首页响应对象") +public class BargainIndexResponse { + + @ApiModelProperty(value = "拼团商品列表") + private List productList; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/BargainRecordResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/BargainRecordResponse.java new file mode 100644 index 0000000..5ea389a --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/BargainRecordResponse.java @@ -0,0 +1,68 @@ +package com.zbkj.common.response; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; +import java.util.HashMap; +import java.util.List; + +/** + * 砍价记录响应对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="BargainRecordResponse对象", description="砍价记录响应对象") +public class BargainRecordResponse { + + @ApiModelProperty(value = "砍价商品ID") + private Integer id; + + @ApiModelProperty(value = "关联商品ID") + private Integer productId; + + @ApiModelProperty(value = "砍价活动名称") + private String title; + + @ApiModelProperty(value = "砍价活动图片") + private String image; + + @ApiModelProperty(value = "砍价结束时间") + private Long stopTime; + + @ApiModelProperty(value = "用户砍价活动id") + private Integer bargainUserId; + + @ApiModelProperty(value = "剩余金额") + private BigDecimal surplusPrice; + + @ApiModelProperty(value = "状态 1参与中 2 活动结束参与失败 3活动结束参与成功") + private Integer status; + + @ApiModelProperty(value = "是否取消") + private Boolean isDel; + + @ApiModelProperty(value = "是否生成订单") + private Boolean isOrder; + + @ApiModelProperty(value = "是否支付") + private Boolean isPay; + + @ApiModelProperty(value = "订单号") + private String orderNo; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/BargainUserInfoResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/BargainUserInfoResponse.java new file mode 100644 index 0000000..61f552a --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/BargainUserInfoResponse.java @@ -0,0 +1,103 @@ +package com.zbkj.common.response; + +import com.zbkj.common.model.bargain.StoreBargainUserHelp; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.List; + +/** + * 砍价用户详情响应对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="BargainUserInfoResponse对象", description="砍价用户详情响应对象") +public class BargainUserInfoResponse implements Serializable { + + private static final long serialVersionUID = 4177599369617161973L; + + @ApiModelProperty(value = "当前用户砍价状态:1-可以参与砍价,2-参与次数已满,3-砍价中,4-已完成,5-可以帮砍,6-已帮砍,7-帮砍次数已满,8-已生成订单未支付,9-已支付,10-未支付,已取消") + private Integer bargainStatus; + + @ApiModelProperty(value = "已砍金额") + private BigDecimal alreadyPrice; + + @ApiModelProperty(value = "剩余金额") + private BigDecimal surplusPrice; + + @ApiModelProperty(value = "砍价百分比") + private Integer bargainPercent; + +// @ApiModelProperty(value = "砍价活动图片") +// private String image; +// +// @ApiModelProperty(value = "单位名称") +// private String unitName; +// +// @ApiModelProperty(value = "销量") +// private Integer sales; +// +// @ApiModelProperty(value = "砍价开启时间") +// private Long startTime; +// +// @ApiModelProperty(value = "砍价结束时间") +// private Long stopTime; +// +// @ApiModelProperty(value = "砍价金额") +// private BigDecimal price; +// +// @ApiModelProperty(value = "砍价商品最低价") +// private BigDecimal minPrice; + +// @ApiModelProperty(value = "购买数量限制") +// // 单个活动每个用户发起砍价次数限制 +// private Integer num; + +// @ApiModelProperty(value = "砍价活动简介") +// private String info; + +// @ApiModelProperty(value = "砍价规则") +// private String rule; + +// @ApiModelProperty(value = "限购总数") +// private Integer quota; +// +// @ApiModelProperty(value = "限量总数显示") +// private Integer quotaShow; +// +// @ApiModelProperty(value = "商品规格sku") +// private String sku; +// +// @ApiModelProperty(value = "商品规格属性id") +// private Integer attrValueId; + +// @ApiModelProperty(value = "商品详情") +// private String content; + + @ApiModelProperty(value = "用户帮砍列表") + private List userHelpList; + + @ApiModelProperty(value = "用户砍价活动id") + private Integer storeBargainUserId; + + @ApiModelProperty(value = "用户砍价活动昵称") + private String storeBargainUserName; + + @ApiModelProperty(value = "用户砍价活动头像") + private String storeBargainUserAvatar; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/CartInfoResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/CartInfoResponse.java new file mode 100644 index 0000000..6349d00 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/CartInfoResponse.java @@ -0,0 +1,67 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 购物车详情响应对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="CartInfoResponse对象", description="购物车详情响应对象") +public class CartInfoResponse implements Serializable { + + private static final long serialVersionUID = 3558884699193209193L; + + @ApiModelProperty(value = "购物车表ID") + private Long id; + + @ApiModelProperty(value = "商品ID") + private Integer productId; + + @ApiModelProperty(value = "商品属性") + private String productAttrUnique; + + @ApiModelProperty(value = "商品数量") + private Integer cartNum; + + @ApiModelProperty(value = "商品图片") + private String image; + + @ApiModelProperty(value = "商品名称") + private String storeName; + + @ApiModelProperty(value = "商品规格id") + private Integer attrId; + + @ApiModelProperty(value = "商品属性索引值 (attr_value|attr_value[|....])") + private String suk; + + @ApiModelProperty(value = "sku价格") + private BigDecimal price; + + @ApiModelProperty(value = "商品是否有效") + private Boolean attrStatus; + + @ApiModelProperty(value = "sku库存") + private Integer stock; + + @ApiModelProperty(value = "sku会员价格") + private BigDecimal vipPrice; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/CombinationDetailH5Response.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/CombinationDetailH5Response.java new file mode 100644 index 0000000..731d96c --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/CombinationDetailH5Response.java @@ -0,0 +1,82 @@ +package com.zbkj.common.response; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 拼团商品移动端对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="CombinationDetailH5Response对象", description="拼团商品移动端对象") +public class CombinationDetailH5Response implements Serializable { + + private static final long serialVersionUID = -885733985825623484L; + + @ApiModelProperty(value = "拼团商品ID") + private Integer id; + + @ApiModelProperty(value = "商品id") + private Integer productId; + + @ApiModelProperty(value = "推荐图") + private String image; + + @ApiModelProperty(value = "轮播图") + private String sliderImage; + + @ApiModelProperty(value = "活动标题") + private String storeName; + + @ApiModelProperty(value = "参团人数") + private Integer people; + + @ApiModelProperty(value = "简介") + private String storeInfo; + + @ApiModelProperty(value = "价格") + private BigDecimal price; + + @ApiModelProperty(value = "销量") + private Integer sales; + + @ApiModelProperty(value = "单位名") + private String unitName; + + @ApiModelProperty(value = "限购总数") + private Integer quota; + + @ApiModelProperty(value = "限量总数显示") + private Integer quotaShow; + + @ApiModelProperty(value = "原价") + private BigDecimal otPrice; + + @ApiModelProperty(value = "每个订单可购买数量") + private Integer onceNum; + + @ApiModelProperty(value = "虚拟销量") + private Integer ficti; + + @ApiModelProperty(value = "商品详情") + private String content; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/CombinationDetailResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/CombinationDetailResponse.java new file mode 100644 index 0000000..4de8907 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/CombinationDetailResponse.java @@ -0,0 +1,51 @@ +package com.zbkj.common.response; + +import com.zbkj.common.model.product.StoreProductAttr; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.HashMap; +import java.util.List; + +/** + * 拼团商品响应体 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class CombinationDetailResponse implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "拼团列表") + private List pinkList; + + @ApiModelProperty(value = "拼团成功列表") + private List pinkOkList; + + @ApiModelProperty(value = "拼团完成的商品总件数") + private Integer pinkOkSum; + + @ApiModelProperty(value = "拼团商品信息") + private CombinationDetailH5Response storeCombination; + + @ApiModelProperty(value = "商品规格") + private List productAttr; + + @ApiModelProperty(value = "商品规格值") + private HashMap productValue; + + @ApiModelProperty(value = "收藏标识") + private Boolean userCollect; + + @ApiModelProperty(value = "主商品状态:normal-正常,sellOut-售罄,soldOut-下架,delete-删除") + private String masterStatus; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/CombinationHeaderResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/CombinationHeaderResponse.java new file mode 100644 index 0000000..163c906 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/CombinationHeaderResponse.java @@ -0,0 +1,38 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.util.HashMap; +import java.util.List; + +/** + * 拼团商品列表header响应对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="CombinationHeaderResponse对象", description="拼团商品列表header响应对象") +public class CombinationHeaderResponse { + + @ApiModelProperty(value = "拼团7位用户头像") + private List avatarList; + + @ApiModelProperty(value = "拼团总人数") + private Integer totalPeople; + + @ApiModelProperty(value = "拼团banner数组") + private List> bannerList; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/CombinationIndexResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/CombinationIndexResponse.java new file mode 100644 index 0000000..ed62ea8 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/CombinationIndexResponse.java @@ -0,0 +1,39 @@ +package com.zbkj.common.response; + +import com.zbkj.common.model.combination.StoreCombination; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.util.List; + +/** + * 拼团首页响应对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="CombinationIndexResponse对象", description="拼团首页响应对象") +public class CombinationIndexResponse { + + @ApiModelProperty(value = "拼团3位用户头像") + private List avatarList; + + @ApiModelProperty(value = "拼团总人数") + private Integer totalPeople; + + @ApiModelProperty(value = "拼团商品列表") + private List productList; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/CommonResult.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/CommonResult.java new file mode 100644 index 0000000..c0e6498 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/CommonResult.java @@ -0,0 +1,192 @@ +package com.zbkj.common.response; + +import com.zbkj.common.vo.MyRecord; +import com.zbkj.common.exception.ExceptionCodeEnum; +import com.zbkj.common.exception.ExceptionHandler; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * 公共返回对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class CommonResult { + private long code; + private String message; + private T data; + + protected CommonResult() { + } + + protected CommonResult(long code, String message, T data) { + this.code = code; + this.message = message; + this.data = data; + } + + /** + * 成功返回结果 + */ + public static CommonResult success() { + return new CommonResult(ExceptionCodeEnum.SUCCESS.getCode(), ExceptionCodeEnum.SUCCESS.getMessage(), null); + } + + /** + * 成功返回结果 + */ + public static CommonResult success(String message) { + return new CommonResult(ExceptionCodeEnum.SUCCESS.getCode(), message, null); + } + + /** + * 成功返回结果 + * + * @param data 获取的数据 + */ + public static CommonResult success(T data) { + return new CommonResult(ExceptionCodeEnum.SUCCESS.getCode(), ExceptionCodeEnum.SUCCESS.getMessage(), data); + } + + /** + * 成功返回结果 + * + * @param record 获取的数据 + */ + public static CommonResult> success(MyRecord record) { + return new CommonResult<>(ExceptionCodeEnum.SUCCESS.getCode(), ExceptionCodeEnum.SUCCESS.getMessage(), record.getColumns()); + } + + /** + * 成功返回结果 + * + * @param recordList 获取的数据 + */ + public static CommonResult>> success(List recordList) { + List> list = new ArrayList<>(); + recordList.forEach(i -> { + list.add(i.getColumns()); + }); + return new CommonResult<>(ExceptionCodeEnum.SUCCESS.getCode(), ExceptionCodeEnum.SUCCESS.getMessage(), list); + } + + /** + * 成功返回结果 + * + * @param data 获取的数据 + * @param message 提示信息 + */ + public static CommonResult success(T data, String message) { + return new CommonResult(ExceptionCodeEnum.SUCCESS.getCode(), message, data); + } + + /** + * 失败返回结果 + * @param errorCode 错误码 + */ + public static CommonResult failed(ExceptionHandler errorCode) { + System.out.println("errorCode1:" + errorCode); + return new CommonResult(errorCode.getCode(), errorCode.getMessage(), null); + } + + /** + * 失败返回结果 + * @param errorCode 错误码 + * @param message 错误信息 + */ + public static CommonResult failed(ExceptionHandler errorCode,String message) { + System.out.println("errorCode2:" + errorCode); + return new CommonResult(errorCode.getCode(), message, null); + } + + /** + * 失败返回结果 + * @param message 提示信息 + */ + public static CommonResult failed(String message) { + return new CommonResult(ExceptionCodeEnum.FAILED.getCode(), message, null); + } + + /** + * 失败返回结果 + */ + public static CommonResult failed() { + return failed(ExceptionCodeEnum.FAILED); + } + + /** + * 参数验证失败返回结果 + */ + public static CommonResult validateFailed() { + return failed(ExceptionCodeEnum.VALIDATE_FAILED); + } + + /** + * 参数验证失败返回结果 + * @param message 提示信息 + */ + public static CommonResult validateFailed(String message) { + return new CommonResult(ExceptionCodeEnum.VALIDATE_FAILED.getCode(), message, null); + } + + /** + * 未登录返回结果 + */ + public static CommonResult unauthorized(T data) { + return new CommonResult(ExceptionCodeEnum.UNAUTHORIZED.getCode(), ExceptionCodeEnum.UNAUTHORIZED.getMessage(), data); + } + + /** + * 未登录返回结果 + */ + public static CommonResult unauthorized() { + return new CommonResult(ExceptionCodeEnum.UNAUTHORIZED.getCode(), ExceptionCodeEnum.UNAUTHORIZED.getMessage(), null); + } + + /** + * 没有权限查看 + */ + public static CommonResult forbidden() { + return new CommonResult(ExceptionCodeEnum.FORBIDDEN.getCode(), ExceptionCodeEnum.FORBIDDEN.getMessage(), null); + } + + /** + * 未授权返回结果 + */ + public static CommonResult forbidden(T data) { + return new CommonResult(ExceptionCodeEnum.FORBIDDEN.getCode(), ExceptionCodeEnum.FORBIDDEN.getMessage(), data); + } + + public long getCode() { + return code; + } + + public void setCode(long code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public T getData() { + return data; + } + + public void setData(T data) { + this.data = data; + } +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/ComputedOrderPriceResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/ComputedOrderPriceResponse.java new file mode 100644 index 0000000..5ed4a13 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/ComputedOrderPriceResponse.java @@ -0,0 +1,55 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 计算订单价格响应对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="ComputedOrderPriceResponse对象", description="计算订单价格响应对象") +public class ComputedOrderPriceResponse implements Serializable { + + private static final long serialVersionUID = 7282892323898493847L; + + @ApiModelProperty(value = "优惠券优惠金额") + private BigDecimal couponFee; + + @ApiModelProperty(value = "积分抵扣金额") + private BigDecimal deductionPrice; + + @ApiModelProperty(value = "运费金额") + private BigDecimal freightFee; + + @ApiModelProperty(value = "实际支付金额") + private BigDecimal payFee; + + @ApiModelProperty(value = "商品总金额") + private BigDecimal proTotalFee; + + @ApiModelProperty(value = "剩余积分") + private Integer surplusIntegral; + + @ApiModelProperty(value = "是否使用积分") + private Boolean useIntegral; + + @ApiModelProperty(value = "使用的积分") + private Integer usedIntegral; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/GoPinkResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/GoPinkResponse.java new file mode 100644 index 0000000..253dfd8 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/GoPinkResponse.java @@ -0,0 +1,52 @@ +package com.zbkj.common.response; + +import com.zbkj.common.model.user.User; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * 去拼团响应体 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class GoPinkResponse implements Serializable { + + private static final long serialVersionUID = 1962453930812558918L; + + /** 拼团剩余人数 **/ + private Integer count; + + /** 当前拼团订单号 **/ + private String currentPinkOrder; + + /** 判断拼团是否完成 **/ + private Integer isOk; + + /** 团员列表 **/ + private List pinkAll; + + /** 拼团是否成功 0未成功 1成功 **/ + private Integer pinkBool; + + /** 当前用户是否在团内 0未在 1在 **/ + private Integer userBool; + + /** 团长信息 **/ + private StorePinkResponse pinkT; + + /** 当前拼团信息 **/ + private StoreCombinationResponse storeCombination; + + /** 当前用户信息 **/ + private User userInfo; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/HomeOperatingDataResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/HomeOperatingDataResponse.java new file mode 100644 index 0000000..6eda5ff --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/HomeOperatingDataResponse.java @@ -0,0 +1,60 @@ +package com.zbkj.common.response; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 首页经营数据响应对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="HomeOperatingDataResponse对象", description="首页经营数据响应对象") +public class HomeOperatingDataResponse implements Serializable { + + private static final long serialVersionUID = -1486435421582495511L; + + @ApiModelProperty(value = "待发货订单数量") + private Integer notShippingOrderNum; + + @ApiModelProperty(value = "退款中订单数量") + private Integer refundingOrderNum; + + @ApiModelProperty(value = "待核销订单数量") + private Integer notWriteOffOrderNum; + + @ApiModelProperty(value = "库存预警商品数量") + private Integer vigilanceInventoryNum; + + @ApiModelProperty(value = "上架商品数量") + private Integer onSaleProductNum; + + @ApiModelProperty(value = "仓库中商品数量") + private Integer notSaleProductNum; + + @ApiModelProperty(value = "提现申请待审核数量") + private Integer notAuditNum; + + @ApiModelProperty(value = "用户充值总金额") + private BigDecimal totalRechargeAmount; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/HomeRateResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/HomeRateResponse.java new file mode 100644 index 0000000..a4d6729 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/HomeRateResponse.java @@ -0,0 +1,56 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 主页统计数据对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="HomeRateResponse对象", description="主页统计数据对象") +public class HomeRateResponse implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "今日销售额") + private Object sales; + + @ApiModelProperty(value = "昨日销售额") + private Object yesterdaySales; + + @ApiModelProperty(value = "今日访问量") + private Object pageviews; + + @ApiModelProperty(value = "昨日访问量") + private Object yesterdayPageviews; + + @ApiModelProperty(value = "今日订单量") + private Object orderNum; + + @ApiModelProperty(value = "昨日订单量") + private Object yesterdayOrderNum; + + @ApiModelProperty(value = "今日新增用户") + private Object newUserNum; + + @ApiModelProperty(value = "昨日新增用户") + private Object yesterdayNewUserNum; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/IndexInfoResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/IndexInfoResponse.java new file mode 100644 index 0000000..cb4f8d9 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/IndexInfoResponse.java @@ -0,0 +1,71 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.HashMap; +import java.util.List; + +/** + * 首页信息Response + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="IndexInfoResponse对象", description="用户登录返回数据") +public class IndexInfoResponse implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "首页banner滚动图") + private List> banner; + + @ApiModelProperty(value = "导航模块") + private List> menus; + + @ApiModelProperty(value = "新闻简报消息滚动") + private List> roll; + + @ApiModelProperty(value = "企业logo") + private String logoUrl; + + @ApiModelProperty(value = "是否关注公众号") + private boolean subscribe; + + @ApiModelProperty(value = "首页超值爆款") + private List> explosiveMoney; + + @ApiModelProperty(value = "首页精品推荐图片") + private List> bastBanner; + + @ApiModelProperty(value = "云智服H5 url") + private String yzfUrl; + + @ApiModelProperty(value = "商品分类页配置") + private String categoryPageConfig; + + @ApiModelProperty(value = "是否隐藏一级分类") + private String isShowCategory; + + @ApiModelProperty(value = "客服电话") + private String consumerHotline; + + @ApiModelProperty(value = "客服电话服务开关") + private String telephoneServiceSwitch; + + @ApiModelProperty(value = "首页商品列表模板配置") + private String homePageSaleListStyle; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/IndexProductResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/IndexProductResponse.java new file mode 100644 index 0000000..b99ef98 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/IndexProductResponse.java @@ -0,0 +1,68 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; + +/** + * 首页商品对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="IndexProductResponse对象", description="首页商品对象") +public class IndexProductResponse { + + + @ApiModelProperty(value = "商品id") + private Integer id; + + @ApiModelProperty(value = "商品图片") + private String image; + + @ApiModelProperty(value = "商品名称") + private String storeName; + + @ApiModelProperty(value = "商品价格") + private BigDecimal price; + + @ApiModelProperty(value = "市场价") + private BigDecimal otPrice; + + @ApiModelProperty(value = "销量") + private Integer sales; + + @ApiModelProperty(value = "虚拟销量") + private Integer ficti; + + @ApiModelProperty(value = "单位名") + private String unitName; + + @ApiModelProperty(value = "活动显示排序0=默认,1=秒杀,2=砍价,3=拼团") + private String activity; + + @ApiModelProperty(value = "为移动端特定参数") + private ProductActivityItemResponse activityH5; + + @ApiModelProperty(value = "购物车商品数量") + private Integer cartNum; + + @ApiModelProperty(value = "库存") + private Integer stock; + + @ApiModelProperty(value = "展示图") + private String flatPattern; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/IntegralUserResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/IntegralUserResponse.java new file mode 100644 index 0000000..38e813a --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/IntegralUserResponse.java @@ -0,0 +1,80 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 用户积分响应对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="IntegralUserResponse对象", description="用户积分响应对象") +public class IntegralUserResponse implements Serializable { + + private static final long serialVersionUID=1L; + +// @ApiModelProperty(value = "用户id") +// private Integer uid; +// +// @ApiModelProperty(value = "用户昵称") +// private String nickname; +// +// @ApiModelProperty(value = "用户头像") +// private String avatar; +// +// @ApiModelProperty(value = "用户余额") +// private BigDecimal nowMoney; +// + @ApiModelProperty(value = "用户剩余积分") + private Integer integral; +// +// @ApiModelProperty(value = "连续签到天数") +// private Integer signNum; +// +// @ApiModelProperty(value = "是否为推广员") +// private Boolean isPromoter; +// +// @ApiModelProperty(value = "用户购买次数") +// private Integer payCount; +// +// @ApiModelProperty(value = "下级人数") +// private Integer spreadCount; +// +// @ApiModelProperty(value = "累计签到次数") +// private Integer sumSignDay; +// +// @ApiModelProperty(value = "今天是否签到") +// private Boolean isDaySign; +// +// @ApiModelProperty(value = "昨天是否签到") +// private Boolean isYesterdaySign; + + @ApiModelProperty(value = "累计总积分") + private Integer sumIntegral; + + @ApiModelProperty(value = "累计抵扣积分") + private Integer deductionIntegral; + +// @ApiModelProperty(value = "今日获得累计积分") +// private Integer nowIntegral; + + @ApiModelProperty(value = "冻结的积分") + private Integer frozenIntegral; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/LoginResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/LoginResponse.java new file mode 100644 index 0000000..19b08cc --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/LoginResponse.java @@ -0,0 +1,48 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * Login Response + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="LoginResponse", description="用户登录返回数据") +public class LoginResponse implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "用户登录密钥") + private String token; + + @ApiModelProperty(value = "状态:login-登录,register-注册,start-注册起始页") + private String type; + + @ApiModelProperty(value = "注册key") + private String key; + + @ApiModelProperty(value = "登录用户Uid") + private Integer uid; + + @ApiModelProperty(value = "登录用户昵称") + private String nikeName; + + @ApiModelProperty(value = "登录用户手机号") + private String phone; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/MenusResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/MenusResponse.java new file mode 100644 index 0000000..7431039 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/MenusResponse.java @@ -0,0 +1,58 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.List; + +/** + * 系统左侧菜单对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="MenusResponse对象", description="系统左侧菜单对象") +public class MenusResponse implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "ID") + private Integer id; + + @ApiModelProperty(value = "父级ID") + private Integer pid; + + @ApiModelProperty(value = "名称") + private String name; + + @ApiModelProperty(value = "icon") + private String icon; + + @ApiModelProperty(value = "权限标识") + private String perms; + + @ApiModelProperty(value = "组件路径") + private String component; + + @ApiModelProperty(value = "类型,M-目录,C-菜单,A-按钮") + private String menuType; + + @ApiModelProperty(value = "排序") + private Integer sort; + + @ApiModelProperty(value = "子对象列表") + private List childList; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/MonitorResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/MonitorResponse.java new file mode 100644 index 0000000..e369a62 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/MonitorResponse.java @@ -0,0 +1,57 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 用户账单表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="MonitorResponse对象", description="资金监控对象") +public class MonitorResponse implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "用户账单id") + private Integer id; + + @ApiModelProperty(value = "用户uid") + private Integer uid; + + @ApiModelProperty(value = "0 = 支出 1 = 获得") + private int pm; + + @ApiModelProperty(value = "账单标题") + private String title; + + @ApiModelProperty(value = "明细数字") + private BigDecimal number; + + @ApiModelProperty(value = "备注") + private String mark; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "用户昵称") + private String nickName; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/NotificationInfoResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/NotificationInfoResponse.java new file mode 100644 index 0000000..66c0078 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/NotificationInfoResponse.java @@ -0,0 +1,53 @@ +package com.zbkj.common.response; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + +/** + * 系统通知详情相应对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="NotificationInfoResponse对象", description="系统通知详情相应对象") +public class NotificationInfoResponse implements Serializable { + + private static final long serialVersionUID = -3214167698001861141L; + + @ApiModelProperty(value = "id") + private Integer id; + + @ApiModelProperty(value = "模板id(公用)") + private String tempId; + + @ApiModelProperty(value = "模板说明(短信)") + private String title; + + @ApiModelProperty(value = "模板编号(公用)") + private String tempKey; + + @ApiModelProperty(value = "内容(公用)") + private String content; + + @ApiModelProperty(value = "模板名") + private String name; + + @ApiModelProperty(value = "状态,1-开启,2-关闭") + private Integer status; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/OrderBrokerageData.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/OrderBrokerageData.java new file mode 100644 index 0000000..97fe3fe --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/OrderBrokerageData.java @@ -0,0 +1,24 @@ +package com.zbkj.common.response; + +import lombok.Data; + +import java.math.BigDecimal; + +/** + * 订单佣金统计数 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class OrderBrokerageData { + + private Integer num; + private BigDecimal price; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/OrderDataResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/OrderDataResponse.java new file mode 100644 index 0000000..a032233 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/OrderDataResponse.java @@ -0,0 +1,58 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 订单数量响应对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="OrderDataResponse对象", description="订单数量响应对象") +public class OrderDataResponse implements Serializable { + + private static final long serialVersionUID = 1387727608277207652L; + + @ApiModelProperty(value = "已完成订单数量") + private Integer completeCount; + + @ApiModelProperty(value = "待核销订单数量") + private Integer evaluatedCount; + +// @ApiModelProperty(value = "用户昵称") +// private Integer verificationCount; + + @ApiModelProperty(value = "支付订单总数") + private Integer orderCount; + + @ApiModelProperty(value = "待收货订单数量") + private Integer receivedCount; + + @ApiModelProperty(value = "退款订单数量") + private Integer refundCount; + + @ApiModelProperty(value = "总消费钱数") + private BigDecimal sumPrice; + + @ApiModelProperty(value = "未支付订单数量") + private Integer unPaidCount; + + @ApiModelProperty(value = "待发货订单数量") + private Integer unShippedCount; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/OrderDetailResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/OrderDetailResponse.java new file mode 100644 index 0000000..62d62f4 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/OrderDetailResponse.java @@ -0,0 +1,107 @@ +package com.zbkj.common.response; + +import com.zbkj.common.model.order.StoreOrder; +import com.zbkj.common.vo.StoreOrderInfoOldVo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * 订单列表响应对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="OrderDetailResponse对象", description="订单列表响应对象") +public class OrderDetailResponse implements Serializable { + + private static final long serialVersionUID = 1387727608277207652L; + + private StoreOrder storeOrder; + private List cartInfo; + private String statusPic; + private Integer offlinePayStatus; + + + @ApiModelProperty(value = "订单id") + private Integer id; + + @ApiModelProperty(value = "订单编号") + private String orderId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "支付状态") + private Boolean paid; + + @ApiModelProperty(value = "支付时间") + private Date payTime; + + @ApiModelProperty(value = "支付金额") + private BigDecimal payPrice; + + @ApiModelProperty(value = "订单状态(0:待发货;1:待收货;2:已收货,待评价;3:已完成;)") + private Integer status; + + @ApiModelProperty(value = "订单状态") + private String orderStatus; + + @ApiModelProperty(value = "订单商品总数") + private Integer totalNum; + + @ApiModelProperty(value = "支付邮费") + private BigDecimal payPostage; + + @ApiModelProperty(value = "0 未退款 1 申请中 2 已退款 3 退款中") + private Integer refundStatus; + + @ApiModelProperty(value = "快递名称/送货人姓名") + private String deliveryName; + + @ApiModelProperty(value = "发货类型") + private String deliveryType; + + @ApiModelProperty(value = "快递单号/手机号") + private String deliveryId; + + @ApiModelProperty(value = "拼团id 0没有拼团") + private Integer pinkId; + + @ApiModelProperty(value = "砍价id") + private Integer bargainId; + + @ApiModelProperty(value = "核销码") + private String verifyCode; + + @ApiModelProperty(value = "门店id") + private Integer storeId; + + @ApiModelProperty(value = "配送方式 1=快递 ,2=门店自提") + private Integer shippingType; + + @ApiModelProperty(value = "活动类型") + private String activityType; + + @ApiModelProperty(value = "订单详情对象列表") + private List orderInfoList; + + @ApiModelProperty(value = "订单类型:0-普通订单,1-视频号订单") + private Integer type; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/OrderInfoResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/OrderInfoResponse.java new file mode 100644 index 0000000..9367b0a --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/OrderInfoResponse.java @@ -0,0 +1,64 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 订单详情响应对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="OrderInfoResponse对象", description="订单详情响应对象") +public class OrderInfoResponse implements Serializable { + + private static final long serialVersionUID=1L; + +// @ApiModelProperty(value = "订单id") +// private Integer orderId; + @ApiModelProperty(value = "attrId") + private Integer attrId; + + @ApiModelProperty(value = "商品ID") + private Integer productId; + +// @ApiModelProperty(value = "购买东西的详细信息") +// private StoreCartResponse info; + + @ApiModelProperty(value = "商品数量") + private Integer cartNum; + +// @ApiModelProperty(value = "唯一id") +// @TableField(value = "`unique`") +// private String unique; + + @ApiModelProperty(value = "商品图片") + private String image; + + @ApiModelProperty(value = "商品名称") + private String storeName; + + @ApiModelProperty(value = "商品价格") + private BigDecimal price; + + @ApiModelProperty(value = "是否评价") + private Integer isReply; + + @ApiModelProperty(value = "规格属性值") + private String sku; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/OrderPayResultResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/OrderPayResultResponse.java new file mode 100644 index 0000000..dc1300c --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/OrderPayResultResponse.java @@ -0,0 +1,48 @@ +package com.zbkj.common.response; + +import com.zbkj.common.vo.AliPayJsResultVo; +import com.zbkj.common.vo.WxPayJsResultVo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 订单支付结果 Response + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="OrderPayResultResponse对象", description="订单支付结果响应对象") +public class OrderPayResultResponse { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "支付状态") + private Boolean status; + + @ApiModelProperty(value = "微信调起支付参数对象") + private WxPayJsResultVo jsConfig; + + @ApiModelProperty(value = "支付类型") + private String payType; + + @ApiModelProperty(value = "订单编号") + private String orderNo; + + @ApiModelProperty(value = "订单支付宝支付") + private String alipayRequest; + + @ApiModelProperty(value = "支付宝调起支付参数对象(app支付专用)") + private AliPayJsResultVo aliPayConfig; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/OrderProductReplyResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/OrderProductReplyResponse.java new file mode 100644 index 0000000..d650a1d --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/OrderProductReplyResponse.java @@ -0,0 +1,51 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import io.swagger.models.auth.In; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 评价商品页响应对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="OrderProductReplyResponse对象", description="评价商品页响应对象") +public class OrderProductReplyResponse implements Serializable { + + private static final long serialVersionUID = -1926585407216207845L; + + @ApiModelProperty(value = "购买数量") + private Integer cartNum; + + @ApiModelProperty(value = "价格") + private BigDecimal truePrice; + + @ApiModelProperty(value = "商品名称") + private String storeName; + + @ApiModelProperty(value = "图片") + private String image; + + @ApiModelProperty(value = "商品编号") + private Integer productId; + + @ApiModelProperty(value = "规格sku") + private String sku; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/PreOrderResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/PreOrderResponse.java new file mode 100644 index 0000000..4023d44 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/PreOrderResponse.java @@ -0,0 +1,50 @@ +package com.zbkj.common.response; + +import com.zbkj.common.vo.OrderInfoVo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 预下单响应对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="PreOrderResponse对象", description="预下单响应对象") +public class PreOrderResponse implements Serializable { + + private static final long serialVersionUID = 7282892323898493847L; + + @ApiModelProperty(value = "订单详情对象") + private OrderInfoVo orderInfoVo; + + @ApiModelProperty(value = "预下单订单号") + private String preOrderNo; + + @ApiModelProperty(value = "门店自提是否开启") + private String storeSelfMention; + + @ApiModelProperty(value = "余额支付 1 开启 2 关闭") + private String yuePayStatus; + + @ApiModelProperty(value = "微信支付 1 开启 0 关闭") + private String payWeixinOpen; + + @ApiModelProperty(value = "支付宝支付 1 开启 0 关闭") + private String aliPayStatus; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/ProductActivityItemResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/ProductActivityItemResponse.java new file mode 100644 index 0000000..b4aed07 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/ProductActivityItemResponse.java @@ -0,0 +1,29 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 商品所参与的活动类型 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class ProductActivityItemResponse { + + @ApiModelProperty(value = "参与活动id") + private Integer id; + + @ApiModelProperty(value = "活动结束时间") + private Integer time; + + @ApiModelProperty(value = "活动参与类型:1=秒杀,2=砍价,3=拼团") + private String type; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/ProductDetailReplyResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/ProductDetailReplyResponse.java new file mode 100644 index 0000000..c70ab37 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/ProductDetailReplyResponse.java @@ -0,0 +1,39 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 商品详情评论响应对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="ProductDetailReplyResponse对象", description="商品详情评论响应对象") +public class ProductDetailReplyResponse implements Serializable { + + private static final long serialVersionUID = 8822745472328151094L; + + @ApiModelProperty(value = "评论总数") + private Integer sumCount; + + @ApiModelProperty(value = "好评率") + private String replyChance; + + @ApiModelProperty(value = "最后一条评论信息") + private ProductReplyResponse productReply; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/ProductDetailResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/ProductDetailResponse.java new file mode 100644 index 0000000..9b12e40 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/ProductDetailResponse.java @@ -0,0 +1,52 @@ +package com.zbkj.common.response; + +import com.zbkj.common.model.product.StoreProduct; +import com.zbkj.common.model.product.StoreProductAttr; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.HashMap; +import java.util.List; + +/** + * 商品详情 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="ProductDetailResponse对象", description="商品详情H5") +public class ProductDetailResponse implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "产品属性") + private List productAttr; + + @ApiModelProperty(value = "商品属性详情") + private HashMap productValue; + + @ApiModelProperty(value = "返佣金额区间") + private String priceName; + + @ApiModelProperty(value = "为移动端特定参数 所有参与的活动") + private List activityAllH5; + + @ApiModelProperty(value = "商品信息") + private StoreProduct productInfo; + + @ApiModelProperty(value = "收藏标识") + private Boolean userCollect; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/ProductRankingResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/ProductRankingResponse.java new file mode 100644 index 0000000..8055be7 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/ProductRankingResponse.java @@ -0,0 +1,58 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 商品排行响应对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="ProductRankingResponse对象", description="商品排行响应对象") +public class ProductRankingResponse implements Serializable { + + private static final long serialVersionUID = 3362714265772774491L; + + @ApiModelProperty(value = "顺序") + private Integer sort; + + @ApiModelProperty(value = "商品id") + private Integer productId; + + @ApiModelProperty(value = "浏览量") + private Integer pageView; + + @ApiModelProperty(value = "收藏量") + private Integer collectNum; + + @ApiModelProperty(value = "加购件数") + private Integer addCartNum; + + @ApiModelProperty(value = "下单商品数(销售件数)") + private Integer salesNum; + + @ApiModelProperty(value = "销售额") + private BigDecimal salesAmount; + + @ApiModelProperty(value = "商品名称") + private String proName; + + @ApiModelProperty(value = "商品图片") + private String image; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/ProductReplyResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/ProductReplyResponse.java new file mode 100644 index 0000000..662c7e9 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/ProductReplyResponse.java @@ -0,0 +1,60 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.util.Date; +import java.util.List; + +/** + * 商品评论H5详情响应对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="ProductReplyResponse对象", description="商品评论H5详情响应对象") +public class ProductReplyResponse { + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "评论ID") + private Integer id; + + @ApiModelProperty(value = "用户ID") + private Integer uid; + + @ApiModelProperty(value = "商品分数") + private Integer score; + + @ApiModelProperty(value = "评论内容") + private String comment; + + @ApiModelProperty(value = "评论图片") + private List pics; + + @ApiModelProperty(value = "管理员回复内容") + private String merchantReplyContent; + + @ApiModelProperty(value = "用户名称") + private String nickname; + + @ApiModelProperty(value = "用户头像") + private String avatar; + + @ApiModelProperty(value = "评论时间") + private Date createTime; + + @ApiModelProperty(value = "商品规格属性值") + private String sku; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/RoleInfoResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/RoleInfoResponse.java new file mode 100644 index 0000000..eb6928d --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/RoleInfoResponse.java @@ -0,0 +1,52 @@ +package com.zbkj.common.response; + +import com.zbkj.common.vo.MenuCheckVo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * 角色详情响应对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="RoleInfoResponse对象", description="角色详情响应对象") +public class RoleInfoResponse implements Serializable { + + private static final long serialVersionUID = -6123516979502057197L; + + @ApiModelProperty(value = "角色id") + private Integer id; + + @ApiModelProperty(value = "角色名称") + private String roleName; + + @ApiModelProperty(value = "状态:0-关闭,1-正常") + private Boolean status; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + + @ApiModelProperty(value = "修改时间") + private List menuList; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SecKillDetailH5Response.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SecKillDetailH5Response.java new file mode 100644 index 0000000..5a04d7a --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SecKillDetailH5Response.java @@ -0,0 +1,98 @@ +package com.zbkj.common.response; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 秒杀商品移动端对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="StoreSecKillH5Response对象", description="秒杀商品移动端对象") +public class SecKillDetailH5Response implements Serializable { + + private static final long serialVersionUID = -885733985825623484L; + + @ApiModelProperty(value = "商品秒杀产品表id") + private Integer id; + + @ApiModelProperty(value = "商品id") + private Integer productId; + + @ApiModelProperty(value = "推荐图") + private String image; + + @ApiModelProperty(value = "轮播图") + private String sliderImage; + + @ApiModelProperty(value = "秒杀商品名称") + private String storeName; + + @ApiModelProperty(value = "简介") + private String storeInfo; + + @ApiModelProperty(value = "价格") + private BigDecimal price; + + @ApiModelProperty(value = "原价") + private BigDecimal otPrice; + + @ApiModelProperty(value = "销量") + private Integer sales; + + @ApiModelProperty(value = "单位名") + private String unitName; + + @ApiModelProperty(value = "内容") + private String description; + + @ApiModelProperty(value = "开始时间") + private Date startTime; + + @ApiModelProperty(value = "结束时间") + private Date stopTime; + + @ApiModelProperty(value = "最多秒杀几个") + private Integer num; + + @ApiModelProperty(value = "时间段ID") + private Integer timeId; + + @ApiModelProperty(value = "限购总数 随销量递减") + private Integer quota; + + @ApiModelProperty(value = "限购总数显示 不变") + private Integer quotaShow; + + @ApiModelProperty(value = "虚拟销量") + private Integer ficti; + + @ApiModelProperty(value = "秒杀状态:0-关闭,1-即将开始,2-进行中,-1 - 已结束") + private Integer seckillStatus; + + @ApiModelProperty(value = "商品详情") + private String content; + + @ApiModelProperty(value = "结束时间(前端用)") + private String timeSwap; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SecKillResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SecKillResponse.java new file mode 100644 index 0000000..615d84b --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SecKillResponse.java @@ -0,0 +1,59 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 秒杀Header时间header响应对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="SecKillResponse对象", description="秒杀Header时间header响应对象") +public class SecKillResponse { + + public SecKillResponse() { + } + + public SecKillResponse(Integer id, String slide, String statusName, String time, int status, String timeSwap) { + this.id = id; + this.slide = slide; + this.statusName = statusName; + this.time = time; + this.status = status; + this.timeSwap = timeSwap; + } + + @ApiModelProperty(value = "秒杀时段id") + private Integer id; + + @ApiModelProperty(value = "秒杀时段轮播图") + private String slide; + + @ApiModelProperty(value = "秒杀时段状态名称") + private String statusName; // 已结束 抢购中 即将开始 + + @ApiModelProperty(value = "秒杀时段状态") + private int status; + + @ApiModelProperty(value = "秒杀时段时间信息") + private String time; + + @ApiModelProperty(value = "秒杀时段结束时间") + private String timeSwap; + + @ApiModelProperty(value = "是否选中") + private Boolean isCheck = false; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SeckillIndexResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SeckillIndexResponse.java new file mode 100644 index 0000000..20106d5 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SeckillIndexResponse.java @@ -0,0 +1,35 @@ +package com.zbkj.common.response; + +import com.zbkj.common.model.seckill.StoreSeckill; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.util.List; + +/** + * 秒杀首页响应对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="SeckillIndexResponse对象", description="秒杀首页响应对象") +public class SeckillIndexResponse { + + @ApiModelProperty(value = "秒杀时段信息") + private SecKillResponse secKillResponse; + + @ApiModelProperty(value = "秒杀商品信息") + private List productList; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/ShoppingProductDataResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/ShoppingProductDataResponse.java new file mode 100644 index 0000000..1b46cca --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/ShoppingProductDataResponse.java @@ -0,0 +1,67 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 商城商品统计数据对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="ShoppingProductDataResponse对象", description="商城商品统计数据对象") +public class ShoppingProductDataResponse implements Serializable { + + private static final long serialVersionUID = -2853994865375523003L; + + @ApiModelProperty(value = "新增商品数量") + private Integer newProductNum; + + @ApiModelProperty(value = "新增商品数量环比") + private String newProductNumRatio; + + @ApiModelProperty(value = "浏览量") + private Integer pageView; + + @ApiModelProperty(value = "浏览量环比") + private String pageViewRatio; + + @ApiModelProperty(value = "收藏量") + private Integer collectNum; + + @ApiModelProperty(value = "收藏量环比") + private String collectNumRatio; + + @ApiModelProperty(value = "加购件数") + private Integer addCartNum; + + @ApiModelProperty(value = "加购件数环比") + private String addCartNumRatio; + + @ApiModelProperty(value = "交易总件数") + private Integer orderProductNum; + + @ApiModelProperty(value = "交易总件数环比") + private String orderProductNumRatio; + + @ApiModelProperty(value = "交易成功件数") + private Integer orderSuccessProductNum; + + @ApiModelProperty(value = "交易成功件数环比") + private String orderSuccessProductNumRatio; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SpreadCommissionDetailResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SpreadCommissionDetailResponse.java new file mode 100644 index 0000000..1678d4e --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SpreadCommissionDetailResponse.java @@ -0,0 +1,47 @@ +package com.zbkj.common.response; + +import com.zbkj.common.model.user.UserBrokerageRecord; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.List; + +/** + * 推广佣金明细响应对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value = "SpreadCommissionDetailResponse对象", description = "推广佣金明细响应对象") +public class SpreadCommissionDetailResponse implements Serializable { + + private static final long serialVersionUID = 1L; + + public SpreadCommissionDetailResponse() {} + + public SpreadCommissionDetailResponse(String date, List list) { + this.date = date; + this.list = list; + } + + @ApiModelProperty(value = "月份") + private String date; + + @ApiModelProperty(value = "数据") + private List list; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SpreadOrderResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SpreadOrderResponse.java new file mode 100644 index 0000000..d18d256 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SpreadOrderResponse.java @@ -0,0 +1,49 @@ +package com.zbkj.common.response; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 推广订单响应体 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="SpreadOrderResponse对象", description="推广订单响应体") +public class SpreadOrderResponse { + + @ApiModelProperty(value = "订单ID") + private Integer id; + + @ApiModelProperty(value = "订单号") + private String orderId; + + @ApiModelProperty(value = "用户姓名") + private String realName; + + @ApiModelProperty(value = "用户电话") + private String userPhone; + + @ApiModelProperty(value = "佣金金额") + private BigDecimal price; + + @ApiModelProperty(value = "更新时间") + private Date updateTime; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SpreadUserResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SpreadUserResponse.java new file mode 100644 index 0000000..467e99b --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SpreadUserResponse.java @@ -0,0 +1,80 @@ +package com.zbkj.common.response; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 推广用户响应体 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class SpreadUserResponse { + + @ApiModelProperty(value = "用户id") + private Integer uid; + + @ApiModelProperty(value = "真实姓名") + private String realName; + + @ApiModelProperty(value = "用户昵称") + private String nickname; + + @ApiModelProperty(value = "用户头像") + private String avatar; + + @ApiModelProperty(value = "手机号码") + private String phone; + + @ApiModelProperty(value = "佣金金额,未提现金额") + private BigDecimal brokeragePrice; + + @ApiModelProperty(value = "推广人id") + private Integer spreadUid; + + @ApiModelProperty(value = "上级推广员名称") + private String spreadNickname; + + @ApiModelProperty(value = "用户购买次数") + private Integer payCount; + + @ApiModelProperty(value = "推广用户数") + private Integer spreadCount; + + @ApiModelProperty(value = "推广订单数") + private Integer spreadOrderNum; + + @ApiModelProperty(value = "推广订单额") + private BigDecimal spreadOrderTotalPrice; + + @ApiModelProperty(value = "佣金总金额") + private BigDecimal totalBrokeragePrice; + + @ApiModelProperty(value = "推广用户数量") + private int spreadPeopleCount; + + @ApiModelProperty(value = "已提现金额") + private BigDecimal extractCountPrice; + + @ApiModelProperty(value = "已提现次数") + private Integer extractCountNum; + + @ApiModelProperty(value = "冻结佣金") + private BigDecimal freezeBrokeragePrice; + + @ApiModelProperty(value = "成为分销员时间") + private Date promoterTime; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreBargainDetailResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreBargainDetailResponse.java new file mode 100644 index 0000000..f7cfb39 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreBargainDetailResponse.java @@ -0,0 +1,55 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 砍价商品详情响应对象(列表) + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="StoreBargainDetailResponse对象", description="砍价商品详情响应对象(列表)") +public class StoreBargainDetailResponse implements Serializable { + + private static final long serialVersionUID = 969438774401700566L; + + @ApiModelProperty(value = "砍价商品ID") + private Integer id; + + @ApiModelProperty(value = "关联商品ID") + private Integer productId; + + @ApiModelProperty(value = "砍价活动名称") + private String title; + + @ApiModelProperty(value = "砍价活动图片") + private String image; + + @ApiModelProperty(value = "砍价开启时间") + private Long startTime; + + @ApiModelProperty(value = "砍价结束时间") + private Long stopTime; + + @ApiModelProperty(value = "砍价商品最低价") + private BigDecimal minPrice; + + @ApiModelProperty(value = "限购总数") + private Integer quota; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreBargainResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreBargainResponse.java new file mode 100644 index 0000000..090bcd3 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreBargainResponse.java @@ -0,0 +1,152 @@ +package com.zbkj.common.response; + +import com.zbkj.common.model.product.StoreProductAttr; +import com.zbkj.common.request.StoreProductAttrValueRequest; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 砍价商品响应体 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class StoreBargainResponse { + + @ApiModelProperty(value = "砍价商品ID") + private Integer id; + + @ApiModelProperty(value = "关联商品ID") + private Integer productId; + + @ApiModelProperty(value = "砍价活动名称") + private String title; + + @ApiModelProperty(value = "砍价活动图片") + private String image; + + @ApiModelProperty(value = "单位名称") + private String unitName; + + @ApiModelProperty(value = "库存") + private Integer stock; + + @ApiModelProperty(value = "销量") + private Integer sales; + + @ApiModelProperty(value = "砍价商品轮播图") + private String images; + + @ApiModelProperty(value = "砍价开启时间") + private String startTime; + + @ApiModelProperty(value = "砍价结束时间") + private String stopTime; + + @ApiModelProperty(value = "砍价商品名称") + private String storeName; + + @ApiModelProperty(value = "砍价金额") + private BigDecimal price; + + @ApiModelProperty(value = "砍价商品最低价") + private BigDecimal minPrice; + + @ApiModelProperty(value = "每次购买的砍价商品数量") + private Integer num; + + @ApiModelProperty(value = "用户每次砍价的最大金额") + private BigDecimal bargainMaxPrice; + + @ApiModelProperty(value = "用户每次砍价的最小金额") + private BigDecimal bargainMinPrice; + + @ApiModelProperty(value = "用户每次砍价的次数") + private Integer bargainNum; + + @ApiModelProperty(value = "砍价状态 0(到砍价时间不自动开启) 1(到砍价时间自动开启时间)") + private Boolean status; + + @ApiModelProperty(value = "反多少积分") + private Integer giveIntegral; + + @ApiModelProperty(value = "砍价活动简介") + private String info; + + @ApiModelProperty(value = "成本价") + private BigDecimal cost; + + @ApiModelProperty(value = "排序") + private Integer sort; + + @ApiModelProperty(value = "是否推荐0不推荐1推荐") + private Boolean isHot; + + @ApiModelProperty(value = "是否删除 0未删除 1删除") + private Boolean isDel; + + @ApiModelProperty(value = "添加时间") + private String addTime; + + @ApiModelProperty(value = "是否包邮 0不包邮 1包邮") + private Boolean isPostage; + + @ApiModelProperty(value = "邮费") + private BigDecimal postage; + + @ApiModelProperty(value = "砍价规则") + private String rule; + + @ApiModelProperty(value = "砍价商品浏览量") + private Integer look; + + @ApiModelProperty(value = "砍价商品分享量") + private Integer share; + + @ApiModelProperty(value = "运费模板ID") + private Integer tempId; + + @ApiModelProperty(value = "重量") + private BigDecimal weight; + + @ApiModelProperty(value = "体积") + private BigDecimal volume; + + @ApiModelProperty(value = "限购总数") + private Integer quota; + + @ApiModelProperty(value = "限量总数显示") + private Integer quotaShow; + + @ApiModelProperty(value = "限量剩余") + private Integer surplusQuota; + + @ApiModelProperty(value = "帮助砍价好友人数") + private Integer peopleNum; + + @ApiModelProperty(value = "参与人数") + private Long countPeopleAll; + + @ApiModelProperty(value = "帮忙砍价人数") + private Long countPeopleHelp; + + @ApiModelProperty(value = "砍价成功人数") + private Long countPeopleSuccess; + + @ApiModelProperty(value = "商品属性") + private List attr; + + @ApiModelProperty(value = "商品属性详情") + private List attrValue; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreBargainUserHelpResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreBargainUserHelpResponse.java new file mode 100644 index 0000000..df5039e --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreBargainUserHelpResponse.java @@ -0,0 +1,57 @@ +package com.zbkj.common.response; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 砍价用户帮助响应体 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class StoreBargainUserHelpResponse implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "砍价用户帮助表ID") + private Integer id; + + @ApiModelProperty(value = "帮助的用户id") + private Integer uid; + + @ApiModelProperty(value = "砍价商品ID") + private Integer bargainId; + + @ApiModelProperty(value = "用户参与砍价表id") + private Integer bargainUserId; + + @ApiModelProperty(value = "帮助砍价多少金额") + private BigDecimal price; + + @ApiModelProperty(value = "添加时间") + private String addTime; + + @ApiModelProperty(value = "用户头像") + private String avatar; + + @ApiModelProperty(value = "用户昵称") + private String nickname; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreBargainUserResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreBargainUserResponse.java new file mode 100644 index 0000000..87f2a79 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreBargainUserResponse.java @@ -0,0 +1,75 @@ +package com.zbkj.common.response; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; + +/** + * 用户参与砍价响应体 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class StoreBargainUserResponse { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "用户参与砍价表ID") + private Integer id; + + @ApiModelProperty(value = "用户ID") + private Integer uid; + + @ApiModelProperty(value = "砍价商品id") + private Integer bargainId; + + @ApiModelProperty(value = "砍价的最低价") + private BigDecimal bargainPriceMin; + + @ApiModelProperty(value = "砍价金额") + private BigDecimal bargainPrice; + + @ApiModelProperty(value = "砍掉的价格") + private BigDecimal price; + + @ApiModelProperty(value = "状态 1参与中 2 活动结束参与失败 3活动结束参与成功") + private Integer status; + + @ApiModelProperty(value = "参与时间") + private String addTime; + + @ApiModelProperty(value = "用户头像") + private String avatar; + + @ApiModelProperty(value = "结束时间") + private String dataTime; + + @ApiModelProperty(value = "用户昵称") + private String nickname; + + @ApiModelProperty(value = "当前价") + private BigDecimal nowPrice; + + @ApiModelProperty(value = "剩余砍价次数") + private Integer num; + + @ApiModelProperty(value = "总砍价次数") + private Integer peopleNum; + + @ApiModelProperty(value = "砍价商品") + private String title; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreCategoryTreeList.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreCategoryTreeList.java new file mode 100644 index 0000000..9adbb8d --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreCategoryTreeList.java @@ -0,0 +1,39 @@ +package com.zbkj.common.response; + +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * StoreCategoryTreeList + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class StoreCategoryTreeList { + private static final long serialVersionUID=1L; + + private Integer id; + + private Integer pid; + + private String cateName; + + private Integer sort; + + private String pic; + + private Boolean isShow; + + private Integer addTime; + + private List child = new ArrayList<>(); +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreCombinationH5Response.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreCombinationH5Response.java new file mode 100644 index 0000000..3d15b79 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreCombinationH5Response.java @@ -0,0 +1,61 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 拼团商品移动端对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="StoreCombinationH5Response对象", description="拼团商品移动端对象") +public class StoreCombinationH5Response implements Serializable { + + private static final long serialVersionUID = -885733985825623484L; + + @ApiModelProperty(value = "拼团商品ID") + private Integer id; + + @ApiModelProperty(value = "商品id") + private Integer productId; + + @ApiModelProperty(value = "推荐图") + private String image; + + @ApiModelProperty(value = "活动标题") + private String title; + + @ApiModelProperty(value = "参团人数") + private Integer people; + + @ApiModelProperty(value = "价格") + private BigDecimal price; + + @ApiModelProperty(value = "原价") + private BigDecimal otPrice; + + @ApiModelProperty(value = "库存") + private Integer stock; + + @ApiModelProperty(value = "商品详情") + private String content; + + @ApiModelProperty(value = "收藏标识") + private boolean userCollect; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreCombinationResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreCombinationResponse.java new file mode 100644 index 0000000..023d3c1 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreCombinationResponse.java @@ -0,0 +1,162 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.HashMap; +import java.util.List; + +/** + * 拼团商品响应体 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class StoreCombinationResponse implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "拼团商品ID") + private Integer id; + + @ApiModelProperty(value = "商品id") + private Integer productId; + + @ApiModelProperty(value = "商户id") + private Integer merId; + + @ApiModelProperty(value = "推荐图") + private String image; + + @ApiModelProperty(value = "轮播图") + private String images; + + @ApiModelProperty(value = "活动标题") + private String title; + + @ApiModelProperty(value = "活动属性") + private String attr; + + @ApiModelProperty(value = "参团人数") + private Integer people; + + @ApiModelProperty(value = "简介") + private String info; + + @ApiModelProperty(value = "价格") + private BigDecimal price; + + @ApiModelProperty(value = "排序") + private Integer sort; + + @ApiModelProperty(value = "销量") + private Integer sales; + + @ApiModelProperty(value = "库存") + private Integer stock; + + @ApiModelProperty(value = "添加时间") + private Long addTime; + + @ApiModelProperty(value = "推荐") + private Boolean isHost; + + @ApiModelProperty(value = "商品状态") + private Boolean isShow; + + private Boolean isDel; + + private Boolean combination; + + @ApiModelProperty(value = "商户是否可用1可用0不可用") + private Boolean merUse; + + @ApiModelProperty(value = "是否包邮1是0否") + private Boolean isPostage; + + @ApiModelProperty(value = "邮费") + private BigDecimal postage; + + @ApiModelProperty(value = "拼团开始时间") + private Long startTime; + + @ApiModelProperty(value = "拼团结束时间") + private Long stopTime; + + @ApiModelProperty(value = "拼团结束时间") + private String stopTimeStr; + + @ApiModelProperty(value = "拼团订单有效时间(小时)") + private Integer effectiveTime; + + @ApiModelProperty(value = "拼图商品成本") + private BigDecimal cost; + + @ApiModelProperty(value = "浏览量") + private Integer browse; + + @ApiModelProperty(value = "单位名") + private String unitName; + + @ApiModelProperty(value = "运费模板ID") + private Integer tempId; + + @ApiModelProperty(value = "重量") + private BigDecimal weight; + + @ApiModelProperty(value = "体积") + private BigDecimal volume; + + @ApiModelProperty(value = "单次购买数量") + private Integer num; + + @ApiModelProperty(value = "限购总数") + private Integer quota; + + @ApiModelProperty(value = "限量总数显示") + private Integer quotaShow; + + @ApiModelProperty(value = "原价") + private BigDecimal otPrice; + + @ApiModelProperty(value = "每个订单可购买数量") + private Integer onceNum; + + @ApiModelProperty(value = "虚拟成团百分比") + private Integer virtualRation; + + @ApiModelProperty(value = "拼团人数") + private Integer countPeople; + + @ApiModelProperty(value = "参与人数") + private Integer countPeopleAll; + + @ApiModelProperty(value = "成团数量") + private Integer countPeoplePink; + + @ApiModelProperty(value = "限量剩余") + private Integer remainingQuota; + + @ApiModelProperty(value = "商品规格") +// private List productAttr; + private List> productAttr; + + @ApiModelProperty(value = "商品规格值") +// private List productValue; + private HashMap productValue; + + @ApiModelProperty(value = "商品单双规格") + private Boolean specType; + + @ApiModelProperty(value = "拼团单属性AttrValueId") + private Integer aloneAttrValueId; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreCouponFrontResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreCouponFrontResponse.java new file mode 100644 index 0000000..79bb993 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreCouponFrontResponse.java @@ -0,0 +1,109 @@ +package com.zbkj.common.response; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 优惠券表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="StoreCouponFrontResponse对象", description="web优惠券相应对象") +public class StoreCouponFrontResponse implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "优惠券表ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "优惠券名称") + private String name; + + @ApiModelProperty(value = "兑换的优惠券面值") + private BigDecimal money; + + @ApiModelProperty(value = "是否限量, 默认0 不限量, 1限量") + private Boolean isLimited; + +// @ApiModelProperty(value = "发放总数") +// private Integer total; + + @ApiModelProperty(value = "剩余数量") + private Integer lastTotal; + + @ApiModelProperty(value = "所属商品id / 分类id") + private String primaryKey; + + @ApiModelProperty(value = "最低消费,0代表不限制") + private BigDecimal minPrice; + + @ApiModelProperty(value = "可领取开始时间") + private Date receiveStartTime; + + @ApiModelProperty(value = "可领取结束时间") + private Date receiveEndTime; + + @ApiModelProperty(value = "是否固定使用时间, 默认0 否, 1是") + private Boolean isFixedTime; + +// @ApiModelProperty(value = "可使用时间范围 开始时间") +// private Date useStartTime; +// +// @ApiModelProperty(value = "可使用时间范围 结束时间") +// private Date useEndTime; + + @ApiModelProperty(value = "天数") + private Integer day; + + @ApiModelProperty(value = "优惠券类型 1 手动领取, 2 新人券, 3 赠送券") + private Integer type; + +// @ApiModelProperty(value = "排序") +// private Integer sort; + +// @ApiModelProperty(value = "状态(0:关闭,1:开启)") +// private Boolean status; +// +// @ApiModelProperty(value = "是否删除 状态(0:否,1:是)") +// private Boolean isDel; +// +// @ApiModelProperty(value = "创建时间") +// private Date createTime; +// +// @ApiModelProperty(value = "更新时间") +// private Date updateTime; + + @ApiModelProperty(value = "是否已领取未使用") + private Boolean isUse = false; + + @ApiModelProperty(value = "使用类型 1 全场通用, 2 商品券, 3 品类券") + private Integer useType; + + @ApiModelProperty(value = "可使用时间范围 开始时间字符串") + private String useStartTimeStr; + + @ApiModelProperty(value = "可使用时间范围 结束时间字符串") + private String useEndTimeStr; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreCouponInfoResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreCouponInfoResponse.java new file mode 100644 index 0000000..2989df9 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreCouponInfoResponse.java @@ -0,0 +1,50 @@ +package com.zbkj.common.response; + +import com.zbkj.common.model.category.Category; +import com.zbkj.common.request.StoreCouponRequest; +import com.zbkj.common.model.product.StoreProduct; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.List; + +/** + * 优惠券记录表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="StoreCouponInfoResponse对象", description="优惠券详情") +public class StoreCouponInfoResponse implements Serializable { + + private static final long serialVersionUID=1L; + + public StoreCouponInfoResponse(StoreCouponRequest coupon, List product, List category) { + this.coupon = coupon; + this.product = product; + this.category = category; + } + + @ApiModelProperty(value = "优惠券发布id") + private StoreCouponRequest coupon; + + @ApiModelProperty(value = "商品信息") + private List product; + + @ApiModelProperty(value = "分类信息") + private List category; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreCouponUserOrder.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreCouponUserOrder.java new file mode 100644 index 0000000..c3033e0 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreCouponUserOrder.java @@ -0,0 +1,91 @@ +package com.zbkj.common.response; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 优惠券记录表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="StoreCouponUserOrder对象", description="下单之前可以使用的优惠券对象") +public class StoreCouponUserOrder implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "id") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "优惠券发布id") + private Integer couponId; + + @ApiModelProperty(value = "兑换的项目id") + private Integer cid; + + @ApiModelProperty(value = "领取人id") + private Integer uid; + + @ApiModelProperty(value = "优惠券名称") + private String name; + + @ApiModelProperty(value = "优惠券的面值") + private BigDecimal money; + + @ApiModelProperty(value = "最低消费多少金额可用优惠券") + private BigDecimal minPrice; + + @ApiModelProperty(value = "获取方式") + private String type; + + @ApiModelProperty(value = "状态(0:未使用,1:已使用, 2:已失效)") + private int status; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "更新时间") + private Date updateTime; + + @ApiModelProperty(value = "开始使用时间") + @JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8") + @JsonProperty("useStartTimeStr") + private Date startTime; + + @ApiModelProperty(value = "过期时间") + @JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8") + @JsonProperty("useEndTimeStr") + private Date endTime; + + @ApiModelProperty(value = "使用时间") + private Date useTime; + + @ApiModelProperty(value = "使用类型 1 全场通用, 2 商品券, 3 品类券") + private Integer useType; + + @ApiModelProperty(value = "主键id 商品id/分类id", required = true) + private String primaryKey; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreCouponUserResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreCouponUserResponse.java new file mode 100644 index 0000000..48ded19 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreCouponUserResponse.java @@ -0,0 +1,102 @@ +package com.zbkj.common.response; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 优惠券记录表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="StoreCouponUserResponse对象", description="优惠券记录表") +public class StoreCouponUserResponse implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "id") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "优惠券发布id") + private Integer couponId; + + @ApiModelProperty(value = "兑换的项目id") + private Integer cid; + + @ApiModelProperty(value = "领取人id") + private Integer uid; + + @ApiModelProperty(value = "优惠券名称") + private String name; + + @ApiModelProperty(value = "优惠券的面值") + private BigDecimal money; + + @ApiModelProperty(value = "最低消费多少金额可用优惠券") + private BigDecimal minPrice; + + @ApiModelProperty(value = "获取方式") + private String type; + + @ApiModelProperty(value = "状态(0:未使用,1:已使用, 2:已失效)") + private int status; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "更新时间") + private Date updateTime; + + @ApiModelProperty(value = "开始使用时间") + private Date startTime; + + @ApiModelProperty(value = "过期时间") + private Date endTime; + + @ApiModelProperty(value = "使用时间") + private Date useTime; + + @ApiModelProperty(value = "用户昵称") + private String nickname; + + @ApiModelProperty(value = "用户头像") + private String avatar; + + @ApiModelProperty(value = "用户头像") + private Boolean isValid; + + @ApiModelProperty(value = "使用类型 1 全场通用, 2 商品券, 3 品类券") + private Integer useType; + + @ApiModelProperty(value = "主键id 商品id/分类id", required = true) + private String primaryKey; + + @ApiModelProperty(value = "有效状态:usable-可用,unusable-已用,overdue-过期,notStart-未开始") + private String validStr; + + @ApiModelProperty(value = "开始使用时间字符串") + private String useStartTimeStr; + + @ApiModelProperty(value = "过期时间字符串") + private String useEndTimeStr; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreNearResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreNearResponse.java new file mode 100644 index 0000000..034ec02 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreNearResponse.java @@ -0,0 +1,40 @@ +package com.zbkj.common.response; + +import com.zbkj.common.vo.SystemStoreNearVo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.List; + +/** + * 附近的门店 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="StoreNearRequest对象", description="附近的门店") +public class StoreNearResponse implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "腾讯地图key") + private String tengXunMapKey; + + @ApiModelProperty(value = "附近的门店列表", required = true) + private List list; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderCountItemResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderCountItemResponse.java new file mode 100644 index 0000000..3970603 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderCountItemResponse.java @@ -0,0 +1,63 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 订单状态数量 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="StoreOrderCountItemResponse对象", description="订单状态数量") +public class StoreOrderCountItemResponse implements Serializable { + + private static final long serialVersionUID = -8605913636959651047L; + + @ApiModelProperty(value = "总数") + private Integer all; + + @ApiModelProperty(value = "未支付") + private Integer unPaid; + + @ApiModelProperty(value = "未发货") + private Integer notShipped; + + @ApiModelProperty(value = "待收货") + private Integer spike; + + @ApiModelProperty(value = "待评价") + private Integer bargain; + + @ApiModelProperty(value = "交易完成") + private Integer complete; + + @ApiModelProperty(value = "待核销") + private Integer toBeWrittenOff; + + @ApiModelProperty(value = "退款中") + private Integer refunding; + + @ApiModelProperty(value = "已退款") + private Integer refunded; + + @ApiModelProperty(value = "0 未退款 1 申请中 2 已退款") + private Integer refundStatus; + + @ApiModelProperty(value = "已删除") + private Integer deleted; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderDetailInfoResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderDetailInfoResponse.java new file mode 100644 index 0000000..663ae29 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderDetailInfoResponse.java @@ -0,0 +1,370 @@ +package com.zbkj.common.response; + +import com.zbkj.common.model.system.SystemStore; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * 订单详情响应体 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="StoreOrderDetailInfoResponse对象", description="订单详情响应体") +public class StoreOrderDetailInfoResponse implements Serializable { + + private static final long serialVersionUID = -4324222121352855551L; + + @ApiModelProperty(value = "订单ID") + private Integer id; + + @ApiModelProperty(value = "订单号") + private String orderId; + + @ApiModelProperty(value = "用户姓名") + private String realName; + + @ApiModelProperty(value = "用户电话") + private String userPhone; + + @ApiModelProperty(value = "详细地址") + private String userAddress; + + @ApiModelProperty(value = "运费金额") + private BigDecimal freightPrice; + +// @ApiModelProperty(value = "订单商品总数") +// private Integer totalNum; + + @ApiModelProperty(value = "订单总价") + private BigDecimal totalPrice; + + @ApiModelProperty(value = "商品总价") + private BigDecimal proTotalPrice; + +// @ApiModelProperty(value = "邮费") +// private BigDecimal totalPostage; + + @ApiModelProperty(value = "实际支付金额") + private BigDecimal payPrice; + + @ApiModelProperty(value = "支付邮费") + private BigDecimal payPostage; + + @ApiModelProperty(value = "抵扣金额") + private BigDecimal deductionPrice; + + @ApiModelProperty(value = "优惠券id") + private Integer couponId; + + @ApiModelProperty(value = "优惠券金额") + private BigDecimal couponPrice; + + @ApiModelProperty(value = "支付状态") + private Boolean paid; + + @ApiModelProperty(value = "支付时间") + private Date payTime; + + @ApiModelProperty(value = "支付方式") + private String payType; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "订单状态(0:待发货;1:待收货;2:已收货,待评价;3:已完成;)") + private Integer status; + + @ApiModelProperty(value = "0 未退款 1 申请中 2 已退款") + private Integer refundStatus; + + @ApiModelProperty(value = "退款图片") + private String refundReasonWapImg; + + @ApiModelProperty(value = "退款用户说明") + private String refundReasonWapExplain; + + @ApiModelProperty(value = "退款时间") + private Date refundReasonTime; + + @ApiModelProperty(value = "前台退款原因") + private String refundReasonWap; + + @ApiModelProperty(value = "不退款的理由") + private String refundReason; + + @ApiModelProperty(value = "退款金额") + private BigDecimal refundPrice; + + @ApiModelProperty(value = "快递名称/送货人姓名") + private String deliveryName; + + @ApiModelProperty(value = "发货类型") + private String deliveryType; + + @ApiModelProperty(value = "快递单号/手机号") + private String deliveryId; + +// @ApiModelProperty(value = "消费赚取积分") +// private Integer gainIntegral; + + @ApiModelProperty(value = "使用积分") + private Integer useIntegral; +// +// @ApiModelProperty(value = "给用户退了多少积分") +// private Integer backIntegral; + + @ApiModelProperty(value = "备注") + private String mark; + +// @ApiModelProperty(value = "是否删除") +// private Boolean isDel; + +// @ApiModelProperty(value = "唯一id(md5加密)类似id") +// @TableField(value = "`unique`") +// private String unique; + +// @ApiModelProperty(value = "管理员备注") +// private String remark; + +// @ApiModelProperty(value = "商户ID") +// private Integer merId; + + private Integer isMerCheck; + + @ApiModelProperty(value = "拼团商品id0一般商品") + private Integer combinationId; + + @ApiModelProperty(value = "拼团id 0没有拼团") + private Integer pinkId; + +// @ApiModelProperty(value = "成本价") +// private BigDecimal cost; + + @ApiModelProperty(value = "秒杀商品ID") + private Integer seckillId; + + @ApiModelProperty(value = "砍价id") + private Integer bargainId; + + @ApiModelProperty(value = "核销码") + private String verifyCode; + + @ApiModelProperty(value = "门店id") + private Integer storeId; + + @ApiModelProperty(value = "配送方式 1=快递 ,2=门店自提") + private Integer shippingType; + +// @ApiModelProperty(value = "店员id") +// private Integer clerkId; + + @ApiModelProperty(value = "支付渠道(0微信公众号1微信小程序)") + private int isChannel; + + @ApiModelProperty(value = "订单类型:0-普通订单,1-视频号订单") + private Integer type; + +// @ApiModelProperty(value = "消息提醒") +// private Boolean isRemind; + + @ApiModelProperty(value = "支付方式:前端") + private String payTypeStr; + + @ApiModelProperty(value = "订单状态描述:前端") + private String orderStatusMsg; + + // 手动添加 +// private List cartInfo; +// private OrderAgainItemVo pStatus; +// @ApiModelProperty(value = "核销码相关") +// private List pVerifyCodes; + @ApiModelProperty(value = "系统门店信息") + private SystemStore systemStore; + @ApiModelProperty(value = "腾讯地图key") + private String mapKey; + @ApiModelProperty(value = "订单状态图标") + private String statusPic; + @ApiModelProperty(value = "订单详情") + private List orderInfoList; + +// @ApiModelProperty(value = "订单ID") +// private Integer id; +// +// @ApiModelProperty(value = "订单号") +// private String orderId; +// +// @ApiModelProperty(value = "用户id") +// private Integer uid; +// +// @ApiModelProperty(value = "用户姓名") +// private String realName; +// +// @ApiModelProperty(value = "用户电话") +// private String userPhone; +// +// @ApiModelProperty(value = "详细地址") +// private String userAddress; +// +// @ApiModelProperty(value = "运费金额") +// private BigDecimal freightPrice; +// +// @ApiModelProperty(value = "订单商品总数") +// private Integer totalNum; +// +// @ApiModelProperty(value = "订单总价") +// private BigDecimal totalPrice; +// +// @ApiModelProperty(value = "邮费") +// private BigDecimal totalPostage; +// +// @ApiModelProperty(value = "实际支付金额") +// private BigDecimal payPrice; +// +// @ApiModelProperty(value = "支付邮费") +// private BigDecimal payPostage; +// +// @ApiModelProperty(value = "抵扣金额") +// private BigDecimal deductionPrice; +// +// @ApiModelProperty(value = "优惠券id") +// private Integer couponId; +// +// @ApiModelProperty(value = "优惠券金额") +// private BigDecimal couponPrice; +// +// @ApiModelProperty(value = "支付状态") +// private Boolean paid; +// +// @ApiModelProperty(value = "支付时间") +// private Date payTime; +// +// @ApiModelProperty(value = "支付方式") +// private String payType; +// +// @ApiModelProperty(value = "创建时间") +// private Date createTime; +// +// @ApiModelProperty(value = "订单状态(-1 : 申请退款 -2 : 退货成功 0:待发货;1:待收货;2:已收货,待评价;3:已完成;)") +// private Integer status; +// +// @ApiModelProperty(value = "0 未退款 1 申请中 2 已退款") +// private Integer refundStatus; +// +// @ApiModelProperty(value = "退款图片") +// private String refundReasonWapImg; +// +// @ApiModelProperty(value = "退款用户说明") +// private String refundReasonWapExplain; +// +// @ApiModelProperty(value = "退款时间") +// private Date refundReasonTime; +// +// @ApiModelProperty(value = "前台退款原因") +// private String refundReasonWap; +// +// @ApiModelProperty(value = "不退款的理由") +// private String refundReason; +// +// @ApiModelProperty(value = "退款金额") +// private BigDecimal refundPrice; +// +// @ApiModelProperty(value = "快递名称/送货人姓名") +// private String deliveryName; +// +// @ApiModelProperty(value = "发货类型") +// private String deliveryType; +// +// @ApiModelProperty(value = "快递单号/手机号") +// private String deliveryId; +// +// @ApiModelProperty(value = "消费赚取积分") +// private Integer gainIntegral; +// +// @ApiModelProperty(value = "使用积分") +// private Integer useIntegral; +// +// @ApiModelProperty(value = "给用户退了多少积分") +// private Integer backIntegral; +// +// @ApiModelProperty(value = "备注") +// private String mark; +// +// @ApiModelProperty(value = "是否删除") +// private Boolean isDel; +// +// @ApiModelProperty(value = "唯一id(md5加密)类似id") +// @TableField(value = "`unique`") +// private String unique; +// +// @ApiModelProperty(value = "管理员备注") +// private String remark; +// +// @ApiModelProperty(value = "商户ID") +// private Integer merId; +// +// private Integer isMerCheck; +// +// @ApiModelProperty(value = "拼团商品id0一般商品") +// private Integer combinationId; +// +// @ApiModelProperty(value = "拼团id 0没有拼团") +// private Integer pinkId; +// +// @ApiModelProperty(value = "成本价") +// private BigDecimal cost; +// +// @ApiModelProperty(value = "秒杀商品ID") +// private Integer seckillId; +// +// @ApiModelProperty(value = "砍价id") +// private Integer bargainId; +// +// @ApiModelProperty(value = "核销码") +// private String verifyCode; +// +// @ApiModelProperty(value = "门店id") +// private Integer storeId; +// +// @ApiModelProperty(value = "配送方式 1=快递 ,2=门店自提") +// private Integer shippingType; +// +// @ApiModelProperty(value = "店员id") +// private Integer clerkId; +// +// @ApiModelProperty(value = "支付渠道(0微信公众号1微信小程序)") +// private int isChannel; +// +// @ApiModelProperty(value = "消息提醒") +// private Boolean isRemind; +// +// @ApiModelProperty(value = "后台是否删除") +// private Boolean isSystemDel; +// +// // 手动添加 +// private List cartInfo; +// private OrderAgainItemVo pStatus; +// private List pVerifyCodes; +// private Date addTimeY; +// private Date addTimeH; +// private SystemStore systemStore; +// private String mapKey; +// private String statusPic; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderDetailResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderDetailResponse.java new file mode 100644 index 0000000..5073f41 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderDetailResponse.java @@ -0,0 +1,111 @@ +package com.zbkj.common.response; + +import com.zbkj.common.vo.StoreOrderInfoOldVo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * 订单信息响应对象(pc列表用) + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="StoreOrderDetailResponse对象", description="订单信息响应对象(pc列表用)") +public class StoreOrderDetailResponse implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "订单号") + private String orderId; + + @ApiModelProperty(value = "实际支付金额") + private BigDecimal payPrice; + + @ApiModelProperty(value = "支付方式") + private String payType; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "订单状态(0:待发货;1:待收货;2:已收货,待评价;3:已完成;)") + private Integer status; + + @ApiModelProperty(value = "商品信息") + private List productList = new ArrayList<>(); + + @ApiModelProperty(value = "订单状态") + private Map statusStr; + + @ApiModelProperty(value = "支付方式") + private String payTypeStr; + + @ApiModelProperty(value = "是否删除") + private Boolean isDel; + + @ApiModelProperty(value = "退款图片") + private String refundReasonWapImg; + + @ApiModelProperty(value = "退款用户说明") + private String refundReasonWapExplain; + + @ApiModelProperty(value = "退款时间") + private Date refundReasonTime; + + @ApiModelProperty(value = "前台退款原因") + private String refundReasonWap; + + @ApiModelProperty(value = "不退款的理由") + private String refundReason; + + @ApiModelProperty(value = "退款金额") + private BigDecimal refundPrice; + + @ApiModelProperty(value = "0 未退款 1 申请中 2 已退款") + private Integer refundStatus; + + @ApiModelProperty(value = "核销码") + private String verifyCode; + + @ApiModelProperty(value = "订单类型") + private String orderType; + + @ApiModelProperty(value = "订单管理员备注") + private String remark; + + @ApiModelProperty(value = "用户姓名") + private String realName; + +// @ApiModelProperty(value = "备注") +// private String mark; + +// @ApiModelProperty(value = "订单总价") +// private BigDecimal totalPrice; + + @ApiModelProperty(value = "支付状态") + private Boolean paid; + + @ApiModelProperty(value = "订单类型:0-普通订单,1-视频号订单") + private Integer type; + + @ApiModelProperty(value = "是否改价,0-否,1-是") + private Boolean isAlterPrice; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderInfoResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderInfoResponse.java new file mode 100644 index 0000000..c841599 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderInfoResponse.java @@ -0,0 +1,144 @@ +package com.zbkj.common.response; + +import com.zbkj.common.vo.StoreOrderInfoOldVo; +import com.zbkj.common.model.system.SystemStore; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * 订单详情响应对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="StoreOrderInfoResponse对象", description="订单详情响应对象") +public class StoreOrderInfoResponse implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "订单ID") + private Integer id; + + @ApiModelProperty(value = "订单号") + private String orderId; + + @ApiModelProperty(value = "用户id") + private Integer uid; + + @ApiModelProperty(value = "用户姓名") + private String realName; + + @ApiModelProperty(value = "用户电话") + private String userPhone; + + @ApiModelProperty(value = "详细地址") + private String userAddress; + + @ApiModelProperty(value = "订单商品总数") + private Integer totalNum; + + @ApiModelProperty(value = "订单总价") + private BigDecimal totalPrice; + + @ApiModelProperty(value = "实际支付金额") + private BigDecimal payPrice; + + @ApiModelProperty(value = "支付邮费") + private BigDecimal payPostage; + + @ApiModelProperty(value = "优惠券金额") + private BigDecimal couponPrice; + + @ApiModelProperty(value = "抵扣金额") + private BigDecimal deductionPrice; + + @ApiModelProperty(value = "支付方式") + private String payType; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "订单状态(-1 : 申请退款 -2 : 退货成功 0:待发货;1:待收货;2:已收货;3:待评价;-1:已退款)") + private Integer status; + + @ApiModelProperty(value = "0 未退款 1 申请中 2 已退款") + private Integer refundStatus; + + @ApiModelProperty(value = "快递名称/送货人姓名") + private String deliveryName; + + @ApiModelProperty(value = "发货类型") + private String deliveryType; + + @ApiModelProperty(value = "快递单号/手机号") + private String deliveryId; + + @ApiModelProperty(value = "备注") + private String mark; + + @ApiModelProperty(value = "是否删除") + private Boolean isDel; + + @ApiModelProperty(value = "管理员备注") + private String remark; + + @ApiModelProperty(value = "退款金额") + private BigDecimal refundPrice; + + @ApiModelProperty(value = "使用积分") + private Integer useIntegral; + + @ApiModelProperty(value = "给用户退了多少积分") + private Integer backIntegral; + + @ApiModelProperty(value = "核销码") + private String verifyCode; + + @ApiModelProperty(value = "配送方式 1=快递 ,2=门店自提") + private Integer shippingType; + + @ApiModelProperty(value = "订单状态") + private Map statusStr; + + @ApiModelProperty(value = "支付方式") + private String payTypeStr; + + @ApiModelProperty(value = "用户昵称") + private String nikeName; + + @ApiModelProperty(value = "用户电话") + private String phone; + + @ApiModelProperty(value = "订单商品详情") + List orderInfo; + + @ApiModelProperty(value = "提货点") + private SystemStore systemStore; + + @ApiModelProperty(value = "推广人名称") + private String spreadName; + + @ApiModelProperty(value = "商品总价") + private BigDecimal proTotalPrice; + + @ApiModelProperty(value = "退款时间") + private Date refundReasonTime; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderItemResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderItemResponse.java new file mode 100644 index 0000000..f7cafb8 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderItemResponse.java @@ -0,0 +1,150 @@ +package com.zbkj.common.response; + +import com.zbkj.common.vo.StoreOrderInfoOldVo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * 订单表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="StoreOrderItemResponse对象", description="核销订单") +public class StoreOrderItemResponse implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "订单ID") + private Integer id; + + @ApiModelProperty(value = "订单号") + private String orderId; + + @ApiModelProperty(value = "用户id") + private Integer uid; + + @ApiModelProperty(value = "用户姓名") + private String realName; + + @ApiModelProperty(value = "用户电话") + private String userPhone; + + @ApiModelProperty(value = "订单总价") + private BigDecimal totalPrice; + + @ApiModelProperty(value = "实际支付金额") + private BigDecimal payPrice; + + @ApiModelProperty(value = "支付状态") + private Boolean paid; + + @ApiModelProperty(value = "支付时间") + private Date payTime; + + @ApiModelProperty(value = "支付方式") + private String payType; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "订单状态(-1 : 申请退款 -2 : 退货成功 0:待发货;1:待收货;2:已收货;3:待评价;-1:已退款)") + private Integer status; + + @ApiModelProperty(value = "门店名称") + private String storeName; + + @ApiModelProperty(value = "店员名称") + private String clerkName; + + @ApiModelProperty(value = "商品信息") + private List productList = new ArrayList<>(); + + @ApiModelProperty(value = "订单状态") + private Map statusStr; + + @ApiModelProperty(value = "支付方式") + private String payTypeStr; + + @ApiModelProperty(value = "邮费") + private BigDecimal totalPostage; + + @ApiModelProperty(value = "支付邮费") + private BigDecimal payPostage; + + @ApiModelProperty(value = "消费赚取积分") + private BigDecimal gainIntegral; + + @ApiModelProperty(value = "使用积分") + private BigDecimal useIntegral; + + @ApiModelProperty(value = "给用户退了多少积分") + private BigDecimal backIntegral; + + @ApiModelProperty(value = "是否删除") + private Boolean isDel; + + @ApiModelProperty(value = "后台是否删除") + private Boolean isSystemDel; + + @ApiModelProperty(value = "用户备注") + private String mark; + + @ApiModelProperty(value = "管理员备注") + private String remark; + + @ApiModelProperty(value = "退款图片") + private String refundReasonWapImg; + + @ApiModelProperty(value = "退款用户说明") + private String refundReasonWapExplain; + + @ApiModelProperty(value = "退款时间") + private Date refundReasonTime; + + @ApiModelProperty(value = "前台退款原因") + private String refundReasonWap; + + @ApiModelProperty(value = "不退款的理由") + private String refundReason; + + @ApiModelProperty(value = "退款金额") + private BigDecimal refundPrice; + + @ApiModelProperty(value = "0 未退款 1 申请中 2 已退款") + private Integer refundStatus; + + @ApiModelProperty(value = "订单商品总数") + private Integer totalNum; + + @ApiModelProperty(value = "配送方式 1=快递 ,2=门店自提") + private Integer shippingType; + + @ApiModelProperty(value = "核销码") + private String verifyCode; + + @ApiModelProperty(value = "推广人信息") + private StoreOrderSpreadInfoResponse spreadInfo = new StoreOrderSpreadInfoResponse(); + + @ApiModelProperty(value = "订单类型") + private String orderType; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderSpreadInfoResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderSpreadInfoResponse.java new file mode 100644 index 0000000..9fc9329 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderSpreadInfoResponse.java @@ -0,0 +1,38 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 订单表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="StoreOrderSpreadInfoResponse对象", description="推广人信息") +public class StoreOrderSpreadInfoResponse implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "推广人id") + private Integer id = 0; + + @ApiModelProperty(value = "推广人姓名") + private String name = ""; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderStatisticsChartItemResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderStatisticsChartItemResponse.java new file mode 100644 index 0000000..52d771c --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderStatisticsChartItemResponse.java @@ -0,0 +1,23 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.Api; +import lombok.Data; + +/** + * 订单统计 response item + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class StoreOrderStatisticsChartItemResponse { + + private String num; + private String time; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderStatisticsResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderStatisticsResponse.java new file mode 100644 index 0000000..9951869 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderStatisticsResponse.java @@ -0,0 +1,37 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * StoreOrderStatisticsResponse + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class StoreOrderStatisticsResponse { + @ApiModelProperty(value = "订单数图标数据") + private List chart; // 订单数图标数据 + + @ApiModelProperty(value = "时间区间增长率") + private Integer growthRate; // 时间区间增长率 + + @ApiModelProperty(value = "同比") + private String increaseTime; + + @ApiModelProperty(value = "同比上个时间区间增长营业额 1=增长,2=减少") + private Integer increaseTimeStatus; // 同比上个时间区间增长营业额 1=增长,2=减少 + + @ApiModelProperty(value = "时间区间订单数") + private BigDecimal time; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderTopItemResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderTopItemResponse.java new file mode 100644 index 0000000..b4768f8 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderTopItemResponse.java @@ -0,0 +1,43 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 订单九宫格数据 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="StoreOrderTopItemResponse对象", description="订单九宫格数据") +public class StoreOrderTopItemResponse implements Serializable { + + private static final long serialVersionUID = -7583407020447771557L; + + @ApiModelProperty(value = "订单数量") + private Integer count; + + @ApiModelProperty(value = "订单金额") + private BigDecimal amount; + + @ApiModelProperty(value = "微信支付金额") + private BigDecimal weChatAmount; + + @ApiModelProperty(value = "余额支付") + private BigDecimal yueAmount; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderVerificationConfirmResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderVerificationConfirmResponse.java new file mode 100644 index 0000000..d8095b4 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderVerificationConfirmResponse.java @@ -0,0 +1,182 @@ +package com.zbkj.common.response; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.zbkj.common.vo.StoreOrderInfoOldVo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * 核销订单确认前的数据 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class StoreOrderVerificationConfirmResponse { + + @ApiModelProperty(value = "订单ID") + private Integer id; + + @ApiModelProperty(value = "订单号") + private String orderId; + + @ApiModelProperty(value = "用户id") + private Integer uid; + + @ApiModelProperty(value = "用户姓名") + private String realName; + + @ApiModelProperty(value = "用户电话") + private String userPhone; + + @ApiModelProperty(value = "详细地址") + private String userAddress; + + @ApiModelProperty(value = "运费金额") + private BigDecimal freightPrice; + + @ApiModelProperty(value = "订单商品总数") + private Integer totalNum; + + @ApiModelProperty(value = "订单总价") + private BigDecimal totalPrice; + + @ApiModelProperty(value = "邮费") + private BigDecimal totalPostage; + + @ApiModelProperty(value = "实际支付金额") + private BigDecimal payPrice; + + @ApiModelProperty(value = "支付邮费") + private BigDecimal payPostage; + + @ApiModelProperty(value = "抵扣金额") + private BigDecimal deductionPrice; + + @ApiModelProperty(value = "优惠券id") + private Integer couponId; + + @ApiModelProperty(value = "优惠券金额") + private BigDecimal couponPrice; + + @ApiModelProperty(value = "支付状态") + private Boolean paid; + + @ApiModelProperty(value = "支付时间") + private Date payTime; + + @ApiModelProperty(value = "支付方式") + private String payType; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "订单状态(-1 : 申请退款 -2 : 退货成功 0:待发货;1:待收货;2:已收货,待评价;3:已完成;)") + private Integer status; + + @ApiModelProperty(value = "0 未退款 1 申请中 2 已退款") + private Integer refundStatus; + + @ApiModelProperty(value = "退款图片") + private String refundReasonWapImg; + + @ApiModelProperty(value = "退款用户说明") + private String refundReasonWapExplain; + + @ApiModelProperty(value = "退款时间") + private Date refundReasonTime; + + @ApiModelProperty(value = "前台退款原因") + private String refundReasonWap; + + @ApiModelProperty(value = "不退款的理由") + private String refundReason; + + @ApiModelProperty(value = "退款金额") + private BigDecimal refundPrice; + + @ApiModelProperty(value = "快递名称/送货人姓名") + private String deliveryName; + + @ApiModelProperty(value = "发货类型") + private String deliveryType; + + @ApiModelProperty(value = "快递单号/手机号") + private String deliveryId; + + @ApiModelProperty(value = "消费赚取积分") + private Integer gainIntegral; + + @ApiModelProperty(value = "使用积分") + private Integer useIntegral; + + @ApiModelProperty(value = "给用户退了多少积分") + private Integer backIntegral; + + @ApiModelProperty(value = "备注") + private String mark; + + @ApiModelProperty(value = "是否删除") + private Boolean isDel; + + @ApiModelProperty(value = "唯一id(md5加密)类似id") + @TableField(value = "`unique`") + private String unique; + + @ApiModelProperty(value = "管理员备注") + private String remark; + + @ApiModelProperty(value = "商户ID") + private Integer merId; + + private Integer isMerCheck; + + @ApiModelProperty(value = "拼团商品id0一般商品") + private Integer combinationId; + + @ApiModelProperty(value = "拼团id 0没有拼团") + private Integer pinkId; + + @ApiModelProperty(value = "成本价") + private BigDecimal cost; + + @ApiModelProperty(value = "秒杀商品ID") + private Integer seckillId; + + @ApiModelProperty(value = "砍价id") + private Integer bargainId; + + @ApiModelProperty(value = "核销码") + private String verifyCode; + + @ApiModelProperty(value = "门店id") + private Integer storeId; + + @ApiModelProperty(value = "配送方式 1=快递 ,2=门店自提") + private Integer shippingType; + + @ApiModelProperty(value = "店员id") + private Integer clerkId; + + @ApiModelProperty(value = "支付渠道(0微信公众号1微信小程序)") + private int isChannel; + + @ApiModelProperty(value = "消息提醒") + private Boolean isRemind; + + @ApiModelProperty(value = "后台是否删除") + private Boolean isSystemDel; + + @ApiModelProperty(value = "订单详情") + private List storeOrderInfoVos; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StorePinkAdminListResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StorePinkAdminListResponse.java new file mode 100644 index 0000000..f8371a7 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StorePinkAdminListResponse.java @@ -0,0 +1,57 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * 拼团列表响应体 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class StorePinkAdminListResponse { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "拼团ID") + private Integer id; + + @ApiModelProperty(value = "用户id") + private Integer uid; + + @ApiModelProperty(value = "拼团总人数") + private Integer people; + + @ApiModelProperty(value = "开始时间") + private String addTime; + + @ApiModelProperty(value = "结束时间") + private String stopTime; + + @ApiModelProperty(value = "团长id 0为团长") + private Integer kId; + + @ApiModelProperty(value = "状态1进行中2已完成3未完成") + private Integer status; + + @ApiModelProperty(value = "用户昵称") + private String nickname; + + @ApiModelProperty(value = "用户头像") + private String avatar; + + @ApiModelProperty(value = "几人参团") + private Integer countPeople; + + @ApiModelProperty(value = "拼团商品") + private String title; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StorePinkDetailResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StorePinkDetailResponse.java new file mode 100644 index 0000000..9260c3f --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StorePinkDetailResponse.java @@ -0,0 +1,59 @@ +package com.zbkj.common.response; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 拼团表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="StorePinkDetailResponse对象", description="拼团详情响应对象") +public class StorePinkDetailResponse implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "拼团ID") + private Integer id; + + @ApiModelProperty(value = "用户id") + private Integer uid; + + @ApiModelProperty(value = "订单id 生成") + private String orderId; + + @ApiModelProperty(value = "购买总金额") + private BigDecimal totalPrice; + + @ApiModelProperty(value = "用户昵称") + private String nickname; + + @ApiModelProperty(value = "用户头像") + private String avatar; + + @ApiModelProperty(value = "订单状态(0:待发货;1:待收货;2:已收货,待评价;3:已完成;)") + private Integer orderStatus; + + @ApiModelProperty(value = "0 未退款 1 申请中 2 已退款 3退款中") + private Integer refundStatus; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StorePinkResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StorePinkResponse.java new file mode 100644 index 0000000..6f5c6c7 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StorePinkResponse.java @@ -0,0 +1,87 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * 拼团响应体 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class StorePinkResponse { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "拼团ID") + private Integer id; + + @ApiModelProperty(value = "用户id") + private Integer uid; + + @ApiModelProperty(value = "订单id 生成") + private String orderId; + + @ApiModelProperty(value = "订单id 数据库") + private Integer orderIdKey; + + @ApiModelProperty(value = "购买商品个数") + private Integer totalNum; + + @ApiModelProperty(value = "购买总金额") + private BigDecimal totalPrice; + + @ApiModelProperty(value = "拼团商品id") + private Integer cid; + + @ApiModelProperty(value = "商品id") + private Integer pid; + + @ApiModelProperty(value = "拼图总人数") + private Integer people; + + @ApiModelProperty(value = "拼团商品单价") + private BigDecimal price; + + @ApiModelProperty(value = "开始时间") + private Long addTime; + + @ApiModelProperty(value = "结束时间") + private Long stopTime; + + @ApiModelProperty(value = "团长id 0为团长") + private Integer kId; + + @ApiModelProperty(value = "是否发送模板消息0未发送1已发送") + private Boolean isTpl; + + @ApiModelProperty(value = "是否退款 0未退款 1已退款") + private Boolean isRefund; + + @ApiModelProperty(value = "状态1进行中2已完成3未完成") + private Integer status; + + @ApiModelProperty(value = "用户昵称") + private String nickname; + + @ApiModelProperty(value = "用户头像") + private String avatar; + + @ApiModelProperty(value = "是否虚拟拼团") + private Boolean is_virtual; + + @ApiModelProperty(value = "几人参团") + private Integer countPeople; + + @ApiModelProperty(value = "还剩几人成团") + private Integer count; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreProductAttrValueResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreProductAttrValueResponse.java new file mode 100644 index 0000000..ba40896 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreProductAttrValueResponse.java @@ -0,0 +1,111 @@ +package com.zbkj.common.response; + +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 io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.Min; +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import java.util.HashMap; + +/** + * 商品属性值表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_store_product_attr_value") +@ApiModel(value="StoreProductAttrValue对象", description="商品属性值表") +public class StoreProductAttrValueResponse implements Serializable { + + private static final long serialVersionUID=1L; + @ApiModelProperty(value = "ID") + private Integer id; + + @ApiModelProperty(value = "商品ID", example = "0") + @Min(value = 0, message = "请选择商品") + private Integer productId; + + @ApiModelProperty(value = "商品属性索引值 (attr_value|attr_value[|....])") + private String suk; + + @ApiModelProperty(value = "属性对应的库存") + private Integer stock; + + @ApiModelProperty(value = "销量") + private Integer sales; + + @ApiModelProperty(value = "属性金额") + private BigDecimal price; + + @ApiModelProperty(value = "图片") + private String image; + + @ApiModelProperty(value = "唯一值") + private String unique; + + @ApiModelProperty(value = "成本价") + private BigDecimal cost; + + @ApiModelProperty(value = "商品条码") + private String barCode; + + @ApiModelProperty(value = "原价") + private BigDecimal otPrice; + + @ApiModelProperty(value = "重量") + private BigDecimal weight; + + @ApiModelProperty(value = "体积") + private BigDecimal volume; + + @ApiModelProperty(value = "一级返佣") + private BigDecimal brokerage; + + @ApiModelProperty(value = "二级返佣") + private BigDecimal brokerageTwo; + + @ApiModelProperty(value = "活动类型 0=商品,1=秒杀,2=砍价,3=拼团") + private Integer type; + + @ApiModelProperty(value = "活动限购数量") + private Integer quota; + + @ApiModelProperty(value = "活动限购数量显示") + private Integer quotaShow; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "更新时间") + private Date updateTime; + + @ApiModelProperty(value = "attrValue字段,取表中suk字段") + private Object attrValue; + + @ApiModelProperty(value = "砍价商品最低价") + private BigDecimal minPrice; + + @ApiModelProperty(value = "是否选中") + private Boolean checked; + + @ApiModelProperty(value = "会员价") + private BigDecimal vipPrice; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreProductInfoResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreProductInfoResponse.java new file mode 100644 index 0000000..3ad687d --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreProductInfoResponse.java @@ -0,0 +1,166 @@ +package com.zbkj.common.response; + +import com.zbkj.common.model.product.StoreProductAttr; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.List; + +/** + * 商品详情响应对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="StoreProductInfoResponse对象", description="商品详情响应对象") +public class StoreProductInfoResponse implements Serializable { + + private static final long serialVersionUID = 9215241889318610262L; + + @ApiModelProperty(value = "商品id") + private Integer id; + + @ApiModelProperty(value = "商品图片") + private String image; + + @ApiModelProperty(value = "轮播图") + private String sliderImage; + + @ApiModelProperty(value = "商品名称") + private String storeName; + + @ApiModelProperty(value = "商品简介") + private String storeInfo; + + @ApiModelProperty(value = "关键字") + private String keyword; + + @ApiModelProperty(value = "分类id") + private String cateId; + + @ApiModelProperty(value = "分类中文") + private String cateStr; + + @ApiModelProperty(value = "单位名") + private String unitName; + + @ApiModelProperty(value = "排序") + private Integer sort; + + @ApiModelProperty(value = "是否热卖") + private Boolean isHot; + + @ApiModelProperty(value = "是否优惠") + private Boolean isBenefit; + + @ApiModelProperty(value = "是否精品") + private Boolean isBest; + + @ApiModelProperty(value = "是否新品") + private Boolean isNew; + + @ApiModelProperty(value = "获得积分") + private Integer giveIntegral; + + @ApiModelProperty(value = "是否优品推荐") + private Boolean isGood; + + @ApiModelProperty(value = "是否单独分佣") + private Boolean isSub; + + @ApiModelProperty(value = "虚拟销量") + private Integer ficti; + + @ApiModelProperty(value = "运费模板ID") + private Integer tempId; + + @ApiModelProperty(value = "规格 0单 1多") + private Boolean specType; + + @ApiModelProperty(value = "活动显示排序 0=默认,1=秒杀,2=砍价,3=拼团") + private List activity; + + @ApiModelProperty(value = "商品属性") + private List attr; + + @ApiModelProperty(value = "商品属性详情") + private List attrValue; + + @ApiModelProperty(value = "商品描述") + private String content; + + @ApiModelProperty(value = "产品ID") + private Integer productId; + +// @ApiModelProperty(value = "优惠券") +// private List coupons; + + @ApiModelProperty(value = "优惠券Ids") + private List couponIds; + + // 以下为活动商品部分 + + @ApiModelProperty(value = "状态 0=关闭 1=开启|营销商品用") + private Integer status; + + @ApiModelProperty(value = "运费模板ID|秒杀商品专用") + private Integer timeId; + + @ApiModelProperty(value = "秒杀开启时间|秒杀专用") + private String startTimeStr; + + @ApiModelProperty(value = "秒杀结束时间|秒杀专用") + private String stopTimeStr; + + @ApiModelProperty(value = "当天参与秒杀次数|秒杀专用") + private Integer num; + + @ApiModelProperty(value = "砍价开启时间|砍价专用") + private Long startTime; + + @ApiModelProperty(value = "砍价结束时间|砍价专用") + private Long stopTime; + + @ApiModelProperty(value = "砍价活动名称|砍价专用") + private String title; + + @ApiModelProperty(value = "帮砍次数|砍价专用") + private Integer bargainNum; + + @ApiModelProperty(value = "帮助砍价好友人数|砍价专用") + private Integer peopleNum; + + @ApiModelProperty(value = "拼团订单有效时间(小时)|拼团专用") + private Integer effectiveTime; + + @ApiModelProperty(value = "每个订单可购买数量|拼团专用") + private Integer onceNum; + + @ApiModelProperty(value = "虚拟成团百分比|拼团专用") + private Integer virtualRation; + + @ApiModelProperty(value = "参团人数|拼团专用") + private Integer people; + + @ApiModelProperty(value = "商品状态|拼团专用") + private Boolean isShow; + + @ApiModelProperty(value = "简介|拼团专用") + private String info; + + @ApiModelProperty(value = "展示图") + private String flatPattern; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreProductReplayCountResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreProductReplayCountResponse.java new file mode 100644 index 0000000..ccc2034 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreProductReplayCountResponse.java @@ -0,0 +1,60 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 商品评价数量和好评度 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="StoreProductReplayCountResponse对象", description="产品评价数量和好评度") +public class StoreProductReplayCountResponse implements Serializable { + + private static final long serialVersionUID=1L; + + public StoreProductReplayCountResponse() {} + public StoreProductReplayCountResponse(Long sumCount, Long goodCount, Long inCount, Long poorCount, String replyChance, Integer replyStar) { + this.sumCount = sumCount; + this.goodCount = goodCount; + this.inCount = inCount; + this.poorCount = poorCount; + this.replyChance = replyChance; + this.replyStar = replyStar; + } + + @ApiModelProperty(value = "评论总数") + private Long sumCount; + + @ApiModelProperty(value = "好评总数") + private Long goodCount; + + @ApiModelProperty(value = "中评总数") + private Long inCount; + + @ApiModelProperty(value = "差评总数") + private Long poorCount; + + @ApiModelProperty(value = "好评率") + private String replyChance; + + @ApiModelProperty(value = "评分星数") + private Integer replyStar; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreProductReplyResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreProductReplyResponse.java new file mode 100644 index 0000000..915a043 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreProductReplyResponse.java @@ -0,0 +1,84 @@ +package com.zbkj.common.response; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.zbkj.common.model.product.StoreProduct; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +/** + * 商品评论响应体 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class StoreProductReplyResponse { + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "评论ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "用户ID") + private Integer uid; + + @ApiModelProperty(value = "订单ID") + private Integer oid; + + @ApiModelProperty(value = "商品id") + private Integer productId; + + @ApiModelProperty(value = "某种商品类型(普通商品、秒杀商品)") + private String replyType; + + @ApiModelProperty(value = "商品分数") + private Integer productScore; + + @ApiModelProperty(value = "服务分数") + private Integer serviceScore; + + @ApiModelProperty(value = "评论内容") + private String comment; + + @ApiModelProperty(value = "评论图片") + private List pics; + + @ApiModelProperty(value = "管理员回复内容") + private String merchantReplyContent; + + @ApiModelProperty(value = "管理员回复时间") + private Integer merchantReplyTime; + + @ApiModelProperty(value = "0未删除1已删除") + private Boolean isDel; + + @ApiModelProperty(value = "0未回复1已回复") + private Boolean isReply; + + @ApiModelProperty(value = "用户名称") + private String nickname; + + @ApiModelProperty(value = "用户头像") + private String avatar; + + @ApiModelProperty(value = "评论时间") + private Date createTime; + + @ApiModelProperty(value = "更新时间") + private Date updateTime; + + @ApiModelProperty(value = "商品规格属性值") + private String sku; + + private StoreProduct storeProduct; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreProductResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreProductResponse.java new file mode 100644 index 0000000..7226782 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreProductResponse.java @@ -0,0 +1,265 @@ +package com.zbkj.common.response; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.zbkj.common.model.coupon.StoreCoupon; +import com.zbkj.common.model.product.StoreProductAttr; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +/** + * 商品表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_store_product") +@ApiModel(value="StoreProduct对象", description="商品表") +public class StoreProductResponse implements Serializable { + + @ApiModelProperty(value = "商品id") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "商户Id(0为总后台管理员创建,不为0的时候是商户后台创建)") + private Integer merId; + + @ApiModelProperty(value = "商品图片") + private String image; + + @ApiModelProperty(value = "轮播图") + private String sliderImage; + + @ApiModelProperty(value = "商品名称") + private String storeName; + + @ApiModelProperty(value = "商品简介") + private String storeInfo; + + @ApiModelProperty(value = "关键字") + private String keyword; + + @ApiModelProperty(value = "商品条码(一维码)") + private String barCode; + + @ApiModelProperty(value = "分类id") + private String cateId; + + @ApiModelProperty(value = "分类中文") + private String cateValues; + + @ApiModelProperty(value = "商品价格") + private BigDecimal price; + + @ApiModelProperty(value = "会员价格") + private BigDecimal vipPrice; + + @ApiModelProperty(value = "市场价") + private BigDecimal otPrice; + + @ApiModelProperty(value = "邮费") + private BigDecimal postage; + + @ApiModelProperty(value = "单位名") + private String unitName; + + @ApiModelProperty(value = "排序") + private Integer sort; + + @ApiModelProperty(value = "销量") + private Integer sales; + + @ApiModelProperty(value = "库存") + private Integer stock; + + @ApiModelProperty(value = "状态(0:未上架,1:上架)") + private Boolean isShow; + + @ApiModelProperty(value = "是否热卖") + private Boolean isHot; + + @ApiModelProperty(value = "是否优惠") + private Boolean isBenefit; + + @ApiModelProperty(value = "是否精品") + private Boolean isBest; + + @ApiModelProperty(value = "是否新品") + private Boolean isNew; + + @ApiModelProperty(value = "添加时间") + private Integer addTime; + + @ApiModelProperty(value = "是否包邮") + private Boolean isPostage; + + @ApiModelProperty(value = "是否删除") + private Boolean isDel; + + @ApiModelProperty(value = "商户是否代理 0不可代理1可代理") + private Boolean merUse; + + @ApiModelProperty(value = "获得积分") + private Integer giveIntegral; + + @ApiModelProperty(value = "成本价") + private BigDecimal cost; + + @ApiModelProperty(value = "秒杀状态 0 未开启 1已开启") + private Boolean isSeckill; + + @ApiModelProperty(value = "砍价状态 0未开启 1开启") + private Boolean isBargain; + + @ApiModelProperty(value = "是否优品推荐") + private Boolean isGood; + + @ApiModelProperty(value = "是否单独分佣") + private Boolean isSub; + + @ApiModelProperty(value = "虚拟销量") + private Integer ficti; + + @ApiModelProperty(value = "浏览量") + private Integer browse; + + @ApiModelProperty(value = "商品二维码地址(用户小程序海报)") + private String codePath; + + @ApiModelProperty(value = "淘宝京东1688类型") + private String soureLink; + + @ApiModelProperty(value = "主图视频链接") + private String videoLink; + + @ApiModelProperty(value = "运费模板ID") + private Integer tempId; + + @ApiModelProperty(value = "规格 0单 1多") + private Boolean specType; + + @ApiModelProperty(value = "活动显示排序 0=默认,1=秒杀,2=砍价,3=拼团") + private String activity; + + @ApiModelProperty(value = "活动显示排序 0=默认,1=秒杀,2=砍价,3=拼团") + private String activityStr; + + @ApiModelProperty(value = "为移动端特定参数") + private ProductActivityItemResponse activityH5; + + @ApiModelProperty(value = "为移动端特定参数 所有参与的活动") + private List activityAllH5; + + @ApiModelProperty(value = "商品属性") + private List attr; + + @ApiModelProperty(value = "商品属性详情") + private List attrValue; + + @ApiModelProperty(value = "管理端用于映射attrResults") + private List> attrValues; + + private Integer[] cateIds; + + @ApiModelProperty(value = "商品描述") + private String content; + + @ApiModelProperty(value = "收藏数量") + private Integer collectCount; + + @ApiModelProperty(value = "优惠券") + private List coupons; + + @ApiModelProperty(value = "优惠券Ids") + private List couponIds; + + // 秒杀用到 + @ApiModelProperty(value = "活动标题") + private String title; + + @ApiModelProperty(value = "简介") + private String info; + + @ApiModelProperty(value = "时间段ID") + private Integer timeId; + + @ApiModelProperty(value = "最多秒杀几个") + private Integer num; + + @ApiModelProperty(value = "开始时间") + private Date startTime; + + @ApiModelProperty(value = "结束时间") + private Date stopTime; + + @ApiModelProperty(value = "开始时间") + private String startTimeStr; + + @ApiModelProperty(value = "结束时间") + private String stopTimeStr; + + @ApiModelProperty(value = "秒杀状态 0=关闭 1=开启") + private Integer status; + + @ApiModelProperty(value = "商品id") + private Integer productId; + + @ApiModelProperty(value = "秒杀轮播图") + private String images; + + @ApiModelProperty(value = "限购数量 - 销量") + private Integer quota; + + @ApiModelProperty(value = "限购总数") + private Integer quotaShow; + + @ApiModelProperty(value = "砍价规则") + private String rule; + + @ApiModelProperty(value = "用户每次砍价的次数") + private Integer bargainNum; + + @ApiModelProperty(value = "帮助砍价好友人数") + private Integer peopleNum; + + // 拼团部分 + @ApiModelProperty(value = "推荐") + private Boolean isHost; + + @ApiModelProperty(value = "参团人数") + private Integer people; + + @ApiModelProperty(value = "拼团订单有效时间(小时)") + private Integer effectiveTime; + + @ApiModelProperty(value = "单次购买数量") + private Integer onceNum; + + @ApiModelProperty(value = "虚拟成团百分比") + private Integer virtualRation; + + @ApiModelProperty(value = "砍价商品最低价") + private BigDecimal minPrice; + + @ApiModelProperty(value = "砍价结束时间") + private Long endTime; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreProductTabsHeader.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreProductTabsHeader.java new file mode 100644 index 0000000..7a8930d --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreProductTabsHeader.java @@ -0,0 +1,31 @@ +package com.zbkj.common.response; + +import lombok.Data; + +/** + * StoreProductTabsHeader + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class StoreProductTabsHeader { + private Integer count; + private String name; + private Integer type; // 1=出售中商品 2=仓库中商品 4=已经售罄商品 5=警戒库存 6=商品回收站 + + public StoreProductTabsHeader() { + } + + public StoreProductTabsHeader(Integer count, String name, Integer type) { + this.count = count; + this.name = name; + this.type = type; + } +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreSecKillH5Response.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreSecKillH5Response.java new file mode 100644 index 0000000..034a413 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreSecKillH5Response.java @@ -0,0 +1,55 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 秒杀商品移动端对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="StoreSecKillH5Response对象", description="秒杀商品移动端对象") +public class StoreSecKillH5Response implements Serializable { + + private static final long serialVersionUID = -885733985825623484L; + + @ApiModelProperty(value = "商品秒杀产品表id") + private Integer id; + + @ApiModelProperty(value = "推荐图") + private String image; + + @ApiModelProperty(value = "活动标题") + private String title; + + @ApiModelProperty(value = "价格") + private BigDecimal price; + + @ApiModelProperty(value = "原价") + private BigDecimal otPrice; + + @ApiModelProperty(value = "单位名") + private String unitName; + + @ApiModelProperty(value = "限购总数") + private Integer quota; + + @ApiModelProperty(value = "已抢百分比") + private Integer percent; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreSeckillDetailResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreSeckillDetailResponse.java new file mode 100644 index 0000000..c1a118a --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreSeckillDetailResponse.java @@ -0,0 +1,51 @@ +package com.zbkj.common.response; + +import com.zbkj.common.model.product.StoreProductAttr; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.HashMap; +import java.util.List; + +/** + * 商品秒杀详情响应对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="StoreSeckillDetailResponse对象", description="商品秒杀详情响应对象") +public class StoreSeckillDetailResponse implements Serializable { + + private static final long serialVersionUID = -4101548587444327191L; + + @ApiModelProperty(value = "产品属性") + private List productAttr; + + @ApiModelProperty(value = "商品属性详情") + private HashMap productValue; + + @ApiModelProperty(value = "返佣金额区间") + private String priceName; + + @ApiModelProperty(value = "收藏标识") + private Boolean userCollect; + + @ApiModelProperty(value = "秒杀商品信息") + private SecKillDetailH5Response storeSeckill; + + @ApiModelProperty(value = "主商品状态:normal-正常,sellOut-售罄,soldOut-下架,delete-删除") + private String masterStatus; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreSeckillManagerResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreSeckillManagerResponse.java new file mode 100644 index 0000000..a993565 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreSeckillManagerResponse.java @@ -0,0 +1,109 @@ +package com.zbkj.common.response; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.zbkj.common.utils.DateUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * StoreSeckillMsnsgerResponse + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class StoreSeckillManagerResponse { + private static final long serialVersionUID=1L; + + // 自定义statusName值 + // 开启 = status = 1 && 当前时间小于startTime + // 关闭 = status = 0 + // 进行中 = status = 1 && 当前时间大于startTime 小于 stopTime + // 已结束 = status = 1 && 当前时间大于结束时间 + // 秒杀状态【仅仅前端用】 killStatus 1=即将开始 0=关闭 2=进行中 -1=已结束 + public String getStatusName() { + String _statusName = null; + int currentHour = DateUtil.getCurrentHour(); + if(status == 1 && currentHour < startTime){ + _statusName = "即将开始"; + } + else if(status == 0) { + _statusName = "关闭"; + } + else if(status == 1 && currentHour < endTime) { + _statusName = "进行中"; + } + else if(status == 1 && currentHour >= endTime) { + _statusName = "已结束"; + } + return _statusName; + } + + public Integer getKillStatus() { + Integer _killStatus = null; + if(status == 1 && DateUtil.getCurrentHour() < startTime){ + _killStatus = 1; + } + else if(status == 0) { + _killStatus = 0; + } + else if(status == 1 && DateUtil.getCurrentHour() >= startTime + && DateUtil.getCurrentHour() < endTime) { + _killStatus = 2; + } + else if(status == 1 && DateUtil.getCurrentHour() >= endTime) { + _killStatus = -1; + } + return _killStatus; + } + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "秒杀名称") + private String name; + + @ApiModelProperty(value = "秒杀开始时间段") + private Integer startTime; + + @ApiModelProperty(value = "秒杀结束时间段") + private Integer endTime; + + private String time; + + @ApiModelProperty(value = "主图") + private String img; + + @ApiModelProperty(value = "轮播图") + private String silderImgs; + + @ApiModelProperty(value = "秒杀状态,前端用") + private Integer killStatus; + + @ApiModelProperty(value = "排序") + private Integer sort; + + @ApiModelProperty(value = "状态 0=关闭 1=开启") + private Integer status; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "更新时间") + private Date updateTime; + + @ApiModelProperty(value = "0未删除1已删除") + private Boolean isDel; + + @ApiModelProperty(value = "秒杀状态String 未开始/进行中/活动已结束") + private String statusName; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreSeckillResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreSeckillResponse.java new file mode 100644 index 0000000..a9f9bc3 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreSeckillResponse.java @@ -0,0 +1,163 @@ +package com.zbkj.common.response; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.zbkj.common.model.product.StoreProductAttr; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +/** + * 秒杀商品 response + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class StoreSeckillResponse { + + @ApiModelProperty(value = "商品秒杀产品表id") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "商品id") + private Integer productId; + + @ApiModelProperty(value = "推荐图") + private String image; + + @ApiModelProperty(value = "轮播图") + private List images; + + @ApiModelProperty(value = "活动标题") + private String title; + + @ApiModelProperty(value = "简介") + private String info; + + @ApiModelProperty(value = "价格") + private BigDecimal price; + + @ApiModelProperty(value = "成本") + private BigDecimal cost; + + @ApiModelProperty(value = "原价") + private BigDecimal otPrice; + + @ApiModelProperty(value = "返多少积分") + private Integer giveIntegral; + + @ApiModelProperty(value = "排序") + private Integer sort; + + @ApiModelProperty(value = "库存") + private Integer stock; + + @ApiModelProperty(value = "销量") + private Integer sales; + + @ApiModelProperty(value = "单位名") + private String unitName; + + @ApiModelProperty(value = "邮费") + private BigDecimal postage; + + @ApiModelProperty(value = "内容") + private String description; + + @ApiModelProperty(value = "开始时间") + @JsonFormat(pattern="yyyy-MM-dd") + private Date startTime; + + @ApiModelProperty(value = "结束时间") + @JsonFormat(pattern="yyyy-MM-dd") + private Date stopTime; + + @ApiModelProperty(value = "添加时间") + private Date createTime; + + @ApiModelProperty(value = "秒杀状态 原本 0=关闭 1=开启") + private Integer status; + + @ApiModelProperty(value = "秒杀状态String 未开始/进行中/活动已结束") + private String statusName; + + @ApiModelProperty(value = "秒杀状态,前端用") + private Integer killStatus; + + @ApiModelProperty(value = "是否包邮") + private Boolean isPostage; + + @ApiModelProperty(value = "删除 0未删除1已删除") + private Boolean isDel; + + @ApiModelProperty(value = "最多秒杀几个") + private Integer num; + + @ApiModelProperty(value = "剩余限量") + private int limitLeftNum; + + @ApiModelProperty(value = "显示") + private Boolean isShow; + + @ApiModelProperty(value = "时间段ID") + private Integer timeId; + + @ApiModelProperty(value = "运费模板ID") + private Integer tempId; + + @ApiModelProperty(value = "重量") + private BigDecimal weight; + + @ApiModelProperty(value = "体积") + private BigDecimal volume; + + @ApiModelProperty(value = "限购总数") + private Integer quota; + + @ApiModelProperty(value = "限购总数显示") + private Integer quotaShow; + + @ApiModelProperty(value = "商品属性") + private List attr; + + @ApiModelProperty(value = "商品属性详情") + private List attrValue; + + @ApiModelProperty(value = "管理端用于映射attrResults") + private List> attrValues; + + private Integer[] cateIds; + + @ApiModelProperty(value = "商品描述") + private String content; + + @ApiModelProperty(value = "秒杀配置") + private StoreSeckillManagerResponse storeSeckillManagerResponse; + + @ApiModelProperty(value = "规格 0单 1多") + private boolean specType; + + @ApiModelProperty(value = "时间戳") + private String timeSwap; + + @ApiModelProperty(value = "已抢百分比") + private Integer percent; + + @ApiModelProperty(value = "当前正在秒杀的timeId") + private Integer currentTimeId; + + @ApiModelProperty(value = "当前参与的秒杀的时间段") + private String currentTime; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreStaffDetail.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreStaffDetail.java new file mode 100644 index 0000000..bebd642 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreStaffDetail.java @@ -0,0 +1,24 @@ +package com.zbkj.common.response; + +import lombok.Data; + +import java.math.BigDecimal; + +/** + * 核销月详情Response + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class StoreStaffDetail { + private Integer count; + private BigDecimal price; + private String time; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreStaffTopDetail.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreStaffTopDetail.java new file mode 100644 index 0000000..3aded6e --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreStaffTopDetail.java @@ -0,0 +1,36 @@ +package com.zbkj.common.response; + +import lombok.Data; + +import java.math.BigDecimal; + +/** + * 核销订单top数据对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class StoreStaffTopDetail { + private Integer completeCount; // 订单完成订单数量 + private Integer evaluatedCount;// 待评价订单数量 + private Integer monthCount; + private BigDecimal monthPrice; + private Integer orderCount; + private Integer proCount; + private BigDecimal proPrice; + private Integer receivedCount; + private Integer refundCount; + private BigDecimal sumPrice; + private Integer todayCount; + private BigDecimal todayPrice; + private Integer unpaidCount; + private Integer unshippedCount; + private Integer verificationCount;// 待核销数量 +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SystemAdminResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SystemAdminResponse.java new file mode 100644 index 0000000..0a596fd --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SystemAdminResponse.java @@ -0,0 +1,62 @@ +package com.zbkj.common.response; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * 系统管理员Response对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class SystemAdminResponse implements Serializable { + + private Integer id; + + private String account; + +// private String pwd; + + private String realName; + + private String roles; + + private String roleNames; + + private String lastIp; + + private Date lastTime; + + private Integer addTime; + + private Integer loginCount; + + private Integer level; + + private Boolean status; + +// private Boolean isDel; + + private String Token; + + @ApiModelProperty(value = "手机号码") + private String phone; + + @ApiModelProperty(value = "是否接收短信") + private Boolean isSms; + + @ApiModelProperty(value = "权限标识数组") + private List permissionsList; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SystemGroupDataAdminLoginBannerResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SystemGroupDataAdminLoginBannerResponse.java new file mode 100644 index 0000000..e981044 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SystemGroupDataAdminLoginBannerResponse.java @@ -0,0 +1,34 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 门店店员表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="SystemGroupDataAdminLoginBannerResponse对象", description="后台登录页面轮播图") +public class SystemGroupDataAdminLoginBannerResponse implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "图片") + private String pic; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SystemGroupDataOrderStatusPicResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SystemGroupDataOrderStatusPicResponse.java new file mode 100644 index 0000000..d5f40bf --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SystemGroupDataOrderStatusPicResponse.java @@ -0,0 +1,37 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 订单状态图片 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="SystemGroupDataOrderStatusPicResponse对象", description="订单状态图片") +public class SystemGroupDataOrderStatusPicResponse implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "订单状态") + private int orderStatus; + + @ApiModelProperty(value = "图片地址") + private String url; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SystemLoginResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SystemLoginResponse.java new file mode 100644 index 0000000..ab375a7 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SystemLoginResponse.java @@ -0,0 +1,44 @@ +package com.zbkj.common.response; + + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * PC登录返回对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="SystemLoginResponse对象", description="PC登录返回对象") +public class SystemLoginResponse implements Serializable { + + @ApiModelProperty(value = "id") + private Integer id; + + @ApiModelProperty(value = "管理员账号") + private String account; + + @ApiModelProperty(value = "管理员昵称") + private String realName; + + @ApiModelProperty(value = "token") + private String Token; + + @ApiModelProperty(value = "是否接收短信") + private Boolean isSms; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SystemStoreStaffResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SystemStoreStaffResponse.java new file mode 100644 index 0000000..9ef9c75 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SystemStoreStaffResponse.java @@ -0,0 +1,73 @@ +package com.zbkj.common.response; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.zbkj.common.model.system.SystemStore; +import com.zbkj.common.model.user.User; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + +/** + * 门店店员表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_system_store_staff") +@ApiModel(value="SystemStoreStaffResponse对象", description="门店店员表") +public class SystemStoreStaffResponse implements Serializable { + + private static final long serialVersionUID=1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "微信用户id") + private Integer uid; + + @ApiModelProperty(value = "店员头像") + private String avatar; + + @ApiModelProperty(value = "用户信息") + private User user; + + @ApiModelProperty(value = "门店id") + private Integer storeId; + + @ApiModelProperty(value = "门店") + private SystemStore systemStore; + + @ApiModelProperty(value = "店员名称") + private String staffName; + + @ApiModelProperty(value = "手机号码") + private String phone; + + @ApiModelProperty(value = "核销开关") + private Integer verifyStatus; + + @ApiModelProperty(value = "状态") + private Integer status; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "更新时间") + private Date updateTime; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SystemWriteOffOrderResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SystemWriteOffOrderResponse.java new file mode 100644 index 0000000..bdd5bf0 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SystemWriteOffOrderResponse.java @@ -0,0 +1,47 @@ +package com.zbkj.common.response; + +import java.math.BigDecimal; +import java.io.Serializable; + +import com.zbkj.common.page.CommonPage; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 订单表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="SystemWriteOffOrderResponse对象", description="核销订单") +public class SystemWriteOffOrderResponse implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "订单总数量") + private Long total = 0L; + + @ApiModelProperty(value = "订单总金额") + private BigDecimal orderTotalPrice; + + @ApiModelProperty(value = "退款总金额") + private BigDecimal refundTotalPrice; + + @ApiModelProperty(value = "退款总单数") + private Integer refundTotal = 0; + + @ApiModelProperty(value = "订单列表") + private CommonPage list; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/TopDetail.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/TopDetail.java new file mode 100644 index 0000000..d58eba7 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/TopDetail.java @@ -0,0 +1,36 @@ +package com.zbkj.common.response; + +import com.zbkj.common.model.user.User; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * 会员详情顶部信息 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class TopDetail { + + private User user; + // 余额 + private BigDecimal balance; + // 积分 + private Integer integralCount; + // 总计订单 + private Integer allOrderCount; + // 本月订单 + private Integer mothOrderCount; + // 总消费金额 + private BigDecimal allConsumeCount; + // 本月消费金额 + private BigDecimal mothConsumeCount; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/TradeDataResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/TradeDataResponse.java new file mode 100644 index 0000000..76dcf2f --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/TradeDataResponse.java @@ -0,0 +1,59 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 交易统计数据对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="TradeDataResponse对象", description="交易统计数据对象") +public class TradeDataResponse implements Serializable { + + private static final long serialVersionUID = -6332062115310922579L; + + @ApiModelProperty(value = "今日订单数量") + private Integer todayOrderNum; + + @ApiModelProperty(value = "昨日订单数量") + private Integer yesterdayOrderNum; + + @ApiModelProperty(value = "昨日交易数量日环比") + private String yesterdayOrderNumRatio; + + @ApiModelProperty(value = "昨日交易金额") + private BigDecimal yesterdayOrderSales; + + @ApiModelProperty(value = "昨日交易金额日环比") + private String yesterdayOrderSalesRatio; + + @ApiModelProperty(value = "本月交易数量") + private Integer monthOrderNum; + + @ApiModelProperty(value = "本月交易数量月环比") + private String monthOrderNumRatio; + + @ApiModelProperty(value = "本月交易金额") + private BigDecimal monthOrderSales; + + @ApiModelProperty(value = "本月交易金额月环比") + private String monthOrderSalesRatio; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/TradingDataResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/TradingDataResponse.java new file mode 100644 index 0000000..0002edc --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/TradingDataResponse.java @@ -0,0 +1,74 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 交易概览数据对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="TradingDataResponse对象", description="交易概览数据对象") +public class TradingDataResponse implements Serializable { + + private static final long serialVersionUID = -6332062115310922579L; + + @ApiModelProperty(value = "营业额") + private BigDecimal turnover; + + @ApiModelProperty(value = "营业额环比") + private String turnoverRatio; + + @ApiModelProperty(value = "商品支付金额") + private BigDecimal proPayAmount; + + @ApiModelProperty(value = "商品支付金额环比") + private String proPayAmountRatio; + + @ApiModelProperty(value = "充值金额") + private BigDecimal rechargeAmount; + + @ApiModelProperty(value = "充值金额环比") + private String rechargeAmountRatio; + + @ApiModelProperty(value = "支出金额") + private BigDecimal payoutAmount; + + @ApiModelProperty(value = "支出金额环比") + private String payoutAmountRatio; + + @ApiModelProperty(value = "余额支付金额") + private BigDecimal balanceAmount; + + @ApiModelProperty(value = "余额支付金额月环比") + private String balanceAmountRatio; + + @ApiModelProperty(value = "支付佣金金额") + private BigDecimal payoutBrokerageAmount; + + @ApiModelProperty(value = "支付佣金金额环比") + private String payoutBrokerageAmountRatio; + + @ApiModelProperty(value = "商品退款金额") + private BigDecimal proRefundAmount; + + @ApiModelProperty(value = "商品退款金额环比") + private String proRefundAmountRatio; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/TrandeTrendDateResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/TrandeTrendDateResponse.java new file mode 100644 index 0000000..f0c6710 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/TrandeTrendDateResponse.java @@ -0,0 +1,47 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 交易概览数据对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="TradingDataResponse对象", description="交易概览数据对象") +public class TrandeTrendDateResponse implements Serializable { + + private static final long serialVersionUID = -6332062115310922579L; + + @ApiModelProperty(value = "日期") + private String date; + + @ApiModelProperty(value = "营业额") + private BigDecimal turnover; + + @ApiModelProperty(value = "商品支付金额") + private BigDecimal proPayAmount; + + @ApiModelProperty(value = "充值金额") + private BigDecimal rechargeAmount; + + @ApiModelProperty(value = "支出金额") + private BigDecimal payoutAmount; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserAreaDataResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserAreaDataResponse.java new file mode 100644 index 0000000..ebad2fe --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserAreaDataResponse.java @@ -0,0 +1,44 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 用户区域数据对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="UserAreaDataResponse对象", description="用户区域数据对象") +public class UserAreaDataResponse implements Serializable { + + private static final long serialVersionUID = -6332062115310922579L; + + @ApiModelProperty(value = "区域(省份+其他)") + private String area; + + @ApiModelProperty(value = "累计用户数量") + private Integer userNum; + + @ApiModelProperty(value = "成交用户数量") + private Integer payUserNum; + + @ApiModelProperty(value = "支付金额") + private BigDecimal payAmount; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserBalanceResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserBalanceResponse.java new file mode 100644 index 0000000..e71daec --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserBalanceResponse.java @@ -0,0 +1,49 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.List; + +/** + * 用户资金统计 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="UserBalanceResponse对象", description="用户资金统计") +public class UserBalanceResponse implements Serializable { + public UserBalanceResponse(){} + public UserBalanceResponse(BigDecimal nowMoney, BigDecimal recharge, BigDecimal orderStatusSum) { + this.nowMoney = nowMoney; + this.recharge = recharge; + this.orderStatusSum = orderStatusSum; + } + + private static final long serialVersionUID=1L; + + + @ApiModelProperty(value = "当前总资金") + private BigDecimal nowMoney; + + @ApiModelProperty(value = "累计充值") + private BigDecimal recharge; + + @ApiModelProperty(value = "累计消费") + private BigDecimal orderStatusSum; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserBillResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserBillResponse.java new file mode 100644 index 0000000..b5f4c91 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserBillResponse.java @@ -0,0 +1,82 @@ +package com.zbkj.common.response; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 用户账单表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_user_bill") +@ApiModel(value="UserBill对象", description="用户账单表") +public class UserBillResponse implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "用户账单id") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "用户uid") + private Integer uid; + + @ApiModelProperty(value = "关联id") + private String linkId; + + @ApiModelProperty(value = "0 = 支出 1 = 获得") + private int pm; + + @ApiModelProperty(value = "账单标题") + private String title; + + @ApiModelProperty(value = "明细种类") + private String category; + + @ApiModelProperty(value = "明细类型") + private String type; + + @ApiModelProperty(value = "明细数字") + private BigDecimal number; + + @ApiModelProperty(value = "剩余") + private BigDecimal balance; + + @ApiModelProperty(value = "备注") + private String mark; + + @ApiModelProperty(value = "0 = 带确定 1 = 有效 -1 = 无效") + private int status; + + @ApiModelProperty(value = "更新时间") + private Date updateTime; + + @JsonProperty(value = "createTime") + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "用户昵称") + private String nickName; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserCenterResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserCenterResponse.java new file mode 100644 index 0000000..1e49fa5 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserCenterResponse.java @@ -0,0 +1,88 @@ +package com.zbkj.common.response; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 个人中心响应对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="UserCenterResponse对象", description="个人中心响应对象") +public class UserCenterResponse implements Serializable { + + private static final long serialVersionUID=1L; + +// @ApiModelProperty(value = "合伙人id") +// private Integer partnerId; + + @ApiModelProperty(value = "用户昵称") + private String nickname; + + @ApiModelProperty(value = "用户头像") + private String avatar; + + @ApiModelProperty(value = "手机号码") + private String phone; + + @ApiModelProperty(value = "用户余额") + private BigDecimal nowMoney; + + @ApiModelProperty(value = "用户剩余积分") + private Integer integral; + + @ApiModelProperty(value = "用户剩余经验") + private Integer experience; + + @ApiModelProperty(value = "佣金金额") + private BigDecimal brokeragePrice; + +// @ApiModelProperty(value = "连续签到天数") +// private Integer signNum; + + @ApiModelProperty(value = "等级") + private Integer level; + +// @ApiModelProperty(value = "推广元id") +// private Integer spreadUid; + + @ApiModelProperty(value = "是否为推广员") + private Boolean isPromoter; + + @ApiModelProperty(value = "用户优惠券数量") + private Integer couponCount; + + @ApiModelProperty(value = "是否会员") + private boolean vip; + + @ApiModelProperty(value = "会员图标") + private String vipIcon; + + @ApiModelProperty(value = "会员名称") + private String vipName; + + @ApiModelProperty(value = "小程序充值开关") + private Boolean rechargeSwitch; + + @ApiModelProperty(value = "用户收藏数量") + private Integer collectCount; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserChannelDataResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserChannelDataResponse.java new file mode 100644 index 0000000..acb48a3 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserChannelDataResponse.java @@ -0,0 +1,36 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 用户渠道数据对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="UserChannelDataResponse对象", description="用户渠道数据对象") +public class UserChannelDataResponse implements Serializable { + + private static final long serialVersionUID = -6004724917253583732L; + + @ApiModelProperty(value = "性别,h5,ios,routine,wechat") + private String channel; + + @ApiModelProperty(value = "数量") + private Integer num; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserCommissionResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserCommissionResponse.java new file mode 100644 index 0000000..9792149 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserCommissionResponse.java @@ -0,0 +1,40 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 推广佣金明细 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="UserCommissionResponse对象", description="推广佣金明细") +public class UserCommissionResponse implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "昨天的佣金") + private BigDecimal lastDayCount = BigDecimal.ZERO; + + @ApiModelProperty(value = "累计提现金额") + private BigDecimal extractCount = BigDecimal.ZERO; + + @ApiModelProperty(value = "当前佣金") + private BigDecimal commissionCount = BigDecimal.ZERO; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserExtractCashResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserExtractCashResponse.java new file mode 100644 index 0000000..9ef0dec --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserExtractCashResponse.java @@ -0,0 +1,54 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.List; + +/** + * 提现用户信息响应对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="UserExtractCashResponse对象", description="提现用户信息响应对象") +public class UserExtractCashResponse implements Serializable { + public UserExtractCashResponse(){} + public UserExtractCashResponse(String minPrice, BigDecimal commissionCount, BigDecimal brokenCommission, String brokenDay) { + this.minPrice = minPrice; + this.commissionCount = commissionCount; + this.brokenCommission = brokenCommission; + this.brokenDay = brokenDay; + } + + private static final long serialVersionUID=1L; + +// @ApiModelProperty(value = "提现银行") +// private List extractBank; + + @ApiModelProperty(value = "提现最低金额") + private String minPrice; + + @ApiModelProperty(value = "可提现佣金") + private BigDecimal commissionCount; + + @ApiModelProperty(value = "冻结佣金") + private BigDecimal brokenCommission; + + @ApiModelProperty(value = "冻结天数") + private String brokenDay; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserExtractRecordResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserExtractRecordResponse.java new file mode 100644 index 0000000..0958914 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserExtractRecordResponse.java @@ -0,0 +1,43 @@ +package com.zbkj.common.response; + +import com.zbkj.common.model.finance.UserExtract; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.util.List; + +/** + * 提现记录响应对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="UserExtractRecordResponse对象", description="用户提现记录对象") +public class UserExtractRecordResponse { + + private static final long serialVersionUID=1L; + + public UserExtractRecordResponse() {} + public UserExtractRecordResponse(String date, List list) { + this.date = date; + this.list = list; + } + + @ApiModelProperty(value = "月份") + private String date; + + @ApiModelProperty(value = "数据") + private List list; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserExtractResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserExtractResponse.java new file mode 100644 index 0000000..e9ed278 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserExtractResponse.java @@ -0,0 +1,30 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * 提现数据用于分销 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class UserExtractResponse { + // 提现数据总额 + @ApiModelProperty(value = "体现数据总额") + private BigDecimal extractCountPrice; + // 提现次数 + @ApiModelProperty(value = "提现次数") + private Integer extractCountNum; + // 提现用户id +// private Integer euid; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserIntegralRecordResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserIntegralRecordResponse.java new file mode 100644 index 0000000..432161b --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserIntegralRecordResponse.java @@ -0,0 +1,79 @@ +package com.zbkj.common.response; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + +/** + * 用户积分记录响应对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="UserIntegralRecordResponse对象", description="用户积分记录响应对象") +public class UserIntegralRecordResponse implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "记录id") + private Integer id; + + @ApiModelProperty(value = "用户uid") + private Integer uid; + + @ApiModelProperty(value = "关联id-orderNo,(sign,system默认为0)") + private String linkId; + + @ApiModelProperty(value = "关联类型(order,sign,system)") + private String linkType; + + @ApiModelProperty(value = "类型:1-增加,2-扣减") + private Integer type; + + @ApiModelProperty(value = "标题") + private String title; + + @ApiModelProperty(value = "积分") + private Integer integral; + + @ApiModelProperty(value = "剩余") + private Integer balance; + + @ApiModelProperty(value = "备注") + private String mark; + + @ApiModelProperty(value = "状态:1-订单创建,2-冻结期,3-完成,4-失效(订单退款)") + private Integer status; + + @ApiModelProperty(value = "冻结期时间(天)") + private Integer frozenTime; + + @ApiModelProperty(value = "解冻时间") + private Long thawTime; + + @ApiModelProperty(value = "添加时间") + private Date createTime; + + @ApiModelProperty(value = "更新时间") + private Date updateTime; + + @ApiModelProperty(value = "用户昵称") + private String nickName; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserOverviewDateResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserOverviewDateResponse.java new file mode 100644 index 0000000..a4b5f66 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserOverviewDateResponse.java @@ -0,0 +1,59 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 用户概览日数据对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="UserOverviewDateResponse对象", description="用户概览日数据对象") +public class UserOverviewDateResponse implements Serializable { + + private static final long serialVersionUID = -6332062115310922579L; + + @ApiModelProperty(value = "日期") + private String date; + + @ApiModelProperty(value = "注册用户数") + private Integer registerNum; + + @ApiModelProperty(value = "活跃用户数") + private Integer activeUserNum; + + @ApiModelProperty(value = "充值用户数") + private Integer rechargeUserNum; + + @ApiModelProperty(value = "浏览量") + private Integer pageviews; + + @ApiModelProperty(value = "下单用户数量") + private Integer orderUserNum; + + @ApiModelProperty(value = "成交用户数量") + private Integer orderPayUserNum; + + @ApiModelProperty(value = "成交金额") + private BigDecimal payOrderAmount; + + @ApiModelProperty(value = "客单价") + private BigDecimal customerPrice; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserOverviewResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserOverviewResponse.java new file mode 100644 index 0000000..e0323cc --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserOverviewResponse.java @@ -0,0 +1,65 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 用户概览数据对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="UserOverviewResponse对象", description="用户概览数据对象") +public class UserOverviewResponse implements Serializable { + + private static final long serialVersionUID = -6332062115310922579L; + + @ApiModelProperty(value = "注册用户数") + private Integer registerNum; + + @ApiModelProperty(value = "注册用户数环比") + private String registerNumRatio; + + @ApiModelProperty(value = "活跃用户数") + private Integer activeUserNum; + + @ApiModelProperty(value = "活跃用户数环比") + private String activeUserNumRatio; + + @ApiModelProperty(value = "充值用户数") + private Integer rechargeUserNum; + + @ApiModelProperty(value = "充值用户数环比") + private String rechargeUserNumRatio; + + @ApiModelProperty(value = "浏览量") + private Integer pageviews; + + @ApiModelProperty(value = "下单用户数量") + private Integer orderUserNum; + + @ApiModelProperty(value = "成交用户数量") + private Integer orderPayUserNum; + + @ApiModelProperty(value = "成交金额") + private BigDecimal payOrderAmount; + + @ApiModelProperty(value = "客单价") + private BigDecimal customerPrice; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserRechargeBillRecordResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserRechargeBillRecordResponse.java new file mode 100644 index 0000000..59335f2 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserRechargeBillRecordResponse.java @@ -0,0 +1,38 @@ +package com.zbkj.common.response; + +import com.zbkj.common.model.user.UserBill; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.List; + +/** + * 用户余额账单记录 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="UserRechargeBillRecordResponse对象", description="用户余额账单记录") +public class UserRechargeBillRecordResponse implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "月份") + private String date; + + @ApiModelProperty(value = "数据") + private List list; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserRechargeFrontResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserRechargeFrontResponse.java new file mode 100644 index 0000000..c6a0350 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserRechargeFrontResponse.java @@ -0,0 +1,37 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.List; + +/** + * 充值响应对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="UserRechargeFrontResponse对象", description="充值响应对象") +public class UserRechargeFrontResponse implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "充值套餐列表") + private List rechargeQuota; + + @ApiModelProperty(value = "注意事项") + private List rechargeAttention; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserRechargeItemResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserRechargeItemResponse.java new file mode 100644 index 0000000..0200984 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserRechargeItemResponse.java @@ -0,0 +1,40 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 充值套餐响应对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="UserRechargeItemResponse对象", description="充值套餐响应对象") +public class UserRechargeItemResponse implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "充值模板id") + private Integer id; + + @ApiModelProperty(value = "充值金额") + private String price; + + @ApiModelProperty(value = "赠送金额") + private String giveMoney; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserRechargeResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserRechargeResponse.java new file mode 100644 index 0000000..552cc53 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserRechargeResponse.java @@ -0,0 +1,61 @@ +package com.zbkj.common.response; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 用户充值 response + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class UserRechargeResponse { + + @ApiModelProperty(value = "充值记录ID") + private Integer id; + + @ApiModelProperty(value = "充值用户UID") + private Integer uid; + + @ApiModelProperty(value = "订单号") + private String orderId; + + @ApiModelProperty(value = "充值金额") + private BigDecimal price; + + @ApiModelProperty(value = "购买赠送金额") + private BigDecimal givePrice; + + @ApiModelProperty(value = "充值类型") + private String rechargeType; + + @ApiModelProperty(value = "是否充值") + private Boolean paid; + + @ApiModelProperty(value = "充值支付时间") + private Date payTime; + + @ApiModelProperty(value = "充值时间") + private Date createTime; + + @ApiModelProperty(value = "退款金额") + private BigDecimal refundPrice; + + @ApiModelProperty(value = "头像") + private String avatar; + + @ApiModelProperty(value = "昵称") + private String nickname; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserRelationResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserRelationResponse.java new file mode 100644 index 0000000..380769a --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserRelationResponse.java @@ -0,0 +1,50 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 用户收藏响应对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="UserRelationResponse对象", description="用户收藏响应对象") +public class UserRelationResponse implements Serializable { + + private static final long serialVersionUID = -7274202699019791930L; + + @ApiModelProperty(value = "收藏id") + private Integer id; + + @ApiModelProperty(value = "商品ID") + private Integer productId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "商品名称") + private String storeName; + + @ApiModelProperty(value = "商品图片") + private String image; + + @ApiModelProperty(value = "商品价格") + private BigDecimal price; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserResponse.java new file mode 100644 index 0000000..3df0b5d --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserResponse.java @@ -0,0 +1,151 @@ +package com.zbkj.common.response; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 用户响应体 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class UserResponse { + + @ApiModelProperty(value = "用户id") + private Integer uid; + + @ApiModelProperty(value = "用户账号") + @JsonIgnore + private String account; + + @ApiModelProperty(value = "用户密码") + @JsonIgnore + private String pwd; + + @ApiModelProperty(value = "真实姓名") + private String realName; + + @ApiModelProperty(value = "生日") + private String birthday; + + @ApiModelProperty(value = "身份证号码") + private String cardId; + + @ApiModelProperty(value = "用户备注") + private String mark; + + @ApiModelProperty(value = "合伙人id") + private Integer partnerId; + + @ApiModelProperty(value = "用户分组id") + private String groupId; + + @ApiModelProperty(value = "分组名称") + private String groupName; + + @ApiModelProperty(value = "标签名称") + private String tagName; + + @ApiModelProperty(value = "标签Ids") + private String tagId; + + @ApiModelProperty(value = "用户昵称") + private String nickname; + + @ApiModelProperty(value = "用户头像") + private String avatar; + + @ApiModelProperty(value = "性别") + private int sex; + + @ApiModelProperty(value = "国家") + private String country; + + @ApiModelProperty(value = "手机号码") + private String phone; + + @ApiModelProperty(value = "添加ip") + private String addIp; + + @ApiModelProperty(value = "最后一次登录ip") + private String lastIp; + + @ApiModelProperty(value = "用户余额") + private BigDecimal nowMoney; + + @ApiModelProperty(value = "佣金金额") + private BigDecimal brokeragePrice; + + @ApiModelProperty(value = "用户剩余积分") + private Integer integral; + + @ApiModelProperty(value = "用户剩余经验") + private Integer experience; + + @ApiModelProperty(value = "连续签到天数") + private Integer signNum; + + @ApiModelProperty(value = "1为正常,0为禁止") + private Boolean status; + + @ApiModelProperty(value = "等级") + private Integer level; + + @ApiModelProperty(value = "推广人id") + private Integer spreadUid; + + @ApiModelProperty(value = "推广员关联时间") + private Date spreadTime; + + @ApiModelProperty(value = "推广员名称") + private String spreadNickname; + + @ApiModelProperty(value = "用户类型") + private String userType; + + @ApiModelProperty(value = "是否为推广员") + private Boolean isPromoter; + + @ApiModelProperty(value = "用户购买次数") + private Integer payCount; + + @ApiModelProperty(value = "下级人数") + private Integer spreadCount; + + @ApiModelProperty(value = "详细地址") + private String addres; + + @ApiModelProperty(value = "管理员编号 ") + private Integer adminid; + + @ApiModelProperty(value = "用户登陆类型,h5,wechat,routine") + private String loginType; + + @ApiModelProperty(value = "更新时间") + private Date updateTime; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "最后一次登录时间") + private Date lastLoginTime; + + @ApiModelProperty(value = "清除时间") + private Date cleanTime; + + @ApiModelProperty(value = "是否关注公众号") + private Boolean subscribe; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserSexDataResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserSexDataResponse.java new file mode 100644 index 0000000..a68a123 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserSexDataResponse.java @@ -0,0 +1,36 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 用户性别数据对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="UserSexDataResponse对象", description="用户性别数据对象") +public class UserSexDataResponse implements Serializable { + + private static final long serialVersionUID = -6004724917253583732L; + + @ApiModelProperty(value = "性别,0未知,1男,2女,3保密") + private Integer sex; + + @ApiModelProperty(value = "数量") + private Integer num; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserSignInfoResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserSignInfoResponse.java new file mode 100644 index 0000000..f0a95be --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserSignInfoResponse.java @@ -0,0 +1,47 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 用户签到信息响应对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="UserSignInfoResponse对象", description="用户签到信息响应对象") +public class UserSignInfoResponse implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "连续签到天数") + private Integer signNum; + + @ApiModelProperty(value = "累计签到次数") + private Integer sumSignDay; + + @ApiModelProperty(value = "今天是否签到") + private Boolean isDaySign; + + @ApiModelProperty(value = "昨天是否签到") + private Boolean isYesterdaySign; + + @ApiModelProperty(value = "用户积分") + private Integer integral; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserSpreadBannerResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserSpreadBannerResponse.java new file mode 100644 index 0000000..079f8c6 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserSpreadBannerResponse.java @@ -0,0 +1,40 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 用户地址表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="UserSpreadBannerResponse对象", description="用户推广海报") +public class UserSpreadBannerResponse implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "id") + private Integer id; + + @ApiModelProperty(value = "名称") + private String title; + + @ApiModelProperty(value = "背景图") + private String pic; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserSpreadOrderItemChildResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserSpreadOrderItemChildResponse.java new file mode 100644 index 0000000..48a1c4b --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserSpreadOrderItemChildResponse.java @@ -0,0 +1,50 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 推广订单信息子集 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="UserSpreadOrderItemChildResponse对象", description="推广订单信息子集") +public class UserSpreadOrderItemChildResponse implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "订单号") + private String orderId; + + @ApiModelProperty(value = "返佣时间") + private Date time; + + @ApiModelProperty(value = "返佣金额") + private BigDecimal number; + + @ApiModelProperty(value = "用户头像") + private String avatar; + + @ApiModelProperty(value = "用户昵称") + private String nickname; + + @ApiModelProperty(value = "订单显示类型") + private String type; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserSpreadOrderItemResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserSpreadOrderItemResponse.java new file mode 100644 index 0000000..84c98bb --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserSpreadOrderItemResponse.java @@ -0,0 +1,41 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; + +/** + * 推广订单信息 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="UserSpreadOrderItemResponse对象", description="推广订单信息") +public class UserSpreadOrderItemResponse implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "推广条数") + private Integer count = 0; + + @ApiModelProperty(value = "推广年月") + private String time; + + @ApiModelProperty(value = "推广订单信息") + private List child = new ArrayList<>(); +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserSpreadOrderResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserSpreadOrderResponse.java new file mode 100644 index 0000000..8f5d245 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserSpreadOrderResponse.java @@ -0,0 +1,37 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.List; + +/** + * 推广订单 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="UserSpreadOrderResponse对象", description="推广订单") +public class UserSpreadOrderResponse implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "累计推广订单") + private Long count = 0L; + + @ApiModelProperty(value = "推广人列表") + private List list; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserSpreadPeopleItemResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserSpreadPeopleItemResponse.java new file mode 100644 index 0000000..ef98299 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserSpreadPeopleItemResponse.java @@ -0,0 +1,54 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 推广人信息 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="UserSpreadPeopleItemResponse对象", description="推广人信息") +public class UserSpreadPeopleItemResponse implements Serializable { + + private static final long serialVersionUID=1L; + + + @ApiModelProperty(value = "用户编号") + private Integer uid; + + @ApiModelProperty(value = "用户昵称") + private String nickname; + + @ApiModelProperty(value = "用户头像") + private String avatar; + + @ApiModelProperty(value = "添加时间") + private String time; + + @ApiModelProperty(value = "推广人数") + private Integer childCount; + + @ApiModelProperty(value = "订单数量") + private Integer orderCount; + + @ApiModelProperty(value = "订单金额") + private BigDecimal numberCount; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserSpreadPeopleResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserSpreadPeopleResponse.java new file mode 100644 index 0000000..a87a93d --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserSpreadPeopleResponse.java @@ -0,0 +1,43 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.List; + +/** + * 推广用户 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="UserSpreadPeopleResponse对象", description="推广用户") +public class UserSpreadPeopleResponse implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "一级推广人人数") + private Integer total = 0; + + @ApiModelProperty(value = "二级推广人人数") + private Integer totalLevel = 0; + + @ApiModelProperty(value = "推广人列表") + private List spreadPeopleList; + + @ApiModelProperty(value = "推广人总人数") + private Integer count = 0; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserTotalResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserTotalResponse.java new file mode 100644 index 0000000..dd0aadf --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserTotalResponse.java @@ -0,0 +1,44 @@ +package com.zbkj.common.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 用户总数据对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="UserTotalResponse对象", description="用户总数据对象") +public class UserTotalResponse implements Serializable { + + private static final long serialVersionUID = -6332062115310922579L; + + @ApiModelProperty(value = "累计用户数") + private Integer userNum; + + @ApiModelProperty(value = "累计充值人数") + private Integer rechargePeopleNum; + + @ApiModelProperty(value = "累计充值金额(佣金转余额也算)") + private BigDecimal rechargeTotalAmount; + + @ApiModelProperty(value = "累计消费金额") + private BigDecimal consumptionAmount; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/WeChatJsSdkConfigResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/WeChatJsSdkConfigResponse.java new file mode 100644 index 0000000..be34c31 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/WeChatJsSdkConfigResponse.java @@ -0,0 +1,56 @@ +package com.zbkj.common.response; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.List; + +/** + * 微信公众号js-sdk响应对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="WeChatJsSdkConfigResponse对象", description="微信公众号js-sdk响应对象对象") +public class WeChatJsSdkConfigResponse implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "url") + private String url; + + @ApiModelProperty(value = "jsApiTicket") + private String jsApiTicket; + + @ApiModelProperty(value = "nonceStr") + private String nonceStr; + + @ApiModelProperty(value = "timestamp") + private Long timestamp; + + @ApiModelProperty(value = "signature") + private String signature; + + @ApiModelProperty(value = "jsApiList") + private List jsApiList; + + @ApiModelProperty(value = "debug") + private Boolean debug; + + @ApiModelProperty(value = "appid") + private String appId; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/YlyAccessTokenBodyResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/YlyAccessTokenBodyResponse.java new file mode 100644 index 0000000..403f069 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/YlyAccessTokenBodyResponse.java @@ -0,0 +1,18 @@ +package com.zbkj.common.response; + +import lombok.Data; + +/** + * 易联云 获取AccessToken response body 数据 + * @program: crmeb + * @author: 大粽子 + * @create: 2021-11-26 16:52 + **/ +@Data +public class YlyAccessTokenBodyResponse { + private String access_token; + private String refresh_token; + private String machine_code; + private Integer expires_in; + private String scope; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/YlyAccessTokenResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/YlyAccessTokenResponse.java new file mode 100644 index 0000000..80695c1 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/YlyAccessTokenResponse.java @@ -0,0 +1,15 @@ +package com.zbkj.common.response; + +import lombok.Data; + +/** 易联云 获取AccessToken response + * @program: crmeb + * @author: 大粽子 + * @create: 2021-11-26 16:48 + **/ +@Data +public class YlyAccessTokenResponse { + private String error; + private String error_description; + private YlyAccessTokenBodyResponse body; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/token/FrontTokenComponent.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/token/FrontTokenComponent.java new file mode 100644 index 0000000..f75cfab --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/token/FrontTokenComponent.java @@ -0,0 +1,199 @@ +package com.zbkj.common.token; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.model.user.User; +import com.zbkj.common.utils.RedisUtil; +import com.zbkj.common.utils.RequestUtil; +import com.zbkj.common.vo.LoginUserVo; +import org.apache.commons.lang3.ArrayUtils; +import org.springframework.stereotype.Component; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.Objects; +import java.util.UUID; +import java.util.concurrent.TimeUnit; + +/** + * token验证处理 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Component +public class FrontTokenComponent { + + @Resource + private RedisUtil redisUtil; + + private static final Long MILLIS_MINUTE_TEN = 20 * 60 * 1000L; + + private static final Long MILLIS_MINUTE = 60 * 1000L; + + // 令牌有效期(默认30分钟) todo 调试期改为5小时 +// private static final int expireTime = 30; + private static final int expireTime = 5 * 60; + + /** + * 获取用户身份信息 + * + * @return 用户信息 + */ + public LoginUserVo getLoginUser(HttpServletRequest request) { + // 获取请求携带的令牌 + String token = getToken(request); + if (StrUtil.isNotEmpty(token)) { + String userKey = getTokenKey(token); + return redisUtil.get(userKey); + } + return null; + } + + /** + * 设置用户身份信息 + */ + public void setLoginUser(LoginUserVo loginUser) { + if (ObjectUtil.isNotNull(loginUser) && StrUtil.isNotEmpty(loginUser.getToken())) { + refreshToken(loginUser); + } + } + + /** + * 删除用户身份信息 + */ + public void delLoginUser(String token) { + if (StrUtil.isNotEmpty(token)) { + String userKey = getTokenKey(token); + redisUtil.delete(userKey); + } + } + + /** + * 创建令牌 + * + * @param user 用户信息 + * @return 令牌 + */ + public String createToken(User user) { + String token = UUID.randomUUID().toString().replace("-", ""); + redisUtil.set(getTokenKey(token), user.getUid(), Constants.TOKEN_EXPRESS_MINUTES, TimeUnit.MINUTES); + return token; + } + + /** + * 验证令牌有效期,相差不足20分钟,自动刷新缓存 + * + * @param loginUser LoginUserVo + */ + public void verifyToken(LoginUserVo loginUser) { + long expireTime = loginUser.getExpireTime(); + long currentTime = System.currentTimeMillis(); + if (expireTime - currentTime <= MILLIS_MINUTE_TEN) + { + refreshToken(loginUser); + } + } + + /** + * 刷新令牌有效期 + * + * @param loginUser 登录信息 + */ + public void refreshToken(LoginUserVo loginUser) { + loginUser.setLoginTime(System.currentTimeMillis()); + loginUser.setExpireTime(loginUser.getLoginTime() + expireTime * MILLIS_MINUTE); + // 根据uuid将loginUser缓存 + String userKey = getTokenKey(loginUser.getToken()); + redisUtil.set(userKey, loginUser, (long) expireTime, TimeUnit.MINUTES); + } + + /** + * 获取请求token + * + * @param request HttpServletRequest + * @return token + */ + public String getToken(HttpServletRequest request) { + String token = request.getHeader(Constants.HEADER_AUTHORIZATION_KEY); + if (StrUtil.isNotEmpty(token) && token.startsWith(Constants.USER_TOKEN_REDIS_KEY_PREFIX)) { + token = token.replace(Constants.USER_TOKEN_REDIS_KEY_PREFIX, ""); + } + return token; + } + + private String getTokenKey(String uuid) { + return Constants.USER_TOKEN_REDIS_KEY_PREFIX + uuid; + } + + /** + * 推出登录 + * @param request HttpServletRequest + */ + public void logout(HttpServletRequest request) { + String token = getToken(request); + delLoginUser(token); + } + + /** + * 获取当前登录用户id + */ + public Integer getUserId() { + HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest(); + String token = getToken(request); + if (StrUtil.isEmpty(token)) { + return null; +// throw new CrmebException("登录信息已过期,请重新登录!"); + } + return redisUtil.get(getTokenKey(token)); + } + + //路由在此处,则返回true,无论用户是否登录都可以访问 + public boolean checkRouter(String uri) { + String[] routerList = { + "api/front/product/detail", + "api/front/coupons", + "api/front/index", + "api/front/bargain/list", + "api/front/combination/list", + "api/front/index/product", + "api/front/combination/index", + "api/front/bargain/index", + "api/front/index/color/config", + "api/front/product/list", + "api/front/product/sku/detail", + "api/front/index/get/version", + "api/front/image/domain", + "api/front/product/leaderboard" + }; + + return ArrayUtils.contains(routerList, uri); + } + + public Boolean check(String token, HttpServletRequest request){ + + try { + boolean exists = redisUtil.exists(getTokenKey(token)); + if(exists){ + Integer uid = redisUtil.get(getTokenKey(token)); + redisUtil.set(getTokenKey(token), uid, Constants.TOKEN_EXPRESS_MINUTES, TimeUnit.MINUTES); + }else{ + //判断路由,部分路由不管用户是否登录/token过期都可以访问 + exists = checkRouter(RequestUtil.getUri(request)); + } + return exists; + }catch (Exception e){ + return false; + } + } +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/token/WeChatOauthToken.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/token/WeChatOauthToken.java new file mode 100644 index 0000000..084ae78 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/token/WeChatOauthToken.java @@ -0,0 +1,51 @@ +package com.zbkj.common.token; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 微信用户授权返回数据 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="WeChatAuthorizeLoginGetOpenIdResponse对象", description="微信开放平台获取accessToken对象") +public class WeChatOauthToken implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "accessToken接口调用凭证") + @TableField(value = "access_token") + private String accessToken; + + @ApiModelProperty(value = "access_token 接口调用凭证超时时间,单位(秒)") + @TableField(value = "expires_in") + private String expiresIn; + + @ApiModelProperty(value = "用户刷新access_token") + @TableField(value = "refresh_token") + private String refreshToken; + + @ApiModelProperty(value = "用户OpenId") + @TableField(value = "openid") + private String openId; + + @ApiModelProperty(value = "用户授权的作用域,使用逗号(,)分隔") + private String scope; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/AESUtil.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/AESUtil.java new file mode 100644 index 0000000..3337304 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/AESUtil.java @@ -0,0 +1,78 @@ +package com.zbkj.common.utils; + + +import org.bouncycastle.jce.provider.BouncyCastleProvider; + +import javax.crypto.BadPaddingException; +import javax.crypto.Cipher; +import javax.crypto.IllegalBlockSizeException; +import javax.crypto.NoSuchPaddingException; +import javax.crypto.spec.IvParameterSpec; +import javax.crypto.spec.SecretKeySpec; +import java.security.*; + +/** + * AES加密工具类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class AESUtil { + + public static boolean initialized = false; + + /** + * AES解密 + * + * @param content + * 密文 + * @return + * @throws InvalidAlgorithmParameterException + * @throws NoSuchProviderException + */ + public byte[] decrypt(byte[] content, byte[] keyByte, byte[] ivByte) throws InvalidAlgorithmParameterException { + initialize(); + try { + Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding"); + Key sKeySpec = new SecretKeySpec(keyByte, "AES"); + cipher.init(Cipher.DECRYPT_MODE, sKeySpec, generateIV(ivByte));// 初始化 + byte[] result = cipher.doFinal(content); + return result; + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } catch (NoSuchPaddingException e) { + e.printStackTrace(); + } catch (InvalidKeyException e) { + e.printStackTrace(); + } catch (IllegalBlockSizeException e) { + e.printStackTrace(); + } catch (BadPaddingException e) { + e.printStackTrace(); + } catch (NoSuchProviderException e) { + e.printStackTrace(); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + public static void initialize() { + if (initialized) + return; + Security.addProvider(new BouncyCastleProvider()); + initialized = true; + } + + // 生成iv + public static AlgorithmParameters generateIV(byte[] iv) throws Exception { + AlgorithmParameters params = AlgorithmParameters.getInstance("AES"); + params.init(new IvParameterSpec(iv)); + return params; + } +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/AppleUtil.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/AppleUtil.java new file mode 100644 index 0000000..1068f4d --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/AppleUtil.java @@ -0,0 +1,119 @@ +package com.zbkj.common.utils; + +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.auth0.jwk.Jwk; +import io.jsonwebtoken.*; +import org.apache.commons.codec.binary.Base64; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.client.RestTemplate; + +import java.security.PublicKey; + +/** + * 苹果工具类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class AppleUtil { + + private static final Logger logger = LoggerFactory.getLogger(AppleUtil.class); + + /** + * 获取苹果的公钥 + * @return + */ + private static JSONArray getAuthKeys() { + String url = "https://appleid.apple.com/auth/keys"; + RestTemplate restTemplate = new RestTemplate(); + JSONObject json = restTemplate.getForObject(url, JSONObject.class); + if (ObjectUtil.isNull(json)) { + logger.error("获取苹果的公钥失败"); + } + JSONArray arr = json.getJSONArray("keys"); + return arr; + } + + public static Boolean verify(String jwt) throws Exception{ + JSONArray arr = getAuthKeys(); + if(arr == null){ + return false; + } + JSONObject authKey = null; + + //先取苹果第一个key进行校验 + authKey = JSONObject.parseObject(arr.getString(0)); + if(verifyExc(jwt, authKey)){ + return true; + }else{ + //再取第二个key校验 + authKey = JSONObject.parseObject(arr.getString(1)); + return verifyExc(jwt, authKey); + } + + } + + /** + * 对前端传来的identityToken进行验证 + * @param jwt 对应前端传来的 identityToken + * @param authKey 苹果的公钥 authKey + * @return + * @throws Exception + */ + public static Boolean verifyExc(String jwt, JSONObject authKey) throws Exception { + + // 生成publicKey + Jwk jwa = Jwk.fromValues(authKey); + PublicKey publicKey = jwa.getPublicKey(); + // 分割前台传过来的identifyToken(jwt格式的token)用base64解码使用 + String aud = ""; + String sub = ""; + if (jwt.split("\\.").length > 1) { + String claim = new String(Base64.decodeBase64(jwt.split("\\.")[1])); + aud = JSONObject.parseObject(claim).get("aud").toString(); + sub = JSONObject.parseObject(claim).get("sub").toString(); + } + JwtParser jwtParser = Jwts.parser().setSigningKey(publicKey); + jwtParser.requireIssuer("https://appleid.apple.com"); + jwtParser.requireAudience(aud); + jwtParser.requireSubject(sub); + + try { + Jws claim = jwtParser.parseClaimsJws(jwt); + if (claim != null && claim.getBody().containsKey("auth_time")) { + System.out.println(claim); + return true; + } + return false; + } catch (ExpiredJwtException e) { + logger.error("apple identityToken expired", e); + return false; + } catch (Exception e) { + logger.error("apple identityToken illegal", e); + return false; + } + } + + /** + * 对前端传来的JWT字符串identityToken的第二部分进行解码 + * 主要获取其中的aud和sub,aud大概对应ios前端的包名,sub大概对应当前用户的授权的openID + * @param identityToken iosToken + * @return {"aud":"com.xkj.****","sub":"000***.8da764d3f9e34d2183e8da08a1057***.0***","c_hash":"UsKAuEoI-****","email_verified":"true","auth_time":1574673481,"iss":"https://appleid.apple.com","exp":1574674081,"iat":1574673481,"email":"****@qq.com"} + */ + public static JSONObject parserIdentityToken(String identityToken){ + String[] arr = identityToken.split("\\."); + String decode = new String (Base64.decodeBase64(arr[1])); + String substring = decode.substring(0, decode.indexOf("}")+1); + return JSON.parseObject(substring); + } +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/ArrayUtil.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/ArrayUtil.java new file mode 100644 index 0000000..a07efb1 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/ArrayUtil.java @@ -0,0 +1,69 @@ +package com.zbkj.common.utils; + +import org.apache.poi.ss.formula.functions.T; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +/** + * ArrayUtil + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class ArrayUtil { + /** + * List去重,不打乱原来顺序,泛型list对象 + * 对象重写hashCode和equals + * @param + * @param list + * @return + */ + public static List distinctBySetOrder(List list){ + Set set = new HashSet(); + List newList = new ArrayList(); + for(T t: list){ + if(set.add(t)){ + newList.add(t); + } + } + return newList; + } + + /** + * List去重,可能打乱原来顺序,泛型list对象 + * 对象重写hashCode和equals + * @param list + * @return + */ + public static List distinctBySet(List list){ + return new ArrayList(new HashSet(list)); + } + + /** + * list转为字符串,专用于sql中in函数 + * @return String + * @param list + */ + public static String strListToSqlJoin(List list) { + if (null == list || list.size() < 1) { + return ""; + } + StringBuilder temp = new StringBuilder(); + for (int i = 0; i < list.size(); i++) { + if (i > 0) { + temp.append(","); + } + temp.append("'").append(list.get(i)).append("'"); + } + return temp.toString(); + } +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/CommonUtil.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/CommonUtil.java new file mode 100644 index 0000000..894d021 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/CommonUtil.java @@ -0,0 +1,43 @@ +package com.zbkj.common.utils; + +import org.apache.commons.codec.digest.DigestUtils; + +/** + * 通用工具类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class CommonUtil { + + /** + * 随机生成密码 + * + * @param phone 手机号 + * @return 密码 + * 使用des方式加密 + */ + public static String createPwd(String phone) { + String password = "Abc" + CrmebUtil.randomCount(10000, 99999); + return CrmebUtil.encryptPassword(password, phone); + } + + /** + * 随机生成用户昵称 + * + * @param phone 手机号 + * @return 昵称 + */ + public static String createNickName(String phone) { + return DigestUtils.md5Hex(phone + DateUtil.getNowTime()). + subSequence(0, 12). + toString(); + } + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/CrmebUtil.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/CrmebUtil.java new file mode 100644 index 0000000..d7b2129 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/CrmebUtil.java @@ -0,0 +1,886 @@ +package com.zbkj.common.utils; + +import cn.hutool.core.codec.Base64; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.crypto.SecureUtil; +import cn.hutool.crypto.symmetric.DES; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.zbkj.common.constants.Constants; +import org.apache.commons.lang3.StringUtils; + +import javax.servlet.http.HttpServletRequest; +import java.io.UnsupportedEncodingException; +import java.math.BigDecimal; +import java.nio.charset.StandardCharsets; +import java.text.NumberFormat; +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * Crmeb工具类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class CrmebUtil { + + public static String encryptPassword(String pwd, String key) { + DES des = new DES(getDESSercretKey(key)); + byte[] result = des.encrypt(pwd); + return Base64.encode(result); + } + + /** + * 解密密码 + */ + public static String decryptPassowrd(String pwd, String key) { + DES des = new DES(getDESSercretKey(key)); + return des.decryptStr(pwd); + } + + /** + * 获得DES加密秘钥 + * @param key + * @return + */ + public static byte[] getDESSercretKey(String key) { + byte[] result = new byte[8]; + byte[] keys = null; + keys = key.getBytes(StandardCharsets.UTF_8); + for(int i = 0; i<8;i++){ + if(i < keys.length){ + result[i] = keys[i]; + }else{ + result[i] = 0x01; + } + } + return result; + } + + /** + * 对象转map + * @param object 对象 + * @author Mr.Zhang + * @since 2020-04-14 + * @return Map + */ + public static Map objectToMap(Object object){ + return JSONObject.parseObject(JSONObject.toJSONString(object), Map.class); + } + + public static Map StringToMap(String strValue){ + return JSONObject.parseObject(strValue, HashMap.class); + } + + /** + * map转对象 + * @param map map + * @param clz 对象 + * @author Mr.Zhang + * @since 2020-04-14 + * @return Map + */ + public static T mapToObj(HashMap map, Class clz){ + if (map == null) return null; + return JSONObject.parseObject(JSONObject.toJSONString(map), clz); + } + + /** + * map转对象 + * @param map map + * @param clz 对象 + * @author Mr.Zhang + * @since 2020-04-14 + * @return Map + */ + public static T mapStringToObj(HashMap map, Class clz){ + if (map == null) return null; + return JSONObject.parseObject(JSONObject.toJSONString(map), clz); + } + + + /** + * 密码工具 + * @param args String[] 字符串数组 + */ + public static void main(String[] args) throws Exception { +// System.out.println(encryptPassword("123456", "admin")); +// System.out.println(decryptPassowrd("", "")); + + String key = "123456"; + String data = "中国123ABCabc"; + System.out.println("原始数据:" + data); + String encryptPassword = encryptPassword(data, key); + System.out.println("加密结果:" + encryptPassword); + String decryptPassowrd = decryptPassowrd(encryptPassword, key); + System.out.println("解密结果:" + decryptPassowrd); + // 执行结果如下: + // 原始数据:中国123ABCabc + // 加密结果:5JNGj04iE/XUuTZM75zMrA== + // 解密结果:中国123ABCabc + + System.out.println(encryptPassword("crmeb@123456", "18292417675")); + // 执行结果:f6mcpGQ8NEmwbab2TlkpUg== + // 与 SQL 中的数据一致 + } + + /** + * map合并 + * @param map 对象 + * @author Mr.Zhang + * @since 2020-04-14 + * @return Object + */ + public static Map mergeMap(Map map, Map map1){ + HashMap map2 = new HashMap<>(); + map2.putAll(map); + map2.putAll(map1); + return map2; + } + + /** + * 字符串分割,转化为数组 + * @param str 字符串 + * @author Mr.Zhang + * @since 2020-04-22 + * @return List + */ + public static List stringToArray(String str){ + return stringToArrayByRegex(str, ","); + } + + /** + * 字符串分割,转化为数组 + * @param str 字符串 + * @param regex 分隔符有 + * @author Mr.Zhang + * @since 2020-04-22 + * @return List + */ + public static List stringToArrayByRegex(String str, String regex ){ + List list = new ArrayList<>(); + if (str.contains(regex)){ + + String[] split = str.split(regex); + + for (String value : split) { + if(!StringUtils.isBlank(value)){ + list.add(Integer.parseInt(value.trim())); + } + } + }else { + list.add(Integer.parseInt(str)); + } + return list; + } + + + /** + * 字符串分割,转化为数组 + * @param str 字符串 + * @author Mr.Zhang + * @since 2020-04-22 + * @return List + */ + public static List stringToArrayStr(String str){ + return stringToArrayStrRegex(str, ","); + } + + /** + * 数字字符数据转int格式数据 + * @param str 待转换的数字字符串 + * @return int数组 + */ + public static List stringToArrayInt(String str){ + List strings = stringToArrayStrRegex(str, ","); + List ids = new ArrayList<>(); + for (String string : strings) { + ids.add(Integer.parseInt(string.trim())); + } + return ids; + } + + /** + * 字符串分割,转化为数组 + * @param str 字符串 + * @param regex 分隔符有 + * @author Mr.Zhang + * @since 2020-04-22 + * @return List + */ + public static List stringToArrayStrRegex(String str, String regex ){ + List list = new ArrayList<>(); + if (str.contains(regex)){ + + String[] split = str.split(regex); + + for (String value : split) { + if(!StringUtils.isBlank(value)){ + list.add(value); + } + } + }else { + list.add(str); + } + return list; + } + + /** + * 字符串分割,转化为数组 + * @param str 字符串 + * @author Mr.Zhang + * @since 2020-04-22 + * @return List + */ + public static List stringToArrayObject(String str){ + return stringToArrayObjectRegex(str, ","); + } + + /** + * 字符串分割,转化为数组 + * @param str 字符串 + * @param regex 分隔符有 + * @author Mr.Zhang + * @since 2020-04-22 + * @return List + */ + public static List stringToArrayObjectRegex(String str, String regex ){ + List list = new ArrayList<>(); + if (str.contains(regex)){ + + String[] split = str.split(regex); + + for (String value : split) { + if(!StringUtils.isBlank(value)){ + list.add(value); + } + } + }else { + list.add(str); + } + return list; + } + + /** + * json字符串转数组 + * @param str 字符串 + * @author Mr.Zhang + * @since 2020-04-22 + * @return List + */ + public static List jsonToListString(String str){ + try{ + return JSONObject.parseArray(str).toJavaList(String.class); + }catch (Exception e){ + ArrayList list = new ArrayList<>(); + list.add(str); + return list; + } + } + + /** + * json字符串转数组 + * @param str 字符串 + * @author Mr.Zhang + * @since 2020-04-22 + * @return List + */ + public static List jsonToListInteger(String str){ + try{ + return JSONObject.parseArray(str).toJavaList(Integer.class); + }catch (Exception e){ + ArrayList list = new ArrayList<>(); + list.add(Integer.parseInt(str)); + return list; + } + } + + /** + * json字符串转数组 + * @param str 字符串 + * @author Mr.Zhang + * @since 2020-04-22 + * @return List + */ + public static List jsonToListObject(String str){ + try{ + return JSONObject.parseArray(str).toJavaList(Object.class); + }catch (Exception e){ + ArrayList list = new ArrayList<>(); + list.add(str); + return list; + } + } + + /** + * json字符串转数组 + * @param str 字符串 + * @author Mr.Zhang + * @since 2020-04-22 + * @return List + */ + public static List jsonToListClass(String str, Class cls){ + try{ + return JSONObject.parseArray(str, cls); + }catch (Exception e){ + return new ArrayList<>(); + } + } + + /** + * 去掉域名 https / http / www 信息 + * @param domain 域名 + * @author Mr.Zhang + * @since 2020-04-22 + * @return String + */ + public static String getCleanLowerDomain(String domain){ + domain = domain.toLowerCase(); + domain = domain.replaceAll("http://", ""); + domain = domain.replaceAll("https://", ""); + domain = domain.replaceAll("www.", ""); + domain = domain.replaceAll("/", ""); + return domain; + } + + /** + * 获取根域名 + * @param domain 域名 + * @author Mr.Zhang + * @since 2020-04-22 + * @return String + */ + public static String getBaseLowerDomain(String domain){ + if(!domain.contains(".")){ + domain += ".com"; + } + domain = getCleanLowerDomain(domain); + String[] split = domain.split("\\."); + int len = split.length; + if(len == 0){ + return domain; + } + return split[len - 2] + "." + split[len - 1]; + } + + /** + * 获取客户端ip + * @param request 参数 + * @author Mr.Zhang + * @since 2020-04-22 + * @return String + */ + public static String getClientIp(HttpServletRequest request){ + String ip = request.getHeader("X-Forwarded-For"); + if(checkIsIp(ip)){ + return ip; + } + + ip = request.getHeader("X-Real-IP"); + if(checkIsIp(ip)){ + return ip; + } + + ip = request.getRemoteAddr(); + if("0:0:0:0:0:0:0:1".equals(ip)){ + //本地 localhost访问 ipv6 + ip = "127.0.0.1"; + } + if(checkIsIp(ip)){ + return ip; + } + + return ""; + } + + /** + * 检测是否为ip + * @param ip 参数 + * @author Mr.Zhang + * @since 2020-04-22 + * @return String + */ + public static boolean checkIsIp(String ip){ + if(StringUtils.isBlank(ip)){ + return false; + } + + if("unKnown".equals(ip)){ + return false; + } + + if("unknown".equals(ip)){ + return false; + } + + return ip.split("\\.").length == 4; + } + + /** + * 获取fin_in_set拼装sql + * @param field String 字段 + * @param value Integer 值 + * @author Mr.Zhang + * @since 2020-04-22 + * @return String + */ + public static String getFindInSetSql(String field, Integer value ){ + return "find_in_set(" + value +", " + field + ")"; + } + + /** + * 获取fin_in_set拼装sql + * @param field String 字段 + * @param list ArrayList 值 + * @author Mr.Zhang + * @since 2020-04-22 + * @return String + */ + public static String getFindInSetSql(String field, ArrayList list ){ + ArrayList sqlList = new ArrayList<>(); + for (Integer value: list) { + sqlList.add(getFindInSetSql(field, value)); + } + return "( " + StringUtils.join(sqlList, " or ") + ")"; + } + + /** + * 获取fin_in_set拼装sql + * @param field String 字段 + * @param idStr String 多个值,逗号分割 + * @author Mr.Zhang + * @since 2020-04-22 + * @return String + */ + public static String getFindInSetSql(String field, String idStr ){ + List list = stringToArray(idStr); + ArrayList sqlList = new ArrayList<>(); + for (Integer value: list) { + sqlList.add(getFindInSetSql(field, value)); + } + return "( " + StringUtils.join(sqlList, " or ") + ")"; + } + + /** + * 通过id获取分类名称 + * @param list 分类集合 + * @param categoryIdStr id字符串 + * @author Mr.Zhang + * @since 2020-05-06 + * @ + */ + public static String getValueByIndex(HashMap list, String categoryIdStr){ + if(list.size() < 1 || StringUtils.isBlank(categoryIdStr)){ + return ""; + } + ArrayList name = new ArrayList<>(); + List idList = CrmebUtil.stringToArray(categoryIdStr); + + String str = ""; + for (Integer id : idList) { + str = getStrValueByIndex(list, id); + if(!StringUtils.isBlank(str)){ + name.add(getStrValueByIndex(list, id)); + } + } + if(name.size() < 1){ + return ""; + } + return StringUtils.join(name, ","); + } + + /** + * 通过id获取分类名称 + * @param list 分类集合 + * @param key id + * @author Mr.Zhang + * @since 2020-05-06 + * @ + */ + public static String getStrValueByIndex(HashMap list, Integer key){ + if(list.size() < 1){ + return ""; + } + return list.getOrDefault(key, ""); + } + + /** + * 通过id获取分类名称 + * @param list 分类集合 + * @param key id + * @author Mr.Zhang + * @since 2020-05-06 + * @ + */ + public static Integer getIntValueByIndex(HashMap list, Integer key){ + if(null == list ||list.size() < 1){ + return 0; + } + return list.getOrDefault(key, 0); + } + + /** + * 获取uuid + * @author Mr.Zhang + * @since 2020-05-06 + * @ + */ + public static String getUuid(){ + return UUID.randomUUID().toString().replace("-", ""); + } + + /** + * 同比率计算 //同比增长率= ((当前周期 - 上一个周期) ÷ 上一个周期 ) *100% + * @param i1 当前周期 + * @param i2 上一个周期 + * @author Mr.Zhang + * @since 2020-05-06 + * @ + */ + public static int getRate(Integer i1, Integer i2){ + BigDecimal b1 = new BigDecimal(i1); + BigDecimal b2 = new BigDecimal(i2); + return getRate(b1, b2); + } + + /** + * 同比率计算 //同比增长率= ((当前周期 - 上一个周期) ÷ 上一个周期 ) *100% + * @param b1 当前周期 + * @param b2 上一个周期 + * @author Mr.Zhang + * @since 2020-05-06 + * @ + */ + public static int getRate(BigDecimal b1, BigDecimal b2){ + //计算差值 + + if(b2.equals(b1)){ + //数值一样,说明没有增长 + return Constants.NUM_ZERO; + } + + if(b2.equals(BigDecimal.ZERO)){ + //b2是0 + return Constants.NUM_ONE_HUNDRED; + } + + return (b1.subtract(b2)).divide(b2, 2, BigDecimal.ROUND_UP).multiply(BigDecimal.TEN).multiply(BigDecimal.TEN).intValue(); + + +// BigDecimal.setScale();//用于格式化小数点 +// setScale(1);//表示保留以为小数,默认用四舍五入方式 +// setScale(1,BigDecimal.ROUND_DOWN);//直接删除多余的小数位,如2.35会变成2.3 +// setScale(1,BigDecimal.ROUND_UP);//进位处理,2.35变成2.4 +// setScale(1,BigDecimal.ROUND_HALF_UP);//四舍五入,2.35变成2.4 +// setScaler(1,BigDecimal.ROUND_HALF_DOWN);//四舍五入,2.35变成2.3,如果是5则向下舍 + } + + /** + * 同比率计算 //同比增长率= ((当前周期 - 上一个周期) ÷ 上一个周期 ) *100% + * @param i1 当前周期 + * @param i2 上一个周期 + * @author Mr.Zhang + * @since 2020-05-06 + * @ + */ + public static BigDecimal getRateBig(Integer i1, Integer i2){ + BigDecimal b1 = new BigDecimal(i1); + BigDecimal b2 = new BigDecimal(i2); + return getRateBig(b1, b2); + } + + /** + * 同比率计算 //同比增长率= ((当前周期 - 上一个周期) ÷ 上一个周期 ) *100% + * 如果上个周期为0, = 当前周期 * 100% + * @param b1 当前周期 + * @param b2 上一个周期 + * @author Mr.Zhang + * @since 2020-05-06 + * @ + */ + public static BigDecimal getRateBig(BigDecimal b1, BigDecimal b2){ + //计算差值 + + if(b2.compareTo(b1) == 0){ + //数值一样,说明没有增长 + return BigDecimal.ZERO; + } + + if(b2.compareTo(BigDecimal.ZERO) == 0){ + //b2是0 + return b1.setScale(2, BigDecimal.ROUND_UP); + } + + return (b1.subtract(b2)).multiply(BigDecimal.TEN).multiply(BigDecimal.TEN).divide(b2, BigDecimal.ROUND_UP); + } + + /** + * hash 转换 + * @param hash final byte[] hash参数 + * @author Mr.Zhang + * @since 2020-06-03 + * @return String + */ + public static String byteToHex(final byte[] hash) { + Formatter formatter = new Formatter(); + for (byte b : hash) { + formatter.format("%02x", b); + } + String result = formatter.toString(); + formatter.close(); + return result; + } + + /** + * hash 转换 + * @param base64 String 图片流 + * @author Mr.Zhang + * @since 2020-06-03 + * @return String + */ + public static String getBase64Image(String base64) { + return "data:image/png;base64," + base64; + } + + /** + * 去掉字符串第一位和最后一位 + * @param param String 参数 + * @return String + */ + public static String trimSingeQua(String param){ + return param.substring(1,param.length()-1); + } + + + /** + * 根据长度生成随机数字 + * @param start 起始数字 + * @param end 结束数字 + * @return 生成的随机码 + */ + public static Integer randomCount(Integer start, Integer end){ + return (int)(Math.random()*(end - start +1) + start); + } + + /** + * 订单号生成 + * @param payType String 支付类型 + * @return 生成的随机码 + */ + public static String getOrderNo(String payType){ + return payType + randomCount(11111, 99999) + System.currentTimeMillis() + randomCount(11111, 99999); + } + + /** + * 订单号生成 + * @param payType String 支付类型 + * @return 生成的随机码 + */ + public static String getOrderNoPrefix(String payType){ + switch (payType){ + case Constants.PAY_TYPE_WE_CHAT: + return Constants.ORDER_NO_PREFIX_WE_CHAT; + //其他平台 + default: + return Constants.ORDER_NO_PREFIX_H5; + } + } + + /** + * map排序 + * @param map Map 支付类型 + * @return 生成的随机码 + */ + public static Map mapSort(Map map) { + return new TreeMap<>(map); + } + + /** + * map排序然后按照url模式拼接 + * @param map Map 支付类型 + * @return 生成的随机码 + */ + public static String mapToStringUrl(Map map){ + map = CrmebUtil.mapSort(map); + StringBuilder sb = new StringBuilder(); // 多线程访问的情况下需要用StringBuffer + Set es = map.keySet(); // 所有参与传参的key按照accsii排序(升序) + for (Object set : es) { + String k = set.toString(); + Object v = map.get(k); + sb.append(k).append("=").append(v.toString()).append("&"); + } + String str = sb.toString(); + return str.substring(0, str.length() - 1); + } + + public static BigDecimal getBigDecimalRate(String rate) { + return new BigDecimal(rate).divide(BigDecimal.TEN.multiply(BigDecimal.TEN)); + } + + /** + * unicode编码转换为汉字 + * @param unicodeStr 待转化的编码 + * @return 返回转化后的汉子 + */ + public static String UnicodeToCN(String unicodeStr) { + Pattern pattern = Pattern.compile("(\\\\u(\\p{XDigit}{4}))"); + Matcher matcher = pattern.matcher(unicodeStr); + char ch; + while (matcher.find()) { + //group + String group = matcher.group(2); + //ch:'李四' + ch = (char) Integer.parseInt(group, 16); + //group1 + String group1 = matcher.group(1); + unicodeStr = unicodeStr.replace(group1, ch + ""); + } + + return unicodeStr.replace("\\", "").trim(); + } + + /** + * 汉字转化为Unicode编码 + * @param CN 待转化的中文 + * @return 返回转化之后的unicode编码 + */ + public static String CNToUnicode(String CN) { + + try { + StringBuffer out = new StringBuffer(""); + //直接获取字符串的unicode二进制 + byte[] bytes = CN.getBytes("unicode"); + //然后将其byte转换成对应的16进制表示即可 + for (int i = 0; i < bytes.length - 1; i += 2) { + out.append("\\u"); + String str = Integer.toHexString(bytes[i + 1] & 0xff); + for (int j = str.length(); j < 2; j++) { + out.append("0"); + } + String str1 = Integer.toHexString(bytes[i] & 0xff); + out.append(str1); + out.append(str); + } + return out.toString(); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + return null; + } + } + + public static String getSign(Map map, String signKey){ + String result = CrmebUtil.mapToStringUrl(map) + "&key=" + signKey; +// return DigestUtils.md5Hex(result).toUpperCase(); + String sign = SecureUtil.md5(result).toUpperCase(); + System.out.println("sign ========== " + sign); + return sign; + } + + /** + * 检查是否可以转换int + * @param str + * @return + */ + public static boolean isString2Num(String str){ + Pattern pattern = Pattern.compile("^[0-9]*$"); + Matcher matcher = pattern.matcher(str); + return matcher.matches(); + } + + //数组去重 + public static List arrayUnique(Integer[] arr){ + List list = new ArrayList<>(); + for (Integer integer : arr) { + if (!list.contains(integer)) { + list.add(integer); + } + } + + return list; + } + + + /** + * 百分比计算 + * @param detailTotalNumber 销售量 + * @param totalNumber 限量库存 + * @return 百分比 + */ + public static String percentInstance(Integer detailTotalNumber, Integer totalNumber) { + Double bfTotalNumber = Double.valueOf(detailTotalNumber); + Double zcTotalNumber = Double.valueOf(totalNumber); + double percent = bfTotalNumber/zcTotalNumber; + //获取格式化对象 + NumberFormat nt = NumberFormat.getPercentInstance(); + //设置百分数精确度2即保留两位小数 + nt.setMinimumFractionDigits(2); + return nt.format(percent); + } + + /** + * 百分比计算 + * @param detailTotalNumber 销售量 + * @param totalNumber 限量库存 + * @return 百分比 + */ + public static int percentInstanceIntVal(Integer detailTotalNumber, Integer totalNumber) { + BigDecimal sales = new BigDecimal(detailTotalNumber); + BigDecimal total = new BigDecimal(totalNumber); + int percentage = sales.divide(total, 2, BigDecimal.ROUND_UP).multiply(new BigDecimal(100)).intValue(); + return Math.min(percentage, 100); + } + + /** + * 百分比计算 + * @param detailTotalNumber 销售量 + * @param totalNumber 限量库存 + * @return 百分比 + */ + public static int percentInstanceIntVal(BigDecimal detailTotalNumber, BigDecimal totalNumber) { + int percentage = detailTotalNumber.divide(totalNumber, 2, BigDecimal.ROUND_UP).multiply(new BigDecimal(100)).intValue(); + return Math.min(percentage, 100); + } + + /** + * Object转List + */ + public static List castList(Object obj, Class clazz) { + List result = new ArrayList<>(); + if(obj instanceof List) { + for (Object o : (List) obj) { + result.add(clazz.cast(o)); + } + return result; + } + return null; + } + + public static List jsonArrayToJsonObjectList(JSONArray jsonArray) { + List list = CollUtil.newArrayList(); + for (int i = 0; i < jsonArray.size(); i++) { + JSONObject arrayJSONObject = jsonArray.getJSONObject(i); + list.add(arrayJSONObject); + } + return list; + } + + /** + * 手机号脱敏处理 + * @param phone 手机号 + */ + public static String maskMobile(String phone) { + if (StrUtil.isBlank(phone)) { + return ""; + } + return phone.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2"); + } +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/DateUtil.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/DateUtil.java new file mode 100644 index 0000000..e863a51 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/DateUtil.java @@ -0,0 +1,635 @@ +package com.zbkj.common.utils; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.vo.dateLimitUtilVo; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.List; + +/** + * Date工具类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + **/ +public final class DateUtil { + + private static final Logger LOGGER = LoggerFactory.getLogger(DateUtil.class); + + private DateUtil() { + throw new IllegalStateException("Utility class"); + } + + /** + * 获取当前日期,指定格式 + * 描述:<描述函数实现的功能>. + * + * @return + */ + public static String nowDate() { + return nowDate(Constants.DATE_FORMAT_NUM); + } + + /** + * 获取当前年,指定格式 + * 描述:<描述函数实现的功能>. + * + * @return + */ + public static String nowYear() { + Calendar cal = Calendar.getInstance(); + return cal.get(Calendar.YEAR) + ""; + } + + /** + * 获取上一年,指定格式 + * 描述:<描述函数实现的功能>. + * + * @return + */ + public static String lastYear() { + Calendar cal = Calendar.getInstance(); + cal.add(Calendar.YEAR, -1); + return cal.get(Calendar.YEAR) + ""; + } + + /** + * 获取当前日期,指定格式 + * 描述:<描述函数实现的功能>. + * + * @return + */ + public static Date nowDateTime() { + return strToDate(nowDateTimeStr(), Constants.DATE_FORMAT); + } + + /** + * 获取当前日期,指定格式 + * 描述:<描述函数实现的功能>. + * + * @return + */ + public static String nowDateTimeStr() { + return nowDate(Constants.DATE_FORMAT); + } + + /** + * 获取当前日期,指定格式 + * 描述:<描述函数实现的功能>. + * + * @return + */ + public static String nowDate(String DATE_FORMAT) { + SimpleDateFormat dft = new SimpleDateFormat(DATE_FORMAT); + return dft.format(new Date()); + } + + /** + * 获取当前日期,指定格式 + * 描述:<描述函数实现的功能>. + * + * @return + */ + public static String nowDateTime(String DATE_FORMAT) { + SimpleDateFormat dft = new SimpleDateFormat(DATE_FORMAT); + return dft.format(new Date()); + } + + /** + * 获取当前日期,指定格式 + * 描述:<描述函数实现的功能>. + * + * @return + */ + public static Integer getNowTime() { + long t = (System.currentTimeMillis()/1000L); + return Integer.parseInt(String.valueOf(t)); + } + + /** + * 获取当前时间戳(秒级) + * @return + */ + public static Long getTime() { + return (System.currentTimeMillis()/1000L); + } + + /** + * 获取当前日期,指定格式 + * 描述:<描述函数实现的功能>. + * + * @return + */ + public static Date nowDateTimeReturnDate(String DATE_FORMAT) { + SimpleDateFormat dft = new SimpleDateFormat(DATE_FORMAT); + return strToDate(dft.format(new Date()), DATE_FORMAT); + } + + /** + * convert a date to string in a specifies fromat. + * + * @param date + * @param DATE_FORMAT + * @return + */ + public static String dateToStr(Date date, String DATE_FORMAT) { + if (date == null) { + return null; + } + SimpleDateFormat myFormat = new SimpleDateFormat(DATE_FORMAT); + return myFormat.format(date); + } + + /** + * parse a String to Date in a specifies fromat. + * + * @param dateStr + * @param DATE_FORMAT + * @return + * @throws ParseException + */ + public static Date strToDate(String dateStr, String DATE_FORMAT) { + SimpleDateFormat myFormat = new SimpleDateFormat(DATE_FORMAT); + try { + return myFormat.parse(dateStr); + } catch (ParseException e) { + return null; + } + } + + + /** + * date add Second + * + * @param date + * @param num + * @return + */ + public static Date addSecond(Date date, int num) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + calendar.add(Calendar.SECOND, num); + return calendar.getTime(); + } + + /** + * date add Second return String + * + * @param date + * @param num + * @return + */ + public static String addSecond(Date date, int num, String DATE_FORMAT) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + calendar.add(Calendar.SECOND, num); + return dateToStr(calendar.getTime(), DATE_FORMAT); + } + + /** + * 指定日期加上天数后的日期 + * + * @param num 为增加的天数 + * @param newDate 创建时间 + * @return + */ + public static final String addDay(String newDate, int num, String pattern) { + SimpleDateFormat format = new SimpleDateFormat(pattern); + try { + Date currdate = format.parse(newDate); + Calendar ca = Calendar.getInstance(); + ca.setTime(currdate); + ca.add(Calendar.DATE, num); + return format.format(ca.getTime()); + } catch (ParseException e) { + LOGGER.error("转化时间出错,", e); + return null; + } + } + + /** + * 指定日期加上天数后的日期 + * + * @param num 为增加的天数 + * @param newDate 创建时间 + * @return + */ + public static final String addDay(Date newDate, int num, String pattern) { + SimpleDateFormat format = new SimpleDateFormat(pattern); + Calendar ca = Calendar.getInstance(); + ca.setTime(newDate); + ca.add(Calendar.DATE, num); + return format.format(ca.getTime()); + } + + /** + * convert long to date + * + * @param date 待转换时间戳 + * @return 转换后时间 + */ + public static Date timeStamp11ToDate(Integer date) { + return new Date(date); + } + + /** + * convert long to date string + * + * @param date 待转换时间戳 + * @param DATE_FORMAT 格式化时间 + * @return 格式化后的时间 + */ + public static String timeStamp11ToDate(Integer date, String DATE_FORMAT) { + return dateToStr(new Date(date), DATE_FORMAT); + } + + /** + * compare two date String with a pattern + * + * @param date1 + * @param date2 + * @param pattern + * @return + */ + public static int compareDate(String date1, String date2, String pattern) { + SimpleDateFormat DATE_FORMAT = new SimpleDateFormat(pattern); + try { + Date dt1 = DATE_FORMAT.parse(date1); + Date dt2 = DATE_FORMAT.parse(date2); + if (dt1.getTime() > dt2.getTime()) { + return 1; + } else if (dt1.getTime() < dt2.getTime()) { + return -1; + } else { + return 0; + } + + } catch (ParseException e) { + e.printStackTrace(); + return 0; + } + } + + /** + * 检查日期格式是否合法 + * @param date + * @param style + * @return + */ + public static boolean checkDateFormat(String date, String style) { + SimpleDateFormat DATE_FORMAT = new SimpleDateFormat(style); + try { + // 设置lenient为false. + // 否则SimpleDateFormat会比较宽松地验证日期,比如2007/02/29会被接受,并转换成2007/03/01 + DATE_FORMAT.setLenient(false); + DATE_FORMAT.parse(date); + return true; + } catch (ParseException e) { + return false; + } + } + + /** + * 计算两个时间之间的天数差 + * @param beforeDay 开始时间 + * @param afterDay 结束时间 + * @return 相差天数 + */ + public static long getTwoDateDays(Date beforeDay, Date afterDay) { + SimpleDateFormat sm = new SimpleDateFormat(Constants.DATE_FORMAT_NUM); + long days = -1; + try { + days = (sm.parse(sm.format(afterDay)).getTime() - sm.parse(sm.format(beforeDay)).getTime()) / (1000 * 3600 * 24); + } catch (Exception e) { + e.printStackTrace(); + } + + return days; + } + + + //获取时间戳11位 + public static int getSecondTimestamp(Date date){ + if (null == date) { + return 0; + } + String timestamp = String.valueOf(date.getTime()/1000); + return Integer.parseInt(timestamp); + } + + //获取时间戳11位 + public static int getSecondTimestamp(String date){ + if (null == date) { + return 0; + } + Date date1 = strToDate(date, Constants.DATE_FORMAT); + if(date1 == null){ + return 0; + } + String timestamp = String.valueOf(date1.getTime()/1000); + return Integer.parseInt(timestamp); + } + + //获取时间戳10位 + public static int getSecondTimestamp(Long timeMillis){ + if (null == timeMillis) { + return 0; + } + String timestamp = String.valueOf(timeMillis / 1000); + return Integer.parseInt(timestamp); + } + + //获取时间戳11位 + public static int getSecondTimestamp(){ + Date date = strToDate(nowDateTime(Constants.DATE_FORMAT), Constants.DATE_FORMAT); + if (null == date) { + return 0; + } + String timestamp = String.valueOf(date.getTime()/1000); + return Integer.parseInt(timestamp); + } + + /** 获得昨天日期:yyyy-MM-dd HH:mm:ss */ + public static String getYesterdayStr() { + Calendar c = Calendar.getInstance(); + c.add(Calendar.DATE, -1); + SimpleDateFormat startSdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + return startSdf.format(c.getTime()); + } + + /** 获得本周第一天:yyyy-MM-dd HH:mm:ss */ + public static String getWeekStartDay() { + Calendar c = Calendar.getInstance(); + c.add(Calendar.WEEK_OF_MONTH, 0); + c.set(Calendar.DAY_OF_WEEK, 2); + SimpleDateFormat startSdf = new SimpleDateFormat("yyyy-MM-dd 00:00:00"); + return startSdf.format(c.getTime()); + } + + /** 获得本周最后一天:yyyy-MM-dd HH:mm:ss */ + public static String getWeekEndDay() { + return addDay(getWeekStartDay(), 7, Constants.DATE_FORMAT); + } + + /** 获得上周第一天:yyyy-MM-dd HH:mm:ss */ + public static String getLastWeekStartDay() { + return addDay(getWeekStartDay(), -7, Constants.DATE_FORMAT); + } + + /** 获得上周最后一天:yyyy-MM-dd HH:mm:ss */ + public static String getLastWeekEndDay() { + return addDay(getLastWeekStartDay(), 7, Constants.DATE_FORMAT); + } + + /** 获得本月最后一天:yyyy-MM-dd HH:mm:ss */ + public static String getMonthEndDay() { + Calendar c = Calendar.getInstance(); + c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DAY_OF_MONTH)); + SimpleDateFormat endSdf = new SimpleDateFormat("yyyy-MM-dd 23:59:59"); + return endSdf.format(c.getTime()); + } + + /** 获得上月第一天:yyyy-MM-dd HH:mm:ss */ + public static String getLastMonthStartDay() { + Calendar c = Calendar.getInstance(); + c.add(Calendar.MONTH, -1); + c.set(Calendar.DAY_OF_MONTH, 1); + SimpleDateFormat startSdf = new SimpleDateFormat("yyyy-MM-01 00:00:00"); + return startSdf.format(c.getTime()); + } + + /** 获得上月最后一天:yyyy-MM-dd HH:mm:ss */ + public static String getLastMonthEndDay() { + Calendar c = Calendar.getInstance(); + c.add(Calendar.MONTH, -1); + c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DAY_OF_MONTH)); + SimpleDateFormat endSdf = new SimpleDateFormat("yyyy-MM-dd 23:59:59"); + return endSdf.format(c.getTime()); + } + + /** 获得上年第一天:yyyy-MM-dd HH:mm:ss */ + public static String getLastYearStartDay() { + Calendar c = Calendar.getInstance(); + c.add(Calendar.YEAR, -1); + SimpleDateFormat startSdf = new SimpleDateFormat("yyyy-01-01 00:00:00"); + return startSdf.format(c.getTime()); + } + + /** 获得上年最后一天:yyyy-MM-dd HH:mm:ss */ + public static String getLastYearEndDay() { + Calendar c = Calendar.getInstance(); + c.add(Calendar.YEAR, -1); + SimpleDateFormat endSdf = new SimpleDateFormat("yyyy-12-31 23:59:59"); + return endSdf.format(c.getTime()); + } + + /** + * 计算时间范围 + * @param data string 类型 + * @author Mr.Zhang + * @since 2020-05-06 + * @return dateLimitUtilVo + */ + public static dateLimitUtilVo getDateLimit(String data){ + //时间计算 + String startTime = null; + String endTime = DateUtil.nowDateTime(Constants.DATE_FORMAT); + String day = DateUtil.nowDateTime(Constants.DATE_FORMAT_START); + String end = DateUtil.nowDateTime(Constants.DATE_FORMAT_END); + + if(!StringUtils.isBlank(data)){ + switch (data){ + case Constants.SEARCH_DATE_DAY: + startTime = day; + break; + case Constants.SEARCH_DATE_YESTERDAY: + startTime = DateUtil.addDay(day, -1, Constants.DATE_FORMAT_START); + endTime = DateUtil.addDay(end, -1, Constants.DATE_FORMAT_END); + break; + case Constants.SEARCH_DATE_LATELY_7: + startTime = DateUtil.addDay(day, -6, Constants.DATE_FORMAT_START); + break; + case Constants.SEARCH_DATE_WEEK: + startTime = getWeekStartDay(); + endTime = getWeekEndDay(); + break; + case Constants.SEARCH_DATE_PRE_WEEK: + startTime = getLastWeekStartDay(); + endTime = getLastWeekEndDay(); + break; + case Constants.SEARCH_DATE_LATELY_30: + startTime = DateUtil.addDay(day, -30, Constants.DATE_FORMAT_START); + break; + case Constants.SEARCH_DATE_MONTH: + startTime = DateUtil.nowDateTime(Constants.DATE_FORMAT_MONTH_START); + endTime = getMonthEndDay(); + break; + case Constants.SEARCH_DATE_PRE_MONTH: + startTime = getLastMonthStartDay(); + endTime = getLastMonthEndDay(); + break; + case Constants.SEARCH_DATE_YEAR: + startTime = DateUtil.nowDateTime(Constants.DATE_FORMAT_YEAR_START); + endTime = DateUtil.nowDateTime(Constants.DATE_FORMAT_YEAR_END); + break; + case Constants.SEARCH_DATE_PRE_YEAR: + startTime = getLastYearStartDay(); + endTime = getLastYearEndDay(); + break; + default: + List list = CrmebUtil.stringToArrayStr(data); + if(list.size() == 1){ + throw new CrmebException("选择时间参数格式错误,请在 " + + Constants.SEARCH_DATE_DAY + "|" + + Constants.SEARCH_DATE_YESTERDAY + "|" + + Constants.SEARCH_DATE_LATELY_7 + "|" + + Constants.SEARCH_DATE_LATELY_30 + "|" + + Constants.SEARCH_DATE_MONTH + "|" + + Constants.SEARCH_DATE_YEAR + "|自定义时间范围(格式:yyyy-MM-dd HH:mm:ss,两个时间范围用逗号分割)"); + } + startTime = list.get(0); + endTime = list.get(1); + +// if (startTime.equals(endTime)) { + startTime = DateUtil.appointedDayStrToFormatStr(startTime, Constants.DATE_FORMAT_DATE, Constants.DATE_FORMAT_START); + endTime = DateUtil.appointedDayStrToFormatStr(endTime, Constants.DATE_FORMAT_DATE, Constants.DATE_FORMAT_END); +// } + break; + } + } + return new dateLimitUtilVo(startTime, endTime); + } + + /** + * 获取某一时间段内的时间集合 + * @param data string 类型 + * @author Mr.Zhang + * @since 2020-05-06 + * @return List + */ + public static List getListDate(String data) { + + //获取30天的开始结束日期 + dateLimitUtilVo dateLimit = DateUtil.getDateLimit(data); + + //定义日期集合 + List date = new ArrayList<>(); + + //开始日期 + Date startDate = DateUtil.strToDate(dateLimit.getStartTime(), Constants.DATE_FORMAT); + + //结束日期 + Date endDate = DateUtil.strToDate(dateLimit.getEndTime(), Constants.DATE_FORMAT); + + while (endDate.after(startDate)){ + date.add(DateUtil.dateToStr(startDate, Constants.DATE_FORMAT_DATE)); // 放入集合 + startDate = DateUtil.strToDate(DateUtil.addDay(startDate, 1, Constants.DATE_FORMAT), Constants.DATE_FORMAT); //循环一次 加一天 + } + + return date; + } + + /** + * 两个日期之前的相差天数 + * @param starDate 开始日期 + * @param endDate 结束日期 + * @return 相差天数 + */ + public static int daysBetween(Date starDate,Date endDate){ + + Calendar cal = Calendar.getInstance(); + + cal.setTime(starDate); + + long time1 = cal.getTimeInMillis(); + + cal.setTime(endDate); + + long time2 = cal.getTimeInMillis(); + + long between_days=(time2-time1)/(1000*3600*24); + + return Integer.parseInt(String.valueOf(between_days)); + + } + + /** + * 获取指定日期指定格式字符串 + * + * @param dateStr + * @param DATE_FORMAT + * @return + * @throws ParseException + */ + public static String appointedDayStrToFormatStr(String dateStr, String STR_DATE_FORMAT, String DATE_FORMAT) { + Date date = DateUtil.strToDate(dateStr, STR_DATE_FORMAT); + return DateUtil.dateToStr(date, DATE_FORMAT); + } + + /** + * 获取当前时间小时 + * @return 当前时间小时 默认24小时 + */ + public static int getCurrentHour(){ + int hour = Calendar.getInstance().get(Calendar.HOUR_OF_DAY); + return hour; + } + + /** + * 13位时间戳转字符串 + * @param timestamp + * @param dateFormat + * @return + */ + public static String timestamp2DateStr(Long timestamp, String dateFormat) { + if (ObjectUtil.isNull(timestamp)) { + return ""; + } + if (StrUtil.isBlank(dateFormat)) { + dateFormat = Constants.DATE_FORMAT; + } + Date date = new Date(timestamp); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat(dateFormat); + return simpleDateFormat.format(date); + } + + /** + * 字符串转13位时间戳 + */ + public static Long dateStr2Timestamp(String dateStr, String type) { + DateTime parse = cn.hutool.core.date.DateUtil.parse(dateStr); + if (StrUtil.isNotBlank(type)) { + if (type.equals(Constants.DATE_TIME_TYPE_BEGIN)) { + parse = cn.hutool.core.date.DateUtil.beginOfDay(parse); + } + if (type.equals(Constants.DATE_TIME_TYPE_END)) { + parse = cn.hutool.core.date.DateUtil.endOfDay(parse); + } + } + return parse.getTime(); + } + + public static void main(String[] args) { + dateLimitUtilVo dateLimit = getDateLimit(Constants.SEARCH_DATE_LATELY_7); + System.out.println(dateLimit.getStartTime()); + System.out.println(dateLimit.getEndTime()); + } + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/ExportUtil.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/ExportUtil.java new file mode 100644 index 0000000..7ea50bb --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/ExportUtil.java @@ -0,0 +1,99 @@ +package com.zbkj.common.utils; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.poi.excel.ExcelUtil; +import cn.hutool.poi.excel.ExcelWriter; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.exception.CrmebException; +import org.apache.poi.ss.usermodel.CellStyle; +import org.apache.poi.ss.usermodel.Font; + +import java.io.File; +import java.util.LinkedHashMap; +import java.util.List; + +/** + * 导出工具类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class ExportUtil { + + /** + * 导出Excel文件 + * @param fileName 文件名 + * @param title 文件标题 + * @param voList 数据列表 + * @param aliasMap 别名Map(别名需要与数据列表的数据对应) + * @return 返回给前端的文件名(路径+文件名) + */ + public static String exportExecl(String fileName, String title, List voList, LinkedHashMap aliasMap) { + if (StrUtil.isBlank(fileName)) { + throw new CrmebException("文件名不能为空"); + } + if (StrUtil.isBlank(title)) { + throw new CrmebException("标题不能为空"); + } + if (CollUtil.isEmpty(voList)) { + throw new CrmebException("数据列表不能为空"); + } + if (CollUtil.isEmpty(aliasMap)) { + throw new CrmebException("别名map不能为空"); + } + + // 文件名部分 + String newFileName = UploadUtil.getWebPath() + fileName; + String filePath = UploadUtil.getServerPath(); + + // 判断是否存在当前目录,不存在则创建 + File file = new File(filePath); + if (!file.exists()) { + file.mkdirs(); + } + fileName = filePath.concat(fileName); + + // 通过工具类创建writer + ExcelWriter writer = ExcelUtil.getWriter(fileName); +// ExcelWriter writer = ExcelUtil.getWriter("d:/writeMapTest.xlsx"); + CellStyle headCellStyle = writer.getHeadCellStyle(); + Font font = writer.createFont(); + font.setBold(true); + headCellStyle.setFont(font); + + //自定义标题别名 + aliasMap.forEach((key, value) -> writer.addHeaderAlias(key, value)); + // 合并单元格后的标题行,使用默认标题样式 + writer.merge(aliasMap.size() - 1, title); + writer.merge(aliasMap.size() - 1, StrUtil.format("生成时间:{}", DateUtil.nowDateTimeStr())); + //设置宽度自适应 + writer.setColumnWidth(-1, 22); + // 一次性写出内容,使用默认样式,强制输出标题 + writer.write(voList, true); + // 关闭writer,释放内存 + writer.close(); + + return newFileName; + } + + /** + * 上传部分设置 + */ + public static void setUpload(String rootPath, String modelPath, String type) { + if (StrUtil.isBlank(rootPath) || StrUtil.isBlank(modelPath) || StrUtil.isBlank(type)) { + throw new CrmebException("请检查上传参数,上传参数不能为空"); + } + UploadUtil.setRootPath(rootPath); + UploadUtil.setModelPath(Constants.UPLOAD_TYPE_IMAGE +"/"+Constants.UPLOAD_TYPE_FILE+"/"+modelPath); +// UploadUtil.setType(type); + } + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/ImageMergeUtil.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/ImageMergeUtil.java new file mode 100644 index 0000000..c5c72f9 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/ImageMergeUtil.java @@ -0,0 +1,151 @@ +package com.zbkj.common.utils; + +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.vo.ImageMergeUtilVo; +import lombok.Data; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Component; + +import javax.imageio.ImageIO; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.io.*; +import java.net.URL; +import java.net.URLConnection; +import java.util.List; + +/** + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + * 图片工具类 + */ +@Data +@Component +public class ImageMergeUtil { + public static BufferedImage bufferedImage; //背景图片 + public static String model = "merge"; + public static String ext = "jpg"; + + /** + * 合并生成新的图片文件 + * @param list List 图片集合 + * @author Mr.Zhang + * @since 2020-05-06 + */ + public static String drawWordFile(List list){ + buildImage(list); + if(bufferedImage == null){ + return null; + } + + try { + UploadUtil.setModelPath(model); + UploadUtil.setExtStr(ext); +// UploadUtil.setType(Constants.UPLOAD_TYPE_IMAGE); + + //文件名 + String newFileName = UploadUtil.fileName(ext); + // 创建目标文件的名称,规则请看destPath方法 + String destPath = UploadUtil.getDestPath(newFileName); + // 创建文件 + File file = UploadUtil.createFile(destPath); + ImageIO.write(bufferedImage, ext, file); + return destPath; + } catch (IOException ex) { + ex.printStackTrace(); + } + return null; + } + + private static void drawImage(ImageMergeUtilVo imageMergeUtilVo){ + String fileName = getFileSource(imageMergeUtilVo.getPath()); + if(StringUtils.isBlank(fileName)){ + return; + } + try{ + File file = new File(fileName); + BufferedImage read = ImageIO.read(file); + + if(bufferedImage == null || "".equals(bufferedImage)){ + imageMergeUtilVo.setX(0); + imageMergeUtilVo.setY(0); + //创建新的画布,宽高以第一个图为准 + bufferedImage = new BufferedImage(read.getWidth(), read.getHeight(), BufferedImage.TYPE_INT_BGR); + } + + Graphics graphics = bufferedImage.getGraphics(); + //在画布上绘制背景图 + graphics.drawImage(read, imageMergeUtilVo.getX(), imageMergeUtilVo.getX(), read.getWidth(), read.getHeight(), null); + file.delete(); + }catch (Exception e){ + //合成图片xx失败 + throw new CrmebException("合成图片 + " + fileName + "失败"); + } + } + + /** + * 合并生成新的图片流 + * @param list List 图片集合 + * @author Mr.Zhang + * @since 2020-05-06 + */ + private static void buildImage(List list){ + if(list.size() < 2){ + throw new CrmebException("至少需要2张图片才可以做合并"); + } + + for (ImageMergeUtilVo imageMergeUtilVo : list) { + drawImage(imageMergeUtilVo); + } + } + + + + /** + * 根据图片路径输出File流 + * @param url String 文件地址 + * @author Mr.Zhang + * @since 2020-05-06 + */ + private static String getFileSource(String url){ + if(!url.contains("http")){ + return url; + } + + try { + URL urlInfo = new URL(url); + // 打开连接 + URLConnection con = urlInfo.openConnection(); + // 输入流 + InputStream is = con.getInputStream(); + // 1K的数据缓冲 + byte[] bs = new byte[1024]; + // 读取到的数据长度 + int len; + + String fileName = UploadUtil.fileName(ext); + // 输出的文件流 + OutputStream os = new FileOutputStream(fileName); + // 开始读取 + while ((len = is.read(bs)) != -1) { + os.write(bs, 0, len); + } + // 完毕,关闭所有链接 + os.close(); + is.close(); + + return fileName; + }catch (Exception e){ + e.printStackTrace(); + } + + return null; + } +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/QRCodeUtil.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/QRCodeUtil.java new file mode 100644 index 0000000..7678360 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/QRCodeUtil.java @@ -0,0 +1,68 @@ +package com.zbkj.common.utils; + +import com.google.zxing.BarcodeFormat; +import com.google.zxing.EncodeHintType; +import com.google.zxing.client.j2se.MatrixToImageWriter; +import com.google.zxing.common.BitMatrix; +import com.google.zxing.qrcode.QRCodeWriter; +import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; +import org.apache.commons.codec.binary.Base64; +import org.springframework.stereotype.Component; +import org.springframework.util.StringUtils; + +import javax.imageio.ImageIO; +import javax.servlet.ServletOutputStream; +import java.awt.image.BufferedImage; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.HashMap; + +/** + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + * 二维码工具 + */ +@Component +public class QRCodeUtil { + + public static String crateQRCode(String content, int width, int height) throws IOException { + + if (!StringUtils.isEmpty(content)) { + ServletOutputStream stream = null; + ByteArrayOutputStream os = new ByteArrayOutputStream(); + @SuppressWarnings("rawtypes") + HashMap hints = new HashMap<>(); + hints.put(EncodeHintType.CHARACTER_SET, "utf-8"); // 指定字符编码为“utf-8” + hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H); // 指定二维码的纠错等级为中级 + hints.put(EncodeHintType.MARGIN, 2); // 设置图片的边距 + + try { + QRCodeWriter writer = new QRCodeWriter(); + BitMatrix bitMatrix = writer.encode(content, BarcodeFormat.QR_CODE, width, height, hints); + + BufferedImage bufferedImage = MatrixToImageWriter.toBufferedImage(bitMatrix); + ImageIO.write(bufferedImage, "png", os); + /** + * 原生转码前面没有 data:image/png;base64 这些字段,返回给前端是无法被解析,可以让前端加,也可以在下面加上 + */ + + return CrmebUtil.getBase64Image(Base64.encodeBase64String(os.toByteArray())); + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (stream != null) { + stream.flush(); + stream.close(); + } + } + } + return null; + } +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/RedisUtil.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/RedisUtil.java new file mode 100644 index 0000000..961aaea --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/RedisUtil.java @@ -0,0 +1,301 @@ +package com.zbkj.common.utils; + +import org.springframework.data.redis.core.ListOperations; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.core.SetOperations; +import org.springframework.data.redis.core.ZSetOperations; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Set; +import java.util.concurrent.TimeUnit; + +/** + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + * redis工具类 + */ + +@Component +public class RedisUtil { + + @Resource + private RedisTemplate redisTemplate; + +// private static RedisTemplate redisTemplate = SpringUtil.getBean("redisTemplate", RedisTemplate.class); + + // =============== common ========================== + /** + * 指定缓存失效时间 + * @param key 键 + * @param time 时间(秒) + * @return boolean + */ + public boolean expire(String key, long time) { + try { + if (time > 0) { + redisTemplate.expire(key, time, TimeUnit.SECONDS); + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 根据key 获取过期时间 + * @param key 键 不能为null + * @return 时间(秒) 返回0代表为永久有效 失效时间为负数,说明该主键未设置失效时间(失效时间默认为-1) + */ + public long getExpire(String key) { + return redisTemplate.getExpire(key, TimeUnit.SECONDS); + } + + /** + * 判断key是否存在 + * @param key 键 + * @return true 存在 false 不存在 + */ + public boolean exists(String key){ + try { + return redisTemplate.hasKey(key); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 删除对应的value + * @param key string key + */ + public void delete(String key) { + if (exists(key)) { + redisTemplate.delete(key); + } + } + + // =============== string ========================== + /** + * 写入缓存 + * @param key string key + * @param value string value + */ + public boolean set(String key, Object value) { + try { + redisTemplate.opsForValue().set(key, value); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 写入缓存带有效期(默认时间单位:秒) + * @param key string key + * @param value string value + * @param expireTime Long 过期时间 + * @return boolean + */ + public boolean set(String key, Object value, Long expireTime) { + try { + if (expireTime > 0) { + redisTemplate.opsForValue().set(key, value, expireTime, TimeUnit.SECONDS); + } else { + set(key, value); + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 写入缓存带有效期 + * @param key string key + * @param value string value + * @param expireTime Long 过期时间 + * @param timeUnit TimeUnit 时间格式 + * @return boolean + */ + public boolean set(String key, Object value, Long expireTime, TimeUnit timeUnit) { + try { + redisTemplate.opsForValue().set(key, value, expireTime, timeUnit); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 读取缓存 + * @param key string key + * @return T + */ + @SuppressWarnings("unchecked") + public T get(String key) { + return (T) redisTemplate.opsForValue().get(key); + } + + /** + * 哈希添加 + * @param key string key + * @param hashKey Object hashKey + * @param value Object value + */ + + public void hmSet(String key, Object hashKey, Object value) { + redisTemplate.opsForHash().put(key, hashKey, value); + } + + /** + * 哈希删除 + * @param key string key + * @param hashKey Object hashKey + */ + + public void hmDelete(String key, Object hashKey) { + redisTemplate.opsForHash().delete(key, hashKey); + } + + /** + * 哈希获取数据 + * @param key string key + * @param hashKey Object hashKey + */ + public Object hmGet(String key, Object hashKey) { + return redisTemplate.opsForHash().get(key, hashKey); + } + + /** + * 哈希数量 + * @param key string key + */ + public Long getHashSize(String key) { + return redisTemplate.opsForHash().size(key); + } + + /** + * 列表添加左边添加 + * @param k string key + * @param v Object v + * @author Mr.Zhang + * @since 2020-04-13 + */ + public void lPush(String k, Object v) { + ListOperations list = redisTemplate.opsForList(); + list.leftPush(k, v); + } + + /** + * 从右边拿出来一个 + * @param k string key + * @param t Long 超时秒数 + */ + public Object getRightPop(String k, Long t){ + return redisTemplate.opsForList().rightPop(k, t, TimeUnit.SECONDS); + } + + /** + * 列表获取数量 + * @param k string key + * @return Long + */ + public Long getListSize(String k) { + return redisTemplate.opsForList().size(k); + } + + /** + * 列表获取 + * @param k string key + * @param l long l + * @param l1 long l1 + * @return List + */ + public List lRange(String k, long l, long l1) { + ListOperations list = redisTemplate.opsForList(); + return list.range(k, l, l1); + } + + /** + * 集合添加 + * @param key string key + * @param value Object value + */ + public void add(String key, Object value) { + SetOperations set = redisTemplate.opsForSet(); + set.add(key, value); + } + + /** + * 集合获取 + * @param key string key + * @return Set + */ + public Set setMembers(String key) { + SetOperations set = redisTemplate.opsForSet(); + return set.members(key); + } + + /** + * 有序集合添加 排行榜使用 + * @param key string key + * @param value Object value + * @param score double scoure + */ + public void zAdd(String key, Object value, double score) { + ZSetOperations zset = redisTemplate.opsForZSet(); + zset.add(key, value, score); + } + + + /** + * 有序集合获取 排行榜使用 + * @param key string key + * @param score double scoure + * @return Set + */ + public Set rangeByScore(String key, double score, double score1) { + ZSetOperations zset = redisTemplate.opsForZSet(); + return zset.rangeByScore(key, score, score1); + } + + /** + * 递增 + * @param key 键 + * @return long + */ + public long incrAndCreate(String key){ + if (!exists(key)) { + set(key, 1); + return 1; + } + return incr(key, 1L); + } + + /** + * 递增 + * @param key 键 + * @param delta 要增加几(大于0) + * @return long + */ + public long incr(String key, long delta){ + if (delta < 0) { + throw new RuntimeException("递增因子必须大于0"); + } + return redisTemplate.opsForValue().increment(key, delta); + } + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/RequestUtil.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/RequestUtil.java new file mode 100644 index 0000000..b5d7e49 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/RequestUtil.java @@ -0,0 +1,106 @@ +package com.zbkj.common.utils; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.List; +import java.util.Objects; + +/** + * Request工具类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class RequestUtil extends HttpServlet{ + public static HttpServletRequest getRequest() { + if(RequestContextHolder.getRequestAttributes() != null){ + return ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest(); + + } + + return null; + } + public static HashMap getRequestParamAndHeader(){ + + try{ + HttpServletRequest request = getRequest(); + if(request == null){ + return null; + } + + //request信息 + HashMap data = new HashMap<>(); + HashMap requestParams = new HashMap<>(); + Enumeration paraNames = request.getParameterNames(); + if(paraNames != null){ + for(Enumeration enumeration =paraNames;enumeration.hasMoreElements();){ + String key= enumeration.nextElement(); + requestParams.put(key, request.getParameter(key)); + } + } + + HashMap requestFilter = new HashMap<>(); + Enumeration attributeNames = request.getAttributeNames(); + if(attributeNames != null){ + for ( Enumeration attributeNames1 = attributeNames; attributeNames1.hasMoreElements();) { + String key= attributeNames1.nextElement(); + if(key.contains("request_")){ + requestFilter.put(key, request.getAttribute(key)); + } + } + } + + data.put("url", request.getRequestURL()); + data.put("uri", request.getRequestURI()); + data.put("method", request.getMethod()); + data.put("request", requestParams); + data.put("request_filter", requestFilter); + + //header 信息 + Enumeration headerNames = request.getHeaderNames(); + HashMap headerParams = new HashMap<>(); + if(headerNames != null){ + for(Enumeration enumeration = headerNames;enumeration.hasMoreElements();){ + String key= enumeration.nextElement(); + String value=request.getHeader(key); + headerParams.put(key, value); + } + } + data.put("header", headerParams); + + + return data; + }catch (Exception e){ + e.printStackTrace(); + return null; + } + } + + public static String getDomain(){ + HttpServletRequest request = getRequest(); + if(request == null){ + return null; + } + return request.getServerName() + ":" + request.getServerPort(); + } + + public static String getUri(HttpServletRequest request){ + String uri = request.getRequestURI(); + List list = CrmebUtil.stringToArrayStrRegex(uri, "/"); + list.removeIf(StringUtils::isNumeric); //去掉url中的数字参数 + list.removeIf(c -> c.contains(","));// 去掉url中的逗号分隔参数 + return StringUtils.join(list, "/"); + } +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/RestTemplateUtil.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/RestTemplateUtil.java new file mode 100644 index 0000000..8cf338b --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/RestTemplateUtil.java @@ -0,0 +1,446 @@ +package com.zbkj.common.utils; + +import cn.hutool.core.collection.CollUtil; +import com.alibaba.fastjson.JSONObject; +import org.apache.http.HttpResponse; +import org.apache.http.client.HttpClient; +import org.apache.http.client.config.RequestConfig; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.config.RegistryBuilder; +import org.apache.http.conn.socket.ConnectionSocketFactory; +import org.apache.http.conn.socket.PlainConnectionSocketFactory; +import org.apache.http.conn.ssl.DefaultHostnameVerifier; +import org.apache.http.conn.ssl.SSLConnectionSocketFactory; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.impl.conn.BasicHttpClientConnectionManager; +import org.apache.http.util.EntityUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.*; +import org.springframework.stereotype.Component; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; +import org.springframework.web.client.RestTemplate; + +import javax.net.ssl.KeyManagerFactory; +import javax.net.ssl.SSLContext; +import java.io.FileInputStream; +import java.nio.charset.StandardCharsets; +import java.security.KeyStore; +import java.security.SecureRandom; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + + +/** + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + * httpClient 工具类 + */ + +@Component +public class RestTemplateUtil { + + @Autowired + private RestTemplate restTemplate; + + public static final String WXPAYSDK_VERSION = "WXPaySDK/3.0.9"; + public static final String USER_AGENT = WXPAYSDK_VERSION + + " (" + System.getProperty("os.arch") + " " + System.getProperty("os.name") + " " + System.getProperty("os.version") + + ") Java/" + System.getProperty("java.version") + " HttpClient/" + HttpClient.class.getPackage().getImplementationVersion(); + +// /** +// * 设置超时时间 +// */ +// public RestTemplateUtil() { +// SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory(); +// //30s +// requestFactory.setConnectTimeout(30*1000); +// requestFactory.setReadTimeout(30*1000); +// restTemplate = new RestTemplate(requestFactory); +// } + + /** + * 发送GET请求 + * @param url + * @param param + * @return + */ + + public String getData(String url, Map param) { + // 请勿轻易改变此提交方式,大部分的情况下,提交方式都是表单提交 + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); + return restTemplate.getForEntity(url, String.class, param).getBody(); + } + + /** + * 发送GET请求 + * @param url + * @return + */ + + public String getLink(String url) { + return restTemplate.getForEntity(url, String.class).getBody(); + } + + + /** + * 发送GET请求 + * @param url + * @return + */ + + public JSONObject getData(String url) { + HttpHeaders headers = new HttpHeaders(); + headers.add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"); + headers.setContentType(MediaType.APPLICATION_JSON); + + HttpEntity> requestEntity = + new HttpEntity<>( headers); + + return restTemplate.exchange( url, HttpMethod.GET, requestEntity, JSONObject.class).getBody(); + } + + /** + * 发送GET请求 支持header + * @param url + * @return + */ + + public JSONObject getData(String url, HashMap hashMap) { + + HttpHeaders headers = new HttpHeaders(); + headers.add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"); + headers.setContentType(MediaType.APPLICATION_JSON_UTF8); + + for (Map.Entry entry : hashMap.entrySet()) { + headers.add(entry.getKey(), entry.getValue()); + } + + HttpEntity> requestEntity = + new HttpEntity<>( headers); + + return restTemplate.exchange( url, HttpMethod.GET, requestEntity, JSONObject.class).getBody(); + } + + + /** + * 发送POST-JSON请求 + * + * @param url + * @param param + * @return + */ + + public String postJsonData(String url, JSONObject param) { + + HttpHeaders headers = new HttpHeaders(); + + headers.setContentType(MediaType.APPLICATION_JSON_UTF8); + + headers.add("Accept", MediaType.APPLICATION_JSON.toString()); + + HttpEntity requestEntity = new HttpEntity(param, headers); + + return restTemplate.postForEntity(url, param, String.class).getBody(); + + } + + /** + * 发送POST 表单请求 + * + * @param url + * @return + */ + + public String postFormData(String url, MultiValueMap map) { + HttpHeaders headers = new HttpHeaders(); +// headers.setContentType(MediaType.MULTIPART_FORM_DATA); + HttpEntity> requests = new HttpEntity>(map, headers); + String body = restTemplate.postForEntity(url, requests, String.class).getBody(); + return body; + + + } + + + + + /** + * 发送POST-JSON请求 + * + * @param url + * @param param + * @return + */ + + public JSONObject postJsonDataAndReturnJson(String url, JSONObject param) { + HttpHeaders headers = new HttpHeaders(); + + headers.setContentType(MediaType.APPLICATION_JSON_UTF8); + headers.add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"); + + headers.add("Accept", MediaType.APPLICATION_JSON.toString()); + + HttpEntity requestEntity = new HttpEntity(param, headers); + + JSONObject body = restTemplate.postForEntity(url, requestEntity, JSONObject.class).getBody(); + + return body; + + } + + /** + * 发送POST-JSON请求 + * + * @param url + * @return + */ + + public JSONObject post(String url) { + HttpHeaders headers = new HttpHeaders(); + + headers.setContentType(MediaType.APPLICATION_JSON_UTF8); + headers.add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"); + + headers.add("Accept", MediaType.APPLICATION_JSON.toString()); + + HttpEntity requestEntity = new HttpEntity<>( headers); + + JSONObject body = restTemplate.postForEntity(url, requestEntity, JSONObject.class).getBody(); + + return body; + + } + + /** + * 发送POST-JSON请求 + * + * @param url + * @return + */ + + public String postXml(String url, String xml){ + HttpHeaders headers = new HttpHeaders(); + + MediaType type = MediaType.parseMediaType("application/xml; charset=UTF-8"); + headers.setContentType(type); + HttpEntity requestEntity = new HttpEntity<>(xml, headers); + + ResponseEntity responseEntity = restTemplate.postForEntity(url, requestEntity, String.class); + try{ + System.out.println("responseEntity"+responseEntity); + return new String(Objects.requireNonNull(responseEntity.getBody()).getBytes("UTF-8"), StandardCharsets.UTF_8); + }catch (Exception e){ + return ""; + } + } + + /** + * 发送POST-JSON请求(微信退款专用) + * + * @param url + * @return + */ + + public String postWXRefundXml(String url, String xml, String mchId, String path) throws Exception { + KeyStore clientStore = KeyStore.getInstance("PKCS12"); + // 读取本机存放的PKCS12证书文件 + FileInputStream instream = new FileInputStream(path); + try { + // 指定PKCS12的密码(商户ID) + clientStore.load(instream, mchId.toCharArray()); + } finally { + instream.close(); + } + + // 实例化密钥库 & 初始化密钥工厂 + KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); + kmf.init(clientStore, mchId.toCharArray()); + + // 创建 SSLContext + SSLContext sslContext = SSLContext.getInstance("TLS"); + sslContext.init(kmf.getKeyManagers(), null, new SecureRandom()); + + SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory( + sslContext, +// new String[]{"TLSv1"}, +// null, + new DefaultHostnameVerifier()); + + BasicHttpClientConnectionManager connManager = new BasicHttpClientConnectionManager( + RegistryBuilder.create() + .register("http", PlainConnectionSocketFactory.getSocketFactory()) + .register("https", sslConnectionSocketFactory) + .build(), + null, + null, + null + ); + + HttpClient httpClient = HttpClientBuilder.create() + .setConnectionManager(connManager) + .build(); + + HttpPost httpPost = new HttpPost(url); + + RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(8*1000).setConnectTimeout(6*1000).build(); + httpPost.setConfig(requestConfig); + + StringEntity postEntity = new StringEntity(xml, "UTF-8"); + httpPost.addHeader("Content-Type", "text/xml"); + httpPost.addHeader("User-Agent", USER_AGENT + " " + mchId); + httpPost.setEntity(postEntity); + + HttpResponse httpResponse = httpClient.execute(httpPost); + org.apache.http.HttpEntity httpEntity = httpResponse.getEntity(); + return EntityUtils.toString(httpEntity, "UTF-8"); + } + + /** + * 发送POST 表单请求 + * + * @param url + * @param params + * @return + * + * 表单提交,返回数据分为两部分,一个代表成功,一个是返回的数据内容 + */ + + public String postFormData(String url, LinkedMultiValueMap params ) { + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.MULTIPART_FORM_DATA); + + HttpEntity> requestEntity = + new HttpEntity<>(params, headers); + + ResponseEntity responseEntity = restTemplate.exchange( + url, + HttpMethod.POST, + requestEntity, + String.class); + + String body = responseEntity.getBody(); + + return body; + + } + + + + public String postMapData(String url, Map params ) { + + //cs + HttpHeaders headers = new HttpHeaders(); + headers.add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.add("Accept", MediaType.APPLICATION_JSON.toString()); + + HttpEntity> requestEntity = + new HttpEntity<>(params, headers); + + String body1 = restTemplate.postForEntity( url, requestEntity, String.class).getBody(); + + + System.out.println(body1); + + return body1; + + } + + public String postMapData(String url, Map params, Map header) { + + //cs + HttpHeaders headers = new HttpHeaders(); + headers.add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.add("Accept", MediaType.APPLICATION_JSON.toString()); + + for (Map.Entry entry : header.entrySet()) { + headers.add(entry.getKey(), entry.getValue()); + } + + HttpEntity> requestEntity = + new HttpEntity<>(params, headers); + + String body1 = restTemplate.postForEntity( url, requestEntity, String.class).getBody(); + + + System.out.println(body1); + + return body1; + + } + + + public String postStringData(String url,String data ) { + + //cs + HttpHeaders headers = new HttpHeaders(); + headers.add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.add("Accept", MediaType.APPLICATION_JSON.toString()); + + HttpEntity requestEntity = + new HttpEntity<>(data, headers); + + String body1 = restTemplate.postForEntity(url, requestEntity, String.class).getBody(); + + + System.out.println(body1); + + return body1; + + } + + public byte[] postJsonDataAndReturnBuffer(String url, JSONObject param) { + HttpHeaders headers = new HttpHeaders(); + + headers.setContentType(MediaType.APPLICATION_JSON_UTF8); + + headers.add("Accept", MediaType.APPLICATION_JSON.toString()); + + HttpEntity requestEntity = new HttpEntity(param, headers); + + return restTemplate.postForEntity(url, param, byte[].class).getBody(); + } + + + public byte[] getBuffer(String url) { + return restTemplate.getForEntity(url, byte[].class).getBody(); + } + + /** + * post——from-urlencoded格式请求 + */ + public String postFromUrlencoded(String url, MultiValueMap params, Map header) { + HttpHeaders headers = new HttpHeaders(); + headers.add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"); + headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); + + if (CollUtil.isNotEmpty(header)) { + for (Map.Entry entry : header.entrySet()) { + headers.add(entry.getKey(), entry.getValue()); + } + } + + HttpEntity> requestEntity = + new HttpEntity<>(params, headers); + +// SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory(); +// //30s +// requestFactory.setConnectTimeout(30*1000); +// requestFactory.setReadTimeout(30*1000); +// restTemplate = new RestTemplate(requestFactory); + return restTemplate.postForEntity(url, requestEntity, String.class).getBody(); + } +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/SecurityUtil.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/SecurityUtil.java new file mode 100644 index 0000000..837e8a3 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/SecurityUtil.java @@ -0,0 +1,35 @@ +package com.zbkj.common.utils; + +import cn.hutool.core.util.ObjectUtil; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.vo.LoginUserVo; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; + +/** + * security工具类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class SecurityUtil { + + /** + * 获取管理员信息(从security中) + */ + public static LoginUserVo getLoginUserVo() { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + LoginUserVo loginUserVo = (LoginUserVo) authentication.getPrincipal(); + if (ObjectUtil.isNull(loginUserVo)) { + throw new CrmebException("登录信息已过期,请重新登录"); + } + return loginUserVo; + } + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/SpringUtil.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/SpringUtil.java new file mode 100644 index 0000000..c2649a1 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/SpringUtil.java @@ -0,0 +1,50 @@ +package com.zbkj.common.utils; + +import org.springframework.beans.BeansException; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.stereotype.Component; + +/** + * Spring 工具类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Component +public class SpringUtil implements ApplicationContextAware { + private static ApplicationContext applicationContext; + + @Override + public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { + if(SpringUtil.applicationContext == null) { + SpringUtil.applicationContext = applicationContext; + } + } + + //获取applicationContext + public static ApplicationContext getApplicationContext() { + return applicationContext; + } + + //通过name获取 Bean. + public static Object getBean(String name){ + return getApplicationContext().getBean(name); + } + + //通过class获取Bean. + public static T getBean(Class clazz){ + return getApplicationContext().getBean(clazz); + } + + //通过name,以及Clazz返回指定的Bean + public static T getBean(String name,Class clazz){ + return getApplicationContext().getBean(name, clazz); + } +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/UploadUtil.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/UploadUtil.java new file mode 100644 index 0000000..4f25f5a --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/UploadUtil.java @@ -0,0 +1,145 @@ +package com.zbkj.common.utils; + +import cn.hutool.core.util.RandomUtil; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.exception.CrmebException; +import org.apache.commons.io.FilenameUtils; + +import java.io.File; +import java.io.IOException; + +/** + * 上传工具类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class UploadUtil { + + //服务器存储地址 +// private static String rootPath = "/www/wwwroot/upload"; + private static String rootPath = ""; + + //类型 + private static String type = "/" + Constants.UPLOAD_TYPE_IMAGE; + + + //模块 +// private static String modelPath = "/store"; + private static String modelPath = "/public"; + + //扩展名 + private static String extStr = "png,jpg"; + + //文件大小上限 + private static int size = 2; + + public static String getRootPath() { + return rootPath; + } + + public static void setRootPath(String rootPath) { + UploadUtil.rootPath = (rootPath + "/").replace(" ", "").replace("//", "/"); + } + + public static String getType() { + return type; + } + + public static void setType(String type) { + UploadUtil.type = type + "/"; + } + + public static String getModelPath() { + return modelPath; + } + + public static void setModelPath(String modelPath) { + UploadUtil.modelPath = modelPath + "/"; + } + + public static String getExtStr() { + return extStr; + } + + public static void setExtStr(String extStr) { + UploadUtil.extStr = extStr; + } + + public static int getSize() { + return size; + } + + public static void setSize(int size) { + UploadUtil.size = size; + } + + /** + * 根据文件的绝对路径创建一个文件对象. + * @return 返回创建的这个文件对象 + * @author Mr.Zhang + * @since 2020-05-08 + */ + public static File createFile(String filePath) throws IOException { + // 获取文件的完整目录 + String fileDir = FilenameUtils.getFullPath(filePath); + // 判断目录是否存在,不存在就创建一个目录 + File file = new File(fileDir); + if (!file.isDirectory()) { + //创建失败返回null + if (!file.mkdirs()) { + throw new CrmebException("文件目录创建失败..."); + } + } + // 判断这个文件是否存在,不存在就创建 + file = new File(filePath); + if (!file.exists()) { + if (!file.createNewFile()) { + throw new CrmebException("目标文件创建失败..."); + } + } + return file; + } + + /** + * 生成文件文件名 + * @param fileName 文件名 + * @author Mr.Zhang + * @since 2020-05-08 + */ + public static String getDestPath(String fileName) { + //规则: 子目录/年/月/日.后缀名 + return getServerPath() + fileName; + } + + public static String fileName(String extName){ + return CrmebUtil.getUuid() + RandomUtil.randomString(10) + "." + extName; + } + + /** + * 生成文件在的实际的路径 + * @author Mr.Zhang + * @since 2020-05-08 + */ + public static String getServerPath() { + // 文件分隔符转化为当前系统的格式 + return FilenameUtils.separatorsToSystem( getRootPath() + getWebPath()); + } + + /** + * web目录可访问的路径 + * @author Mr.Zhang + * @since 2020-05-08 + */ + public static String getWebPath() { + // 文件分隔符转化为当前系统的格式 + return getModelPath() + DateUtil.nowDate(Constants.DATE_FORMAT_DATE).replace("-", "/") + "/"; +// return getType() + getModelPath() + DateUtil.nowDate(Constants.DATE_FORMAT_DATE).replace("-", "/") + "/"; + } +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/UploadWeChatMediaUtil.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/UploadWeChatMediaUtil.java new file mode 100644 index 0000000..f101dea --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/UploadWeChatMediaUtil.java @@ -0,0 +1,100 @@ +package com.zbkj.common.utils; + + +import com.alibaba.fastjson.JSONObject; +import com.zbkj.common.exception.CrmebException; +import org.apache.http.HttpEntity; +import org.apache.http.client.config.RequestConfig; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.ContentType; +import org.apache.http.entity.mime.MultipartEntityBuilder; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.util.EntityUtils; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; + +/** + * http通用工具类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class UploadWeChatMediaUtil { + /** + * 把文件上传到指定url上去 + * @param url 上传地址 + * @param file 待上传文件 + */ + public static JSONObject uploadFile(String url, InputStream file, String fileName) throws IOException { + CloseableHttpClient httpclient = HttpClients.createDefault(); + try { + HttpPost httppost = new HttpPost(url); + + RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(200000).setSocketTimeout(200000).build(); + httppost.setConfig(requestConfig); + + /** + * 这一步最关键: + *调用addBinaryBody("media",input2byte(file),ContentType.DEFAULT_BINARY, fileName), + * fileName可以为任意值,但不能为null,如果为null则上传失败。 + * input2byte(file):把inputstream转为byte[], + * 如果直接调用addPart用FileBody做参数,则MultifilePart不好转换; + * 如果直接调用addPart用InpustreamBody做参数,则因为没有fileName会造成上传失败 + */ + HttpEntity reqEntity = MultipartEntityBuilder.create() + .addBinaryBody("media", input2byte(file), ContentType.DEFAULT_BINARY, + fileName).build(); + + httppost.setEntity(reqEntity); + CloseableHttpResponse response = httpclient.execute(httppost); + try { + System.out.println(response.getStatusLine()); + HttpEntity resEntity = response.getEntity(); + if (resEntity != null) { + String responseEntityStr = EntityUtils.toString(response.getEntity()); + return JSONObject.parseObject(responseEntityStr); + } + EntityUtils.consume(resEntity); + }catch (Exception e){ + e.printStackTrace(); + throw new CrmebException(e.getMessage()); + }finally { + response.close(); + } + } catch (IOException e) { + e.printStackTrace(); + throw new CrmebException(e.getMessage()); + } finally { + try { + httpclient.close(); + } catch (IOException e) { + throw new CrmebException(e.getMessage()); + } + } + + return null; + } + + + private static byte[] input2byte(InputStream inStream) + throws IOException { + ByteArrayOutputStream swapStream = new ByteArrayOutputStream(); + byte[] buff = new byte[100]; + int rc = 0; + while ((rc = inStream.read(buff, 0, 100)) > 0) { + swapStream.write(buff, 0, rc); + } + return swapStream.toByteArray(); + } +} + diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/UrlUtil.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/UrlUtil.java new file mode 100644 index 0000000..e12d333 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/UrlUtil.java @@ -0,0 +1,82 @@ +package com.zbkj.common.utils; + +import cn.hutool.core.util.StrUtil; + +import java.util.HashMap; +import java.util.Map; + +/** + * url 工具类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class UrlUtil { + public static class UrlEntity { + /** + * 基础url + */ + public String baseUrl; + /** + * url参数 + */ + public Map params; + } + + /** + * 解析url + * + * @param url + * @return + */ + public static UrlEntity parse(String url) { + UrlEntity entity = new UrlEntity(); + if (url == null) { + return entity; + } + url = url.trim(); + if ("".equals(url)) { + return entity; + } + String[] urlParts = url.split("\\?"); + entity.baseUrl = urlParts[0]; + //没有参数 + if (urlParts.length == 1) { + return entity; + } + //有参数 + String[] params = urlParts[1].split("&"); + entity.params = new HashMap<>(); + for (String param : params) { + String[] keyValue = param.split("="); + if (keyValue.length > 1) { + entity.params.put(keyValue[0], keyValue[1]); + } + } + + return entity; + } + + public static String getParamsByKey(String url,String key){ + UrlEntity entity = parse(url); + return entity.params.get(key); + } + + /** + * 测试 + * + * @param args + */ + public static void main(String[] args) { + UrlEntity entity = parse(null); + entity = parse("http://www.123.com?id=1&name=小明"); + System.out.println(entity.baseUrl + "\n" + entity.params); + System.out.println(entity.params.get("id")); + } +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/ValidateCodeUtil.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/ValidateCodeUtil.java new file mode 100644 index 0000000..774e29d --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/ValidateCodeUtil.java @@ -0,0 +1,207 @@ +package com.zbkj.common.utils; + +import cn.hutool.core.util.RandomUtil; +import com.alibaba.druid.util.Base64; +import org.springframework.stereotype.Component; + +import javax.imageio.ImageIO; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.Serializable; +import java.util.Random; + +/** + * 验证码生成工具类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Component +public class ValidateCodeUtil { + private static Validate validate = null; //验证码类,用于最后返回此对象,包含验证码图片base64和真值 + private static Random random = new Random(); //随机类,用于生成随机参数 + private static String randString = "0123456789abcdefghjkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ";//随机生成字符串的取值范围 + + private static int width = 80; //图片宽度 + private static int height = 34; //图片高度 + private static int stringNum = 4; //字符的数量 + private static int lineSize = 40; //干扰线数量 + + /** + * 将构造函数私有化 禁止new创建 + * @author Mr.Zhang + * @since 2020-04-16 + */ + private ValidateCodeUtil() { + super(); + } + + /** + * 获取随机字符 + * @author Mr.Zhang + * @since 2020-04-16 + * @return String + */ + private static String getRandomChar(int index) { + //获取指定位置index的字符,并转换成字符串表示形式 + return String.valueOf(randString.charAt(index)); + } + + /** + * 获取随机指定区间的随机数 + * @param min (指定最小数) + * @param max (指定最大数) + * @author Mr.Zhang + * @since 2020-04-16 + * @return String + */ + private static int getRandomNum(int min,int max) { + return RandomUtil.randomInt(min, max); + } + + /** + * 获得字体 + */ + private static Font getFont() { + return new Font("Fixedsys", Font.CENTER_BASELINE, 25); //名称、样式、磅值 + } + + /** + * 获得颜色 + * @param frontColor 覆盖颜色 + * @param backColor 背景色 + * @author Mr.Zhang + * @since 2020-04-16 + * @return Color + */ + private static Color getRandColor(int frontColor, int backColor) { + if(frontColor > 255) + frontColor = 255; + if(backColor > 255) + backColor = 255; + + int red = frontColor + random.nextInt(backColor - frontColor - 16); + int green = frontColor + random.nextInt(backColor - frontColor -14); + int blue = frontColor + random.nextInt(backColor - frontColor -18); + return new Color(red, green, blue); + } + + /** + * 绘制字符串,返回绘制的字符串 + * @param graphics 获得BufferedImage对象的Graphics对象 + * @param randomString 随机字符串 + * @param i 坐标倍数 + * @author Mr.Zhang + * @since 2020-04-16 + * @return string + */ + private static String drawString(Graphics graphics, String randomString, int i) { + Graphics2D g2d = (Graphics2D) graphics; + g2d.setFont(getFont()); //设置字体 + g2d.setColor(new Color(random.nextFloat(), random.nextFloat(), random.nextFloat()));//设置颜色 + String randChar = getRandomChar(random.nextInt(randString.length())); + randomString += randChar; //组装 + int rot = getRandomNum(1,10); + g2d.translate(random.nextInt(3), random.nextInt(3)); + g2d.rotate(rot * Math.PI / 180); + g2d.drawString(randChar, 13*i, 20); + g2d.rotate(-rot * Math.PI / 180); + return randomString; + } + + /** + * 绘制干扰线 + * @param graphics 获得BufferedImage对象的Graphics对象 + * @author Mr.Zhang + * @since 2020-04-16 + */ + private static void drawLine(Graphics graphics) { + //起点(x,y) 偏移量x1、y1 + int x = random.nextInt(width); + int y = random.nextInt(height); + int xl = random.nextInt(13); + int yl = random.nextInt(15); + graphics.setColor(new Color(random.nextFloat(), random.nextFloat(), random.nextFloat())); + graphics.drawLine(x, y, x + xl, y + yl); + } + + /** + * 生成Base64图片验证码 + * @author Mr.Zhang + * @since 2020-04-16 + * @return String + */ + public static Validate getRandomCode() { + validate = validate == null ? new Validate() : validate; + + // BufferedImage类是具有缓冲区的Image类,Image类是用于描述图像信息的类 + BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_BGR); + Graphics Graphics = image.getGraphics();// 获得BufferedImage对象的Graphics对象 + Graphics.fillRect(0, 0, width, height);//填充矩形 + Graphics.setFont(new Font("Times New Roman", Font.ROMAN_BASELINE, 18));//设置字体 + Graphics.setColor(getRandColor(110, 133));//设置颜色 + //绘制干扰线 + for(int i = 0; i <= lineSize; i++) { + drawLine(Graphics); + } + //绘制字符 + String randomString = ""; + for(int i = 1; i <= stringNum; i++) { + randomString = drawString(Graphics, randomString, i); + validate.setValue(randomString); + } + + Graphics.dispose();//释放绘图资源 + ByteArrayOutputStream bs = null; + try { + bs = new ByteArrayOutputStream(); + ImageIO.write(image, "png", bs);//将绘制得图片输出到流 + String imgSrc = Base64.byteArrayToBase64(bs.toByteArray()); + validate.setBase64Str(imgSrc); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + bs.close(); + } catch (IOException e) { + e.printStackTrace(); + }finally{ + bs = null; + } + } + return validate; + } + + /** + * 验证码类 + * @author Mr.Zhang + * @since 2020-04-16 + */ + public static class Validate implements Serializable{ + private static final long serialVersionUID = 1L; + private String Base64Str; //Base64 值 + private String value; //验证码值 + + public String getBase64Str() { + return Base64Str; + } + public void setBase64Str(String base64Str) { + Base64Str = base64Str; + } + public String getValue() { + return value; + } + public void setValue(String value) { + this.value = value; + } + } + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/ValidateFormUtil.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/ValidateFormUtil.java new file mode 100644 index 0000000..0c1da7a --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/ValidateFormUtil.java @@ -0,0 +1,217 @@ +package com.zbkj.common.utils; + +import cn.hutool.core.util.ReUtil; +import com.zbkj.common.constants.RegularConstants; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.model.system.SystemConfig; +import org.apache.commons.lang3.StringUtils; + +import java.util.*; +import java.util.regex.Pattern; + +/** + * 表单验证类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class ValidateFormUtil { + /** + * 检测类型 + * @param systemConfig SystemConfig 需要验证的类 + * @author Mr.Zhang + * @since 2020-05-11 + */ + public static void checkType(SystemConfig systemConfig, String rule){ + if(StringUtils.isBlank(rule)){ + return; + } + + //required:true,min:0,max:100,number:true + List list = CrmebUtil.stringToArrayStr(rule); + + for (String value : list) { + List val = CrmebUtil.stringToArrayStrRegex(value, ":"); + + ////必填 + if("required".equals(val.get(0)) && "true".equals(val.get(1))){ + isRequire(systemConfig.getValue(), systemConfig.getTitle()); + continue; + } + + //数字 + if("number".equals(val.get(0)) && "true".equals(val.get(1))){ + isNumber(systemConfig.getValue(), systemConfig.getTitle()); + continue; + } + + //最大值 + if("max".equals(val.get(0))){ + isNumber(systemConfig.getValue(), systemConfig.getTitle()); + continue; + } + + //最小值 + if("min".equals(val.get(0))){ + isNumber(systemConfig.getValue(), systemConfig.getTitle()); + continue; + } + + //邮箱 + if("email".equals(val.get(0)) && "true".equals(val.get(1))){ + isEmail(systemConfig.getValue(), systemConfig.getTitle()); + continue; + } + + //手机 + if("phone".equals(val.get(0)) && "true".equals(val.get(1))){ + isPhone(systemConfig.getValue(), systemConfig.getTitle()); + } + } + } + + /** + * 邮箱 + * @param value String 值 + * @param info String 字段名 + * @author Mr.Zhang + * @since 2020-05-11 + */ + public static void isEmail(String value, String info) { + regularException(value, info, RegularConstants.EMAIL, "邮箱"); + } + + /** + * 手机 + * @param value String 值 + * @param info String 字段名 + */ + public static void isPhone(String value, String info) { + regularException(value, info, RegularConstants.PHONE_TWO, "手机"); + } + + /** + * 验证必填 + * @param value String 值 + * @param info String 字段名 + * @author Mr.Zhang + * @since 2020-05-11 + */ + public static void isRequire(String value, String info){ + if(StringUtils.isBlank(value) ){ + throw new CrmebException("请填写/选择" + info); + } + } + + /** + * 数字验证 + * @param value String 值 + * @param info String 字段名 + * @author Mr.Zhang + * @since 2020-05-11 + */ + public static void isNumber(String value, String info){ + regularException(value, info, RegularConstants.NUMBER, "数字"); + } + + /** + * 数字范围 + * @param value String 值 + * @param info String 字段名 + * @author Mr.Zhang + * @since 2020-05-11 + */ + public static void range(String value, String info, Integer max, Integer min){ + isNumber(value, info); + max(value, info, max); + min(value, info, min); + } + + /** + * 最大数值 + * @param value String 值 + * @param info String 字段名 + * @author Mr.Zhang + * @since 2020-05-11 + */ + public static void max(String value, String info, Integer max){ + isNumber(value, info); + int number = Integer.parseInt(value); + if(number > max ){ + throw new CrmebException(info + "不在取值范围内,最大不能大于" + max); + } + } + + /** + * 最小数值 + * @param value String 值 + * @param info String 字段名 + * @author Mr.Zhang + * @since 2020-05-11 + */ + public static void min(String value, String info, Integer min){ + isNumber(value, info); + int number = Integer.parseInt(value); + if(number > min ){ + throw new CrmebException(info + "不在取值范围内,最小不能小于" + min); + } + } + + /** + * 正则表达式验证 + * @param value String 值 + * @param info String 字段名 + * @param regular String 正则表达式 + * @author Mr.Zhang + * @since 2020-05-11 + */ + public static void regularException(String value, String info, String regular, String title){ + if(!regular(value, info, regular)){ + //正则验证 + throw new CrmebException(info + " 格式必须为 " + title); + } + } + + /** + * 正则表达式验证 + * @param value String 值 + * @param info String 字段名 + * @param regular String 正则表达式 + * @author Mr.Zhang + * @since 2020-05-11 + */ + public static boolean regular(String value, String info, String regular){ + isRequire(value, info); + Pattern pattern = Pattern.compile(regular); + return pattern.matcher(value).matches(); + } + + /** + * 校验是否是手机号,不是则抛出异常 + * @param phone 手机号 + * @param errMsg 异常内容 + */ + public static void isPhoneException(String phone, String errMsg) { + boolean match = ReUtil.isMatch(RegularConstants.PHONE_TWO, phone); + if (!match) { + throw new CrmebException(errMsg); + } + } + + /** + * 校验是否是手机号,不是则抛出异常 + * @param phone 手机号 + */ + public static void isPhoneException(String phone) { + boolean match = ReUtil.isMatch(RegularConstants.PHONE_TWO, phone); + if (!match) { + throw new CrmebException("请输入正确的手机号"); + } + } +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/WXPayXmlUtil.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/WXPayXmlUtil.java new file mode 100644 index 0000000..c27cd69 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/WXPayXmlUtil.java @@ -0,0 +1,39 @@ +package com.zbkj.common.utils; + +import org.w3c.dom.Document; + +import javax.xml.XMLConstants; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; + +/** + * 微信支付xml工具类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public final class WXPayXmlUtil { + public static DocumentBuilder newDocumentBuilder() throws ParserConfigurationException { + DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); + documentBuilderFactory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); + documentBuilderFactory.setFeature("http://xml.org/sax/features/external-general-entities", false); + documentBuilderFactory.setFeature("http://xml.org/sax/features/external-parameter-entities", false); + documentBuilderFactory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); + documentBuilderFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); + documentBuilderFactory.setXIncludeAware(false); + documentBuilderFactory.setExpandEntityReferences(false); + + return documentBuilderFactory.newDocumentBuilder(); + } + + public static Document newDocument() throws ParserConfigurationException { + return newDocumentBuilder().newDocument(); + } +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/WxPKCS7Encoder.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/WxPKCS7Encoder.java new file mode 100644 index 0000000..6617112 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/WxPKCS7Encoder.java @@ -0,0 +1,72 @@ +package com.zbkj.common.utils; + +import java.nio.charset.Charset; +import java.util.Arrays; + +/** + * 微信小程序加解密 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class WxPKCS7Encoder { + + private static final Charset CHARSET = Charset.forName("utf-8"); + private static final int BLOCK_SIZE = 32; + + /** + * 获得对明文进行补位填充的字节. + * + * @param count + * 需要进行填充补位操作的明文字节个数 + * @return 补齐用的字节数组 + */ + public static byte[] encode(int count) { + // 计算需要填充的位数 + int amountToPad = BLOCK_SIZE - (count % BLOCK_SIZE); + if (amountToPad == 0) { + amountToPad = BLOCK_SIZE; + } + // 获得补位所用的字符 + char padChr = chr(amountToPad); + String tmp = new String(); + for (int index = 0; index < amountToPad; index++) { + tmp += padChr; + } + return tmp.getBytes(CHARSET); + } + + /** + * 删除解密后明文的补位字符 + * + * @param decrypted + * 解密后的明文 + * @return 删除补位字符后的明文 + */ + public static byte[] decode(byte[] decrypted) { + int pad = decrypted[decrypted.length - 1]; + if (pad < 1 || pad > 32) { + pad = 0; + } + return Arrays.copyOfRange(decrypted, 0, decrypted.length - pad); + } + + /** + * 将数字转化成ASCII码对应的字符,用于对明文进行补码 + * + * @param a + * 需要转化的数字 + * @return 转化得到的字符 + */ + public static char chr(int a) { + byte target = (byte) (a & 0xFF); + return (char) target; + } + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/WxPayUtil.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/WxPayUtil.java new file mode 100644 index 0000000..c86960b --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/WxPayUtil.java @@ -0,0 +1,222 @@ +package com.zbkj.common.utils; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.crypto.SecureUtil; +import com.alibaba.fastjson.JSONObject; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.constants.PayConstants; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.vo.CreateOrderRequestVo; +import com.zbkj.common.vo.WxRefundVo; +import org.apache.commons.codec.digest.DigestUtils; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; + +import javax.xml.parsers.DocumentBuilder; +import java.io.ByteArrayInputStream; +import java.io.InputStream; +import java.util.*; + +/** + * 微信支付工具类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class WxPayUtil { + + /** + * 处理 HTTPS API返回数据,转换成Map对象。return_code为SUCCESS时,验证签名。 + * + * @param xmlStr API返回的XML格式数据 + * @return Map类型数据 + * @throws Exception + */ + public static HashMap processResponseXml(String xmlStr) throws Exception { + String RETURN_CODE = "return_code"; + String return_code; + HashMap respData = XmlUtil.xmlToMap(xmlStr); + if (respData.containsKey(RETURN_CODE)) { + return_code = (String) respData.get(RETURN_CODE); + } else { + throw new CrmebException(String.format("No `return_code` in XML: %s", xmlStr)); + } + + if (return_code.equals(Constants.FAIL)) { + return respData; + } else if (return_code.equals(Constants.SUCCESS)) { + return respData; + } else { + throw new CrmebException(String.format("return_code value %s is invalid in XML: %s", return_code, xmlStr)); + } + } + + /** + * 获取随机字符串,长度要求在32位以内。 + */ + public static String getNonceStr() { + return DigestUtils.md5Hex(CrmebUtil.getUuid() + CrmebUtil.randomCount(111111, 666666)); + } + + /** + * 获取sign + * @param vo 微信公共下单对象 + * @param signKey 微信签名key + * @return String + */ + public static String getSign(CreateOrderRequestVo vo, String signKey) { + // 对象转map + Map map = JSONObject.parseObject(JSONObject.toJSONString(vo), Map.class); + // map排序 + Set keySet = map.keySet(); + String[] keyArray = keySet.toArray(new String[keySet.size()]); + Arrays.sort(keyArray); + StringBuilder sb = new StringBuilder(); + for (String k : keyArray) { + if (k.equals(PayConstants.FIELD_SIGN)) { + continue; + } + if (ObjectUtil.isNotNull(map.get(k))) // 参数值为空,则不参与签名 + sb.append(k).append("=").append(map.get(k)).append("&"); + } + sb.append("key=").append(signKey); + String sign = SecureUtil.md5(sb.toString()).toUpperCase(); + System.out.println("sign ========== " + sign); + return sign; + } + + /** + * 获取sign + * @param wxRefundVo 微信退款对象 + * @param signKey 微信签名key + * @return String + */ + public static String getSign(WxRefundVo wxRefundVo, String signKey) { + // 对象转map + Map map = JSONObject.parseObject(JSONObject.toJSONString(wxRefundVo), Map.class); + // map排序 + Set keySet = map.keySet(); + String[] keyArray = keySet.toArray(new String[keySet.size()]); + Arrays.sort(keyArray); + StringBuilder sb = new StringBuilder(); + for (String k : keyArray) { + if (k.equals(PayConstants.FIELD_SIGN)) { + continue; + } + if (ObjectUtil.isNotNull(map.get(k))) // 参数值为空,则不参与签名 + sb.append(k).append("=").append(map.get(k)).append("&"); + } + sb.append("key=").append(signKey); + String sign = SecureUtil.md5(sb.toString()).toUpperCase(); + System.out.println("sign ========== " + sign); + return sign; + } + + /** + * 获取sign + * @param map 待签名数据 + * @param signKey 微信签名key + * @return String + */ + public static String getSign(Map map, String signKey) { + // map排序 + Set keySet = map.keySet(); + String[] keyArray = keySet.toArray(new String[keySet.size()]); + Arrays.sort(keyArray); + StringBuilder sb = new StringBuilder(); + for (String k : keyArray) { + if (k.equals(PayConstants.FIELD_SIGN)) { + continue; + } + if (StrUtil.isNotBlank(map.get(k)) && map.get(k).trim().length() > 0) // 参数值为空,则不参与签名 + sb.append(k).append("=").append(map.get(k).trim()).append("&"); + } + sb.append("key=").append(signKey); + String sign = SecureUtil.md5(sb.toString()).toUpperCase(); + System.out.println("sign ========== " + sign); + return sign; + } + + /** + * 获取sign + * @param map 待签名数据 + * @param signKey 微信签名key + * @return String + */ + public static String getSignObject(Map map, String signKey) { + // map排序 + Set keySet = map.keySet(); + String[] keyArray = keySet.toArray(new String[keySet.size()]); + Arrays.sort(keyArray); + StringBuilder sb = new StringBuilder(); + for (String k : keyArray) { + if (k.equals(PayConstants.FIELD_SIGN)) { + continue; + } + if (ObjectUtil.isNotNull(map.get(k))) // 参数值为空,则不参与签名 + sb.append(k).append("=").append(map.get(k)).append("&"); + } + sb.append("key=").append(signKey); + String sign = SecureUtil.md5(sb.toString()).toUpperCase(); + System.out.println("sign ========== " + sign); + return sign; + } + + /** + * 获取当前时间戳,单位秒 + * @return Long + */ + public static Long getCurrentTimestamp() { + return System.currentTimeMillis()/1000; + } + + /** + * 获取当前时间戳,单位毫秒 + * @return Long + */ + public static Long getCurrentTimestampMs() { + return System.currentTimeMillis(); + } + + /** + * XML格式字符串转换为Map + * + * @param strXML XML字符串 + * @return XML数据转换后的Map + * @throws Exception + */ + public static Map xmlToMap(String strXML) throws Exception { + try { + Map data = new HashMap(); + DocumentBuilder documentBuilder = WXPayXmlUtil.newDocumentBuilder(); + InputStream stream = new ByteArrayInputStream(strXML.getBytes("UTF-8")); + org.w3c.dom.Document doc = documentBuilder.parse(stream); + doc.getDocumentElement().normalize(); + NodeList nodeList = doc.getDocumentElement().getChildNodes(); + for (int idx = 0; idx < nodeList.getLength(); ++idx) { + Node node = nodeList.item(idx); + if (node.getNodeType() == Node.ELEMENT_NODE) { + org.w3c.dom.Element element = (org.w3c.dom.Element) node; + data.put(element.getNodeName(), element.getTextContent()); + } + } + try { + stream.close(); + } catch (Exception ex) { + // do nothing + } + return data; + } catch (Exception ex) { + System.out.println(StrUtil.format("Invalid XML, can not convert to map. Error message: {}. XML content: {}", ex.getMessage(), strXML)); + throw ex; + } + + } +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/WxUtil.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/WxUtil.java new file mode 100644 index 0000000..31ebc8e --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/WxUtil.java @@ -0,0 +1,67 @@ +package com.zbkj.common.utils; + +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONObject; +import com.zbkj.common.exception.CrmebException; +import org.apache.commons.codec.binary.Base64; + +/** + * 微信工具类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class WxUtil { + + private static final String WATERMARK = "watermark"; + private static final String APPID = "appid"; + /** + * 解密数据 + * @return + * @throws Exception + */ + public static String decrypt(String appId, String encryptedData, String sessionKey, String iv){ + String result = ""; + try { + AESUtil aes = new AESUtil(); + byte[] resultByte = aes.decrypt(Base64.decodeBase64(encryptedData), Base64.decodeBase64(sessionKey), Base64.decodeBase64(iv)); + if(null != resultByte && resultByte.length > 0){ + result = new String(WxPKCS7Encoder.decode(resultByte)); + JSONObject jsonObject = JSONObject.parseObject(result); + String decryptAppid = jsonObject.getJSONObject(WATERMARK).getString(APPID); + if(!appId.equals(decryptAppid)){ + result = ""; + } + } + } catch (Exception e) { + result = ""; + e.printStackTrace(); + } + return result; + } + + /** + * 检测结构请求返回的数据 + * @param result 接口返回的结果 + * @return JSONObject + */ + public static JSONObject checkResult(JSONObject result){ + if(ObjectUtil.isNull(result)){ + throw new CrmebException("微信平台接口异常,没任何数据返回!"); + } + if(result.containsKey("errcode") && "0".equals(result.getString("errcode"))){ + return result; + } + if(result.containsKey("errmsg")){ + throw new CrmebException("微信接口调用失败:" + result.getString("errcode") + result.getString("errmsg")); + } + return result; + } + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/XmlUtil.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/XmlUtil.java new file mode 100644 index 0000000..6e96e52 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/XmlUtil.java @@ -0,0 +1,168 @@ +package com.zbkj.common.utils; + +import com.thoughtworks.xstream.XStream; +import com.thoughtworks.xstream.io.naming.NoNameCoder; +import com.thoughtworks.xstream.io.xml.Xpp3Driver; +import org.apache.commons.lang3.StringUtils; +import org.dom4j.Document; +import org.dom4j.DocumentException; +import org.dom4j.Element; +import org.dom4j.io.SAXReader; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; +import org.w3c.dom.Text; +import org.xml.sax.InputSource; +import org.xml.sax.SAXException; + +import javax.servlet.http.HttpServletRequest; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.transform.OutputKeys; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; +import java.io.*; +import java.nio.charset.StandardCharsets; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * XML 工具类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2023 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class XmlUtil { + public static Map xmlToMap(HttpServletRequest request) { + Map map = new HashMap<>(); + SAXReader reader = new SAXReader(); + + InputStream in = null; + try { + in = request.getInputStream(); + setReaderFeature(reader); + Document doc = reader.read(in); + Element root = doc.getRootElement(); + List list = root.elements(); + for (Element element : list) { + map.put(element.getName(), element.getText()); + } + } catch (IOException | DocumentException | SAXException e) { + e.printStackTrace(); + } finally { + try { + assert in != null; + in.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + return map; + } + + /** + * 将发送消息封装成对应的xml格式 + */ +// public static HashMap xmlToMap(String strxml) throws Exception { +// strxml = strxml.replaceFirst("encoding=\".*\"", "encoding=\"UTF-8\""); +// +// HashMap map = new HashMap<>(); +// SAXReader reader = new SAXReader(); +// InputStream inputStream = new ByteArrayInputStream(strxml.getBytes(StandardCharsets.UTF_8)); +// +// if (StringUtils.isBlank(strxml)) { +// return null; +// } +// +// Document document = reader.read(inputStream); +// Element root = document.getRootElement(); +// List list = root.elements(); +// +// for (Element e : list) { +// map.put(e.getName(), e.getText()); +// } +// inputStream.close(); +// +// return map; +// } + + public static void setReaderFeature(SAXReader reader) throws SAXException { + reader.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); + reader.setFeature("http://xml.org/sax/features/external-general-entities", false); + reader.setFeature("http://xml.org/sax/features/external-parameter-entities", false); + reader.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); + } + public static HashMap xmlToMap(String strxml) { + strxml = strxml.replaceFirst("encoding=\".*\"", "encoding=\"UTF-8\""); + + if (StringUtils.isBlank(strxml)) { + return null; + } + HashMap map = new HashMap<>(); + try { + DocumentBuilder documentBuilder = WXPayXmlUtil.newDocumentBuilder(); + org.w3c.dom.Document document = documentBuilder.parse(new InputSource(new StringReader(strxml))); + org.w3c.dom.Element element = document.getDocumentElement(); + NodeList nodeList = element.getChildNodes(); + for (int i = 0; i < nodeList.getLength(); i++) { + Node node = nodeList.item(i); + if (node.getNodeType() == Node.ELEMENT_NODE) { + map.put(node.getNodeName(), node.getTextContent()); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + return map; + } + + /** + * 将发送消息封装成对应的xml格式 + */ + public static String objectToXml(Object object) { + XStream xstream = new XStream(new Xpp3Driver(new NoNameCoder())); //不需要转义 + xstream.alias("xml", object.getClass()); + return xstream.toXML(object); + } + + /** + * 将Map转换为XML格式的字符串 + * + * @param data Map类型数据 + * @return XML格式的字符串 + * @throws Exception + */ + public static String mapToXml(Map data) throws Exception { + org.w3c.dom.Document document = WXPayXmlUtil.newDocument(); + org.w3c.dom.Element root = document.createElement("xml"); + document.appendChild(root); + for (String key : data.keySet()) { + String value = data.get(key); + if (value == null) { + value = ""; + } + value = value.trim(); + org.w3c.dom.Element filed = document.createElement(key); + filed.appendChild(document.createTextNode(value)); + root.appendChild(filed); + } + TransformerFactory tf = TransformerFactory.newInstance(); + Transformer transformer = tf.newTransformer(); + DOMSource source = new DOMSource(document); + transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); + transformer.setOutputProperty(OutputKeys.INDENT, "yes"); + StringWriter writer = new StringWriter(); + StreamResult result = new StreamResult(writer); + transformer.transform(source, result); + String output = writer.getBuffer().toString(); //.replaceAll("\n|\r", ""); + writer.close(); + return output; + } +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/genutils/CommonResult.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/genutils/CommonResult.java new file mode 100644 index 0000000..50b9bab --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/genutils/CommonResult.java @@ -0,0 +1,165 @@ +package com.zbkj.common.utils.genutils; + +import com.zbkj.common.exception.ExceptionCodeEnum; +import com.zbkj.common.exception.ExceptionHandler; + +/** + * 公共返回对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class CommonResult { + private long code; + private String message; + private T data; + + protected CommonResult() { + } + + protected CommonResult(long code, String message, T data) { + this.code = code; + this.message = message; + this.data = data; + } + + /** + * 成功返回结果 + */ + public static CommonResult success() { + return new CommonResult(ExceptionCodeEnum.SUCCESS.getCode(), ExceptionCodeEnum.SUCCESS.getMessage(), null); + } + + /** + * 成功返回结果 + */ + public static CommonResult success(String message) { + return new CommonResult(ExceptionCodeEnum.SUCCESS.getCode(), message, null); + } + + /** + * 成功返回结果 + * + * @param data 获取的数据 + */ + public static CommonResult success(T data) { + return new CommonResult(ExceptionCodeEnum.SUCCESS.getCode(), ExceptionCodeEnum.SUCCESS.getMessage(), data); + } + + /** + * 成功返回结果 + * + * @param data 获取的数据 + * @param message 提示信息 + */ + public static CommonResult success(T data, String message) { + return new CommonResult(ExceptionCodeEnum.SUCCESS.getCode(), message, data); + } + + /** + * 失败返回结果 + * @param errorCode 错误码 + */ + public static CommonResult failed(ExceptionHandler errorCode) { + System.out.println("errorCode1:" + errorCode); + return new CommonResult(errorCode.getCode(), errorCode.getMessage(), null); + } + + /** + * 失败返回结果 + * @param errorCode 错误码 + * @param message 错误信息 + */ + public static CommonResult failed(ExceptionHandler errorCode,String message) { + System.out.println("errorCode2:" + errorCode); + return new CommonResult(errorCode.getCode(), message, null); + } + + /** + * 失败返回结果 + * @param message 提示信息 + */ + public static CommonResult failed(String message) { + return new CommonResult(ExceptionCodeEnum.FAILED.getCode(), message, null); + } + + /** + * 失败返回结果 + */ + public static CommonResult failed() { + return failed(ExceptionCodeEnum.FAILED); + } + + /** + * 参数验证失败返回结果 + */ + public static CommonResult validateFailed() { + return failed(ExceptionCodeEnum.VALIDATE_FAILED); + } + + /** + * 参数验证失败返回结果 + * @param message 提示信息 + */ + public static CommonResult validateFailed(String message) { + return new CommonResult(ExceptionCodeEnum.VALIDATE_FAILED.getCode(), message, null); + } + + /** + * 未登录返回结果 + */ + public static CommonResult unauthorized(T data) { + return new CommonResult(ExceptionCodeEnum.UNAUTHORIZED.getCode(), ExceptionCodeEnum.UNAUTHORIZED.getMessage(), data); + } + + /** + * 未登录返回结果 + */ + public static CommonResult unauthorized() { + return new CommonResult(ExceptionCodeEnum.UNAUTHORIZED.getCode(), ExceptionCodeEnum.UNAUTHORIZED.getMessage(), null); + } + + /** + * 没有权限查看 + */ + public static CommonResult forbidden() { + return new CommonResult(ExceptionCodeEnum.FORBIDDEN.getCode(), ExceptionCodeEnum.FORBIDDEN.getMessage(), null); + } + + /** + * 未授权返回结果 + */ + public static CommonResult forbidden(T data) { + return new CommonResult(ExceptionCodeEnum.FORBIDDEN.getCode(), ExceptionCodeEnum.FORBIDDEN.getMessage(), data); + } + + public long getCode() { + return code; + } + + public void setCode(long code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public T getData() { + return data; + } + + public void setData(T data) { + this.data = data; + } +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/genutils/GenCodePageListUtils.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/genutils/GenCodePageListUtils.java new file mode 100644 index 0000000..dab7171 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/genutils/GenCodePageListUtils.java @@ -0,0 +1,86 @@ +package com.zbkj.common.utils.genutils; + +import java.io.Serializable; +import java.util.List; + +/** + * 代码生成对象 仅仅用于代码生成 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class GenCodePageListUtils implements Serializable { + private static final long serialVersionUID = 1L; + //总记录数 + private int totalCount; + //每页记录数 + private int pageSize; + //总页数 + private int totalPage; + //当前页数 + private int currPage; + //列表数据 + private List list; + + /** + * 分页 + * @param list 列表数据 + * @param totalCount 总记录数 + * @param pageSize 每页记录数 + * @param currPage 当前页数 + */ + public GenCodePageListUtils(List list, int totalCount, int pageSize, int currPage) { + this.list = list; + this.totalCount = totalCount; + this.pageSize = pageSize; + this.currPage = currPage; + this.totalPage = (int)Math.ceil((double)totalCount/pageSize); + } + + public int getTotalCount() { + return totalCount; + } + + public void setTotalCount(int totalCount) { + this.totalCount = totalCount; + } + + public int getPageSize() { + return pageSize; + } + + public void setPageSize(int pageSize) { + this.pageSize = pageSize; + } + + public int getTotalPage() { + return totalPage; + } + + public void setTotalPage(int totalPage) { + this.totalPage = totalPage; + } + + public int getCurrPage() { + return currPage; + } + + public void setCurrPage(int currPage) { + this.currPage = currPage; + } + + public List getList() { + return list; + } + + public void setList(List list) { + this.list = list; + } + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/genutils/GenCodePageQueryUtils.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/genutils/GenCodePageQueryUtils.java new file mode 100644 index 0000000..35e84d1 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/genutils/GenCodePageQueryUtils.java @@ -0,0 +1,38 @@ +package com.zbkj.common.utils.genutils; + + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.LinkedHashMap; +import java.util.Map; + +/** + * 用于代码生成 数据库查询分页对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class GenCodePageQueryUtils extends LinkedHashMap { + private int page; + private int limit; + public GenCodePageQueryUtils(Map params){ + this.putAll(params); + + //分页参数 + this.page = Integer.parseInt(params.get("page").toString()); + this.limit = Integer.parseInt(params.get("limit").toString()); + this.put("offset", (page - 1) * limit); + this.put("page", page); + this.put("limit", limit); + } + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/genutils/GenCodeUtils.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/genutils/GenCodeUtils.java new file mode 100644 index 0000000..6928e3e --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/genutils/GenCodeUtils.java @@ -0,0 +1,243 @@ +package com.zbkj.common.utils.genutils; + + +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.model.gencode.mysql.ColumnEntity; +import com.zbkj.common.model.gencode.mysql.TableEntity; +import com.zbkj.common.utils.DateUtil; +import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.configuration.Configuration; +import org.apache.commons.configuration.ConfigurationException; +import org.apache.commons.configuration.PropertiesConfiguration; +import org.apache.commons.lang.WordUtils; +import org.apache.velocity.Template; +import org.apache.velocity.VelocityContext; +import org.apache.velocity.app.Velocity; +import java.io.File; +import java.io.IOException; +import java.io.StringWriter; +import java.util.*; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; + +/** + * 代码生成工具类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class GenCodeUtils { + public static List getTemplatesLocationConfig() { + List templates = new ArrayList(); + + templates.add("template/xml/Dao.xml.vm"); + + templates.add("template/sql/eb_system_menu.sql.vm"); + + templates.add("template/java/Entity.java.vm"); + templates.add("template/java/Service.java.vm"); + templates.add("template/java/ServiceImpl.java.vm"); + templates.add("template/java/Controller.java.vm"); + templates.add("template/java/Dao.java.vm"); + + templates.add("template/vue/index.vue.vm"); + templates.add("template/vue/api.js.vm"); + templates.add("template/vue/add-and-update.vue.vm"); + return templates; + } + + + /** + * 生成代码 + */ + public static void generatorCode(Map table, + List> columns, ZipOutputStream zip) { + //配置信息 + Configuration config = getConfig(); + boolean hasBigDecimal = false; + boolean hasList = false; + //表信息 + TableEntity tableEntity = new TableEntity(); + tableEntity.setTableName(table.get("tableName")); + tableEntity.setComments(table.get("tableComment")); + //表名转换成Java类名 + String className = tableToJava(tableEntity.getTableName(), config.getStringArray("tablePrefix")); + tableEntity.setClassName(className); + tableEntity.setClassname(StringUtils.uncapitalize(className)); + + //列信息 + List columsList = new ArrayList<>(); + for (Map column : columns) { + ColumnEntity columnEntity = new ColumnEntity(); + columnEntity.setColumnName(column.get("columnName")); + columnEntity.setDataType(column.get("dataType")); + columnEntity.setComments(column.get("columnComment")); + columnEntity.setExtra(column.get("extra")); + + //列名转换成Java属性名 + String attrName = columnToJava(columnEntity.getColumnName()); + columnEntity.setAttrName(attrName); + columnEntity.setAttrname(StringUtils.uncapitalize(attrName)); + + //列的数据类型,转换成Java类型 + String attrType = config.getString(columnEntity.getDataType(), columnToJava(columnEntity.getDataType())); + columnEntity.setAttrType(attrType); + + + if (!hasBigDecimal && "BigDecimal".equals(attrType)) { + hasBigDecimal = true; + } + if (!hasList && "array".equals(columnEntity.getExtra())) { + hasList = true; + } + //是否主键 + if ("PRI".equalsIgnoreCase(column.get("columnKey")) && tableEntity.getPk() == null) { + tableEntity.setPk(columnEntity); + } + + columsList.add(columnEntity); + } + tableEntity.setColumns(columsList); + + //没主键,则第一个字段为主键 + if (tableEntity.getPk() == null) { + tableEntity.setPk(tableEntity.getColumns().get(0)); + } + + //设置velocity资源加载器 + Properties prop = new Properties(); + prop.put("file.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader"); + Velocity.init(prop); + String mainPath = config.getString("mainPath"); + mainPath = StringUtils.isBlank(mainPath) ? "com.crmeb" : mainPath; + Map map = new HashMap<>(); + map.put("tableName", tableEntity.getTableName()); + map.put("comments", tableEntity.getComments()); + map.put("pk", tableEntity.getPk()); + map.put("className", tableEntity.getClassName()); + map.put("classname", tableEntity.getClassname()); + map.put("pathName", tableEntity.getClassname().toLowerCase()); + map.put("columns", tableEntity.getColumns()); + map.put("hasBigDecimal", hasBigDecimal); + map.put("hasList", hasList); + map.put("mainPath", mainPath); + map.put("package", config.getString("package")); + map.put("moduleName", config.getString("moduleName")); + map.put("author", config.getString("author")); + map.put("email", config.getString("email")); + map.put("datetime", DateUtil.nowDateTime()); + VelocityContext context = new VelocityContext(map); + + //读取模版 + List templates = getTemplatesLocationConfig(); + for (String template : templates) { + StringWriter sw = new StringWriter(); + Template tpl = Velocity.getTemplate(template, "UTF-8"); + tpl.merge(context, sw); + try { + zip.finish(); + zip.putNextEntry(new ZipEntry(getFileName(template, tableEntity.getClassName(), config.getString("package"), config.getString("moduleName")))); + IOUtils.write(sw.toString(), zip, "UTF-8"); + IOUtils.closeQuietly(sw); + zip.closeEntry(); + } catch (IOException e) { + throw new CrmebException("Play Up Template Failed:" + tableEntity.getTableName()+e.getMessage()); + } + } + } + + /** + * 列名转换成Java属性名 + */ + public static String columnToJava(String columnName) { + return WordUtils.capitalizeFully(columnName, new char[]{'_'}).replace("_", ""); + } + + /** + * 表名转换成Java类名 + */ + public static String tableToJava(String tableName, String[] tablePrefixArray) { + if (null != tablePrefixArray && tablePrefixArray.length > 0) { + for (String tablePrefix : tablePrefixArray) { + if (tableName.startsWith(tablePrefix)){ + tableName = tableName.replaceFirst(tablePrefix, ""); + } + } + } + return columnToJava(tableName); + } + + /** + * 获取配置信息 + */ + public static Configuration getConfig() { + try { + return new PropertiesConfiguration("generator.properties"); + } catch (ConfigurationException e) { + throw new CrmebException("Get config Failed," + e.getMessage()); + } + } + + /** + * 根据配置生成对应文件 + */ + public static String getFileName(String template, String className, String packageName, String moduleName) { + String packagePath = "main" + File.separator + "java" + File.separator; + if (StringUtils.isNotBlank(packageName)) { + packagePath += packageName.replace(".", File.separator) + File.separator + moduleName + File.separator; + } + + if (template.contains("Entity.java.vm")) { + return packagePath + "entity" + File.separator + className + "Entity.java"; + } + + if (template.contains("Dao.java.vm")) { + return packagePath + "dao" + File.separator + className + "Dao.java"; + } + + if (template.contains("Service.java.vm")) { + return packagePath + "service" + File.separator + className + "Service.java"; + } + + if (template.contains("ServiceImpl.java.vm")) { + return packagePath + "service" + File.separator + "impl" + File.separator + className + "ServiceImpl.java"; + } + + if (template.contains("Controller.java.vm")) { + return packagePath + "controller" + File.separator + className + "Controller.java"; + } + + if (template.contains("Dao.xml.vm")) { + return "main" + File.separator + "resources" + File.separator + "mapper" + File.separator + moduleName + File.separator + className + "Dao.xml"; + } + + if (template.contains("menu.sql.vm")) { + return className.toLowerCase() + "_menu.sql"; + } + + if (template.contains("index.vue.vm")) { + return "main" + File.separator + "resources" + File.separator + "src" + File.separator + "views" + File.separator + "modules" + + File.separator + moduleName + File.separator + className.toLowerCase() + ".vue"; + } + + if (template.contains("api.js.vm")) { + return "main" + File.separator + "resources" + File.separator + "src" + File.separator + "views" + File.separator + "modules" + + File.separator + moduleName + File.separator + className.toLowerCase() + ".js"; + } + + if (template.contains("add-and-update.vue.vm")) { + return "main" + File.separator + "resources" + File.separator + "src" + File.separator + "views" + File.separator + "modules" + + File.separator + moduleName + File.separator + className.toLowerCase() + "-add-and-update.vue"; + } + return null; + } + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/validation/StringContainsValidator.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/validation/StringContainsValidator.java new file mode 100644 index 0000000..75ffd9e --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/validation/StringContainsValidator.java @@ -0,0 +1,40 @@ +package com.zbkj.common.validation; + +import cn.hutool.core.util.StrUtil; +import com.zbkj.common.annotation.StringContains; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; +import java.util.Arrays; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * 校验一个字符串是否包含在指定字符数组内 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class StringContainsValidator implements ConstraintValidator { + + private Set limitValues; + + @Override + public void initialize (StringContains constraintAnnotation) { + limitValues = Arrays.stream(constraintAnnotation.limitValues()).collect(Collectors.toSet()); + } + + @Override + public boolean isValid(String value, ConstraintValidatorContext context) { + if (StrUtil.isBlank(value)) { + return true; + } + return limitValues.contains(value.trim()); + } +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/AftersaleProductInfoVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/AftersaleProductInfoVo.java new file mode 100644 index 0000000..465f17e --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/AftersaleProductInfoVo.java @@ -0,0 +1,33 @@ +package com.zbkj.common.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; + +/** + * + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class AftersaleProductInfoVo { + + /** 商家自定义商品ID */ + @TableField(value = "out_product_id") + private String outProductId; + + /** 商家自定义sku ID, 如果没有则不填 */ + @TableField(value = "out_sku_id") + private String outSkuId; + + /** 参与售后的商品数量 */ + @TableField(value = "product_cnt") + private Integer productCnt; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/AliPayJsResultVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/AliPayJsResultVo.java new file mode 100644 index 0000000..f34b48f --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/AliPayJsResultVo.java @@ -0,0 +1,52 @@ +package com.zbkj.common.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 微信调起支付参数对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@ApiModel(value="AliPayJsResultVo对象", description="支付宝调起支付参数对象") +public class AliPayJsResultVo { + + @ApiModelProperty(value = "支付宝id") + private String appId; + + @ApiModelProperty(value = "接口名称") + private String method; + + @ApiModelProperty(value = "仅支持JSON") + private String format = "JSON"; + + @ApiModelProperty(value = "编码格式") + private String charset; + + @ApiModelProperty(value = "签名算法类型:RSA,RSA2") + private String signType; + + @ApiModelProperty(value = "支付签名") + private String sign; + + @ApiModelProperty(value = "发送请求时间,格式'yyyy-MM-dd HH:mm:ss'") + private String timestamp; + + @ApiModelProperty(value = "调用的接口版本") + private String version = "1.0"; + + @ApiModelProperty(value = "异步回调地址") + private String notifyUrl; + + @ApiModelProperty(value = "业务请求参数集合") + private String bizContent; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ArticleVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ArticleVo.java new file mode 100644 index 0000000..70d7465 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ArticleVo.java @@ -0,0 +1,57 @@ +package com.zbkj.common.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + +/** + * 文章管理 Vo + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="ArticleVo对象", description="文章管理表") +public class ArticleVo implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "文章管理ID") + private Integer id; + + @ApiModelProperty(value = "分类id") + private String cid; + + @ApiModelProperty(value = "文章标题") + private String title; + + @ApiModelProperty(value = "文章作者") + private String author; + + @ApiModelProperty(value = "文章图片") + private String imageInput; + + @ApiModelProperty(value = "文章简介") + private String synopsis; + + @ApiModelProperty(value = "浏览次数") + private String visit; + + @ApiModelProperty(value = "更新时间") + @JsonFormat(pattern = "yyyy-MM-dd", timezone="GMT+8") + private Date updateTime; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/AttachVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/AttachVo.java new file mode 100644 index 0000000..d6edfd5 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/AttachVo.java @@ -0,0 +1,41 @@ +package com.zbkj.common.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 支付附加对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="AttachVo对象", description="支付附加对象") +public class AttachVo { + + public AttachVo() { + } + + public AttachVo(String type, Integer userId) { + this.type = type; + this.userId = userId; + } + + @ApiModelProperty(value = "业务类型, 订单 = order, 充值 = recharge", required = true) + private String type = "order"; + + @ApiModelProperty(value = "用户id", required = true) + private Integer userId; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/BargainProductExcelVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/BargainProductExcelVo.java new file mode 100644 index 0000000..9b51c22 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/BargainProductExcelVo.java @@ -0,0 +1,55 @@ +package com.zbkj.common.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * 砍价商品ExeclVo对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class BargainProductExcelVo { + + @ApiModelProperty(value = "砍价活动名称") + private String title; + + @ApiModelProperty(value = "砍价活动简介") + private String info; + + @ApiModelProperty(value = "砍价金额") + private String price; + + @ApiModelProperty(value = "用户每次砍价的次数") + private Integer bargainNum; + + @ApiModelProperty(value = "砍价状态 0(到砍价时间不自动开启) 1(到砍价时间自动开启时间)") + private String status; + + @ApiModelProperty(value = "砍价开启时间") + private String startTime; + + @ApiModelProperty(value = "砍价结束时间") + private String stopTime; + + @ApiModelProperty(value = "销量") + private Integer sales; + + @ApiModelProperty(value = "库存剩余") + private Integer quotaShow; + + @ApiModelProperty(value = "反多少积分") + private BigDecimal giveIntegral; + + @ApiModelProperty(value = "添加时间") + private String addTime; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/BaseResultResponseVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/BaseResultResponseVo.java new file mode 100644 index 0000000..5d54147 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/BaseResultResponseVo.java @@ -0,0 +1,22 @@ +package com.zbkj.common.vo; + + +import lombok.Data; + +/** + * Base Result + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class BaseResultResponseVo { + private Integer errcode; + private String errmsg; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/CallbackVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/CallbackVo.java new file mode 100644 index 0000000..d4fc981 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/CallbackVo.java @@ -0,0 +1,100 @@ +package com.zbkj.common.vo; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 微信回调对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="CallbackVo对象", description="微信回调") +public class CallbackVo { + @ApiModelProperty(value = "调用接口提交的公众账号ID") + @JsonProperty(value = "appid") + private String appId; + + @ApiModelProperty(value = "调用接口提交的商户号") + @JsonProperty(value = "mch_id") + private String mchId; + + @ApiModelProperty(value = "调用接口提交的终端设备号") + @JsonProperty(value = "device_info") + private String deviceInfo; + + @ApiModelProperty(value = "微信返回的随机字符串") + @JsonProperty(value = "nonce_str") + private String nonceStr; + + @ApiModelProperty(value = "微信返回的签名") + private String sign; + + @ApiModelProperty(value = "SUCCESS/FAIL此字段是通信标识,非交易标识,交易是否成功需要查看trade_state来判断") + @JsonProperty(value = "return_code") + private String returnCode; + + @ApiModelProperty(value = "当return_code为FAIL时返回信息为错误原因 ,例如 签名失败 参数格式校验错误") + @JsonProperty(value = "return_msg") + private String returnMsg; + + @ApiModelProperty(value = "SUCCESS/FAIL 业务结果") + @JsonProperty(value = "result_code") + private String resultCode; + + @ApiModelProperty(value = "详细参见错误列表") + @JsonProperty(value = "err_code") + private String errCode; + + @ApiModelProperty(value = "错误返回的信息描述") + @JsonProperty(value = "err_code_des") + private String errCodeDes; + + @ApiModelProperty(value = "用户在商户appid下的唯一标识") + private String openid; + + @ApiModelProperty(value = "微信支付订单号") + @JsonProperty(value = "transaction_id") + private String transactionId; + + @ApiModelProperty(value = "微信支付订单号") + @JsonProperty(value = "out_trade_no") + private String outTradeNo; + + @ApiModelProperty(value = "商家数据包,原样返回") + private String attach; + + @ApiModelProperty(value = "支付完成时间,格式为yyyyMMddHHmmss,如2009年12月25日9点10分10秒表示为20091225091010。其他详见时间规则") + @JsonProperty(value = "time_end") + private String timeEnd; + + @ApiModelProperty(value = "用户是否关注公众账号,Y-关注,N-未关注") + @JsonProperty(value = "is_subscribe") + private String isSubscribe; + + @ApiModelProperty(value = "银行类型") + @JsonProperty(value = "bank_type") + private String bankType; + + @ApiModelProperty(value = "现金支付金额") + @JsonProperty(value = "cash_fee") + private Integer cashFee; + + @ApiModelProperty(value = "总代金券金额") + @JsonProperty(value = "coupon_fee") + private Integer couponFee; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/CatItem.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/CatItem.java new file mode 100644 index 0000000..4bf35b8 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/CatItem.java @@ -0,0 +1,44 @@ +package com.zbkj.common.vo; + +import lombok.Data; + +import java.util.List; + +/** + * + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class CatItem { + + private Integer value; + + private String label; + + private String qualification; + + private Integer qualificationType; + + private String productQualification; + + private Integer productQualificationType; + + private List children; + + public CatItem() { + } + + public CatItem(Integer value, String label, List childrens) { + this.value = value; + this.label = label; + this.children = childrens; + } +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/CategoryTreeVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/CategoryTreeVo.java new file mode 100644 index 0000000..f124e39 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/CategoryTreeVo.java @@ -0,0 +1,59 @@ +package com.zbkj.common.vo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; + +/** + * 分类表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class CategoryTreeVo implements Serializable { + + private static final long serialVersionUID=1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "父级ID") + private Integer pid; + + @ApiModelProperty(value = "路径") + private String path; + + @ApiModelProperty(value = "分类名称") + private String name; + + @ApiModelProperty(value = "类型,类型,1 产品分类,2 附件分类,3 文章分类, 4 设置分类, 5 菜单分类, 6 配置分类, 7 秒杀配置") + private Integer type; + + @ApiModelProperty(value = "地址") + private String url; + + @ApiModelProperty(value = "扩展字段") + private String extra; + + @ApiModelProperty(value = "状态, 0正常,1失效") + private Boolean status; + + @ApiModelProperty(value = "排序") + private Integer sort; + + @JsonInclude(JsonInclude.Include.NON_EMPTY) //属性为 空("")[] 或者为 NULL 都不序列化 + private List child = new ArrayList<>(); +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/CloudVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/CloudVo.java new file mode 100644 index 0000000..5d24c3f --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/CloudVo.java @@ -0,0 +1,43 @@ +package com.zbkj.common.vo; + +import lombok.Data; + +/** + * 文件信息 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class CloudVo { + + //域名空间 + private String domain; + + //accessKey + private String accessKey; + + //secretKey + private String secretKey; + + //bucketName + private String bucketName; + +// //webPath web访问的url地址,云服务会自动创建相对应的文件夹 +// private String webPath; +// +// //服务器存储的文件绝对路径 +// private String filePath; +// +// //图片id +// private Integer id; + + //节点 + private String region; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/CombinationProductExcelVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/CombinationProductExcelVo.java new file mode 100644 index 0000000..06cca19 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/CombinationProductExcelVo.java @@ -0,0 +1,55 @@ +package com.zbkj.common.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * 拼团商品ExeclVo对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class CombinationProductExcelVo { + + @ApiModelProperty(value = "编号") + private Integer id; + + @ApiModelProperty(value = "拼团名称") + private String title; + + @ApiModelProperty(value = "原价") + private BigDecimal otPrice; + + @ApiModelProperty(value = "拼团价") + private BigDecimal price; + + @ApiModelProperty(value = "库存剩余") + private Integer quotaShow; + + @ApiModelProperty(value = "拼团人数") + private Integer countPeople; + + @ApiModelProperty(value = "参与人数") + private Integer countPeopleAll; + + @ApiModelProperty(value = "成团数量") + private Integer countPeoplePink; + + @ApiModelProperty(value = "销量") + private Integer sales; + + @ApiModelProperty(value = "商品状态") + private String isShow; + + @ApiModelProperty(value = "拼团结束时间") + private String stopTime; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/CreateOrderH5SceneInfoDetailVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/CreateOrderH5SceneInfoDetailVo.java new file mode 100644 index 0000000..24beccf --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/CreateOrderH5SceneInfoDetailVo.java @@ -0,0 +1,42 @@ +package com.zbkj.common.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 上报支付的场景信息详情 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="CreateOrderH5SceneInfoDetailVo对象", description="上报支付的场景信息详情") +public class CreateOrderH5SceneInfoDetailVo { + public CreateOrderH5SceneInfoDetailVo() { + } + + public CreateOrderH5SceneInfoDetailVo(String url, String name) { + this.wap_url = url; + this.wap_name = name; + } + + @ApiModelProperty(value = "场景类型", required = true) + private String type = "Wap"; + + @ApiModelProperty(value = "WAP网站URL地址", required = true) + private String wap_url; + + @ApiModelProperty(value = "WAP 网站名", required = true) + private String wap_name; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/CreateOrderH5SceneInfoVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/CreateOrderH5SceneInfoVo.java new file mode 100644 index 0000000..8a16de7 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/CreateOrderH5SceneInfoVo.java @@ -0,0 +1,37 @@ +package com.zbkj.common.vo; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 上报支付的场景信息 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="CreateOrderH5SceneInfoVo对象", description="上报支付的场景信息") +public class CreateOrderH5SceneInfoVo { + public CreateOrderH5SceneInfoVo() { + } + + public CreateOrderH5SceneInfoVo(CreateOrderH5SceneInfoDetailVo h5Info) { + this.h5_info = h5Info; + } + + @ApiModelProperty(value = "h5_info", required = true) + @JsonProperty(value = "h5_info") + private CreateOrderH5SceneInfoDetailVo h5_info; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/CreateOrderRequestVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/CreateOrderRequestVo.java new file mode 100644 index 0000000..6c546dc --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/CreateOrderRequestVo.java @@ -0,0 +1,98 @@ +package com.zbkj.common.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 微信统一下单对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="CreateOrderRequestVo对象", description="微信统一下单对象") +public class CreateOrderRequestVo { + @ApiModelProperty(value = "appId,公众号名称,由商户传入", required = true) + private String appid; + + @ApiModelProperty(value = "直连商户的商户号,由微信支付生成并下发", required = true) + private String mch_id; + + @ApiModelProperty(value = "终端设备号(门店号或收银设备ID),注意:PC网页或公众号内支付请传 WEB") + private String device_info = "WEB"; + + @ApiModelProperty(value = "随机字符串,不长于32位", required = true) + private String nonce_str; + + @ApiModelProperty(value = "签名", required = true) + private String sign; + + @ApiModelProperty(value = "签名类型,默认为MD5,支持HMAC-SHA256和MD5。") + private String sign_type; + + @ApiModelProperty(value = "商品简单描述,该字段须严格按照规范传递", required = true) + private String body; + + @ApiModelProperty(value = "商品简单描述") + private String detail; + + @ApiModelProperty(value = "附加数据,在查询API和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据, String(127)") + private String attach; + + @ApiModelProperty(value = "商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号", required = true) + private String out_trade_no; + + @ApiModelProperty(value = "符合ISO 4217标准的三位字母代码,默认人民币:CNY,其他值列表详见货币类型") + private String fee_type = "CNY"; + + @ApiModelProperty(value = "订单总金额,单位为分", required = true) + private int total_fee; + + @ApiModelProperty(value = "必须传正确的用户端IP,支持ipv4、ipv6格式,获取方式详见获取用户ip指引", required = true) + private String spbill_create_ip; + + @ApiModelProperty(value = "订单生成时间,格式为yyyyMMddHHmmss,如2009年12月25日9点10分10秒表示为20091225091010。其他详见时间规则") + private String time_start; + + @ApiModelProperty(value = "订单失效时间,格式为yyyyMMddHHmmss,如2009年12月25日9点10分10秒表示为20091225091010。其他详见时间规则") + private String time_expire; + + @ApiModelProperty(value = "商品标记,代金券或立减优惠功能的参数,说明详见代金券或立减优惠") + private String goods_tag; + + @ApiModelProperty(value = "接收微信支付异步通知回调地址,通知url必须为直接可访问的url,不能携带参数。") + private String notify_url; + + @ApiModelProperty(value = "JSAPI -JSAPI支付(或小程序支付), NATIVE -Native支付, APP -APP支付,MWEB--H5支付", required = true) + private String trade_type; + + @ApiModelProperty(value = "trade_type=NATIVE,此参数必传。此id为二维码中包含的商品ID,商户自行定义。") + private String product_id; + + @ApiModelProperty(value = "no_credit--指定不能使用信用卡支付") + private String limit_pay; + + @ApiModelProperty(value = "trade_type=JSAPI,此参数必传,用户在商户appid下的唯一标识。openid如何获取,可参考【获取openid】。企业号请使用【企业号OAuth2.0接口】获取企业号内成员userid,再调用【企业号userid转openid接口】进行转换") + private String openid; + + @ApiModelProperty(value = "Y,传入Y时,支付成功消息和支付详情页将出现开票入口。需要在微信支付商户平台或微信公众平台开通电子发票功能,传此字段才可生效") + private String receipt = "N"; + + @ApiModelProperty(value = "该字段用于上报支付的场景信息,针对H5支付有以下三种场景,请根据对应场景上报,H5支付不建议在APP端使用,针对场景1,2请接入APP支付,不然可能会出现兼容性问题") + private String scene_info; + + + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/CreateOrderResponseVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/CreateOrderResponseVo.java new file mode 100644 index 0000000..ca8a2d3 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/CreateOrderResponseVo.java @@ -0,0 +1,83 @@ +package com.zbkj.common.vo; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 统一下单返回对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="CreateOrderResponseVo对象", description="统一下单返回对象") +public class CreateOrderResponseVo { + @ApiModelProperty(value = "调用接口提交的公众账号ID") + @JsonProperty(value = "appid") + private String appId; + + @ApiModelProperty(value = "调用接口提交的商户号") + @JsonProperty(value = "mch_id") + private String mchId; + + @ApiModelProperty(value = "调用接口提交的终端设备号") + @JsonProperty(value = "device_info") + private String deviceInfo; + + @ApiModelProperty(value = "微信返回的随机字符串") + @JsonProperty(value = "nonce_str") + private String nonceStr; + + @ApiModelProperty(value = "微信返回的签名") + private String sign; + + @ApiModelProperty(value = "SUCCESS/FAIL此字段是通信标识,非交易标识,交易是否成功需要查看trade_state来判断") + @JsonProperty(value = "return_code") + private String returnCode; + + @ApiModelProperty(value = "当return_code为FAIL时返回信息为错误原因 ,例如 签名失败 参数格式校验错误") + @JsonProperty(value = "return_msg") + private String returnMsg; + + @ApiModelProperty(value = "SUCCESS/FAIL 业务结果") + @JsonProperty(value = "result_code") + private String resultCode; + + @ApiModelProperty(value = "详细参见错误列表") + @JsonProperty(value = "err_code") + private String errCode; + + @ApiModelProperty(value = "错误返回的信息描述") + @JsonProperty(value = "err_code_des") + private String errCodeDes; + + @ApiModelProperty(value = "调用接口提交的交易类型,取值如下:JSAPI,NATIVE,APP,,H5支付固定传MWEB") + @JsonProperty(value = "trade_type") + private String tradeType; + + @ApiModelProperty(value = "微信生成的预支付回话标识,用于后续接口调用中使用,该值有效期为2小时,针对H5支付此参数无特殊用途") + @JsonProperty(value = "prepay_id") + private String prepayId; + + @ApiModelProperty(value = "mweb_url为拉起微信支付收银台的中间页面,可通过访问该url来拉起微信客户端,完成支付,mweb_url的有效期为5分钟") + @JsonProperty(value = "mweb_url") + private String mWebUrl; + + @ApiModelProperty(value = "该字段用于上报支付的场景信息,针对H5支付有以下三种场景,请根据对应场景上报,H5支付不建议在APP端使用,针对场景1,2请接入APP支付,不然可能会出现兼容性问题") + @JsonProperty(value = "scene_info") + private String extra; + + private Object transJsConfig; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/DeliveryCompanyVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/DeliveryCompanyVo.java new file mode 100644 index 0000000..d84b571 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/DeliveryCompanyVo.java @@ -0,0 +1,28 @@ +package com.zbkj.common.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; + +/** + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class DeliveryCompanyVo { + + /** 快递公司id */ + @TableField(value = "delivery_id") + private String deliveryId; + + /** 快递公司名称 */ + @TableField(value = "delivery_name") + private String deliveryName; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/DeliveryInfoVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/DeliveryInfoVo.java new file mode 100644 index 0000000..97a2724 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/DeliveryInfoVo.java @@ -0,0 +1,27 @@ +package com.zbkj.common.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; + +/** + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class DeliveryInfoVo { + + /** 快递公司ID,通过获取快递公司列表获取 */ + @TableField(value = "delivery_id") + private String deliveryId; + + /** 快递单号 */ + @TableField(value = "waybill_id") + private String waybillId; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/DeliverySendVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/DeliverySendVo.java new file mode 100644 index 0000000..3b1255f --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/DeliverySendVo.java @@ -0,0 +1,41 @@ +package com.zbkj.common.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; + +import java.util.List; + +/** + * 订单发货Vo对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class DeliverySendVo { + + /** 订单ID */ + @TableField(value = "order_id") + private Integer orderId; + + /** 商家自定义订单ID,与 order_id 二选一 */ + @TableField(value = "out_order_id") + private String outOrderId; + + /** 用户的openid */ + private String openid; + + /** 发货完成标志位, 0: 未发完, 1:已发完 */ + @TableField(value = "finish_all_delivery") + private Integer finishSllDelivery; + + /** 快递信息,delivery_type=1时必填 */ + @TableField(value = "delivery_list") + private List deliveryList; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ExpressSheetVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ExpressSheetVo.java new file mode 100644 index 0000000..b210cc4 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ExpressSheetVo.java @@ -0,0 +1,65 @@ +package com.zbkj.common.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 系统电子面单对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="ExpressSheetVo对象", description="系统电子面单对象") +public class ExpressSheetVo { + + public ExpressSheetVo() { + } + + public ExpressSheetVo(Integer exportId, String exportCom, String exportTempId, String exportToName, String exportToTel, String exportToAddress, String exportSiid, Integer exportOpen) { + this.exportId = exportId; + this.exportCom = exportCom; + this.exportTempId = exportTempId; + this.exportToName = exportToName; + this.exportToTel = exportToTel; + this.exportToAddress = exportToAddress; + this.exportSiid = exportSiid; + this.exportOpen = exportOpen; + } + + @ApiModelProperty(value = "快递公司简称,物流、电子面单开通必填") + private Integer exportId; + + @ApiModelProperty(value = "快递公司简称,物流、电子面单开通必填") + private String exportCom; + + @ApiModelProperty(value = "快递公司模板Id、电子面单开通必填") + private String exportTempId; + + @ApiModelProperty(value = "快递面单发货人姓名,物流、电子面单开通必填") + private String exportToName; + + @ApiModelProperty(value = "快递面单发货人电话,物流、电子面单开通必填") + private String exportToTel; + + @ApiModelProperty(value = "发货人详细地址,物流、电子面单开通必填") + private String exportToAddress; + + @ApiModelProperty(value = "电子面单打印机编号,物流、电子面单开通必填") + private String exportSiid; + + @ApiModelProperty(value = "电子面单是否开启") + private Integer exportOpen; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/FileResultVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/FileResultVo.java new file mode 100644 index 0000000..985fc01 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/FileResultVo.java @@ -0,0 +1,36 @@ +package com.zbkj.common.vo; + +import lombok.Data; +/** + * 文件信息 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class FileResultVo{ + + // 文件名 + private String fileName; + + // 扩展名 + private String extName; + + // 文件大小,字节 + private Long fileSize; + + // 文件存储在服务器的相对地址 +// private String serverPath; + + //可供访问的url 域名根据配置存储,代替了上面serverPath 的功能 + private String url; + + //类型 + private String type; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/FirstCatVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/FirstCatVo.java new file mode 100644 index 0000000..0965d7b --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/FirstCatVo.java @@ -0,0 +1,31 @@ +package com.zbkj.common.vo; + +import lombok.Data; + +import java.util.List; + +/** + * 第一级类目 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class FirstCatVo { + + /** 一级类目ID */ + private Integer firstCatId; + + /** 一级类目名称 */ + private String firstCatName; + + /** 二级类目数组 */ + private List secondCatList; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ImageMergeUtilVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ImageMergeUtilVo.java new file mode 100644 index 0000000..7f6b88f --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ImageMergeUtilVo.java @@ -0,0 +1,35 @@ +package com.zbkj.common.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotBlank; + +/** + * 图片合成详情 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class ImageMergeUtilVo { + + @ApiModelProperty(value = "图片地址", required = true) + @NotBlank(message = "图片地址必须填写") + private String path; //地址 + + @ApiModelProperty(value = "x轴", required = true) + @Min(value = 0, message = "x轴至少为0") + private int x; //x轴 + + @ApiModelProperty(value = "y轴", required = true) + @Min(value = 0, message = "y轴至少为0") + private int y; //y轴 +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/LoginUserVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/LoginUserVo.java new file mode 100644 index 0000000..9a5f993 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/LoginUserVo.java @@ -0,0 +1,204 @@ +package com.zbkj.common.vo; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.zbkj.common.model.system.SystemAdmin; +import com.zbkj.common.model.system.SystemPermissions; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.authority.SimpleGrantedAuthority; +import org.springframework.security.core.userdetails.UserDetails; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +/** + * 登录用户身份权限 + */ +public class LoginUserVo implements UserDetails { + + private static final long serialVersionUID = 1L; + + /** + * 用户唯一标识 + */ + private String token; + + /** + * 登陆时间 + */ + private Long loginTime; + + /** + * 过期时间 + */ + private Long expireTime; + + /** + * 登录IP地址 + */ + private String ipaddr; + + /** + * 登录地点 + */ + private String loginLocation; + + /** + * 浏览器类型 + */ + private String browser; + + /** + * 操作系统 + */ + private String os; + + /** + * 权限列表 + */ + private List permissions; + + /** + * 用户信息 + */ + private SystemAdmin user; + + public LoginUserVo() { + } + + public LoginUserVo(SystemAdmin user, List permissions) { + this.user = user; + this.permissions = permissions; + } + + @Override + @JsonIgnore + public Collection getAuthorities() { + List authorities = new ArrayList<>(permissions.size()); + for (SystemPermissions permission : permissions) { + authorities.add(new SimpleGrantedAuthority(permission.getPath())); + } + return authorities; + } + + @JsonIgnore + @Override + public String getPassword() { + return null; + } + + @Override + public String getUsername() { + return null; + } + + /** + * 账户是否未过期,过期无法验证 + */ + @JsonIgnore + @Override + public boolean isAccountNonExpired() { + return true; + } + + /** + * 指定用户是否解锁,锁定的用户无法进行身份验证 + */ + @JsonIgnore + @Override + public boolean isAccountNonLocked() { + return true; + } + + /** + * 指示是否已过期的用户的凭据(密码),过期的凭据防止认证 + */ + @JsonIgnore + @Override + public boolean isCredentialsNonExpired() { + return true; + } + + /** + * 是否可用 ,禁用的用户不能身份验证 + */ + @JsonIgnore + @Override + public boolean isEnabled() { + return true; + } + + + public String getToken() { + return token; + } + + public void setToken(String token) { + this.token = token; + } + + public Long getLoginTime() { + return loginTime; + } + + public void setLoginTime(Long loginTime) { + this.loginTime = loginTime; + } + + public Long getExpireTime() { + return expireTime; + } + + public void setExpireTime(Long expireTime) { + this.expireTime = expireTime; + } + + public String getIpaddr() { + return ipaddr; + } + + public void setIpaddr(String ipaddr) { + this.ipaddr = ipaddr; + } + + public String getLoginLocation() { + return loginLocation; + } + + public void setLoginLocation(String loginLocation) { + this.loginLocation = loginLocation; + } + + public String getBrowser() { + return browser; + } + + public void setBrowser(String browser) { + this.browser = browser; + } + + public String getOs() { + return os; + } + + public void setOs(String os) { + this.os = os; + } + + public List getPermissions() { + return permissions; + } + + public void setPermissions(List permissions) { + this.permissions = permissions; + } + + public SystemAdmin getUser() { + return user; + } + + public void setUser(SystemAdmin user) { + this.user = user; + } + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/LogisticsResultListVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/LogisticsResultListVo.java new file mode 100644 index 0000000..ad7f128 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/LogisticsResultListVo.java @@ -0,0 +1,32 @@ +package com.zbkj.common.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 快递轨迹 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="LogisticsResultListVo对象", description="快递轨迹") +public class LogisticsResultListVo { + + @ApiModelProperty(value = "时间") + private String time; + + @ApiModelProperty(value = "日志") + private String status; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/LogisticsResultVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/LogisticsResultVo.java new file mode 100644 index 0000000..7aa1003 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/LogisticsResultVo.java @@ -0,0 +1,71 @@ +package com.zbkj.common.vo; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.util.List; + +/** + * 快递轨迹 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="LogisticsResultVo对象", description="快递接口返回数据") +public class LogisticsResultVo { + + @ApiModelProperty(value = "快递单号") + private String number; + + @ApiModelProperty(value = "快递简写") + private String type; + + @ApiModelProperty(value = "快递运送轨迹") + private List list; + + @ApiModelProperty(value = "快递收件(揽件)1.在途中 2.正在派件 3.已签收 4.派送失败 5.疑难件 6.退件签收 */") + @JsonProperty("deliverystatus") + private String deliveryStatus; + + @ApiModelProperty(value = "是否签收") + @JsonProperty("issign") + private String isSign; + + @ApiModelProperty(value = "快递公司名称") + private String expName; + + @ApiModelProperty(value = "快递公司官网") + private String expSite; + + @ApiModelProperty(value = "快递公司电话") + private String expPhone; + + @ApiModelProperty(value = "快递员 或 快递站(没有则为空") + private String courier; + + @ApiModelProperty(value = "快递员电话 (没有则为空)") + private String courierPhone; + + @ApiModelProperty(value = "快递轨迹信息最新时间 ") + private String updateTime; + + @ApiModelProperty(value = "发货到收货消耗时长 (截止最新轨迹)") + private String takeTime; + + @ApiModelProperty(value = "快递公司LOGO") + private String logo; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/MenuCheckTree.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/MenuCheckTree.java new file mode 100644 index 0000000..3e83b9a --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/MenuCheckTree.java @@ -0,0 +1,76 @@ +package com.zbkj.common.vo; + +import cn.hutool.core.collection.CollUtil; +import com.zbkj.common.response.MenusResponse; + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 菜单选中树 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class MenuCheckTree { + + private List menuList = new ArrayList(); + + public MenuCheckTree(List menuList) { + this.menuList = menuList; + } + + //建立树形结构 + public List buildTree(){ + List treeMenus = new ArrayList(); + for(MenuCheckVo menuNode : getRootNode()) { + menuNode = buildChildTree(menuNode); + treeMenus.add(menuNode); + } + return sortList(treeMenus); +// return treeMenus; + } + + // 排序 + private List sortList(List treeMenus) { + treeMenus = treeMenus.stream().sorted(Comparator.comparing(MenuCheckVo::getSort).reversed()).collect(Collectors.toList()); + treeMenus.forEach(e -> { + if (CollUtil.isNotEmpty(e.getChildList())) { + e.setChildList(sortList(e.getChildList())); + } + }); + return treeMenus; + } + + //递归,建立子树形结构 + private MenuCheckVo buildChildTree(MenuCheckVo pNode){ + List childMenus = new ArrayList(); + for(MenuCheckVo menuNode : menuList) { + if(menuNode.getPid().equals(pNode.getId())) { + childMenus.add(buildChildTree(menuNode)); + } + } + pNode.setChildList(childMenus); + return pNode; + } + + //获取根节点 + private List getRootNode() { + List rootMenuLists = new ArrayList(); + for(MenuCheckVo menuNode : menuList) { + if(menuNode.getPid().equals(0)) { + rootMenuLists.add(menuNode); + } + } + return rootMenuLists; + } + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/MenuCheckVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/MenuCheckVo.java new file mode 100644 index 0000000..b244bc4 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/MenuCheckVo.java @@ -0,0 +1,52 @@ +package com.zbkj.common.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.List; + +/** + * 菜单待选中Vo对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="MenuCheckVo对象", description="菜单待选中Vo对象") +public class MenuCheckVo implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "菜单ID") + private Integer id; + + @ApiModelProperty(value = "父级ID") + private Integer pid; + + @ApiModelProperty(value = "名称") + private String name; + + @ApiModelProperty(value = "icon") + private String icon; + + @ApiModelProperty(value = "是否选中") + private Boolean checked; + + @ApiModelProperty(value = "排序") + private Integer sort; + + @ApiModelProperty(value = "子对象列表") + private List childList; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/MenuTree.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/MenuTree.java new file mode 100644 index 0000000..9768d1a --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/MenuTree.java @@ -0,0 +1,76 @@ +package com.zbkj.common.vo; + +import cn.hutool.core.collection.CollUtil; +import com.zbkj.common.response.MenusResponse; + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 菜单树 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class MenuTree { + + private List menuList = new ArrayList(); + + public MenuTree(List menuList) { + this.menuList = menuList; + } + + //建立树形结构 + public List buildTree(){ + List treeMenus = new ArrayList(); + for(MenusResponse menuNode : getRootNode()) { + menuNode = buildChildTree(menuNode); + treeMenus.add(menuNode); + } + return sortList(treeMenus); +// return treeMenus; + } + + // 排序 + private List sortList(List treeMenus) { + treeMenus = treeMenus.stream().sorted(Comparator.comparing(MenusResponse::getSort).reversed()).collect(Collectors.toList()); + treeMenus.forEach(e -> { + if (CollUtil.isNotEmpty(e.getChildList())) { + e.setChildList(sortList(e.getChildList())); + } + }); + return treeMenus; + } + + //递归,建立子树形结构 + private MenusResponse buildChildTree(MenusResponse pNode){ + List childMenus = new ArrayList(); + for(MenusResponse menuNode : menuList) { + if(menuNode.getPid().equals(pNode.getId())) { + childMenus.add(buildChildTree(menuNode)); + } + } + pNode.setChildList(childMenus); + return pNode; + } + + //获取根节点 + private List getRootNode() { + List rootMenuLists = new ArrayList(); + for(MenusResponse menuNode : menuList) { + if(menuNode.getPid().equals(0)) { + rootMenuLists.add(menuNode); + } + } + return rootMenuLists; + } + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/MyRecord.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/MyRecord.java new file mode 100644 index 0000000..b930e32 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/MyRecord.java @@ -0,0 +1,468 @@ +package com.zbkj.common.vo; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.util.StringUtils; + +import java.io.Serializable; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.math.BigDecimal; +import java.text.NumberFormat; +import java.text.ParseException; +import java.util.*; + +/** + * 公共对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class MyRecord implements Serializable { + + private static final long serialVersionUID = 905784513600884082L; + + private static final Logger logger = LoggerFactory.getLogger(MyRecord.class); + + private Map columns; + + void setColumnsMap(Map columns) { + this.columns = columns; + } + + /** + * Return columns map. + */ + public Map getColumns() { + if (null == columns) { + columns = new HashMap(); + } + return columns; + } + + /** + * Set columns value with map. + * + * @param columns the columns map + */ + public MyRecord setColums(Map columns) { + this.getColumns().putAll(columns); + return this; + } + + /** + * Set columns value with MyRecord. + * + * @param record the MyRecord object + */ + public MyRecord setColums(MyRecord record) { + this.getColumns().putAll(record.getColumns()); + return this; + } + + /** + * Set columns value with JSONObject. + * + * @param jsonObject the MyRecord object + */ + public MyRecord setColums(JSONObject jsonObject) { + Map columns = this.getColumns(); + jsonObject.forEach(columns::put); + return this; + } + + /** + * Set columns value with Model object. + * @param t + * @param + * @return + */ + public MyRecord setColums(T t) { + Map columns = this.getColumns(); + + String[] fieldNames = getFiledName(t); + + for (int i = 0; i < fieldNames.length; i++) { + String name = fieldNames[i]; + if (!StringUtils.isEmpty(name) &&"serialVersionUID".equals(name)) { + continue ; + } + Object value = getFieldValueByName(name, t); + if (null != value) { +// if (getFiledType(name, t).equals(Date.class)) { +// value = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format((Date)value); +// } + columns.put(name, value); + } + } + return this; + } + + /** + * Remove attribute of this myRecord. + * + * @param column the column name of the myRecord + */ + public MyRecord remove(String column) { + getColumns().remove(column); + return this; + } + + /** + * Remove columns of this myRecord. + * + * @param columns the column names of the myRecord + */ + public MyRecord remove(String... columns) { + if (columns != null) + for (String c : columns) + this.getColumns().remove(c); + return this; + } + + /** + * Remove columns if it is null. + */ + public MyRecord removeNullValueColumns() { + for (java.util.Iterator> it = getColumns().entrySet().iterator(); it.hasNext(); ) { + Map.Entry e = it.next(); + if (e.getValue() == null) { + it.remove(); + } + } + return this; + } + + /** + * Keep columns of this record and remove other columns. + * + * @param columns the column names of the record + */ + public MyRecord keep(String... columns) { + if (columns != null && columns.length > 0) { + Map newColumns = new HashMap(columns.length); // getConfig().containerFactory.getColumnsMap(); + for (String c : columns) + if (this.getColumns().containsKey(c)) // prevent put null value to the newColumns + newColumns.put(c, this.getColumns().get(c)); + + this.getColumns().clear(); + this.getColumns().putAll(newColumns); + } else + this.getColumns().clear(); + return this; + } + + /** + * Keep column of this record and remove other columns. + * + * @param column the column names of the record + */ + public MyRecord keep(String column) { + if (getColumns().containsKey(column)) { // prevent put null value to the newColumns + Object keepIt = getColumns().get(column); + getColumns().clear(); + getColumns().put(column, keepIt); + } else + getColumns().clear(); + return this; + } + + /** + * Remove all columns of this record. + */ + public MyRecord clear() { + getColumns().clear(); + return this; + } + + /** + * Set column to record. + * + * @param column the column name + * @param value the value of the column + */ + public MyRecord set(String column, Object value) { + getColumns().put(column, value); + return this; + } + + /** + * Set column to record. + * + * @param column the column name + * @param valueList the value of the column + */ + public MyRecord set(String column, List valueList) { + List> value = new ArrayList<>(); + valueList.forEach(o -> { + HashMap va = new HashMap<>(o.getColumns()); + value.add(va); + }); + getColumns().put(column, value); + return this; + } + + /** + * Get column of any mysql type + */ + public T get(String column) { + return (T) getColumns().get(column); + } + + /** + * Get column of any mysql type. Returns defaultValue if null. + */ + public T get(String column, Object defaultValue) { + Object result = getColumns().get(column); + return (T) (result != null ? result : defaultValue); + } + + public Object getObject(String column) { + return getColumns().get(column); + } + + public Object getObject(String column, Object defaultValue) { + Object result = getColumns().get(column); + return result != null ? result : defaultValue; + } + + /** + * Get column of mysql type: varchar, char, enum, set, text, tinytext, mediumtext, longtext + */ + public String getStr(String column) { + // return (String)getColumns().get(column); + Object s = getColumns().get(column); + return s != null ? s.toString() : null; + } + + /** + * Get column of mysql type: int, integer, tinyint(n) n > 1, smallint, mediumint + */ + public Integer getInt(String column) { + Number n = getNumber(column); + return n != null ? n.intValue() : null; + } + + /** + * Get column of mysql type: bigint + */ + public Long getLong(String column) { + Number n = getNumber(column); + return n != null ? n.longValue() : null; + } + + /** + * Get column of mysql type: unsigned bigint + */ + public java.math.BigInteger getBigInteger(String column) { + return (java.math.BigInteger) getColumns().get(column); + } + + /** + * Get column of mysql type: date, year + */ + public java.util.Date getDate(String column) { + return (java.util.Date) getColumns().get(column); + } + + /** + * Get column of mysql type: time + */ + public java.sql.Time getTime(String column) { + return (java.sql.Time) getColumns().get(column); + } + + /** + * Get column of mysql type: timestamp, datetime + */ + public java.sql.Timestamp getTimestamp(String column) { + return (java.sql.Timestamp) getColumns().get(column); + } + + /** + * Get column of mysql type: real, double + */ + public Double getDouble(String column) { + Number n = getNumber(column); + return n != null ? n.doubleValue() : null; + } + + /** + * Get column of mysql type: float + */ + public Float getFloat(String column) { + Number n = getNumber(column); + return n != null ? n.floatValue() : null; + } + + public Short getShort(String column) { + Number n = getNumber(column); + return n != null ? n.shortValue() : null; + } + + public Byte getByte(String column) { + Number n = getNumber(column); + return n != null ? n.byteValue() : null; + } + + /** + * Get column of mysql type: bit, tinyint(1) + */ + public Boolean getBoolean(String column) { + return (Boolean) getColumns().get(column); + } + + /** + * Get column of mysql type: decimal, numeric + */ + public BigDecimal getBigDecimal(String column) { + Object n = getColumns().get(column); + if (n instanceof BigDecimal) { + return (BigDecimal) n; + } else if (n != null) { + return new BigDecimal(n.toString()); + } else { + return null; + } + } + + /** + * Get column of mysql type: binary, varbinary, tinyblob, blob, mediumblob, longblob + * I have not finished the test. + */ + public byte[] getBytes(String column) { + return (byte[]) getColumns().get(column); + } + + /** + * Get column of any type that extends from Number + */ + public Number getNumber(String column) { + if (getColumns().get(column) instanceof String) { + try { + return NumberFormat.getInstance().parse(getColumns().get(column).toString()); + } catch (ParseException e) { + System.out.println("类型转换错误e = " + e.getMessage()); + e.printStackTrace(); + } + } + return (Number) getColumns().get(column); + } + + public String toString() { + if (columns == null) { + return "{}"; + } + StringBuilder sb = new StringBuilder(); + sb.append('{'); + boolean first = true; + for (Map.Entry e : getColumns().entrySet()) { + if (first) { + first = false; + } else { + sb.append(", "); + } + Object value = e.getValue(); + if (value != null) { + value = value.toString(); + } + sb.append(e.getKey()).append(':').append(value); + } + sb.append('}'); + return sb.toString(); + } + + public boolean equals(Object o) { + if (!(o instanceof MyRecord)) + return false; + if (o == this) + return true; + return getColumns().equals(((MyRecord) o).getColumns()); + } + + public int hashCode() { + return getColumns().hashCode(); + } + + /** + * Return column names of this record. + */ + public String[] getColumnNames() { + Set attrNameSet = getColumns().keySet(); + return attrNameSet.toArray(new String[attrNameSet.size()]); + } + + /** + * Return column values of this record. + */ + public Object[] getColumnValues() { + java.util.Collection attrValueCollection = getColumns().values(); + return attrValueCollection.toArray(new Object[attrValueCollection.size()]); + } + + /** + * Return json string of this record. + */ + public String toJson() { + return JSON.toJSONString(getColumns()); + } + + /** + * @param o + * @return + * @desc 获取属性名数组 + */ + private static String[] getFiledName(Object o) { + Field[] fields = o.getClass().getDeclaredFields(); + String[] fieldNames = new String[fields.length]; + for (int i = 0; i < fields.length; i++) { + fieldNames[i] = fields[i].getName(); + } + return fieldNames; + } + + /** + * @param fieldName + * @param o + * @return + * @desc 根据属性名获取属性值 + */ + private static Object getFieldValueByName(String fieldName, Object o) { + try { + String firstLetter = fieldName.substring(0, 1).toUpperCase(); + String getter = "get" + firstLetter + fieldName.substring(1); + Method method = o.getClass().getMethod(getter, new Class[]{}); + Object value = method.invoke(o, new Object[]{}); + return value; + } catch (Exception e) { + e.printStackTrace(); + logger.error("获取属性值失败!" + e, e); + } + return null; + } + + /** + * @param fieldName + * @param o + * @return + * @desc 获取属性的数据类型 + */ + private static Object getFiledType(String fieldName, Object o) { + Field[] fields = o.getClass().getDeclaredFields(); + for (Field field : fields) { + if (Objects.equals(fieldName, field.getName())) { + return field.getType(); + } + } + return null; + } + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/OnePassLoginVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/OnePassLoginVo.java new file mode 100644 index 0000000..38511e0 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/OnePassLoginVo.java @@ -0,0 +1,38 @@ +package com.zbkj.common.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 一号通登录对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="OnePassLoginVo对象", description = "一号通登录对象") +public class OnePassLoginVo { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "一号通账号") + private String account; + + /** + * secret = md5(账号+md5(密码)) + */ + @ApiModelProperty(value = "一号通密钥") + private String secret; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/OnePassLogisticsQueryVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/OnePassLogisticsQueryVo.java new file mode 100644 index 0000000..51d2bf8 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/OnePassLogisticsQueryVo.java @@ -0,0 +1,46 @@ +package com.zbkj.common.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.util.List; + +/** + * 一号通物流查询结果对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="OnePassLogisticsQueryVo对象", description = "一号通物流查询结果对象") +public class OnePassLogisticsQueryVo { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "是否签收") + private String ischeck; + + @ApiModelProperty(value = "物流状态:0:快递收件(揽件)1.在途中 2.正在派件 3.已签收 4.派送失败 5.疑难件 6.退件签收 ") + private String status; + + @ApiModelProperty(value = "物流公司") + private String com; + + @ApiModelProperty(value = "快递单号") + private String num; + + @ApiModelProperty(value = "物流详情") + private List content; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/OnePassLogisticsTrackVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/OnePassLogisticsTrackVo.java new file mode 100644 index 0000000..636fe22 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/OnePassLogisticsTrackVo.java @@ -0,0 +1,36 @@ +package com.zbkj.common.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 一号通物流轨迹对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="OnePassLogisticsTrackVo对象", description = "一号通物流轨迹对象") +public class OnePassLogisticsTrackVo { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "变动时间") + private String time; + + private String ftime; + + @ApiModelProperty(value = "变动详情") + private String status; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/OrderExcelVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/OrderExcelVo.java new file mode 100644 index 0000000..a71d254 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/OrderExcelVo.java @@ -0,0 +1,90 @@ +package com.zbkj.common.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * @program: crmeb + * @author: 大粽子 + * @create: 2021-10-27 10:38 + **/ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="OrderExcelVo", description = "产品导出") +public class OrderExcelVo implements Serializable { + + @ApiModelProperty(value = "订单号") + private String orderId; + + @ApiModelProperty(value = "实际支付金额") + private String payPrice; + +// @ApiModelProperty(value = "支付方式") +// private String payType; + + @ApiModelProperty(value = "创建时间") + private String createTime; + +// @ApiModelProperty(value = "订单状态(0:待发货;1:待收货;2:已收货,待评价;3:已完成;)") +// private String status; + + @ApiModelProperty(value = "商品信息") + private String productName; + + @ApiModelProperty(value = "订单状态") + private String statusStr; + + @ApiModelProperty(value = "支付方式") + private String payTypeStr; + +// @ApiModelProperty(value = "是否删除") +// private String isDel; +// +// @ApiModelProperty(value = "退款图片") +// private String refundReasonWapImg; +// +// @ApiModelProperty(value = "退款用户说明") +// private String refundReasonWapExplain; +// +// @ApiModelProperty(value = "退款时间") +// private String refundReasonTime; +// +// @ApiModelProperty(value = "前台退款原因") +// private String refundReasonWap; +// +// @ApiModelProperty(value = "不退款的理由") +// private String refundReason; +// +// @ApiModelProperty(value = "退款金额") +// private String refundPrice; +// +// @ApiModelProperty(value = "0 未退款 1 申请中 2 已退款") +// private String refundStatus; +// +// @ApiModelProperty(value = "核销码") +// private String verifyCode; + + @ApiModelProperty(value = "订单类型") + private String orderType; + +// @ApiModelProperty(value = "订单管理员备注") +// private String remark; + + @ApiModelProperty(value = "用户姓名") + private String realName; + +// @ApiModelProperty(value = "支付状态") +// private String paid; +// +// @ApiModelProperty(value = "订单类型:0-普通订单,1-视频号订单") +// private String type; +// +// @ApiModelProperty(value = "是否改价,0-否,1-是") +// private String isAlterPrice; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/OrderInfoDetailVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/OrderInfoDetailVo.java new file mode 100644 index 0000000..a9136f9 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/OrderInfoDetailVo.java @@ -0,0 +1,67 @@ +package com.zbkj.common.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * 订单详情Vo对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class OrderInfoDetailVo { + + /** 商品id */ + private Integer productId; + + /** 商品名称 */ + private String productName; + + /** 规格属性id */ + private Integer attrValueId; + + /** 商品图片 */ + private String image; + + /** sku */ + private String sku; + + /** 单价 */ + private BigDecimal price; + + /** 购买数量 */ + private Integer payNum; + + /** 重量 */ + private BigDecimal weight; + + /** 体积 */ + private BigDecimal volume; + + /** 运费模板ID */ + private Integer tempId; + + /** 获得积分 */ + private Integer giveIntegral; + + /** 是否评价 */ + private Integer isReply; + + /** 是否单独分佣 */ + private Boolean isSub; + + /** 会员价 */ + private BigDecimal vipPrice; + + /** 商品类型:0-普通,1-秒杀,2-砍价,3-拼团,4-视频号 */ + private Integer productType; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/OrderInfoVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/OrderInfoVo.java new file mode 100644 index 0000000..45f55aa --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/OrderInfoVo.java @@ -0,0 +1,101 @@ +package com.zbkj.common.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 预下单Vo对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="OrderInfoVo对象", description="预下单Vo对象") +public class OrderInfoVo { + + @ApiModelProperty(value = "运费金额") + private BigDecimal freightFee; + + @ApiModelProperty(value = "优惠券编号(选择优惠券时有值") + private Integer userCouponId; + + @ApiModelProperty(value = "优惠金额") + private BigDecimal couponFee; + + @ApiModelProperty(value = "商品总计金额") + private BigDecimal proTotalFee; + + @ApiModelProperty(value = "订单商品数量") + private Integer orderProNum; + + @ApiModelProperty(value = "实际支付金额") + private BigDecimal payFee; + + @ApiModelProperty(value = "地址id") + private Integer addressId; + + @ApiModelProperty(value = "收货人姓名(前端用)") + private String realName; + + @ApiModelProperty(value = "收货人电话(前端用)") + private String phone; + + @ApiModelProperty(value = "收货人所在省(前端用)") + private String province; + + @ApiModelProperty(value = "收货人所在市(前端用)") + private String city; + + @ApiModelProperty(value = "收货人所在区(前端用)") + private String district; + + @ApiModelProperty(value = "收货人详细地址(前端用)") + private String detail; + + @ApiModelProperty(value = "用户剩余积分") + private Integer userIntegral; + + @ApiModelProperty(value = "用户可用余额") + private BigDecimal userBalance; + + @ApiModelProperty(value = "订单备注") + private String remark; + + @ApiModelProperty(value = "订单详情数组") + private List orderDetailList; + + @ApiModelProperty(value = "秒杀商品Id") + private Integer seckillId = 0; + + @ApiModelProperty(value = "砍价商品Id") + private Integer bargainId = 0; + + @ApiModelProperty(value = "用户砍价活动id") + private Integer bargainUserId; + + @ApiModelProperty(value = "拼团商品Id") + private Integer combinationId = 0; + + @ApiModelProperty(value = "拼团团长Id") + private Integer pinkId = 0; + + @ApiModelProperty(value = "购物车编号列表") + private List cartIdList; + + @ApiModelProperty(value = "是否视频号订单") + private Boolean isVideo = false; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ProductExcelVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ProductExcelVo.java new file mode 100644 index 0000000..3195e42 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ProductExcelVo.java @@ -0,0 +1,52 @@ +package com.zbkj.common.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 商品ExcelVo对象类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="ProductExcelVo对象", description = "产品导出") +public class ProductExcelVo implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "商品名称") + private String storeName; + + @ApiModelProperty(value = "商品简介") + private String storeInfo; + + @ApiModelProperty(value = "商品分类") + private String cateName; + + @ApiModelProperty(value = "价格") + private String price; + + @ApiModelProperty(value = "库存") + private String stock; + + @ApiModelProperty(value = "销量") + private String sales; + + @ApiModelProperty(value = "浏览量") + private String browse; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ProgramTempKeywordsVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ProgramTempKeywordsVo.java new file mode 100644 index 0000000..3de365c --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ProgramTempKeywordsVo.java @@ -0,0 +1,46 @@ +package com.zbkj.common.vo; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 小程序关键词 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="ProgramTempKeywordsVo对象", description="小程序关键词") +public class ProgramTempKeywordsVo { + @ApiModelProperty(value = "关键词 id,选用模板时需要") + private Integer kid; + + @ApiModelProperty(value = "关键词内容") + private String name; + + @ApiModelProperty(value = "关键词内容对应的示例") + private String example; + + @ApiModelProperty(value = "参数类型") + private String rule; + + @ApiModelProperty(value = "代码里组装数据的时候,需要用到这个key") + @JsonIgnore + private String key; + + @ApiModelProperty(value = "代码里组装数据的时候,需要用到这个key") + @JsonIgnore + private String sendKey; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ProgramTemplateMessageVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ProgramTemplateMessageVo.java new file mode 100644 index 0000000..288e91c --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ProgramTemplateMessageVo.java @@ -0,0 +1,45 @@ +package com.zbkj.common.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.util.HashMap; + +/** + * 微信模板发送类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="SendTemplateMessageVo对象", description="微信模板发送类") +public class ProgramTemplateMessageVo { + @ApiModelProperty(value = "OPENID", required = true) + private String touser; + + @ApiModelProperty(value = "模板ID", required = true) + private String template_id; + + @ApiModelProperty(value = "模板跳转链接小程序地址") + private String page; + + @ApiModelProperty(value = "发送内容", required = true) + private HashMap data; + + @ApiModelProperty(value = "跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版") + private String miniprogram_state = "formal"; + + @ApiModelProperty(value = "进入小程序查看”的语言类型,支持zh_CN(简体中文)、en_US(英文)、zh_HK(繁体中文)、zh_TW(繁体中文),默认为zh_CN\n") + private String lang = "zh_CN"; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/PublicMyTemplateVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/PublicMyTemplateVo.java new file mode 100644 index 0000000..0b5b4e7 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/PublicMyTemplateVo.java @@ -0,0 +1,44 @@ +package com.zbkj.common.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 微信公众号私有模板消息Vo对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="PublicMyTemplateVo对象", description="微信公众号私有模板消息Vo对象") +public class PublicMyTemplateVo { + + @ApiModelProperty(value = "模板ID") + private String template_id; + + @ApiModelProperty(value = "模板ID") + private String title; + + @ApiModelProperty(value = "一级行业") + private String primary_industry; + + @ApiModelProperty(value = "二级行业") + private String deputy_industry; + + @ApiModelProperty(value = "模板内容") + private String content; + + @ApiModelProperty(value = "模板示例") + private String example; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/RegisterCheckAccessInfoItemVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/RegisterCheckAccessInfoItemVo.java new file mode 100644 index 0000000..e3bf007 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/RegisterCheckAccessInfoItemVo.java @@ -0,0 +1,23 @@ +package com.zbkj.common.vo; + +import lombok.Data; + +/** + * + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class RegisterCheckAccessInfoItemVo { + // 上传商品并审核成功 + private Integer spu_audit_success; + // 发起第一笔订单并支付成功 + private Integer pay_order_success; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/RegisterCheckDataItemnVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/RegisterCheckDataItemnVo.java new file mode 100644 index 0000000..85a3bbc --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/RegisterCheckDataItemnVo.java @@ -0,0 +1,22 @@ +package com.zbkj.common.vo; + +import lombok.Data; + +/** + * RegisterCheckAccessInfoItemVo 获取接入状态Response + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class RegisterCheckDataItemnVo { + // 审核状态, 2: 已接入, 3: 封禁中 + private Integer status; + private RegisterCheckAccessInfoItemVo access_info; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/RegisterCheckResponseVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/RegisterCheckResponseVo.java new file mode 100644 index 0000000..c0664eb --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/RegisterCheckResponseVo.java @@ -0,0 +1,21 @@ +package com.zbkj.common.vo; + +import lombok.Data; + +/** + * 获取接入状态 response + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class RegisterCheckResponseVo extends BaseResultResponseVo { + + private RegisterCheckDataItemnVo data; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/RoutineMyTemplateVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/RoutineMyTemplateVo.java new file mode 100644 index 0000000..14781f4 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/RoutineMyTemplateVo.java @@ -0,0 +1,41 @@ +package com.zbkj.common.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 微信小程序订阅消息Vo对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="RoutineMyTemplateVo对象", description="微信小程序订阅消息Vo对象") +public class RoutineMyTemplateVo { + + @ApiModelProperty(value = "模板ID") + private String priTmplId; + + @ApiModelProperty(value = "模板标题") + private String title; + + @ApiModelProperty(value = "模板内容") + private String content; + + @ApiModelProperty(value = "模板示例") + private String example; + + @ApiModelProperty(value = "类型") + private String type; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/RoutineTemplateKeyVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/RoutineTemplateKeyVo.java new file mode 100644 index 0000000..539a2bb --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/RoutineTemplateKeyVo.java @@ -0,0 +1,39 @@ +package com.zbkj.common.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 微信小程序订阅消息Vo对象(从微信获取的) + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="RoutineTemplateKeyVo对象", description="微信小程序订阅消息KeyVo对象(从微信获取的)") +public class RoutineTemplateKeyVo { + + @ApiModelProperty(value = "关键词 id,选用模板时需要") + private Integer kid; + + @ApiModelProperty(value = "关键词内容") + private String name; + + @ApiModelProperty(value = "关键词内容对应的示例") + private String example; + + @ApiModelProperty(value = "参数类型") + private String rule; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SecondCatVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SecondCatVo.java new file mode 100644 index 0000000..aa38988 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SecondCatVo.java @@ -0,0 +1,31 @@ +package com.zbkj.common.vo; + +import lombok.Data; + +import java.util.List; + +/** + * 第二级类目 + * + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class SecondCatVo { + + /** 二级类目ID */ + private Integer secondCatId; + + /** 二级类目名称 */ + private String secondCatName; + + /** 三级类目数组 */ + private List thirdCatList; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SendProgramTemplateMessageItemVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SendProgramTemplateMessageItemVo.java new file mode 100644 index 0000000..4c2f52d --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SendProgramTemplateMessageItemVo.java @@ -0,0 +1,33 @@ +package com.zbkj.common.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 微信模板发送数据类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="SendTemplateMessageItemVo对象", description="微信模板发送数据类") +public class SendProgramTemplateMessageItemVo { + public SendProgramTemplateMessageItemVo() {} + public SendProgramTemplateMessageItemVo(String value) { + this.value = value; + } + + @ApiModelProperty(value = "显示的文字内容", required = true) + private String value; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SendSmsVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SendSmsVo.java new file mode 100644 index 0000000..375a532 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SendSmsVo.java @@ -0,0 +1,33 @@ +package com.zbkj.common.vo; + +import lombok.Data; + +/** + * 短信发送api第三方参数实体类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class SendSmsVo { + private String uid; + private String token; + + // 待发送短信手机号 + private String mobile; + + // 模版id + private Integer template; + + // 发送参数 + private String param; + + private String content; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SendTemplateMessageItemVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SendTemplateMessageItemVo.java new file mode 100644 index 0000000..136a285 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SendTemplateMessageItemVo.java @@ -0,0 +1,38 @@ +package com.zbkj.common.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.util.HashMap; + +/** + * 微信模板发送数据类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="SendTemplateMessageItemVo对象", description="微信模板发送数据类") +public class SendTemplateMessageItemVo { + public SendTemplateMessageItemVo() {} + public SendTemplateMessageItemVo(String value) { + this.value = value; + } + + @ApiModelProperty(value = "显示的文字内容", required = true) + private String value; + + @ApiModelProperty(value = "颜色") + private String color = "#173177"; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopAftersaleAddVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopAftersaleAddVo.java new file mode 100644 index 0000000..985debb --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopAftersaleAddVo.java @@ -0,0 +1,55 @@ +package com.zbkj.common.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; + +import java.util.List; + +/** + * 创建售后Vo对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class ShopAftersaleAddVo { + + /** 商家自定义订单ID */ + @TableField(value = "out_order_id") + private String outOrderId; + + /** 商家自定义售后ID,与aftersale_id二选一 */ + @TableField(value = "out_aftersale_id") + private String outAftersaleId; + + /** 商家小程序该售后单的页面path,不存在则使用订单path */ + private String path; + + /** 用户的openid */ + private String openid; + + /** 售后类型,1:退款,2:退款退货,3:换货 */ + private Integer type; + + /** 发起申请时间,yyyy-MM-dd HH:mm:ss */ + @TableField(value = "create_time") + private String createTime; + + /** 0:未受理,1:用户取消,2:商家受理中,3:商家逾期未处理,4:商家拒绝退款,5:商家拒绝退货退款,6:待买家退货,7:退货退款关闭,8:待商家收货,11:商家退款中,12:商家逾期未退款,13:退款完成,14:退货退款完成 */ + private Integer status; + + /** 0:订单可继续售后, 1:订单无继续售后 */ + @TableField(value = "finish_all_aftersale") + private Integer finishAllAftersale; + + /** 退货相关商品列表 */ + @TableField(value = "product_infos") + private List productInfos; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopAftersaleUpdateVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopAftersaleUpdateVo.java new file mode 100644 index 0000000..13c481a --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopAftersaleUpdateVo.java @@ -0,0 +1,41 @@ +package com.zbkj.common.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; + +import java.util.List; + +/** + * 创建售后Vo对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class ShopAftersaleUpdateVo { + + /** 商家自定义订单ID */ + @TableField(value = "out_order_id") + private String outOrderId; + + /** 商家自定义售后ID */ + @TableField(value = "out_aftersale_id") + private String outAftersaleId; + + /** 用户的openid */ + private String openid; + + /** 0:未受理,1:用户取消,2:商家受理中,3:商家逾期未处理,4:商家拒绝退款,5:商家拒绝退货退款,6:待买家退货,7:退货退款关闭,8:待商家收货,11:商家退款中,12:商家逾期未退款,13:退款完成,14:退货退款完成 */ + private Integer status; + + /** 0:售后未结束, 1:售后结束且订单状态流转 */ + @TableField(value = "finish_all_aftersale") + private Integer finishAllAftersale; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopAftersaleVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopAftersaleVo.java new file mode 100644 index 0000000..00f9c22 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopAftersaleVo.java @@ -0,0 +1,55 @@ +package com.zbkj.common.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; + +import java.util.List; + +/** + * 创建售后Vo对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class ShopAftersaleVo { + + /** 发起售后的订单ID */ + @TableField(value = "order_id") + private Integer order_id; + + /** 商家自定义订单ID */ + @TableField(value = "out_order_id") + private String outOrderId; + + /** 商家自定义售后ID,与aftersale_id二选一 */ + @TableField(value = "out_aftersale_id") + private String outAftersaleId; + + /** 商家小程序该售后单的页面path,不存在则使用订单path */ + private String path; + + /** 用户的openid */ + private String openid; + + /** 售后类型,1:退款,2:退款退货,3:换货 */ + private Integer type; + + /** 发起申请时间,yyyy-MM-dd HH:mm:ss */ + @TableField(value = "create_time") + private String createTime; + + /** 0:未受理,1:用户取消,2:商家受理中,3:商家逾期未处理,4:商家拒绝退款,5:商家拒绝退货退款,6:待买家退货,7:退货退款关闭,8:待商家收货,11:商家退款中,12:商家逾期未退款,13:退款完成,14:退货退款完成 */ + private String status; + + /** 退货相关商品列表 */ + @TableField(value = "product_infos") + private List product_infos; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopAuditBrandRequestItemDataVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopAuditBrandRequestItemDataVo.java new file mode 100644 index 0000000..939aac5 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopAuditBrandRequestItemDataVo.java @@ -0,0 +1,105 @@ +package com.zbkj.common.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * 上传品牌信息 参数 Request itemData + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class ShopAuditBrandRequestItemDataVo { + /** + * 认证审核类型 RegisterType 枚举值 描述 + * 1 国内品牌申请-R标 + * 2 国内品牌申请-TM标 + * 3 海外品牌申请-R标 + * 4 海外品牌申请-TM标 + */ + @NotNull(message = "认证审核类型不能为空") + @TableField(value = "brand_audit_type") + private Integer brandAuditType; + + /** 商标分类:商标共有45个分类,请按商标实际分类上传 例:“1” */ + @NotBlank(message = "商标实际分类不能为空") + @TableField(value = "trademark_type") + private String trademarkType; + + /** + * 品牌经营类型 + * 枚举值 描述 + * 1 自有品牌 + * 2 代理品牌 + * 3 无品牌 + */ + @NotNull(message = "品牌经营类型不能为空") + @TableField(value = "brand_management_type") + private Integer brandManagementType; + + /** + * 商品产地是否进口 + * 枚举值 描述 + * 1 是 + * 2 否 + */ + @NotNull(message = "商品产地是否进口不能为空") + @TableField(value = "commodity_origin_type") + private Integer commodityOriginType; + + /** 商标/品牌词 */ + @NotBlank(message = "商标/品牌词不能为空") + @TableField(value = "brand_wording") + private String brandWording; + + /** 销售授权书(如商持人为自然人,还需提供有其签名的身份证正反面扫描件),图片url/media_id */ + @TableField(value = "sale_authorization") + private List saleAuthorization; + + /** 商标注册证书,图片url/media_id */ + @TableField(value = "trademark_registration_certificate") + private List trademarkRegistrationCertificate; + + /** 商标变更证明,图片url/media_id */ + @TableField(value = "trademark_change_certificate") + private List trademarkChangeCertificate; + + /** 商标注册人姓名 */ + @TableField(value = "trademark_registrant") + private String trademarkRegistrant; + + /** 商标注册号/申请号 */ + @TableField(value = "trademark_registrant_nu") + private String trademarkRegistrantNu; + + /** 商标有效期,yyyy-MM-dd HH:mm:ss */ + @TableField(value = "trademark_authorization_period") + private String trademarkAuthorizationPeriod; + + /** 商标注册申请受理通知书,图片url/media_id */ + @TableField(value = "trademark_registration_application") + private List trademarkRegistrationApplication; + + /** 商标申请人姓名 */ + @TableField(value = "trademark_applicant") + private String trademarkApplicant; + + /** 商标申请时间, yyyy-MM-dd HH:mm:ss */ + @TableField(value = "trademark_application_time") + private String trademarkApplicationTime; + + /** 中华人民共和国海关进口货物报关单,图片url/media_id */ + @TableField(value = "imported_goods_form") + private List importedGoodsForm; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopAuditBrandRequestItemVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopAuditBrandRequestItemVo.java new file mode 100644 index 0000000..48c9dc8 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopAuditBrandRequestItemVo.java @@ -0,0 +1,30 @@ +package com.zbkj.common.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * 上传品牌信息 request item + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class ShopAuditBrandRequestItemVo { + + /** 营业执照或组织机构代码证,图片url/media_id */ + @NotBlank(message = "营业执照或组织机构代码证不能为空") + private String license; + + /** 品牌信息 */ + @TableField(value = "brand_info") + private ShopAuditBrandRequestItemDataVo brandInfo; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopAuditBrandRequestVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopAuditBrandRequestVo.java new file mode 100644 index 0000000..7813e77 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopAuditBrandRequestVo.java @@ -0,0 +1,24 @@ +package com.zbkj.common.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; + +/** + * 上传品牌信息 request + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class ShopAuditBrandRequestVo { + + /** 上传品牌信息参数对象 */ + @TableField(value = "audit_req") + private ShopAuditBrandRequestItemVo auditReq; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopAuditBrandResponseVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopAuditBrandResponseVo.java new file mode 100644 index 0000000..8f0c500 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopAuditBrandResponseVo.java @@ -0,0 +1,23 @@ +package com.zbkj.common.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; + +/** + * + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class ShopAuditBrandResponseVo extends BaseResultResponseVo { + // 审核单id + @TableField(value = "audit_id") + private String auditId; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopAuditCategoryRequestItemDataVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopAuditCategoryRequestItemDataVo.java new file mode 100644 index 0000000..4e56a81 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopAuditCategoryRequestItemDataVo.java @@ -0,0 +1,23 @@ +package com.zbkj.common.vo; + +import lombok.Data; + +/** + * 上传类目资质 itemData + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class ShopAuditCategoryRequestItemDataVo { + private Integer level1; // 一级类目 + private Integer level2; // 二级类目 + private Integer level3; // 三级类目 + private String certificate; // 资质材料 +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopAuditCategoryRequestItemVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopAuditCategoryRequestItemVo.java new file mode 100644 index 0000000..690397d --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopAuditCategoryRequestItemVo.java @@ -0,0 +1,23 @@ +package com.zbkj.common.vo; + +import lombok.Data; + +/** + * 上传类目资质Item + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class ShopAuditCategoryRequestItemVo { + // 营业执照或组织机构代码证,图片url + private String license; + // Response ItemData + private ShopAuditCategoryRequestItemDataVo category_info; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopAuditCategoryRequestVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopAuditCategoryRequestVo.java new file mode 100644 index 0000000..3529144 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopAuditCategoryRequestVo.java @@ -0,0 +1,20 @@ +package com.zbkj.common.vo; + +import lombok.Data; + +/** + * 上传类目资质Request + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class ShopAuditCategoryRequestVo { + private ShopAuditCategoryRequestItemVo audit_req; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopAuditCategoryResponseVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopAuditCategoryResponseVo.java new file mode 100644 index 0000000..d582a39 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopAuditCategoryResponseVo.java @@ -0,0 +1,20 @@ +package com.zbkj.common.vo; + +import lombok.Data; + +/** + * 上传类目资质 response + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class ShopAuditCategoryResponseVo extends BaseResultResponseVo { + private String audit_id; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopAuditGetMinCerBrandInfoItem.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopAuditGetMinCerBrandInfoItem.java new file mode 100644 index 0000000..58c8f18 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopAuditGetMinCerBrandInfoItem.java @@ -0,0 +1,19 @@ +package com.zbkj.common.vo; + +/** + * 获取小程序提交过的入驻资质信息 Item + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class ShopAuditGetMinCerBrandInfoItem { + private Integer errcode; + private ShopAuditGetMinCerBrandInfoItemDataVo brand_info; + // 这个结果需要已返回数据为准,文档中的有出入 +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopAuditGetMinCerBrandInfoItemDataVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopAuditGetMinCerBrandInfoItemDataVo.java new file mode 100644 index 0000000..705ec81 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopAuditGetMinCerBrandInfoItemDataVo.java @@ -0,0 +1,25 @@ +package com.zbkj.common.vo; + +import java.util.List; + +/** + * 获取小程序提交过的入驻资质信息 ItemData + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class ShopAuditGetMinCerBrandInfoItemDataVo { + // 品牌名 + private String brand_wording; + // 商标注册证 + private List sale_authorization; + // 商标授权书 + private List trademark_registration_certificate; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopAuditResultResponseVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopAuditResultResponseVo.java new file mode 100644 index 0000000..68c4c22 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopAuditResultResponseVo.java @@ -0,0 +1,28 @@ +package com.zbkj.common.vo; + +import lombok.Data; + +/** + * 查询审核结果 Response + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class ShopAuditResultResponseVo extends BaseResultResponseVo { + + private ItemData data; + + @Data + class ItemData{ + private Integer status; + private Integer brand_id; + private String reject_reason; + } +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopBrandVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopBrandVo.java new file mode 100644 index 0000000..c5b479c --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopBrandVo.java @@ -0,0 +1,29 @@ +package com.zbkj.common.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; + +/** + * + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class ShopBrandVo { + + /** 品牌ID */ + @TableField(value = "brand_id") + private Integer brandId; + + /** 品牌名称 */ + @TableField(value = "brand_wording") + private String brandWording; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopCatDetailVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopCatDetailVo.java new file mode 100644 index 0000000..ac9eeef --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopCatDetailVo.java @@ -0,0 +1,59 @@ +package com.zbkj.common.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; + +/** + * 商品类型详情Vo对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class ShopCatDetailVo { + + /** 类目ID */ + @TableField(value = "third_cat_id") + private Integer thirdCatId; + + /** 类目名称 */ + @TableField(value = "third_cat_name") + private String thirdCatName; + + /** 类目资质 */ + private String qualification; + + /** 类目资质类型,0:不需要,1:必填,2:选填 */ + @TableField(value = "qualification_type") + private Integer qualificationType; + + /** 商品资质 */ + @TableField(value = "product_qualification") + private String productQualification; + + /** 商品资质类型,0:不需要,1:必填,2:选填 */ + @TableField(value = "product_qualification_type") + private Integer productQualificationType; + + /** 二级类目ID */ + @TableField(value = "second_cat_id") + private Integer secondCatId; + + /** 二级类目名称 */ + @TableField(value = "second_cat_name") + private String secondCatName; + + /** 一级类目ID */ + @TableField(value = "first_cat_id") + private Integer firstCatId; + + /** 一级类目名称 */ + @TableField(value = "first_cat_name") + private String firstCatName; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopCatVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopCatVo.java new file mode 100644 index 0000000..e633816 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopCatVo.java @@ -0,0 +1,34 @@ +package com.zbkj.common.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; + +import java.util.List; + +/** + * 商品类型Vo对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class ShopCatVo { + + /** 错误码 */ + @TableField(value = "errcode") + private Integer errCode; + + /** 错误信息 */ + @TableField(value = "errmsg") + private Integer errMsg; + + /** 类目列表 */ + @TableField(value = "third_cat_list") + private List thirdCatList; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopOrderAddResultVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopOrderAddResultVo.java new file mode 100644 index 0000000..c41a12a --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopOrderAddResultVo.java @@ -0,0 +1,39 @@ +package com.zbkj.common.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; + +/** + * 生成订单Vo对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class ShopOrderAddResultVo { + + /** 交易组件平台订单ID */ + @TableField(value = "order_id") + private Long orderId; + + /** 交易组件平台订单ID */ + @TableField(value = "out_order_id") + private String outOrderId; + + /** 拉起收银台的ticket */ + private String ticket; + + /** ticket有效截止时间 */ + @TableField(value = "ticket_expire_time") + private String ticketExpireTime; + + /** 订单最终价格(单位:分) */ + @TableField(value = "final_price") + private Long finalPrice; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopOrderAddVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopOrderAddVo.java new file mode 100644 index 0000000..9e04abe --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopOrderAddVo.java @@ -0,0 +1,52 @@ +package com.zbkj.common.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; + +/** + * 生成订单Vo对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class ShopOrderAddVo { + + /** 创建时间 */ + @TableField(value = "create_time") + private String createTime; + + /** 商家自定义订单ID */ + @TableField(value = "out_order_id") + private String outOrderId; + + /** 用户的openid */ + private String openid; + + /** 商家小程序该订单的页面path,用于微信侧订单中心跳转 */ + private String path; + + /** 下单时小程序的场景值,可通getLaunchOptionsSync或onLaunch/onShow拿到 */ + private Integer scene; + + /** 订单详情 */ + @TableField(value = "order_detail") + private ShopOrderDetailAddVo orderDetail; + + /** 交付详情 */ + @TableField(value = "delivery_detail") + private ShopOrderDeliveryDetailAddVo deliveryDetail; + + /** 地址详情 */ + @TableField(value = "address_info") + private ShopOrderAddressInfoAddVo addressInfo; + + /** 用户id */ + private Integer outUserId; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopOrderAddressInfoAddVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopOrderAddressInfoAddVo.java new file mode 100644 index 0000000..dfc983f --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopOrderAddressInfoAddVo.java @@ -0,0 +1,44 @@ +package com.zbkj.common.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; + +/** + * 生成订单Vo对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class ShopOrderAddressInfoAddVo { + + /** 收件人姓名 */ + @TableField(value = "receiver_name") + private String receiverName; + + /** 详细收货地址信息 */ + @TableField(value = "detailed_address") + private String detailedAddress; + + /** 收件人手机号码 */ + @TableField(value = "tel_number") + private String telNumber; + + /** 国家 */ + private String country; + + /** 省份 */ + private String province; + + /** 城市 */ + private String city; + + /** 乡镇 */ + private String town; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopOrderCommonVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopOrderCommonVo.java new file mode 100644 index 0000000..589cec1 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopOrderCommonVo.java @@ -0,0 +1,31 @@ +package com.zbkj.common.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; + +/** + * 自定义交易组件订单公共Vo + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class ShopOrderCommonVo { + + /** 微信侧订单id (订单id二选一) */ + @TableField(value = "order_id") + private Integer orderId; + + /** 商家自定义订单ID */ + @TableField(value = "out_order_id") + private String outOrderId; + + /** 用户的openid */ + private String openid; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopOrderDeliveryDetailAddVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopOrderDeliveryDetailAddVo.java new file mode 100644 index 0000000..ba8963b --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopOrderDeliveryDetailAddVo.java @@ -0,0 +1,24 @@ +package com.zbkj.common.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; + +/** + * 生成订单Vo对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class ShopOrderDeliveryDetailAddVo { + + /** 1: 正常快递, 2: 无需快递, 3: 线下配送, 4: 用户自提 ( 默认1) */ + @TableField(value = "delivery_type") + private Integer deliveryType = 1; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopOrderDeliveryDetailVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopOrderDeliveryDetailVo.java new file mode 100644 index 0000000..c856879 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopOrderDeliveryDetailVo.java @@ -0,0 +1,34 @@ +package com.zbkj.common.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; + +import java.util.List; + +/** + * 生成订单Vo对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class ShopOrderDeliveryDetailVo { + + /** 1: 正常快递, 2: 无需快递, 3: 线下配送, 4: 用户自提 */ + @TableField(value = "delivery_type") + private Integer delivery_type; + + /** 是否发货完成 */ + @TableField(value = "finish_all_delivery") + private Integer finishAllDelivery; + + /** 交付数组 */ + @TableField(value = "delivery_list") + private List deliveryList; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopOrderDeliveryInfoVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopOrderDeliveryInfoVo.java new file mode 100644 index 0000000..e428516 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopOrderDeliveryInfoVo.java @@ -0,0 +1,31 @@ +package com.zbkj.common.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; +import org.apache.poi.ss.formula.functions.T; + +import java.util.List; + +/** + * 生成订单Vo对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class ShopOrderDeliveryInfoVo { + + /** 快递公司ID,通过获取快递公司列表获取 */ + @TableField(value = "delivery_id") + private Integer deliveryId; + + /** 快递单号 */ + @TableField(value = "waybill_id") + private Integer waybillId; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopOrderDetailAddVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopOrderDetailAddVo.java new file mode 100644 index 0000000..7103cda --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopOrderDetailAddVo.java @@ -0,0 +1,34 @@ +package com.zbkj.common.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; + +import java.util.List; + +/** + * 生成订单Vo对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class ShopOrderDetailAddVo { + + /** 商品详情数组 */ + @TableField(value = "product_infos") + private List productInfos; + + /** 支付详情数组 */ + @TableField(value = "pay_info") + private ShopOrderPayInfoAddVo payInfo; + + /** 价格详情数组 */ + @TableField(value = "price_info") + private ShopOrderPriceInfoVo priceInfo; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopOrderDetailVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopOrderDetailVo.java new file mode 100644 index 0000000..b361789 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopOrderDetailVo.java @@ -0,0 +1,42 @@ +package com.zbkj.common.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; + +import java.util.List; + +/** + * 生成订单Vo对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class ShopOrderDetailVo { + + /** 商品详情数组 */ + @TableField(value = "product_infos") + private List productInfos; + + /** 支付详情数组,payorder时action_type!=6时存在 */ + @TableField(value = "pay_info") + private ShopOrderPayInfoVo payInfo; + + /** 多用支付详情数组,payorder时action_type=6时存在 */ + @TableField(value = "multi_pay_info") + private ShopOrderPayInfoVo multiPayInfo; + + /** 价格详情数组 */ + @TableField(value = "price_info") + private ShopOrderPriceInfoVo priceInfo; + + /** 价格详情数组,必须调过发货接口才会存在这个字段 */ + @TableField(value = "delivery_detail") + private ShopOrderDeliveryDetailAddVo deliveryDetail; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopOrderPayInfoAddVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopOrderPayInfoAddVo.java new file mode 100644 index 0000000..9901ce0 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopOrderPayInfoAddVo.java @@ -0,0 +1,36 @@ +package com.zbkj.common.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; + +/** + * 生成订单Vo对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class ShopOrderPayInfoAddVo { + + /** 支付方式(目前只有"微信支付") */ + @TableField(value = "pay_method") + private String payMethod; + + /** 支付方式,0,微信支付,1: 货到付款,99: 其他(默认0) */ + @TableField(value = "pay_method_type") + private Integer payMethodType = 0; + + /** 预支付ID */ + @TableField(value = "prepay_id") + private String prepayId; + + /** 预付款时间(拿到prepay_id的时间) */ + @TableField(value = "prepay_time") + private String prepayTime; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopOrderPayInfoVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopOrderPayInfoVo.java new file mode 100644 index 0000000..8dc1db4 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopOrderPayInfoVo.java @@ -0,0 +1,40 @@ +package com.zbkj.common.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; + +/** + * 生成订单Vo对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class ShopOrderPayInfoVo { + + /** 支付方式(目前只有"微信支付") */ + @TableField(value = "pay_method") + private String payMethod; + + /** 预支付ID */ + @TableField(value = "prepay_id") + private String prepayId; + + /** 预付款时间(拿到prepay_id的时间) */ + @TableField(value = "prepay_time") + private Integer prepayTime; + + /** 支付ID */ + @TableField(value = "transaction_id") + private String transactionId; + + /** 付款时间(拿到transaction_id的时间) */ + @TableField(value = "pay_time") + private Integer payTime; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopOrderPayVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopOrderPayVo.java new file mode 100644 index 0000000..5c65170 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopOrderPayVo.java @@ -0,0 +1,47 @@ +package com.zbkj.common.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; + +/** + * 同步订单支付结果Vo对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class ShopOrderPayVo { + + /** 订单ID */ + @TableField(value = "order_id") + private Integer orderId; + + /** 商家自定义订单ID,与 order_id 二选一 */ + @TableField(value = "out_order_id") + private String outOrderId; + + /** 用户的openid */ + private String openid; + + /** 类型,默认1:支付成功,2:支付失败,3:用户取消,4:超时未支付;5:商家取消;10:其他原因取消 */ + @TableField(value = "action_type") + private Integer actionType; + + /** 其他具体原因 */ + @TableField(value = "action_remark") + private String actionRemark; + + /** 支付订单号,action_type=1时必填 */ + @TableField(value = "transaction_id") + private String transactionId; + + /** 支付完成时间,action_type=1时必填 */ + @TableField(value = "pay_time") + private String payTime; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopOrderPriceInfoVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopOrderPriceInfoVo.java new file mode 100644 index 0000000..5eac87d --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopOrderPriceInfoVo.java @@ -0,0 +1,39 @@ +package com.zbkj.common.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; + +/** + * 生成订单Vo对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class ShopOrderPriceInfoVo { + + /** 该订单最终的金额(单位:分) */ + @TableField(value = "order_price") + private Long orderPrice; + + /** 运费(单位:分) */ + private Long freight; + + /** 优惠金额(单位:分) */ + @TableField(value = "discounted_price") + private Long discountedPrice; + + /** 附加金额(单位:分) */ + @TableField(value = "additional_price") + private Long additionalPrice; + + /** 附加金额备注 */ + @TableField(value = "additional_remarks") + private String additional_remarks; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopOrderProductInfoAddVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopOrderProductInfoAddVo.java new file mode 100644 index 0000000..ae3e92c --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopOrderProductInfoAddVo.java @@ -0,0 +1,50 @@ +package com.zbkj.common.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.models.auth.In; +import lombok.Data; +import org.apache.poi.ss.formula.functions.T; + +import java.util.List; + +/** + * 生成订单Vo对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class ShopOrderProductInfoAddVo { + + /** 商家自定义商品ID */ + @TableField(value = "out_product_id") + private String outProductId; + + /** 商家自定义商品skuID,可填空字符串(如果这个product_id下没有sku) */ + @TableField(value = "out_sku_id") + private String outSkuId; + + /** 购买的数量 */ + @TableField(value = "product_cnt") + private Integer productCnt; + + /** 生成订单时商品的售卖价(单位:分),可以跟上传商品接口的价格不一致 */ + @TableField(value = "sale_price") + private Long salePrice; + + /** 生成订单时商品的头图 */ + @TableField(value = "head_img") + private String headImg; + + /** 生成订单时商品的标题 */ + private String title; + + /** 绑定的小程序商品路径 */ + private String path; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopOrderProductInfoVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopOrderProductInfoVo.java new file mode 100644 index 0000000..ce59ded --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopOrderProductInfoVo.java @@ -0,0 +1,44 @@ +package com.zbkj.common.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; + +/** + * 生成订单Vo对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class ShopOrderProductInfoVo { + + /** 交易组件平台内部商品ID */ + @TableField(value = "product_id") + private String productId; + + /** 商家自定义商品ID */ + @TableField(value = "out_product_id") + private String outProductId; + + /** 交易组件平台内部skuID,可填0(如果这个product_id下没有sku) */ + @TableField(value = "sku_id") + private String skuId; + + /** 商家自定义商品skuID,可填空字符串(如果这个product_id下没有sku) */ + @TableField(value = "out_sku_id") + private String outSkuId; + + /** 购买的数量 */ + @TableField(value = "product_cnt") + private Integer productCnt; + + /** 生成订单时商品的售卖价(单位:分),可以跟上传商品接口的价格不一致 */ + @TableField(value = "sale_price") + private Long salePrice; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopOrderVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopOrderVo.java new file mode 100644 index 0000000..ee2453f --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopOrderVo.java @@ -0,0 +1,38 @@ +package com.zbkj.common.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; + +/** + * 生成订单Vo对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class ShopOrderVo { + + /** 交易组件平台订单ID */ + @TableField(value = "order_id") + private Integer orderId; + + /** 商家自定义订单ID */ + @TableField(value = "out_order_id") + private String outOrderId; + + /** 订单状态:10-待付款,11-收银台支付完成(自动流转,对商家来说和10同等对待即可),20-待发货,30-待收货,100-完成,200-全部商品售后之后,订单取消,250-用户主动取消/待付款超时取消/商家取消 */ + private Integer status; + + /** 商家小程序该订单的页面path,用于微信侧订单中心跳转 */ + private String path; + + /** 订单详情 */ + @TableField(value = "order_detail") + private ShopOrderDetailAddVo orderDetail; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopSpuAddResponseVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopSpuAddResponseVo.java new file mode 100644 index 0000000..b811877 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopSpuAddResponseVo.java @@ -0,0 +1,41 @@ +package com.zbkj.common.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; + +import java.util.List; + +/** + * 自定义交易组件商品添加响应Vo + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class ShopSpuAddResponseVo { + + /** 交易组件平台内部商品ID */ + @TableField(value = "product_id") + private Integer productId; + + /** 商家自定义商品ID */ + @TableField(value = "out_product_id") + private String outProductId; + + /** 创建时间 */ + @TableField(value = "create_time") + private String createTime; + + /** 更新时间 */ + @TableField(value = "update_time") + private String updateTime; + + /** sku数组 */ + private List skus; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopSpuAddSkuResponseVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopSpuAddSkuResponseVo.java new file mode 100644 index 0000000..e6c4c12 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopSpuAddSkuResponseVo.java @@ -0,0 +1,28 @@ +package com.zbkj.common.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; + +/** + * 自定义交易组件商品添加响应Vo + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class ShopSpuAddSkuResponseVo { + + /** 交易组件平台自定义skuID */ + @TableField(value = "sku_id") + private String skuId; + + /** 商家自定义skuID */ + @TableField(value = "out_sku_id") + private String outSkuId; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopSpuAddVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopSpuAddVo.java new file mode 100644 index 0000000..81685dc --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopSpuAddVo.java @@ -0,0 +1,63 @@ +package com.zbkj.common.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; + +import java.util.List; + +/** + * 自定义交易组件商品Vo + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class ShopSpuAddVo { + + /** 商家自定义商品ID(修改时与product_id二选一) */ + @TableField(value = "out_product_id") + private String outProductId; + + /** 交易组件平台内部商品ID */ + @TableField(value = "product_id") + private Integer productId; + + /** 标题 */ + private String title; + + /** 绑定的小程序商品路径 */ + private String path; + + /** 类主图,多张,列表 */ + @TableField(value = "head_img") + private List headImg; + + /** 商品资质图片 */ + @TableField(value = "qualification_pics") + private List qualificationPics; + + /** 商品详情 */ + @TableField(value = "desc_info") + private ShopSpuInfoVo descInfo; + + /** 第三级类目ID */ + @TableField(value = "third_cat_id") + private Integer thirdCatId; + + /** 品牌id */ + @TableField(value = "brand_id") + private Integer brandId; + + /** 预留字段,用于版本控制 */ + @TableField(value = "info_version") + private String infoVersion; + + /** sku数组 */ + private List skus; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopSpuAuditVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopSpuAuditVo.java new file mode 100644 index 0000000..3ecaa23 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopSpuAuditVo.java @@ -0,0 +1,37 @@ +package com.zbkj.common.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; + +/** + * 商品审核信息Vo对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class ShopSpuAuditVo { + + /** 上一次提交时间, yyyy-MM-dd HH:mm:ss */ + @TableField(value = "submit_time") + private String submitTime; + + /** 上一次审核时间, yyyy-MM-dd HH:mm:ss */ + @TableField(value = "audit_time") + private String auditTime; + + /** 拒绝理由,只有edit_status为3时出现 */ + @TableField(value = "reject_reason") + private String rejectReason; + + /** 审核单id */ + @TableField(value = "audit_id") + private String auditId; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopSpuCommonVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopSpuCommonVo.java new file mode 100644 index 0000000..ac50b30 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopSpuCommonVo.java @@ -0,0 +1,32 @@ +package com.zbkj.common.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; + +/** + * 自定义交易组件商品公共Vo + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class ShopSpuCommonVo { + + /** 交易组件平台内部商品ID */ + @TableField(value = "product_id") + private Integer productId; + + /** 商家自定义商品ID */ + @TableField(value = "out_product_id") + private String outProductId; + + /** 默认0:获取线上数据, 1:获取草稿数据 */ + @TableField(value = "need_edit_spu") + private Integer needEditSpu = 0; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopSpuInfoVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopSpuInfoVo.java new file mode 100644 index 0000000..b85452e --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopSpuInfoVo.java @@ -0,0 +1,28 @@ +package com.zbkj.common.vo; + +import lombok.Data; + +import java.util.List; + +/** + * 自定义交易组件商品详情Vo + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class ShopSpuInfoVo { + + /** 商品详情图文 */ + private String desc; + + /** 商品详情图片 */ + private List imgs; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopSpuListRequestVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopSpuListRequestVo.java new file mode 100644 index 0000000..4468dd0 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopSpuListRequestVo.java @@ -0,0 +1,51 @@ +package com.zbkj.common.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; + +/** + * 自定义交易组件商品列表请求Vo + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class ShopSpuListRequestVo { + + /** 商品线上状态:0-初始值,5-上架,11-自主下架,13-违规下架/风控系统下架 */ + // 选填,不填时获取所有状态商品 + private Integer status; + + /** 开始创建时间,格式yyyy-MM-dd HH:mm:ss */ + @TableField(value = "start_create_time") + private String startCreateTime; + + /** 结束创建时间,格式yyyy-MM-dd HH:mm:ss */ + @TableField(value = "end_create_time") + private String endCreateTime; + + /** 开始更新时间,格式yyyy-MM-dd HH:mm:ss */ + @TableField(value = "start_update_time") + private String startUpdateTime; + + /** 结束更新时间,格式yyyy-MM-dd HH:mm:ss */ + @TableField(value = "end_update_time") + private String endUpdateTime; + + /** 默认0:获取线上数据, 1:获取草稿数据 */ + @TableField(value = "need_edit_spu") + private Integer needEditSpu = 0; + + /** 页号 */ + private Integer page = 1; + + /** 页面大小 */ + @TableField(value = "page_size") + private Integer pageSize = 10; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopSpuListResponseVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopSpuListResponseVo.java new file mode 100644 index 0000000..85724ac --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopSpuListResponseVo.java @@ -0,0 +1,29 @@ +package com.zbkj.common.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; + +import java.util.List; + +/** + * 自定义交易组件商品列表请求Vo + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class ShopSpuListResponseVo { + + /** 总数 */ + @TableField(value = "total_num") + private Integer totalNum; + + /** spu数组 */ + private List spus; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopSpuSkuAttrVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopSpuSkuAttrVo.java new file mode 100644 index 0000000..88fd898 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopSpuSkuAttrVo.java @@ -0,0 +1,28 @@ +package com.zbkj.common.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; + +/** + * 自定义交易组件商品SkuAttrVo + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class ShopSpuSkuAttrVo { + + /** 销售属性key(自定义) */ + @TableField(value = "attr_key") + private String attrKey; + + /** 销售属性value(自定义) */ + @TableField(value = "attr_value") + private String attrValue; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopSpuSkuVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopSpuSkuVo.java new file mode 100644 index 0000000..7b81e83 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopSpuSkuVo.java @@ -0,0 +1,57 @@ +package com.zbkj.common.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; + +import java.util.List; + +/** + * 自定义交易组件商品SkuVo + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class ShopSpuSkuVo { + + /** 商家自定义商品ID */ + @TableField(value = "out_product_id") + private String outProductId; + + /** 商家自定义skuID */ + @TableField(value = "out_sku_id") + private String outSkuId; + + /** sku小图 */ + @TableField(value = "thumb_img") + private String thumbImg; + + /** 售卖价格,以分为单位 */ + @TableField(value = "sale_price") + private Long salePrice; + + /** 市场价格,以分为单位 */ + @TableField(value = "market_price") + private Long marketPrice; + + /** 库存 */ + @TableField(value = "stock_num") + private Integer stockNum; + + /** 条形码 */ + private String barcode; + + /** 商品编码 */ + @TableField(value = "sku_code") + private String skuCode; + + /** 销售属性(自定义) */ + @TableField(value = "sku_attrs") + private List skuAttrs; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopSpuVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopSpuVo.java new file mode 100644 index 0000000..4f9bee1 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopSpuVo.java @@ -0,0 +1,74 @@ +package com.zbkj.common.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; + +import java.util.List; + +/** + * 自定义交易组件商品Vo + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class ShopSpuVo { + + /** 商家自定义商品ID */ + @TableField(value = "out_product_id") + private String outProductId; + + /** 标题 */ + private String title; + + /** 绑定的小程序商品路径 */ + private String path; + + /** 类主图,多张,列表 */ + @TableField(value = "head_img") + private List headImg; + + /** 商品详情 */ + @TableField(value = "desc_info") + private ShopSpuInfoVo descInfo; + + /** 商品审核信息 */ + @TableField(value = "audit_info") + private ShopSpuAuditVo auditInfo; + + /** 商品线上状态:0-初始值,5-上架,11-自主下架,13-违规下架/风控系统下架 */ + private Integer status; + + /** 商品草稿状态:1-未审核,2-审核中,3-审核失败,4-审核成功 */ + @TableField(value = "edit_status") + private Integer editStatus; + + /** 第三级类目ID */ + @TableField(value = "third_cat_id") + private Integer thirdCatId; + + /** 品牌id */ + @TableField(value = "brand_id") + private Integer brandId; + + /** 预留字段,用于版本控制 */ + @TableField(value = "info_version") + private Integer infoVersion; + + /** 创建时间 */ + @TableField(value = "create_time") + private String createTime; + + /** 更新时间 */ + @TableField(value = "update_time") + private String updateTime; + + /** sku数组 */ + private List skus; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/StoreOrderInfoOldVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/StoreOrderInfoOldVo.java new file mode 100644 index 0000000..0839ff1 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/StoreOrderInfoOldVo.java @@ -0,0 +1,50 @@ +package com.zbkj.common.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 订单购物详情表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="StoreOrderInfoVo对象", description="订单购物详情表") +public class StoreOrderInfoOldVo implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "id") + private Integer id; + + @ApiModelProperty(value = "订单id") + private Integer orderId; + + @ApiModelProperty(value = "商品ID") + private Integer productId; + + @ApiModelProperty(value = "购买东西的详细信息") + private OrderInfoDetailVo info; + + @ApiModelProperty(value = "唯一id") + @TableField(value = "`unique`") + private String unique; + + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/StoreOrderInfoVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/StoreOrderInfoVo.java new file mode 100644 index 0000000..4924761 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/StoreOrderInfoVo.java @@ -0,0 +1,50 @@ +package com.zbkj.common.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 订单详情VO对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="StoreOrderInfoVo对象", description="订单详情VO对象") +public class StoreOrderInfoVo implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "id") + private Integer id; + + @ApiModelProperty(value = "订单id") + private Integer orderId; + + @ApiModelProperty(value = "商品ID") + private Integer productId; + + @ApiModelProperty(value = "购买东西的详细信息") + private OrderInfoDetailVo info; + + @ApiModelProperty(value = "唯一id") + @TableField(value = "`unique`") + private String unique; + + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SystemCityTreeVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SystemCityTreeVo.java new file mode 100644 index 0000000..1323f2d --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SystemCityTreeVo.java @@ -0,0 +1,69 @@ +package com.zbkj.common.vo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * 分类表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class SystemCityTreeVo implements Serializable { + + private static final long serialVersionUID=1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "城市id") + private Integer cityId; + + @ApiModelProperty(value = "省市级别") + private Integer level; + + @ApiModelProperty(value = "父级id") + private Integer parentId; + + @ApiModelProperty(value = "区号") + private String areaCode; + + @ApiModelProperty(value = "名称") + private String name; + + @ApiModelProperty(value = "合并名称") + private String mergerName; + + @ApiModelProperty(value = "经度") + private String lng; + + @ApiModelProperty(value = "纬度") + private String lat; + + @ApiModelProperty(value = "是否展示") + private Boolean isShow; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + + @JsonInclude(JsonInclude.Include.NON_EMPTY) //属性为 空("")[] 或者为 NULL 都不序列化 + private List child = new ArrayList<>(); +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SystemConfigFormItemConfigRegListVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SystemConfigFormItemConfigRegListVo.java new file mode 100644 index 0000000..324626a --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SystemConfigFormItemConfigRegListVo.java @@ -0,0 +1,37 @@ +package com.zbkj.common.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * SystemConfigFormItemConfigRegListVo对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="SystemConfigFormItemConfigRegListVo对象", description="item对象验证规则") +public class SystemConfigFormItemConfigRegListVo implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "正则表达式") + private String pattern; + + @ApiModelProperty(value = "错误提示语") + private String message; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SystemConfigFormItemConfigVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SystemConfigFormItemConfigVo.java new file mode 100644 index 0000000..8fba8d2 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SystemConfigFormItemConfigVo.java @@ -0,0 +1,75 @@ +package com.zbkj.common.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.List; + +/** + * item对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="SystemConfigFormItemVo对象", description="item对象") +public class SystemConfigFormItemConfigVo implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "") + private String label; + + @ApiModelProperty(value = "") + private String showLabel; + + @ApiModelProperty(value = "") + private String changeTag; + + @ApiModelProperty(value = "") + private String labelWidth; + + @ApiModelProperty(value = "") + private String tag; + + @ApiModelProperty(value = "") + private String tagIcon; + + @ApiModelProperty(value = "") + private String span; + + @ApiModelProperty(value = "") + private String layout; + + @ApiModelProperty(value = "") + private Boolean required; + + @ApiModelProperty(value = "验证规则") + private List regList; + + @ApiModelProperty(value = "") + private String document; + + @ApiModelProperty(value = "") + private String formId; + + @ApiModelProperty(value = "") + private String renderKey; + + @ApiModelProperty(value = "") + private String defaultValue; + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SystemConfigFormItemVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SystemConfigFormItemVo.java new file mode 100644 index 0000000..0f36455 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SystemConfigFormItemVo.java @@ -0,0 +1,54 @@ +package com.zbkj.common.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * item对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="SystemConfigFormItemVo对象", description="item对象") +public class SystemConfigFormItemVo implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "配置") + private SystemConfigFormItemConfigVo __config__; + + @ApiModelProperty(value = "") + private String placeholder; + + @ApiModelProperty(value = "") + private String step; + + @ApiModelProperty(value = "") + private String stepStrictly; + + @ApiModelProperty(value = "") + private String controlsPosition; + + @ApiModelProperty(value = "") + private String disabled; + + @ApiModelProperty(value = "") + private String __vModel__; + + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SystemConfigFormVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SystemConfigFormVo.java new file mode 100644 index 0000000..a94f9f9 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SystemConfigFormVo.java @@ -0,0 +1,68 @@ +package com.zbkj.common.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; +import java.util.List; + +/** + * SystemConfigFormVo对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="SystemConfigFormVo对象", description="form对象") +public class SystemConfigFormVo implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "表单名称") + private String formRef; + + @ApiModelProperty(value = "form对象") + private String formModel; + + @ApiModelProperty(value = "大小") + private String size; + + @ApiModelProperty(value = "label位置") + private String labelPosition; + + @ApiModelProperty(value = "label宽度") + private String labelWidth; + + @ApiModelProperty(value = "form规则") + private String formRules; + + @ApiModelProperty(value = "") + private String gutter; + + @ApiModelProperty(value = "是否禁用") + private String disabled; + + @ApiModelProperty(value = "span") + private String span; + + @ApiModelProperty(value = "button") + private String formBtns; + + @ApiModelProperty(value = "字段值列表") + private List fields; + + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SystemGroupDataRechargeConfigVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SystemGroupDataRechargeConfigVo.java new file mode 100644 index 0000000..3672007 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SystemGroupDataRechargeConfigVo.java @@ -0,0 +1,41 @@ +package com.zbkj.common.vo; + +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 签到记录 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="SystemGroupDataSignConfigVo对象", description="签到记录") +public class SystemGroupDataRechargeConfigVo implements Serializable { + + private static final long serialVersionUID=1L; + + @TableId(value = "id") + private Integer id; + + @ApiModelProperty(value = "售价") + private BigDecimal price; + + @ApiModelProperty(value = "赠送") + private BigDecimal giveMoney; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SystemGroupDataSignConfigVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SystemGroupDataSignConfigVo.java new file mode 100644 index 0000000..89ca639 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SystemGroupDataSignConfigVo.java @@ -0,0 +1,51 @@ +package com.zbkj.common.vo; + +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 签到记录 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="SystemGroupDataSignConfigVo对象", description="签到记录") +public class SystemGroupDataSignConfigVo implements Serializable { + + private static final long serialVersionUID=1L; + + @TableId(value = "id") + private Integer id; + + @ApiModelProperty(value = "显示文字") + private String title; + + @ApiModelProperty(value = "第几天") + private Integer day; + + + @ApiModelProperty(value = "积分") + private Integer integral; + + @ApiModelProperty(value = "经验") + private Integer experience; + + + + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SystemStoreNearVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SystemStoreNearVo.java new file mode 100644 index 0000000..b19446c --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SystemStoreNearVo.java @@ -0,0 +1,84 @@ +package com.zbkj.common.vo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + +/** + * 门店自提 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_system_store") +@ApiModel(value="SystemStoreNearVo对象", description="门店自提") +public class SystemStoreNearVo implements Serializable { + + private static final long serialVersionUID=1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "门店名称") + private String name; + + @ApiModelProperty(value = "简介") + private String introduction; + + @ApiModelProperty(value = "手机号码") + private String phone; + + @ApiModelProperty(value = "省市区") + private String address; + + @ApiModelProperty(value = "详细地址") + private String detailedAddress; + + @ApiModelProperty(value = "门店logo") + private String image; + + @ApiModelProperty(value = "纬度") + private String latitude; + + @ApiModelProperty(value = "经度") + private String longitude; + + @ApiModelProperty(value = "核销有效日期") + private String validTime; + + @ApiModelProperty(value = "每日营业开关时间") + private String dayTime; + + @ApiModelProperty(value = "是否显示") + private Boolean isShow; + + @ApiModelProperty(value = "是否删除") + private Boolean isDel; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + + @ApiModelProperty(value = "距离,单位米") + private String distance; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/TemplateMessageVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/TemplateMessageVo.java new file mode 100644 index 0000000..ec30b06 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/TemplateMessageVo.java @@ -0,0 +1,39 @@ +package com.zbkj.common.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.util.HashMap; + +/** + * 微信模板发送类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="SendTemplateMessageVo对象", description="微信模板发送类") +public class TemplateMessageVo { + @ApiModelProperty(value = "OPENID", required = true) + private String touser; + + @ApiModelProperty(value = "模板ID", required = true) + private String template_id; + + @ApiModelProperty(value = "模板跳转链接(海外帐号没有跳转能力)") + private String url; + + @ApiModelProperty(value = "发送内容") + private HashMap data; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ThirdCatVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ThirdCatVo.java new file mode 100644 index 0000000..0ea2ee6 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ThirdCatVo.java @@ -0,0 +1,38 @@ +package com.zbkj.common.vo; + +import lombok.Data; + +/** + * 第三级类目 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class ThirdCatVo { + + /** 类目ID */ + private Integer thirdCatId; + + /** 类目名称 */ + private String thirdCatName; + + /** 类目资质 */ + private String qualification; + + /** 类目资质类型,0:不需要,1:必填,2:选填 */ + private Integer qualificationType; + + /** 商品资质 */ + private String productQualification; + + /** 商品资质类型,0:不需要,1:必填,2:选填 */ + private Integer productQualificationType; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/UploadCommonVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/UploadCommonVo.java new file mode 100644 index 0000000..b492371 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/UploadCommonVo.java @@ -0,0 +1,36 @@ +package com.zbkj.common.vo; + +import lombok.Data; + +/** + * 文件公共上传对象 + * + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class UploadCommonVo { + + //服务器存储地址 + private String rootPath; + + //类型 + private String type; + + //模块 + private String modelPath; + + //扩展名 + private String extStr; + + //文件大小上限 + private int size; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/UserFundsMonitor.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/UserFundsMonitor.java new file mode 100644 index 0000000..f9877bf --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/UserFundsMonitor.java @@ -0,0 +1,59 @@ +package com.zbkj.common.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 用户充值对象类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="UserFundsMonitor对象", description="佣金") +public class UserFundsMonitor implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "充值用户UID") + private Integer uid; + + @ApiModelProperty(value = "昵称") + private String nickname; + + @ApiModelProperty(value = "账户余额") + private BigDecimal nowMoney; + + @ApiModelProperty(value = "账户佣金") + private BigDecimal brokerage; + + @ApiModelProperty(value = "账户总佣金") + private BigDecimal totalBrokerage; + + @ApiModelProperty(value = "提现总金额") + private BigDecimal totalExtract; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "推广员UID") + private Integer spreadUid; + + @ApiModelProperty(value = "推广员昵称") + private String spreadName; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/UserSignMonthVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/UserSignMonthVo.java new file mode 100644 index 0000000..33a82ef --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/UserSignMonthVo.java @@ -0,0 +1,45 @@ +package com.zbkj.common.vo; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.List; + +/** + * 签到记录表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("eb_user_sign") +@ApiModel(value="UserSign对象", description="签到记录表") +public class UserSignMonthVo implements Serializable { + + private static final long serialVersionUID=1L; + + public UserSignMonthVo() {} + public UserSignMonthVo(String month, List list) { + this.month = month; + this.list = list; + } + + @ApiModelProperty(value = "月") + private String month; + + @ApiModelProperty(value = "签到列表") + private List list; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/UserSignVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/UserSignVo.java new file mode 100644 index 0000000..4be8c74 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/UserSignVo.java @@ -0,0 +1,48 @@ +package com.zbkj.common.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + +/** + * 签到记录对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="UserSignVo对象", description="签到记录对象") +public class UserSignVo implements Serializable { + + private static final long serialVersionUID=1L; + + public UserSignVo(String title, Integer number, Date createDay) { + this.title = title; + this.number = number; + this.createDay = createDay; + } + + @ApiModelProperty(value = "签到说明") + private String title; + + @ApiModelProperty(value = "获得积分") + private Integer number; + + @ApiModelProperty(value = "签到日期") + @JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8") + private Date createDay; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/WeChatAccessTokenVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/WeChatAccessTokenVo.java new file mode 100644 index 0000000..f07a4a5 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/WeChatAccessTokenVo.java @@ -0,0 +1,56 @@ +package com.zbkj.common.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 小程序accessTokenVo对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="WeChatAccessTokenVo", description="微信accessTokenVo对象") +public class WeChatAccessTokenVo implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "获取到的凭证") + @TableField(value = "access_token") + private String accessToken; + + @ApiModelProperty(value = "凭证有效时间,单位:秒。目前是7200秒之内的值。") + @TableField(value = "expires_in") + private Integer expiresIn; + + @ApiModelProperty(value = "错误码") + @TableField(value = "errcode") + private Integer errCode; + + @ApiModelProperty(value = "错误信息") + @TableField(value = "errmsg") + private String errMsg; + + /** + * errcode 的合法值 + * -1 系统繁忙,此时请开发者稍候再试 + * 0 请求成功 + * 40001 AppSecret 错误或者 AppSecret 不属于这个小程序,请开发者确认 AppSecret 的正确性 + * 40002 请确保 grant_type 字段值为 client_credential + * 40013 不合法的 AppID,请开发者检查 AppID 的正确性,避免异常字符,注意大小写 + */ +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/WeChatAuthorizeLoginUserInfoVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/WeChatAuthorizeLoginUserInfoVo.java new file mode 100644 index 0000000..09dd512 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/WeChatAuthorizeLoginUserInfoVo.java @@ -0,0 +1,62 @@ +package com.zbkj.common.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 获取微信用户信息 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="WeChatAuthorizeLoginUserInfoVo对象", description="获取微信用户信息") +public class WeChatAuthorizeLoginUserInfoVo implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "用户的唯一标识") + @TableField(value = "openId") + private String openId; + + @ApiModelProperty(value = "用户昵称") + @TableField(value = "nickname") + private String nickName; + + @ApiModelProperty(value = "性别") + private String sex; + + @ApiModelProperty(value = "用户个人资料填写的省份") + private String province; + + @ApiModelProperty(value = "普通用户个人资料填写的城市") + private String city; + + @ApiModelProperty(value = "国家,如中国为CN") + private String country; + + @ApiModelProperty(value = "用户头像") + private String headimgurl; + + @ApiModelProperty(value = "用户特权信息,json 数组,如微信沃卡用户为(chinaunicom)") + private String privilege; + + @ApiModelProperty(value = "只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段。") + @TableField(value = "unionid") + private String unionId; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/WeChatMiniAuthorizeVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/WeChatMiniAuthorizeVo.java new file mode 100644 index 0000000..73d8b5f --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/WeChatMiniAuthorizeVo.java @@ -0,0 +1,51 @@ +package com.zbkj.common.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 微信小程序用户授权返回数据 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="WeChatMiniAuthorizeVo对象", description="微信小程序用户授权返回数据") +public class WeChatMiniAuthorizeVo implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "会话密钥") + @TableField(value = "session_key") + private String sessionKey; + + @ApiModelProperty(value = "用户唯一标识") + @TableField(value = "openid") + private String openId; + + @ApiModelProperty(value = "用户在开放平台的唯一标识符,若当前小程序已绑定到微信开放平台帐号下会返回") + @TableField(value = "unionid") + private String unionId; + + @ApiModelProperty(value = "错误码") + @TableField(value = "errcode") + private String errCode; + + @ApiModelProperty(value = "错误信息") + @TableField(value = "errmsg") + private String errMsg; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/WechatVideoUploadImageResponseVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/WechatVideoUploadImageResponseVo.java new file mode 100644 index 0000000..b74a4b8 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/WechatVideoUploadImageResponseVo.java @@ -0,0 +1,26 @@ +package com.zbkj.common.vo; + +import lombok.Data; + +/** + * + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class WechatVideoUploadImageResponseVo extends BaseResultResponseVo { + + private imageInfo img_info; + + @Data + class imageInfo{ + private String media_id; + } +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/WxPayJsResultVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/WxPayJsResultVo.java new file mode 100644 index 0000000..c8ddc8a --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/WxPayJsResultVo.java @@ -0,0 +1,49 @@ +package com.zbkj.common.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 微信调起支付参数对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@ApiModel(value="WxPayJsResultVo对象", description="微信调起支付参数对象") +public class WxPayJsResultVo { + + @ApiModelProperty(value = "微信分配的小程序ID") + private String appId; + + @ApiModelProperty(value = "随机字符串,不长于32位") + private String nonceStr; + + @ApiModelProperty(value = "统一下单接口返回的 prepay_id 参数值") + private String packages; + + @ApiModelProperty(value = "签名类型,默认为MD5,支持HMAC-SHA256和MD5。") + private String signType; + + @ApiModelProperty(value = "时间戳从1970年1月1日00:00:00至今的秒数,即当前的时间") + private String timeStamp; + + @ApiModelProperty(value = "支付签名") + private String paySign; + + @ApiModelProperty(value = "H5支付跳转链接") + private String mwebUrl; + + @ApiModelProperty(value = "微信商户号") + private String partnerid; + + @ApiModelProperty(value = "拉起收银台的ticket") + private String ticket; +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/WxRefundResponseVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/WxRefundResponseVo.java new file mode 100644 index 0000000..c8e829d --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/WxRefundResponseVo.java @@ -0,0 +1,110 @@ +package com.zbkj.common.vo; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 微信退款返回对象 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="WxRefundResponseVo", description="微信退款返回对象") +public class WxRefundResponseVo { + @ApiModelProperty(value = "SUCCESS/FAIL此字段是通信标识,非交易标识,交易是否成功需要查看trade_state来判断") + @JsonProperty(value = "return_code") + private String returnCode; + + @ApiModelProperty(value = "当return_code为FAIL时返回信息为错误原因 ,例如 签名失败 参数格式校验错误") + @JsonProperty(value = "return_msg") + private String returnMsg; + + @ApiModelProperty(value = "SUCCESS/FAIL 业务结果") + @JsonProperty(value = "result_code") + private String resultCode; + + @ApiModelProperty(value = "详细参见错误列表") + @JsonProperty(value = "err_code") + private String errCode; + + @ApiModelProperty(value = "错误返回的信息描述") + @JsonProperty(value = "err_code_des") + private String errCodeDes; + + @ApiModelProperty(value = "调用接口提交的公众账号ID") + @JsonProperty(value = "appid") + private String appId; + + @ApiModelProperty(value = "调用接口提交的商户号") + @JsonProperty(value = "mch_id") + private String mchId; + + @ApiModelProperty(value = "微信返回的随机字符串") + @JsonProperty(value = "nonce_str") + private String nonceStr; + + @ApiModelProperty(value = "微信返回的签名") + private String sign; + + @ApiModelProperty(value = "微信支付订单号") + @JsonProperty(value = "transaction_id") + private String transactionId; + + @ApiModelProperty(value = "商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号", required = true) + @JsonProperty(value = "out_trade_no") + private String outTradeNo; + + @ApiModelProperty(value = "商户退款单号,同一退款单号多次请求只退一笔。") + @JsonProperty(value = "out_refund_no") + private String outRefundNo; + + @ApiModelProperty(value = "微信退款单号") + @JsonProperty(value = "refund_id") + private String refundId; + + @ApiModelProperty(value = "退款总金额,单位为分,可以做部分退款") + @JsonProperty(value = "refund_fee") + private Integer refundFee; + + @ApiModelProperty(value = "应结退款金额") + @JsonProperty(value = "settlement_refund_fee") + private Integer settlementRefundFee; + + @ApiModelProperty(value = "标价金额") + @JsonProperty(value = "total_fee") + private Integer totalFee; + + @ApiModelProperty(value = "应结订单金额") + @JsonProperty(value = "settlement_total_fee") + private Integer settlementTotalFee; + + @ApiModelProperty(value = "标价币种,订单金额货币类型,符合ISO 4217标准的三位字母代码,默认人民币:CNY,其他值列表详见货币类型") + @JsonProperty(value = "fee_type") + private String feeType; + + @ApiModelProperty(value = "现金支付金额") + @JsonProperty(value = "cash_fee") + private Integer cashFee; + + @ApiModelProperty(value = "现金支付币种,订单金额货币类型,符合ISO 4217标准的三位字母代码,默认人民币:CNY,其他值列表详见货币类型") + @JsonProperty(value = "cash_fee_type") + private String cashFeeType; + + @ApiModelProperty(value = "现金退款金额") + @JsonProperty(value = "cash_refund_fee") + private Integer cashRefundFee; + +} diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/WxRefundVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/WxRefundVo.java new file mode 100644 index 0000000..b5a2696 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/WxRefundVo.java @@ -0,0 +1,65 @@ + +package com.zbkj.common.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 调用微信退款所需要的参数 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="WxRefundVo", description="调用微信退款所需要的参数") +public class WxRefundVo { + + @ApiModelProperty(value = "appId,公众号名称,由商户传入", required = true) + private String appid; + + @ApiModelProperty(value = "直连商户的商户号,由微信支付生成并下发", required = true) + private String mch_id; + + @ApiModelProperty(value = "随机字符串,不长于32位", required = true) + private String nonce_str; + + @ApiModelProperty(value = "签名", required = true) + private String sign; + + @ApiModelProperty(value = "签名类型,目前支持HMAC-SHA256和MD5,默认为MD5") + private String sign_type = "MD5"; + + @ApiModelProperty(value = "微信支付订单号:微信生成的订单号,在支付通知中有返回") + private String transaction_id; + + @ApiModelProperty(value = "商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号", required = true) + private String out_trade_no; + + @ApiModelProperty(value = "商户退款单号,同一退款单号多次请求只退一笔。") + private String out_refund_no; + + @ApiModelProperty(value = "订单总金额,单位为分", required = true) + private int total_fee; + + @ApiModelProperty(value = "退款金额,单位为分", required = true) + private int refund_fee; + + @ApiModelProperty(value = "退款货币种类:符合ISO 4217标准的三位字母代码,默认人民币:CNY,其他值列表详见货币类型") + private String refund_fee_type = "CNY"; + + @ApiModelProperty(value = "退款结果通知url") + private String notify_url; + +} + diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/dateLimitUtilVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/dateLimitUtilVo.java new file mode 100644 index 0000000..f103550 --- /dev/null +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/dateLimitUtilVo.java @@ -0,0 +1,28 @@ +package com.zbkj.common.vo; + +import lombok.Data; + +/** + * 时间Vo类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +public class dateLimitUtilVo { + public dateLimitUtilVo() {} + public dateLimitUtilVo(String startTime, String endTime) { + this.startTime = startTime; + this.endTime = endTime; + } + + private String startTime; //开始时间 + + private String endTime; //结束时间 +} diff --git a/crmeb/crmeb-front/pom.xml b/crmeb/crmeb-front/pom.xml new file mode 100644 index 0000000..9beae28 --- /dev/null +++ b/crmeb/crmeb-front/pom.xml @@ -0,0 +1,77 @@ + + + + crmeb + com.zbkj + 0.0.1-SNAPSHOT + + 4.0.0 + + crmeb-front + jar + + + 0.0.1-SNAPSHOT + + + + + com.zbkj + crmeb-service + ${crmeb-service} + + + + + + Crmeb-front + + + org.springframework.boot + spring-boot-maven-plugin + 2.3.0.RELEASE + + + + repackage + + + + + + + + + + + + + + + + + + + + + src/main/resources + true + + + + + + + + + src/main/java + + **/*.xml + + + + + + \ No newline at end of file diff --git a/crmeb/crmeb-front/src/main/java/com/zbkj/front/CrmebFrontApplication.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/CrmebFrontApplication.java new file mode 100644 index 0000000..c302066 --- /dev/null +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/CrmebFrontApplication.java @@ -0,0 +1,36 @@ +package com.zbkj.front; + +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableAsync; +import org.springframework.transaction.annotation.EnableTransactionManagement; +import springfox.documentation.swagger2.annotations.EnableSwagger2; + +/** + * 程序主入口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@EnableAsync //开启异步调用 +@EnableSwagger2 +@Configuration +@EnableTransactionManagement +@SpringBootApplication(exclude = DataSourceAutoConfiguration.class) //去掉数据源 +@ComponentScan(basePackages = {"com.zbkj", "com.zbkj.front"}) +@MapperScan(basePackages = {"com.zbkj.**.dao"}) +public class CrmebFrontApplication { + public static void main(String[] args) { + SpringApplication.run(CrmebFrontApplication.class, args); + } +} diff --git a/crmeb/crmeb-front/src/main/java/com/zbkj/front/config/CloseSecurityConfig.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/config/CloseSecurityConfig.java new file mode 100644 index 0000000..9387192 --- /dev/null +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/config/CloseSecurityConfig.java @@ -0,0 +1,26 @@ +package com.zbkj.front.config; + +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; + +/** + * 访问接口不在调用security + * @Author 指缝de阳光 + * @Date 2021/11/26 14:27 + * @Version 1.0 + */ +@Configuration +@EnableWebSecurity +public class CloseSecurityConfig extends WebSecurityConfigurerAdapter { + + @Override + protected void configure(HttpSecurity http) throws Exception { + //super.configure(http); + http.csrf().disable(); + //配置不需要登陆验证 + http.authorizeRequests().anyRequest().permitAll().and().logout().permitAll(); + } + +} diff --git a/crmeb/crmeb-front/src/main/java/com/zbkj/front/config/CorsConfig.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/config/CorsConfig.java new file mode 100644 index 0000000..fdf323f --- /dev/null +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/config/CorsConfig.java @@ -0,0 +1,36 @@ +package com.zbkj.front.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.cors.CorsConfiguration; +import org.springframework.web.cors.UrlBasedCorsConfigurationSource; +import org.springframework.web.filter.CorsFilter; + +/** 跨域配置 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Configuration +public class CorsConfig{ + private CorsConfiguration buildConfig() { + CorsConfiguration corsConfiguration = new CorsConfiguration(); + corsConfiguration.addAllowedOrigin("*"); //允许任何域名 + corsConfiguration.addAllowedHeader("*"); //允许任何头 + corsConfiguration.addAllowedMethod("*"); //允许任何方法 + return corsConfiguration; + } + + @Bean + public CorsFilter corsFilter() { + UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); + source.registerCorsConfiguration("/**", buildConfig()); //注册 + return new CorsFilter(source); + } +} diff --git a/crmeb/crmeb-front/src/main/java/com/zbkj/front/config/DruidConfig.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/config/DruidConfig.java new file mode 100644 index 0000000..981f1ba --- /dev/null +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/config/DruidConfig.java @@ -0,0 +1,56 @@ +package com.zbkj.front.config; + +import com.alibaba.druid.pool.DruidDataSource; +import com.alibaba.druid.support.http.StatViewServlet; +import com.alibaba.druid.support.http.WebStatFilter; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.web.servlet.FilterRegistrationBean; +import org.springframework.boot.web.servlet.ServletRegistrationBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import javax.sql.DataSource; + +/** + * Druid配置组件 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Configuration +public class DruidConfig { + + @Bean + public ServletRegistrationBean druidServlet() { // 主要实现WEB监控的配置处理 + ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*"); // 进行druid监控的配置处理操作 +// servletRegistrationBean.addInitParameter("allow", +// "127.0.0.1,192.168.1.159"); // 白名单 +// servletRegistrationBean.addInitParameter("deny", "192.168.1.200"); // 黑名单 + servletRegistrationBean.addInitParameter("loginUsername", "kf"); // 用户名 + servletRegistrationBean.addInitParameter("loginPassword", "654321"); // 密码 + servletRegistrationBean.addInitParameter("resetEnable", "true"); // 是否可以重置数据源 + return servletRegistrationBean ; + } + @Bean + public FilterRegistrationBean filterRegistrationBean() { + FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean() ; + filterRegistrationBean.setFilter(new WebStatFilter()); + + filterRegistrationBean.addUrlPatterns("/*"); // 所有请求进行监控处理 + //不必监控的请求 + filterRegistrationBean.addInitParameter("exclusions", "*.html,*.png,*.ico,*.js,*.gif,*.jpg,*.css,/druid/*"); + return filterRegistrationBean ; + } + @Bean("dataSource") + @ConfigurationProperties(prefix = "spring.datasource") + public DataSource druidDataSource() { + return new DruidDataSource(); + } +} + diff --git a/crmeb/crmeb-front/src/main/java/com/zbkj/front/config/JacksonConfig.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/config/JacksonConfig.java new file mode 100644 index 0000000..64b6706 --- /dev/null +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/config/JacksonConfig.java @@ -0,0 +1,36 @@ +package com.zbkj.front.config; + +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import java.math.BigDecimal; + +/** + * Jackjson配置组件 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Configuration +public class JacksonConfig { + + /** + * Jackson全局转化BigDecimal类型为String,解决jackson序列化时BigDecimal类型缺失精度问题 + * + * @return Jackson2ObjectMapperBuilderCustomizer 注入的对象 + */ + @Bean + public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() { + + return jacksonObjectMapperBuilder -> jacksonObjectMapperBuilder.serializerByType(BigDecimal.class, ToStringSerializer.instance); + } + +} diff --git a/crmeb/crmeb-front/src/main/java/com/zbkj/front/config/RestTemplateConfig.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/config/RestTemplateConfig.java new file mode 100644 index 0000000..0fcd52d --- /dev/null +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/config/RestTemplateConfig.java @@ -0,0 +1,55 @@ +package com.zbkj.front.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.MediaType; +import org.springframework.http.client.ClientHttpRequestFactory; +import org.springframework.http.client.SimpleClientHttpRequestFactory; +import org.springframework.http.converter.StringHttpMessageConverter; +import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; +import org.springframework.web.client.RestTemplate; + +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.List; + +/** + * RestTemplate配置组件 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Configuration +public class RestTemplateConfig { + @Bean + public RestTemplate restTemplate(ClientHttpRequestFactory factory) { + RestTemplate restTemplate = new RestTemplate(factory); + restTemplate.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8)); + restTemplate.getMessageConverters().add(new WxMappingJackson2HttpMessageConverter()); + return restTemplate; + } + + @Bean + public ClientHttpRequestFactory httpRequestFactory() { + SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory(); + factory.setReadTimeout(10000);//ms + factory.setConnectTimeout(15000);//ms + return factory; + } + + //解决微信返回json Content-Type 值却是 text/plain 的问题 + public class WxMappingJackson2HttpMessageConverter extends MappingJackson2HttpMessageConverter { + public WxMappingJackson2HttpMessageConverter(){ + List mediaTypes = new ArrayList<>(); + mediaTypes.add(MediaType.TEXT_PLAIN); + mediaTypes.add(MediaType.TEXT_HTML); + setSupportedMediaTypes(mediaTypes); + } + } +} diff --git a/crmeb/crmeb-front/src/main/java/com/zbkj/front/config/SwaggerConfig.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/config/SwaggerConfig.java new file mode 100644 index 0000000..847ff6e --- /dev/null +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/config/SwaggerConfig.java @@ -0,0 +1,131 @@ +package com.zbkj.front.config; + +import com.zbkj.common.config.CrmebConfig; +import com.zbkj.common.constants.Constants; +import com.google.common.base.Predicate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import springfox.documentation.builders.ApiInfoBuilder; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.service.ApiInfo; +import springfox.documentation.service.ApiKey; +import springfox.documentation.service.AuthorizationScope; +import springfox.documentation.service.SecurityReference; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spi.service.contexts.SecurityContext; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger2.annotations.EnableSwagger2; + +import java.util.ArrayList; +import java.util.List; + +import static com.google.common.collect.Lists.newArrayList; + +/** + * Swagger配置组件 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Configuration +@EnableSwagger2 +@ConfigurationProperties(prefix = "api.doc") +public class SwaggerConfig{ + + //是否开启swagger,正式环境一般是需要关闭的,可根据springboot的多环境配置进行设置 + Boolean swaggerEnabled = true; + + @Autowired + CrmebConfig crmebConfig; + + @Bean("front") + public Docket create1RestApis() { + return new Docket(DocumentationType.SWAGGER_2) + .groupName("front") + .host(crmebConfig.getDomain()) + .apiInfo(apiInfo()) + // 是否开启 + .enable(swaggerEnabled) + .select() + // 扫描的路径包 + .apis(RequestHandlerSelectors.basePackage("com.zbkj.front")) + // 指定路径处理PathSelectors.any()代表所有的路径 + .paths(frontPathsAnt()) //只监听 + .build() + .securitySchemes(security()) + .securityContexts(securityContexts()) +// .globalOperationParameters(pars) // 针对单个url的验证 如果需要的话 + .pathMapping("/"); + } + + @Bean("public") + public Docket create2RestApis() { + return new Docket(DocumentationType.SWAGGER_2) + .groupName("public") + .host(crmebConfig.getDomain()) + .apiInfo(apiInfo()) + // 是否开启 + .enable(swaggerEnabled) + .select() + // 扫描的路径包 + .apis(RequestHandlerSelectors.basePackage("com.zbkj.front")) + // 指定路径处理PathSelectors.any()代表所有的路径 + .paths(publicPathsAnt()) //只监听 + .build() + .securitySchemes(security()) + .securityContexts(securityContexts()) +// .globalOperationParameters(pars) // 针对单个url的验证 如果需要的话 + .pathMapping("/"); + } + + private Predicate frontPathsAnt() { + return PathSelectors.ant("/api/front/**"); + } + + private Predicate publicPathsAnt() { + return PathSelectors.ant("/api/public/**"); + } + + private List security() { + return newArrayList( + new ApiKey(Constants.HEADER_AUTHORIZATION_KEY, Constants.HEADER_AUTHORIZATION_KEY, "header") + ); + } + + private ApiInfo apiInfo() { + return new ApiInfoBuilder() + .title("Crmeb Java") + .description("Crmeb") + .termsOfServiceUrl("http://host:port") + .version("1.0.0").build(); + } + + + private List securityContexts() { + List res = new ArrayList<>(); + res.add(SecurityContext.builder() + .securityReferences(defaultAuth()) + .forPaths(PathSelectors.regex("/.*")) + .build()); + return res; + } + + private List defaultAuth() { + List res = new ArrayList<>(); + AuthorizationScope authorizationScope = new AuthorizationScope("global", Constants.HEADER_AUTHORIZATION_KEY); + AuthorizationScope[] authorizationScopes = new AuthorizationScope[1]; + authorizationScopes[0] = authorizationScope; + res.add(new SecurityReference(Constants.HEADER_AUTHORIZATION_KEY, authorizationScopes)); + return res; + } +} diff --git a/crmeb/crmeb-front/src/main/java/com/zbkj/front/config/TaskExecutorConfig.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/config/TaskExecutorConfig.java new file mode 100644 index 0000000..3971469 --- /dev/null +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/config/TaskExecutorConfig.java @@ -0,0 +1,105 @@ +package com.zbkj.front.config; + +import lombok.Data; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; + +import java.util.concurrent.RejectedExecutionHandler; +import java.util.concurrent.ThreadPoolExecutor; + +/** + * Task类的线程配置 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@Configuration +public class TaskExecutorConfig { + + //普通模式 + private final int taskCorePoolSize = 20; //核心线程池数量 + private final int taskMaxPoolSize = 100; //最大线程 + private final int taskQueueCapacity = 200; //缓存队列条数 + private final int taskKeepAliveSecond = 10; //允许的空闲时间 + private final String taskNamePrefix = "task-executor-"; //线程名称前缀 + + //发布订阅模式 +// private final int listenerCorePoolSize = 3; +// private final int listenerMaxPoolSize = 20; +// private final int listenerQueueCapacity = 200; +// private final int listenerKeepAliveSecond = 10; +// private final String listenerNamePrefix = "listener-executor-"; + + //普通模式 + @Bean("taskExecutor") + public ThreadPoolTaskExecutor taskExecutor(){ + return initTaskExecutor( + getTaskCorePoolSize(), + getTaskMaxPoolSize(), + getTaskQueueCapacity(), + getTaskKeepAliveSecond(), + getTaskNamePrefix() + ); + } + +// //针对发布订阅(pub listener) 的线程池 +// @Bean("listenerTaskExecutor") +// public ThreadPoolTaskExecutor listenerTaskExecutor(){ +// return initTaskExecutor(getListenerCorePoolSize(), getListenerMaxPoolSize(), +// getListenerQueueCapacity(), getListenerKeepAliveSecond(), getListenerNamePrefix()); +// } + + /** + * + * 初始化TaskExecutor + * @param corePoolSize int 默认线程数 + * @param maxPoolSize int 最大线程数 + * @param queueCapacity int 缓冲队列长度 + * @param keepAliveSecond int 允许空闲时间 + * @param namePrefix String 名称的前缀 + * + * @return ThreadPoolTaskExecutor + */ + private ThreadPoolTaskExecutor initTaskExecutor(int corePoolSize, int maxPoolSize, + int queueCapacity, int keepAliveSecond, String namePrefix){ + //callrunspolicy:由调度线程(提交任务的线程)处理该任务CallerRunsPolicy + return initTaskExecutor(corePoolSize, maxPoolSize, queueCapacity, keepAliveSecond, namePrefix, + new ThreadPoolExecutor.CallerRunsPolicy()); + } + + /** + * 初始化TaskExecutor + * @param corePoolSize int 默认线程数 + * @param maxPoolSize int 最大线程数 + * @param queueCapacity int 缓冲队列长度 + * @param keepAliveSecond int 允许空闲时间 + * @param namePrefix String 名称的前缀 + * @param rejectedExecutionHandler 线程池满的时候如何处理 + * @return ThreadPoolTaskExecutor + */ + private ThreadPoolTaskExecutor initTaskExecutor(int corePoolSize, int maxPoolSize, + int queueCapacity, int keepAliveSecond, String namePrefix, + RejectedExecutionHandler rejectedExecutionHandler){ + ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); + executor.setCorePoolSize(corePoolSize);//核心线程数(默认线程数) + executor.setMaxPoolSize(maxPoolSize);//最大线程数 + executor.setQueueCapacity(queueCapacity);//缓冲队列数 + executor.setKeepAliveSeconds(keepAliveSecond);//允许线程空闲时间(单位默认为秒) + executor.setThreadNamePrefix(namePrefix);//线程名前缀 + + //线程池对拒绝任务的处理策略, + executor.setRejectedExecutionHandler(rejectedExecutionHandler); + + //初始化 + executor.initialize(); + return executor; + } +} diff --git a/crmeb/crmeb-front/src/main/java/com/zbkj/front/config/WebConfig.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/config/WebConfig.java new file mode 100644 index 0000000..763f7a7 --- /dev/null +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/config/WebConfig.java @@ -0,0 +1,120 @@ +package com.zbkj.front.config; + +import com.zbkj.common.interceptor.SwaggerInterceptor; +import com.zbkj.front.filter.ResponseFilter; +import com.zbkj.front.interceptor.FrontTokenInterceptor; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.boot.web.servlet.FilterRegistrationBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.HandlerInterceptor; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; +import org.springframework.web.servlet.handler.MappedInterceptor; + +/** + * token验证拦截器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Configuration +public class WebConfig implements WebMvcConfigurer { + + // 这里使用一个Bean为的是可以在拦截器中自由注入,也可以在拦截器中使用SpringUtil.getBean 获取 + // 但是觉得这样更优雅 + + @Bean + public HandlerInterceptor frontTokenInterceptor(){ + return new FrontTokenInterceptor(); + } + + @Bean + public ResponseFilter responseFilter(){ return new ResponseFilter(); } + + @Value("${swagger.basic.username}") + private String username; + @Value("${swagger.basic.password}") + private String password; + @Value("${swagger.basic.check}") + private Boolean check; + + + @Override + public void addInterceptors(InterceptorRegistry registry) { + //添加token拦截器 + //addPathPatterns添加需要拦截的命名空间; + //excludePathPatterns添加排除拦截命名空间 + + //前端用户登录token + registry.addInterceptor(frontTokenInterceptor()). + addPathPatterns("/api/front/**"). + excludePathPatterns("/api/front/index"). + excludePathPatterns("/api/front/qrcode/**"). + excludePathPatterns("/api/front/login/mobile"). + excludePathPatterns("/api/front/login"). + excludePathPatterns("/api/front/sendCode"). + excludePathPatterns("/api/front/wechat/**"). + excludePathPatterns("/api/front/search/keyword"). + excludePathPatterns("/api/front/share"). + excludePathPatterns("/api/front/article/**"). + excludePathPatterns("/api/front/city/**"). + excludePathPatterns("/api/front/product/hot"). + excludePathPatterns("/api/front/product/good"). + excludePathPatterns("/api/front/products/**"). + excludePathPatterns("/api/front/reply/**"). + excludePathPatterns("/api/front/user/service/**"). + excludePathPatterns("/api/front/logistics"). + excludePathPatterns("/api/front/groom/list/**"). + excludePathPatterns("/api/front/config"). + excludePathPatterns("/api/front/category"). + excludePathPatterns("/api/front/seckill/*"). + excludePathPatterns("/api/front/seckill/list/*"). + excludePathPatterns("/api/front/seckill/detail/*"). + excludePathPatterns("/api/front/ios/*"). + excludePathPatterns("/api/front/ios/register/binding/phone"). + excludePathPatterns("api/front/combination/index"). + excludePathPatterns("api/front/seckill/index"). + excludePathPatterns("api/front/bargain/index"). + excludePathPatterns("api/front/combination/index"). + excludePathPatterns("api/front/index/product/*"). + excludePathPatterns("api/front/index/color/config"). + excludePathPatterns("api/front/image/domain"). + excludePathPatterns("api/front/product/leaderboard"). + excludePathPatterns("/swagger-resources/**", "/webjars/**", "/v2/**", "/swagger-ui.html/**"); + } + + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) { + registry.addResourceHandler("/**") + .addResourceLocations("classpath:/static/"); + registry.addResourceHandler("doc.html") + .addResourceLocations("classpath:/META-INF/resources/"); + registry.addResourceHandler("/webjars/**") + .addResourceLocations("classpath:/META-INF/resources/webjars/"); + } + + @Bean + public FilterRegistrationBean filterRegister() + { + //注册过滤器 + FilterRegistrationBean registration = new FilterRegistrationBean(responseFilter()); + registration.addUrlPatterns("/*"); + return registration; + } + + /* 必须在此处配置拦截器,要不然拦不到swagger的静态资源 */ + @Bean + @ConditionalOnProperty(name = "swagger.basic.enable", havingValue = "true") + public MappedInterceptor getMappedInterceptor() { + return new MappedInterceptor(new String[]{"/doc.html", "/webjars/**"}, new SwaggerInterceptor(username, password, check)); + } +} diff --git a/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/ArticleController.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/ArticleController.java new file mode 100644 index 0000000..2b736f8 --- /dev/null +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/ArticleController.java @@ -0,0 +1,90 @@ +package com.zbkj.front.controller; + +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.response.ArticleResponse; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.model.article.Article; +import com.zbkj.common.model.category.Category; +import com.zbkj.service.service.ArticleService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + + +/** + * 文章 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController("ArticleFrontController") +@RequestMapping("api/front/article") +@Api(tags = "文章") +public class ArticleController { + + @Autowired + private ArticleService articleService; + + /** + * 分页列表 + */ + @ApiOperation(value = "分页列表") + @RequestMapping(value = "/list/{cid}", method = RequestMethod.GET) + public CommonResult> getList(@PathVariable(name="cid") String cid, + @Validated PageParamRequest pageParamRequest) { + return CommonResult.success(CommonPage.restPage(articleService.getList(cid, pageParamRequest))); + } + + /** + * 热门列表 + */ + @ApiOperation(value = "热门列表") + @RequestMapping(value = "/hot/list", method = RequestMethod.GET) + public CommonResult> getHotList() { + return CommonResult.success(CommonPage.restPage(articleService.getHotList())); + } + + /** + * 轮播列表 + */ + @ApiOperation(value = "轮播列表") + @RequestMapping(value = "/banner/list", method = RequestMethod.GET) + public CommonResult> getList() { + return CommonResult.success(CommonPage.restPage(articleService.getBannerList())); + } + + /** + * 文章分类列表 + */ + @ApiOperation(value = "文章分类列表") + @RequestMapping(value = "/category/list", method = RequestMethod.GET) + public CommonResult> categoryList() { + return CommonResult.success(CommonPage.restPage(articleService.getCategoryList())); + } + + /** + * 查询文章详情 + * @param id Integer + */ + @ApiOperation(value = "详情") + @RequestMapping(value = "/info", method = RequestMethod.GET) + @ApiImplicitParam(name="id", value="文章ID") + public CommonResult info(@RequestParam(value = "id") Integer id) { + return CommonResult.success(articleService.getVoByFront(id)); + } +} + + + diff --git a/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/BargainController.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/BargainController.java new file mode 100644 index 0000000..29c746b --- /dev/null +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/BargainController.java @@ -0,0 +1,121 @@ +package com.zbkj.front.controller; + +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.request.BargainFrontRequest; +import com.zbkj.common.request.PageParamRequest; +import com.github.pagehelper.PageInfo; +import com.zbkj.common.response.*; +import com.zbkj.service.service.StoreBargainService; +import com.zbkj.service.service.StoreBargainUserHelpService; +import com.zbkj.service.service.StoreBargainUserService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; + +/** + * H5 砍价 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/front/bargain") +@Api(tags = "砍价商品") +public class BargainController { + + @Autowired + private StoreBargainService storeBargainService; + + @Autowired + private StoreBargainUserService storeBargainUserService; + + @Autowired + private StoreBargainUserHelpService storeBargainUserHelpService; + + /** + * 砍价首页信息 + */ + @ApiOperation(value = "砍价首页信息") + @RequestMapping(value = "/index", method = RequestMethod.GET) + public CommonResult index(){ + return CommonResult.success(storeBargainService.getIndexInfo()); + } + + /** + * 砍价商品列表header + */ + @ApiOperation(value = "砍价商品列表header") + @RequestMapping(value = "/header", method = RequestMethod.GET) + public CommonResult header(){ + return CommonResult.success(storeBargainService.getHeader()); + } + + /** + * 砍价商品列表 + * @return 砍价商品列表 + */ + @ApiOperation(value = "砍价商品列表") + @RequestMapping(value = "/list", method = RequestMethod.GET) + public CommonResult> list(@ModelAttribute PageParamRequest pageParamRequest){ + return CommonResult.success(storeBargainService.getH5List(pageParamRequest)); + } + + /** + * 获取用户砍价信息 + */ + @ApiOperation(value = "获取用户砍价信息") + @RequestMapping(value = "/user", method = RequestMethod.GET) + public CommonResult getBargainUserInfo(@ModelAttribute @Validated BargainFrontRequest bargainFrontRequest) { + return CommonResult.success(storeBargainUserService.getBargainUserInfo(bargainFrontRequest)); + } + + /** + * 砍价商品详情 + */ + @ApiOperation(value = "砍价商品详情") + @RequestMapping(value = "/detail/{id}", method = RequestMethod.GET) + public CommonResult detail(@PathVariable(value = "id") Integer id) { + BargainDetailH5Response h5Detail = storeBargainService.getH5Detail(id); + return CommonResult.success(h5Detail); + } + + /** + * 创建砍价活动 + */ + @ApiOperation(value = "创建砍价活动") + @RequestMapping(value = "/start", method = RequestMethod.POST) + public CommonResult> start(@RequestBody @Validated BargainFrontRequest bargainFrontRequest) { + return CommonResult.success(storeBargainService.start(bargainFrontRequest)); + } + + /** + * 砍价 + */ + @ApiOperation(value = "砍价") + @RequestMapping(value = "/help", method = RequestMethod.POST) + public CommonResult> help(@RequestBody @Validated BargainFrontRequest bargainFrontRequest) { + return CommonResult.success(storeBargainUserHelpService.help(bargainFrontRequest)); + } + + /** + * 砍价记录 + */ + @ApiOperation(value = "砍价记录") + @RequestMapping(value = "/record", method = RequestMethod.GET) + public CommonResult> recordList(@ModelAttribute PageParamRequest pageParamRequest) { + return CommonResult.success(CommonPage.restPage(storeBargainUserService.getRecordList(pageParamRequest))); + } + +} diff --git a/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/CartController.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/CartController.java new file mode 100644 index 0000000..aa27feb --- /dev/null +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/CartController.java @@ -0,0 +1,130 @@ +package com.zbkj.front.controller; + +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.request.CartNumRequest; +import com.zbkj.common.request.CartRequest; +import com.zbkj.common.request.CartResetRequest; +import com.zbkj.common.response.CartInfoResponse; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.service.service.StoreCartService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + + +/** + * 购物车 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/front/cart") +@Api(tags = "商品 -- 购物车") //配合swagger使用 +public class CartController { + + @Autowired + private StoreCartService storeCartService; + + /** + * 分页显示购物车表 + */ + @ApiOperation(value = "分页列表") //配合swagger使用 + @RequestMapping(value = "/list", method = RequestMethod.GET) + @ApiImplicitParams({ + @ApiImplicitParam(name="isValid", value="类型,true-有效商品,false-无效商品", required = true), + @ApiImplicitParam(name="page", value="页码", required = true), + @ApiImplicitParam(name="limit", value="每页数量", required = true) + }) + public CommonResult> getList(@RequestParam Boolean isValid, @Validated PageParamRequest pageParamRequest) { + CommonPage restPage = CommonPage.restPage(storeCartService.getList(pageParamRequest, isValid)); + return CommonResult.success(restPage); + } + + /** + * 新增购物车表 + * @param storeCartRequest 新增参数 + */ + @ApiOperation(value = "新增") + @RequestMapping(value = "/save", method = RequestMethod.POST) + public CommonResult> save(@RequestBody @Validated CartRequest storeCartRequest) { + String cartId = storeCartService.saveCate(storeCartRequest); + if (StringUtils.isNotBlank(cartId)) { + HashMap result = new HashMap<>(); + result.put("cartId", cartId); + return CommonResult.success(result); + } else { + return CommonResult.failed(); + } + } + + /** + * 删除购物车表 + * @param ids 购物车ids + */ + @ApiOperation(value = "删除") + @RequestMapping(value = "/delete", method = RequestMethod.POST) + public CommonResult delete(@RequestParam(value = "ids") List ids) { + if (storeCartService.deleteCartByIds(ids)) { + return CommonResult.success(); + } else { + return CommonResult.failed(); + } + } + + /** + * 修改商品数量 + * @param id integer id + * @param number 修改的产品数量 + */ + @ApiOperation(value = "修改") + @RequestMapping(value = "/num", method = RequestMethod.POST) + public CommonResult update(@RequestParam Integer id, @RequestParam Integer number) { + if (storeCartService.updateCartNum(id, number)) { + return CommonResult.success(); + } else { + return CommonResult.failed(); + } + } + + /** + * 获取购物车数量 + */ + @ApiOperation(value = "获取购物车数量") + @RequestMapping(value = "/count", method = RequestMethod.GET) + public CommonResult> count(@Validated CartNumRequest request) { + return CommonResult.success(storeCartService.getUserCount(request)); + } + + /** + * 购物车重选提交 + * @param resetRequest 重选参数 + * @return 结果 + */ + @ApiOperation(value = "购物车重选提交") + @RequestMapping(value = "/resetcart", method = RequestMethod.POST) + public CommonResult resetCart(@RequestBody @Validated CartResetRequest resetRequest){ + return CommonResult.success(storeCartService.resetCart(resetRequest)); + } +} + + + diff --git a/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/CityController.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/CityController.java new file mode 100644 index 0000000..431ff9f --- /dev/null +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/CityController.java @@ -0,0 +1,46 @@ +package com.zbkj.front.controller; + + +import com.zbkj.common.response.CommonResult; +import com.zbkj.service.service.SystemCityService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +/** + * 城市服务 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController("CityFrontController") +@RequestMapping("api/front/city") +@Api(tags = "城市服务") +public class CityController { + + @Autowired + private SystemCityService systemCityService; + + /** + * 城市服务树形结构数据 + */ + @ApiOperation(value = "树形结构") + @RequestMapping(value = "/list", method = RequestMethod.GET) + public CommonResult register(){ + return CommonResult.success(systemCityService.getListTree()); + } +} + + + diff --git a/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/CombinationController.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/CombinationController.java new file mode 100644 index 0000000..8a5f8c9 --- /dev/null +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/CombinationController.java @@ -0,0 +1,109 @@ +package com.zbkj.front.controller; + +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.request.PageParamRequest; +import com.github.pagehelper.PageInfo; +import com.zbkj.common.model.combination.StoreCombination; +import com.zbkj.common.request.StorePinkRequest; +import com.zbkj.common.response.*; +import com.zbkj.service.service.StoreCombinationService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +/** + * 拼团商品 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/front/combination") +@Api(tags = "拼团商品") +public class CombinationController { + + @Autowired + private StoreCombinationService storeCombinationService; + + /** + * 拼团首页 + */ + @ApiOperation(value = "拼团首页数据") + @RequestMapping(value = "/index", method = RequestMethod.GET) + public CommonResult index() { + return CommonResult.success(storeCombinationService.getIndexInfo()); + } + + /** + * 拼团商品列表header + */ + @ApiOperation(value = "拼团商品列表header") + @RequestMapping(value = "/header", method = RequestMethod.GET) + public CommonResult header() { + return CommonResult.success(storeCombinationService.getHeader()); + } + + /** + * 拼团商品列表 + */ + @ApiOperation(value = "拼团商品列表") + @RequestMapping(value = "/list", method = RequestMethod.GET) + public CommonResult> list(@ModelAttribute PageParamRequest pageParamRequest) { + return CommonResult.success(CommonPage.restPage(storeCombinationService.getH5List(pageParamRequest))); + } + + /** + * 拼团商品详情 + */ + @ApiOperation(value = "拼团商品详情") + @RequestMapping(value = "/detail/{id}", method = RequestMethod.GET) + public CommonResult detail(@PathVariable(value = "id") Integer id) { + CombinationDetailResponse h5Detail = storeCombinationService.getH5Detail(id); + return CommonResult.success(h5Detail); + } + + /** + * 去拼团 + * @param pinkId 拼团团长单id + */ + @ApiOperation(value = "去拼团") + @RequestMapping(value = "/pink/{pinkId}", method = RequestMethod.GET) + public CommonResult goPink(@PathVariable(value = "pinkId") Integer pinkId) { + GoPinkResponse goPinkResponse = storeCombinationService.goPink(pinkId); + return CommonResult.success(goPinkResponse); + } + + /** + * 更多拼团 + */ + @ApiOperation(value = "更多拼团") + @RequestMapping(value = "/more", method = RequestMethod.GET) + public CommonResult> getMore(@RequestParam Integer comId, @Validated PageParamRequest pageParamRequest) { + PageInfo more = storeCombinationService.getMore(pageParamRequest, comId); + return CommonResult.success(more); + } + + /** + * 取消拼团 + */ + @ApiOperation(value = "取消拼团") + @RequestMapping(value = "/remove", method = RequestMethod.POST) + public CommonResult remove(@RequestBody @Validated StorePinkRequest storePinkRequest) { + if (storeCombinationService.removePink(storePinkRequest)) { + return CommonResult.success("取消成功"); + } else { + return CommonResult.failed("取消失败"); + } + } + +} diff --git a/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/CouponController.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/CouponController.java new file mode 100644 index 0000000..3628fe9 --- /dev/null +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/CouponController.java @@ -0,0 +1,76 @@ +package com.zbkj.front.controller; + +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.response.StoreCouponFrontResponse; +import com.zbkj.common.response.StoreCouponUserOrder; +import com.zbkj.service.service.StoreCouponService; +import com.zbkj.service.service.StoreCouponUserService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + + +/** + * 优惠券表 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController("CouponFrontController") +@RequestMapping("api/front") +@Api(tags = "优惠券") +public class CouponController { + + @Autowired + private StoreCouponService storeCouponService; + + @Autowired + private StoreCouponUserService storeCouponUserService; + + + /** + * 分页显示优惠券表 + * @param type 类型,1-通用,2-商品,3-品类 + * @param productId 产品id,搜索产品指定优惠券 + * @param pageParamRequest 分页参数 + */ + @ApiOperation(value = "分页列表") + @RequestMapping(value = "/coupons", method = RequestMethod.GET) + @ApiImplicitParams({ + @ApiImplicitParam(name="type", value="类型,1-通用,2-商品,3-品类", required = true), + @ApiImplicitParam(name="productId", value="产品id"), + @ApiImplicitParam(name="page", value="页码", required = true), + @ApiImplicitParam(name="limit", value="每页数量", required = true) + }) + public CommonResult> getList(@RequestParam(value = "type", defaultValue = "0") int type, + @RequestParam(value = "productId", defaultValue = "0") int productId, @Validated PageParamRequest pageParamRequest) { + return CommonResult.success(storeCouponService.getH5List(type, productId, pageParamRequest)); + } + + /** + * 根据购物车id获取可用优惠券 + */ + @ApiOperation(value = "当前订单可用优惠券") + @RequestMapping(value = "coupons/order/{preOrderNo}", method = RequestMethod.GET) + public CommonResult> getCouponsListByPreOrderNo(@PathVariable String preOrderNo) { + return CommonResult.success(storeCouponUserService.getListByPreOrderNo(preOrderNo)); + } +} + + + diff --git a/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/IndexController.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/IndexController.java new file mode 100644 index 0000000..2631bc6 --- /dev/null +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/IndexController.java @@ -0,0 +1,113 @@ +package com.zbkj.front.controller; + + +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.model.system.SystemConfig; +import com.zbkj.common.response.IndexInfoResponse; +import com.zbkj.common.response.IndexProductResponse; +import com.zbkj.front.service.IndexService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 用户 -- 用户中心 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController("IndexController") +@RequestMapping("api/front") +@Api(tags = "首页") +public class IndexController { + + @Autowired + private IndexService indexService; + + /** + * 首页数据 + */ + @ApiOperation(value = "首页数据") + @RequestMapping(value = "/index", method = RequestMethod.GET) + public CommonResult getIndexInfo() { + return CommonResult.success(indexService.getIndexInfo()); + } + + /** + * 首页商品列表 + */ + @ApiOperation(value = "首页商品列表") + @RequestMapping(value = "/index/product/{type}", method = RequestMethod.GET) + @ApiImplicitParam(name = "type", value = "类型 【1 精品推荐 2 热门榜单 3首发新品 4促销单品】", dataType = "int", required = true) + public CommonResult> getProductList(@PathVariable(value = "type") Integer type, PageParamRequest pageParamRequest) { + + return CommonResult.success(indexService.findIndexProductList(type, pageParamRequest)); + } + + /** + * 热门搜索 + */ + @ApiOperation(value = "热门搜索") + @RequestMapping(value = "/search/keyword", method = RequestMethod.GET) + public CommonResult>> hotKeywords() { + return CommonResult.success(indexService.hotKeywords()); + } + + /** + * 分享配置 + */ + @ApiOperation(value = "分享配置") + @RequestMapping(value = "/share", method = RequestMethod.GET) + public CommonResult> share() { + return CommonResult.success(indexService.getShareConfig()); + } + + /** + * 颜色配置 + */ + @ApiOperation(value = "颜色配置") + @RequestMapping(value = "/index/color/config", method = RequestMethod.GET) + public CommonResult getColorConfig() { + return CommonResult.success(indexService.getColorConfig()); + } + + /** + * 版本信息 + */ + @ApiOperation(value = "获取版本信息") + @RequestMapping(value = "/index/get/version", method = RequestMethod.GET) + public CommonResult> getVersion() { + return CommonResult.success(indexService.getVersion()); + } + + /** + * 全局本地图片域名 + */ + @ApiOperation(value = "全局本地图片域名") + @RequestMapping(value = "/image/domain", method = RequestMethod.GET) + public CommonResult getImageDomain() { + return CommonResult.success(indexService.getImageDomain(), "成功"); + } +} + + + diff --git a/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/LoginController.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/LoginController.java new file mode 100644 index 0000000..62d3436 --- /dev/null +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/LoginController.java @@ -0,0 +1,94 @@ +package com.zbkj.front.controller; + + +import com.zbkj.common.request.LoginMobileRequest; +import com.zbkj.common.request.LoginRequest; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.response.LoginResponse; +import com.zbkj.front.service.LoginService; +import com.zbkj.service.service.SmsService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; + +/** + * 用户登陆 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController("FrontLoginController") +@RequestMapping("api/front") +@Api(tags = "用户 -- 登录注册") +public class LoginController { + + @Autowired + private SmsService smsService; + + @Autowired + private LoginService loginService; + + /** + * 手机号登录接口 + */ + @ApiOperation(value = "手机号登录接口") + @RequestMapping(value = "/login/mobile", method = RequestMethod.POST) + public CommonResult phoneLogin(@RequestBody @Validated LoginMobileRequest loginRequest) { + return CommonResult.success(loginService.phoneLogin(loginRequest)); + } + + /** + * 账号密码登录 + */ + @ApiOperation(value = "账号密码登录") + @RequestMapping(value = "/login", method = RequestMethod.POST) + public CommonResult login(@RequestBody @Validated LoginRequest loginRequest) { + return CommonResult.success(loginService.login(loginRequest)); + } + + + /** + * 退出登录 + */ + @ApiOperation(value = "退出") + @RequestMapping(value = "/logout", method = RequestMethod.GET) + public CommonResult loginOut(HttpServletRequest request){ + loginService.loginOut(request); + return CommonResult.success(); + } + + /** + * 发送短信登录验证码 + * @param phone 手机号码 + * @return 发送是否成功 + */ + @ApiOperation(value = "发送短信登录验证码") + @RequestMapping(value = "/sendCode", method = RequestMethod.POST) + @ApiImplicitParams({ + @ApiImplicitParam(name="phone", value="手机号码", required = true) + }) + public CommonResult sendCode(@RequestParam String phone){ + if(smsService.sendCommonCode(phone)){ + return CommonResult.success("发送成功"); + }else{ + return CommonResult.failed("发送失败"); + } + } +} + + + diff --git a/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/PayController.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/PayController.java new file mode 100644 index 0000000..b999799 --- /dev/null +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/PayController.java @@ -0,0 +1,62 @@ +package com.zbkj.front.controller; + +import com.zbkj.common.request.OrderPayRequest; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.response.OrderPayResultResponse; +import com.zbkj.common.utils.CrmebUtil; +import com.zbkj.service.service.OrderPayService; +import com.zbkj.service.service.WeChatPayService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; + +/** + * 微信缓存表 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/front/pay") +@Api(tags = "支付管理") +public class PayController { + + @Autowired + private WeChatPayService weChatPayService; + + @Autowired + private OrderPayService orderPayService; + + /** + * 订单支付 + */ + @ApiOperation(value = "订单支付") + @RequestMapping(value = "/payment", method = RequestMethod.POST) + public CommonResult payment(@RequestBody @Validated OrderPayRequest orderPayRequest, HttpServletRequest request) { + String ip = CrmebUtil.getClientIp(request); + return CommonResult.success(orderPayService.payment(orderPayRequest, ip)); + } + + /** + * 查询支付结果 + * + * @param orderNo |订单编号|String|必填 + */ + @ApiOperation(value = "查询支付结果") + @RequestMapping(value = "/queryPayResult", method = RequestMethod.GET) + public CommonResult queryPayResult(@RequestParam String orderNo) { + return CommonResult.success(weChatPayService.queryPayResult(orderNo)); + } +} diff --git a/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/ProductController.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/ProductController.java new file mode 100644 index 0000000..54c9ee5 --- /dev/null +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/ProductController.java @@ -0,0 +1,147 @@ +package com.zbkj.front.controller; + + +import com.zbkj.common.model.product.StoreProduct; +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.request.ProductListRequest; +import com.zbkj.common.request.ProductRequest; +import com.zbkj.common.response.*; +import com.zbkj.common.vo.CategoryTreeVo; +import com.zbkj.front.service.ProductService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 用户 -- 用户中心 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController("ProductController") +@RequestMapping("api/front") +@Api(tags = "商品") +public class ProductController { + + @Autowired + private ProductService productService; + + /** + * 热门商品推荐 + */ + @ApiOperation(value = "热门商品推荐") + @RequestMapping(value = "/product/hot", method = RequestMethod.GET) + public CommonResult> getHotProductList(@Validated PageParamRequest pageParamRequest) { + return CommonResult.success(productService.getHotProductList(pageParamRequest)); + } + + /** + * 优选商品推荐 + */ + @ApiOperation(value = "优选商品推荐") + @RequestMapping(value = "/product/good", method = RequestMethod.GET) + public CommonResult> getGoodProductList() { + return CommonResult.success(productService.getGoodProductList()); + } + + /** + * 获取分类 + */ + @ApiOperation(value = "获取分类") + @RequestMapping(value = "/category", method = RequestMethod.GET) + public CommonResult> getCategory() { + return CommonResult.success(productService.getCategory()); + } + + /** + * 商品列表 + */ + @ApiOperation(value = "商品列表") + @RequestMapping(value = "/products", method = RequestMethod.GET) + public CommonResult> getList(@Validated ProductRequest request, @Validated PageParamRequest pageParamRequest) { + return CommonResult.success(productService.getList(request, pageParamRequest)); + } + + /** + * 商品详情 + */ + @ApiOperation(value = "商品详情") + @RequestMapping(value = "/product/detail/{id}", method = RequestMethod.GET) + @ApiImplicitParam(name = "type", value = "normal-正常,video-视频") + public CommonResult getDetail(@PathVariable Integer id, @RequestParam(value = "type", defaultValue = "normal") String type) { + return CommonResult.success(productService.getDetail(id, type)); + } + + /** + * 商品评论列表 + */ + @ApiOperation(value = "商品评论列表") + @RequestMapping(value = "/reply/list/{id}", method = RequestMethod.GET) + @ApiImplicitParam(name = "type", value = "评价等级|0=全部,1=好评,2=中评,3=差评", allowableValues = "range[0,1,2,3]") + public CommonResult> getReplyList(@PathVariable Integer id, + @RequestParam(value = "type") Integer type, @Validated PageParamRequest pageParamRequest) { + return CommonResult.success(CommonPage.restPage(productService.getReplyList(id, type, pageParamRequest))); + } + + /** + * 商品评论数量 + */ + @ApiOperation(value = "商品评论数量") + @RequestMapping(value = "/reply/config/{id}", method = RequestMethod.GET) + public CommonResult getReplyCount(@PathVariable Integer id) { + return CommonResult.success(productService.getReplyCount(id)); + } + + /** + * 商品详情评论 + */ + @ApiOperation(value = "商品详情评论") + @RequestMapping(value = "/reply/product/{id}", method = RequestMethod.GET) + public CommonResult getProductReply(@PathVariable Integer id) { + return CommonResult.success(productService.getProductReply(id)); + } + + /** + * 商品列表 + */ + @ApiOperation(value = "商品列表(个别分类模型使用)") + @RequestMapping(value = "/product/list", method = RequestMethod.GET) + public CommonResult> getProductList(@Validated ProductListRequest request, @Validated PageParamRequest pageParamRequest) { + return CommonResult.success(productService.getCategoryProductList(request, pageParamRequest)); + } + + /** + * 商品规格详情 + */ + @ApiOperation(value = "商品规格详情") + @RequestMapping(value = "/product/sku/detail/{id}", method = RequestMethod.GET) + public CommonResult getSkuDetail(@PathVariable Integer id) { + return CommonResult.success(productService.getSkuDetail(id)); + } + + /** + * 商品排行榜 + */ + @ApiOperation(value = "商品排行榜") + @RequestMapping(value = "/product/leaderboard", method = RequestMethod.GET) + public CommonResult> getLeaderboard() { + return CommonResult.success(productService.getLeaderboard()); + } +} + + + diff --git a/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/QrCodeController.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/QrCodeController.java new file mode 100644 index 0000000..21294c2 --- /dev/null +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/QrCodeController.java @@ -0,0 +1,76 @@ +package com.zbkj.front.controller; + +import com.alibaba.fastjson.JSONObject; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.front.service.QrCodeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; + + +/** + * 验证码 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ + +@Slf4j +@RestController +@RequestMapping("api/front/qrcode") +@Api(tags = "二维码服务") +public class QrCodeController { + + @Autowired + private QrCodeService qrCodeService; + /** + * 获取二维码 + * @return CommonResult + */ + @ApiOperation(value="获取二维码") + @RequestMapping(value = "/get", method = RequestMethod.POST) + public CommonResult> get(@RequestBody JSONObject data) { + return CommonResult.success(qrCodeService.get(data)); + } + + /** + * 远程图片转base64 + * @return CommonResult + */ + @ApiOperation(value="远程图片转base64") + @RequestMapping(value = "/base64", method = RequestMethod.POST) + public CommonResult> get(@RequestParam String url) { + return CommonResult.success(qrCodeService.base64(url)); + } + + /** + * 将字符串 转base64 + * @return CommonResult + */ + @ApiOperation(value="将字符串 转base64") + @RequestMapping(value = "/str2base64", method = RequestMethod.POST) + public CommonResult> getQrcodeByString( + @RequestParam String text, + @RequestParam int width, + @RequestParam int height) { + if((width < 50 || height < 50) && (width > 500 || height > 500) && text.length() >= 999){ + throw new CrmebException(Constants.RESULT_QRCODE_PRAMERROR); + } + return CommonResult.success(qrCodeService.base64String(text, width,height)); + } +} + + + diff --git a/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/SecKillController.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/SecKillController.java new file mode 100644 index 0000000..ca60c39 --- /dev/null +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/SecKillController.java @@ -0,0 +1,73 @@ +package com.zbkj.front.controller; + +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.response.*; +import com.zbkj.service.service.StoreSeckillService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * SecKillController + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/front/seckill") +@Api(tags = "秒杀商品") +public class SecKillController { + + @Autowired + StoreSeckillService storeSeckillService; + + /** + * 秒杀首页数据 + * @return 可秒杀配置 + */ + @ApiOperation(value = "秒杀首页数据") + @RequestMapping(value = "/index", method = RequestMethod.GET) + public CommonResult index() { + return CommonResult.success(storeSeckillService.getIndexInfo()); + } + + /** + * 秒杀Index + * @return 可秒杀配置 + */ + @ApiOperation(value = "秒杀Header") + @RequestMapping(value = "/header", method = RequestMethod.GET) + public CommonResult> header() { + return CommonResult.success(storeSeckillService.getForH5Index()); + } + + /** + * 根据时间段查询秒杀信息 + * @return 查询时间内的秒杀商品列表 + */ + @ApiOperation(value = "秒杀列表") + @RequestMapping(value = "/list/{timeId}", method = RequestMethod.GET) + public CommonResult> list(@PathVariable("timeId") String timeId, @ModelAttribute PageParamRequest pageParamRequest) { + return CommonResult.success(CommonPage.restPage(storeSeckillService.getKillListByTimeId(timeId, pageParamRequest))); + } + + + @ApiOperation(value = "详情") + @RequestMapping(value = "/detail/{id}", method = RequestMethod.GET) + public CommonResult info(@PathVariable(value = "id") Integer id) { + StoreSeckillDetailResponse storeSeckill = storeSeckillService.getDetailH5(id); + return CommonResult.success(storeSeckill); + } +} diff --git a/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/StoreController.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/StoreController.java new file mode 100644 index 0000000..d800ad8 --- /dev/null +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/StoreController.java @@ -0,0 +1,49 @@ +package com.zbkj.front.controller; + + +import com.zbkj.common.request.StoreNearRequest; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.response.StoreNearResponse; +import com.zbkj.service.service.SystemStoreService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +/** + * 提货点 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController("StoreController") +@RequestMapping("api/front/store") +@Api(tags = "提货点") +public class StoreController { + @Autowired + private SystemStoreService systemStoreService; + + /** + * 附近的提货点 + */ + @ApiOperation(value = "附近的提货点") + @RequestMapping(value = "/list", method = RequestMethod.POST) + public CommonResult register(@Validated StoreNearRequest request, @Validated PageParamRequest pageParamRequest){ + return CommonResult.success(systemStoreService.getNearList(request, pageParamRequest)); + } +} + + + diff --git a/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/StoreOrderController.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/StoreOrderController.java new file mode 100644 index 0000000..6ae84fe --- /dev/null +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/StoreOrderController.java @@ -0,0 +1,229 @@ +package com.zbkj.front.controller; + +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.request.*; +import com.zbkj.common.response.*; +import com.zbkj.service.service.OrderService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Map; + +/** + * H5端订单操作 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController("StoreOrderFrontController") +@RequestMapping("api/front/order") +@Api(tags = "订单") +public class StoreOrderController { + + @Autowired + private OrderService orderService; + + /** + * 预下单 + */ + @ApiOperation(value = "预下单") + @RequestMapping(value = "/pre/order", method = RequestMethod.POST) + public CommonResult> preOrder(@RequestBody @Validated PreOrderRequest request) { + return CommonResult.success(orderService.preOrder(request)); + } + + /** + * 加载预下单 + */ + @ApiOperation(value = "加载预下单") + @RequestMapping(value = "load/pre/{preOrderNo}", method = RequestMethod.GET) + public CommonResult loadPreOrder(@PathVariable String preOrderNo) { + return CommonResult.success(orderService.loadPreOrder(preOrderNo)); + } + + /** + * 根据参数计算订单价格 + */ + @ApiOperation(value = "计算订单价格") + @RequestMapping(value = "/computed/price", method = RequestMethod.POST) + public CommonResult computedPrice(@Validated @RequestBody OrderComputedPriceRequest request) { + return CommonResult.success(orderService.computedOrderPrice(request)); + } + + /** + * 创建订单 + */ + @ApiOperation(value = "创建订单") + @RequestMapping(value = "/create", method = RequestMethod.POST) + public CommonResult> createOrder(@Validated @RequestBody CreateOrderRequest orderRequest) { + return CommonResult.success(orderService.createOrder(orderRequest)); + } + + /** + * 订单列表 + * @param type 类型 + * @param pageRequest 分页 + * @return 订单列表 + */ + @ApiOperation(value = "订单列表") + @RequestMapping(value = "/list", method = RequestMethod.GET) + @ApiImplicitParams ({ + @ApiImplicitParam(name = "type", value = "评价等级|0=未支付,1=待发货,2=待收货,3=待评价,4=已完成,-3=售后/退款", required = true) + }) + public CommonResult> orderList(@RequestParam(name = "type") Integer type, + @ModelAttribute PageParamRequest pageRequest) { + return CommonResult.success(orderService.list(type, pageRequest)); + } + + /** + * 订单详情 + * @param orderId 订单编号 + * @return 订单详情 + */ + @ApiOperation(value = "订单详情") + @RequestMapping(value = "/detail/{orderId}", method = RequestMethod.GET) + public CommonResult orderDetail(@PathVariable String orderId) { + return CommonResult.success(orderService.detailOrder(orderId)); + } + + /** + * 订单头部信息 + * @return 查询集合数量 + */ + @ApiOperation(value = "订单头部数量") + @RequestMapping(value = "/data", method = RequestMethod.GET) + public CommonResult orderData() { + return CommonResult.success(orderService.orderData()); + } + + /** + * 删除已完成订单 + * @param id String 订单号 + * @return 删除结果 + */ + @ApiOperation(value = "删除订单") + @RequestMapping(value = "/del", method = RequestMethod.POST) + public CommonResult delete(@RequestParam Integer id) { + if( orderService.delete(id)) { + return CommonResult.success(); + }else{ + return CommonResult.failed(); + } + } + + /** + * 订单评价 + * @param request StoreProductReplyAddRequest 评论参数 + */ + @ApiOperation(value = "评价订单") + @RequestMapping(value = "/comment", method = RequestMethod.POST) + public CommonResult comment(@RequestBody @Validated StoreProductReplyAddRequest request) { + if(orderService.reply(request)) { + return CommonResult.success(); + }else{ + return CommonResult.failed(); + } + } + + /** + * 订单收货 + * @param id Integer 订单id + */ + @ApiOperation(value = "订单收货") + @RequestMapping(value = "/take", method = RequestMethod.POST) + public CommonResult take(@RequestParam(value = "id") Integer id) { + if(orderService.take(id)) { + return CommonResult.success(); + }else{ + return CommonResult.failed(); + } + } + + /** + * 订单取消 + * @param id Integer 订单id + */ + @ApiOperation(value = "订单取消") + @RequestMapping(value = "/cancel", method = RequestMethod.POST) + public CommonResult cancel(@RequestParam(value = "id") Integer id) { + if(orderService.cancel(id)) { + return CommonResult.success(); + }else{ + return CommonResult.failed(); + } + } + + /** + * 获取申请订单退款信息 + * @param orderId 订单编号 + */ + @ApiOperation(value = "获取申请订单退款信息") + @RequestMapping(value = "/apply/refund/{orderId}", method = RequestMethod.GET) + public CommonResult refundApplyOrder(@PathVariable String orderId) { + return CommonResult.success(orderService.applyRefundOrderInfo(orderId)); + } + + /** + * 订单退款申请 + * @param request OrderRefundApplyRequest 订单id + */ + @ApiOperation(value = "订单退款申请") + @RequestMapping(value = "/refund", method = RequestMethod.POST) + public CommonResult refundApply(@RequestBody @Validated OrderRefundApplyRequest request) { + if(orderService.refundApply(request)) { + return CommonResult.success(); + }else{ + return CommonResult.failed(); + } + } + + /** + * 查询订单退款理由 + * @return 退款理由 + */ + @ApiOperation(value = "订单退款理由(商家提供)") + @RequestMapping(value = "/refund/reason", method = RequestMethod.GET) + public CommonResult> refundReason() { + return CommonResult.success(orderService.getRefundReason()); + } + + /** + * 根据订单号查询物流信息 + * @param orderId 订单号 + * @return 物流信息 + */ + @ApiOperation(value = "物流信息查询") + @RequestMapping(value = "/express/{orderId}", method = RequestMethod.GET) + public CommonResult getExpressInfo(@PathVariable String orderId) { + return CommonResult.success(orderService.expressOrder(orderId)); + } + + @ApiOperation(value = "待评价商品信息查询") + @RequestMapping(value = "/product", method = RequestMethod.POST) + public CommonResult getOrderProductForReply(@Validated @RequestBody GetProductReply request) { + return CommonResult.success(orderService.getReplyProduct(request)); + } + + /** + * 获取支付配置 + */ + @ApiOperation(value = "获取支付配置") + @RequestMapping(value = "get/pay/config", method = RequestMethod.GET) + public CommonResult getPayConfig() { + return CommonResult.success(orderService.getPayConfig()); + } +} diff --git a/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/UploadFrontController.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/UploadFrontController.java new file mode 100644 index 0000000..981ff85 --- /dev/null +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/UploadFrontController.java @@ -0,0 +1,58 @@ +package com.zbkj.front.controller; + +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.vo.FileResultVo; +import com.zbkj.service.service.UploadService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; + + +/** + * 商品表 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/front/user/upload") +@Api(tags = "上传文件") +public class UploadFrontController { + + @Autowired + private UploadService uploadService; + + /** + * 图片上传 + */ + @ApiOperation(value = "图片上传") + @RequestMapping(value = "/image", method = RequestMethod.POST) + @ApiImplicitParams({ + @ApiImplicitParam(name = "model", value = "模块 用户user,商品product,微信wechat,news文章"), + @ApiImplicitParam(name = "pid", value = "分类ID 0编辑器,1商品图片,2拼团图片,3砍价图片,4秒杀图片,5文章图片,6组合数据图,7前台用户,8微信系列 ", allowableValues = "range[0,1,2,3,4,5,6,7,8]") + }) + public CommonResult image(MultipartFile multipart,@RequestParam(value = "model") String model, + @RequestParam(value = "pid") Integer pid) throws IOException { + return CommonResult.success(uploadService.imageUpload(multipart, model, pid)); + } +} + + + diff --git a/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/UserAddressController.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/UserAddressController.java new file mode 100644 index 0000000..9910047 --- /dev/null +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/UserAddressController.java @@ -0,0 +1,107 @@ +package com.zbkj.front.controller; + +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.request.UserAddressDelRequest; +import com.zbkj.common.request.UserAddressRequest; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.model.user.UserAddress; +import com.zbkj.service.service.UserAddressService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + + +/** + * 用户地址 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/front/address") +@Api(tags = "用户 -- 地址") +public class UserAddressController { + + @Autowired + private UserAddressService userAddressService; + + /** + * 分页显示用户地址 + */ + @ApiOperation(value = "列表") + @RequestMapping(value = "/list", method = RequestMethod.GET) + public CommonResult> getList(PageParamRequest pageParamRequest) { + return CommonResult.success(CommonPage.restPage(userAddressService.getList(pageParamRequest))); + } + + /** + * 新增用户地址 + * @param request 新增参数 + */ + @ApiOperation(value = "保存") + @RequestMapping(value = "/edit", method = RequestMethod.POST) + public CommonResult save(@RequestBody @Validated UserAddressRequest request) { + return CommonResult.success(userAddressService.create(request)); + } + + /** + * 删除用户地址 + * @param request UserAddressDelRequest 参数 + */ + @ApiOperation(value = "删除") + @RequestMapping(value = "/del", method = RequestMethod.POST) + public CommonResult delete(@RequestBody UserAddressDelRequest request) { + if (userAddressService.delete(request.getId())) { + return CommonResult.success(); + } else { + return CommonResult.failed(); + } + } + + /** + * 地址详情 + */ + @ApiOperation(value = "地址详情") + @RequestMapping(value = "/detail/{id}", method = RequestMethod.GET) + public CommonResult info(@PathVariable("id") Integer id) { + return CommonResult.success(userAddressService.getDetail(id)); + } + + /** + * 获取默认地址 + */ + @ApiOperation(value = "获取默认地址") + @RequestMapping(value = "/default", method = RequestMethod.GET) + public CommonResult getDefault() { + return CommonResult.success(userAddressService.getDefault()); + + } + + /** + * 设置默认地址 + * @param request UserAddressDelRequest 参数 + */ + @ApiOperation(value = "设置默认地址") + @RequestMapping(value = "/default/set", method = RequestMethod.POST) + public CommonResult def(@RequestBody UserAddressDelRequest request) { + if (userAddressService.def(request.getId())) { + return CommonResult.success(); + } else { + return CommonResult.failed(); + } + } +} + + + diff --git a/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/UserCollectController.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/UserCollectController.java new file mode 100644 index 0000000..d99e1d5 --- /dev/null +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/UserCollectController.java @@ -0,0 +1,104 @@ +package com.zbkj.front.controller; + +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.request.UserCollectAllRequest; +import com.zbkj.common.request.UserCollectRequest; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.response.UserRelationResponse; +import com.zbkj.service.service.StoreProductRelationService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + + +/** + * 商品点赞和收藏表 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/front/collect") +@Api(tags = "用户 -- 点赞/收藏") +public class UserCollectController { + + @Autowired + private StoreProductRelationService storeProductRelationService; + + /** + * 我的收藏列表 + */ + @ApiOperation(value = "我的收藏列表") + @RequestMapping(value = "/user", method = RequestMethod.GET) + public CommonResult> getList(@Validated PageParamRequest pageParamRequest) { + return CommonResult.success(CommonPage.restPage(storeProductRelationService.getUserList(pageParamRequest))); + } + + /** + * 添加收藏产品 + * @param request StoreProductRelationRequest 新增参数 + */ + @ApiOperation(value = "添加收藏产品") + @RequestMapping(value = "/add", method = RequestMethod.POST) + public CommonResult save(@RequestBody @Validated UserCollectRequest request) { + if (storeProductRelationService.add(request)) { + return CommonResult.success(); + } else { + return CommonResult.failed(); + } + } + + /** + * 添加收藏产品 + * @param request UserCollectAllRequest 新增参数 + */ + @ApiOperation(value = "批量收藏") + @RequestMapping(value = "/all", method = RequestMethod.POST) + public CommonResult all(@RequestBody @Validated UserCollectAllRequest request) { + if (storeProductRelationService.all(request)) { + return CommonResult.success(); + } else { + return CommonResult.failed(); + } + } + + /** + * 取消收藏产品 + */ + @ApiOperation(value = "取消收藏产品") + @RequestMapping(value = "/delete", method = RequestMethod.POST) + public CommonResult delete(@RequestBody String requestJson) { + if (storeProductRelationService.delete(requestJson)) { + return CommonResult.success(); + } else { + return CommonResult.failed(); + } + } + + /** + * 取消收藏产品(通过商品) + */ + @ApiOperation(value = "取消收藏产品(通过商品)") + @RequestMapping(value = "/cancel/{proId}", method = RequestMethod.POST) + public CommonResult cancel(@PathVariable Integer proId) { + if (storeProductRelationService.deleteByProIdAndUid(proId)) { + return CommonResult.success(); + } else { + return CommonResult.failed(); + } + } +} + + + diff --git a/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/UserController.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/UserController.java new file mode 100644 index 0000000..ad5c95c --- /dev/null +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/UserController.java @@ -0,0 +1,305 @@ +package com.zbkj.front.controller; + + +import com.zbkj.common.page.CommonPage; +import com.github.pagehelper.PageInfo; +import com.zbkj.common.model.system.SystemUserLevel; +import com.zbkj.common.model.user.User; +import com.zbkj.common.model.user.UserExperienceRecord; +import com.zbkj.common.model.user.UserIntegralRecord; +import com.zbkj.common.request.*; +import com.zbkj.common.response.*; +import com.zbkj.front.service.UserCenterService; +import com.zbkj.service.service.SystemGroupDataService; +import com.zbkj.service.service.UserService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.math.BigDecimal; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 用户 -- 用户中心 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController("FrontUserController") +@RequestMapping("api/front") +@Api(tags = "用户 -- 用户中心") +public class UserController { + + @Autowired + private UserService userService; + + @Autowired + private SystemGroupDataService systemGroupDataService; + + @Autowired + private UserCenterService userCenterService; + + /** + * 修改密码 + */ + @ApiOperation(value = "手机号修改密码") + @RequestMapping(value = "/register/reset", method = RequestMethod.POST) + public CommonResult password(@RequestBody @Validated PasswordRequest request) { + return CommonResult.success(userService.password(request)); + } + + /** + * 修改个人资料 + */ + @ApiOperation(value = "修改个人资料") + @RequestMapping(value = "/user/edit", method = RequestMethod.POST) + public CommonResult personInfo(@RequestBody @Validated UserEditRequest request) { + if (userService.editUser(request)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 个人中心-用户信息 + */ + @ApiOperation(value = "个人中心-用户信息") + @RequestMapping(value = "/user", method = RequestMethod.GET) + public CommonResult getUserCenter() { + return CommonResult.success(userService.getUserCenter()); + } + + /** + * 换绑手机号校验 + */ + @ApiOperation(value = "换绑手机号校验") + @RequestMapping(value = "update/binding/verify", method = RequestMethod.POST) + public CommonResult updatePhoneVerify(@RequestBody @Validated UserBindingPhoneUpdateRequest request) { + return CommonResult.success(userService.updatePhoneVerify(request)); + } + + /** + * 绑定手机号 + */ + @ApiOperation(value = "换绑手机号") + @RequestMapping(value = "update/binding", method = RequestMethod.POST) + public CommonResult updatePhone(@RequestBody @Validated UserBindingPhoneUpdateRequest request) { + return CommonResult.success(userService.updatePhone(request)); + } + + /** + * 用户中心菜单 + */ + @ApiOperation(value = "获取个人中心菜单") + @RequestMapping(value = "/menu/user", method = RequestMethod.GET) + public CommonResult> getMenuUser() { + return CommonResult.success(systemGroupDataService.getMenuUser()); + } + + /** + * 推广数据接口(昨天的佣金 累计提现金额 当前佣金) + */ + @ApiOperation(value = "推广数据接口(昨天的佣金 累计提现金额 当前佣金)") + @RequestMapping(value = "/commission", method = RequestMethod.GET) + public CommonResult getCommission() { + return CommonResult.success(userCenterService.getCommission()); + } + + /** + * 推广佣金明细 + */ + @ApiOperation(value = "推广佣金明细") + @RequestMapping(value = "/spread/commission/detail", method = RequestMethod.GET) + public CommonResult> getSpreadCommissionDetail(@Validated PageParamRequest pageParamRequest) { + PageInfo commissionDetail = userCenterService.getSpreadCommissionDetail(pageParamRequest); + return CommonResult.success(CommonPage.restPage(commissionDetail)); + } + + /** + * 推广佣金/提现总和 + */ + @ApiOperation(value = "推广佣金/提现总和") + @RequestMapping(value = "/spread/count/{type}", method = RequestMethod.GET) + @ApiImplicitParam(name = "type", value = "类型 佣金类型3=佣金,4=提现", allowableValues = "range[3,4]", dataType = "int") + public CommonResult> getSpreadCountByType(@PathVariable Integer type) { + Map map = new HashMap<>(); + map.put("count", userCenterService.getSpreadCountByType(type)); + return CommonResult.success(map); + } + + /** + * 提现申请 + */ + @ApiOperation(value = "提现申请") + @RequestMapping(value = "/extract/cash", method = RequestMethod.POST) + public CommonResult extractCash(@RequestBody @Validated UserExtractRequest request) { + return CommonResult.success(userCenterService.extractCash(request)); + } + + /** + * 提现记录 + */ + @ApiOperation(value = "提现记录") + @RequestMapping(value = "/extract/record", method = RequestMethod.GET) + public CommonResult> getExtractRecord(@Validated PageParamRequest pageParamRequest) { + return CommonResult.success(CommonPage.restPage(userCenterService.getExtractRecord(pageParamRequest))); + } + + /** + * 提现用户信息 + */ + @ApiOperation(value = "提现用户信息") + @RequestMapping(value = "/extract/user", method = RequestMethod.GET) + public CommonResult getExtractUser() { + return CommonResult.success(userCenterService.getExtractUser()); + } + + /** + * 提现银行 + */ + @ApiOperation(value = "提现银行/提现最低金额") + @RequestMapping(value = "/extract/bank", method = RequestMethod.GET) + public CommonResult> getExtractBank() { + return CommonResult.success(userCenterService.getExtractBank()); + } + + /** + * 会员等级列表 + */ + @ApiOperation(value = "会员等级列表") + @RequestMapping(value = "/user/level/grade", method = RequestMethod.GET) + public CommonResult> getUserLevelList() { + return CommonResult.success(userCenterService.getUserLevelList()); + } + + /** + * 推广人统计 + */ + @ApiOperation(value = "推广人统计") + @RequestMapping(value = "/spread/people/count", method = RequestMethod.GET) + public CommonResult getSpreadPeopleCount() { + return CommonResult.success(userCenterService.getSpreadPeopleCount()); + } + + /** + * 推广人列表 + */ + @ApiOperation(value = "推广人列表") + @RequestMapping(value = "/spread/people", method = RequestMethod.GET) + public CommonResult> getSpreadPeopleList(@Validated UserSpreadPeopleRequest request, @Validated PageParamRequest pageParamRequest) { + List spreadPeopleList = userCenterService.getSpreadPeopleList(request, pageParamRequest); + CommonPage commonPage = CommonPage.restPage(spreadPeopleList); + return CommonResult.success(commonPage); + } + + /** + * 用户积分信息 + */ + @ApiOperation(value = "用户积分信息") + @RequestMapping(value = "/integral/user", method = RequestMethod.GET) + public CommonResult getIntegralUser() { + return CommonResult.success(userCenterService.getIntegralUser()); + } + + /** + * 积分记录 + */ + @ApiOperation(value = "积分记录") + @RequestMapping(value = "/integral/list", method = RequestMethod.GET) + public CommonResult> getIntegralList(@Validated PageParamRequest pageParamRequest) { + return CommonResult.success(CommonPage.restPage(userCenterService.getUserIntegralRecordList(pageParamRequest))); + } + + /** + * 经验记录 + */ + @ApiOperation(value = "经验记录") + @RequestMapping(value = "/user/expList", method = RequestMethod.GET) + public CommonResult> getExperienceList(@Validated PageParamRequest pageParamRequest) { + return CommonResult.success(CommonPage.restPage(userCenterService.getUserExperienceList(pageParamRequest))); + } + + /** + * 用户资金统计 + */ + @ApiOperation(value = "用户资金统计") + @RequestMapping(value = "/user/balance", method = RequestMethod.GET) + public CommonResult getUserBalance() { + return CommonResult.success(userCenterService.getUserBalance()); + } + + /** + * 推广订单 + */ + @ApiOperation(value = "推广订单") + @RequestMapping(value = "/spread/order", method = RequestMethod.GET) + public CommonResult getSpreadOrder(@Validated PageParamRequest pageParamRequest) { + return CommonResult.success(userCenterService.getSpreadOrder(pageParamRequest)); + } + + /** + * 推广人排行 + * @return List + */ + @ApiOperation(value = "推广人排行") + @RequestMapping(value = "/rank", method = RequestMethod.GET) + public CommonResult> getTopSpreadPeopleListByDate(@RequestParam(required = false) String type, @Validated PageParamRequest pageParamRequest) { + return CommonResult.success(userCenterService.getTopSpreadPeopleListByDate(type, pageParamRequest)); + } + + /** + * 佣金排行 + * @return 优惠券集合 + */ + @ApiOperation(value = "佣金排行") + @RequestMapping(value = "/brokerage_rank", method = RequestMethod.GET) + public CommonResult> getTopBrokerageListByDate(@RequestParam String type, @Validated PageParamRequest pageParamRequest) { + return CommonResult.success(userCenterService.getTopBrokerageListByDate(type, pageParamRequest)); + } + + /** + * 当前用户在佣金排行第几名 + */ + @ApiOperation(value = "当前用户在佣金排行第几名") + @RequestMapping(value = "/user/brokerageRankNumber", method = RequestMethod.GET) + public CommonResult getNumberByTop(@RequestParam String type) { + return CommonResult.success(userCenterService.getNumberByTop(type)); + } + + /** + * 海报背景图 + */ + @ApiOperation(value = "推广海报图") + @RequestMapping(value = "/user/spread/banner", method = RequestMethod.GET) + public CommonResult> getSpreadBannerList() { + return CommonResult.success(userCenterService.getSpreadBannerList()); + } + + /** + * 绑定推广关系(登录状态) + * @param spreadPid 推广id + * @return 绑定结果 + */ + @ApiOperation(value = "绑定推广关系(登录状态)") + @RequestMapping(value = "/user/bindSpread", method = RequestMethod.GET) + public CommonResult bindsSpread(Integer spreadPid) { + userService.bindSpread(spreadPid); + return CommonResult.success(); + } +} + + + diff --git a/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/UserCouponController.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/UserCouponController.java new file mode 100644 index 0000000..39c83e9 --- /dev/null +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/UserCouponController.java @@ -0,0 +1,71 @@ +package com.zbkj.front.controller; + +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.request.UserCouponReceiveRequest; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.response.StoreCouponUserResponse; +import com.zbkj.service.service.StoreCouponUserService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +/** + * 优惠卷控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/front/coupon") +@Api(tags = "营销 -- 优惠券") +public class UserCouponController { + + @Autowired + private StoreCouponUserService storeCouponUserService; + + /** + * 我的优惠券 + */ + @ApiOperation(value = "我的优惠券") + @RequestMapping(value = "/list", method = RequestMethod.GET) + @ApiImplicitParams({ + @ApiImplicitParam(name="type", value="类型,usable-可用,unusable-不可用", required = true), + @ApiImplicitParam(name="page", value="页码", required = true), + @ApiImplicitParam(name="limit", value="每页数量", required = true) + }) + public CommonResult> getList(@RequestParam(value = "type") String type, + @Validated PageParamRequest pageParamRequest) { + return CommonResult.success(storeCouponUserService.getMyCouponList(type, pageParamRequest)); + } + + /** + * 领券 + * @param request UserCouponReceiveRequest 新增参数 + */ + @ApiOperation(value = "领券") + @RequestMapping(value = "/receive", method = RequestMethod.POST) + public CommonResult receive(@RequestBody @Validated UserCouponReceiveRequest request) { + if (storeCouponUserService.receiveCoupon(request)) { + return CommonResult.success(); + } else { + return CommonResult.failed(); + } + } + +} + + + diff --git a/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/UserRechargeController.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/UserRechargeController.java new file mode 100644 index 0000000..fc00d82 --- /dev/null +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/UserRechargeController.java @@ -0,0 +1,101 @@ +package com.zbkj.front.controller; + +import com.zbkj.common.constants.Constants; +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.request.UserRechargeRequest; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.response.OrderPayResultResponse; +import com.zbkj.common.response.UserRechargeBillRecordResponse; +import com.zbkj.common.response.UserRechargeFrontResponse; +import com.zbkj.common.utils.CrmebUtil; +import com.zbkj.front.service.UserCenterService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; +import java.math.BigDecimal; +import java.util.HashMap; +import java.util.Map; + +/** + * 用户 -- 充值 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController("UserRechargeController") +@RequestMapping("api/front/recharge") +@Api(tags = "用户 -- 充值") +public class UserRechargeController { + @Autowired + private UserCenterService userCenterService; + + /** + * 充值额度选择 + */ + @ApiOperation(value = "充值额度选择") + @RequestMapping(value = "/index", method = RequestMethod.GET) + public CommonResult getRechargeConfig() { + return CommonResult.success(userCenterService.getRechargeConfig()); + } + + /** + * 小程序充值 + */ + @ApiOperation(value = "小程序充值") + @RequestMapping(value = "/routine", method = RequestMethod.POST) + public CommonResult> routineRecharge(HttpServletRequest httpServletRequest, @RequestBody @Validated UserRechargeRequest request) { + request.setFromType(Constants.PAY_TYPE_WE_CHAT_FROM_PROGRAM); + request.setClientIp(CrmebUtil.getClientIp(httpServletRequest)); + OrderPayResultResponse recharge = userCenterService.recharge(request); + Map map = new HashMap<>(); + map.put("data", recharge); + map.put("type", request.getFromType()); + return CommonResult.success(map); + } + + /** + * 公众号充值 + */ + @ApiOperation(value = "公众号充值") + @RequestMapping(value = "/wechat", method = RequestMethod.POST) + public CommonResult weChatRecharge(HttpServletRequest httpServletRequest, @RequestBody @Validated UserRechargeRequest request) { + request.setClientIp(CrmebUtil.getClientIp(httpServletRequest)); + return CommonResult.success(userCenterService.recharge(request)); + } + + /** + * 佣金转入余额 + */ + @ApiOperation(value = "佣金转入余额") + @RequestMapping(value = "/transferIn", method = RequestMethod.POST) + public CommonResult transferIn(@RequestParam(name = "price") BigDecimal price) { + return CommonResult.success(userCenterService.transferIn(price)); + } + + /** + * 用户账单记录 + */ + @ApiOperation(value = "用户账单记录") + @RequestMapping(value = "/bill/record", method = RequestMethod.GET) + @ApiImplicitParam(name = "type", value = "记录类型:all-全部,expenditure-支出,income-收入", required = true) + public CommonResult> billRecord(@RequestParam(name = "type") String type, @ModelAttribute PageParamRequest pageRequest) { + return CommonResult.success(userCenterService.nowMoneyBillRecord(type, pageRequest)); + } +} + + + diff --git a/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/UserSignController.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/UserSignController.java new file mode 100644 index 0000000..24dbabd --- /dev/null +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/UserSignController.java @@ -0,0 +1,105 @@ +package com.zbkj.front.controller; + +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.response.UserSignInfoResponse; +import com.zbkj.common.vo.SystemGroupDataSignConfigVo; +import com.zbkj.common.vo.UserSignMonthVo; +import com.zbkj.common.vo.UserSignVo; +import com.zbkj.service.service.UserSignService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +import java.util.HashMap; +import java.util.List; + + +/** + * 签到记录表 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/front/user/sign") +@Api(tags = "用户 -- 签到") +public class UserSignController { + + @Autowired + private UserSignService userSignService; + + /** + * 签到列表 + * @param pageParamRequest 分页参数 + */ + @ApiOperation(value = "分页列表") + @RequestMapping(value = "/list", method = RequestMethod.GET) + public CommonResult> getList(@Validated PageParamRequest pageParamRequest) { + CommonPage userSignCommonPage = CommonPage.restPage(userSignService.getList(pageParamRequest)); + return CommonResult.success(userSignCommonPage); + } + + /** + * 签到列表,年月纬度 + * @param pageParamRequest 分页参数 + */ + @ApiOperation(value = "分页列表") + @RequestMapping(value = "/month", method = RequestMethod.GET) + public CommonResult> getListGroupMonth(@Validated PageParamRequest pageParamRequest) { + CommonPage userSignCommonPage = CommonPage.restPage(userSignService.getListGroupMonth(pageParamRequest)); + return CommonResult.success(userSignCommonPage); + } + + /** + * 配置 + */ + @ApiOperation(value = "配置") + @RequestMapping(value = "/config", method = RequestMethod.GET) + public CommonResult> config() { + return CommonResult.success(userSignService.getSignConfig()); + } + + /** + * 签到 + */ + @ApiOperation(value = "签到") + @RequestMapping(value = "/integral", method = RequestMethod.GET) + public CommonResult info() { + return CommonResult.success(userSignService.sign()); + } + + /** + * 今日记录详情 + */ + @ApiOperation(value = "今日记录详情") + @RequestMapping(value = "/get", method = RequestMethod.GET) + public CommonResult> get() { + return CommonResult.success(userSignService.get()); + } + + /** + * 签到用户信息 + */ + @ApiOperation(value = "签到用户信息") + @RequestMapping(value = "/user", method = RequestMethod.POST) + public CommonResult getUserInfo() { + return CommonResult.success(userSignService.getUserSignInfo()); + } +} + + + diff --git a/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/WeChatController.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/WeChatController.java new file mode 100644 index 0000000..6f66a0d --- /dev/null +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/WeChatController.java @@ -0,0 +1,119 @@ +package com.zbkj.front.controller; + +import com.zbkj.common.model.wechat.TemplateMessage; +import com.zbkj.common.request.RegisterAppWxRequest; +import com.zbkj.common.request.RegisterThirdUserRequest; +import com.zbkj.common.request.WxBindingPhoneRequest; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.response.LoginResponse; +import com.zbkj.common.response.WeChatJsSdkConfigResponse; +import com.zbkj.front.service.UserCenterService; +import com.zbkj.service.service.SystemNotificationService; +import com.zbkj.service.service.WechatNewService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + + +/** + * 微信缓存表 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController("WeChatFrontController") +@RequestMapping("api/front/wechat") +@Api(tags = "微信 -- 开放平台") +public class WeChatController { + + @Autowired + private UserCenterService userCenterService; + + @Autowired + private WechatNewService wechatNewService; + + @Autowired + private SystemNotificationService systemNotificationService; + + /** + * 通过微信code登录 + */ + @ApiOperation(value = "微信登录公共号授权登录") + @RequestMapping(value = "/authorize/login", method = RequestMethod.GET) + @ApiImplicitParams({ + @ApiImplicitParam(name = "spread_spid", value = "推荐人id", dataType = "Integer"), + @ApiImplicitParam(name = "code", value = "code码", dataType = "String", required = true) + }) + public CommonResult login(@RequestParam(value = "spread_spid", defaultValue = "0", required = false) Integer spreadUid, + @RequestParam(value = "code") String code){ + return CommonResult.success(userCenterService.weChatAuthorizeLogin(code, spreadUid)); + } + + /** + * 微信登录小程序授权登录 + */ + @ApiOperation(value = "微信登录小程序授权登录") + @RequestMapping(value = "/authorize/program/login", method = RequestMethod.POST) + public CommonResult programLogin(@RequestParam String code, @RequestBody @Validated RegisterThirdUserRequest request){ + return CommonResult.success(userCenterService.weChatAuthorizeProgramLogin(code, request)); + } + + /** + * 微信注册绑定手机号 + */ + @ApiOperation(value = "微信注册绑定手机号") + @RequestMapping(value = "/register/binding/phone", method = RequestMethod.POST) + public CommonResult registerBindingPhone(@RequestBody @Validated WxBindingPhoneRequest request){ + return CommonResult.success(userCenterService.registerBindingPhone(request)); + } + + /** + * 获取微信公众号js配置 + */ + @ApiOperation(value = "获取微信公众号js配置") + @RequestMapping(value = "/config", method = RequestMethod.GET) + @ApiImplicitParam(name = "url", value = "页面地址url") + public CommonResult configJs(@RequestParam(value = "url") String url){ + return CommonResult.success(wechatNewService.getJsSdkConfig(url)); + } + + /** + * 小程序获取授权logo + */ + @ApiOperation(value = "小程序获取授权logo") + @RequestMapping(value = "/getLogo", method = RequestMethod.GET) + public CommonResult> getLogo(){ + Map map = new HashMap<>(); + map.put("logoUrl", userCenterService.getLogo()); + return CommonResult.success(map); + } + + /** + * 订阅消息模板列表 + */ + @ApiOperation(value = "订阅消息模板列表") + @RequestMapping(value = "/program/my/temp/list", method = RequestMethod.GET) + @ApiImplicitParam(name = "type", value = "支付之前:beforePay|支付成功:afterPay|申请退款:refundApply|充值之前:beforeRecharge|创建砍价:createBargain|参与拼团:pink|取消拼团:cancelPink") + public CommonResult> programMyTempList(@RequestParam(name = "type") String type){ + return CommonResult.success(systemNotificationService.getMiniTempList(type)); + } +} + + + diff --git a/crmeb/crmeb-front/src/main/java/com/zbkj/front/filter/ResponseFilter.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/filter/ResponseFilter.java new file mode 100644 index 0000000..12568fb --- /dev/null +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/filter/ResponseFilter.java @@ -0,0 +1,56 @@ +package com.zbkj.front.filter; + + +import com.zbkj.common.utils.RequestUtil; + +import javax.servlet.*; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.nio.charset.StandardCharsets; + + +/** + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + * 返回值输出过滤器 + */ +//@Component +public class ResponseFilter implements Filter { + + @Override + public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) + throws IOException, ServletException { + ResponseWrapper wrapperResponse = new ResponseWrapper((HttpServletResponse) response);//转换成代理类 + // 这里只拦截返回,直接让请求过去,如果在请求前有处理,可以在这里处理 + filterChain.doFilter(request, wrapperResponse); + byte[] content = wrapperResponse.getContent();//获取返回值 + //判断是否有值 + if (content.length > 0) { + String str = new String(content, StandardCharsets.UTF_8); + + try { + HttpServletRequest req = (HttpServletRequest) request; + str = new ResponseRouter().filter(str, RequestUtil.getUri(req)); + } catch (Exception e) { + e.printStackTrace(); + } + //把返回值输出到客户端 + ServletOutputStream outputStream = response.getOutputStream(); + if (str.length() > 0) { + outputStream.write(str.getBytes()); + outputStream.flush(); + outputStream.close(); + //最后添加这一句,输出到客户端 + response.flushBuffer(); + } + } + } +} diff --git a/crmeb/crmeb-front/src/main/java/com/zbkj/front/filter/ResponseRouter.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/filter/ResponseRouter.java new file mode 100644 index 0000000..97a5566 --- /dev/null +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/filter/ResponseRouter.java @@ -0,0 +1,46 @@ +package com.zbkj.front.filter; + +import com.zbkj.common.constants.Constants; +import com.zbkj.common.utils.SpringUtil; +import com.zbkj.service.service.SystemAttachmentService; + +/** + * response路径处理 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class ResponseRouter { + + public String filter(String data, String path) { + boolean result = un().contains(path); + if (result) { + return data; + } + + if (!path.contains("api/admin/") && !path.contains("api/front/")) { + return data; + } + + //根据需要处理返回值 + if (data.contains(Constants.UPLOAD_TYPE_IMAGE+"/") && !data.contains("data:image/png;base64")) { + data = SpringUtil.getBean(SystemAttachmentService.class).prefixImage(data); + } + + if (data.contains("file/")) { + data = SpringUtil.getBean(SystemAttachmentService.class).prefixFile(data); + } + + return data; + } + + public static String un() { + return ""; + } +} diff --git a/crmeb/crmeb-front/src/main/java/com/zbkj/front/filter/ResponseWrapper.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/filter/ResponseWrapper.java new file mode 100644 index 0000000..23392d1 --- /dev/null +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/filter/ResponseWrapper.java @@ -0,0 +1,77 @@ +package com.zbkj.front.filter; + + +import javax.servlet.ServletOutputStream; +import javax.servlet.WriteListener; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpServletResponseWrapper; +import java.io.ByteArrayOutputStream; +import java.io.IOException; + +/** + * Response包装类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class ResponseWrapper extends HttpServletResponseWrapper { + + private ByteArrayOutputStream buffer; + + private ServletOutputStream out; + + public ResponseWrapper(HttpServletResponse httpServletResponse) { + super(httpServletResponse); + buffer = new ByteArrayOutputStream(); + out = new WrapperOutputStream(buffer); + } + + @Override + public ServletOutputStream getOutputStream() { + return out; + } + + @Override + public void flushBuffer() + throws IOException { + if (out != null) { + out.flush(); + } + } + + public byte[] getContent() + throws IOException { + flushBuffer(); + return buffer.toByteArray(); + } + + static class WrapperOutputStream extends ServletOutputStream { + private ByteArrayOutputStream bos; + + public WrapperOutputStream(ByteArrayOutputStream bos) { + this.bos = bos; + } + + @Override + public void write(int b) { + bos.write(b); + } + + @Override + public boolean isReady() { + return false; + + } + + @Override + public void setWriteListener(WriteListener arg0) { + + } + } +} diff --git a/crmeb/crmeb-front/src/main/java/com/zbkj/front/interceptor/FrontTokenInterceptor.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/interceptor/FrontTokenInterceptor.java new file mode 100644 index 0000000..ba13fa8 --- /dev/null +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/interceptor/FrontTokenInterceptor.java @@ -0,0 +1,60 @@ +package com.zbkj.front.interceptor; + +import com.alibaba.fastjson.JSONObject; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.token.FrontTokenComponent; +import com.zbkj.common.utils.RequestUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.servlet.HandlerInterceptor; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +/** + * 移动端管理端 token验证拦截器 使用前注意需要一个@Bean手动注解,否则注入无效 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public class FrontTokenInterceptor implements HandlerInterceptor { + + @Autowired + private FrontTokenComponent frontTokenComponent; + + //程序处理之前需要处理的业务 + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { + response.setCharacterEncoding("UTF-8"); + String token = frontTokenComponent.getToken(request); + if(token == null || token.isEmpty()){ + //判断路由,部分路由不管用户是否登录都可以访问 + boolean result = frontTokenComponent.checkRouter(RequestUtil.getUri(request)); + if(result){ + return true; + } + response.getWriter().write(JSONObject.toJSONString(CommonResult.unauthorized())); + return false; + } + + Boolean result = frontTokenComponent.check(token, request); + if(!result){ + response.getWriter().write(JSONObject.toJSONString(CommonResult.unauthorized())); + return false; + } + return true; + } + + public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) { + } + + public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { + + } + +} diff --git a/crmeb/crmeb-front/src/main/java/com/zbkj/front/pub/GetJSConfig.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/pub/GetJSConfig.java new file mode 100644 index 0000000..53b8d80 --- /dev/null +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/pub/GetJSConfig.java @@ -0,0 +1,34 @@ +package com.zbkj.front.pub; + +import com.zbkj.common.constants.Constants; +import com.zbkj.service.service.SystemConfigService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +/** + * @program: crmeb + * @author: 大粽子 + * @create: 2021-09-23 09:18 + **/ +@Slf4j +@RestController +@RequestMapping("api/public/jsconfig") +@Api(tags = "公共JS配置") +public class GetJSConfig { + + @Autowired + private SystemConfigService systemConfigService; + + @PreAuthorize("hasAuthority('public:jsconfig:getcrmebchatconfig')") + @ApiOperation(value = "CRMEB-chat客服统计") + @RequestMapping(value = "/getcrmebchatconfig", method = RequestMethod.GET) + public String set(){ + return systemConfigService.getValueByKey(Constants.JS_CONFIG_CRMEB_CHAT_TONGJI); + } +} diff --git a/crmeb/crmeb-front/src/main/java/com/zbkj/front/pub/ImageMergeController.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/pub/ImageMergeController.java new file mode 100644 index 0000000..cf9f867 --- /dev/null +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/pub/ImageMergeController.java @@ -0,0 +1,45 @@ +package com.zbkj.front.pub; + +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.utils.ImageMergeUtil; +import com.zbkj.common.vo.ImageMergeUtilVo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 图片操作 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/public/qrcode") +@Api(tags = "图片操作") +public class ImageMergeController { + + @ApiOperation(value = "合并图片返回文件") + @RequestMapping(value = "/mergeList", method = RequestMethod.POST) + public CommonResult> mergeList(@RequestBody @Validated List list){ + Map map = new HashMap<>(); + map.put("base64Code", ImageMergeUtil.drawWordFile(list)); //需要云服务域名,如果需要存入数据库参照上传图片服务 + return CommonResult.success(map); + } +} diff --git a/crmeb/crmeb-front/src/main/java/com/zbkj/front/pub/WeChatPushController.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/pub/WeChatPushController.java new file mode 100644 index 0000000..12a70c0 --- /dev/null +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/pub/WeChatPushController.java @@ -0,0 +1,153 @@ +package com.zbkj.front.pub; + +import com.alibaba.fastjson.JSONObject; +import com.zbkj.common.response.CommonResult; +import com.zbkj.common.utils.RestTemplateUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; + + +/** + * 后台管理员表 前端控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Slf4j +@RestController +@RequestMapping("api/public/wechat") +@Api(tags = "企业微信消息推送") +public class WeChatPushController { + + private static String url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key="; + + @Resource + private RestTemplateUtil restTemplateUtil; + + + /** + * 新增后台管理员表 + * @param message string message + * @author Mr.Zhang + * @since 2020-04-13 + */ + @ApiOperation(value = "gitlab钩子") + @RequestMapping(value = "/gitlab", method = RequestMethod.POST) + @ApiImplicitParams({ + @ApiImplicitParam(name="message", value="推送消息内容"), + @ApiImplicitParam(name="token", value="企业微信群token"), + }) + public CommonResult gitlab(@RequestBody String message, + @RequestParam(name = "token", required = true) String token){ + + Map map = new HashMap<>(); + map.put("msgtype", "text"); + + Map text = new HashMap<>(); + + //需要@的人 + ArrayList people = new ArrayList<>(); + people.add("@all"); + text.put("mentioned_list", people); + + //gitlab 动作标签 + JSONObject jsonObject = JSONObject.parseObject(message); + String action = jsonObject.getString("object_kind"); + String content; + switch(action){ + case "push": + content = jsonObject.getJSONArray("commits").getJSONObject(0).getJSONObject("author").getString("name") + " " + + action + " " + + jsonObject.getString("ref").replace("refs/heads/", "") + + "\n 备注:\n" + + jsonObject.getJSONArray("commits").getJSONObject(0).getString("message"); + break; + case "tag_push": + content = jsonObject.getString("user_name") + " " + + action + " " + + jsonObject.getString("ref").replace("refs/heads/", "") + + "\n 备注:\n" + + jsonObject.getJSONArray("commits").getJSONObject(0).getString("message"); + break; + case "note": + String author = "未知用户"; + if(jsonObject.containsKey("commit")){ + author = jsonObject.getJSONObject("commit").getJSONObject("author").getString("name"); + } + + if(jsonObject.containsKey("last_commit")){ + author = jsonObject.getJSONObject("last_commit").getJSONObject("author").getString("name"); + } + + content = author + + " 提交代码到 " + + jsonObject.getJSONObject("project").getString("default_branch") + + "\n 备注:\n" + + jsonObject.getJSONObject("object_attributes").getString("note"); + break; + case "merge_request": + content = jsonObject.getJSONObject("object_attributes").getJSONObject("assignee").getString("name") + " " + + "合并代码, 从 " + + jsonObject.getJSONObject("object_attributes").getString("source_branch") + " ---> " + + jsonObject.getJSONObject("object_attributes").getString("target_branch") + + "\n 备注:\n" + + jsonObject.getJSONObject("object_attributes").getJSONObject("last_commit").getString("message"); + break; + default: + content = "gitlab 项目有更新"; + } + + text.put("content", content); + map.put("text", text); + String result = restTemplateUtil.postMapData(url + token, map); + return CommonResult.success(JSONObject.parseObject(result)); + } + + /** + * 新增后台管理员表 + * @param message string message + * @author Mr.Zhang + * @since 2020-04-13 + */ + @ApiOperation(value = "消息推送") + @RequestMapping(value = "/push", method = RequestMethod.GET) + @ApiImplicitParams({ + @ApiImplicitParam(name="message", value="推送消息内容"), + @ApiImplicitParam(name="token", value="企业微信群token"), + }) + public CommonResult push(@RequestParam(name = "message") String message, + @RequestParam(name = "token") String token){ + + Map map = new HashMap<>(); + map.put("msgtype", "text"); + + Map text = new HashMap<>(); + + //需要@的人 + ArrayList people = new ArrayList<>(); + people.add("@all"); + text.put("mentioned_list", people); + text.put("content", message); + map.put("text", text); + String result = restTemplateUtil.postMapData(url + token, map); + return CommonResult.success(JSONObject.parseObject(result)); + } +} + + + diff --git a/crmeb/crmeb-front/src/main/java/com/zbkj/front/service/IndexService.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/service/IndexService.java new file mode 100644 index 0000000..6616517 --- /dev/null +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/service/IndexService.java @@ -0,0 +1,69 @@ +package com.zbkj.front.service; + +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.response.IndexInfoResponse; +import com.zbkj.common.response.IndexProductResponse; +import com.zbkj.common.vo.MyRecord; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.model.system.SystemConfig; + +import java.util.HashMap; +import java.util.List; + +/** +* IndexService 接口 +* +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- +*/ +public interface IndexService{ + + /** + * 首页信息 + * @return IndexInfoResponse + */ + IndexInfoResponse getIndexInfo(); + + /** + * 热门搜索 + * @return List + */ + List> hotKeywords(); + + /** + * 分享配置信息 + */ + HashMap getShareConfig(); + + /** + * 获取首页商品列表 + * @param type 类型 【1 精品推荐 2 热门榜单 3首发新品 4促销单品】 + * @param pageParamRequest 分页参数 + * @return List + */ + CommonPage findIndexProductList(Integer type, PageParamRequest pageParamRequest); + + /** + * 获取颜色配置 + * @return SystemConfig + */ + SystemConfig getColorConfig(); + + /** + * 获取版本信息 + * @return MyRecord + */ + MyRecord getVersion(); + + /** + * 获取全局本地图片域名 + * @return String + */ + String getImageDomain(); +} diff --git a/crmeb/crmeb-front/src/main/java/com/zbkj/front/service/LoginService.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/service/LoginService.java new file mode 100644 index 0000000..f5e4596 --- /dev/null +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/service/LoginService.java @@ -0,0 +1,48 @@ +package com.zbkj.front.service; + +import com.zbkj.common.model.user.User; +import com.zbkj.common.request.LoginMobileRequest; +import com.zbkj.common.request.LoginRequest; +import com.zbkj.common.response.LoginResponse; + +import javax.servlet.http.HttpServletRequest; + +/** + * 移动端登录服务类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface LoginService { + + /** + * 账号密码登录 + * @return LoginResponse + */ + LoginResponse login(LoginRequest loginRequest); + + /** + * 手机号验证码登录 + */ + LoginResponse phoneLogin(LoginMobileRequest loginRequest); + + /** + * 老绑定分销关系 + * @param user User 用户user类 + * @param spreadUid Integer 推广人id + * @return Boolean + */ + Boolean bindSpread(User user, Integer spreadUid); + + /** + * 推出登录 + * @param request HttpServletRequest + */ + void loginOut(HttpServletRequest request); +} diff --git a/crmeb/crmeb-front/src/main/java/com/zbkj/front/service/ProductService.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/service/ProductService.java new file mode 100644 index 0000000..49e9441 --- /dev/null +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/service/ProductService.java @@ -0,0 +1,106 @@ +package com.zbkj.front.service; + +import com.zbkj.common.model.product.StoreProduct; +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.request.ProductListRequest; +import com.zbkj.common.request.ProductRequest; +import com.github.pagehelper.PageInfo; +import com.zbkj.common.response.*; +import com.zbkj.common.vo.CategoryTreeVo; + +import java.util.List; + +/** +* IndexService 接口 +* +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- +*/ +public interface ProductService { + + /** + * 商品分类 + * @return List + */ + List getCategory(); + + /** + * 商品列表 + * @param request 请求参数 + * @param pageParamRequest 分页参数 + * @return CommonPage + */ + CommonPage getList(ProductRequest request, PageParamRequest pageParamRequest); + + /** + * 获取商品详情 + * @param id 商品编号 + * @param type normal-正常,void-视频 + * @return 商品详情信息 + */ + ProductDetailResponse getDetail(Integer id, String type); + + /** + * 获取商品SKU详情 + * @param id 商品编号 + * @return 商品详情信息 + */ + ProductDetailResponse getSkuDetail(Integer id); + + /** + * 商品评论列表 + * @param proId 商品编号 + * @param type 评价等级|0=全部,1=好评,2=中评,3=差评 + * @param pageParamRequest 分页参数 + * @return PageInfo + */ + PageInfo getReplyList(Integer proId, Integer type, PageParamRequest pageParamRequest); + + /** + * 商品评论数量 + * @param id 商品id + * @return StoreProductReplayCountResponse + */ + StoreProductReplayCountResponse getReplyCount(Integer id); + + /** + * 获取热门推荐商品列表 + * @param pageRequest 分页参数 + * @return CommonPage + */ + CommonPage getHotProductList(PageParamRequest pageRequest); + + /** + * 商品详情评论 + * @param id 商品id + * @return ProductDetailReplyResponse + */ + ProductDetailReplyResponse getProductReply(Integer id); + + /** + * 优选商品推荐 + * @return CommonPage + */ + CommonPage getGoodProductList(); + + /** + * 商品列表(个别分类模型使用) + * @param request 列表请求参数 + * @param pageParamRequest 分页参数 + * @return CommonPage + */ + CommonPage getCategoryProductList(ProductListRequest request, PageParamRequest pageParamRequest); + + /** + * 获取商品排行榜 + * @return List + */ + List getLeaderboard(); +} diff --git a/crmeb/crmeb-front/src/main/java/com/zbkj/front/service/QrCodeService.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/service/QrCodeService.java new file mode 100644 index 0000000..abddb53 --- /dev/null +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/service/QrCodeService.java @@ -0,0 +1,42 @@ +package com.zbkj.front.service; + +import com.alibaba.fastjson.JSONObject; + +import java.io.IOException; +import java.util.Map; + +/** +* QrCodeService 接口 +* +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- +*/ +public interface QrCodeService { + + /** + * 获取二维码 + * @return CommonResult + */ + Map get(JSONObject data); + + /** + * 远程图片转base64 + * @param url 图片链接地址 + */ + Map base64(String url); + + /** + * 将字符串 转base64 + * @param text 字符串 + * @param width 宽 + * @param height 高 + */ + Map base64String(String text,int width, int height); + +} diff --git a/crmeb/crmeb-front/src/main/java/com/zbkj/front/service/UserCenterService.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/service/UserCenterService.java new file mode 100644 index 0000000..559bd37 --- /dev/null +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/service/UserCenterService.java @@ -0,0 +1,207 @@ +package com.zbkj.front.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.github.pagehelper.PageInfo; +import com.zbkj.common.model.system.SystemUserLevel; +import com.zbkj.common.model.user.User; +import com.zbkj.common.model.user.UserExperienceRecord; +import com.zbkj.common.model.user.UserIntegralRecord; +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.request.*; +import com.zbkj.common.response.*; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 用户中心 服务类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface UserCenterService extends IService { + + /** + * 推广数据接口(昨天的佣金 累计提现金额 当前佣金) + * @return UserCommissionResponse + */ + UserCommissionResponse getCommission(); + + /** + * 推广佣金/提现总和 + * @param type 类型 佣金类型3=佣金,4=提现 + * @return BigDecimal + */ + BigDecimal getSpreadCountByType(Integer type); + + /** + * 提现申请 + * @param request 申请参数 + * @return Boolean + */ + Boolean extractCash(UserExtractRequest request); + + /** + * 获取提现银行列表 + * @return List + */ + List getExtractBank(); + + /** + * 会员等级列表 + */ + List getUserLevelList(); + + /** + * 获取推广人列表 + * @param request 查询参数 + * @param pageParamRequest 分页 + * @return List + */ + List getSpreadPeopleList(UserSpreadPeopleRequest request, PageParamRequest pageParamRequest); + + /** + * 充值额度选择 + * @return UserRechargeResponse + */ + UserRechargeFrontResponse getRechargeConfig(); + + /** + * 用户资金统计 + * @return UserBalanceResponse + */ + UserBalanceResponse getUserBalance(); + + /** + * 推广订单 + * @param pageParamRequest 分页参数 + * @return UserSpreadOrderResponse + */ + UserSpreadOrderResponse getSpreadOrder(PageParamRequest pageParamRequest); + + /** + * 充值 + * @return UserSpreadOrderResponse; + */ + OrderPayResultResponse recharge(UserRechargeRequest request); + + /** + * 通过微信code登录 + */ + LoginResponse weChatAuthorizeLogin(String code, Integer spreadUid); + + /** + * 小程序获取授权logo + * @return String + */ + String getLogo(); + + /** + * 微信登录小程序授权登录 + * @param code code + * @param request 用户参数 + * @return LoginResponse + */ + LoginResponse weChatAuthorizeProgramLogin(String code, RegisterThirdUserRequest request); + + /** + * 推广人排行榜 + * @param type String 时间范围(week-周,month-月) + * @param pageParamRequest PageParamRequest 分页 + * @return List + */ + List getTopSpreadPeopleListByDate(String type, PageParamRequest pageParamRequest); + + /** + * 佣金排行榜 + * @param type String 时间范围 + * @param pageParamRequest PageParamRequest 分页 + * @return List + */ + List getTopBrokerageListByDate(String type, PageParamRequest pageParamRequest); + + /** + * 海报背景图 + * @return List + */ + List getSpreadBannerList(); + + /** + * 当前用户在佣金排行第几名 + * @param type String 时间范围 + * @return 排名 + */ + Integer getNumberByTop(String type); + + /** + * 佣金转入余额 + * @param price 金额 + * @return Boolean + */ + Boolean transferIn(BigDecimal price); + + /** + * 提现记录 + * @param pageParamRequest 分页参数 + * @return PageInfo + */ + PageInfo getExtractRecord(PageParamRequest pageParamRequest); + + /** + * 推广佣金明细 + * @param pageParamRequest 分页参数 + */ + PageInfo getSpreadCommissionDetail(PageParamRequest pageParamRequest); + + /** + * 用户账单记录(现金) + * @param type 记录类型:all-全部,expenditure-支出,income-收入 + * @return CommonPage + */ + CommonPage nowMoneyBillRecord(String type, PageParamRequest pageRequest); + + /** + * 微信注册绑定手机号 + * @param request 请求参数 + * @return 登录信息 + */ + LoginResponse registerBindingPhone(WxBindingPhoneRequest request); + + /** + * 用户积分记录列表 + * @param pageParamRequest 分页参数 + * @return List + */ + List getUserIntegralRecordList(PageParamRequest pageParamRequest); + + /** + * 获取用户积分信息 + * @return IntegralUserResponse + */ + IntegralUserResponse getIntegralUser(); + + /** + * 获取用户经验记录 + * @param pageParamRequest 分页参数 + * @return List + */ + List getUserExperienceList(PageParamRequest pageParamRequest); + + /** + * 提现用户信息 + * @return UserExtractCashResponse + */ + UserExtractCashResponse getExtractUser(); + + /** + * 推广人列表统计 + * @return UserSpreadPeopleResponse + */ + UserSpreadPeopleResponse getSpreadPeopleCount(); +} diff --git a/crmeb/crmeb-front/src/main/java/com/zbkj/front/service/impl/IndexServiceImpl.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/service/impl/IndexServiceImpl.java new file mode 100644 index 0000000..7e15cb4 --- /dev/null +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/service/impl/IndexServiceImpl.java @@ -0,0 +1,226 @@ +package com.zbkj.front.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.response.IndexInfoResponse; +import com.zbkj.common.response.IndexProductResponse; +import com.zbkj.common.response.ProductActivityItemResponse; +import com.zbkj.common.vo.MyRecord; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.constants.SysConfigConstants; +import com.zbkj.common.constants.SysGroupDataConstants; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.utils.CrmebUtil; +import com.zbkj.common.model.record.UserVisitRecord; +import com.zbkj.common.model.product.StoreProduct; +import com.zbkj.common.model.system.SystemConfig; +import com.zbkj.common.model.user.User; +import com.zbkj.front.service.IndexService; +import com.zbkj.service.delete.ProductUtils; +import com.zbkj.service.service.*; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +/** +* IndexServiceImpl 接口实现 +* +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- +*/ +@Service +public class IndexServiceImpl implements IndexService { + + @Autowired + private SystemGroupDataService systemGroupDataService; + + @Autowired + private SystemConfigService systemConfigService; + + @Autowired + private UserService userService; + + @Autowired + private StoreProductService storeProductService; + + @Autowired + private ProductUtils productUtils; + + @Autowired + private UserVisitRecordService userVisitRecordService; + + /** + * 首页数据 + * banner、金刚区、广告位 + */ + @Override + public IndexInfoResponse getIndexInfo() { + IndexInfoResponse indexInfoResponse = new IndexInfoResponse(); + indexInfoResponse.setBanner(systemGroupDataService.getListMapByGid(Constants.GROUP_DATA_ID_INDEX_BANNER)); //首页banner滚动图 + indexInfoResponse.setMenus(systemGroupDataService.getListMapByGid(Constants.GROUP_DATA_ID_INDEX_MENU)); //导航模块 + indexInfoResponse.setRoll(systemGroupDataService.getListMapByGid(Constants.GROUP_DATA_ID_INDEX_NEWS_BANNER)); //首页滚动新闻 + + indexInfoResponse.setLogoUrl(systemConfigService.getValueByKey(Constants.CONFIG_KEY_SITE_LOGO));// 企业logo地址 + indexInfoResponse.setYzfUrl(systemConfigService.getValueByKey(Constants.CONFIG_KEY_YZF_H5_URL));// 云智服H5 url + indexInfoResponse.setConsumerHotline(systemConfigService.getValueByKey(Constants.CONFIG_KEY_CONSUMER_HOTLINE));// 客服电话 + indexInfoResponse.setTelephoneServiceSwitch(systemConfigService.getValueByKey(Constants.CONFIG_KEY_TELEPHONE_SERVICE_SWITCH));// 客服电话服务 + indexInfoResponse.setCategoryPageConfig(systemConfigService.getValueByKey(Constants.CONFIG_CATEGORY_CONFIG));// 商品分类页配置 + indexInfoResponse.setIsShowCategory(systemConfigService.getValueByKey(Constants.CONFIG_IS_SHOW_CATEGORY));// 是否隐藏一级分类 + indexInfoResponse.setExplosiveMoney(systemGroupDataService.getListMapByGid(Constants.GROUP_DATA_ID_INDEX_EX_BANNER));//首页超值爆款 + indexInfoResponse.setHomePageSaleListStyle(systemConfigService.getValueByKey(Constants.CONFIG_IS_PRODUCT_LIST_STYLE));// 首页商品列表模板配置 + indexInfoResponse.setSubscribe(false); + User user = userService.getInfo(); + if(ObjectUtil.isNotNull(user) && user.getSubscribe()) { + indexInfoResponse.setSubscribe(user.getSubscribe()); + } + + // 保存用户访问记录 + UserVisitRecord visitRecord = new UserVisitRecord(); + visitRecord.setDate(DateUtil.date().toString("yyyy-MM-dd")); + visitRecord.setUid(userService.getUserId()); + visitRecord.setVisitType(1); + userVisitRecordService.save(visitRecord); + return indexInfoResponse; + } + + /** + * 热门搜索 + * @return List> + */ + @Override + public List> hotKeywords() { + return systemGroupDataService.getListMapByGid(SysGroupDataConstants.GROUP_DATA_ID_INDEX_KEYWORDS); + } + + /** + * 微信分享配置 + * @return Object + */ + @Override + public HashMap getShareConfig() { + HashMap map = new HashMap<>(); + HashMap info = systemConfigService.info(Constants.CONFIG_FORM_ID_PUBLIC); + if(info == null) { + throw new CrmebException("请配置公众号分享信息!"); + } + map.put("img", info.get(SysConfigConstants.CONFIG_KEY_ADMIN_WECHAT_SHARE_IMAGE)); + map.put("title", info.get(SysConfigConstants.CONFIG_KEY_ADMIN_WECHAT_SHARE_TITLE)); + map.put("synopsis", info.get(SysConfigConstants.CONFIG_KEY_ADMIN_WECHAT_SHARE_SYNOSIS)); + return map; + } + + /** + * 获取首页商品列表 + * @param type 类型 【1 精品推荐 2 热门榜单 3首发新品 4促销单品】 + * @param pageParamRequest 分页参数 + * @return List + */ + @Override + public CommonPage findIndexProductList(Integer type, PageParamRequest pageParamRequest) { + if (type < Constants.INDEX_RECOMMEND_BANNER || type > Constants.INDEX_BENEFIT_BANNER) { + return CommonPage.restPage(new ArrayList<>()); + } + List storeProductList = storeProductService.getIndexProduct(type, pageParamRequest); + if(CollUtil.isEmpty(storeProductList)) { + return CommonPage.restPage(new ArrayList<>()); + } + CommonPage storeProductCommonPage = CommonPage.restPage(storeProductList); + + List productResponseArrayList = new ArrayList<>(); + for (StoreProduct storeProduct : storeProductList) { + IndexProductResponse productResponse = new IndexProductResponse(); + List activityList = CrmebUtil.stringToArrayInt(storeProduct.getActivity()); + // 活动类型默认:直接跳过 + if (activityList.get(0).equals(Constants.PRODUCT_TYPE_NORMAL)) { + BeanUtils.copyProperties(storeProduct, productResponse); + productResponseArrayList.add(productResponse); + continue; + } + // 根据参与活动添加对应商品活动标示 + HashMap activityByProduct = + productUtils.getActivityByProduct(storeProduct.getId(), storeProduct.getActivity()); + if (CollUtil.isNotEmpty(activityByProduct)) { + for (Integer activity : activityList) { + if (activity.equals(Constants.PRODUCT_TYPE_NORMAL)) { + break; + } + if (activity.equals(Constants.PRODUCT_TYPE_SECKILL)) { + ProductActivityItemResponse itemResponse = activityByProduct.get(Constants.PRODUCT_TYPE_SECKILL); + if (ObjectUtil.isNotNull(itemResponse)) { + productResponse.setActivityH5(itemResponse); + break; + } + } + if (activity.equals(Constants.PRODUCT_TYPE_BARGAIN)) { + ProductActivityItemResponse itemResponse = activityByProduct.get(Constants.PRODUCT_TYPE_BARGAIN); + if (ObjectUtil.isNotNull(itemResponse)) { + productResponse.setActivityH5(itemResponse); + break; + } + } + if (activity.equals(Constants.PRODUCT_TYPE_PINGTUAN)) { + ProductActivityItemResponse itemResponse = activityByProduct.get(Constants.PRODUCT_TYPE_PINGTUAN); + if (ObjectUtil.isNotNull(itemResponse)) { + productResponse.setActivityH5(itemResponse); + break; + } + } + } + } + BeanUtils.copyProperties(storeProduct, productResponse); + productResponseArrayList.add(productResponse); + } + CommonPage productResponseCommonPage = CommonPage.restPage(productResponseArrayList); + BeanUtils.copyProperties(storeProductCommonPage, productResponseCommonPage, "list"); + return productResponseCommonPage; + } + + /** + * 获取颜色配置 + * @return SystemConfig + */ + @Override + public SystemConfig getColorConfig() { + return systemConfigService.getColorConfig(); + } + + /** + * 获取版本信息 + * @return MyRecord + */ + @Override + public MyRecord getVersion() { + MyRecord record = new MyRecord(); + // app版本号 + record.set("appVersion", systemConfigService.getValueByKey(Constants.CONFIG_APP_VERSION)); + record.set("androidAddress", systemConfigService.getValueByKey(Constants.CONFIG_APP_ANDROID_ADDRESS)); + record.set("iosAddress", systemConfigService.getValueByKey(Constants.CONFIG_APP_IOS_ADDRESS)); + record.set("openUpgrade", systemConfigService.getValueByKey(Constants.CONFIG_APP_OPEN_UPGRADE)); + return record; + } + + /** + * 获取全局本地图片域名 + * @return String + */ + @Override + public String getImageDomain() { + String localUploadUrl = systemConfigService.getValueByKey("localUploadUrl"); + return StrUtil.isBlank(localUploadUrl) ? "" : localUploadUrl; + } +} + diff --git a/crmeb/crmeb-front/src/main/java/com/zbkj/front/service/impl/LoginServiceImpl.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/service/impl/LoginServiceImpl.java new file mode 100644 index 0000000..039caaf --- /dev/null +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/service/impl/LoginServiceImpl.java @@ -0,0 +1,194 @@ +package com.zbkj.front.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.zbkj.common.constants.SmsConstants; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.model.user.User; +import com.zbkj.common.request.LoginMobileRequest; +import com.zbkj.common.request.LoginRequest; +import com.zbkj.common.response.LoginResponse; +import com.zbkj.common.token.FrontTokenComponent; +import com.zbkj.common.utils.CrmebUtil; +import com.zbkj.common.utils.DateUtil; +import com.zbkj.common.utils.RedisUtil; +import com.zbkj.front.service.LoginService; +import com.zbkj.service.service.UserService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.support.TransactionTemplate; + +import javax.servlet.http.HttpServletRequest; +import java.util.Optional; + +/** + * 移动端登录服务类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class LoginServiceImpl implements LoginService { + + private static final Logger logger = LoggerFactory.getLogger(LoginServiceImpl.class); + + @Autowired + private UserService userService; + + @Autowired + private TransactionTemplate transactionTemplate; + + @Autowired + private RedisUtil redisUtil; + + @Autowired + private FrontTokenComponent tokenComponent; + + /** + * 账号密码登录 + * + * @return LoginResponse + */ + @Override + public LoginResponse login(LoginRequest loginRequest) { + User user = userService.getByPhone(loginRequest.getPhone()); + if (ObjectUtil.isNull(user)) { + throw new CrmebException("此账号未注册"); + } + if (!user.getStatus()) { + throw new CrmebException("此账号被禁用"); + } + + // 校验密码 + String password = CrmebUtil.encryptPassword(loginRequest.getPassword(), loginRequest.getPhone()); + if (!user.getPwd().equals(password)) { + throw new CrmebException("密码错误"); + } + + LoginResponse loginResponse = new LoginResponse(); + String token = tokenComponent.createToken(user); + loginResponse.setToken(token); + + //绑定推广关系 + if (loginRequest.getSpreadPid() > 0) { + bindSpread(user, loginRequest.getSpreadPid()); + } + + // 记录最后一次登录时间 + user.setLastLoginTime(DateUtil.nowDateTime()); + userService.updateById(user); + + loginResponse.setUid(user.getUid()); + loginResponse.setNikeName(user.getNickname()); + loginResponse.setPhone(user.getPhone()); + return loginResponse; + } + + /** + * 手机号验证码登录 + * + * @param loginRequest 登录请求信息 + * @return LoginResponse + */ + @Override + public LoginResponse phoneLogin(LoginMobileRequest loginRequest) { + //检测验证码 + checkValidateCode(loginRequest.getPhone(), loginRequest.getCaptcha()); + Integer spreadPid = Optional.ofNullable(loginRequest.getSpreadPid()).orElse(0); + //查询手机号信息 + User user = userService.getByPhone(loginRequest.getPhone()); + if (ObjectUtil.isNull(user)) {// 此用户不存在,走新用户注册流程 + user = userService.registerPhone(loginRequest.getPhone(), spreadPid); + } else { + if (!user.getStatus()) { + throw new CrmebException("当前账户已禁用,请联系管理员!"); + } + if (user.getSpreadUid().equals(0) && spreadPid > 0) { + // 绑定推广关系 + bindSpread(user, spreadPid); + } + // 记录最后一次登录时间 + user.setLastLoginTime(DateUtil.nowDateTime()); + boolean b = userService.updateById(user); + if (!b) { + logger.error("用户登录时,记录最后一次登录时间出错,uid = " + user.getUid()); + } + } + + //生成token + LoginResponse loginResponse = new LoginResponse(); + String token = tokenComponent.createToken(user); + loginResponse.setToken(token); + loginResponse.setUid(user.getUid()); + loginResponse.setNikeName(user.getNickname()); + loginResponse.setPhone(user.getPhone()); + return loginResponse; + } + + /** + * 检测手机验证码 + * + * @param phone 手机号 + * @param code 验证码 + */ + private void checkValidateCode(String phone, String code) { + Object validateCode = redisUtil.get(SmsConstants.SMS_VALIDATE_PHONE + phone); + if (ObjectUtil.isNull(validateCode)) { + throw new CrmebException("验证码已过期"); + } + if (!validateCode.toString().equals(code)) { + throw new CrmebException("验证码错误"); + } + //删除验证码 + redisUtil.delete(SmsConstants.SMS_VALIDATE_PHONE + phone); + } + + /** + * 绑定分销关系 + * + * @param user User 用户user类 + * @param spreadUid Integer 推广人id + * @return Boolean + * 1.判断分销功能是否启用 + * 2.判断分销模式 + * 3.根据不同的分销模式校验 + * 4.指定分销,只有分销员才可以分销,需要spreadUid是推广员才可以绑定 + * 5.满额分销,同上 + * 6.人人分销,可以直接绑定 + */ + @Override + public Boolean bindSpread(User user, Integer spreadUid) { + Boolean checkBingSpread = userService.checkBingSpread(user, spreadUid, "old"); + if (!checkBingSpread) return false; + + user.setSpreadUid(spreadUid); + user.setSpreadTime(DateUtil.nowDateTime()); + + Boolean execute = transactionTemplate.execute(e -> { + userService.updateById(user); + userService.updateSpreadCountByUid(spreadUid, "add"); + return Boolean.TRUE; + }); + if (!execute) { + logger.error(StrUtil.format("绑定推广人时出错,userUid = {}, spreadUid = {}", user.getUid(), spreadUid)); + } + return execute; + } + + /** + * 推出登录 + * @param request HttpServletRequest + */ + @Override + public void loginOut(HttpServletRequest request) { + tokenComponent.logout(request); + } +} diff --git a/crmeb/crmeb-front/src/main/java/com/zbkj/front/service/impl/ProductServiceImpl.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/service/impl/ProductServiceImpl.java new file mode 100644 index 0000000..b34a1fa --- /dev/null +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/service/impl/ProductServiceImpl.java @@ -0,0 +1,542 @@ +package com.zbkj.front.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.github.pagehelper.PageInfo; +import com.zbkj.common.constants.CategoryConstants; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.constants.RedisConstatns; +import com.zbkj.common.constants.SysConfigConstants; +import com.zbkj.common.model.product.StoreProduct; +import com.zbkj.common.model.product.StoreProductAttr; +import com.zbkj.common.model.product.StoreProductAttrValue; +import com.zbkj.common.model.record.UserVisitRecord; +import com.zbkj.common.model.system.SystemUserLevel; +import com.zbkj.common.model.user.User; +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.request.ProductListRequest; +import com.zbkj.common.request.ProductRequest; +import com.zbkj.common.response.*; +import com.zbkj.common.utils.CrmebUtil; +import com.zbkj.common.utils.RedisUtil; +import com.zbkj.common.vo.CategoryTreeVo; +import com.zbkj.common.vo.MyRecord; +import com.zbkj.front.service.ProductService; +import com.zbkj.service.delete.ProductUtils; +import com.zbkj.service.service.*; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +/** +* IndexServiceImpl 接口实现 +* +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- +*/ +@Service +public class ProductServiceImpl implements ProductService { + + @Autowired + private StoreProductService storeProductService; + + @Autowired + private CategoryService categoryService; + + @Autowired + private StoreProductReplyService storeProductReplyService; + + @Autowired + private UserService userService; + + @Autowired + private StoreProductRelationService storeProductRelationService; + + @Autowired + private SystemConfigService systemConfigService; + + @Autowired + private ProductUtils productUtils; + + @Autowired + private RedisUtil redisUtil; + + @Autowired + private StoreProductAttrService attrService; + + @Autowired + private StoreProductAttrValueService storeProductAttrValueService; + + @Autowired + private SystemUserLevelService systemUserLevelService; + + @Autowired + private StoreCartService cartService; + + @Autowired + private UserVisitRecordService userVisitRecordService; + + /** + * 获取分类 + * @return List + */ + @Override + public List getCategory() { + List listTree = categoryService.getListTree(CategoryConstants.CATEGORY_TYPE_PRODUCT, 1, ""); + for (int i = 0; i < listTree.size();) { + CategoryTreeVo categoryTreeVo = listTree.get(i); + if (!categoryTreeVo.getPid().equals(0)) { + listTree.remove(i); + continue; + } + i++; + } + return listTree; + } + + /** + * 商品列表 + * @return CommonPage + */ + @Override + public CommonPage getList(ProductRequest request, PageParamRequest pageRequest) { + List storeProductList = storeProductService.findH5List(request, pageRequest); + if (CollUtil.isEmpty(storeProductList)) { + return CommonPage.restPage(new ArrayList<>()); + } + CommonPage storeProductCommonPage = CommonPage.restPage(storeProductList); + + List productResponseArrayList = new ArrayList<>(); + for (StoreProduct storeProduct : storeProductList) { + IndexProductResponse productResponse = new IndexProductResponse(); + List activityList = CrmebUtil.stringToArrayInt(storeProduct.getActivity()); + // 活动类型默认:直接跳过 + if (activityList.get(0).equals(Constants.PRODUCT_TYPE_NORMAL)) { + BeanUtils.copyProperties(storeProduct, productResponse); + productResponseArrayList.add(productResponse); + continue; + } + // 根据参与活动添加对应商品活动标示 + HashMap activityByProduct = + productUtils.getActivityByProduct(storeProduct.getId(), storeProduct.getActivity()); + if (CollUtil.isNotEmpty(activityByProduct)) { + for (Integer activity : activityList) { + if (activity.equals(Constants.PRODUCT_TYPE_NORMAL)) { + break; + } + if (activity.equals(Constants.PRODUCT_TYPE_SECKILL)) { + ProductActivityItemResponse itemResponse = activityByProduct.get(Constants.PRODUCT_TYPE_SECKILL); + if (ObjectUtil.isNotNull(itemResponse)) { + productResponse.setActivityH5(itemResponse); + break; + } + } + if (activity.equals(Constants.PRODUCT_TYPE_BARGAIN)) { + ProductActivityItemResponse itemResponse = activityByProduct.get(Constants.PRODUCT_TYPE_BARGAIN); + if (ObjectUtil.isNotNull(itemResponse)) { + productResponse.setActivityH5(itemResponse); + break; + } + } + if (activity.equals(Constants.PRODUCT_TYPE_PINGTUAN)) { + ProductActivityItemResponse itemResponse = activityByProduct.get(Constants.PRODUCT_TYPE_PINGTUAN); + if (ObjectUtil.isNotNull(itemResponse)) { + productResponse.setActivityH5(itemResponse); + break; + } + } + } + } + BeanUtils.copyProperties(storeProduct, productResponse); + productResponseArrayList.add(productResponse); + } + CommonPage productResponseCommonPage = CommonPage.restPage(productResponseArrayList); + BeanUtils.copyProperties(storeProductCommonPage, productResponseCommonPage, "list"); + return productResponseCommonPage; + } + + /** + * 获取商品详情 + * @param id 商品编号 + * @param type normal-正常,video-视频 + * @return 商品详情信息 + */ + @Override + public ProductDetailResponse getDetail(Integer id, String type) { + // 获取用户 + User user = userService.getInfo(); + SystemUserLevel userLevel = null; + if (ObjectUtil.isNotNull(user) && user.getLevel() > 0) { + userLevel = systemUserLevelService.getByLevelId(user.getLevel()); + } + + ProductDetailResponse productDetailResponse = new ProductDetailResponse(); + // 查询商品 + StoreProduct storeProduct = storeProductService.getH5Detail(id); + if (ObjectUtil.isNotNull(userLevel)) { + storeProduct.setVipPrice(storeProduct.getPrice()); + } + productDetailResponse.setProductInfo(storeProduct); + + // 获取商品规格 + List attrList = attrService.getListByProductIdAndType(storeProduct.getId(), Constants.PRODUCT_TYPE_NORMAL); + // 根据制式设置attr属性 + productDetailResponse.setProductAttr(attrList); + + // 根据制式设置sku属性 + HashMap skuMap = CollUtil.newHashMap(); + List storeProductAttrValues = storeProductAttrValueService.getListByProductIdAndType(storeProduct.getId(), Constants.PRODUCT_TYPE_NORMAL); + for (StoreProductAttrValue storeProductAttrValue : storeProductAttrValues) { + StoreProductAttrValueResponse atr = new StoreProductAttrValueResponse(); + BeanUtils.copyProperties(storeProductAttrValue, atr); + // 设置会员价 + if (ObjectUtil.isNotNull(userLevel)) { + atr.setVipPrice(atr.getPrice()); + } + skuMap.put(atr.getSuk(), atr); + } + productDetailResponse.setProductValue(skuMap); + + // 用户收藏、分销返佣 + if (ObjectUtil.isNotNull(user)) { + // 查询用户是否收藏收藏 + user = userService.getInfo(); + productDetailResponse.setUserCollect(storeProductRelationService.getLikeOrCollectByUser(user.getUid(), id,false).size() > 0); + // 判断是否开启分销 + String brokerageFuncStatus = systemConfigService.getValueByKey(SysConfigConstants.CONFIG_KEY_BROKERAGE_FUNC_STATUS); + if (brokerageFuncStatus.equals(Constants.COMMON_SWITCH_OPEN)) {// 分销开启 + // 判断是否开启气泡 + String isBubble = systemConfigService.getValueByKey(SysConfigConstants.CONFIG_KEY_STORE_BROKERAGE_IS_BUBBLE); + if (isBubble.equals(Constants.COMMON_SWITCH_OPEN)) { + productDetailResponse.setPriceName(getPacketPriceRange(storeProduct.getIsSub(), storeProductAttrValues, user.getIsPromoter())); + } + } + } else { + productDetailResponse.setUserCollect(false); + } + // 商品活动 + List activityAllH5 = productUtils.getProductAllActivity(storeProduct); + productDetailResponse.setActivityAllH5(activityAllH5); + + // 商品浏览量+1 + StoreProduct updateProduct = new StoreProduct(); + updateProduct.setId(id); + updateProduct.setBrowse(storeProduct.getBrowse() + 1); + storeProductService.updateById(updateProduct); + + // 保存用户访问记录 + if (userService.getUserId() > 0) { + UserVisitRecord visitRecord = new UserVisitRecord(); + visitRecord.setDate(DateUtil.date().toString("yyyy-MM-dd")); + visitRecord.setUid(userService.getUserId()); + visitRecord.setVisitType(2); + userVisitRecordService.save(visitRecord); + } + + return productDetailResponse; + } + + /** + * 获取商品SKU详情 + * @param id 商品编号 + * @return 商品详情信息 + */ + @Override + public ProductDetailResponse getSkuDetail(Integer id) { + // 获取用户 + User user = userService.getInfo(); + SystemUserLevel userLevel = null; + if (ObjectUtil.isNotNull(user) && user.getLevel() > 0) { + userLevel = systemUserLevelService.getByLevelId(user.getLevel()); + } + + ProductDetailResponse productDetailResponse = new ProductDetailResponse(); + // 查询商品 + StoreProduct storeProduct = storeProductService.getH5Detail(id); + + // 获取商品规格 + List attrList = attrService.getListByProductIdAndType(storeProduct.getId(), Constants.PRODUCT_TYPE_NORMAL); + // 根据制式设置attr属性 + productDetailResponse.setProductAttr(attrList); + + // 根据制式设置sku属性 + HashMap skuMap = CollUtil.newHashMap(); + List storeProductAttrValues = storeProductAttrValueService.getListByProductIdAndType(storeProduct.getId(), Constants.PRODUCT_TYPE_NORMAL); + for (StoreProductAttrValue storeProductAttrValue : storeProductAttrValues) { + StoreProductAttrValueResponse atr = new StoreProductAttrValueResponse(); + BeanUtils.copyProperties(storeProductAttrValue, atr); + // 设置会员价 + if (ObjectUtil.isNotNull(userLevel)) { + BigDecimal vipPrice = atr.getPrice().multiply(new BigDecimal(userLevel.getDiscount())).divide(new BigDecimal(100), 2 ,BigDecimal.ROUND_HALF_UP); + atr.setVipPrice(vipPrice); + } + skuMap.put(atr.getSuk(), atr); + } + productDetailResponse.setProductValue(skuMap); + + return productDetailResponse; + } + + /** + * 商品评论列表 + * @param proId 商品编号 + * @param type 评价等级|0=全部,1=好评,2=中评,3=差评 + * @param pageParamRequest 分页参数 + * @return PageInfo + */ + @Override + public PageInfo getReplyList(Integer proId, Integer type, PageParamRequest pageParamRequest) { + return storeProductReplyService.getH5List(proId, type, pageParamRequest); + } + + /** + * 产品评价数量和好评度 + * @return StoreProductReplayCountResponse + */ + @Override + public StoreProductReplayCountResponse getReplyCount(Integer id) { + MyRecord myRecord = storeProductReplyService.getH5Count(id); + Long sumCount = myRecord.getLong("sumCount"); + Long goodCount = myRecord.getLong("goodCount"); + Long inCount = myRecord.getLong("mediumCount"); + Long poorCount = myRecord.getLong("poorCount"); + String replyChance = myRecord.getStr("replyChance"); + Integer replyStar = myRecord.getInt("replyStar"); + return new StoreProductReplayCountResponse(sumCount, goodCount, inCount, poorCount, replyChance, replyStar); + } + + /** + * 获取商品佣金区间 + * @param isSub 是否单独计算分佣 + * @param attrValueList 商品属性列表 + * @param isPromoter 是否推荐人 + * @return String 金额区间 + */ + private String getPacketPriceRange(Boolean isSub, List attrValueList, Boolean isPromoter) { + String priceName = "0"; + if (!isPromoter) return priceName; + // 获取一级返佣比例 + String brokerageRatioString = systemConfigService.getValueByKey(SysConfigConstants.CONFIG_KEY_STORE_BROKERAGE_RATIO); + BigDecimal BrokerRatio = new BigDecimal(brokerageRatioString).divide(new BigDecimal("100"), 2, RoundingMode.DOWN); + BigDecimal maxPrice; + BigDecimal minPrice; + // 获取佣金比例区间 + if (isSub) { // 是否单独分拥 + maxPrice = attrValueList.stream().map(StoreProductAttrValue::getBrokerage).reduce(BigDecimal.ZERO,BigDecimal::max); + minPrice = attrValueList.stream().map(StoreProductAttrValue::getBrokerage).reduce(BigDecimal.ZERO,BigDecimal::min); + } else { + BigDecimal _maxPrice = attrValueList.stream().map(StoreProductAttrValue::getPrice).reduce(BigDecimal.ZERO,BigDecimal::max); + BigDecimal _minPrice = attrValueList.stream().map(StoreProductAttrValue::getPrice).reduce(BigDecimal.ZERO,BigDecimal::min); + maxPrice = BrokerRatio.multiply(_maxPrice).setScale(2, RoundingMode.HALF_UP); + minPrice = BrokerRatio.multiply(_minPrice).setScale(2, RoundingMode.HALF_UP); + } + if (minPrice.compareTo(BigDecimal.ZERO) == 0 && maxPrice.compareTo(BigDecimal.ZERO) == 0) { + priceName = "0"; + } else if (minPrice.compareTo(BigDecimal.ZERO) == 0 && maxPrice.compareTo(BigDecimal.ZERO) > 0) { + priceName = maxPrice.toString(); + } else if (minPrice.compareTo(BigDecimal.ZERO) > 0 && maxPrice.compareTo(BigDecimal.ZERO) > 0) { + priceName = minPrice.toString(); + } else if (minPrice.compareTo(maxPrice) == 0) { + priceName = minPrice.toString(); + } else { + priceName = minPrice.toString() + "~" + maxPrice.toString(); + } + return priceName; + } + + /** + * 获取热门推荐商品列表 + * @param pageRequest 分页参数 + * @return CommonPage + */ + @Override + public CommonPage getHotProductList(PageParamRequest pageRequest) { + List storeProductList = storeProductService.getIndexProduct(Constants.INDEX_HOT_BANNER, pageRequest); + if (CollUtil.isEmpty(storeProductList)) { + return CommonPage.restPage(new ArrayList<>()); + } + CommonPage storeProductCommonPage = CommonPage.restPage(storeProductList); + + List productResponseArrayList = new ArrayList<>(); + for (StoreProduct storeProduct : storeProductList) { + IndexProductResponse productResponse = new IndexProductResponse(); + List activityList = CrmebUtil.stringToArrayInt(storeProduct.getActivity()); + // 活动类型默认:直接跳过 + if (activityList.get(0).equals(Constants.PRODUCT_TYPE_NORMAL)) { + BeanUtils.copyProperties(storeProduct, productResponse); + productResponseArrayList.add(productResponse); + continue; + } + // 根据参与活动添加对应商品活动标示 + HashMap activityByProduct = + productUtils.getActivityByProduct(storeProduct.getId(), storeProduct.getActivity()); + if (CollUtil.isNotEmpty(activityByProduct)) { + for (Integer activity : activityList) { + if (activity.equals(Constants.PRODUCT_TYPE_NORMAL)) { + break; + } + if (activity.equals(Constants.PRODUCT_TYPE_SECKILL)) { + ProductActivityItemResponse itemResponse = activityByProduct.get(Constants.PRODUCT_TYPE_SECKILL); + if (ObjectUtil.isNotNull(itemResponse)) { + productResponse.setActivityH5(itemResponse); + break; + } + } + if (activity.equals(Constants.PRODUCT_TYPE_BARGAIN)) { + ProductActivityItemResponse itemResponse = activityByProduct.get(Constants.PRODUCT_TYPE_BARGAIN); + if (ObjectUtil.isNotNull(itemResponse)) { + productResponse.setActivityH5(itemResponse); + break; + } + } + if (activity.equals(Constants.PRODUCT_TYPE_PINGTUAN)) { + ProductActivityItemResponse itemResponse = activityByProduct.get(Constants.PRODUCT_TYPE_PINGTUAN); + if (ObjectUtil.isNotNull(itemResponse)) { + productResponse.setActivityH5(itemResponse); + break; + } + } + } + } + BeanUtils.copyProperties(storeProduct, productResponse); + productResponseArrayList.add(productResponse); + } + CommonPage productResponseCommonPage = CommonPage.restPage(productResponseArrayList); + BeanUtils.copyProperties(storeProductCommonPage, productResponseCommonPage, "list"); + return productResponseCommonPage; + } + + /** + * 商品详情评论 + * @param id 商品id + * @return ProductDetailReplyResponse + * 评论只有一条,图文 + * 评价总数 + * 好评率 + */ + @Override + public ProductDetailReplyResponse getProductReply(Integer id) { + return storeProductReplyService.getH5ProductReply(id); + } + + /** + * 优选商品推荐 + * @return CommonPage + */ + @Override + public CommonPage getGoodProductList() { + PageParamRequest pageRequest = new PageParamRequest(); + pageRequest.setLimit(9); + List storeProductList = storeProductService.getIndexProduct(Constants.INDEX_RECOMMEND_BANNER, pageRequest); + if (CollUtil.isEmpty(storeProductList)) { + return CommonPage.restPage(new ArrayList<>()); + } + CommonPage storeProductCommonPage = CommonPage.restPage(storeProductList); + + List productResponseArrayList = new ArrayList<>(); + for (StoreProduct storeProduct : storeProductList) { + IndexProductResponse productResponse = new IndexProductResponse(); + List activityList = CrmebUtil.stringToArrayInt(storeProduct.getActivity()); + // 活动类型默认:直接跳过 + if (activityList.get(0).equals(Constants.PRODUCT_TYPE_NORMAL)) { + BeanUtils.copyProperties(storeProduct, productResponse); + productResponseArrayList.add(productResponse); + continue; + } + // 根据参与活动添加对应商品活动标示 + HashMap activityByProduct = + productUtils.getActivityByProduct(storeProduct.getId(), storeProduct.getActivity()); + if (CollUtil.isNotEmpty(activityByProduct)) { + for (Integer activity : activityList) { + if (activity.equals(Constants.PRODUCT_TYPE_NORMAL)) { + break; + } + if (activity.equals(Constants.PRODUCT_TYPE_SECKILL)) { + ProductActivityItemResponse itemResponse = activityByProduct.get(Constants.PRODUCT_TYPE_SECKILL); + if (ObjectUtil.isNotNull(itemResponse)) { + productResponse.setActivityH5(itemResponse); + break; + } + } + if (activity.equals(Constants.PRODUCT_TYPE_BARGAIN)) { + ProductActivityItemResponse itemResponse = activityByProduct.get(Constants.PRODUCT_TYPE_BARGAIN); + if (ObjectUtil.isNotNull(itemResponse)) { + productResponse.setActivityH5(itemResponse); + break; + } + } + if (activity.equals(Constants.PRODUCT_TYPE_PINGTUAN)) { + ProductActivityItemResponse itemResponse = activityByProduct.get(Constants.PRODUCT_TYPE_PINGTUAN); + if (ObjectUtil.isNotNull(itemResponse)) { + productResponse.setActivityH5(itemResponse); + break; + } + } + } + } + BeanUtils.copyProperties(storeProduct, productResponse); + productResponseArrayList.add(productResponse); + } + CommonPage productResponseCommonPage = CommonPage.restPage(productResponseArrayList); + BeanUtils.copyProperties(storeProductCommonPage, productResponseCommonPage, "list"); + return productResponseCommonPage; + } + + /** + * 商品列表(个别分类模型使用) + * @param request 列表请求参数 + * @param pageParamRequest 分页参数 + * @return CommonPage + */ + @Override + public CommonPage getCategoryProductList(ProductListRequest request, PageParamRequest pageParamRequest) { + ProductRequest searchRequest = new ProductRequest(); + BeanUtils.copyProperties(searchRequest, request); + List storeProductList = storeProductService.findH5List(searchRequest, pageParamRequest); + if (CollUtil.isEmpty(storeProductList)) { + return CommonPage.restPage(new ArrayList<>()); + } + CommonPage storeProductCommonPage = CommonPage.restPage(storeProductList); + + User user = userService.getInfo(); + List productResponseArrayList = new ArrayList<>(); + for (StoreProduct storeProduct : storeProductList) { + IndexProductResponse productResponse = new IndexProductResponse(); + // 获取商品购物车数量 + if (ObjectUtil.isNotNull(user)) { + productResponse.setCartNum(cartService.getProductNumByUidAndProductId(user.getUid(), storeProduct.getId())); + } + BeanUtils.copyProperties(storeProduct, productResponse); + productResponseArrayList.add(productResponse); + } + CommonPage productResponseCommonPage = CommonPage.restPage(productResponseArrayList); + BeanUtils.copyProperties(storeProductCommonPage, productResponseCommonPage, "list"); + return productResponseCommonPage; + } + + /** + * 获取商品排行榜 + * @return List + */ + @Override + public List getLeaderboard() { + return storeProductService.getLeaderboard(); + } + +} + diff --git a/crmeb/crmeb-front/src/main/java/com/zbkj/front/service/impl/QrCodeServiceImpl.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/service/impl/QrCodeServiceImpl.java new file mode 100644 index 0000000..8fe9b02 --- /dev/null +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/service/impl/QrCodeServiceImpl.java @@ -0,0 +1,99 @@ +package com.zbkj.front.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.utils.CrmebUtil; +import com.zbkj.common.utils.QRCodeUtil; +import com.zbkj.common.utils.RestTemplateUtil; +import com.zbkj.front.service.QrCodeService; +import com.zbkj.service.service.WechatNewService; +import org.apache.commons.codec.binary.Base64; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.Map; + +/** +* QrCodeServiceImpl 接口实现 +* +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- +*/ +@Service +public class QrCodeServiceImpl implements QrCodeService { +// @Autowired +// private WeChatService weChatService; + + @Autowired + private RestTemplateUtil restTemplateUtil; + @Autowired + private WechatNewService wechatNewService; + + /** + * 二维码 + * @return Object + */ + @Override + public Map get(JSONObject data) { + Map map = new HashMap<>(); + StringBuilder scene = new StringBuilder(); + String page = ""; + try{ + if(null != data){ + Map dataMap = JSONObject.toJavaObject(data, Map.class); + + for (Map.Entry m : dataMap.entrySet()) { + if("path".equals(m.getKey())){ + //前端路由, 不需要拼参数 + page = m.getValue().toString(); + continue; + } + if (scene.length() > 0) { + scene.append(","); + } + scene.append(m.getKey()).append(":").append(m.getValue()); + } + } + }catch (Exception e){ + throw new CrmebException("url参数错误 " + e.getMessage()); + } + map.put("code", wechatNewService.createQrCode(page, scene.length() > 0 ? scene.toString() : "")); + return map; + } + + @Override + public Map base64(String url) { + byte[] bytes = restTemplateUtil.getBuffer(url); + String base64Image = CrmebUtil.getBase64Image(Base64.encodeBase64String(bytes)); + Map map = new HashMap<>(); + map.put("code", base64Image); + return map; + } + + /** + * 讲字符串转为QRcode + * @param text 待转换字符串 + * @return QRcode base64格式 + */ + @Override + public Map base64String(String text,int width, int height) { + + String base64Image = null; + try { + base64Image = QRCodeUtil.crateQRCode(text,width,height); + }catch (Exception e){ + throw new CrmebException("生成二维码异常"); + } + Map map = new HashMap<>(); + map.put("code", base64Image); + return map; + } +} + diff --git a/crmeb/crmeb-front/src/main/java/com/zbkj/front/service/impl/UserCenterServiceImpl.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/service/impl/UserCenterServiceImpl.java new file mode 100644 index 0000000..4f232af --- /dev/null +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/service/impl/UserCenterServiceImpl.java @@ -0,0 +1,1068 @@ +package com.zbkj.front.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.ReUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.crypto.SecureUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageInfo; +import com.zbkj.common.constants.*; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.model.coupon.StoreCoupon; +import com.zbkj.common.model.coupon.StoreCouponUser; +import com.zbkj.common.model.finance.UserRecharge; +import com.zbkj.common.model.order.StoreOrder; +import com.zbkj.common.model.system.SystemUserLevel; +import com.zbkj.common.model.user.*; +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.request.*; +import com.zbkj.common.response.*; +import com.zbkj.common.token.FrontTokenComponent; +import com.zbkj.common.token.WeChatOauthToken; +import com.zbkj.common.utils.*; +import com.zbkj.common.vo.*; +import com.zbkj.front.service.LoginService; +import com.zbkj.front.service.UserCenterService; +import com.zbkj.service.dao.UserDao; +import com.zbkj.service.service.*; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.support.TransactionTemplate; + +import java.math.BigDecimal; +import java.util.*; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +/** + * 用户中心 服务实现类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class UserCenterServiceImpl extends ServiceImpl implements UserCenterService { + + private final Logger logger = LoggerFactory.getLogger(UserCenterServiceImpl.class); + + @Autowired + private UserService userService; + + @Autowired + private UserBillService userBillService; + + @Autowired + private UserExtractService userExtractService; + + @Autowired + private SystemConfigService systemConfigService; + + @Autowired + private SystemUserLevelService systemUserLevelService; + + @Autowired + private SystemGroupDataService systemGroupDataService; + + @Autowired + private StoreOrderService storeOrderService; + + @Autowired + private UserRechargeService userRechargeService; + + @Autowired + private UserTokenService userTokenService; + + @Autowired + private UserBrokerageRecordService userBrokerageRecordService; + + @Autowired + private TransactionTemplate transactionTemplate; + + @Autowired + private WeChatPayService weChatPayService; + + @Autowired + private StoreCouponService storeCouponService; + + @Autowired + private StoreCouponUserService storeCouponUserService; + + @Autowired + private RedisUtil redisUtil; + + @Autowired + private LoginService loginService; + + @Autowired + private UserIntegralRecordService userIntegralRecordService; + + @Autowired + private WechatNewService wechatNewService; + + @Autowired + private UserExperienceRecordService experienceRecordService; + + @Autowired + private FrontTokenComponent tokenComponent; + + + /** + * 推广数据接口(昨天的佣金 累计提现金额 当前佣金) + */ + @Override + public UserCommissionResponse getCommission() { + User user = userService.getInfoException(); + // 昨天得佣金 + BigDecimal yesterdayIncomes = userBrokerageRecordService.getYesterdayIncomes(user.getUid()); + //累计已提取佣金 + BigDecimal totalMoney = userExtractService.getExtractTotalMoney(user.getUid()); + + UserCommissionResponse userCommissionResponse = new UserCommissionResponse(); + userCommissionResponse.setLastDayCount(yesterdayIncomes); + userCommissionResponse.setExtractCount(totalMoney); + userCommissionResponse.setCommissionCount(user.getBrokeragePrice()); + return userCommissionResponse; + } + + /** + * 推广佣金/提现总和 + * @return BigDecimal + */ + @Override + public BigDecimal getSpreadCountByType(Integer type) { + //推广佣金/提现总和 + Integer userId = userService.getUserIdException(); + if (type == 3) { + BigDecimal count = userBillService.getSumBigDecimal(null, userId, Constants.USER_BILL_CATEGORY_MONEY, null, Constants.USER_BILL_TYPE_BROKERAGE); + BigDecimal withdraw = userBillService.getSumBigDecimal(1, userId, Constants.USER_BILL_CATEGORY_MONEY, null, Constants.USER_BILL_TYPE_BROKERAGE); //提现 + return count.subtract(withdraw); + } + + //累计提现 + if (type == 4) { + return userExtractService.getWithdrawn(null,null); + } + + return BigDecimal.ZERO; + } + + /** + * 提现申请 + * @return Boolean + */ + @Override + public Boolean extractCash(UserExtractRequest request) { + switch (request.getExtractType()) { + case "weixin": + if (StringUtils.isBlank(request.getWechat())) { + throw new CrmebException("请填写微信号!"); + } + request.setAlipayCode(null); + request.setBankCode(null); + request.setBankName(null); + break; + case "alipay": + if (StringUtils.isBlank(request.getAlipayCode())) { + throw new CrmebException("请填写支付宝账号!"); + } + request.setWechat(null); + request.setBankCode(null); + request.setBankName(null); + break; + case "bank": + if (StringUtils.isBlank(request.getBankName())) { + throw new CrmebException("请填写银行名称!"); + } + if (StringUtils.isBlank(request.getBankCode())) { + throw new CrmebException("请填写银行卡号!"); + } + request.setWechat(null); + request.setAlipayCode(null); + break; + default: + throw new CrmebException("请选择支付方式"); + } + return userExtractService.extractApply(request); + } + + /** + * 提现银行/提现最低金额 + * @return UserExtractCashResponse + */ + @Override + public List getExtractBank() { + // 获取提现银行 + String bank = systemConfigService.getValueByKeyException(Constants.CONFIG_BANK_LIST).replace("\r\n", "\n"); + List bankArr = new ArrayList<>(); + if (bank.indexOf("\n") > 0) { + bankArr.addAll(Arrays.asList(bank.split("\n"))); + }else{ + bankArr.add(bank); + } + return bankArr; + } + + /** + * 会员等级列表 + * @return List + */ + @Override + public List getUserLevelList() { + return systemUserLevelService.getH5LevelList(); + } + + /** + * 推广用户, 我自己推广了哪些用户 + * @return List + */ + @Override + public List getSpreadPeopleList(UserSpreadPeopleRequest request, PageParamRequest pageParamRequest) { + //查询当前用户名下的一级推广员 + Integer userId = userService.getUserIdException(); + List userIdList = new ArrayList<>(); + userIdList.add(userId); + userIdList = userService.getSpreadPeopleIdList(userIdList); //我推广的一级用户id集合 + + if (CollUtil.isEmpty(userIdList)) {//如果没有一级推广人,直接返回 + return new ArrayList<>(); + } + if (request.getGrade().equals(1)) {// 二级推广人 + //查询二级推广人 + List secondSpreadIdList = userService.getSpreadPeopleIdList(userIdList); + //二级推广人 + userIdList.clear(); + userIdList.addAll(secondSpreadIdList); + } + List spreadPeopleList = userService.getSpreadPeopleList(userIdList, request.getKeyword(), request.getSortKey(), request.getIsAsc(), pageParamRequest); + spreadPeopleList.forEach(e -> { + OrderBrokerageData brokerageData = storeOrderService.getBrokerageData(e.getUid(), userId); + e.setOrderCount(brokerageData.getNum()); + e.setNumberCount(brokerageData.getPrice()); + }); + return spreadPeopleList; + } + + /** + * 充值额度选择 + * @return UserRechargeResponse + */ + @Override + public UserRechargeFrontResponse getRechargeConfig() { + UserRechargeFrontResponse userRechargeResponse = new UserRechargeFrontResponse(); + userRechargeResponse.setRechargeQuota(systemGroupDataService.getListByGid(SysGroupDataConstants.GROUP_DATA_ID_RECHARGE_LIST, UserRechargeItemResponse.class)); + String rechargeAttention = systemConfigService.getValueByKey(Constants.CONFIG_RECHARGE_ATTENTION); + List rechargeAttentionList = new ArrayList<>(); + if (StringUtils.isNotBlank(rechargeAttention)) { + rechargeAttentionList = CrmebUtil.stringToArrayStrRegex(rechargeAttention, "\n"); + } + userRechargeResponse.setRechargeAttention(rechargeAttentionList); + return userRechargeResponse; + } + + /** + * 用户资金统计 + * @return UserBalanceResponse + */ + @Override + public UserBalanceResponse getUserBalance() { + User info = userService.getInfo(); + BigDecimal recharge = userBillService.getSumBigDecimal(1, info.getUid(), Constants.USER_BILL_CATEGORY_MONEY, null, null); + BigDecimal orderStatusSum = userBillService.getSumBigDecimal(0, info.getUid(), Constants.USER_BILL_CATEGORY_MONEY, null, null); +// BigDecimal orderStatusSum = storeOrderService.getSumBigDecimal(info.getUid(), null); + return new UserBalanceResponse(info.getNowMoney(), recharge, orderStatusSum); + } + + /** + * 推广订单 + * @return UserSpreadOrderResponse; + */ + @Override + public UserSpreadOrderResponse getSpreadOrder(PageParamRequest pageParamRequest) { + User user = userService.getInfo(); + if (ObjectUtil.isNull(user)) { + throw new CrmebException("用户数据异常"); + } + UserSpreadOrderResponse spreadOrderResponse = new UserSpreadOrderResponse(); + // 获取累计推广条数 + Integer spreadCount = userBrokerageRecordService.getSpreadCountByUid(user.getUid()); + spreadOrderResponse.setCount(spreadCount.longValue()); + if (spreadCount.equals(0)) { + return spreadOrderResponse; + } + + // 获取推广订单记录,分页 + List recordList = userBrokerageRecordService.findSpreadListByUid(user.getUid(), pageParamRequest); + // 获取对应的订单信息 + List orderNoList = recordList.stream().map(UserBrokerageRecord::getLinkId).collect(Collectors.toList()); + Map orderMap = storeOrderService.getMapInOrderNo(orderNoList); + // 获取对应的用户信息 + List storeOrderList = new ArrayList<>(orderMap.values()); + List uidList = storeOrderList.stream().map(StoreOrder::getUid).distinct().collect(Collectors.toList()); + HashMap userMap = userService.getMapListInUid(uidList); + + List userSpreadOrderItemResponseList = new ArrayList<>(); + List monthList = CollUtil.newArrayList(); + recordList.forEach(record -> { + UserSpreadOrderItemChildResponse userSpreadOrderItemChildResponse = new UserSpreadOrderItemChildResponse(); + userSpreadOrderItemChildResponse.setOrderId(record.getLinkId()); + userSpreadOrderItemChildResponse.setTime(record.getUpdateTime()); + userSpreadOrderItemChildResponse.setNumber(record.getPrice()); + Integer orderUid = orderMap.get(record.getLinkId()).getUid(); + userSpreadOrderItemChildResponse.setAvatar(userMap.get(orderUid).getAvatar()); + userSpreadOrderItemChildResponse.setNickname(userMap.get(orderUid).getNickname()); + userSpreadOrderItemChildResponse.setType("返佣"); + + String month = DateUtil.dateToStr(record.getUpdateTime(), Constants.DATE_FORMAT_MONTH); + if (monthList.contains(month)) { + //如果在已有的数据中找到当前月份数据则追加 + for (UserSpreadOrderItemResponse userSpreadOrderItemResponse : userSpreadOrderItemResponseList) { + if (userSpreadOrderItemResponse.getTime().equals(month)) { + userSpreadOrderItemResponse.getChild().add(userSpreadOrderItemChildResponse); + break; + } + } + } else {// 不包含此月份 + //创建一个 + UserSpreadOrderItemResponse userSpreadOrderItemResponse = new UserSpreadOrderItemResponse(); + userSpreadOrderItemResponse.setTime(month); + userSpreadOrderItemResponse.getChild().add(userSpreadOrderItemChildResponse); + userSpreadOrderItemResponseList.add(userSpreadOrderItemResponse); + monthList.add(month); + } + }); + + // 获取月份总订单数 + Map countMap = userBrokerageRecordService.getSpreadCountByUidAndMonth(user.getUid(), monthList); + for (UserSpreadOrderItemResponse userSpreadOrderItemResponse: userSpreadOrderItemResponseList) { + userSpreadOrderItemResponse.setCount(countMap.get(userSpreadOrderItemResponse.getTime())); + } + + spreadOrderResponse.setList(userSpreadOrderItemResponseList); + return spreadOrderResponse; + } + + /** + * 充值 + * @return UserSpreadOrderResponse; + */ + @Override + @Transactional(rollbackFor = {RuntimeException.class, Error.class, CrmebException.class}) + public OrderPayResultResponse recharge(UserRechargeRequest request) { + request.setPayType(Constants.PAY_TYPE_WE_CHAT); + + //验证金额是否为最低金额 + String rechargeMinAmountStr = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_RECHARGE_MIN_AMOUNT); + BigDecimal rechargeMinAmount = new BigDecimal(rechargeMinAmountStr); + int compareResult = rechargeMinAmount.compareTo(request.getPrice()); + if (compareResult > 0) { + throw new CrmebException("充值金额不能低于" + rechargeMinAmountStr); + } + + request.setGivePrice(BigDecimal.ZERO); + + if (request.getGroupDataId() > 0) { + SystemGroupDataRechargeConfigVo systemGroupData = systemGroupDataService.getNormalInfo(request.getGroupDataId(), SystemGroupDataRechargeConfigVo.class); + if (ObjectUtil.isNull(systemGroupData)) { + throw new CrmebException("您选择的充值方式已下架"); + } + //售价和赠送 + request.setPrice(systemGroupData.getPrice()); + request.setGivePrice(systemGroupData.getGiveMoney()); + } + User currentUser = userService.getInfoException(); + //生成系统订单 + UserRecharge userRecharge = new UserRecharge(); + userRecharge.setUid(currentUser.getUid()); + userRecharge.setOrderId(CrmebUtil.getOrderNo("recharge")); + userRecharge.setPrice(request.getPrice()); + userRecharge.setGivePrice(request.getGivePrice()); + userRecharge.setRechargeType(request.getFromType()); + boolean save = userRechargeService.save(userRecharge); + if (!save) { + throw new CrmebException("生成充值订单失败!"); + } + + OrderPayResultResponse response = new OrderPayResultResponse(); + MyRecord record = new MyRecord(); + Map unifiedorder = weChatPayService.unifiedRecharge(userRecharge, request.getClientIp()); + record.set("status", true); + response.setStatus(true); + WxPayJsResultVo vo = new WxPayJsResultVo(); + vo.setAppId(unifiedorder.get("appId")); + vo.setNonceStr(unifiedorder.get("nonceStr")); + vo.setPackages(unifiedorder.get("package")); + vo.setSignType(unifiedorder.get("signType")); + vo.setTimeStamp(unifiedorder.get("timeStamp")); + vo.setPaySign(unifiedorder.get("paySign")); + if (userRecharge.getRechargeType().equals(PayConstants.PAY_CHANNEL_WE_CHAT_H5)) { + vo.setMwebUrl(unifiedorder.get("mweb_url")); + response.setPayType(PayConstants.PAY_CHANNEL_WE_CHAT_H5); + } + response.setJsConfig(vo); + response.setOrderNo(userRecharge.getOrderId()); + return response; + } + + /** + * 微信登录 + * @return LoginResponse; + */ + @Override + public LoginResponse weChatAuthorizeLogin(String code, Integer spreadUid) { + // 通过code获取获取公众号授权信息 + WeChatOauthToken oauthToken = wechatNewService.getOauth2AccessToken(code); + //检测是否存在 + UserToken userToken = userTokenService.getByOpenidAndType(oauthToken.getOpenId(), Constants.THIRD_LOGIN_TOKEN_TYPE_PUBLIC); + LoginResponse loginResponse = new LoginResponse(); + if (ObjectUtil.isNotNull(userToken)) {// 已存在,正常登录 + User user = userService.getById(userToken.getUid()); + if (!user.getStatus()) { + throw new CrmebException("当前账户已禁用,请联系管理员!"); + } + + // 记录最后一次登录时间 + user.setLastLoginTime(DateUtil.nowDateTime()); + Boolean execute = transactionTemplate.execute(e -> { + // 分销绑定 + if (userService.checkBingSpread(user, spreadUid, "old")) { + user.setSpreadUid(spreadUid); + user.setSpreadTime(DateUtil.nowDateTime()); + // 处理新旧推广人数据 + userService.updateSpreadCountByUid(spreadUid, "add"); + } + userService.updateById(user); + return Boolean.TRUE; + }); + if (!execute) { + logger.error(StrUtil.format("公众号登录绑定分销关系失败,uid={},spreadUid={}", user.getUid(), spreadUid)); + } + try { + String token = tokenComponent.createToken(user); + loginResponse.setToken(token); + } catch (Exception e) { + logger.error(StrUtil.format("公众号登录生成token失败,uid={}", user.getUid())); + e.printStackTrace(); + } + loginResponse.setType("login"); + loginResponse.setUid(user.getUid()); + loginResponse.setNikeName(user.getNickname()); + loginResponse.setPhone(user.getPhone()); + return loginResponse; + } + // 没有用户,走创建用户流程 + // 从微信获取用户信息,存入Redis中,将key返回给前端,前端在下一步绑定手机号的时候下发 + WeChatAuthorizeLoginUserInfoVo userInfo = wechatNewService.getSnsUserInfo(oauthToken.getAccessToken(), oauthToken.getOpenId()); + RegisterThirdUserRequest registerThirdUserRequest = new RegisterThirdUserRequest(); + BeanUtils.copyProperties(userInfo, registerThirdUserRequest); + registerThirdUserRequest.setSpreadPid(spreadUid); + registerThirdUserRequest.setType(Constants.USER_LOGIN_TYPE_PUBLIC); + registerThirdUserRequest.setOpenId(oauthToken.getOpenId()); + String key = SecureUtil.md5(oauthToken.getOpenId()); + redisUtil.set(key, JSONObject.toJSONString(registerThirdUserRequest), (long) (60 * 2), TimeUnit.MINUTES); + + loginResponse.setType("register"); + loginResponse.setKey(key); + return loginResponse; + } + + /** + * 获取微信授权logo + * @return String; + */ + @Override + public String getLogo() { + return systemConfigService.getValueByKey(Constants.CONFIG_KEY_MOBILE_LOGIN_LOGO); + } + + /** + * 小程序登录 + * @param code String 前端临时授权code + * @param request RegisterThirdUserRequest 用户信息 + * @return LoginResponse + */ + @Override + public LoginResponse weChatAuthorizeProgramLogin(String code, RegisterThirdUserRequest request) { + WeChatMiniAuthorizeVo response = wechatNewService.miniAuthCode(code); + System.out.println("小程序登陆成功 = " + JSON.toJSONString(response)); + + //检测是否存在 + UserToken userToken = userTokenService.getByOpenidAndType(response.getOpenId(), Constants.THIRD_LOGIN_TOKEN_TYPE_PROGRAM); + LoginResponse loginResponse = new LoginResponse(); + if (ObjectUtil.isNotNull(userToken)) {// 已存在,正常登录 + User user = userService.getById(userToken.getUid()); + if (!user.getStatus()) { + throw new CrmebException("当前账户已禁用,请联系管理员!"); + } + // 记录最后一次登录时间 + user.setLastLoginTime(DateUtil.nowDateTime()); + Boolean execute = transactionTemplate.execute(e -> { + // 分销绑定 + if (userService.checkBingSpread(user, request.getSpreadPid(), "old")) { + user.setSpreadUid(request.getSpreadPid()); + user.setSpreadTime(DateUtil.nowDateTime()); + // 处理新旧推广人数据 + userService.updateSpreadCountByUid(request.getSpreadPid(), "add"); + } + userService.updateById(user); + return Boolean.TRUE; + }); + if (!execute) { + logger.error(StrUtil.format("小程序登录绑定分销关系失败,uid={},spreadUid={}", user.getUid(), request.getSpreadPid())); + } + + try { + String token = tokenComponent.createToken(user); + loginResponse.setToken(token); + } catch (Exception e) { + logger.error(StrUtil.format("小程序登录生成token失败,uid={}", user.getUid())); + e.printStackTrace(); + } + loginResponse.setType("login"); + loginResponse.setUid(user.getUid()); + loginResponse.setNikeName(user.getNickname()); + loginResponse.setPhone(user.getPhone()); + return loginResponse; + } + + if (StrUtil.isBlank(request.getNickName()) && StrUtil.isBlank(request.getAvatar()) && StrUtil.isBlank(request.getHeadimgurl())) { + // 返回后,前端去走注册起始页 + loginResponse.setType("start"); + return loginResponse; + } + + request.setType(Constants.USER_LOGIN_TYPE_PROGRAM); + request.setOpenId(response.getOpenId()); + String key = SecureUtil.md5(response.getOpenId()); + redisUtil.set(key, JSONObject.toJSONString(request), (long) (60 * 2), TimeUnit.MINUTES); + loginResponse.setType("register"); + loginResponse.setKey(key); + return loginResponse; + } + + /** + * 推广人排行榜 + * @param type String 时间范围(week-周,month-月) + * @param pageParamRequest PageParamRequest 分页 + * @return List + */ + @Override + public List getTopSpreadPeopleListByDate(String type, PageParamRequest pageParamRequest) { + return userService.getTopSpreadPeopleListByDate(type, pageParamRequest); + } + + /** + * 佣金排行榜 + * @param type String 时间范围 + * @param pageParamRequest PageParamRequest 分页 + * @return List + */ + @Override + public List getTopBrokerageListByDate(String type, PageParamRequest pageParamRequest) { + // 获取佣金排行榜(周、月) + List recordList = userBrokerageRecordService.getBrokerageTopByDate(type); + if (CollUtil.isEmpty(recordList)) { + return null; + } + // 解决0元排行问题 + for (int i = 0; i < recordList.size();) { + UserBrokerageRecord userBrokerageRecord = recordList.get(i); + if (userBrokerageRecord.getPrice().compareTo(BigDecimal.ZERO) < 1) { + recordList.remove(i); + continue; + } + i++; + } + if (CollUtil.isEmpty(recordList)) { + return null; + } + + List uidList = recordList.stream().map(UserBrokerageRecord::getUid).collect(Collectors.toList()); + //查询用户 + HashMap userVoList = userService.getMapListInUid(uidList); + + //解决排序问题 + List userList = CollUtil.newArrayList(); + for (UserBrokerageRecord record: recordList) { + User user = new User(); + User userVo = userVoList.get(record.getUid()); + + user.setUid(record.getUid()); + user.setAvatar(userVo.getAvatar()); + user.setBrokeragePrice(record.getPrice()); + if (StrUtil.isBlank(userVo.getNickname())) { + user.setNickname(userVo.getPhone().substring(0, 2) + "****" + userVo.getPhone().substring(7)); + }else{ + user.setNickname(userVo.getNickname()); + } + userList.add(user); + } + return userList; + } + + /** + * 推广海报图 + * @return List + */ + @Override + public List getSpreadBannerList() { + return systemGroupDataService.getListByGid(Constants.GROUP_DATA_ID_SPREAD_BANNER_LIST, UserSpreadBannerResponse.class); + } + + /** + * 当前用户在佣金排行第几名 + * @param type String 时间范围 + * @return 优惠券集合 + */ + @Override + public Integer getNumberByTop(String type) { + int number = 0; + Integer userId = userService.getUserIdException(); + PageParamRequest pageParamRequest = new PageParamRequest(); + pageParamRequest.setLimit(100); + + List recordList = userBrokerageRecordService.getBrokerageTopByDate(type); + if (CollUtil.isEmpty(recordList)) { + return number; + } + + for (int i = 0; i < recordList.size(); i++) { + if (recordList.get(i).getUid().equals(userId)) { + number = i + 1; + break ; + } + } + return number; + } + + /** + * 佣金转入余额 + * @return Boolean + */ + @Override + public Boolean transferIn(BigDecimal price) { + if (price.compareTo(BigDecimal.ZERO) <= 0) { + throw new CrmebException("转入金额不能为0"); + } + //当前可提现佣金 + User user = userService.getInfo(); + if (ObjectUtil.isNull(user)) { + throw new CrmebException("用户数据异常"); + } + BigDecimal subtract = user.getBrokeragePrice(); + if (subtract.compareTo(price) < 0) { + throw new CrmebException("您当前可充值余额为 " + subtract + "元"); + } + // userBill现金增加记录 + UserBill userBill = new UserBill(); + userBill.setUid(user.getUid()); + userBill.setLinkId("0"); + userBill.setPm(1); + userBill.setTitle("佣金转余额"); + userBill.setCategory(Constants.USER_BILL_CATEGORY_MONEY); + userBill.setType(Constants.USER_BILL_TYPE_TRANSFER_IN); + userBill.setNumber(price); + userBill.setBalance(user.getNowMoney().add(price)); + userBill.setMark(StrUtil.format("佣金转余额,增加{}", price)); + userBill.setStatus(1); + userBill.setCreateTime(DateUtil.nowDateTime()); + + // userBrokerage转出记录 + UserBrokerageRecord brokerageRecord = new UserBrokerageRecord(); + brokerageRecord.setUid(user.getUid()); + brokerageRecord.setLinkId("0"); + brokerageRecord.setLinkType(BrokerageRecordConstants.BROKERAGE_RECORD_LINK_TYPE_YUE); + brokerageRecord.setType(BrokerageRecordConstants.BROKERAGE_RECORD_TYPE_SUB); + brokerageRecord.setTitle(BrokerageRecordConstants.BROKERAGE_RECORD_TITLE_BROKERAGE_YUE); + brokerageRecord.setPrice(price); + brokerageRecord.setBalance(user.getNowMoney().add(price)); + brokerageRecord.setMark(StrUtil.format("佣金转余额,减少{}", price)); + brokerageRecord.setStatus(BrokerageRecordConstants.BROKERAGE_RECORD_STATUS_COMPLETE); + brokerageRecord.setCreateTime(DateUtil.nowDateTime()); + + Boolean execute = transactionTemplate.execute(e -> { + // 扣佣金 + userService.operationBrokerage(user.getUid(), price, user.getBrokeragePrice(), "sub"); + // 加余额 + userService.operationNowMoney(user.getUid(), price, user.getNowMoney(), "add"); + userBillService.save(userBill); + userBrokerageRecordService.save(brokerageRecord); + return Boolean.TRUE; + }); + return execute; + } + + /** + * 提现记录 + */ + @Override + public PageInfo getExtractRecord(PageParamRequest pageParamRequest) { + Integer userId = userService.getUserIdException(); + return userExtractService.getExtractRecord(userId, pageParamRequest); + } + + /** + * 推广佣金明细 + * @param pageParamRequest 分页参数 + */ + @Override + public PageInfo getSpreadCommissionDetail(PageParamRequest pageParamRequest) { + User user = userService.getInfoException(); + return userBrokerageRecordService.findDetailListByUid(user.getUid(), pageParamRequest); + } + + /** + * 用户账单记录(现金) + * @param type 记录类型:all-全部,expenditure-支出,income-收入 + * @return CommonPage + */ + @Override + public CommonPage nowMoneyBillRecord(String type, PageParamRequest pageRequest) { + User user = userService.getInfo(); + if (ObjectUtil.isNull(user)) { + throw new CrmebException("用户数据异常"); + } + PageInfo billPageInfo = userBillService.nowMoneyBillRecord(user.getUid(), type, pageRequest); + List list = billPageInfo.getList(); + + // 获取年-月 + Map> map = CollUtil.newHashMap(); + list.forEach(i -> { + String month = StrUtil.subPre(DateUtil.dateToStr(i.getCreateTime(), Constants.DATE_FORMAT), 7); + if (map.containsKey(month)) { + map.get(month).add(i); + } else { + List billList = CollUtil.newArrayList(); + billList.add(i); + map.put(month, billList); + } + }); + List responseList = CollUtil.newArrayList(); + map.forEach((key, value) -> { + UserRechargeBillRecordResponse response = new UserRechargeBillRecordResponse(); + response.setDate(key); + response.setList(value); + responseList.add(response); + }); + + PageInfo pageInfo = CommonPage.copyPageInfo(billPageInfo, responseList); + return CommonPage.restPage(pageInfo); + } + + /** + * 微信注册绑定手机号 + * @param request 请求参数 + * @return 登录信息 + */ + @Override + public LoginResponse registerBindingPhone(WxBindingPhoneRequest request) { + checkBindingPhone(request); + + // 进入创建用户绑定手机号流程 + Object o = redisUtil.get(request.getKey()); + if (ObjectUtil.isNull(o)) { + throw new CrmebException("用户缓存已过期,请清除缓存重新登录"); + } + RegisterThirdUserRequest registerThirdUserRequest = JSONObject.parseObject(o.toString(), RegisterThirdUserRequest.class); + + boolean isNew = true; + + User user = userService.getByPhone(request.getPhone()); + if (ObjectUtil.isNull(user)) { + user = userService.registerByThird(registerThirdUserRequest); + user.setPhone(request.getPhone()); + user.setAccount(request.getPhone()); + user.setSpreadUid(0); + user.setPwd(CommonUtil.createPwd(request.getPhone())); + } else {// 已有账户,关联到之前得账户即可 + // 查询是否用对应得token + int type = 0; + switch (request.getType()) { + case "public": + type = Constants.THIRD_LOGIN_TOKEN_TYPE_PUBLIC; + break; + case "routine": + type = Constants.THIRD_LOGIN_TOKEN_TYPE_PROGRAM; + break; + } + + UserToken userToken = userTokenService.getTokenByUserId(user.getUid(), type); + if (ObjectUtil.isNotNull(userToken)) { + throw new CrmebException("该手机号已被注册"); + } + isNew = false; + } + + User finalUser = user; + boolean finalIsNew = isNew; + Boolean execute = transactionTemplate.execute(e -> { + if (finalIsNew) {// 新用户 + // 分销绑定 + if (userService.checkBingSpread(finalUser, registerThirdUserRequest.getSpreadPid(), "new")) { + finalUser.setSpreadUid(registerThirdUserRequest.getSpreadPid()); + finalUser.setSpreadTime(DateUtil.nowDateTime()); + userService.updateSpreadCountByUid(registerThirdUserRequest.getSpreadPid(), "add"); + } + userService.save(finalUser); + // 赠送新人券 + giveNewPeopleCoupon(finalUser.getUid()); + } + switch (request.getType()) { + case "public": + userTokenService.bind(registerThirdUserRequest.getOpenId(), Constants.THIRD_LOGIN_TOKEN_TYPE_PUBLIC, finalUser.getUid()); + break; + case "routine": + userTokenService.bind(registerThirdUserRequest.getOpenId(), Constants.THIRD_LOGIN_TOKEN_TYPE_PROGRAM, finalUser.getUid()); + break; + } + return Boolean.TRUE; + }); + if (!execute) { + logger.error("微信用户注册生成失败,nickName = " + registerThirdUserRequest.getNickName()); + } else if (!isNew) {// 老用户绑定推广人 + if (ObjectUtil.isNotNull(registerThirdUserRequest.getSpreadPid()) && registerThirdUserRequest.getSpreadPid() > 0) { + loginService.bindSpread(finalUser, registerThirdUserRequest.getSpreadPid()); + } + } + LoginResponse loginResponse = new LoginResponse(); + try { + String token = tokenComponent.createToken(finalUser); + loginResponse.setToken(token); + } catch (Exception e) { + logger.error(StrUtil.format("绑定手机号,自动登录生成token失败,uid={}", finalUser.getUid())); + e.printStackTrace(); + } + loginResponse.setType("login"); + loginResponse.setUid(user.getUid()); + loginResponse.setNikeName(user.getNickname()); + loginResponse.setPhone(user.getPhone()); + return loginResponse; + } + + /** + * 用户积分记录列表 + * @param pageParamRequest 分页参数 + * @return List + */ + @Override + public List getUserIntegralRecordList(PageParamRequest pageParamRequest) { + Integer uid = userService.getUserIdException(); + return userIntegralRecordService.findUserIntegralRecordList(uid, pageParamRequest); + } + + /** + * 获取用户积分信息 + * @return IntegralUserResponse + */ + @Override + public IntegralUserResponse getIntegralUser() { + User user = userService.getInfoException(); + IntegralUserResponse userSignInfoResponse = new IntegralUserResponse(); + + //签到 + Integer sumIntegral = userIntegralRecordService.getSumIntegral(user.getUid(), IntegralRecordConstants.INTEGRAL_RECORD_TYPE_ADD, "", null); + Integer deductionIntegral = userIntegralRecordService.getSumIntegral(user.getUid(), IntegralRecordConstants.INTEGRAL_RECORD_TYPE_SUB, "", IntegralRecordConstants.INTEGRAL_RECORD_LINK_TYPE_ORDER); + userSignInfoResponse.setSumIntegral(sumIntegral); + userSignInfoResponse.setDeductionIntegral(deductionIntegral); + // 冻结积分 + Integer frozenIntegral = userIntegralRecordService.getFrozenIntegralByUid(user.getUid()); + userSignInfoResponse.setFrozenIntegral(frozenIntegral); + userSignInfoResponse.setIntegral(user.getIntegral()); + return userSignInfoResponse; + } + + /** + * 获取用户经验记录 + * @param pageParamRequest 分页参数 + * @return List + */ + @Override + public List getUserExperienceList(PageParamRequest pageParamRequest) { + Integer userId = userService.getUserIdException(); + return experienceRecordService.getH5List(userId, pageParamRequest); + } + + /** + * 提现用户信息 + * @return UserExtractCashResponse + */ + @Override + public UserExtractCashResponse getExtractUser() { + User user = userService.getInfoException(); + // 提现最低金额 + String minPrice = systemConfigService.getValueByKeyException(SysConfigConstants.CONFIG_EXTRACT_MIN_PRICE); + // 冻结天数 + String extractTime = systemConfigService.getValueByKey(SysConfigConstants.CONFIG_EXTRACT_FREEZING_TIME); + // 可提现佣金 + BigDecimal brokeragePrice = user.getBrokeragePrice(); + // 冻结佣金 + BigDecimal freeze = userBrokerageRecordService.getFreezePrice(user.getUid()); + return new UserExtractCashResponse(minPrice, brokeragePrice, freeze, extractTime); + } + + /** + * 推广人列表统计 + * @return UserSpreadPeopleResponse + */ + @Override + public UserSpreadPeopleResponse getSpreadPeopleCount() { + //查询当前用户名下的一级推广员 + UserSpreadPeopleResponse userSpreadPeopleResponse = new UserSpreadPeopleResponse(); + List userIdList = new ArrayList<>(); + Integer userId = userService.getUserIdException(); + userIdList.add(userId); + userIdList = userService.getSpreadPeopleIdList(userIdList); //我推广的一级用户id集合 + + if (CollUtil.isEmpty(userIdList)) {//如果没有一级推广人,直接返回 + userSpreadPeopleResponse.setCount(0); + userSpreadPeopleResponse.setTotal(0); + userSpreadPeopleResponse.setTotalLevel(0); + return userSpreadPeopleResponse; + } + + userSpreadPeopleResponse.setTotal(userIdList.size()); //一级推广人 + //查询二级推广人 + List secondSpreadIdList = userService.getSpreadPeopleIdList(userIdList); + if (CollUtil.isEmpty(secondSpreadIdList)) { + userSpreadPeopleResponse.setTotalLevel(0); + userSpreadPeopleResponse.setCount(userSpreadPeopleResponse.getTotal()); + return userSpreadPeopleResponse; + } + userSpreadPeopleResponse.setTotalLevel(secondSpreadIdList.size()); + userSpreadPeopleResponse.setCount(userIdList.size() + secondSpreadIdList.size()); + return userSpreadPeopleResponse; + } + + /** + * 绑定手机号数据校验 + */ + private void checkBindingPhone(WxBindingPhoneRequest request) { + if (!"public".equals(request.getType()) && !"routine".equals(request.getType()) && !"iosWx".equals(request.getType()) && !"androidWx".equals(request.getType())) { + throw new CrmebException("未知的用户类型"); + } + if ("public".equals(request.getType())) { + if (StrUtil.isBlank(request.getCaptcha())) { + throw new CrmebException("验证码不能为空"); + } + boolean matchPhone = ReUtil.isMatch(RegularConstants.PHONE_TWO, request.getPhone()); + if (!matchPhone) { + throw new CrmebException("手机号格式错误,请输入正确得手机号"); + } + // 公众号用户校验验证码 + boolean match = ReUtil.isMatch(RegularConstants.VALIDATE_CODE_NUM_SIX, request.getCaptcha()); + if (!match) { + throw new CrmebException("验证码格式错误,验证码必须为6位数字"); + } + checkValidateCode(request.getPhone(), request.getCaptcha()); + } else { + // 参数校验 + if (StrUtil.isBlank(request.getCode())) { + throw new CrmebException("小程序获取手机号code不能为空"); + } + if (StrUtil.isBlank(request.getEncryptedData())) { + throw new CrmebException("小程序获取手机号加密数据不能为空"); + } + if (StrUtil.isBlank(request.getIv())) { + throw new CrmebException("小程序获取手机号加密算法的初始向量不能为空"); + } + // 获取appid + String programAppId = systemConfigService.getValueByKey(WeChatConstants.WECHAT_MINI_APPID); + if (StringUtils.isBlank(programAppId)) { + throw new CrmebException("微信小程序appId未设置"); + } + + WeChatMiniAuthorizeVo response = wechatNewService.miniAuthCode(request.getCode()); +// WeChatMiniAuthorizeVo response = weChatService.programAuthorizeLogin(request.getCode()); + System.out.println("小程序登陆成功 = " + JSON.toJSONString(response)); + String decrypt = WxUtil.decrypt(programAppId, request.getEncryptedData(), response.getSessionKey(), request.getIv()); + if (StrUtil.isBlank(decrypt)) { + throw new CrmebException("微信小程序获取手机号解密失败"); + } + JSONObject jsonObject = JSONObject.parseObject(decrypt); + if (StrUtil.isBlank(jsonObject.getString("phoneNumber"))) { + throw new CrmebException("微信小程序获取手机号没有有效的手机号"); + } + request.setPhone(jsonObject.getString("phoneNumber")); + } + } + + /** + * 赠送新人券 + * @param uid 用户uid + */ + private void giveNewPeopleCoupon(Integer uid) { + // 查询是否有新人注册赠送优惠券 + List couponUserList = CollUtil.newArrayList(); + List couponList = storeCouponService.findRegisterList(); + if (CollUtil.isNotEmpty(couponList)) { + couponList.forEach(storeCoupon -> { + //是否有固定的使用时间 + if (!storeCoupon.getIsFixedTime()) { + String endTime = DateUtil.addDay(DateUtil.nowDate(Constants.DATE_FORMAT), storeCoupon.getDay(), Constants.DATE_FORMAT); + storeCoupon.setUseEndTime(DateUtil.strToDate(endTime, Constants.DATE_FORMAT)); + storeCoupon.setUseStartTime(DateUtil.nowDateTimeReturnDate(Constants.DATE_FORMAT)); + } + + StoreCouponUser storeCouponUser = new StoreCouponUser(); + storeCouponUser.setCouponId(storeCoupon.getId()); + storeCouponUser.setName(storeCoupon.getName()); + storeCouponUser.setMoney(storeCoupon.getMoney()); + storeCouponUser.setMinPrice(storeCoupon.getMinPrice()); + storeCouponUser.setUseType(storeCoupon.getUseType()); + if (storeCoupon.getIsFixedTime()) {// 使用固定时间 + storeCouponUser.setStartTime(storeCoupon.getUseStartTime()); + storeCouponUser.setEndTime(storeCoupon.getUseEndTime()); + } else {// 没有固定使用时间 + Date nowDate = DateUtil.nowDateTime(); + storeCouponUser.setStartTime(nowDate); + DateTime dateTime = cn.hutool.core.date.DateUtil.offsetDay(nowDate, storeCoupon.getDay()); + storeCouponUser.setEndTime(dateTime); + } + storeCouponUser.setType("register"); + if (storeCoupon.getUseType() > 1) { + storeCouponUser.setPrimaryKey(storeCoupon.getPrimaryKey()); + } + storeCouponUser.setType(CouponConstants.STORE_COUPON_USER_TYPE_REGISTER); + couponUserList.add(storeCouponUser); + }); + } + + // 赠送客户优惠券 + if (CollUtil.isNotEmpty(couponUserList)) { + couponUserList.forEach(couponUser -> couponUser.setUid(uid)); + storeCouponUserService.saveBatch(couponUserList); + couponList.forEach(coupon -> storeCouponService.deduction(coupon.getId(), 1, coupon.getIsLimited())); + } + } + + /** + * 检测手机验证码 + * @param phone 手机号 + * @param code 验证码 + */ + private void checkValidateCode(String phone, String code) { + Object validateCode = redisUtil.get(SmsConstants.SMS_VALIDATE_PHONE + phone); + if (validateCode == null) { + throw new CrmebException("验证码已过期"); + } + if (!validateCode.toString().equals(code)) { + throw new CrmebException("验证码错误"); + } + //删除验证码 + redisUtil.delete(SmsConstants.SMS_VALIDATE_PHONE + phone); + } +} diff --git a/crmeb/crmeb-front/src/main/resources/application-beta.yml b/crmeb/crmeb-front/src/main/resources/application-beta.yml new file mode 100644 index 0000000..c2beaff --- /dev/null +++ b/crmeb/crmeb-front/src/main/resources/application-beta.yml @@ -0,0 +1,31 @@ +# CRMEB 相关配置 +crmeb: + version: CRMEB-JAVA-KY-v1.3.4 # 当前代码版本 + +server: + port: 20009 + +spring: + profiles: + # 配置的环境 + active: beta + # 数据库配置 + datasource: + type: com.alibaba.druid.pool.DruidDataSource + driver-class-name: com.mysql.jdbc.Driver + url: jdbc:mysql://127.0.0.1:3306/crmeb_java_beta?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimeZone=GMT+8 + username: root + password: 123456 + redis: + host: 127.0.0.1 #地址 + port: 6379 #端口 + password: 123456 + timeout: 10000 # 连接超时时间(毫秒) + database: 3 #默认数据库 + jedis: + pool: + max-active: 200 # 连接池最大连接数(使用负值表示没有限制) + max-wait: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制) + max-idle: 10 # 连接池中的最大空闲连接 + min-idle: 0 # 连接池中的最小空闲连接 + time-between-eviction-runs: -1 #逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1 diff --git a/crmeb/crmeb-front/src/main/resources/application-dev.yml b/crmeb/crmeb-front/src/main/resources/application-dev.yml new file mode 100644 index 0000000..1d5a530 --- /dev/null +++ b/crmeb/crmeb-front/src/main/resources/application-dev.yml @@ -0,0 +1,31 @@ +# CRMEB 相关配置 +crmeb: + version: CRMEB-JAVA-KY-v1.3.4 # 当前代码版本 + +server: + port: 20011 + +spring: + profiles: + # 配置的环境 + active: dev + # 数据库配置 + datasource: + type: com.alibaba.druid.pool.DruidDataSource + driver-class-name: com.mysql.jdbc.Driver + url: jdbc:mysql://127.0.0.1:3306/crmeb_java_dev?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimeZone=GMT+8 + username: root + password: 123456 + redis: + host: 127.0.0.1 #地址 + port: 6379 #端口 + password: 123456 + timeout: 10000 # 连接超时时间(毫秒) + database: 10 #默认数据库 + jedis: + pool: + max-active: 200 # 连接池最大连接数(使用负值表示没有限制) + max-wait: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制) + max-idle: 10 # 连接池中的最大空闲连接 + min-idle: 0 # 连接池中的最小空闲连接 + time-between-eviction-runs: -1 #逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1 diff --git a/crmeb/crmeb-front/src/main/resources/application-prod.yml b/crmeb/crmeb-front/src/main/resources/application-prod.yml new file mode 100644 index 0000000..3bc577f --- /dev/null +++ b/crmeb/crmeb-front/src/main/resources/application-prod.yml @@ -0,0 +1,55 @@ +# CRMEB 相关配置 +crmeb: + version: CRMEB-JAVA-KY-v1.3.4 # 当前代码版本 + +server: + port: 20001 + +spring: + profiles: + # 配置的环境 + active: prod + # 数据库配置 + datasource: + type: com.alibaba.druid.pool.DruidDataSource + driver-class-name: com.mysql.jdbc.Driver + url: jdbc:mysql://127.0.0.1:3306/crmeb_java?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimeZone=GMT+8 + username: root + password: 123456 + redis: + host: 127.0.0.1 #地址 + port: 6379 #端口 + password: 123456 + timeout: 10000 # 连接超时时间(毫秒) + database: 15 #默认数据库 + jedis: + pool: + max-active: 200 # 连接池最大连接数(使用负值表示没有限制) + max-wait: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制) + max-idle: 10 # 连接池中的最大空闲连接 + min-idle: 0 # 连接池中的最小空闲连接 + time-between-eviction-runs: -1 #逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1 + +debug: true +logging: + level: + io.swagger.*: error + com.zbjk.crmeb: debug + org.springframework.boot.autoconfigure: ERROR + config: classpath:logback-spring.xml + file: + path: ./crmeb_log + +# mybatis 配置 +mybatis-plus: + # 配置slq打印日志 + configuration: + log-impl: + +#swagger 配置 +swagger: + basic: + enable: true #是否开启界面 + check: true #是否打开验证 + username: #访问swagger的账号 + password: #访问swagger的密码 diff --git a/crmeb/crmeb-front/src/main/resources/application.yml b/crmeb/crmeb-front/src/main/resources/application.yml new file mode 100644 index 0000000..f4d78b4 --- /dev/null +++ b/crmeb/crmeb-front/src/main/resources/application.yml @@ -0,0 +1,82 @@ +# CRMEB 相关配置 +crmeb: + version: CRMEB-JAVA-KY-v1.3.4 # 当前代码版本 + +# 配置端口 +server: + port: 8081 + servlet: + context-path: / # 访问path + tomcat: + uri-encoding: UTF-8 # 默认编码格式 + max-threads: 1000 # 最大线程数量 默认200 + min-spare-threads: 30 # 初始化启动线程数量 + +spring: + profiles: + # 配置的环境 + # active: #spring.profiles.active# + active: + servlet: + multipart: + max-file-size: 50MB #设置单个文件大小 + max-request-size: 50MB #设置单次请求文件的总大小 + resources: + static-locations: classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,file:${crmeb.filePath} + application: + name: cemrb-front #这个很重要,这在以后的服务与服务之间相互调用一般都是根据这个name + jackson: + locale: zh_CN + time-zone: GMT+8 + date-format: yyyy-MM-dd HH:mm:ss + # 数据库配置 + datasource: + type: com.alibaba.druid.pool.DruidDataSource + driver-class-name: com.mysql.jdbc.Driver + url: jdbc:mysql://127.0.0.1:3306/crmeb?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimeZone=GMT+8 + username: crmeb + password: 111111 + redis: + host: 127.0.0.1 #地址 + port: 6379 #端口 + password: 111111 + timeout: 30000 # 连接超时时间(毫秒) + database: 3 #默认数据库 + jedis: + pool: + max-active: 200 # 连接池最大连接数(使用负值表示没有限制) + max-wait: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制) + max-idle: 10 # 连接池中的最大空闲连接 + min-idle: 0 # 连接池中的最小空闲连接 + time-between-eviction-runs: -1 #逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1 + +debug: true +logging: + level: + io.swagger.*: error + com.zbjk.crmeb: debug + org.springframework.boot.autoconfigure: ERROR + config: classpath:logback-spring.xml + file: + path: ./crmeb_log + +# mybatis 配置 +mybatis-plus: + mapper-locations: classpath*:mapper/*/*Mapper.xml #xml扫描,多个目录用逗号或者分号分隔(告诉 Mapper 所对应的 XML 文件位置) + # 配置slq打印日志 + configuration: + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + global-config: + db-config: +# logic-delete-field: isDel #全局逻辑删除字段值 3.3.0开始支持,详情看下面。 + logic-delete-value: 1 # 逻辑已删除值(默认为 1) + logic-not-delete-value: 0 # 逻辑未删除值(默认为 0) + + +#swagger 配置 +swagger: + basic: + enable: true #是否开启 + check: false #是否打开验证 + username: #访问swagger的账号 + password: #访问swagger的密码 diff --git a/crmeb/crmeb-front/src/main/resources/banner.txt b/crmeb/crmeb-front/src/main/resources/banner.txt new file mode 100644 index 0000000..373ff0e --- /dev/null +++ b/crmeb/crmeb-front/src/main/resources/banner.txt @@ -0,0 +1,11 @@ + ,ad8888ba, 88888888ba 88b d88 88888888888 88888888ba + d8"' `"8b 88 "8b 888b d888 88 88 "8b +d8' 88 ,8P 88`8b d8'88 88 88 ,8P +88 88aaaaaa8P' 88 `8b d8' 88 88aaaaa 88aaaaaa8P' +88 88""""88' 88 `8b d8' 88 88""""" 88""""""8b, +Y8, 88 `8b 88 `8b d8' 88 88 88 `8b + Y8a. .a8P 88 `8b 88 `888' 88 88 88 a8P + `"Y8888Y"' 88 `8b 88 `8' 88 88888888888 88888888P" +文档地址: https://help.crmeb.net/crmeb_java/1748037 +演示站WEBPC: https://admin.java.crmeb.ne +演示站H5: https://java.crmeb.net diff --git a/crmeb/crmeb-front/src/main/resources/logback-spring.xml b/crmeb/crmeb-front/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..a4e705a --- /dev/null +++ b/crmeb/crmeb-front/src/main/resources/logback-spring.xml @@ -0,0 +1,234 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { + "app": "${APP_NAME}", + "timestamp":"%d{yyyy-MM-dd HH:mm:ss.SSS}", + "level": "%level", + "thread": "%thread", + "class": "%logger{40}", + "message": "%msg" } + %n + + + utf-8 + + + + + + + + + + + ${log.path}/log_debug.log + + + + + + + + { + "app": "${APP_NAME}", + "timestamp":"%d{yyyy-MM-dd HH:mm:ss.SSS}", + "level": "%level", + "thread": "%thread", + "class": "%logger{40}", + "message": "%msg" } + %n + + + utf-8 + + + + + ${log.path}/debug/log-debug-%d{yyyy-MM-dd}.%i.log + + 100MB + + + 30 + + + + debug + ACCEPT + DENY + + + + + + + ${log.path}/log_info.log + + + + + + + + { + "app": "${APP_NAME}", + "timestamp":"%d{yyyy-MM-dd HH:mm:ss.SSS}", + "level": "%level", + "thread": "%thread", + "class": "%logger{40}", + "message": "%msg" } + %n + + + utf-8 + + + + + ${log.path}/info/log-info-%d{yyyy-MM-dd}.%i.log + + 100MB + + + 30 + + + + info + ACCEPT + DENY + + + + + + + ${log.path}/log_warn.log + + + + + + + + { + "app": "${APP_NAME}", + "timestamp":"%d{yyyy-MM-dd HH:mm:ss.SSS}", + "level": "%level", + "thread": "%thread", + "class": "%logger{40}", + "message": "%msg" } + %n + + + utf-8 + + + + ${log.path}/warn/log-warn-%d{yyyy-MM-dd}.%i.log + + 100MB + + + 2 + + + + warn + ACCEPT + DENY + + + + + + + + ${log.path}/log_error.log + + + + + + + + { + "app": "${APP_NAME}", + "timestamp":"%d{yyyy-MM-dd HH:mm:ss.SSS}", + "level": "%level", + "thread": "%thread", + "class": "%logger{40}", + "message": "%msg" } + %n + + + utf-8 + + + + ${log.path}/error/log-error-%d{yyyy-MM-dd}.%i.log + + 100MB + + + 30 + + + + ERROR + ACCEPT + DENY + + + + + + + + + + + + + + + + + + + + + diff --git a/crmeb/crmeb-service/pom.xml b/crmeb/crmeb-service/pom.xml new file mode 100644 index 0000000..0ebfeab --- /dev/null +++ b/crmeb/crmeb-service/pom.xml @@ -0,0 +1,27 @@ + + + + crmeb + com.zbkj + 0.0.1-SNAPSHOT + + 4.0.0 + + crmeb-service + crmeb-service + + + 0.0.1-SNAPSHOT + + + + + com.zbkj + crmeb-common + ${crmeb-common} + + + + \ No newline at end of file diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/ArticleDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/ArticleDao.java new file mode 100644 index 0000000..541c3f7 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/ArticleDao.java @@ -0,0 +1,20 @@ +package com.zbkj.service.dao; + +import com.zbkj.common.model.article.Article; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * 文章管理表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface ArticleDao extends BaseMapper
{ + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/CategoryDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/CategoryDao.java new file mode 100644 index 0000000..b8900b4 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/CategoryDao.java @@ -0,0 +1,19 @@ +package com.zbkj.service.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zbkj.common.model.category.Category; + +/** + * 分类表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface CategoryDao extends BaseMapper { +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/ExpressDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/ExpressDao.java new file mode 100644 index 0000000..3de15b9 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/ExpressDao.java @@ -0,0 +1,20 @@ +package com.zbkj.service.dao; + +import com.zbkj.common.model.express.Express; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * 快递公司表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface ExpressDao extends BaseMapper { + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/MySqlGenDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/MySqlGenDao.java new file mode 100644 index 0000000..82e0e14 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/MySqlGenDao.java @@ -0,0 +1,29 @@ +package com.zbkj.service.dao; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; +import java.util.Map; + +@Mapper +public interface MySqlGenDao { + /** + * Mysql 查询列表 + * @param map 表名称 + * @return 列表 + */ + List> getList(Map map); + + /** + * Mysql 查询获取表信息 + * @param tableName 表名称 + * @return 表信息 + */ + Map getTable(String tableName); + + /** + * mysql 获取列信息 + * @param tableName 表名称 + * @return 表对应的列信息 + */ + List> getColumns(String tableName); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/ShippingTemplatesDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/ShippingTemplatesDao.java new file mode 100644 index 0000000..4e9cd5e --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/ShippingTemplatesDao.java @@ -0,0 +1,20 @@ +package com.zbkj.service.dao; + +import com.zbkj.common.model.express.ShippingTemplates; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface ShippingTemplatesDao extends BaseMapper { + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/ShippingTemplatesFreeDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/ShippingTemplatesFreeDao.java new file mode 100644 index 0000000..d1186f7 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/ShippingTemplatesFreeDao.java @@ -0,0 +1,24 @@ +package com.zbkj.service.dao; + +import com.zbkj.common.model.express.ShippingTemplatesFree; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zbkj.common.request.ShippingTemplatesFreeRequest; + +import java.util.List; + +/** + * Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface ShippingTemplatesFreeDao extends BaseMapper { + + List getListGroup(Integer tempId); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/ShippingTemplatesRegionDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/ShippingTemplatesRegionDao.java new file mode 100644 index 0000000..8fd8011 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/ShippingTemplatesRegionDao.java @@ -0,0 +1,24 @@ +package com.zbkj.service.dao; + +import com.zbkj.common.model.express.ShippingTemplatesRegion; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zbkj.common.request.ShippingTemplatesRegionRequest; + +import java.util.List; + +/** + * Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface ShippingTemplatesRegionDao extends BaseMapper { + + List getListGroup(Integer tempId); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SmsRecordDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SmsRecordDao.java new file mode 100644 index 0000000..4b608d6 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SmsRecordDao.java @@ -0,0 +1,20 @@ +package com.zbkj.service.dao; + +import com.zbkj.common.model.sms.SmsRecord; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * 短信发送记录表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface SmsRecordDao extends BaseMapper { + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SmsTemplateDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SmsTemplateDao.java new file mode 100644 index 0000000..bb19694 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SmsTemplateDao.java @@ -0,0 +1,20 @@ +package com.zbkj.service.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zbkj.common.model.sms.SmsTemplate; + +/** + * 短信模板表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface SmsTemplateDao extends BaseMapper { + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreBargainDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreBargainDao.java new file mode 100644 index 0000000..c6f7498 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreBargainDao.java @@ -0,0 +1,20 @@ +package com.zbkj.service.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zbkj.common.model.bargain.StoreBargain; + +/** + * 砍价表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface StoreBargainDao extends BaseMapper { + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreBargainUserDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreBargainUserDao.java new file mode 100644 index 0000000..1bd18a9 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreBargainUserDao.java @@ -0,0 +1,20 @@ +package com.zbkj.service.dao; + +import com.zbkj.common.model.bargain.StoreBargainUser; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * 用户参与砍价表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface StoreBargainUserDao extends BaseMapper { + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreBargainUserHelpDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreBargainUserHelpDao.java new file mode 100644 index 0000000..6c5071c --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreBargainUserHelpDao.java @@ -0,0 +1,20 @@ +package com.zbkj.service.dao; + +import com.zbkj.common.model.bargain.StoreBargainUserHelp; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * 砍价用户帮助表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface StoreBargainUserHelpDao extends BaseMapper { + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreCartDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreCartDao.java new file mode 100644 index 0000000..86e3798 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreCartDao.java @@ -0,0 +1,20 @@ +package com.zbkj.service.dao; + +import com.zbkj.common.model.cat.StoreCart; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * 购物车表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface StoreCartDao extends BaseMapper { + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreCombinationDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreCombinationDao.java new file mode 100644 index 0000000..bb08a2f --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreCombinationDao.java @@ -0,0 +1,20 @@ +package com.zbkj.service.dao; + +import com.zbkj.common.model.combination.StoreCombination; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * 拼团商品表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface StoreCombinationDao extends BaseMapper { + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreCouponDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreCouponDao.java new file mode 100644 index 0000000..0dd71e7 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreCouponDao.java @@ -0,0 +1,20 @@ +package com.zbkj.service.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zbkj.common.model.coupon.StoreCoupon; + +/** + * 优惠券表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface StoreCouponDao extends BaseMapper { + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreCouponUserDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreCouponUserDao.java new file mode 100644 index 0000000..bb110bc --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreCouponUserDao.java @@ -0,0 +1,20 @@ +package com.zbkj.service.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zbkj.common.model.coupon.StoreCouponUser; + +/** + * 优惠券记录表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface StoreCouponUserDao extends BaseMapper { + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreOrderDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreOrderDao.java new file mode 100644 index 0000000..9a98217 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreOrderDao.java @@ -0,0 +1,71 @@ +package com.zbkj.service.dao; + +import com.zbkj.common.model.order.StoreOrder; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zbkj.common.request.StoreDateRangeSqlPram; +import com.zbkj.common.request.StoreOrderStaticsticsRequest; +import com.zbkj.common.response.OrderBrokerageData; +import com.zbkj.common.response.StoreOrderStatisticsChartItemResponse; +import com.zbkj.common.response.StoreStaffDetail; +import org.apache.ibatis.annotations.Param; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 订单表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface StoreOrderDao extends BaseMapper { + + /** + * 订单总金额 + */ + BigDecimal getTotalPrice(String where); + + /** + * 退款总金额 + */ + BigDecimal getRefundPrice(String where); + + /** + * 获取退款总单数 + */ + Integer getRefundTotal(String where); + + /** + * 核销详情 月数据 + * @param request 分页和日期 + * @return 月数据 + */ + List getOrderVerificationDetail(StoreOrderStaticsticsRequest request); + + /** + * 订单统计详情 price + * @param pram 时间区间参数 + * @return 月数据 + */ + List getOrderStatisticsPriceDetail(StoreDateRangeSqlPram pram); + + /** + * 订单统计详情 订单量 + * @param pram 时间区间参数 + * @return 月数据 + */ + List getOrderStatisticsOrderCountDetail(StoreDateRangeSqlPram pram); + + /** + * 获取佣金相关数据 + * @param uid 用户uid + * @param spreadId 推广人uid + */ + OrderBrokerageData getBrokerageData(@Param("uid") Integer uid, @Param("spreadId") Integer spreadId); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreOrderInfoDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreOrderInfoDao.java new file mode 100644 index 0000000..c39dc78 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreOrderInfoDao.java @@ -0,0 +1,36 @@ +package com.zbkj.service.dao; + +import com.zbkj.common.model.order.StoreOrderInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.math.BigDecimal; + +/** + * 订单购物详情表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface StoreOrderInfoDao extends BaseMapper { + + /** + * 根据时间、商品id获取销售件数 + * @param date 时间,格式'yyyy-MM-dd' + * @param proId 商品id + */ + Integer getSalesNumByDateAndProductId(@Param("date") String date, @Param("proId") Integer proId); + + /** + * 根据时间、商品id获取销售额 + * @param date 时间,格式'yyyy-MM-dd' + * @param proId 商品id + */ + BigDecimal getSalesByDateAndProductId(@Param("date") String date, @Param("proId") Integer proId); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreOrderStatusDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreOrderStatusDao.java new file mode 100644 index 0000000..dba3ec6 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreOrderStatusDao.java @@ -0,0 +1,30 @@ +package com.zbkj.service.dao; + +import com.zbkj.common.model.order.StoreOrderStatus; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.math.BigDecimal; + +/** + * 订单操作记录表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface StoreOrderStatusDao extends BaseMapper { + + /** + * 通过日期获取订单退款金额 + * @param date 日期,yyyy-MM-dd格式 + * @return BigDecimal + */ + BigDecimal getRefundOrderAmountByDate(@Param("date") String date); + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StorePinkDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StorePinkDao.java new file mode 100644 index 0000000..4d2a9a9 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StorePinkDao.java @@ -0,0 +1,20 @@ +package com.zbkj.service.dao; + +import com.zbkj.common.model.combination.StorePink; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * 拼团表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface StorePinkDao extends BaseMapper { + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductAttrDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductAttrDao.java new file mode 100644 index 0000000..e7dd902 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductAttrDao.java @@ -0,0 +1,20 @@ +package com.zbkj.service.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zbkj.common.model.product.StoreProductAttr; + +/** + * 商品属性表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface StoreProductAttrDao extends BaseMapper { + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductAttrResultDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductAttrResultDao.java new file mode 100644 index 0000000..d9805e3 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductAttrResultDao.java @@ -0,0 +1,20 @@ +package com.zbkj.service.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zbkj.common.model.product.StoreProductAttrResult; + +/** + * 商品属性详情表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface StoreProductAttrResultDao extends BaseMapper { + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductAttrValueDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductAttrValueDao.java new file mode 100644 index 0000000..a4f7a03 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductAttrValueDao.java @@ -0,0 +1,20 @@ +package com.zbkj.service.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zbkj.common.model.product.StoreProductAttrValue; + +/** + * 商品属性值表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface StoreProductAttrValueDao extends BaseMapper { + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductCateDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductCateDao.java new file mode 100644 index 0000000..6085db3 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductCateDao.java @@ -0,0 +1,20 @@ +package com.zbkj.service.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zbkj.common.model.product.StoreProductCate; + +/** + * 商品分类辅助表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface StoreProductCateDao extends BaseMapper { + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductCouponDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductCouponDao.java new file mode 100644 index 0000000..84aed9c --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductCouponDao.java @@ -0,0 +1,21 @@ +package com.zbkj.service.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zbkj.common.model.product.StoreProductCoupon; + +/** + * Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface StoreProductCouponDao extends BaseMapper { + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductDao.java new file mode 100644 index 0000000..fee8a38 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductDao.java @@ -0,0 +1,20 @@ +package com.zbkj.service.dao; + +import com.zbkj.common.model.product.StoreProduct; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * 商品表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface StoreProductDao extends BaseMapper { + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductDescriptionDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductDescriptionDao.java new file mode 100644 index 0000000..152fbbe --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductDescriptionDao.java @@ -0,0 +1,20 @@ +package com.zbkj.service.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zbkj.common.model.product.StoreProductDescription; + +/** + * Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface StoreProductDescriptionDao extends BaseMapper { + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductLogDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductLogDao.java new file mode 100644 index 0000000..f81d822 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductLogDao.java @@ -0,0 +1,20 @@ +package com.zbkj.service.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zbkj.common.model.log.StoreProductLog; + +/** + * 商品统计 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface StoreProductLogDao extends BaseMapper { + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductRelationDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductRelationDao.java new file mode 100644 index 0000000..7c98a36 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductRelationDao.java @@ -0,0 +1,28 @@ +package com.zbkj.service.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zbkj.common.model.product.StoreProductRelation; +import com.zbkj.common.response.UserRelationResponse; + +import java.util.List; + +/** + * 商品点赞和收藏表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface StoreProductRelationDao extends BaseMapper { + + /** + * 用户收藏列表 + * @param uid 用户uid + */ + List getUserList(Integer uid); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductReplyDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductReplyDao.java new file mode 100644 index 0000000..65d31be --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductReplyDao.java @@ -0,0 +1,20 @@ +package com.zbkj.service.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zbkj.common.model.product.StoreProductReply; + +/** + * 评论表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface StoreProductReplyDao extends BaseMapper { + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductRuleDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductRuleDao.java new file mode 100644 index 0000000..54fb571 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductRuleDao.java @@ -0,0 +1,20 @@ +package com.zbkj.service.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zbkj.common.model.product.StoreProductRule; + +/** + * 商品规则值(规格)表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface StoreProductRuleDao extends BaseMapper { + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreSeckillDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreSeckillDao.java new file mode 100644 index 0000000..b3fb84a --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreSeckillDao.java @@ -0,0 +1,20 @@ +package com.zbkj.service.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zbkj.common.model.seckill.StoreSeckill; + +/** + * 商品秒杀产品表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface StoreSeckillDao extends BaseMapper { + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreSeckillMangerDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreSeckillMangerDao.java new file mode 100644 index 0000000..35f3cea --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreSeckillMangerDao.java @@ -0,0 +1,20 @@ +package com.zbkj.service.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zbkj.common.model.seckill.StoreSeckillManger; + +/** + * Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface StoreSeckillMangerDao extends BaseMapper { + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemAdminDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemAdminDao.java new file mode 100644 index 0000000..db0d770 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemAdminDao.java @@ -0,0 +1,19 @@ +package com.zbkj.service.dao; + +import com.zbkj.common.model.system.SystemAdmin; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * 后台管理员表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface SystemAdminDao extends BaseMapper { +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemAttachmentDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemAttachmentDao.java new file mode 100644 index 0000000..2cbf99b --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemAttachmentDao.java @@ -0,0 +1,20 @@ +package com.zbkj.service.dao; + +import com.zbkj.common.model.system.SystemAttachment; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * 附件管理表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface SystemAttachmentDao extends BaseMapper { + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemCityDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemCityDao.java new file mode 100644 index 0000000..7f24c5e --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemCityDao.java @@ -0,0 +1,20 @@ +package com.zbkj.service.dao; + +import com.zbkj.common.model.system.SystemCity; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * 城市表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface SystemCityDao extends BaseMapper { + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemConfigDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemConfigDao.java new file mode 100644 index 0000000..abe92dc --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemConfigDao.java @@ -0,0 +1,20 @@ +package com.zbkj.service.dao; + +import com.zbkj.common.model.system.SystemConfig; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * 配置表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface SystemConfigDao extends BaseMapper { + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemFormTempDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemFormTempDao.java new file mode 100644 index 0000000..8f7f98c --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemFormTempDao.java @@ -0,0 +1,20 @@ +package com.zbkj.service.dao; + +import com.zbkj.common.model.system.SystemFormTemp; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * 表单模板 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface SystemFormTempDao extends BaseMapper { + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemGroupDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemGroupDao.java new file mode 100644 index 0000000..6715bcc --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemGroupDao.java @@ -0,0 +1,20 @@ +package com.zbkj.service.dao; + +import com.zbkj.common.model.system.SystemGroup; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * 组合数据表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface SystemGroupDao extends BaseMapper { + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemGroupDataDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemGroupDataDao.java new file mode 100644 index 0000000..04db403 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemGroupDataDao.java @@ -0,0 +1,20 @@ +package com.zbkj.service.dao; + +import com.zbkj.common.model.system.SystemGroupData; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * 组合数据详情表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface SystemGroupDataDao extends BaseMapper { + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemMenuDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemMenuDao.java new file mode 100644 index 0000000..25beaf2 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemMenuDao.java @@ -0,0 +1,31 @@ +package com.zbkj.service.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zbkj.common.model.system.SystemMenu; + +import java.util.List; + +/** + *

+ * 系统菜单表 Mapper 接口 + *

+ * + * @author HZW + * @since 2021-11-17 + */ +public interface SystemMenuDao extends BaseMapper { + + /** + * 通过角色数据获取权限 + * @param userId 用户id + * @return List + */ + List findPermissionByUserId(Integer userId); + + /** + * 获取用户路由 + * @param userId 用户id + * @return List + */ + List getMenusByUserId(Integer userId); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemNotificationDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemNotificationDao.java new file mode 100644 index 0000000..e773a65 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemNotificationDao.java @@ -0,0 +1,20 @@ +package com.zbkj.service.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zbkj.common.model.system.SystemNotification; + +/** + * 通知设置表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface SystemNotificationDao extends BaseMapper { + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemRoleDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemRoleDao.java new file mode 100644 index 0000000..01fc807 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemRoleDao.java @@ -0,0 +1,20 @@ +package com.zbkj.service.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zbkj.common.model.system.SystemRole; + +/** + * 身份管理表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface SystemRoleDao extends BaseMapper { + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemRoleMenuDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemRoleMenuDao.java new file mode 100644 index 0000000..580a2af --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemRoleMenuDao.java @@ -0,0 +1,20 @@ +package com.zbkj.service.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zbkj.common.model.system.SystemRoleMenu; + +/** + * 角色菜单关联表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface SystemRoleMenuDao extends BaseMapper { + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemStoreDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemStoreDao.java new file mode 100644 index 0000000..a3a78e3 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemStoreDao.java @@ -0,0 +1,26 @@ +package com.zbkj.service.dao; + +import com.zbkj.common.request.StoreNearRequest; +import com.zbkj.common.vo.SystemStoreNearVo; +import com.zbkj.common.model.system.SystemStore; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import java.util.List; + +/** + * 门店自提 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface SystemStoreDao extends BaseMapper { + + List getNearList(StoreNearRequest request); +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemStoreStaffDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemStoreStaffDao.java new file mode 100644 index 0000000..cb78eab --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemStoreStaffDao.java @@ -0,0 +1,20 @@ +package com.zbkj.service.dao; + +import com.zbkj.common.model.system.SystemStoreStaff; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * 门店店员表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface SystemStoreStaffDao extends BaseMapper { + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemUserLevelDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemUserLevelDao.java new file mode 100644 index 0000000..b6aebf7 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemUserLevelDao.java @@ -0,0 +1,20 @@ +package com.zbkj.service.dao; + +import com.zbkj.common.model.system.SystemUserLevel; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * 设置用户等级表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface SystemUserLevelDao extends BaseMapper { + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/TemplateMessageDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/TemplateMessageDao.java new file mode 100644 index 0000000..13ed735 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/TemplateMessageDao.java @@ -0,0 +1,21 @@ +package com.zbkj.service.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zbkj.common.model.wechat.TemplateMessage; + +/** + * 微信模板 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface TemplateMessageDao extends BaseMapper { + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserAddressDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserAddressDao.java new file mode 100644 index 0000000..2375ec9 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserAddressDao.java @@ -0,0 +1,20 @@ +package com.zbkj.service.dao; + +import com.zbkj.common.model.user.UserAddress; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * 用户地址表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface UserAddressDao extends BaseMapper { + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserBillDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserBillDao.java new file mode 100644 index 0000000..42817e9 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserBillDao.java @@ -0,0 +1,25 @@ +package com.zbkj.service.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zbkj.common.model.user.UserBill; +import com.zbkj.common.response.UserBillResponse; + +import java.util.List; +import java.util.Map; + +/** + * 用户账单表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface UserBillDao extends BaseMapper { + + List fundMonitoring(Map map); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserBrokerageRecordDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserBrokerageRecordDao.java new file mode 100644 index 0000000..27d88e1 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserBrokerageRecordDao.java @@ -0,0 +1,20 @@ +package com.zbkj.service.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zbkj.common.model.user.UserBrokerageRecord; + +/** + * 用户佣金记录表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface UserBrokerageRecordDao extends BaseMapper { + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserDao.java new file mode 100644 index 0000000..2490ea5 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserDao.java @@ -0,0 +1,27 @@ +package com.zbkj.service.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zbkj.common.model.user.User; +import com.zbkj.common.response.UserSpreadPeopleItemResponse; + +import java.util.List; +import java.util.Map; + +/** + * 用户表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface UserDao extends BaseMapper { + + List getSpreadPeopleList(Map map); + + List findAdminList(Map map); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserExperienceRecordDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserExperienceRecordDao.java new file mode 100644 index 0000000..35fe071 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserExperienceRecordDao.java @@ -0,0 +1,20 @@ +package com.zbkj.service.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zbkj.common.model.user.UserExperienceRecord; + +/** + * 用户经验记录表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface UserExperienceRecordDao extends BaseMapper { + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserExtractDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserExtractDao.java new file mode 100644 index 0000000..989a31f --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserExtractDao.java @@ -0,0 +1,19 @@ +package com.zbkj.service.dao; + +import com.zbkj.common.model.finance.UserExtract; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * 用户提现表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface UserExtractDao extends BaseMapper { +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserFundsMonitorDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserFundsMonitorDao.java new file mode 100644 index 0000000..68de2b5 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserFundsMonitorDao.java @@ -0,0 +1,20 @@ +package com.zbkj.service.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zbkj.common.vo.UserFundsMonitor; + +/** + * 用户充值表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface UserFundsMonitorDao extends BaseMapper { + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserGroupDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserGroupDao.java new file mode 100644 index 0000000..0e9d092 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserGroupDao.java @@ -0,0 +1,20 @@ +package com.zbkj.service.dao; + +import com.zbkj.common.model.user.UserGroup; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * 用户分组表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface UserGroupDao extends BaseMapper { + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserIntegralRecordDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserIntegralRecordDao.java new file mode 100644 index 0000000..3c13036 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserIntegralRecordDao.java @@ -0,0 +1,20 @@ +package com.zbkj.service.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zbkj.common.model.user.UserIntegralRecord; + +/** + * 用户积分记录表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface UserIntegralRecordDao extends BaseMapper { + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserLevelDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserLevelDao.java new file mode 100644 index 0000000..7aef452 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserLevelDao.java @@ -0,0 +1,20 @@ +package com.zbkj.service.dao; + +import com.zbkj.common.model.user.UserLevel; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * 用户等级记录表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface UserLevelDao extends BaseMapper { + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserRechargeDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserRechargeDao.java new file mode 100644 index 0000000..93db88b --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserRechargeDao.java @@ -0,0 +1,34 @@ +package com.zbkj.service.dao; + +import com.zbkj.common.model.finance.UserRecharge; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import java.math.BigDecimal; + +/** + * 用户充值表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface UserRechargeDao extends BaseMapper { + + /** + * 根据类型获取该类型充值总金额 + * @param type 充值类型 + * @return 该类型充值总金额 + */ + BigDecimal getSumByType(String type); + + /** + * 获取退款总金额 + * @return 退款总金额 + */ + BigDecimal getSumByRefund(); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserSignDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserSignDao.java new file mode 100644 index 0000000..d66def3 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserSignDao.java @@ -0,0 +1,20 @@ +package com.zbkj.service.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zbkj.common.model.user.UserSign; + +/** + * 签到记录表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface UserSignDao extends BaseMapper { + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserTagDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserTagDao.java new file mode 100644 index 0000000..384199e --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserTagDao.java @@ -0,0 +1,20 @@ +package com.zbkj.service.dao; + +import com.zbkj.common.model.user.UserTag; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * 用户分组表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface UserTagDao extends BaseMapper { + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserTokenDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserTokenDao.java new file mode 100644 index 0000000..3eb502c --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserTokenDao.java @@ -0,0 +1,20 @@ +package com.zbkj.service.dao; + +import com.zbkj.common.model.user.UserToken; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface UserTokenDao extends BaseMapper { + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserVisitRecordDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserVisitRecordDao.java new file mode 100644 index 0000000..c1dbea1 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserVisitRecordDao.java @@ -0,0 +1,35 @@ +package com.zbkj.service.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zbkj.common.model.record.UserVisitRecord; +import org.apache.ibatis.annotations.Param; + +/** + * 用户访问记录表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface UserVisitRecordDao extends BaseMapper { + + /** + * 获取活跃用户数 + * @param date 日期 + * @return Integer + */ + Integer getActiveUserNumByDate(@Param("date") String date); + + /** + * 通过时间段获取活跃用户数 + * @param startDate 日期 + * @param endDate 日期 + * @return Integer + */ + Integer getActiveUserNumByPeriod(@Param("startDate") String startDate, @Param("endDate") String endDate); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/WechatCallbackDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/WechatCallbackDao.java new file mode 100644 index 0000000..2f25c23 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/WechatCallbackDao.java @@ -0,0 +1,16 @@ +package com.zbkj.service.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zbkj.common.model.wechat.WechatCallback; + +/** + *

+ * 微信回调表 Mapper 接口 + *

+ * + * @author HZW + * @since 2021-05-19 + */ +public interface WechatCallbackDao extends BaseMapper { + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/WechatExceptionsDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/WechatExceptionsDao.java new file mode 100644 index 0000000..1d3a5ee --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/WechatExceptionsDao.java @@ -0,0 +1,20 @@ +package com.zbkj.service.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zbkj.common.model.wechat.WechatExceptions; + +/** + * 微信异常表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface WechatExceptionsDao extends BaseMapper { + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/WechatPayInfoDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/WechatPayInfoDao.java new file mode 100644 index 0000000..7912d5c --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/WechatPayInfoDao.java @@ -0,0 +1,20 @@ +package com.zbkj.service.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zbkj.common.model.wechat.WechatPayInfo; + +/** + * 微信订单表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface WechatPayInfoDao extends BaseMapper { + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/WechatQrcodeDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/WechatQrcodeDao.java new file mode 100644 index 0000000..7f76e4b --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/WechatQrcodeDao.java @@ -0,0 +1,20 @@ +package com.zbkj.service.dao; + +import com.zbkj.common.model.wechat.WechatQrcode; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * 微信二维码管理表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface WechatQrcodeDao extends BaseMapper { + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/WechatReplyDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/WechatReplyDao.java new file mode 100644 index 0000000..532a125 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/WechatReplyDao.java @@ -0,0 +1,20 @@ +package com.zbkj.service.dao; + +import com.zbkj.common.model.wechat.WechatReply; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * 微信关键字回复表 Mapper 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface WechatReplyDao extends BaseMapper { + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/delete/OrderUtils.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/delete/OrderUtils.java new file mode 100644 index 0000000..b605ca1 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/delete/OrderUtils.java @@ -0,0 +1,195 @@ +package com.zbkj.service.delete; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.constants.PayConstants; +import com.zbkj.common.constants.SysConfigConstants; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.model.order.StoreOrder; +import com.zbkj.common.vo.StoreOrderInfoOldVo; +import com.zbkj.service.service.StoreOrderInfoService; +import com.zbkj.service.service.StoreOrderService; +import com.zbkj.service.service.SystemConfigService; +import com.zbkj.service.service.UserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 订单工具类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class OrderUtils { + + @Autowired + private UserService userService; + + @Autowired + private SystemConfigService systemConfigService; + + @Autowired + private StoreOrderService storeOrderService; + + @Autowired + private StoreOrderInfoService storeOrderInfoService; + + /** + * 检测支付渠道 + * @param payChannel 支付渠道 + */ + public static boolean checkPayChannel(String payChannel) { + if (!payChannel.equals(PayConstants.PAY_CHANNEL_WE_CHAT_H5) && + !payChannel.equals(PayConstants.PAY_CHANNEL_WE_CHAT_PROGRAM) && + !payChannel.equals(PayConstants.PAY_CHANNEL_WE_CHAT_PUBLIC) && + !payChannel.equals(PayConstants.PAY_CHANNEL_WE_CHAT_APP_IOS) && + !payChannel.equals(PayConstants.PAY_CHANNEL_WE_CHAT_APP_ANDROID)) { + return false; + } + return true; + } + + /** + * 检查支付类型 + * @param payType 支付类型标识 + * @return 是否支持 + */ + public Boolean checkPayType(String payType){ + boolean result = false; + payType = payType.toLowerCase(); + switch (payType){ + case PayConstants.PAY_TYPE_WE_CHAT: + result = "1".equals(systemConfigService.getValueByKey(SysConfigConstants.CONFIG_PAY_WEIXIN_OPEN)); + break; + case PayConstants.PAY_TYPE_YUE: + result = ("1".equals(systemConfigService.getValueByKey(SysConfigConstants.CONFIG_YUE_PAY_STATUS))); + break; + case PayConstants.PAY_TYPE_ALI_PAY: + result = ("1".equals(systemConfigService.getValueByKey(SysConfigConstants.CONFIG_ALI_PAY_STATUS))); + break; + } + return result; + } + + /** + * 根据订单号查询订单信息 + * @param id 订单id + * @return 计算后的价格集合 + */ + public StoreOrder getInfoById(Integer id) { + StoreOrder storeOrder = storeOrderService.getById(id); + Integer userId = userService.getUserIdException(); + + if(null == storeOrder || !userId.equals(storeOrder.getUid())){ + //订单号错误 + throw new CrmebException("没有找到相关订单信息!"); + } + + return storeOrder; + } + + /** + * 翻译支付方式给前端 + * @param payType + * @return + */ + public String getOrderPayTypeStr(String payType){ + String payTypeStr = null; + switch (payType){ + case Constants.PAY_TYPE_WE_CHAT: + payTypeStr = "微信支付"; + break; + case Constants.PAY_TYPE_YUE: + payTypeStr = "余额支付"; + break; + case Constants.PAY_TYPE_OFFLINE: + payTypeStr = "线下支付"; + break; + case Constants.PAY_TYPE_ALI_PAY: + payTypeStr = "支付宝支付"; + break; + default: + payTypeStr = "其他支付方式"; + break; + } + return payTypeStr; + } + + /** + * h5 订单查询 where status 封装 + * @param queryWrapper 查询条件 + * @param status 状态 + */ + public void statusApiByWhere(LambdaQueryWrapper queryWrapper, Integer status){ + switch (status){ + case Constants.ORDER_STATUS_H5_UNPAID: // 未支付 + queryWrapper.eq(StoreOrder::getPaid, false); + queryWrapper.eq(StoreOrder::getStatus, 0); + queryWrapper.eq(StoreOrder::getRefundStatus, 0); + queryWrapper.eq(StoreOrder::getType, 0); + break; + case Constants.ORDER_STATUS_H5_NOT_SHIPPED: // 待发货 + queryWrapper.eq(StoreOrder::getPaid, true); + queryWrapper.eq(StoreOrder::getStatus, 0); + queryWrapper.eq(StoreOrder::getRefundStatus, 0); +// queryWrapper.eq(StoreOrder::getShippingType, 1); + break; + case Constants.ORDER_STATUS_H5_SPIKE: // 待收货 + queryWrapper.eq(StoreOrder::getPaid, true); + queryWrapper.eq(StoreOrder::getStatus, 1); + queryWrapper.eq(StoreOrder::getRefundStatus, 0); + break; + case Constants.ORDER_STATUS_H5_JUDGE: // 已支付 已收货 待评价 + queryWrapper.eq(StoreOrder::getPaid, true); + queryWrapper.eq(StoreOrder::getStatus, 2); + queryWrapper.eq(StoreOrder::getRefundStatus, 0); + break; + case Constants.ORDER_STATUS_H5_COMPLETE: // 已完成 + queryWrapper.eq(StoreOrder::getPaid, true); + queryWrapper.eq(StoreOrder::getStatus, 3); + queryWrapper.eq(StoreOrder::getRefundStatus, 0); + break; + case Constants.ORDER_STATUS_H5_REFUNDING: // 退款中 + queryWrapper.eq(StoreOrder::getPaid, true); + queryWrapper.in(StoreOrder::getRefundStatus, 1, 3); + break; + case Constants.ORDER_STATUS_H5_REFUNDED: // 已退款 + queryWrapper.eq(StoreOrder::getPaid, true); + queryWrapper.eq(StoreOrder::getRefundStatus, 2); + break; + case Constants.ORDER_STATUS_H5_REFUND: // 包含已退款和退款中 + queryWrapper.eq(StoreOrder::getPaid, true); + queryWrapper.in(StoreOrder::getRefundStatus, 1,2,3); + break; + } + queryWrapper.eq(StoreOrder::getIsDel, false); + queryWrapper.eq(StoreOrder::getIsSystemDel, false); + } + + /** + * 根据订单id获取订单中商品和名称和购买数量字符串 + * @param orderId 订单id + * @return 商品名称*购买数量 + */ + public String getStoreNameAndCarNumString(int orderId){ + List currentOrderInfo = storeOrderInfoService.getOrderListByOrderId(orderId); + if(currentOrderInfo.size() > 0) { + StringBuilder sbOrderProduct = new StringBuilder(); + for (StoreOrderInfoOldVo storeOrderInfoVo : currentOrderInfo) { + sbOrderProduct.append(storeOrderInfoVo.getInfo().getProductName() + "*" + + storeOrderInfoVo.getInfo().getPayNum()); + } + return sbOrderProduct.toString(); + } + return null; + } +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/delete/ProductUtils.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/delete/ProductUtils.java new file mode 100644 index 0000000..c1c7dbf --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/delete/ProductUtils.java @@ -0,0 +1,555 @@ +package com.zbkj.service.delete; + +import cn.hutool.core.collection.CollUtil; +import com.alibaba.fastjson.JSON; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.response.ProductActivityItemResponse; +import com.zbkj.common.utils.CrmebUtil; +import com.zbkj.common.utils.DateUtil; +import com.zbkj.common.utils.UrlUtil; +import com.zbkj.common.model.bargain.StoreBargain; +import com.zbkj.common.model.combination.StoreCombination; +import com.zbkj.common.model.seckill.StoreSeckill; +import com.zbkj.common.model.seckill.StoreSeckillManger; +import com.zbkj.common.model.product.StoreProduct; +import com.zbkj.common.model.product.StoreProductAttr; +import com.zbkj.common.request.StoreProductRequest; +import com.zbkj.service.service.*; +import org.apache.commons.lang3.StringUtils; +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.io.*; +import java.math.BigDecimal; +import java.net.URL; +import java.net.URLConnection; +import java.nio.charset.Charset; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; + +/** + * 商品工具类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class ProductUtils { + private String baseUrl; + + String rightUrl; + + @Autowired + private StoreProductCouponService storeProductCouponService; + + @Autowired + private SystemConfigService systemConfigService; + + @Autowired + private StoreSeckillService storeSeckillService; + + @Autowired + private StoreSeckillMangerService storeSeckillMangerService; + + @Autowired + private StoreBargainService storeBargainService; + + @Autowired + private StoreCombinationService storeCombinationService; + + /** + * 解析淘宝产品数据 + * @param url + * @param tag + * @throws IOException + * @throws JSONException + */ + public StoreProductRequest getTaobaoProductInfo(String url, int tag) throws JSONException, IOException { + setConfig(url, tag); + JSONObject tbJsonData = getRequestFromUrl(baseUrl + rightUrl); +// JSONObject tbJsonData = new JSONObject(JSONExample.tbJson); // just Test + JSONObject data = tbJsonData.getJSONObject("data"); + if (null == data) throw new CrmebException("复制商品失败--返回数据格式错误--未找到data"); + JSONObject item = data.getJSONObject("item"); + if (null == item) throw new CrmebException("复制商品失败--返回数据格式错误--未找到item"); + + StoreProductRequest productRequest = new StoreProductRequest(); + StoreProduct product = new StoreProduct(); + product.setStoreName(item.getString("title")); + product.setStoreInfo(item.getString("title")); + product.setSliderImage(item.getString("images")); + product.setImage(item.getString("images").split(",")[0] + .replace("[", "").replace("\"", "")); + product.setKeyword(item.getString("title")); + BeanUtils.copyProperties(product, productRequest); + productRequest.setContent(item.getString("desc")); + + productRequest.setSpecType(true); + JSONArray props = item.getJSONArray("props"); +// if (null == props) throw new CrmebException("复制商品失败--返回数据格式错误--未找到props"); + if (null == props || props.length() < 1) { + productRequest.setSpecType(false); + return productRequest; + } + List spaAttes = new ArrayList<>(); + for (int i = 0; i < props.length(); i++) { + JSONObject pItem = props.getJSONObject(i); + StoreProductAttr spattr = new StoreProductAttr(); + spattr.setAttrName(pItem.getString("name")); + JSONArray values = pItem.getJSONArray("values"); + List attrValues = new ArrayList<>(); + for (int j = 0; j < values.length(); j++) { + JSONObject value = values.getJSONObject(j); + attrValues.add(value.getString("name")); + } + spattr.setAttrValues(JSON.toJSONString(attrValues)); + spaAttes.add(spattr); + } + productRequest.setAttr(spaAttes); + return productRequest; + } + + /** + * 解析京东产品数据 + * @param url + * @param tag + * @return + * @throws JSONException + */ + public StoreProductRequest getJDProductInfo(String url, int tag) throws JSONException, IOException { + setConfig(url,tag); + JSONObject tbJsonData = getRequestFromUrl(baseUrl + rightUrl); +// JSONObject tbJsonData = new JSONObject(JSONExample.jdJson); // just Test + JSONObject data = tbJsonData.getJSONObject("data"); + if (null == data) throw new CrmebException("复制商品失败--返回数据格式错误--未找到data"); + JSONObject item = data.getJSONObject("item"); + if (null == item) throw new CrmebException("复制商品失败--返回数据格式错误--未找到item"); + + StoreProductRequest productRequest = new StoreProductRequest(); + StoreProduct product = new StoreProduct(); + product.setStoreName(item.getString("name")); + product.setStoreInfo(item.getString("name")); + product.setSliderImage(item.getString("images")); + product.setImage(item.getString("images").split(",")[0] + .replace("[", "").replace("\"", "")); + product.setPrice(BigDecimal.valueOf(item.getDouble("price"))); + BeanUtils.copyProperties(product, productRequest); + productRequest.setContent(item.getString("desc")); + + JSONObject props = item.getJSONObject("skuProps"); + if (null == props) throw new CrmebException("复制商品失败--返回数据格式错误--未找到props"); + List spaAttes = new ArrayList<>(); + JSONObject saleJson = item.getJSONObject("saleProp"); + int attrValueIsNullCount = 0; + Iterator saleProps = saleJson.keys(); + while (saleProps.hasNext()) { + StoreProductAttr spattr = new StoreProductAttr(); + String stepkey = saleProps.next(); + String stepValue = props.getString(stepkey); + String stepValueValidLength = stepValue.replace("[","").replace("]","").replace("\"",""); + if(stepValueValidLength.length() > 0){ + com.alibaba.fastjson.JSONArray stepValues = JSON.parseArray(stepValue); + int c = stepValues.get(0).toString().length(); + attrValueIsNullCount += c == 0 ? 1 : 0; + spattr.setAttrName(saleJson.getString(stepkey)); + spattr.setAttrValues(props.getString(stepkey)); + spaAttes.add(spattr); + productRequest.setAttr(spaAttes); + }else{ + attrValueIsNullCount += 1; + } + } + // 判断是否单属性 + productRequest.setSpecType(spaAttes.size() != attrValueIsNullCount); + return productRequest; + } + + /** + * 解析天猫产品数据 + * @param url + * @param tag + * @return + * @throws JSONException + */ + public StoreProductRequest getTmallProductInfo(String url, int tag) throws JSONException, IOException { + setConfig(url, tag); + JSONObject tbJsonData = getRequestFromUrl(baseUrl + rightUrl); +// JSONObject tbJsonData = new JSONObject(JSONExample.tmallJson); // just Test + JSONObject data = tbJsonData.getJSONObject("data"); + if (null == data) throw new CrmebException("复制商品失败--返回数据格式错误--未找到data"); + JSONObject item = data.getJSONObject("item"); + if (null == item) throw new CrmebException("复制商品失败--返回数据格式错误--未找到item"); + + StoreProductRequest productRequest = new StoreProductRequest(); + StoreProduct product = new StoreProduct(); + product.setStoreName(item.getString("title")); + product.setStoreInfo(item.getString("subTitle")); + product.setSliderImage(item.getString("images")); + product.setImage(item.getString("images").split(",")[0] + .replace("[", "").replace("\"", "")); + product.setKeyword(item.getString("title")); + BeanUtils.copyProperties(product, productRequest); + productRequest.setContent(item.getString("descUrl")); + + productRequest.setSpecType(true); + JSONArray props = item.getJSONArray("props"); +// if (null == props) throw new CrmebException("复制商品失败--返回数据格式错误--未找到props"); + if (null == props || props.length() < 1) { + // 无规格商品 + productRequest.setSpecType(false); + return productRequest; + } + List spaAttes = new ArrayList<>(); + for (int i = 0; i < props.length(); i++) { + JSONObject pItem = props.getJSONObject(i); + StoreProductAttr spattr = new StoreProductAttr(); + spattr.setAttrName(pItem.getString("name")); + JSONArray values = pItem.getJSONArray("values"); + List attrValues = new ArrayList<>(); + for (int j = 0; j < values.length(); j++) { + JSONObject value = values.getJSONObject(j); + attrValues.add(value.getString("name")); + } + spattr.setAttrValues(JSON.toJSONString(attrValues)); + spaAttes.add(spattr); + } + productRequest.setAttr(spaAttes); + return productRequest; + } + + /** + * 解析拼多多产品数据 + * @param url + * @param tag + * @return + * @throws JSONException + */ + public StoreProductRequest getPddProductInfo(String url, int tag) throws JSONException, IOException { + setConfig(url, tag); + JSONObject tbJsonData = getRequestFromUrl(baseUrl + rightUrl); +// JSONObject tbJsonData = new JSONObject(JSONExample.pddJson); // just Test + JSONObject data = tbJsonData.getJSONObject("data"); + if (null == data) throw new CrmebException("复制商品失败--返回数据格式错误--未找到data"); + JSONObject item = data.getJSONObject("item"); + if (null == item) throw new CrmebException("复制商品失败--返回数据格式错误--未找到item"); + + StoreProductRequest productRequest = new StoreProductRequest(); + StoreProduct product = new StoreProduct(); + product.setStoreName(item.getString("goodsName")); + product.setStoreInfo(item.getString("goodsDesc")); + product.setSliderImage(item.getString("thumbUrl")); + product.setImage(item.getString("banner")); + product.setVideoLink(item.getJSONArray("video").getJSONObject(0).getString("videoUrl")); + product.setPrice(BigDecimal.valueOf(item.getDouble("maxNormalPrice"))); + product.setOtPrice(BigDecimal.valueOf(item.getDouble("marketPrice"))); + BeanUtils.copyProperties(product, productRequest); + + JSONArray props = item.getJSONArray("skus"); + if (null == props) throw new CrmebException("复制商品失败--返回数据格式错误--未找到props"); + if (props.length() > 0) { + List spaAttes = new ArrayList<>(); + HashMap> tempAttr = new HashMap<>(); + for (int i = 0; i < props.length(); i++) { + JSONObject pItem = props.getJSONObject(i); + JSONArray specArray = pItem.getJSONArray("specs"); + for (int j = 0; j < specArray.length(); j++) { + JSONObject specItem = specArray.getJSONObject(j); + String keyTemp = specItem.getString("spec_key"); + String valueTemp = specItem.getString("spec_value"); + if(tempAttr.containsKey(keyTemp)){ + if(!tempAttr.get(keyTemp).contains(valueTemp)){ + tempAttr.get(keyTemp).add(valueTemp); + } + }else{ + List tempList = new ArrayList<>(); + tempList.add(valueTemp); + tempAttr.put(keyTemp, tempList); + } + } + + } + Iterator iterator = tempAttr.keySet().iterator(); + while (iterator.hasNext()){ + String key = (String)iterator.next(); + StoreProductAttr spattr = new StoreProductAttr(); + spattr.setAttrName(key); + spattr.setAttrValues(tempAttr.get(key).toString()); + spaAttes.add(spattr); + } + productRequest.setAttr(spaAttes); + } + return productRequest; + } + + /** + * *** 苏宁返回的数据不一致,暂放 + * 解析苏宁产品数据 + * @param url + * @param tag + * @return + * @throws JSONException + */ + public StoreProductRequest getSuningProductInfo(String url, int tag) throws JSONException, IOException { + setConfig(url,tag); + JSONObject tbJsonData = getRequestFromUrl(baseUrl + rightUrl); + System.out.println("tbJsonData:"+tbJsonData); +// JSONObject tbJsonData = new JSONObject(JSONExample.snJson); // just Test + JSONObject data = tbJsonData.getJSONObject("data"); + if (null == data) throw new CrmebException("复制商品失败--返回数据格式错误--未找到data"); + + StoreProductRequest productRequest = new StoreProductRequest(); + StoreProduct product = new StoreProduct(); + product.setStoreName(data.getString("title")); + product.setStoreInfo(data.getString("title")); + product.setSliderImage(data.getString("images")); + product.setImage(data.getString("images").split(",")[0] + .replace("[", "").replace("\"", "")); + Long priceS = data.getLong("price"); + product.setPrice(BigDecimal.valueOf(priceS)); + BeanUtils.copyProperties(product, productRequest); + productRequest.setContent(data.getString("desc")); + + List spaAttes = new ArrayList<>(); + StoreProductAttr spattr = new StoreProductAttr(); + spattr.setAttrName("默认"); + List attrValues = new ArrayList<>(); + attrValues.add("默认"); + spattr.setAttrValues(attrValues.toString()); + productRequest.setSpecType(false); + productRequest.setAttr(spaAttes); + return productRequest; + } + + /** + * 设置配置数据 + * @param tag + */ + public void setConfig(String url, int tag){ + String rightEndUrl = "&itemid="; + switch (tag){ // 导入平台1=淘宝,2=京东,3=苏宁,4=拼多多, 5=天猫 + case 1: + baseUrl = systemConfigService.getValueByKey("importProductTB"); + rightEndUrl += UrlUtil.getParamsByKey(url, "id"); + break; + case 2: + baseUrl = systemConfigService.getValueByKey("importProductJD"); + rightEndUrl += url.substring(url.lastIndexOf("/")+1).replace(".html",""); + break; + case 3: + baseUrl = systemConfigService.getValueByKey("importProductSN"); + int start = url.indexOf(".com/") + 5; + int end = url.indexOf(".html"); + String sp = url.substring(start,end); + String[] shopProduct = sp.split("/"); + rightEndUrl += shopProduct[1]+"&shopid="+shopProduct[0]; + break; + case 4: + rightEndUrl += UrlUtil.getParamsByKey(url, "goods_id"); + baseUrl = systemConfigService.getValueByKey("importProductPDD"); + break; + case 5: + rightEndUrl += UrlUtil.getParamsByKey(url, "id"); + baseUrl = systemConfigService.getValueByKey("importProductTM"); + break; + } +// String token = systemConfigService.getValueByKey("importProductToken"); + String token = systemConfigService.getValueByKey("copy_product_apikey"); + if(StringUtils.isBlank(token)){ + throw new CrmebException("请配置复制产品平台的Token -- www.99api.com"); + } + if(StringUtils.isBlank(baseUrl)){ + throw new CrmebException("请配置复制产品平台的Url-- www.99api.com"); + } +// rightUrl = "?apikey="+systemConfigService.getValueByKey("importProductToken")+rightEndUrl; + rightUrl = "?apikey="+systemConfigService.getValueByKey("copy_product_apikey")+rightEndUrl; + + } + + /** + * 99api产品复制工具方法 + * @param rd + * @return + * @throws IOException + */ + public static String readAll(Reader rd) throws IOException { + StringBuilder sb = new StringBuilder(); + int cp; + while ((cp = rd.read()) != -1) { + sb.append((char) cp); + } + return sb.toString(); + } + + /** + * 根据url访问99api后返回对应的平台的产品json数据 + * @param url + * @return + * @throws IOException + * @throws JSONException + */ + public static JSONObject getRequestFromUrl(String url) throws IOException, JSONException { + URL realUrl = new URL(url); + URLConnection conn = realUrl.openConnection(); + InputStream instream = conn.getInputStream(); + try { + BufferedReader rd = new BufferedReader(new InputStreamReader(instream, Charset.forName("UTF-8"))); + String jsonText = readAll(rd); + JSONObject json = new JSONObject(jsonText); + return json; + } finally { + instream.close(); + } + } + + /** + * 根据商品参加的活动次序查找对应活动明细 + * @param productId 商品id + * @param activity 活动次序 + * @return 活动结果 + */ + public HashMap getActivityByProduct(Integer productId, String activity){ + HashMap result = null; + // 根据参与活动配置次序查找对应活动信息 + if(StringUtils.isBlank(activity)){ + return result; + } + result = new HashMap<>(); + + List activitys = CrmebUtil.stringToArrayInt(activity); + for (Integer code : activitys) { + if(code == 1){ // 查找秒杀信息 + List currentSecKills = storeSeckillService.getCurrentSecKillByProductId(productId); + if(null != currentSecKills && currentSecKills.size() > 0){ + // 查询当前秒杀活动时间段配置信息 + StoreSeckillManger secKillManager = storeSeckillMangerService.getById(currentSecKills.get(0).getTimeId()); + // 将当前时间段转化成时间戳 + int secKillEndSecondTimestamp = + DateUtil.getSecondTimestamp(DateUtil.nowDateTime("yyyy-MM-dd " + secKillManager.getEndTime() + ":00:00")); + ProductActivityItemResponse secKillResponse = new ProductActivityItemResponse(); + secKillResponse.setId(currentSecKills.get(0).getId()); + secKillResponse.setTime(secKillEndSecondTimestamp); + secKillResponse.setType(Constants.PRODUCT_TYPE_SECKILL+""); + result.put(code,secKillResponse); + } + } + if(code == 2){ // 查找砍价信息 + List currentBargains = storeBargainService.getCurrentBargainByProductId(productId); + if (CollUtil.isNotEmpty(currentBargains)) { + ProductActivityItemResponse bargainResponse = new ProductActivityItemResponse(); + bargainResponse.setId(currentBargains.get(0).getId()); + bargainResponse.setTime(DateUtil.getSecondTimestamp(currentBargains.get(0).getStopTime())); + bargainResponse.setType(Constants.PRODUCT_TYPE_BARGAIN +""); + result.put(code, bargainResponse); + } + } + if(code == 3){ // 查找拼团信息 + List currentCombinations = storeCombinationService.getCurrentBargainByProductId(productId); + if (CollUtil.isNotEmpty(currentCombinations)) { + ProductActivityItemResponse bargainResponse = new ProductActivityItemResponse(); + bargainResponse.setId(currentCombinations.get(0).getId()); + bargainResponse.setTime(DateUtil.getSecondTimestamp(currentCombinations.get(0).getStopTime())); + bargainResponse.setType(Constants.PRODUCT_TYPE_PINGTUAN +""); + result.put(code, bargainResponse); + } + } + } + return result; + } + + /** + * 获取商品参与的全部活动 + * @param storeProduct 当前商品 + * @return 商品所参与的活动 + */ + public List getProductAllActivity(StoreProduct storeProduct) { + HashMap currentActivityList + = getActivityByProduct(storeProduct.getId(), storeProduct.getActivity()); + if(StringUtils.isBlank(storeProduct.getActivity())) return new ArrayList<>(); + List activityH5 = new ArrayList<>(); + List activityList = CrmebUtil.stringToArrayInt(storeProduct.getActivity()); + for (Integer code : activityList) { + if(null != currentActivityList.get(code)){ + activityH5.add(currentActivityList.get(code)); + } + } + return activityH5; + } + + /** + * 获取当前商品参与的第一个活动 + * @param storeProduct 当前商品信息 + * @return 当前参与的商品活动 + */ + public ProductActivityItemResponse getProductCurrentActivity(StoreProduct storeProduct) { + HashMap currentActivityList + = getActivityByProduct(storeProduct.getId(), storeProduct.getActivity()); + if(StringUtils.isBlank(storeProduct.getActivity())) return null; + List activityList = CrmebUtil.stringToArrayInt(storeProduct.getActivity()); + + return currentActivityList.get(activityList.get(0)); + } + + /** + * 一号通复制商品转公共商品参数 + * @param jsonObject 一号通复制商品 + * + */ + public static StoreProductRequest onePassCopyTransition(com.alibaba.fastjson.JSONObject jsonObject) { + if (null == jsonObject) return null; + + StoreProductRequest productRequest = new StoreProductRequest(); + StoreProduct product = new StoreProduct(); + + product.setStoreName(jsonObject.getString("store_name")); + product.setStoreInfo(jsonObject.getString("store_info")); + product.setSliderImage(jsonObject.getString("slider_image")); + product.setImage(jsonObject.getString("image").replace("[", "").replace("\"", "")); + product.setKeyword(jsonObject.getString("store_name")); + product.setCost(jsonObject.getBigDecimal("cost")); + product.setPrice(jsonObject.getBigDecimal("price")); + product.setOtPrice(jsonObject.getBigDecimal("ot_price")); + product.setUnitName(jsonObject.getString("unit_name")); + BeanUtils.copyProperties(product, productRequest); + + productRequest.setContent(jsonObject.getString("description")); + productRequest.setSpecType(true); + + com.alibaba.fastjson.JSONArray props = jsonObject.getJSONArray("items"); + if (null == props || props.size() < 1) { + // 无规格商品 + productRequest.setSpecType(false); + return productRequest; + } + + List spaAttes = new ArrayList<>(); + for (int i = 0; i < props.size(); i++) { + com.alibaba.fastjson.JSONObject pItem = props.getJSONObject(i); + StoreProductAttr spattr = new StoreProductAttr(); + spattr.setAttrName(pItem.getString("value")); + com.alibaba.fastjson.JSONArray values = pItem.getJSONArray("detail"); + List attrValues = new ArrayList<>(); + for (int j = 0; j < values.size(); j++) { + String value = values.getString(j); + attrValues.add(value); + } + spattr.setAttrValues(JSON.toJSONString(attrValues)); + spaAttes.add(spattr); + } + productRequest.setAttr(spaAttes); + return productRequest; + } + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/ArticleService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/ArticleService.java new file mode 100644 index 0000000..49bd2c0 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/ArticleService.java @@ -0,0 +1,97 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.model.article.Article; +import com.zbkj.common.model.category.Category; +import com.zbkj.common.request.ArticleRequest; +import com.zbkj.common.request.ArticleSearchRequest; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.response.ArticleResponse; +import com.zbkj.common.vo.ArticleVo; +import com.github.pagehelper.PageInfo; + +import java.util.List; + +/** +* ArticleService 接口 +* +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- +*/ +public interface ArticleService extends IService
{ + + /** + * 文章列表 + * @param cid 文章分类id + * @param pageParamRequest 分页类参数 + * @return PageInfo
+ */ + PageInfo getList(String cid, PageParamRequest pageParamRequest); + + /** + * 获取文章列表 + * @param request 请求参数 + * @param pageParamRequest 分页参数 + * @return PageInfo + */ + PageInfo getAdminList(ArticleSearchRequest request, PageParamRequest pageParamRequest); + + /** + * 文章详情 + * @param id 文章id + * @return ArticleVo + */ + ArticleResponse getVoByFront(Integer id); + + /** + * 获取移动端banner列表 + * @return List
+ */ + List
getBannerList(); + + /** + * 获取移动端热门列表 + * @return List + */ + List getHotList(); + + /** + * 获取文章分类列表 + * @return List + */ + List getCategoryList(); + + /** + * 文章新增 + * @param articleRequest 文章新增参数 + * @return Boolean + */ + Boolean create(ArticleRequest articleRequest); + + /** + * 文章删除 + * @param id 文章id + * @return Boolean + */ + Boolean deleteById(Integer id); + + /** + * 文章修改 + * @param id 文章id + * @param articleRequest 文章修改参数 + */ + Boolean updateArticle(Integer id, ArticleRequest articleRequest); + + /** + * 获取文章详情 + * @param id 文章id + * @return Article + */ + Article getDetail(Integer id); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/CallbackService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/CallbackService.java new file mode 100644 index 0000000..272efde --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/CallbackService.java @@ -0,0 +1,29 @@ +package com.zbkj.service.service; + +/** + * 订单支付回调 service + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface CallbackService { + /** + * 微信支付回调 + * @param xmlInfo 微信回调json + * @return String + */ + String weChat(String xmlInfo); + + /** + * 微信退款回调 + * @param request 微信回调json + * @return String + */ + String weChatRefund(String request); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/CategoryService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/CategoryService.java new file mode 100644 index 0000000..ba29ead --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/CategoryService.java @@ -0,0 +1,73 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.model.category.Category; +import com.zbkj.common.request.CategoryRequest; +import com.zbkj.common.request.CategorySearchRequest; +import com.zbkj.common.vo.CategoryTreeVo; + +import java.util.HashMap; +import java.util.List; + +/** +* CategoryService 接口 +* +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- +*/ +public interface CategoryService extends IService { + + List getList(CategorySearchRequest request, PageParamRequest pageParamRequest); + + int delete(Integer id); + + /** + * 获取树形结构数据 + * @param type 分类 + * @param status 状态 + * @param name 名称 + * @return List + */ + List getListTree(Integer type, Integer status, String name); + + /** + * 获取树形结构数据 + * @param type 分类 + * @param status 状态 + * @param categoryIdList 分类idList + * @return List + */ + List getListTree(Integer type, Integer status, List categoryIdList); + + List getByIds(List ids); + + HashMap getListInId(List cateIdList); + + Boolean checkAuth(List pathIdList, String uri); + + boolean update(CategoryRequest request, Integer id); + + List getChildVoListByPid(Integer pid); + + boolean checkUrl(String uri); + + boolean updateStatus(Integer id); + + /** + * 新增分类表 + */ + Boolean create(CategoryRequest categoryRequest); + + /** + * 获取文章分类列表 + * @return List + */ + List findArticleCategoryList(); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/CosService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/CosService.java new file mode 100644 index 0000000..39884e5 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/CosService.java @@ -0,0 +1,24 @@ +package com.zbkj.service.service; + +import com.zbkj.common.vo.CloudVo; +import com.qcloud.cos.COSClient; +import java.io.File; + +/** + * CosService 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface CosService { + + void uploadFile(CloudVo cloudVo, String webPth, String localFile, Integer id, COSClient cosClient); + + void uploadFile(CloudVo cloudVo, String webPth, String localFile, File file, COSClient cosClient); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/ExcelService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/ExcelService.java new file mode 100644 index 0000000..8bc7a50 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/ExcelService.java @@ -0,0 +1,49 @@ +package com.zbkj.service.service; + +import com.zbkj.common.request.StoreBargainSearchRequest; +import com.zbkj.common.request.StoreCombinationSearchRequest; +import com.zbkj.common.request.StoreOrderSearchRequest; +import com.zbkj.common.request.StoreProductSearchRequest; + +/** +* StoreProductService 接口 +* +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- +*/ +public interface ExcelService{ + + /** + * 导出砍价商品 + * @param request 请求参数 + * @return 导出地址 + */ + String exportBargainProduct(StoreBargainSearchRequest request); + + /** + * 导出拼团商品 + * @param request 请求参数 + * @return 导出地址 + */ + String exportCombinationProduct(StoreCombinationSearchRequest request); + + /** + * 商品导出 + * @param request 请求参数 + * @return 导出地址 + */ + String exportProduct(StoreProductSearchRequest request); + + /** + * 订单导出 + * @param request 查询条件 + * @return 文件名称 + */ + String exportOrder(StoreOrderSearchRequest request); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/ExpressService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/ExpressService.java new file mode 100644 index 0000000..6b81668 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/ExpressService.java @@ -0,0 +1,80 @@ +package com.zbkj.service.service; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.model.express.Express; +import com.zbkj.common.request.ExpressSearchRequest; +import com.zbkj.common.request.ExpressUpdateRequest; +import com.zbkj.common.request.ExpressUpdateShowRequest; + +import java.util.List; + +/** +* ExpressService 接口 +* +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- +*/ +public interface ExpressService extends IService { + + /** + * 列表 + * @param request 搜索条件 + * @param pageParamRequest 分页类参数 + * @return List + */ + List getList(ExpressSearchRequest request, PageParamRequest pageParamRequest); + + /** + * 编辑 + */ + Boolean updateExpress(ExpressUpdateRequest expressRequest); + + /** + * 修改显示状态 + */ + Boolean updateExpressShow(ExpressUpdateShowRequest expressRequest); + + /** + * 同步快递公司 + */ + Boolean syncExpress(); + + /** + * 查询全部快递公司 + * @param type 类型:normal-普通,elec-电子面单 + */ + List findAll(String type); + + /** + * 查询快递公司面单模板 + * @param com 快递公司编号 + */ + JSONObject template(String com); + + /** + * 查询快递公司 + * @param code 快递公司编号 + * @return Express + */ + Express getByCode(String code); + + /** + * 通过物流公司名称获取 + * @param name 物流公司名称 + */ + Express getByName(String name); + + /** + * 获取快递公司详情 + * @param id 快递公司id + */ + Express getInfo(Integer id); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/HomeService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/HomeService.java new file mode 100644 index 0000000..28d04e9 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/HomeService.java @@ -0,0 +1,56 @@ +package com.zbkj.service.service; + +import com.zbkj.common.response.HomeRateResponse; + +import java.util.Map; + +/** + * 首页统计 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface HomeService{ + + /** + * 用户曲线图 + */ + Map chartUser(); + + /** + * 30天订单量趋势 + */ + Map chartOrder(); + + /** + * 用户购买统计 + */ + Map chartUserBuy(); + + /** + * 周订单量趋势 + */ + Map chartOrderInWeek(); + + /** + * 月订单量趋势 + */ + Map chartOrderInMonth(); + + /** + * 年订单量趋势 + */ + Map chartOrderInYear(); + + /** + * 首页数据 + * @return HomeRateResponse + */ + HomeRateResponse indexDate(); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/LogisticService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/LogisticService.java new file mode 100644 index 0000000..5ee928c --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/LogisticService.java @@ -0,0 +1,20 @@ +package com.zbkj.service.service; + + +import com.zbkj.common.vo.LogisticsResultVo; + +/** +* ExpressService 接口 +* +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- +*/ +public interface LogisticService { + LogisticsResultVo info(String expressNo, String type, String com, String phone); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/OnePassService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/OnePassService.java new file mode 100644 index 0000000..aeafec4 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/OnePassService.java @@ -0,0 +1,120 @@ +package com.zbkj.service.service; + +import com.alibaba.fastjson.JSONObject; +import com.zbkj.common.request.*; +import com.zbkj.common.vo.MyRecord; +import com.zbkj.common.vo.OnePassLogisticsQueryVo; + +/** + * 一号通 OnePassService 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface OnePassService { + + /** + * 获取用户验证码 + * @param phone 手机号 + */ + Object sendUserCode(String phone, Integer types); + + /** + * 注册用户 + * @param registerRequest 注册参数 + */ + String register(OnePassRegisterRequest registerRequest); + + /** + * 用户登录 + * @param request 登录参数 + */ + MyRecord login(OnePassLoginRequest request); + + /** + * 判断是否登录 + */ + MyRecord isLogin(); + + /** + * 一号通用户信息 + */ + JSONObject info(); + + /** + * 用户注销 + */ + Boolean logOut(); + + /** + * 修改密码 + * @param request 修改密码参数 + */ + Boolean updatePassword(OnePassUpdateRequest request); + + /** + * 修改手机号 + * @param request 修改手机参数 + */ + Boolean updatePhone(OnePassUpdateRequest request); + + /** + * 套餐列表 + * @param type 套餐类型:sms,短信;expr_query,物流查询;expr_dump,电子面单;copy,产品复制 + */ + JSONObject mealList(String type); + + /** + * 套餐购买 + * @param request 购买参数 + */ + JSONObject mealCode(MealCodeRequest request); + + /** + * 服务开通 + * @param request 服务开通参数 + */ + Boolean serviceOpen(ServiceOpenRequest request); + + /** + * 用量记录 + * @param request 用量记录查询参数 + */ + JSONObject userRecord(OnePassUserRecordRequest request); + + /** + * 复制平台商品 + * @param url 商品链接 + */ + JSONObject copyGoods(String url); + + /** + * 电子面单 + */ + MyRecord expressDump(MyRecord record); + + /** + * 物流追踪 + * @param expressNo 快递单号 + * @param com 快递公司简写 + * @return OnePassLogisticsQueryVo + */ + OnePassLogisticsQueryVo exprQuery(String expressNo, String com); + + /** + * 修改手机号——验证账号密码 + * @return Boolean + */ + Boolean beforeUpdatePhoneValidator(OnePassLoginRequest request); + + /** + * 校验一号通账号是否配置 + */ + Boolean checkAccount(); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/OrderPayService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/OrderPayService.java new file mode 100644 index 0000000..cdba572 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/OrderPayService.java @@ -0,0 +1,34 @@ +package com.zbkj.service.service; + +import com.zbkj.common.model.order.StoreOrder; +import com.zbkj.common.request.OrderPayRequest; +import com.zbkj.common.response.OrderPayResultResponse; + +/** + * 订单支付 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface OrderPayService{ + + /** + * 支付成功处理 + * @param storeOrder 订单 + */ + Boolean paySuccess(StoreOrder storeOrder); + + /** + * 订单支付 + * @param orderPayRequest 支付参数 + * @param ip ip + * @return OrderPayResultResponse + */ + OrderPayResultResponse payment(OrderPayRequest orderPayRequest, String ip); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/OrderService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/OrderService.java new file mode 100644 index 0000000..15e0f33 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/OrderService.java @@ -0,0 +1,144 @@ +package com.zbkj.service.service; + +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.request.*; +import com.zbkj.common.response.*; +import com.zbkj.common.vo.MyRecord; + +import java.util.List; + +/** + * H5端订单操作 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface OrderService { + + /** + * 订单列表 + * @param type 类型 + * @param pageRequest 分页 + * @return 订单集合 + */ + CommonPage list(Integer type, PageParamRequest pageRequest); + + /** + * 订单详情 + * @param orderId 订单id + */ + StoreOrderDetailInfoResponse detailOrder(String orderId); + + /** + * 订单状态数量 + * @return 订单状态数据量 + */ + OrderDataResponse orderData(); + + /** + * 查询退款理由 + * @return 退款理由集合 + */ + List getRefundReason(); + + /** + * 订单删除 + * @param id 订单id + * @return Boolean + */ + Boolean delete(Integer id); + + /** + * 创建订单商品评价 + * @param request 请求参数 + * @return Boolean + */ + Boolean reply(StoreProductReplyAddRequest request); + + /** + * 订单收货 + * @param id 订单id + * @return Boolean + */ + Boolean take(Integer id); + + /** + * 订单取消 + * @param id 订单id + * @return Boolean + */ + Boolean cancel(Integer id); + + /** + * 订单退款申请 + * @param request 申请参数 + * @return Boolean + */ + Boolean refundApply(OrderRefundApplyRequest request); + + /** + * 订单退款申请Task使用 + * @param applyList 退款List + * @return Boolean + */ + Boolean refundApplyTask(List applyList); + + /** + * 订单物流查看 + */ + Object expressOrder(String orderId); + + /** + * 获取待评价商品信息 + * @param getProductReply 订单详情参数 + * @return 待评价 + */ + OrderProductReplyResponse getReplyProduct(GetProductReply getProductReply); + + /** + * 获取申请订单退款信息 + * @param orderId 订单编号 + * @return ApplyRefundOrderInfoResponse + */ + ApplyRefundOrderInfoResponse applyRefundOrderInfo(String orderId); + + /** + * 订单预下单 + * @param request 预下单请求参数 + * @return PreOrderResponse + */ + MyRecord preOrder(PreOrderRequest request); + + /** + * 加载预下单信息 + * @param preOrderNo 预下单号 + * @return 预下单信息 + */ + PreOrderResponse loadPreOrder(String preOrderNo); + + /** + * 计算订单价格 + * @param request 计算订单价格请求对象 + * @return ComputedOrderPriceResponse + */ + ComputedOrderPriceResponse computedOrderPrice(OrderComputedPriceRequest request); + + /** + * 创建订单 + * @param orderRequest 创建订单请求参数 + * @return MyRecord 订单编号 + */ + MyRecord createOrder(CreateOrderRequest orderRequest); + + /** + * 获取支付配置 + * @return PreOrderResponse + */ + PreOrderResponse getPayConfig(); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/OrderTaskService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/OrderTaskService.java new file mode 100644 index 0000000..e1313fe --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/OrderTaskService.java @@ -0,0 +1,40 @@ +package com.zbkj.service.service; + + +/** + * 订单任务服务 StoreOrderService 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ + public interface OrderTaskService{ + + void cancelByUser(); + + void refundApply(); + + void complete(); + + void orderPaySuccessAfter(); + + /** + * 自动取消未支付订单 + */ + void autoCancel(); + + /** + * 订单收货 + */ + void orderReceiving(); + + /** + * 订单自动完成 + */ + void autoComplete(); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/OssService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/OssService.java new file mode 100644 index 0000000..46135a6 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/OssService.java @@ -0,0 +1,24 @@ +package com.zbkj.service.service; + + +import com.zbkj.common.vo.CloudVo; + +import java.io.File; + +/** + * OssService 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface OssService { + + void upload(CloudVo cloudVo, String webPth, String localFile, File file); + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/QiNiuService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/QiNiuService.java new file mode 100644 index 0000000..9a8476e --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/QiNiuService.java @@ -0,0 +1,24 @@ +package com.zbkj.service.service; + +import com.zbkj.common.vo.CloudVo; +import com.qiniu.storage.UploadManager; + +import java.io.File; + +/** + * QiNiuService 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface QiNiuService { + void upload(UploadManager uploadManager, CloudVo cloudVo, String upToken, String webPth, String localFile, Integer id); + + void uploadFile(UploadManager uploadManager, CloudVo cloudVo, String upToken, String webPth, String localFile, File file); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/RechargePayService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/RechargePayService.java new file mode 100644 index 0000000..d65eba7 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/RechargePayService.java @@ -0,0 +1,24 @@ +package com.zbkj.service.service; + +import com.zbkj.common.model.finance.UserRecharge; + +/** + * 订单支付 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface RechargePayService { + + /** + * 支付成功处理 + * @param userRecharge 充值订单 + */ + Boolean paySuccess(UserRecharge userRecharge); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/RetailShopService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/RetailShopService.java new file mode 100644 index 0000000..3664605 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/RetailShopService.java @@ -0,0 +1,46 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.request.RetailShopRequest; +import com.zbkj.common.response.SpreadUserResponse; +import com.zbkj.common.model.user.User; + +/** + * 分销业务 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface RetailShopService extends IService { + + /** + * 分销员列表 + * @param keywords 搜索参数 + * @param dateLimit 时间参数 + * @param pageRequest 分页参数 + * @return CommonPage + */ + CommonPage getSpreadPeopleList(String keywords, String dateLimit, PageParamRequest pageRequest); + + /** + * 获取分销配置 + * @return 分销配置信息 + */ + RetailShopRequest getManageInfo(); + + /** + * 保存或者更新分销配置信息 + * @param retailShopRequest 待保存数据 + * @return 保存结果 + */ + boolean setManageInfo(RetailShopRequest retailShopRequest); + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/ShippingTemplatesFreeService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/ShippingTemplatesFreeService.java new file mode 100644 index 0000000..aea5c86 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/ShippingTemplatesFreeService.java @@ -0,0 +1,40 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.model.express.ShippingTemplatesFree; +import com.zbkj.common.request.ShippingTemplatesFreeRequest; + +import java.util.List; + +/** +* ShippingTemplatesFreeService 接口 +* +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- +*/ +public interface ShippingTemplatesFreeService extends IService { + + void saveAll(List shippingTemplatesFreeRequestList, Integer type, Integer id); + + List getListGroup(Integer tempId); + + /** + * 删除 + * @param tempId 运费模板id + */ + Boolean delete(Integer tempId); + + /** + * 根据模板编号、城市ID查询 + * @param tempId 模板编号 + * @param cityId 城市ID + * @return 运费模板 + */ + ShippingTemplatesFree getByTempIdAndCityId(Integer tempId, Integer cityId); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/ShippingTemplatesRegionService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/ShippingTemplatesRegionService.java new file mode 100644 index 0000000..0cd2f88 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/ShippingTemplatesRegionService.java @@ -0,0 +1,42 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.model.express.ShippingTemplatesRegion; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.request.ShippingTemplatesRegionRequest; + +import java.util.List; + +/** +* ShippingTemplatesRegionService 接口 +* +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- +*/ +public interface ShippingTemplatesRegionService extends IService { + + void saveAll(List shippingTemplatesRegionRequestList, Integer type, Integer id); + + List getListGroup(Integer tempId); + + /** + * 删除 + * @param tempId 运费模板id + * @return Boolean + */ + Boolean delete(Integer tempId); + + /** + * 根据模板编号、城市ID查询 + * @param tempId 模板编号 + * @param cityId 城市ID + * @return 运费模板 + */ + ShippingTemplatesRegion getByTempIdAndCityId(Integer tempId, Integer cityId); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/ShippingTemplatesService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/ShippingTemplatesService.java new file mode 100644 index 0000000..0ef1a84 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/ShippingTemplatesService.java @@ -0,0 +1,49 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.model.express.ShippingTemplates; +import com.zbkj.common.request.ShippingTemplatesRequest; +import com.zbkj.common.request.ShippingTemplatesSearchRequest; + +import java.util.List; + +/** +* ShippingTemplatesService 接口 +* +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- +*/ +public interface ShippingTemplatesService extends IService { + + List getList(ShippingTemplatesSearchRequest request, PageParamRequest pageParamRequest); + + /** + * 新增运费模板 + * @param request 请求参数 + * @return 新增结果 + */ + Boolean create(ShippingTemplatesRequest request); + + Boolean update(Integer id, ShippingTemplatesRequest request); + + /** + * 删除模板 + * @param id 模板id + * @return Boolean + */ + Boolean remove(Integer id); + + /** + * 获取模板信息 + * @param id 模板id + * @return ShippingTemplates + */ + ShippingTemplates getInfo(Integer id); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SmsRecordService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SmsRecordService.java new file mode 100644 index 0000000..ddb9599 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SmsRecordService.java @@ -0,0 +1,27 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.model.sms.SmsRecord; + +/** + * SmsRecordService 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface SmsRecordService extends IService { + + /** + * 保存短信记录 + * @param smsRecord 待保存短信记录 + * @return 保存结果 + */ + boolean save(SmsRecord smsRecord); + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SmsService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SmsService.java new file mode 100644 index 0000000..855efc1 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SmsService.java @@ -0,0 +1,117 @@ +package com.zbkj.service.service; + +import com.zbkj.common.request.SmsApplyTempRequest; +import com.zbkj.common.request.SmsModifySignRequest; +import com.zbkj.common.vo.MyRecord; +import com.zbkj.common.request.PageParamRequest; + +import java.math.BigDecimal; + +/** + * SmsService 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface SmsService { + + /** + * 修改签名 + */ + Boolean modifySign(SmsModifySignRequest request); + + /** + * 短信模板 + */ + MyRecord temps(PageParamRequest pageParamRequest); + + /** + * 申请模板消息 + */ + Boolean applyTempMessage(SmsApplyTempRequest request); + + /** + * 模板申请记录 + * + * @param type (1=验证码 2=通知 3=推广) + */ + MyRecord applys(Integer type, PageParamRequest pageParamRequest); + + /** + * 发送公共验证码 + * + * @param phone 手机号 + */ + Boolean sendCommonCode(String phone); + + /** + * 发送支付成功短信 + * @param phone 手机号 + * @param orderNo 订单编号 + * @param payPrice 支付金额 + * @param msgTempId 短信模板id + * @return Boolean + */ + Boolean sendPaySuccess(String phone, String orderNo, BigDecimal payPrice, Integer msgTempId); + + /** + * 发送管理员下单短信提醒短信 + * @param phone 手机号 + * @param orderNo 订单编号 + * @param realName 管理员名称 + * @param msgTempId 短信模板id + */ + Boolean sendCreateOrderNotice(String phone, String orderNo, String realName, Integer msgTempId); + + /** + * 发送订单支付成功管理员提醒短信 + * @param phone 手机号 + * @param orderNo 订单编号 + * @param realName 管理员名称 + * @param msgTempId 短信模板id + */ + Boolean sendOrderPaySuccessNotice(String phone, String orderNo, String realName, Integer msgTempId); + + /** + * 发送用户退款管理员提醒短信 + * @param phone 手机号 + * @param orderNo 订单编号 + * @param realName 管理员名称 + * @param msgTempId 短信模板id + */ + Boolean sendOrderRefundApplyNotice(String phone, String orderNo, String realName, Integer msgTempId); + + /** + * 发送用户确认收货管理员提醒短信 + * @param phone 手机号 + * @param orderNo 订单编号 + * @param realName 管理员名称 + * @param msgTempId 短信模板id + */ + Boolean sendOrderReceiptNotice(String phone, String orderNo, String realName, Integer msgTempId); + + /** + * 发送订单改价提醒短信 + * @param phone 手机号 + * @param orderNo 订单编号 + * @param price 修改后的支付金额 + * @param msgTempId 短信模板id + */ + Boolean sendOrderEditPriceNotice(String phone, String orderNo, BigDecimal price, Integer msgTempId); + + /** + * 发送订单发货提醒短信 + * @param phone 手机号 + * @param nickName 用户昵称 + * @param storeName 商品名称 + * @param orderNo 订单编号 + * @param msgTempId 短信模板id + */ + Boolean sendOrderDeliverNotice(String phone, String nickName, String storeName, String orderNo, Integer msgTempId); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SmsTemplateService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SmsTemplateService.java new file mode 100644 index 0000000..42184d2 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SmsTemplateService.java @@ -0,0 +1,26 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.model.sms.SmsTemplate; + +/** + * SmsTemplateService 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface SmsTemplateService extends IService { + + /** + * 获取详情 + * @param id 模板id + * @return SmsTemplate + */ + SmsTemplate getDetail(Integer id); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreBargainService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreBargainService.java new file mode 100644 index 0000000..293514f --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreBargainService.java @@ -0,0 +1,133 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.request.BargainFrontRequest; +import com.zbkj.common.response.*; +import com.zbkj.common.vo.MyRecord; +import com.zbkj.common.request.PageParamRequest; +import com.github.pagehelper.PageInfo; +import com.zbkj.common.model.bargain.StoreBargain; +import com.zbkj.common.request.StoreBargainRequest; +import com.zbkj.common.request.StoreBargainSearchRequest; + +import java.util.HashMap; +import java.util.List; + +/** + * 砍价 Service + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface StoreBargainService extends IService { + + /** + * 分页显示砍价商品列表 + */ + PageInfo getList(StoreBargainSearchRequest request, PageParamRequest pageParamRequest); + + /** + * 新增砍价商品 + */ + boolean saveBargain(StoreBargainRequest storeBargainRequest); + + /** + * 删除砍价商品 + */ + boolean deleteById(Integer id); + + /** + * 修改砍价商品 + */ + boolean updateBargain(StoreBargainRequest storeBargainRequest); + + /** + * 修改砍价商品状态 + */ + boolean updateBargainStatus(Integer id, boolean status); + + /** + * 查询砍价商品详情 + */ + StoreProductInfoResponse getAdminDetail(Integer id); + + /** + * H5 砍价商品列表 + * @return PageInfo + */ + PageInfo getH5List(PageParamRequest pageParamRequest); + + /** + * H5 获取砍价商品详情信息 + * @return BargainDetailResponse + */ + BargainDetailH5Response getH5Detail(Integer id); + + /** + * 获取当前时间的砍价商品 + * @return List + */ + List getCurrentBargainByProductId(Integer productId); + + /** + * 创建砍价活动 + * @return MyRecord + */ + MyRecord start(BargainFrontRequest bargainFrontRequest); + + /** + * 后台任务批量操作库存 + */ + void consumeProductStock(); + + /** + * 砍价活动结束后处理 + */ + void stopAfterChange(); + + /** + * 商品是否存在砍价活动 + * @param productId 商品编号 + */ + Boolean isExistActivity(Integer productId); + + /** + * 查询带异常 + * @param id 砍价商品id + * @return StoreBargain + */ + StoreBargain getByIdException(Integer id); + + /** + * 添加/扣减库存 + * @param id 秒杀商品id + * @param num 数量 + * @param type 类型:add—添加,sub—扣减 + */ + Boolean operationStock(Integer id, Integer num, String type); + + /** + * 砍价首页信息 + * @return BargainIndexResponse + */ + BargainIndexResponse getIndexInfo(); + + /** + * 获取砍价列表header + * @return BargainHeaderResponse + */ + BargainHeaderResponse getHeader(); + + /** + * 根据id数组获取砍价商品map + * @param bargainIdList 砍价商品id数组 + * @return HashMap + */ + HashMap getMapInId(List bargainIdList); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreBargainUserHelpService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreBargainUserHelpService.java new file mode 100644 index 0000000..8014d6d --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreBargainUserHelpService.java @@ -0,0 +1,83 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.model.bargain.StoreBargainUserHelp; +import com.zbkj.common.request.BargainFrontRequest; +import com.zbkj.common.response.StoreBargainUserHelpResponse; + +import java.util.List; +import java.util.Map; + +/** + * 用户帮助砍价 Service + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface StoreBargainUserHelpService extends IService { + + /** + * 列表 + * @param bargainUserId 砍价活动id + * @return List + */ + List getList(Integer bargainUserId); + + /** + * 获取帮忙砍价好友数量 + * @param bargainId 砍价商品Id + * @return Long + */ + Long getHelpCountByBargainId(Integer bargainId); + + /** + * 获取帮忙砍价好友数量 + * @param bargainId 砍价商品Id + * @param bargainUid 砍价用户uid + * @return Long + */ + Long getHelpCountByBargainIdAndBargainUid(Integer bargainId, Integer bargainUid); + + /** + * 砍价 + * @param bargainFrontRequest 砍价请求参数 + * @return Map + */ + Map help(BargainFrontRequest bargainFrontRequest); + + /** + * 获取参与砍价总人数(次) + * @return Integer + */ + Integer getCount(); + + /** + * 获取好友助力列表 + * @param bargainUserId 砍价用户表id + * @return List + */ + List getHelpListByBargainUserId(Integer bargainUserId); + + /** + * 是否帮砍过 + * @param bargainUserId 用户砍价活动id + * @param uid 用户uid + * @return Boolean + */ + Boolean getIsHelp(Integer bargainUserId, Integer uid); + + /** + * 获取该砍价商品用户的帮砍次数 + * @param bargainId 砍价商品id + * @param uid 用户uid + * @param bargainUserIdList 用户参与砍价活动id数组 + * @return Integer + */ + Integer getHelpCountByBargainIdAndUidInBUserId(Integer bargainId, Integer uid, List bargainUserIdList); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreBargainUserService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreBargainUserService.java new file mode 100644 index 0000000..9208102 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreBargainUserService.java @@ -0,0 +1,70 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.request.BargainFrontRequest; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.response.BargainRecordResponse; +import com.zbkj.common.response.BargainUserInfoResponse; +import com.github.pagehelper.PageInfo; +import com.zbkj.common.model.bargain.StoreBargainUser; +import com.zbkj.common.request.StoreBargainUserSearchRequest; +import com.zbkj.common.response.StoreBargainUserResponse; + +import java.util.List; + +/** + * 用户参与砍价 Service + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface StoreBargainUserService extends IService { + + PageInfo getList(StoreBargainUserSearchRequest request, PageParamRequest pageParamRequest); + + /** + * 获取砍价商品参与用户列表 + * @param bargainId 砍价商品Id + * @return List + */ + List getListByBargainId(Integer bargainId); + + /** + * 获取用户砍价活动列表 + * @param bargainId 砍价商品编号 + * @param uid 参与用户uid + * @return StoreBargainUser + */ + List getListByBargainIdAndUid(Integer bargainId, Integer uid); + + /** + * 砍价商品用户根据实体查询 + * @param bargainUser 砍价活动 + * @return List + */ + List getByEntity(StoreBargainUser bargainUser); + + /** + * 获取砍价成功列表Header + */ + List getHeaderList(); + + /** + * 获取用户砍价信息 + * @param bargainFrontRequest 请求参数 + * @return BargainUserInfoResponse + */ + BargainUserInfoResponse getBargainUserInfo(BargainFrontRequest bargainFrontRequest); + + /** + * 砍价记录 + * @return PageInfo + */ + PageInfo getRecordList(PageParamRequest pageParamRequest); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreCartService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreCartService.java new file mode 100644 index 0000000..3fac0c6 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreCartService.java @@ -0,0 +1,106 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.request.CartNumRequest; +import com.zbkj.common.request.CartRequest; +import com.zbkj.common.request.CartResetRequest; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.response.CartInfoResponse; +import com.github.pagehelper.PageInfo; +import com.zbkj.common.model.cat.StoreCart; + +import java.util.List; +import java.util.Map; + +/** + * StoreCartService 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface StoreCartService extends IService { + + /** + * 根据有效标识符获取出数据 + * @param pageParamRequest 分页参数 + * @param isValid 是否失效 + * @return 购物车列表 + */ + PageInfo getList(PageParamRequest pageParamRequest, boolean isValid); + + /** + * 获取当前购物车数量 + * @param request 请求参数 + * @return 数量 + */ + Map getUserCount(CartNumRequest request); + + /** + * 新增购物车数据 + * @param storeCartRequest 新增购物车参数 + * @return 新增结果 + */ + String saveCate(CartRequest storeCartRequest); + + /** + * 删除购物车 + * @param ids 待删除id + * @return 返回删除状态 + */ + Boolean deleteCartByIds(List ids); + + + /** + * 检测商品是否有效 更新购物车商品状态 + * @param productId 商品id + * @return 跟新结果 + */ + Boolean productStatusNotEnable(Integer productId); + + /** + * 购物车重选提交 + * @param resetRequest 重选数据 + * @return 提交结果 + */ + Boolean resetCart(CartResetRequest resetRequest); + + /** + * 对应sku购物车生效 + * @param skuIdList skuIdList + */ + Boolean productStatusNoEnable(List skuIdList); + + /** + * 删除商品对应的购物车 + * @param productId 商品id + */ + Boolean productDelete(Integer productId); + + /** + * 通过id和uid获取购物车信息 + * @param id 购物车id + * @param uid 用户uid + * @return StoreCart + */ + StoreCart getByIdAndUid(Long id, Integer uid); + + /** + * 获取购物车商品数量(不区分规格) + * @param uid 用户uid + * @param proId 商品id + */ + Integer getProductNumByUidAndProductId(Integer uid, Integer proId); + + /** + * 修改购物车商品数量 + * @param id 购物车id + * @param number 数量 + */ + Boolean updateCartNum(Integer id, Integer number); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreCombinationService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreCombinationService.java new file mode 100644 index 0000000..7c1db06 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreCombinationService.java @@ -0,0 +1,136 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.request.PageParamRequest; +import com.github.pagehelper.PageInfo; +import com.zbkj.common.model.combination.StoreCombination; +import com.zbkj.common.request.StoreCombinationRequest; +import com.zbkj.common.request.StoreCombinationSearchRequest; +import com.zbkj.common.request.StorePinkRequest; +import com.zbkj.common.response.*; + +import java.util.List; +import java.util.Map; + +/** + * StorePinkService + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface StoreCombinationService extends IService { + + /** + * 分页显示拼团商品表 + * @param request 搜索条件 + * @param pageParamRequest 分页参数 + */ + PageInfo getList(StoreCombinationSearchRequest request, PageParamRequest pageParamRequest); + + /** + * 新增拼团商品 + */ + Boolean saveCombination(StoreCombinationRequest request); + + /** + * 删除拼团商品 + */ + Boolean deleteById(Integer id); + + /** + * 编辑拼团商品 + */ + Boolean updateCombination(StoreCombinationRequest request); + + /** + * 查询拼团商品详情 + * @return StoreProductInfoResponse + */ + StoreProductInfoResponse getAdminDetail(Integer id); + + /** + * 修改拼团商品状态 + */ + Boolean updateCombinationShow(Integer id, Boolean isShow); + + /** + * admin拼团统计 + */ + Map getAdminStatistics(); + + /** + * H5拼团商品列表 + */ + List getH5List(PageParamRequest pageParamRequest); + + /** + * H5拼团商品详情 + * @param id 拼团商品编号 + */ + CombinationDetailResponse getH5Detail(Integer id); + + /** + * 去拼团 + * @param pinkId 拼团团长单ID + */ + GoPinkResponse goPink(Integer pinkId); + + /** + * 更多拼团信息 + */ + PageInfo getMore(PageParamRequest pageParamRequest, Integer comId); + + /** + * 取消拼团 + */ + Boolean removePink(StorePinkRequest storePinkRequest); + + /** + * 后台任务批量操作库存 + */ + void consumeProductStock(); + + /** + * 获取当前时间的拼团商品 + */ + List getCurrentBargainByProductId(Integer productId); + + /** + * 商品是否存在拼团活动 + * @param productId 商品编号 + */ + Boolean isExistActivity(Integer productId); + + /** + * 查询带异常 + * @param combinationId 拼团商品id + * @return StoreCombination + */ + StoreCombination getByIdException(Integer combinationId); + + /** + * 添加/扣减库存 + * @param id 秒杀商品id + * @param num 数量 + * @param type 类型:add—添加,sub—扣减 + */ + Boolean operationStock(Integer id, Integer num, String type); + + /** + * 拼团首页数据 + * @return CombinationIndexResponse + */ + CombinationIndexResponse getIndexInfo(); + + /** + * 拼团列表header + * @return CombinationHeaderResponse + */ + CombinationHeaderResponse getHeader(); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreCouponService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreCouponService.java new file mode 100644 index 0000000..90303db --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreCouponService.java @@ -0,0 +1,86 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.request.SearchAndPageRequest; +import com.zbkj.common.model.coupon.StoreCoupon; +import com.zbkj.common.request.StoreCouponRequest; +import com.zbkj.common.request.StoreCouponSearchRequest; +import com.zbkj.common.response.StoreCouponFrontResponse; +import com.zbkj.common.response.StoreCouponInfoResponse; + +import java.util.List; + +/** + * StoreCouponService 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface StoreCouponService extends IService { + + List getList(StoreCouponSearchRequest request, PageParamRequest pageParamRequest); + + boolean create(StoreCouponRequest request); + + StoreCoupon getInfoException(Integer id); + + StoreCouponInfoResponse info(Integer id); + + /** + * 根据优惠券id获取 + * @param ids 优惠券id集合 + * @return 优惠券列表 + */ + List getByIds(List ids); + + /** + * 扣减数量 + * @param id 优惠券id + * @param num 数量 + * @param isLimited 是否限量 + */ + Boolean deduction(Integer id, Integer num, Boolean isLimited); + + /** + * 获取用户注册赠送新人券 + * @return 优惠券列表 + */ + List findRegisterList(); + + /** + * 发送优惠券列表 + * @param searchAndPageRequest 搜索分页参数 + * @return 优惠券列表 + */ + List getSendList(SearchAndPageRequest searchAndPageRequest); + + /** + * 删除优惠券 + * @param id 优惠券id + * @return Boolean + */ + Boolean delete(Integer id); + + /** + * 移动端优惠券列表 + * @param type 类型,1-通用,2-商品,3-品类 + * @param productId 产品id,搜索产品指定优惠券 + * @param pageParamRequest 分页参数 + * @return List + */ + List getH5List(Integer type, Integer productId, PageParamRequest pageParamRequest); + + /** + * 修改优惠券状态 + * @param id 优惠券id + * @param status 状态 + */ + Boolean updateStatus(Integer id, Boolean status); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreCouponUserService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreCouponUserService.java new file mode 100644 index 0000000..5e221b7 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreCouponUserService.java @@ -0,0 +1,95 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.request.UserCouponReceiveRequest; +import com.zbkj.common.vo.MyRecord; +import com.zbkj.common.request.PageParamRequest; +import com.github.pagehelper.PageInfo; +import com.zbkj.common.model.coupon.StoreCouponUser; +import com.zbkj.common.request.StoreCouponUserRequest; +import com.zbkj.common.request.StoreCouponUserSearchRequest; +import com.zbkj.common.response.StoreCouponUserOrder; +import com.zbkj.common.response.StoreCouponUserResponse; + +import java.util.HashMap; +import java.util.List; + +/** + * StoreCouponUserService 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface StoreCouponUserService extends IService { + + /** + * 优惠券发放记录 + * @param request 查询参数 + * @param pageParamRequest 分页参数 + * @return PageInfo + */ + PageInfo getList(StoreCouponUserSearchRequest request, PageParamRequest pageParamRequest); + + /** + * PC领取优惠券 + * @param storeCouponUserRequest 优惠券参数 + * @return Boolean + */ + Boolean receive(StoreCouponUserRequest storeCouponUserRequest); + + HashMap getMapByUserId(Integer userId); + + /** + * 根据购物车id获取可用优惠券 + * @param preOrderNo 预下单订单号 + * @return 可用优惠券集合 + */ + List getListByPreOrderNo(String preOrderNo); + + /** + * 优惠券过期定时任务 + */ + void overdueTask(); + + /** + * 用户领取优惠券 + */ + Boolean receiveCoupon(UserCouponReceiveRequest request); + + /** + * 支付成功赠送处理 + * @param couponId 优惠券编号 + * @param uid 用户uid + * @return MyRecord + */ + MyRecord paySuccessGiveAway(Integer couponId, Integer uid); + + /** + * 根据uid获取列表 + * @param uid uid + * @param pageParamRequest 分页参数 + * @return List + */ + List findListByUid(Integer uid, PageParamRequest pageParamRequest); + + /** + * 获取可用优惠券数量 + * @param uid 用户uid + */ + Integer getUseCount(Integer uid); + + /** + * 我的优惠券列表 + * @param type 类型,usable-可用,unusable-不可用 + * @param pageParamRequest 分页参数 + * @return CommonPage + */ + CommonPage getMyCouponList(String type, PageParamRequest pageParamRequest); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreOrderInfoService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreOrderInfoService.java new file mode 100644 index 0000000..abc46ae --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreOrderInfoService.java @@ -0,0 +1,74 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.model.order.StoreOrderInfo; +import com.zbkj.common.vo.StoreOrderInfoOldVo; +import com.zbkj.common.vo.StoreOrderInfoVo; + +import java.math.BigDecimal; +import java.util.HashMap; +import java.util.List; + +/** + * StoreOrderInfoService 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface StoreOrderInfoService extends IService { + + HashMap> getMapInId(List orderIdList); + + List getOrderListByOrderId(Integer orderId); + + /** + * 批量添加订单详情 + * @param storeOrderInfos 订单详情集合 + * @return 保存结果 + */ + boolean saveOrderInfos(List storeOrderInfos); + + /** + * 通过订单编号和规格号查询 + * @param uni 规格号 + * @param orderId 订单编号 + * @return StoreOrderInfo + */ + StoreOrderInfo getByUniAndOrderId(String uni, Integer orderId); + + /** + * 获取订单详情vo列表 + * @param orderId 订单id + * @return List + */ + List getVoListByOrderId(Integer orderId); + + /** + * 获取订单详情-订单编号 + * @param orderNo 订单编号 + * @return List + */ + List getListByOrderNo(String orderNo); + + /** + * 根据时间、商品id获取销售件数 + * @param date 时间,格式'yyyy-MM-dd' + * @param proId 商品id + * @return Integer + */ + Integer getSalesNumByDateAndProductId(String date, Integer proId); + + /** + * 根据时间、商品id获取销售额 + * @param date 时间,格式'yyyy-MM-dd' + * @param proId 商品id + * @return BigDecimal + */ + BigDecimal getSalesByDateAndProductId(String date, Integer proId); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreOrderRefundService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreOrderRefundService.java new file mode 100644 index 0000000..28c3863 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreOrderRefundService.java @@ -0,0 +1,23 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.model.order.StoreOrder; +import com.zbkj.common.request.StoreOrderRefundRequest; + + +/** + * StoreOrderRefundService 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface StoreOrderRefundService extends IService { + + void refund(StoreOrderRefundRequest request, StoreOrder storeOrder); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreOrderService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreOrderService.java new file mode 100644 index 0000000..156d9d4 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreOrderService.java @@ -0,0 +1,381 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.model.order.StoreOrder; +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.request.*; +import com.zbkj.common.response.*; +import com.zbkj.common.vo.ExpressSheetVo; +import com.zbkj.common.vo.LogisticsResultVo; + +import java.math.BigDecimal; +import java.util.List; +import java.util.Map; + +/** + * StoreOrderService 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface StoreOrderService extends IService { + + /** + * 列表(PC) + * @param request 请求参数 + * @param pageParamRequest 分页类参数 + * @return CommonPage + */ + CommonPage getAdminList(StoreOrderSearchRequest request, PageParamRequest pageParamRequest); + + /** + * 核销列表 + * @param request 请求参数 + * @param pageParamRequest 分页类参数 + * @return List + */ + SystemWriteOffOrderResponse getWriteOffList(SystemWriteOffOrderSearchRequest request, PageParamRequest pageParamRequest); + + /** + * 累计消费 + * @param userId Integer 用户id + * @author Mr.Zhang + * @since 2020-06-10 + * @return UserBalanceResponse + */ + BigDecimal getSumBigDecimal(Integer userId, String date); + + /** + * H5订单列表 + * @param uid 用户uid + * @param status 评价等级|0=未支付,1=待发货,2=待收货,3=待评价,4=已完成,-3=售后/退款 + * @param pageParamRequest 分页参数 + * @return 订单结果列表 + */ + List getUserOrderList(Integer uid, Integer status, PageParamRequest pageParamRequest); + /** + * 创建订单 + * @param storeOrder 订单参数 + * @return 创建结果 + */ + boolean create(StoreOrder storeOrder); + + /** + * 根据属性仅仅获取一条 + * @param storeOrder 参数 + * @return 当前查询结果 + */ + StoreOrder getByEntityOne(StoreOrder storeOrder); + + /** + * h5 top data 工具方法 + * @param status 状态参数 + * @return 查询到的订单结果 + */ + Integer getTopDataUtil(Integer status, Integer userId); + + List getOrderGroupByDate(String dateLimit, int lefTime); + + boolean refund(StoreOrderRefundRequest request); + + /** + * 订单详情(PC) + * @param orderNo 订单编号 + * @return StoreOrderInfoResponse + */ + StoreOrderInfoResponse info(String orderNo); + + Boolean send(StoreOrderSendRequest request); + + /** + * 订单备注 + * @param orderNo 订单编号 + * @param mark 备注 + * @return Boolean + */ + Boolean mark(String orderNo, String mark); + + /** + * 拒绝退款 + * @param orderNo 订单编号 + * @param reason String 原因 + * @return Boolean + */ + Boolean refundRefuse(String orderNo, String reason); + + StoreOrder getInfoByEntity(StoreOrder storeOrder); + + /** + * 获取订单快递信息 + * @param orderNo 订单编号 + * @return LogisticsResultVo + */ + LogisticsResultVo getLogisticsInfo(String orderNo); + + /** + * 根据时间参数统计订单价格 + * @param dateLimit 时间区间 + * @param type 1=price 2=订单量 + * @return 统计订单信息 + */ + StoreOrderStatisticsResponse orderStatisticsByTime(String dateLimit, Integer type); + + /** + * 获取用户当天的秒杀数量 + * + * @param uid 用户uid + * @param seckillId 秒杀商品id + * @return 用户当天的秒杀商品订单数量 + */ + List getUserCurrentDaySecKillOrders(Integer uid, Integer seckillId); + + /** + * 获取用户当前的砍价订单 + * @param uid 用户uid + * @return 用户当前的砍价订单 + */ + List getUserCurrentBargainOrders(Integer uid, Integer bargainId); + + /** + * 获取用户当前的拼团订单 + * @param uid 用户uid + * @return 用户当前的拼团订单 + */ + List getUserCurrentCombinationOrders(Integer uid, Integer combinationId); + + StoreOrder getByOderId(String orderId); + + /** + * 获取面单默认配置信息 + * @return ExpressSheetVo + */ + ExpressSheetVo getDeliveryInfo(); + + /** + * 更新支付结果 + * @param orderNo 订单编号 + */ + Boolean updatePaid(String orderNo); + + /** + * 跟据订单号列表获取订单列表Map + * @param orderNoList 订单号列表 + * @return Map + */ + Map getMapInOrderNo(List orderNoList); + + /** + * 获取推广订单总金额 + * @param orderNoList 订单编号列表 + * @return BigDecimal + */ + BigDecimal getSpreadOrderTotalPriceByOrderList(List orderNoList); + + /** + * 获取所有收货订单id集合 + * @return List + */ + List findIdAndUidListByReceipt(); + + /** + * 根据用户uid查询所有已支付订单 + * @param userId 用户uid + * @param pageParamRequest 分页参数 + * @return List + */ + List findPaidListByUid(Integer userId, PageParamRequest pageParamRequest); + + /** + * 订单改价 + * @param request 改价请求对象 + * @return 改价是否成功 + */ + Boolean updatePrice(StoreOrderUpdatePriceRequest request); + + /** + * 获取订单总数量 + * @param uid 用户uid + * @return Integer + */ + Integer getOrderCountByUid(Integer uid); + + /** + * 获取用户总消费金额 + * @param userId 用户uid + * @return BigDecimal + */ + BigDecimal getSumPayPriceByUid(Integer userId); + + /** + * 获取订单数量(时间) + * @param uid 用户uid + * @return Integer + */ + Integer getOrderCountByUidAndDate(Integer uid, String date); + + /** + * 获取用户消费金额(时间) + * @param userId 用户uid + * @return BigDecimal + */ + BigDecimal getSumPayPriceByUidAndDate(Integer userId, String date); + + /** + * 获取砍价订单 + * @param bargainId 砍价商品id + * @param bargainUserId 用户砍价活动id + * @return StoreOrder + */ + StoreOrder getByBargainOrder(Integer bargainId, Integer bargainUserId); + + /** + * 获取订单状态数量 + * @param dateLimit 时间端 + * @param type 订单类型:0普通订单,1-视频号订单, 2-全部订单 + * @return StoreOrderCountItemResponse + */ + StoreOrderCountItemResponse getOrderStatusNum(String dateLimit, Integer type); + + /** + * 获取订单统计数据 + * @param dateLimit 时间端 + * @return StoreOrderTopItemResponse + */ + StoreOrderTopItemResponse getOrderData(String dateLimit); + + /** + * 订单删除 + * @param orderNo 订单编号 + * @return Boolean + */ + Boolean delete(String orderNo); + + /** + * 通过日期获取商品交易件数 + * @param date 日期,yyyy-MM-dd格式 + * @return Integer + */ + Integer getOrderProductNumByDate(String date); + + /** + * 通过日期获取商品交易成功件数 + * @param date 日期,yyyy-MM-dd格式 + * @return Integer + */ + Integer getOrderSuccessProductNumByDate(String date); + + /** + * 通过日期获取订单数量 + * @param date 日期,yyyy-MM-dd格式 + * @return Integer + */ + Integer getOrderNumByDate(String date); + + /** + * 通过日期获取支付订单数量 + * @param date 日期,yyyy-MM-dd格式 + * @return Integer + */ + Integer getPayOrderNumByDate(String date); + + /** + * 通过日期获取支付订单金额 + * @param date 日期,yyyy-MM-dd格式 + * @return BigDecimal + */ + BigDecimal getPayOrderAmountByDate(String date); + + /** + * 通过日期获取支付订单金额 + * @param startDate 日期 + * @param endDate 日期 + * @return BigDecimal + */ + BigDecimal getPayOrderAmountByPeriod(String startDate, String endDate); + + /** + * 通过日期获取余额支付订单支付金额 + * @param date 日期,yyyy-MM-dd格式 + * @return BigDecimal + */ + BigDecimal getYuePayOrderAmountByDate(String date); + + /** + * 获取累计消费金额 + * @return BigDecimal + */ + BigDecimal getTotalPrice(); + + /** + * 根据日期获取下单用户数量 + * @param date 日期 + * @return Integer + */ + Integer getOrderUserNumByDate(String date); + + /** + * 根据日期获取下单用户数量 + * @param startDate 日期 + * @param endDate 日期 + * @return Integer + */ + Integer getOrderUserNumByPeriod(String startDate, String endDate); + + /** + * 根据日期获取成交用户数量 + * @param date 日期 + * @return Integer + */ + Integer getOrderPayUserNumByDate(String date); + + /** + * 根据日期获取成交用户数量 + * @param startDate 日期 + * @param endDate 日期 + * @return Integer + */ + Integer getOrderPayUserNumByPeriod(String startDate, String endDate); + + /** + * 根据用户uid列表获取成交用户数量 + * @param uidList 用户列表 + * @return Integer + */ + Integer getOrderPayUserNumByUidList(List uidList); + + /** + * 根据用户uid列表获取支付金额 + * @param uidList 用户列表 + * @return BigDecimal + */ + BigDecimal getPayOrderAmountByUidList(List uidList); + + /** + * 获取待发货订单数量 + * @return Integer + */ + Integer getNotShippingNum(); + + /** + * 获取退款中订单数量 + */ + Integer getRefundingNum(); + + /** + * 获取待核销订单数量 + */ + Integer getNotWriteOffNum(); + + /** + * 获取佣金相关数据 + * @param uid 用户uid + * @param spreadId 推广人uid + */ + OrderBrokerageData getBrokerageData(Integer uid, Integer spreadId); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreOrderStatusService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreOrderStatusService.java new file mode 100644 index 0000000..38b0876 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreOrderStatusService.java @@ -0,0 +1,78 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.model.order.StoreOrderStatus; +import com.zbkj.common.request.StoreOrderStatusSearchRequest; + +import java.math.BigDecimal; +import java.util.List; + +/** + * StoreOrderStatusService 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface StoreOrderStatusService extends IService { + + /** + * 订单操作记录列表 + * @param request 请求参数 + * @param pageParamRequest 分页参数 + * @return List + */ + List getList(StoreOrderStatusSearchRequest request, PageParamRequest pageParamRequest); + + /** + * 保存订单退款记录 + * @param orderId 订单id + * @param amount 金额 + * @param message 备注 + * @return Boolean + */ + Boolean saveRefund(Integer orderId, BigDecimal amount, String message); + + /** + * 添加订单日志 + * @param orderId 订单id + * @param type 类型 + * @param message 备注 + * @return Boolean + */ + Boolean createLog(Integer orderId, String type, String message); + + /** + * 根据实体参数获取 + * @param storeOrderStatus 订单状态参数 + * @return 订单状态结果 + */ + List getByEntity(StoreOrderStatus storeOrderStatus); + + /** + * 根据订单id获取最后一条记录 + * @param orderId 订单id + * @return StoreOrderStatus + */ + StoreOrderStatus getLastByOrderId(Integer orderId); + + /** + * 通过日期获取订单退款数量 + * @param date 日期,yyyy-MM-dd格式 + * @return Integer + */ + Integer getRefundOrderNumByDate(String date); + + /** + * 通过日期获取订单退款金额 + * @param date 日期,yyyy-MM-dd格式 + * @return BigDecimal + */ + BigDecimal getRefundOrderAmountByDate(String date); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreOrderTaskService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreOrderTaskService.java new file mode 100644 index 0000000..4da56b2 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreOrderTaskService.java @@ -0,0 +1,29 @@ +package com.zbkj.service.service; + + +import com.zbkj.common.model.order.StoreOrder; + +/** + * 订单任务服务 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface StoreOrderTaskService { + + Boolean cancelByUser(StoreOrder storeOrder); + + Boolean complete(StoreOrder storeOrder); + + Boolean refundOrder(StoreOrder storeOrder); + + Boolean autoCancel(StoreOrder storeOrder); + + Boolean orderReceiving(Integer orderId); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreOrderVerification.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreOrderVerification.java new file mode 100644 index 0000000..02cbfe9 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreOrderVerification.java @@ -0,0 +1,48 @@ +package com.zbkj.service.service; + + +import com.zbkj.common.request.StoreOrderStaticsticsRequest; +import com.zbkj.common.response.StoreOrderVerificationConfirmResponse; +import com.zbkj.common.response.StoreStaffDetail; +import com.zbkj.common.response.StoreStaffTopDetail; + +import java.util.List; + +/** + * 订单核销业务 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface StoreOrderVerification { + /** + * 获取订单核销数据 + */ + StoreStaffTopDetail getOrderVerificationData(); + + /** + * 核销月详情 + * @return 月详情 + */ + List getOrderVerificationDetail(StoreOrderStaticsticsRequest request); + + /** + * 根据核销码核销订单 + * @param vCode 核销码 + * @return 核销结果 + */ + boolean verificationOrderByCode(String vCode); + + /** + * 根据核销码查询待核销订单 + * @param vCode 核销码 + * @return 待核销订单详情 + */ + StoreOrderVerificationConfirmResponse getVerificationOrderByCode(String vCode); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StorePinkService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StorePinkService.java new file mode 100644 index 0000000..dd67278 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StorePinkService.java @@ -0,0 +1,100 @@ +package com.zbkj.service.service; + +import com.zbkj.common.request.PageParamRequest; +import com.github.pagehelper.PageInfo; +import com.zbkj.common.model.combination.StorePink; +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.request.StorePinkSearchRequest; +import com.zbkj.common.response.StorePinkAdminListResponse; +import com.zbkj.common.response.StorePinkDetailResponse; + +import java.util.List; + +/** + * StorePinkService + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface StorePinkService extends IService { + + /** + * 获取拼团列表 + * @param request + * @param pageParamRequest + * @return + */ + PageInfo getList(StorePinkSearchRequest request, PageParamRequest pageParamRequest); + + /** + * 获取拼团列表Cid + * @param cid 拼团商品id + * @return + */ + List getListByCid(Integer cid); + + /** + * 实体查询 + * @param storePink + * @return + */ + List getByEntity(StorePink storePink); + + /** + * PC拼团详情列表 + * @param pinkId 团长pinkId + * @return + */ + List getAdminList(Integer pinkId); + + /** + * 查询拼团列表 + * @param cid + * @param kid + */ + List getListByCidAndKid(Integer cid, Integer kid); + + /** + * 根据团长拼团id获取拼团人数 + * @param pinkId + * @return + */ + Integer getCountByKid(Integer pinkId); + + /** + * 检查状态,更新数据 + */ + void detectionStatus(); + + /** + * 拼团成功 + * @param kid + * @return + */ + boolean pinkSuccess(Integer kid); + + /** + * 根据订单编号获取 + * @param orderId + * @return + */ + StorePink getByOrderId(String orderId); + + /** + * 获取最后3个拼团信息(不同用户) + * @return List + */ + List findSizePink(Integer size); + + /** + * 获取拼团参与总人数 + * @return Integer + */ + Integer getTotalPeople(); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductAttrResultService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductAttrResultService.java new file mode 100644 index 0000000..ac6309c --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductAttrResultService.java @@ -0,0 +1,28 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.model.product.StoreProductAttrResult; + +import java.util.List; + +/** + * StoreProductAttrResultService 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface StoreProductAttrResultService extends IService { + + /** + * 根据商品属性值集合查询 + * @param storeProductAttrResult 查询参数 + * @return 查询结果 + */ + List getByEntity(StoreProductAttrResult storeProductAttrResult); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductAttrService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductAttrService.java new file mode 100644 index 0000000..251a62d --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductAttrService.java @@ -0,0 +1,51 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.model.product.StoreProductAttr; + +import java.util.List; + +/** + * StoreProductAttrService 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface StoreProductAttrService extends IService { + + /** + * 根据基本属性查询商品属性详情 + * @param storeProductAttr 商品属性 + * @return 查询商品属性集合 + */ + List getByEntity(StoreProductAttr storeProductAttr); + + /** + * 根据id删除商品 + * @param productId 待删除商品id + * @param type 类型区分是是否添加营销 + */ + void removeByProductId(Integer productId,int type); + + /** + * 删除商品规格 + * @param productId 商品id + * @param type 商品类型 + * @return Boolean + */ + Boolean deleteByProductIdAndType(Integer productId, Integer type); + + /** + * 获取商品规格列表 + * @param productId 商品id + * @param type 商品类型 + * @return List + */ + List getListByProductIdAndType(Integer productId, Integer type); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductAttrValueService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductAttrValueService.java new file mode 100644 index 0000000..498de1e --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductAttrValueService.java @@ -0,0 +1,87 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.model.product.StoreProductAttrValue; + +import java.util.List; + +/** + * StoreProductAttrValueService 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface StoreProductAttrValueService extends IService { + + /** + * 根据商品id和attrId获取列表集合 + * @param productId 商品id + * @param attrId 属性id + * @param type 商品类型 + * @return 商品属性集合 + */ + List getListByProductIdAndAttrId(Integer productId, String attrId, Integer type); + + /** + * 根据商品属性查询 + * @param storeProductAttrValue 商品属性参数 + * @return 商品属性结果 + */ + List getByEntity(StoreProductAttrValue storeProductAttrValue); + + /** + * 根据商品删除attrValue + * @param productId 商品id + * @param type 类型区分是是否添加营销 + * @return 删除结果 + */ + boolean removeByProductId(Integer productId,int type); + + /** + * 根据id、类型查询 + * @param id ID + * @param type 类型 + * @return StoreProductAttrValue + */ + StoreProductAttrValue getByIdAndProductIdAndType(Integer id, Integer productId, Integer type); + + /** + * 根据sku查询 + * @param productId 商品id + * @param suk sku + * @param type 规格类型 + * @return StoreProductAttrValue + */ + StoreProductAttrValue getByProductIdAndSkuAndType(Integer productId, String suk, Integer type); + + /** + * 添加/扣减库存 + * @param id 秒杀商品id + * @param num 数量 + * @param operationType 类型:add—添加,sub—扣减 + * @param type 活动类型 0=商品,1=秒杀,2=砍价,3=拼团 + */ + Boolean operationStock(Integer id, Integer num, String operationType, Integer type); + + /** + * 删除商品规格属性值 + * @param productId 商品id + * @param type 商品类型 + * @return Boolean + */ + Boolean deleteByProductIdAndType(Integer productId, Integer type); + + /** + * 获取商品规格列表 + * @param productId 商品id + * @param type 商品类型 + * @return List + */ + List getListByProductIdAndType(Integer productId, Integer type); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductCouponService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductCouponService.java new file mode 100644 index 0000000..bf39de2 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductCouponService.java @@ -0,0 +1,33 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.model.product.StoreProductCoupon; + +import java.util.List; + +/** + * StoreProductCouponService 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface StoreProductCouponService extends IService { + /** + * 根据产品id删除 优惠券关联信息 + * @param productId 产品id + */ + boolean deleteByProductId(Integer productId); + + /** + * 根据商品id获取已关联优惠券信息 + * @param productId 商品id + * @return 已关联优惠券 + */ + List getListByProductId(Integer productId); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductDescriptionService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductDescriptionService.java new file mode 100644 index 0000000..3b3c545 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductDescriptionService.java @@ -0,0 +1,34 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.model.product.StoreProductDescription; + +/** + * StoreProductDescriptionService 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface StoreProductDescriptionService extends IService { + + /** + * 根据商品id和type删除对应描述 + * @param productId 商品id + * @param type 类型 + */ + void deleteByProductId(int productId,int type); + + /** + * 获取详情 + * @param productId 商品id + * @param type 商品类型 + * @return + */ + StoreProductDescription getByProductIdAndType(Integer productId, Integer type); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductLogService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductLogService.java new file mode 100644 index 0000000..f8a6745 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductLogService.java @@ -0,0 +1,20 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.model.log.StoreProductLog; + +/** + * StoreProductLogService 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface StoreProductLogService extends IService { + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductRelationService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductRelationService.java new file mode 100644 index 0000000..33a123d --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductRelationService.java @@ -0,0 +1,92 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.model.product.StoreProductRelation; +import com.zbkj.common.request.UserCollectAllRequest; +import com.zbkj.common.request.UserCollectRequest; +import com.zbkj.common.response.UserRelationResponse; + +import java.util.List; + +/** + * StoreProductRelationService 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface StoreProductRelationService extends IService { + + List getList(Integer productId, String type); + + /** + * 取消收藏 + * @param requestJson 收藏idsJson + * @return Boolean + */ + Boolean delete(String requestJson); + + /** + * 批量收藏 + * @param request 收藏参数 + * @return Boolean + */ + Boolean all(UserCollectAllRequest request); + + List getLikeOrCollectByUser(Integer userId, Integer productId,boolean isLike); + + /** + * 获取用户收藏列表 + * @param pageParamRequest 分页参数 + * @return List + */ + List getUserList(PageParamRequest pageParamRequest); + + /** + * 获取用户的收藏数量 + * @param uid 用户uid + * @return 收藏数量 + */ + Integer getCollectCountByUid(Integer uid); + + /** + * 根据商品Id取消收藏 + * @param proId 商品Id + * @return Boolean + */ + Boolean deleteByProId(Integer proId); + + /** + * 根据商品Id取消收藏 + * @param proId 商品Id + * @return Boolean + */ + Boolean deleteByProIdAndUid(Integer proId); + + /** + * 根据日期获取收藏量 + * @param date 日期,yyyy-MM-dd格式 + * @return Integer + */ + Integer getCountByDate(String date); + + /** + * 根据日期获取收藏量 + * @param date 日期,yyyy-MM-dd格式 + * @param proId 商品id + * @return Integer + */ + Integer getCountByDateAndProId(String date, Integer proId); + + /** + * 添加收藏 + * @param request 收藏参数 + */ + Boolean add(UserCollectRequest request); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductReplyService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductReplyService.java new file mode 100644 index 0000000..2de04b2 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductReplyService.java @@ -0,0 +1,94 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.request.StoreProductReplyAddRequest; +import com.zbkj.common.request.StoreProductReplyCommentRequest; +import com.zbkj.common.request.StoreProductReplySearchRequest; +import com.zbkj.common.response.ProductDetailReplyResponse; +import com.zbkj.common.response.ProductReplyResponse; +import com.zbkj.common.response.StoreProductReplyResponse; +import com.zbkj.common.vo.MyRecord; +import com.zbkj.common.request.PageParamRequest; +import com.github.pagehelper.PageInfo; +import com.zbkj.common.model.product.StoreProductReply; + +/** + * StoreProductReplyService 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface StoreProductReplyService extends IService { + + /** + * 商品评论列表 + * @param request 请求参数 + * @param pageParamRequest 分页参数 + * @return PageInfo + */ + PageInfo getList(StoreProductReplySearchRequest request, PageParamRequest pageParamRequest); + + /** + * 创建订单商品评价 + * @param request 请求参数 + * @return Boolean + */ + Boolean create(StoreProductReplyAddRequest request); + + /** + * 添加虚拟评论 + * @param request 评论参数 + * @return 评论结果 + */ + boolean virtualCreate(StoreProductReplyAddRequest request); + + /** + * 查询是否已经回复 + * @param unique skuId + * @param orderId 订单id + * @return Boolean + */ + Boolean isReply(String unique, Integer orderId); + + /** + * H5商品评论统计 + * @param productId 商品编号 + * @return MyRecord + */ + MyRecord getH5Count(Integer productId); + + /** + * H5商品详情评论信息 + * @param proId 商品编号 + * @return ProductDetailReplyResponse + */ + ProductDetailReplyResponse getH5ProductReply(Integer proId); + + /** + * 移动端商品评论列表 + * @param proId 商品编号 + * @param type 评价等级|0=全部,1=好评,2=中评,3=差评 + * @param pageParamRequest 分页参数 + * @return PageInfo + */ + PageInfo getH5List(Integer proId, Integer type, PageParamRequest pageParamRequest); + + /** + * 删除评论 + * @param id 评论id + * @return Boolean + */ + Boolean delete(Integer id); + + /** + * 商品评论回复 + * @param request 回复参数 + */ + Boolean comment(StoreProductReplyCommentRequest request); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductRuleService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductRuleService.java new file mode 100644 index 0000000..e37ded8 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductRuleService.java @@ -0,0 +1,46 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.model.product.StoreProductRule; +import com.zbkj.common.request.StoreProductRuleRequest; +import com.zbkj.common.request.StoreProductRuleSearchRequest; + +import java.util.List; + +/** + * StoreProductRuleService 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface StoreProductRuleService extends IService { + + /** + * 商品规格列表 + * @param request 查询参数 + * @param pageParamRequest 分页参数 + * @return List + */ + List getList(StoreProductRuleSearchRequest request, PageParamRequest pageParamRequest); + + /** + * 新增商品规格 + * @param storeProductRuleRequest 规格参数 + * @return 新增结果 + */ + boolean save(StoreProductRuleRequest storeProductRuleRequest); + + /** + * 修改规格 + * @param storeProductRuleRequest 规格参数 + * @return Boolean + */ + Boolean updateRule(StoreProductRuleRequest storeProductRuleRequest); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductService.java new file mode 100644 index 0000000..4827049 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductService.java @@ -0,0 +1,222 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.model.product.StoreProduct; +import com.zbkj.common.request.*; +import com.zbkj.common.response.StoreProductInfoResponse; +import com.zbkj.common.response.StoreProductResponse; +import com.zbkj.common.response.StoreProductTabsHeader; +import com.zbkj.common.vo.MyRecord; +import com.github.pagehelper.PageInfo; +import org.json.JSONException; + +import java.io.IOException; +import java.util.List; + +/** + * StoreProductService 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface StoreProductService extends IService { + + /** + * 获取产品列表Admin + * @param request 筛选参数 + * @param pageParamRequest 分页参数 + * @return PageInfo + */ + PageInfo getAdminList(StoreProductSearchRequest request, PageParamRequest pageParamRequest); + + /** + * 根据id集合获取商品信息 + * @param productIds id集合 + * @return 商品信息 + */ + List getListInIds(List productIds); + + /** + * 新增商品 + * @param request 商品请求对象 + * @return Boolean + */ + Boolean save(StoreProductAddRequest request); + + /** + * 更新商品信息 + * @param storeProductRequest 商品参数 + * @return 更新结果 + */ + Boolean update(StoreProductAddRequest storeProductRequest); + + /** + * 产品详情 + * @param id 商品id + * @return StoreProductResponse + */ + StoreProductResponse getByProductId(Integer id); + + /** + * 商品详情(管理端) + * @param id 商品id + * @return StoreProductInfoResponse + */ + StoreProductInfoResponse getInfo(Integer id); + + /** + * 获取tabsHeader对应数量 + * @return List + */ + List getTabsHeader(); + + /** + * 根据其他平台url导入产品信息 + * @param url 待倒入平台的url + * @param tag 待导入平台标识 + * @return 待导入的商品信息 + */ + StoreProductRequest importProductFromUrl(String url, int tag) throws IOException, JSONException; + + List getSecondaryCategoryByProductId(String productId); + + /** + * 删除商品 + * @param productId 商品id + * @param type 类型:recycle——回收站 delete——彻底删除 + * @return 删除结果 + */ + Boolean deleteProduct(Integer productId, String type); + + /** + * 恢复已删除商品 + * @param productId 商品id + * @return 恢复结果 + */ + Boolean reStoreProduct(Integer productId); + + /** + * 后台任务批量操作库存 + */ + void consumeProductStock(); + + /** + * 扣减库存任务操作 + * @param storeProductStockRequest 扣减库存参数 + * @return 执行结果 + */ + boolean doProductStock(StoreProductStockRequest storeProductStockRequest); + + /** + * 获取复制商品配置 + */ + MyRecord copyConfig(); + + /** + * 复制平台商品 + * @param url 商品链接 + * @return + */ + MyRecord copyProduct(String url); + + /** + * 添加/扣减库存 + * @param id 商品id + * @param num 数量 + * @param type 类型:add—添加,sub—扣减 + */ + Boolean operationStock(Integer id, Integer num, String type); + + /** + * 下架 + * @param id 商品id + */ + Boolean offShelf(Integer id); + + /** + * 上架 + * @param id 商品id + * @return Boolean + */ + Boolean putOnShelf(Integer id); + + /** + * 首页商品列表 + * @param type 类型 【1 精品推荐 2 热门榜单 3首发新品 4促销单品】 + * @param pageParamRequest 分页参数 + * @return CommonPage + */ + List getIndexProduct(Integer type, PageParamRequest pageParamRequest); + + /** + * 获取商品移动端列表 + * @param request 筛选参数 + * @param pageRequest 分页参数 + * @return List + */ + List findH5List(ProductRequest request, PageParamRequest pageRequest); + + /** + * 获取移动端商品详情 + * @param id 商品id + * @return StoreProduct + */ + StoreProduct getH5Detail(Integer id); + + /** + * 获取购物车商品信息 + * @param productId 商品编号 + * @return StoreProduct + */ + StoreProduct getCartByProId(Integer productId); + + /** + * 根据日期获取新增商品数量 + * @param date 日期,yyyy-MM-dd格式 + * @return Integer + */ + Integer getNewProductByDate(String date); + + /** + * 获取所有未删除的商品 + * @return List + */ + List findAllProductByNotDelte(); + + /** + * 模糊搜索商品名称 + * @param productName 商品名称 + * @return List + */ + List likeProductName(String productName); + + /** + * 警戒库存数量 + * @return Integer + */ + Integer getVigilanceInventoryNum(); + + /** + * 销售中(上架)商品数量 + * @return Integer + */ + Integer getOnSaleNum(); + + /** + * 未销售(仓库)商品数量 + * @return Integer + */ + Integer getNotSaleNum(); + + /** + * 获取商品排行榜 + * @return List + */ + List getLeaderboard(); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreSeckillMangerService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreSeckillMangerService.java new file mode 100644 index 0000000..020add2 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreSeckillMangerService.java @@ -0,0 +1,87 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.model.seckill.StoreSeckillManger; +import com.zbkj.common.request.StoreSeckillMangerRequest; +import com.zbkj.common.request.StoreSeckillMangerSearchRequest; +import com.zbkj.common.response.StoreSeckillManagerResponse; + +import java.util.List; + +/** + * StoreSeckillMangerService 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface StoreSeckillMangerService extends IService { + + /** + * 秒杀配置列表 + * @param request 查询参数 + * @param pageParamRequest 分页参数 + * @return List + */ + List getList(StoreSeckillMangerSearchRequest request, PageParamRequest pageParamRequest); + + /** + * 删除秒杀配置 逻辑删除 + * @param id 待删除id + * @return 删除结果 + */ + boolean deleteLogicById(int id); + + /** + * 详情 + * @param id 配置id + * @return 查询到的结果 + */ + StoreSeckillManagerResponse detail(int id); + + /** + * 获取正在秒杀的时间段 + * @return 正在秒杀的时间段 + */ + List getCurrentSeckillManager(); + + /** + * 更新秒杀配置状态 + * @param id id + * @param status 待更新状态 + * @return 结果 + */ + Boolean updateStatus(Integer id, Boolean status); + + /** + * 更新秒杀配置 + * @param id id + * @param storeSeckillMangerRequest 秒杀配置 + * @return 结果 + */ + Boolean update(Integer id, StoreSeckillMangerRequest storeSeckillMangerRequest); + + /** + * 获取移动端列表(正在进行和马上开始的秒杀) + * @return List + */ + List getH5List(); + + /** + * 获取所有秒杀配置 + * @return List + */ + List getAllList(); + + /** + * 添加秒杀配置 + * @param storeSeckillMangerRequest 配置参数 + */ + Boolean saveManger(StoreSeckillMangerRequest storeSeckillMangerRequest); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreSeckillService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreSeckillService.java new file mode 100644 index 0000000..837912a --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreSeckillService.java @@ -0,0 +1,129 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.request.StoreSeckillAddRequest; +import com.zbkj.common.request.StoreSeckillSearchRequest; +import com.github.pagehelper.PageInfo; +import com.zbkj.common.model.seckill.StoreSeckill; +import com.zbkj.common.response.*; + +import java.util.List; + +/** + * StoreSeckillService 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface StoreSeckillService extends IService { + + /** + * 秒杀产品列表 + * @param request 查询参数 + * @param pageParamRequest 分页参数 + * @return PageInfo + */ + PageInfo getList(StoreSeckillSearchRequest request, PageParamRequest pageParamRequest); + + /** + * 逻辑删除 + * @param id 秒杀id + * @return 删除结果 + */ + Boolean deleteById(Integer id); + + /** + * 新增秒杀商品 + * @param request 待新增秒杀商品 + * @return 新增结果 + */ + Boolean saveSeckill(StoreSeckillAddRequest request); + + /** + * 秒杀商品详情 H5 + * @param skillId 秒杀商品id + * @return 详情 + */ + StoreSeckillDetailResponse getDetailH5(Integer skillId); + + /** + * 秒杀商品详情 管理端 + * @param skillId 秒杀id + * @return 详情数据 + */ + StoreProductInfoResponse getDetailAdmin(Integer skillId); + + /** + * 更新秒杀商品 + * @param request 待更新秒杀商品 + * @return 更新结果 + */ + Boolean updateSeckill(StoreSeckillAddRequest request); + + /** + * 更新秒杀状态 + * @param secKillId 秒杀id + * @param status 秒杀状态 + * @return 更新结果 + */ + Boolean updateSecKillStatus(int secKillId,boolean status); + + /** + * 移动端 获取秒杀配置 + * @return 秒杀配置 + */ + List getForH5Index(); + + /** + * 根据秒杀时间段查询已配置的秒杀商品 + * @param timeId 秒杀id + * @return 秒杀中的商品 + */ + List getKillListByTimeId(String timeId, PageParamRequest pageParamRequest); + + /** + * 根据商品id查询正在秒杀的商品信息 + * @param productId 商品id + * @return 正在参与的秒杀信息 + */ + List getCurrentSecKillByProductId(Integer productId); + + /** + * 后台任务批量操作库存 + */ + void consumeProductStock(); + + /** + * 商品是否存在秒杀活动 + * @param productId 商品编号 + */ + Boolean isExistActivity(Integer productId); + + /** + * 查询带异常 + * @param id 秒杀商品id + * @return StoreSeckill + */ + StoreSeckill getByIdException(Integer id); + + /** + * 添加/扣减库存 + * @param id 秒杀商品id + * @param num 数量 + * @param type 类型:add—添加,sub—扣减 + */ + Boolean operationStock(Integer id, Integer num, String type); + + /** + * 获取秒杀首页信息 + * @return SeckillIndexResponse + */ + SeckillIndexResponse getIndexInfo(); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemAdminService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemAdminService.java new file mode 100644 index 0000000..62a39e2 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemAdminService.java @@ -0,0 +1,86 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.model.system.SystemAdmin; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.request.SystemAdminAddRequest; +import com.zbkj.common.request.SystemAdminRequest; +import com.zbkj.common.request.SystemAdminUpdateRequest; +import com.zbkj.common.response.SystemAdminResponse; + +import java.util.HashMap; +import java.util.List; + +/** + * SystemAdminService 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface SystemAdminService extends IService { + + /** + * 后台管理员列表 + * @param request 请求参数 + * @param pageParamRequest 分页参数 + * @return List + */ + List getList(SystemAdminRequest request, PageParamRequest pageParamRequest); + + /** + * 新增管理员 + */ + Boolean saveAdmin(SystemAdminAddRequest systemAdminAddRequest); + + /** + * 更新管理员 + */ + Boolean updateAdmin(SystemAdminUpdateRequest systemAdminRequest); + + /** + * 修改后台管理员状态 + * @param id 管理员id + * @param status 状态 + * @return Boolean + */ + Boolean updateStatus(Integer id, Boolean status); + + /** + * 根据idList获取Map + * @param adminIdList id数组 + * @return HashMap + */ + HashMap getMapInId(List adminIdList); + + /** + * 修改后台管理员是否接收状态 + * @param id 管理员id + * @return Boolean + */ + Boolean updateIsSms(Integer id); + + /** + * 获取可以接收短信的管理员 + */ + List findIsSmsList(); + + /** + * 管理员详情 + * @param id 管理员id + * @return SystemAdmin + */ + SystemAdmin getDetail(Integer id); + + /** + * 通过用户名获取用户 + * @param username 用户名 + * @return SystemAdmin + */ + SystemAdmin selectUserByUserName(String username); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemAttachmentService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemAttachmentService.java new file mode 100644 index 0000000..8831ef1 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemAttachmentService.java @@ -0,0 +1,79 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.model.system.SystemAttachment; +import com.zbkj.common.request.SystemAttachmentMoveRequest; +import com.zbkj.common.request.SystemAttachmentRequest; + +import java.util.List; + +/** + * SystemAttachmentService 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface SystemAttachmentService extends IService { + + /** + * 同步到云服务, 更新图片上传类型 + * @param attId Integer 主键id + * @param type int 图片上传类型 1本地 2七牛云 3OSS 4COS + */ + void updateCloudType(Integer attId, int type); + + /** + * 附件分页 + * @param pid Integer pid + * @param attType 格式png,jpeg,jpg,audio/mpeg,text/plain,video/mp4,gif + * @param pageParamRequest PageParamRequest 分页参数 + * @return List + */ + List getList(Integer pid, String attType, PageParamRequest pageParamRequest); + + /** + * 给图片加前缀 + * @param path String 路径 + * @return String + */ + String prefixImage(String path); + + /** + * 给文件加前缀 + * @param path String 路径 + * @return String + */ + String prefixFile(String path); + + /** + * 清除 cdn url, 在保存数据的时候使用 + * @param path String 文件路径 + * @return String + */ + String clearPrefix(String path); + + /** + * 新增附件 + * @param systemAttachmentRequest 新增参数 + */ + Boolean add(SystemAttachmentRequest systemAttachmentRequest); + + /** + * 编辑附件 + * @param systemAttachmentRequest 更新参数 + */ + Boolean edit(SystemAttachmentRequest systemAttachmentRequest); + + /** + * 更改图片目录 + * @param move 参数 + */ + Boolean updateAttrId(SystemAttachmentMoveRequest move); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemCityAsyncService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemCityAsyncService.java new file mode 100644 index 0000000..e281aaa --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemCityAsyncService.java @@ -0,0 +1,26 @@ +package com.zbkj.service.service; + +/** + * SystemCityAsyncService 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface SystemCityAsyncService { + + /** + * 数据整体刷入redis + */ + void async(Integer id); + + /** + * 设置属性列表进入redis + */ + void setListTree(); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemCityService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemCityService.java new file mode 100644 index 0000000..0b7dfeb --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemCityService.java @@ -0,0 +1,69 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.model.system.SystemCity; +import com.zbkj.common.request.SystemCityRequest; +import com.zbkj.common.request.SystemCitySearchRequest; +import com.zbkj.common.vo.SystemCityTreeVo; + +import java.util.List; + +/** + * SystemCityService 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface SystemCityService extends IService { + + /** + * 分页城市列表 + * @param request 搜索条件 + */ + Object getList(SystemCitySearchRequest request); + + /** + * 修改状态 + * @param id 城市id + * @param status 状态 + */ + Boolean updateStatus(Integer id, Boolean status); + + /** + * 修改城市 + * @param id 城市id + * @param request 修改参数 + */ + Boolean update(Integer id, SystemCityRequest request); + + /** + * 获取城市树 + */ + List getListTree(); + + /** + * 获取所有城市cityId + * @return List + */ + List getCityIdList(); + + /** + * 获取城市 + * @param cityId 城市id + * @return SystemCity + */ + SystemCity getCityByCityId(Integer cityId); + + /** + * 根据城市名称获取城市详细数据 + * @param cityName 城市名称 + * @return 城市数据 + */ + SystemCity getCityByCityName(String cityName); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemConfigService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemConfigService.java new file mode 100644 index 0000000..9c627c0 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemConfigService.java @@ -0,0 +1,101 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.request.SystemConfigAdminRequest; +import com.zbkj.common.request.SystemFormCheckRequest; +import com.zbkj.common.vo.ExpressSheetVo; +import com.zbkj.common.model.system.SystemConfig; + +import java.util.HashMap; +import java.util.List; + +/** + * SystemConfigService 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface SystemConfigService extends IService { + + /** + * 根据menu name 获取 value + * @param key menu name + * @return String + */ + String getValueByKey(String key); + + /** + * 同时获取多个配置 + * @param keys 多个配置key + * @return 查询到的多个结果 + */ + List getValuesByKes(List keys); + + /** + * 保存或更新配置数据 + * @param name 菜单名称 + * @param value 菜单值 + * @return Boolean + */ + Boolean updateOrSaveValueByName(String name, String value); + + /** + * 根据 name 获取 value 找不到抛异常 + * @param key menu name + * @return String + */ + String getValueByKeyException(String key); + + /** + * 整体保存表单数据 + * @param systemFormCheckRequest SystemFormCheckRequest 数据保存 + * @return Boolean + */ + Boolean saveForm(SystemFormCheckRequest systemFormCheckRequest); + + /** + * 根据formId查询数据 + * @param formId Integer id + * @return HashMap + */ + HashMap info(Integer formId); + + /** + * 根据name查询数据 + * @param name name + * @return Boolean + */ + Boolean checkName(String name); + + /** + * 根据key获取配置 + * @param key key + * @return List + */ + List getListByKey(String key); + + /** + * 获取面单默认配置信息 + * @return ExpressSheetVo + */ + ExpressSheetVo getDeliveryInfo(); + + /** + * 更新配置信息 + * @param requestList 请求数组 + * @return Boolean + */ + Boolean updateByList(List requestList); + + /** + * 获取颜色配置 + * @return SystemConfig + */ + SystemConfig getColorConfig(); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemFormTempService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemFormTempService.java new file mode 100644 index 0000000..2d76a44 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemFormTempService.java @@ -0,0 +1,52 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.model.system.SystemFormTemp; +import com.zbkj.common.request.SystemFormCheckRequest; +import com.zbkj.common.request.SystemFormTempRequest; +import com.zbkj.common.request.SystemFormTempSearchRequest; + +import java.util.List; + +/** + * SystemFormTempService 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface SystemFormTempService extends IService { + + /** + * 列表 + * @param request 请求参数 + * @param pageParamRequest 分页类参数 + * @return List + */ + List getList(SystemFormTempSearchRequest request, PageParamRequest pageParamRequest); + + /** + * 验证item规则 + * @param systemFormCheckRequest SystemFormCheckRequest 表单数据提交 + */ + void checkForm(SystemFormCheckRequest systemFormCheckRequest); + + /** + * 新增表单模板 + * @param systemFormTempRequest 新增参数 + */ + Boolean add(SystemFormTempRequest systemFormTempRequest); + + /** + * 修改表单模板 + * @param id integer id + * @param systemFormTempRequest 修改参数 + */ + Boolean edit(Integer id, SystemFormTempRequest systemFormTempRequest); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemGroupDataService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemGroupDataService.java new file mode 100644 index 0000000..de6e1e3 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemGroupDataService.java @@ -0,0 +1,81 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.model.system.SystemGroupData; +import com.zbkj.common.request.SystemGroupDataRequest; +import com.zbkj.common.request.SystemGroupDataSearchRequest; + +import java.util.HashMap; +import java.util.List; + +/** + * SystemGroupDataService 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface SystemGroupDataService extends IService { + + /** + * 分页组合数据详情 + * @param request 搜索条件 + * @param pageParamRequest 分页参数 + */ + List getList(SystemGroupDataSearchRequest request, PageParamRequest pageParamRequest); + + /** + * 新增组合数据详情 + * @param systemGroupDataRequest SystemFormCheckRequest 新增参数 + */ + Boolean create(SystemGroupDataRequest systemGroupDataRequest); + + /** + * 修改组合数据详情表 + * @param id integer id + * @param request 修改参数 + */ + Boolean update(Integer id, SystemGroupDataRequest request); + + /** + * 通过gid获取列表 推荐二开使用 + * @param gid Integer group id + * @return List + */ + List getListByGid(Integer gid, Class cls); + + List> getListMapByGid(Integer gid); + + /** + * 通过gid获取列表 + * @param groupDataId Integer group id + * @return + */ + T getNormalInfo(Integer groupDataId, Class cls); + + /** + * 获取个人中心菜单 + * @return HashMap + */ + HashMap getMenuUser(); + + /** + * 获取列表通过gid + * @param gid gid + * @return 列表 + */ + List findListByGid(Integer gid); + + /** + * 删除通过gid + * @param gid gid + * @return Boolean + */ + Boolean deleteByGid(Integer gid); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemGroupService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemGroupService.java new file mode 100644 index 0000000..a4aa89b --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemGroupService.java @@ -0,0 +1,50 @@ +package com.zbkj.service.service; + +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.model.system.SystemGroup; +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.request.SystemGroupRequest; +import com.zbkj.common.request.SystemGroupSearchRequest; + +import java.util.List; + +/** + * SystemGroupService 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface SystemGroupService extends IService { + + /** + * 分页显示组合数据表 + * @param request 搜索条件 + * @param pageParamRequest 分页参数 + */ + List getList(SystemGroupSearchRequest request, PageParamRequest pageParamRequest); + + /** + * 新增组合数据 + * @param systemGroupRequest 新增参数 + */ + Boolean add(SystemGroupRequest systemGroupRequest); + + /** + * 删除组合数据表 + * @param id Integer + */ + Boolean delete(Integer id); + + /** + * 修改组合数据表 + * @param id integer id + * @param systemGroupRequest 修改参数 + */ + Boolean edit(Integer id, SystemGroupRequest systemGroupRequest); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemMenuService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemMenuService.java new file mode 100644 index 0000000..bf03736 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemMenuService.java @@ -0,0 +1,107 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.model.system.SystemMenu; +import com.zbkj.common.request.SystemMenuRequest; +import com.zbkj.common.request.SystemMenuSearchRequest; +import com.zbkj.common.vo.MenuCheckVo; + +import java.util.List; + +/** + * SystemMenuService 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface SystemMenuService extends IService { + + /** + * 通过权限获取管理员可访问目录 + * @return List + */ + List findCatalogueByPermission(List permissionsList); + + /** + * 获取所有菜单 + * @return List + */ + List findAllCatalogue(); + + /** + * 菜单列表 + * @param request 请求参数 + */ + List getAdminList(SystemMenuSearchRequest request); + + /** + * 新增菜单 + * @param systemMenuRequest 菜单参数 + * @return Boolean + */ + Boolean add(SystemMenuRequest systemMenuRequest); + + /** + * 根据id删除菜单 + * @param id 菜单id + * @return Boolean + */ + Boolean deleteById(Integer id); + + /** + * 修改菜单 + * @param systemMenuRequest 菜单参数 + * @return Boolean + */ + Boolean edit(SystemMenuRequest systemMenuRequest); + + /** + * 获取菜单详情 + * @param id 菜单id + * @return SystemMenu + */ + SystemMenu getInfo(Integer id); + + /** + * 修改菜单显示状态 + * @param id 菜单id + * @return Boolean + */ + Boolean updateShowStatus(Integer id); + + /** + * 获取菜单缓存列表 + * @return List + */ + List getCacheList(); + + /** + * 菜单缓存树 + * @return List + */ + List getCacheTree(); + + /** + * 获取所有权限 + * @return List + */ + List getAllPermissions(); + + /** + * 通过用户id获取权限 + */ + List findPermissionByUserId(Integer userId); + + /** + * 获取用户路由 + * @param userId 用户id + * @return List + */ + List getMenusByUserId(Integer userId); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemNotificationService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemNotificationService.java new file mode 100644 index 0000000..9892850 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemNotificationService.java @@ -0,0 +1,88 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.model.system.SystemNotification; +import com.zbkj.common.model.wechat.TemplateMessage; +import com.zbkj.common.request.NotificationInfoRequest; +import com.zbkj.common.request.NotificationSearchRequest; +import com.zbkj.common.request.NotificationUpdateRequest; +import com.zbkj.common.response.NotificationInfoResponse; + +import java.util.List; + +/** + * 短信模板表 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface SystemNotificationService extends IService { + + /** + * 系统通知列表 + * @param request 查询对象 + * @return List + */ + List getList(NotificationSearchRequest request); + + /** + * 公众号模板开关 + * @param id 通知id + * @return Boolean + */ + Boolean wechatSwitch(Integer id); + + /** + * 小程序订阅模板开关 + * @param id 通知id + * @return Boolean + */ + Boolean routineSwitch(Integer id); + + /** + * 发送短信开关 + * @param id 通知id + * @return Boolean + */ + Boolean smsSwitch(Integer id); + + /** + * 通知详情 + * @param request 详情请求参数 + * @return NotificationInfoResponse + */ + NotificationInfoResponse getDetail(NotificationInfoRequest request); + + /** + * 根据标识查询信息 + * @param mark 标识 + * @return SystemNotification + */ + SystemNotification getByMark(String mark); + + /** + * 获取微信相关列表 + * @param type routine-小程序,public-公众号 + */ + List getListByWechat(String type); + + /** + * 修改通知 + * @param request 请求参数 + * @return Boolean + */ + Boolean modify(NotificationUpdateRequest request); + + /** + * 获取小程序订阅模板编号(小程序端调用) + * @param type 场景类型(支付之前:beforePay|支付成功:afterPay|申请退款:refundApply|充值之前:beforeRecharge|创建砍价:createBargain|参与拼团:pink|取消拼团:cancelPink) + * @return List + */ + List getMiniTempList(String type); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemRoleMenuService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemRoleMenuService.java new file mode 100644 index 0000000..403bb2d --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemRoleMenuService.java @@ -0,0 +1,35 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.model.system.SystemRoleMenu; + +import java.util.List; + +/** + * SystemRoleMenuService 接口 + * 角色菜单关联服务 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface SystemRoleMenuService extends IService { + + /** + * 通过角色id删除 + * @param rid 角色id + */ + Boolean deleteByRid(Integer rid); + + /** + * 通过角色id获取菜单列表 + * @param rid 角色id + * @return List + */ + List getMenuListByRid(Integer rid); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemRoleService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemRoleService.java new file mode 100644 index 0000000..b4edc61 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemRoleService.java @@ -0,0 +1,84 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.model.system.SystemRole; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.request.SystemRoleRequest; +import com.zbkj.common.request.SystemRoleSearchRequest; +import com.zbkj.common.response.RoleInfoResponse; +import com.zbkj.common.vo.CategoryTreeVo; + +import java.util.List; + +/** + * SystemRoleService 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface SystemRoleService extends IService { + + /** + * 获取所有角色 + * @return List + */ + List getAllList(); + + /** + * 列表 + * @param request 请求参数 + * @param pageParamRequest 分页类参数 + * @return List + */ + List getList(SystemRoleSearchRequest request, PageParamRequest pageParamRequest); + + /** + * 根据id集合获取对应权限列表 + * @param ids id集合 + * @return 对应的权限列表 + */ + List getListInIds(List ids); + + /** + * 管理员菜单权限 + */ + List menu(); + + /** + * 修改身份状态 + */ + Boolean updateStatus(Integer id, Boolean status); + + /** + * 添加身份 + * @param systemRoleRequest 身份参数 + * @return Boolean + */ + Boolean add(SystemRoleRequest systemRoleRequest); + + /** + * 修改身份管理表 + * @param systemRoleRequest 修改参数 + */ + Boolean edit(SystemRoleRequest systemRoleRequest); + + /** + * 删除角色 + * @param id 角色id + * @return Boolean + */ + Boolean delete(Integer id); + + /** + * 获取角色详情 + * @param id 角色id + * @return RoleInfoResponse + */ + RoleInfoResponse getInfo(Integer id); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemStoreService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemStoreService.java new file mode 100644 index 0000000..8f6c9fd --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemStoreService.java @@ -0,0 +1,97 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.model.system.SystemStore; +import com.zbkj.common.request.StoreNearRequest; +import com.zbkj.common.request.SystemStoreRequest; +import com.zbkj.common.response.StoreNearResponse; + +import java.util.HashMap; +import java.util.List; + +/** + * SystemStoreService 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface SystemStoreService extends IService { + + /** + * 门店自提分页列表 + * @param keywords 搜索条件 + * @param status 状态 + * @param pageParamRequest 分页参数 + * @return List + */ + List getList(String keywords, Integer status, PageParamRequest pageParamRequest); + + /** + * 根据基本参数获取 + * @param systemStore 基本参数 + * @return 门店自提结果 + */ + SystemStore getByCondition(SystemStore systemStore); + + /** + * 修改门店显示状态 + * @param id integer id + * @param status 状态 + */ + Boolean updateStatus(Integer id, Boolean status); + + /** + * 删除门店自提 + * @param id Integer + */ + Boolean delete(Integer id); + + /** + * 表头数量 + * @return HashMap + */ + HashMap getCount(); + + HashMap getMapInId(List storeIdList); + + StoreNearResponse getNearList(StoreNearRequest request, PageParamRequest pageParamRequest); + + /** + * 新增门店自提 + * @param request SystemStoreRequest 新增参数 + */ + Boolean create(SystemStoreRequest request); + + /** + * 修改门店自提 + * @param id integer id + * @param request 修改参数 + */ + Boolean update(Integer id, SystemStoreRequest request); + + /** + * 彻底删除 + * @param id 提货点编号 + */ + Boolean completeLyDelete(Integer id); + + /** + * 提货点恢复 + * @param id 提货点编号 + */ + Boolean recovery(Integer id); + + /** + * 门店自提详情 + * @param id Integer + * @return SystemStore + */ + SystemStore getInfo(Integer id); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemStoreStaffService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemStoreStaffService.java new file mode 100644 index 0000000..bc2b475 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemStoreStaffService.java @@ -0,0 +1,52 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.request.SystemStoreStaffRequest; +import com.zbkj.common.response.SystemStoreStaffResponse; +import com.github.pagehelper.PageInfo; +import com.zbkj.common.model.system.SystemStoreStaff; + +/** + * SystemStoreStaffService 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface SystemStoreStaffService extends IService { + + /** + * 分页显示门店核销员列表 + * @param storeId 门店id + * @param pageParamRequest 分页参数 + */ + PageInfo getList(Integer storeId, PageParamRequest pageParamRequest); + + /** + * 添加核销员 唯一验证 + * @param request 当前添加参数 + * @return 添加结果 + */ + Boolean saveUnique(SystemStoreStaffRequest request); + + /** + * 更新核销员信息 + * @param id 核销员id + * @param systemStoreStaffRequest 更新参数 + */ + Boolean edit(Integer id, SystemStoreStaffRequest systemStoreStaffRequest); + + /** + * 修改核销员状态 + * @param id 核销员id + * @param status 状态 + * @return Boolean + */ + Boolean updateStatus(Integer id, Integer status); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemUserLevelService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemUserLevelService.java new file mode 100644 index 0000000..a79f6dd --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemUserLevelService.java @@ -0,0 +1,69 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.model.system.SystemUserLevel; +import com.zbkj.common.request.SystemUserLevelRequest; +import com.zbkj.common.request.SystemUserLevelUpdateShowRequest; + +import java.util.List; + +/** + * SystemUserLevelService 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface SystemUserLevelService extends IService { + + /** + * 获取等级列表 + */ + List getList(); + + /** + * 系统等级新增 + * @param request request + * @return Boolean + */ + Boolean create(SystemUserLevelRequest request); + + /** + * 系统等级更新 + * @param id 等级id + * @param request 等级数据 + * @return Boolean + */ + Boolean update(Integer id, SystemUserLevelRequest request); + + SystemUserLevel getByLevelId(Integer levelId); + + /** + * 获取系统等级列表(移动端) + */ + List getH5LevelList(); + + /** + * 删除系统等级 + * @param id 等级id + * @return Boolean + */ + Boolean delete(Integer id); + + /** + * 使用/禁用 + * @param request request + */ + Boolean updateShow(SystemUserLevelUpdateShowRequest request); + + /** + * 获取可用等级列表 + * @return List + */ + List getUsableList(); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/TemplateMessageService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/TemplateMessageService.java new file mode 100644 index 0000000..fe80416 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/TemplateMessageService.java @@ -0,0 +1,80 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.model.wechat.TemplateMessage; + +import java.util.HashMap; +import java.util.List; + +/** + * TemplateMessageService 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface TemplateMessageService extends IService { + + /** + * 公众号消费队列消费 + */ + void consumePublic(); + + /** + * 小程序消费队列消费 + */ + void consumeProgram(); + + /** + * 发送公众号模板消息 + * @param templateId 模板消息编号 + * @param temMap 内容Map + * @param openId 微信用户openId + */ + void pushTemplateMessage(Integer templateId, HashMap temMap, String openId); + + /** + * 发送小程序订阅消息 + * @param templateId 模板消息编号 + * @param temMap 内容Map + * @param openId 微信用户openId + */ + void pushMiniTemplateMessage(Integer templateId, HashMap temMap, String openId); + + /** + * 修改模板状态 + * @param id 模板id + * @param status 状态 + */ + Boolean updateStatus(Integer id, Integer status); + + /** + * 公众号模板消息同步 + * @return Boolean + */ + Boolean whcbqhnSync(); + + /** + * 小程序订阅消息同步 + * @return Boolean + */ + Boolean routineSync(); + + /** + * 获取详情 + * @param id id + */ + TemplateMessage info(Integer id); + + /** + * 获取模板列表 + * @param tidList id数组 + * @return List + */ + List getByIdList(List tidList); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UploadService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UploadService.java new file mode 100644 index 0000000..a6a87ed --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UploadService.java @@ -0,0 +1,39 @@ +package com.zbkj.service.service; + +import com.zbkj.common.vo.FileResultVo; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; + +/** + * UploadService 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface UploadService { + + /** + * 图片上传 + * @param multipartFile 文件 + * @param model 模块 用户user,商品product,微信wechat,news文章 + * @param pid 分类ID 0编辑器,1商品图片,2拼团图片,3砍价图片,4秒杀图片,5文章图片,6组合数据图,7前台用户,8微信系列 + * @return FileResultVo + */ + FileResultVo imageUpload(MultipartFile multipartFile, String model, Integer pid) throws IOException; + + /** + * 文件长传 + * @param multipartFile 文件 + * @param model 模块 用户user,商品product,微信wechat,news文章 + * @param pid 分类ID 0编辑器,1商品图片,2拼团图片,3砍价图片,4秒杀图片,5文章图片,6组合数据图,7前台用户,8微信系列 + * @return FileResultVo + */ + FileResultVo fileUpload(MultipartFile multipartFile, String model, Integer pid) throws IOException; +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserAddressService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserAddressService.java new file mode 100644 index 0000000..98dd337 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserAddressService.java @@ -0,0 +1,68 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.model.user.UserAddress; +import com.zbkj.common.request.UserAddressRequest; + +import java.util.List; + +/** + * UserAddressService 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface UserAddressService extends IService { + + /** + * 用户地址列表 + * @param pageParamRequest 分页参数 + * @return List + */ + List getList(PageParamRequest pageParamRequest); + + /** + * 添加用户地址 + * @param request 地址请求参数 + * @return UserAddress + */ + UserAddress create(UserAddressRequest request); + + /** + * 设置默认地址 + * @param id 地址id + * @return Boolean + */ + Boolean def(Integer id); + + /** + * 删除用户地址 + * @param id 地址id + * @return Boolean + */ + Boolean delete(Integer id); + + UserAddress getDefault(); + + UserAddress getById(Integer addressId); + + /** + * 获取地址详情 + * @param id 地址id + * @return UserAddress + */ + UserAddress getDetail(Integer id); + + /** + * 获取默认地址 + * @return UserAddress + */ + UserAddress getDefaultByUid(Integer uid); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserBillService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserBillService.java new file mode 100644 index 0000000..9c4bd93 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserBillService.java @@ -0,0 +1,75 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.request.PageParamRequest; +import com.github.pagehelper.PageInfo; +import com.zbkj.common.request.FundsMonitorRequest; +import com.zbkj.common.request.FundsMonitorSearchRequest; +import com.zbkj.common.response.MonitorResponse; +import com.zbkj.common.request.StoreOrderRefundRequest; +import com.zbkj.common.model.user.User; +import com.zbkj.common.model.user.UserBill; + +import java.math.BigDecimal; +import java.util.List; + +/** + * UserBillService 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface UserBillService extends IService { + + /** + * 列表 + * + * @param request 请求参数 + * @param pageParamRequest 分页类参数 + * @return List + */ + List getList(FundsMonitorSearchRequest request, PageParamRequest pageParamRequest); + + /** + * 新增/消耗 总金额 + * + * @param pm Integer 0 = 支出 1 = 获得 + * @param userId Integer 用户uid + * @param category String 类型 + * @param date String 时间范围 + * @param type String 小类型 + * @return UserBill + */ + BigDecimal getSumBigDecimal(Integer pm, Integer userId, String category, String date, String type); + + /** + * 保存退款日志 + * + * @return boolean + */ + Boolean saveRefundBill(StoreOrderRefundRequest request, User user); + + /** + * 资金监控 + * + * @param request 查询参数 + * @param pageParamRequest 分页参数 + * @return PageInfo + */ + PageInfo fundMonitoring(FundsMonitorRequest request, PageParamRequest pageParamRequest); + + /** + * 用户账单记录(现金) + * + * @param uid 用户uid + * @param type 记录类型:all-全部,expenditure-支出,income-收入 + * @return PageInfo + */ + PageInfo nowMoneyBillRecord(Integer uid, String type, PageParamRequest pageRequest); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserBrokerageRecordService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserBrokerageRecordService.java new file mode 100644 index 0000000..a160d6b --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserBrokerageRecordService.java @@ -0,0 +1,149 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.response.SpreadCommissionDetailResponse; +import com.github.pagehelper.PageInfo; +import com.zbkj.common.request.BrokerageRecordRequest; +import com.zbkj.common.request.RetailShopStairUserRequest; +import com.zbkj.common.model.user.UserBrokerageRecord; + +import java.math.BigDecimal; +import java.util.List; +import java.util.Map; + +/** + * 用户佣金记录服务接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface UserBrokerageRecordService extends IService { + + /** + * 获取记录列表 + * @param linkId 关联id + * @param linkType 关联类型 + * @return 记录列表 + */ + List findListByLinkIdAndLinkType(String linkId, String linkType); + + /** + * 获取记录(订单不可用此方法) + * @param linkId 关联id + * @param linkType 关联类型 + * @return 记录列表 + */ + UserBrokerageRecord getByLinkIdAndLinkType(String linkId, String linkType); + + /** + * 佣金解冻 + */ + void brokerageThaw(); + + /** + * 昨天得佣金 + * @param uid 用户uid + */ + BigDecimal getYesterdayIncomes(Integer uid); + + /** + * 获取佣金明细列表根据uid + * @param uid uid + * @param pageParamRequest 分页参数 + */ + PageInfo findDetailListByUid(Integer uid, PageParamRequest pageParamRequest); + + /** + * 获取累计推广条数 + * @param uid 用户uid + * @return Integer + */ + Integer getSpreadCountByUid(Integer uid); + + /** + * 获取推广记录列表 + * @param uid 用户uid + * @param pageParamRequest 分页参数 + * @return List + */ + List findSpreadListByUid(Integer uid, PageParamRequest pageParamRequest); + + /** + * 获取推广记录列表 + * @param request 用户uid + * @param pageParamRequest 分页参数 + * @return PageInfo + */ + PageInfo findAdminSpreadListByUid(RetailShopStairUserRequest request, PageParamRequest pageParamRequest); + + /** + * 获取月份对应的推广订单数 + * @param uid 用户uid + * @param monthList 月份列表 + * @return Map + */ + Map getSpreadCountByUidAndMonth(Integer uid, List monthList); + + /** + * 获取佣金排行榜(周、月) + * @param type week、month + * @return List + */ + List getBrokerageTopByDate(String type); + + /** + * 根据Uid和时间参数获取分佣记录列表 + * @param uid 用户uid + * @return List + */ + List getSpreadListByUid(Integer uid); + + /** + * 佣金总金额(单位时间) + * @param dateLimit 时间参数 + * @return BigDecimal + */ + BigDecimal getTotalSpreadPriceBydateLimit(String dateLimit); + + /** + * 单位时间消耗的佣金 + * @param dateLimit 时间参数 + * @return BigDecimal + */ + BigDecimal getSubSpreadPriceByDateLimit(String dateLimit); + + /** + * 获取冻结期佣金 + * @param uid uid + * @return BigDecimal + */ + BigDecimal getFreezePrice(Integer uid); + + /** + * 佣金记录列表 + * @param request 筛选条件 + * @param pageParamRequest 分页参数 + * @return PageInfo + */ + PageInfo getAdminList(BrokerageRecordRequest request, PageParamRequest pageParamRequest); + + /** + * 根据日期获取支付佣金金额(确认到账佣金) + * @param date 日期,yyyy-MM-dd格式 + * @return BigDecimal + */ + BigDecimal getBrokerageAmountByDate(String date); + + /** + * 获取累计佣金转余额金额 + * @return BigDecimal + */ + BigDecimal getTotalYuePrice(); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserExperienceRecordService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserExperienceRecordService.java new file mode 100644 index 0000000..3fccec0 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserExperienceRecordService.java @@ -0,0 +1,38 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.model.user.UserExperienceRecord; + +import java.util.List; + +/** + * 用户经验记录服务接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface UserExperienceRecordService extends IService { + + /** + * 获取用户经验列表(移动端) + * @param userId 用户id + * @param pageParamRequest 分页参数 + * @return List + */ + List getH5List(Integer userId, PageParamRequest pageParamRequest); + + /** + * 通过订单编号获取记录 + * @param orderNo 订单编号 + * @param uid uid + * @return UserExperienceRecord + */ + UserExperienceRecord getByOrderNoAndUid(String orderNo, Integer uid); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserExtractService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserExtractService.java new file mode 100644 index 0000000..7cfa67d --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserExtractService.java @@ -0,0 +1,84 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.response.UserExtractRecordResponse; +import com.github.pagehelper.PageInfo; +import com.zbkj.common.model.finance.UserExtract; +import com.zbkj.common.request.UserExtractRequest; +import com.zbkj.common.request.UserExtractSearchRequest; +import com.zbkj.common.response.BalanceResponse; +import com.zbkj.common.response.UserExtractResponse; + +import java.math.BigDecimal; +import java.util.List; + +/** +* UserExtractService 接口 +* +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- +*/ +public interface UserExtractService extends IService { + + List getList(UserExtractSearchRequest request, PageParamRequest pageParamRequest); + + /** + * 提现总金额 + */ + BalanceResponse getBalance(String dateLimit); + + /** + * 提现总金额 + * @author Mr.Zhang + * @since 2020-05-11 + * @return BalanceResponse + */ + BigDecimal getWithdrawn(String startTime,String endTime); + + UserExtractResponse getUserExtractByUserId(Integer userId); + + /** + * 提现审核 + * @param id 提现申请id + * @param status 审核状态 -1 未通过 0 审核中 1 已提现 + * @param backMessage 驳回原因 + * @return 审核结果 + */ + Boolean updateStatus(Integer id,Integer status,String backMessage); + + /** + * 获取提现记录列表 + * @param userId 用户uid + * @param pageParamRequest 分页参数 + * @return PageInfo + */ + PageInfo getExtractRecord(Integer userId, PageParamRequest pageParamRequest); + + BigDecimal getExtractTotalMoney(Integer userId); + + /** + * 提现申请 + * @return Boolean + */ + Boolean extractApply(UserExtractRequest request); + + /** + * 修改提现申请 + * @param id 申请id + * @param userExtractRequest 具体参数 + */ + Boolean updateExtract(Integer id, UserExtractRequest userExtractRequest); + + /** + * 提现申请待审核数量 + * @return Integer + */ + Integer getNotAuditNum(); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserFundsMonitorService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserFundsMonitorService.java new file mode 100644 index 0000000..e904eaf --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserFundsMonitorService.java @@ -0,0 +1,31 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.vo.UserFundsMonitor; +import com.github.pagehelper.PageInfo; +import com.zbkj.common.request.BrokerageRecordRequest; +import com.zbkj.common.model.user.UserBrokerageRecord; + +/** +* UserRechargeService 接口 +* +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- +*/ +public interface UserFundsMonitorService extends IService { + + /** + * 佣金记录 + * @param request 筛选条件 + * @param pageParamRequest 分页参数 + * @return PageInfo + */ + PageInfo getBrokerageRecord(BrokerageRecordRequest request, PageParamRequest pageParamRequest); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserGroupService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserGroupService.java new file mode 100644 index 0000000..d98c7cb --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserGroupService.java @@ -0,0 +1,45 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.model.user.UserGroup; +import com.zbkj.common.request.UserGroupRequest; + +import java.util.List; + +/** + * UserGroupService 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface UserGroupService extends IService { + + /** + * 会员-分组列表 + * @param pageParamRequest 分页参数 + * @return List + */ + List getList(PageParamRequest pageParamRequest); + + String getGroupNameInId(String groupIdValue); + + /** + * 新增用户分组 + * @param userGroupRequest 分组参数 + */ + Boolean create(UserGroupRequest userGroupRequest); + + /** + * 修改用户分组 + * @param id 分组id + * @param userGroupRequest 修改参数 + */ + Boolean edit(Integer id, UserGroupRequest userGroupRequest); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserIntegralRecordService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserIntegralRecordService.java new file mode 100644 index 0000000..3de6ef2 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserIntegralRecordService.java @@ -0,0 +1,71 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.request.AdminIntegralSearchRequest; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.response.UserIntegralRecordResponse; +import com.github.pagehelper.PageInfo; +import com.zbkj.common.model.user.UserIntegralRecord; + +import java.util.List; + +/** + * 用户积分记录Service + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface UserIntegralRecordService extends IService { + + /** + * 根据订单编号、uid获取记录列表 + * @param orderNo 订单编号 + * @param uid 用户uid + * @return 记录列表 + */ + List findListByOrderIdAndUid(String orderNo, Integer uid); + + /** + * 积分解冻 + */ + void integralThaw(); + + /** + * PC后台列表 + * @param request 搜索条件 + * @param pageParamRequest 分页参数 + * @return 记录列表 + */ + PageInfo findAdminList(AdminIntegralSearchRequest request, PageParamRequest pageParamRequest); + + /** + * 根据类型条件计算积分总数 + * @param uid 用户uid + * @param type 类型:1-增加,2-扣减 + * @param date 日期 + * @param linkType 关联类型 + * @return 积分总数 + */ + Integer getSumIntegral(Integer uid, Integer type, String date, String linkType); + + /** + * H5用户积分列表 + * @param uid 用户uid + * @param pageParamRequest 分页参数 + * @return List + */ + List findUserIntegralRecordList(Integer uid, PageParamRequest pageParamRequest); + + /** + * 获取用户冻结的积分 + * @param uid 用户uid + * @return 积分数量 + */ + Integer getFrozenIntegralByUid(Integer uid); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserLevelService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserLevelService.java new file mode 100644 index 0000000..9544947 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserLevelService.java @@ -0,0 +1,52 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.model.user.User; +import com.zbkj.common.model.user.UserLevel; + +import java.util.List; + +/** + * UserLevelService 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface UserLevelService extends IService { + + /** + * 用户等级列表 + * @param pageParamRequest 分页参数 + * @return List + */ + List getList(PageParamRequest pageParamRequest); + + /** + * 经验升级 + * @param user 用户 + * @return Boolean + */ + Boolean upLevel(User user); + + /** + * 经验降级 + * @param user 用户 + * @return Boolean + */ + Boolean downLevel(User user); + + /** + * 删除(通过系统等级id) + * @param levelId 系统等级id + * @return Boolean + */ + Boolean deleteByLevelId(Integer levelId); + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserRechargeService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserRechargeService.java new file mode 100644 index 0000000..a5607d4 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserRechargeService.java @@ -0,0 +1,83 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.request.PageParamRequest; +import com.github.pagehelper.PageInfo; +import com.zbkj.common.model.finance.UserRecharge; +import com.zbkj.common.request.UserRechargeSearchRequest; +import com.zbkj.common.response.UserRechargeResponse; + +import java.math.BigDecimal; +import java.util.HashMap; + +/** +* UserRechargeService 接口 +* +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- +*/ +public interface UserRechargeService extends IService { + + /** + * 充值记录列表 + * @param request 请求参数 + * @param pageParamRequest 分页参数 + * @return PageInfo + */ + PageInfo getList(UserRechargeSearchRequest request, PageParamRequest pageParamRequest); + + /** + * 充值统计 + * @return HashMap + */ + HashMap getBalanceList(); + + UserRecharge getInfoByEntity(UserRecharge userRecharge); + + /** + * 根据日期获取充值订单数量 + * @param date 日期,yyyy-MM-dd格式 + * @return Integer + */ + Integer getRechargeOrderNumByDate(String date); + + /** + * 根据日期获取充值订单金额 + * @param date 日期,yyyy-MM-dd格式 + * @return BigDecimal + */ + BigDecimal getRechargeOrderAmountByDate(String date); + + /** + * 获取总人数 + * @return Integer + */ + Integer getTotalPeople(); + + /** + * 获取总金额 + * @return BigDecimal + */ + BigDecimal getTotalPrice(); + + /** + * 根据时间获取充值用户数量 + * @param date 日期 + * @return Integer + */ + Integer getRechargeUserNumByDate(String date); + + /** + * 根据时间获取充值用户数量 + * @param startDate 日期 + * @param endDate 日期 + * @return Integer + */ + Integer getRechargeUserNumByPeriod(String startDate, String endDate); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserService.java new file mode 100644 index 0000000..b3b5143 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserService.java @@ -0,0 +1,325 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.github.pagehelper.PageInfo; +import com.zbkj.common.model.user.User; +import com.zbkj.common.request.*; +import com.zbkj.common.response.*; + +import java.math.BigDecimal; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 用户表 服务类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface UserService extends IService { + + /** + * 用户分页列表 + * @param request 查询参数 + * @param pageParamRequest 分页参数 + * @return PageInfo + */ + PageInfo getList(UserSearchRequest request, PageParamRequest pageParamRequest); + + /** + * 操作积分、余额 + */ + Boolean updateIntegralMoney(UserOperateIntegralMoneyRequest request); + + /** + * 更新余额 + * @param user 用户 + * @param price 金额 + * @param type 增加add、扣减sub + * @return 更新后的用户数据 + */ + Boolean updateNowMoney(User user, BigDecimal price, String type); + + /** + * 会员分组 + * @param id String id + * @param groupId Integer 分组Id + */ + Boolean group(String id, String groupId); + + /** + * 修改密码 + * @param request 修改密码参数 + * @return Boolean + */ + Boolean password(PasswordRequest request); + + User getInfo(); + + User getInfoException(); + + /** + * 根据参数类型查询会员对应的信息 + * @param userId Integer 会员id + * @param type int 类型 0=消费记录,1=积分明细,2=签到记录,3=持有优惠券,4=余额变动,5=好友关系 + * @param pageParamRequest PageParamRequest 分页 + */ + Object getInfoByCondition(Integer userId,Integer type,PageParamRequest pageParamRequest); + + Integer getUserIdException(); + + Integer getUserId(); + + Map getAddUserCountGroupDate(String date); + + /** + * 换绑手机号校验 + */ + Boolean updatePhoneVerify(UserBindingPhoneUpdateRequest request); + + /** + * 换绑手机号 + */ + Boolean updatePhone(UserBindingPhoneUpdateRequest request); + + /** + * 个人中心-用户信息 + * @return UserCenterResponse + */ + UserCenterResponse getUserCenter(); + + /** + * 根据用户id获取用户列表 map模式 + * @param uidList uidList + * @return HashMap + */ + HashMap getMapListInUid(List uidList); + + void repeatSignNum(Integer userId); + + /** + * 会员标签 + * + * @param id String id + * @param tagId Integer 标签Id + */ + Boolean tag(String id, String tagId); + + List getSpreadPeopleIdList(List userId); + + List getSpreadPeopleList(List userIdList, String keywords, String sortKey, String isAsc, PageParamRequest pageParamRequest); + + /** + * 会员详情页Top数据 + * @param userId 用户uid + * @return TopDetail + */ + TopDetail getTopDetail(Integer userId); + + User registerByThird(RegisterThirdUserRequest thirdUserRequest); + + String getValidateCodeRedisKey(String phone); + + PageInfo getUserListBySpreadLevel(RetailShopStairUserRequest request, PageParamRequest pageParamRequest); + + PageInfo getOrderListBySpreadLevel(RetailShopStairUserRequest request, PageParamRequest pageParamRequest); + + boolean clearSpread(Integer userId); + + /** + * 推广人排行榜 + * @param type String 时间范围(week-周,month-月) + * @param pageParamRequest PageParamRequest 分页 + * @return List + */ + List getTopSpreadPeopleListByDate(String type, PageParamRequest pageParamRequest); + + Integer getCountByPayCount(int minPayCount, int maxPayCount); + + /** + * 绑定推广关系(登录状态) + * @param spreadUid 推广人id + */ + void bindSpread(Integer spreadUid); + + /** + * 更新推广人 + * @param request 请求参数 + * @return Boolean + */ + Boolean editSpread(UserUpdateSpreadRequest request); + + /** + * 更新用户积分 + * @param user 用户 + * @param integral 积分 + * @param type 增加add、扣减sub + * @return 更新后的用户对象 + */ + Boolean updateIntegral(User user, Integer integral, String type); + + /** + * 手机号注册用户 + * @param phone 手机号 + * @param spreadUid 推广人编号 + * @return User + */ + User registerPhone(String phone, Integer spreadUid); + + /** + * 检测能否绑定关系 + * @param user 当前用户 + * @param spreadUid 推广员Uid + * @param type 用户类型:new-新用户,old—老用户 + * @return Boolean + */ + Boolean checkBingSpread(User user, Integer spreadUid, String type); + + /** + * 更新推广员推广数 + * @param uid uid + * @param type add or sub + * @return Boolean + */ + Boolean updateSpreadCountByUid(Integer uid, String type); + + /** + * 添加/扣减佣金 + * @param uid 用户id + * @param price 金额 + * @param brokeragePrice 历史金额 + * @param type 类型:add—添加,sub—扣减 + */ + Boolean operationBrokerage(Integer uid, BigDecimal price, BigDecimal brokeragePrice, String type); + + /** + * 添加/扣减余额 + * @param uid 用户id + * @param price 金额 + * @param nowMoney 历史金额 + * @param type 类型:add—添加,sub—扣减 + */ + Boolean operationNowMoney(Integer uid, BigDecimal price, BigDecimal nowMoney, String type); + + /** + * 添加/扣减积分 + * @param uid 用户id + * @param integral 积分 + * @param nowIntegral 历史积分 + * @param type 类型:add—添加,sub—扣减 + */ + Boolean operationIntegral(Integer uid, Integer integral, Integer nowIntegral, String type); + + /** + * PC后台分销员列表 + * @param keywords 搜索参数 + * @param dateLimit 时间参数 + * @param pageRequest 分页参数 + * @return + */ + PageInfo getAdminSpreadPeopleList(String keywords, String dateLimit, PageParamRequest pageRequest); + + /** + * 清除User Group id + * @param groupId 待清除的GroupId + */ + void clearGroupByGroupId(String groupId); + + /** + * 更新用户 + * @param userRequest 用户参数 + */ + Boolean updateUser(UserUpdateRequest userRequest); + + /** + * 根据手机号查询用户 + * @param phone 用户手机号 + * @return 用户信息 + */ + User getByPhone(String phone); + + /** + * 后台修改用户手机号 + * @param id 用户uid + * @param phone 手机号 + * @return Boolean + */ + Boolean updateUserPhone(Integer id, String phone); + + /** + * 根据昵称匹配用户,返回id集合 + * @param nikeName 需要匹配得昵称 + * @return List + */ + List findIdListLikeName(String nikeName); + + /** + * 清除对应的用户等级 + * @param levelId 等级id + */ + Boolean removeLevelByLevelId(Integer levelId); + + /** + * 更新用户会员等级 + * @param request request + * @return Boolean + */ + Boolean updateUserLevel(UpdateUserLevelRequest request); + + /** + * 获取用户总人数 + */ + Integer getTotalNum(); + + /** + * 根据日期获取注册用户数量 + * @param date 日期 + * @return Integer + */ + Integer getRegisterNumByDate(String date); + + /** + * 根据日期段获取注册用户数量 + * @param startDate 日期 + * @param endDate 日期 + * @return UserOverviewResponse + */ + Integer getRegisterNumByPeriod(String startDate, String endDate); + + /** + * 获取用户性别数据 + * @return List + */ + List getSexData(); + + /** + * 获取用户渠道数据 + * @return List + */ + List getChannelData(); + + /** + * 获取所有用户的id跟地址 + * @return List + */ + List findIdAndAddresList(); + + /** + * 修改个人资料 + * @param request 修改信息 + */ + Boolean editUser(UserEditRequest request); + + /** + * 获取用户详情 + * @param id 用户uid + */ + User getInfoByUid(Integer id); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserSignService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserSignService.java new file mode 100644 index 0000000..035d0df --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserSignService.java @@ -0,0 +1,67 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.response.UserSignInfoResponse; +import com.zbkj.common.vo.SystemGroupDataSignConfigVo; +import com.zbkj.common.model.user.UserSign; +import com.zbkj.common.vo.UserSignMonthVo; +import com.zbkj.common.vo.UserSignVo; + +import java.util.HashMap; +import java.util.List; + +/** + * UserSignService 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface UserSignService extends IService { + + /** + * 用户积分列表 + * @param pageParamRequest 分页参数 + * @return List + */ + List getList(PageParamRequest pageParamRequest); + + List getListByCondition(UserSign sign, PageParamRequest pageParamRequest); + + /** + * 签到 + * @return SystemGroupDataSignConfigVo + */ + SystemGroupDataSignConfigVo sign(); + + /** + * 今日记录详情 + * @return HashMap + */ + HashMap get(); + + /** + * 签到配置 + * @return List + */ + List getSignConfig(); + + /** + * 积分月度列表 + * @param pageParamRequest 分页参数 + * @return List + */ + List getListGroupMonth(PageParamRequest pageParamRequest); + + /** + * 获取用户签到信息 + * @return UserSignInfoResponse + */ + UserSignInfoResponse getUserSignInfo(); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserTagService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserTagService.java new file mode 100644 index 0000000..8c57e14 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserTagService.java @@ -0,0 +1,51 @@ +package com.zbkj.service.service; + +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.model.user.UserTag; +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.request.UserTagRequest; + +import java.util.List; + +/** + * UserTagService 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface UserTagService extends IService { + + /** + * 用户标签列表 + * @param pageParamRequest 分页参数 + * @return List + */ + List getList(PageParamRequest pageParamRequest); + + String getGroupNameInId(String tagIdValue); + + /** + * 新增用户标签 + * @param userTagRequest 标签参数 + */ + Boolean create(UserTagRequest userTagRequest); + + /** + * 删除用户标签 + * @param id 标签id + */ + Boolean delete(Integer id); + + /** + * 修改用户标签 + * @param id 标签id + * @param userTagRequest 标签参数 + */ + Boolean updateTag(Integer id, UserTagRequest userTagRequest); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserTokenService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserTokenService.java new file mode 100644 index 0000000..88211de --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserTokenService.java @@ -0,0 +1,32 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.model.user.UserToken; + +/** + * UserTokenService 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface UserTokenService extends IService { + + /** + * 获取UserToken + * @param token 微信为openid + * @param type 类型 + * @return UserToken + */ + UserToken getByOpenidAndType(String token, int type); + + void bind(String openId, int type, Integer uid); + + UserToken getTokenByUserId(Integer userId, int type); + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserVisitRecordService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserVisitRecordService.java new file mode 100644 index 0000000..56e99b1 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserVisitRecordService.java @@ -0,0 +1,49 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.model.record.UserVisitRecord; + +/** + * UserVisitRecordService 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface UserVisitRecordService extends IService { + + /** + * 通过日期获取浏览量 + * @param date 日期 + * @return Integer + */ + Integer getPageviewsByDate(String date); + + /** + * 通过时间段获取浏览量 + * @param startDate 日期 + * @param endDate 日期 + * @return Integer + */ + Integer getPageviewsByPeriod(String startDate, String endDate); + + /** + * 通过日期获取活跃用户数 + * @param date 日期 + * @return Integer + */ + Integer getActiveUserNumByDate(String date); + + /** + * 通过时间段获取活跃用户数 + * @param startDate 日期 + * @param endDate 日期 + * @return Integer + */ + Integer getActiveUserNumByPeriod(String startDate, String endDate); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/WeChatPayService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/WeChatPayService.java new file mode 100644 index 0000000..9feff46 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/WeChatPayService.java @@ -0,0 +1,35 @@ +package com.zbkj.service.service; + +import com.zbkj.common.model.finance.UserRecharge; + +import java.util.Map; + +/** + * 微信支付 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface WeChatPayService { + + /** + * 查询支付结果 + * @param orderNo 订单编号 + * @return + */ + Boolean queryPayResult(String orderNo); + + /** + * 微信充值预下单接口 + * @param userRecharge 充值订单 + * @param clientIp ip + * @return 获取wechat.requestPayment()参数 + */ + Map unifiedRecharge(UserRecharge userRecharge, String clientIp); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/WechatCallbackService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/WechatCallbackService.java new file mode 100644 index 0000000..d74343a --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/WechatCallbackService.java @@ -0,0 +1,26 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.model.wechat.WechatCallback; + +/** + * 微信小程序回调Service + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface WechatCallbackService extends IService { + + /** + * 微信回调 + * @param request request + * @return String + */ + String callback(String request); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/WechatExceptionsService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/WechatExceptionsService.java new file mode 100644 index 0000000..057cc76 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/WechatExceptionsService.java @@ -0,0 +1,24 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.model.wechat.WechatExceptions; + +/** + * 微信异常服务类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface WechatExceptionsService extends IService { + + /** + * 删除历史日志 + */ + void autoDeleteLog(); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/WechatMediaService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/WechatMediaService.java new file mode 100644 index 0000000..dece334 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/WechatMediaService.java @@ -0,0 +1,17 @@ +package com.zbkj.service.service; + +import org.springframework.web.multipart.MultipartFile; + +import java.util.Map; + +public interface WechatMediaService { + + /** + * 微信上传素材 + * @param file 文件 + * @param type 类型 + * @return Map + * @throws Exception + */ + Map upload(MultipartFile file, String type); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/WechatNewService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/WechatNewService.java new file mode 100644 index 0000000..dd21a78 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/WechatNewService.java @@ -0,0 +1,181 @@ +package com.zbkj.service.service; + +import com.alibaba.fastjson.JSONObject; +import com.zbkj.common.response.WeChatJsSdkConfigResponse; +import com.zbkj.common.token.WeChatOauthToken; +import com.zbkj.common.vo.*; + +import java.util.List; +import java.util.Map; + +/** + * 微信公用服务 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface WechatNewService { + + /** + * 获取公众号accessToken + * @return 公众号accessToken + */ + String getPublicAccessToken(); + + /** + * 获取小程序accessToken + * @return 小程序accessToken + */ + String getMiniAccessToken(); + + /** + * 获取开放平台access_token + * 通过 code 获取 + * 公众号使用 + * @return 开放平台accessToken对象 + */ + WeChatOauthToken getOauth2AccessToken(String code); + + /** + * 获取开放平台用户信息 + * @param accessToken 调用凭证 + * @param openid 普通用户的标识,对当前开发者帐号唯一 + * 公众号使用 + * @return 开放平台用户信息对象 + */ + WeChatAuthorizeLoginUserInfoVo getSnsUserInfo(String accessToken, String openid); + + /** + * 小程序登录凭证校验 + * @return 小程序登录校验对象 + */ + WeChatMiniAuthorizeVo miniAuthCode(String code); + + /** + * 获取微信公众号js配置参数 + * @return WeChatJsSdkConfigResponse + */ + WeChatJsSdkConfigResponse getJsSdkConfig(String url); + + /** + * 生成小程序码 + * @param page 必须是已经发布的小程序存在的页面 + * @param scene 最大32个可见字符,只支持数字,大小写英文以及部分特殊字符:!#$&'()*+,/:;=?@-._~,其它字符请自行编码为合法字符 + * @return 小程序码 + */ + String createQrCode(String page, String scene); + + /** + * 微信预下单接口(统一下单) + * @param unifiedorderVo 预下单请求对象 + * @return 微信预下单返回对象 + */ + CreateOrderResponseVo payUnifiedorder(CreateOrderRequestVo unifiedorderVo); + + /** + * 微信支付查询订单 + * @return 支付订单查询结果 + */ + MyRecord payOrderQuery(Map payVo); + + /** + * 微信公众号发送模板消息 + * @param templateMessage 模板消息对象 + * @return 是否发送成功 + */ + Boolean sendPublicTemplateMessage(TemplateMessageVo templateMessage); + + /** + * 微信小程序发送订阅消息 + * @param templateMessage 消息对象 + * @return 是否发送成功 + */ + Boolean sendMiniSubscribeMessage(TemplateMessageVo templateMessage); + + /** + * 获取微信公众号自定义菜单配置 + * (使用本自定义菜单查询接口可以获取默认菜单和全部个性化菜单信息) + * @return 公众号自定义菜单 + */ + JSONObject getPublicCustomMenu(); + + /** + * 创建微信自定义菜单 + * @param data 菜单json字符串 + * @return 创建结果 + */ + Boolean createPublicCustomMenu(String data); + + /** + * 删除微信自定义菜单 + * @return 删除结果 + */ + Boolean deletePublicCustomMenu(); + + /** + * 企业号上传其他类型永久素材 + * 获取url + * @param type 素材类型:图片(image)、语音(voice)、视频(video),普通文件(file) + */ + String qyapiAddMaterialUrl(String type); + + /** + * 微信申请退款 + * @param wxRefundVo 微信申请退款对象 + * @param path 商户p12证书绝对路径 + * @return 申请退款结果对象 + */ + WxRefundResponseVo payRefund(WxRefundVo wxRefundVo, String path); + + /** + * 获取我的公众号模板消息列表 + * @return List + */ + List getPublicMyTemplateList(); + + /** + * 删除微信公众号模板消息 + * @return Boolean + */ + Boolean delPublicMyTemplate(String templateId); + + /** + * 添加公众号模板消息 + * @param templateIdShort 模板库中模板的编号,有“TM**”和“OPENTMTM**”等形式 + * @return 公众号模板编号(自己的) + */ + String apiAddPublicTemplate(String templateIdShort); + + /** + * 获取当前帐号下的个人模板列表(订阅消息) + * @return List + */ + List getRoutineMyTemplateList(); + + /** + * 删除微信小程序订阅消息 + * @return Boolean + */ + Boolean delRoutineMyTemplate(String priTmplId); + + /** + * 获取小程序平台上的标准模板 + * @param tempKey 模板编号 + * @return List + */ + List getRoutineTemplateByWechat(String tempKey); + + /** + * 添加小程序订阅消息 + * @param tempKey 模板编号 + * @param kidList 小程序订阅消息模板kid数组 + * @return 小程序订阅消息模板编号(自己的) + */ + String apiAddRoutineTemplate(String tempKey, List kidList); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/WechatPayInfoService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/WechatPayInfoService.java new file mode 100644 index 0000000..24cf82c --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/WechatPayInfoService.java @@ -0,0 +1,26 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.model.wechat.WechatPayInfo; + +/** + * WechatPayInfoService 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface WechatPayInfoService extends IService { + + /** + * 获取详情(商户订单号) + * @param outTradeNo 商户订单号 + * @return WechatPayInfo + */ + WechatPayInfo getByNo(String outTradeNo); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/WechatPublicService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/WechatPublicService.java new file mode 100644 index 0000000..5d03b02 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/WechatPublicService.java @@ -0,0 +1,34 @@ +package com.zbkj.service.service; + +/** + * 微信公众号service + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface WechatPublicService { + + /** + * 获取公众号自定义菜单 + */ + Object getCustomizeMenus(); + + /** + * 保存自定义菜单 + * @param data 菜单json + * @return Boolean + */ + Boolean createMenus(String data); + + /** + * 删除自定义菜单 + * @return Boolean + */ + Boolean deleteMenus(); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/WechatReplyService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/WechatReplyService.java new file mode 100644 index 0000000..64a2dac --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/WechatReplyService.java @@ -0,0 +1,64 @@ +package com.zbkj.service.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.model.wechat.WechatReply; +import com.zbkj.common.request.WechatReplyRequest; +import com.zbkj.common.request.WechatReplySearchRequest; + +import java.util.List; + +/** + * WechatReplyService 接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface WechatReplyService extends IService { + + /** + * 列表 + * @param request 请求参数 + * @param pageParamRequest 分页类参数 + * @return List + */ + List getList(WechatReplySearchRequest request, PageParamRequest pageParamRequest); + + /** + * 新增微信关键字回复表 + * @param wechatReply 新增参数 + */ + Boolean create(WechatReply wechatReply); + + /** + * 根据关键字查询数据 + * @param keywords 新增参数 + * @return WechatReply + */ + WechatReply getVoByKeywords(String keywords); + + /** + * 查询微信关键字回复表信息 + * @param id Integer + */ + WechatReply getInfo(Integer id); + + /** + * 修改微信关键字回复表 + * @param wechatReplyRequest 修改参数 + */ + Boolean updateReply(WechatReplyRequest wechatReplyRequest); + + /** + * 修改状态 + * @param id integer id + * @param status boolean 状态 + */ + Boolean updateStatus(Integer id, Boolean status); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/WechatUserService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/WechatUserService.java new file mode 100644 index 0000000..1a03a16 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/WechatUserService.java @@ -0,0 +1,17 @@ +package com.zbkj.service.service; + +/** + * 微信用户表 服务类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface WechatUserService{ +// void push(String userId, Integer newsId); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/YlyPrintService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/YlyPrintService.java new file mode 100644 index 0000000..262473d --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/YlyPrintService.java @@ -0,0 +1,22 @@ +package com.zbkj.service.service; + +/** + * 易联云打印订单 service + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface YlyPrintService { + /** + * 易联云打印商品信息 + * @param ordId 订单id + * @param isAuto 是否自动打印 + */ + void YlyPrint(String ordId,boolean isAuto); +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/ArticleServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/ArticleServiceImpl.java new file mode 100644 index 0000000..39ff2a3 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/ArticleServiceImpl.java @@ -0,0 +1,270 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.model.article.Article; +import com.zbkj.common.model.category.Category; +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.request.ArticleRequest; +import com.zbkj.common.request.ArticleSearchRequest; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.response.ArticleResponse; +import com.zbkj.common.vo.ArticleVo; +import com.github.pagehelper.Page; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.zbkj.service.dao.ArticleDao; +import com.zbkj.service.service.ArticleService; +import com.zbkj.service.service.CategoryService; +import com.zbkj.service.service.SystemAttachmentService; +import com.zbkj.service.service.SystemConfigService; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** +* ArticleServiceImpl 接口实现 +* +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- +*/ +@Service +public class ArticleServiceImpl extends ServiceImpl implements ArticleService { + + private Logger logger = LoggerFactory.getLogger(ArticleServiceImpl.class); + + @Resource + private ArticleDao dao; + + @Autowired + private CategoryService categoryService; + + @Autowired + private SystemConfigService systemConfigService; + + @Autowired + private SystemAttachmentService systemAttachmentService; + + /** + * 列表 + * @param cid 文章分类id + * @param pageParamRequest 分页类参数 + * @return PageInfo
+ */ + @Override + public PageInfo getList(String cid, PageParamRequest pageParamRequest) { + Page
articlePage = PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + + LambdaQueryWrapper
lambdaQueryWrapper = Wrappers.lambdaQuery(); + lambdaQueryWrapper.eq(Article::getCid, cid); + lambdaQueryWrapper.eq(Article::getHide, false); + lambdaQueryWrapper.eq(Article::getStatus, false); + lambdaQueryWrapper.orderByDesc(Article::getSort).orderByDesc(Article::getVisit).orderByDesc(Article::getCreateTime); + List
articleList = dao.selectList(lambdaQueryWrapper); + if (CollUtil.isEmpty(articleList)) { + return CommonPage.copyPageInfo(articlePage, CollUtil.newArrayList()); + } + List responseList = articleList.stream().map(e -> { + ArticleResponse articleResponse = new ArticleResponse(); + BeanUtils.copyProperties(e, articleResponse); + return articleResponse; + }).collect(Collectors.toList()); + return CommonPage.copyPageInfo(articlePage, responseList); + } + + /** + * 获取文章列表 + * @param request 请求参数 + * @param pageParamRequest 分页参数 + * @return PageInfo + */ + @Override + public PageInfo getAdminList(ArticleSearchRequest request, PageParamRequest pageParamRequest) { + Page
articlePage = PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + + LambdaQueryWrapper
lambdaQueryWrapper = Wrappers.lambdaQuery(); + if (StringUtils.isNotBlank(request.getCid())) { + lambdaQueryWrapper.eq(Article::getCid, request.getCid()); + } + if (!StringUtils.isBlank(request.getKeywords())) { + lambdaQueryWrapper.and(i -> i.or().like(Article::getTitle, request.getKeywords()) + .or().like(Article::getAuthor, request.getKeywords()) + .or().like(Article::getSynopsis, request.getKeywords())); + } + lambdaQueryWrapper.orderByDesc(Article::getVisit).orderByDesc(Article::getId); + List
articleList = dao.selectList(lambdaQueryWrapper); + + ArrayList articleVoArrayList = new ArrayList<>(); + if (articleList.size() < 1) { + return CommonPage.copyPageInfo(articlePage, articleVoArrayList); + } + for (Article article : articleList) { + ArticleVo articleVo = new ArticleVo(); + BeanUtils.copyProperties(article, articleVo); + if (!StrUtil.isBlank(article.getImageInput()) ) { + articleVo.setImageInput(article.getImageInput()); + } + articleVoArrayList.add(articleVo); + } + return CommonPage.copyPageInfo(articlePage, articleVoArrayList); + } + + /** + * 查询文章详情 + * @param id Integer + * @return ArticleVo + */ + @Override + public ArticleResponse getVoByFront(Integer id) { + Article article = getById(id); + if (ObjectUtil.isNull(article)) { + throw new CrmebException("文章不存在"); + } + + if (article.getStatus()) { + throw new CrmebException("文章不存在"); + } + + ArticleResponse articleResponse = new ArticleResponse(); + BeanUtils.copyProperties(article, articleResponse); + + String visit = StrUtil.isNotBlank(article.getVisit()) ? article.getVisit() : "0"; + int num = Integer.parseInt(visit) + 1; + article.setVisit(String.valueOf(num)); + dao.updateById(article); + return articleResponse; + } + + /** + * 获取移动端banner列表 + * @return List
+ */ + @Override + public List
getBannerList() { + // 根据配置控制banner的数量 + String articleBannerLimitString = systemConfigService.getValueByKey(Constants.ARTICLE_BANNER_LIMIT); + int articleBannerLimit = Integer.parseInt(articleBannerLimitString); + + LambdaQueryWrapper
lambdaQueryWrapper = Wrappers.lambdaQuery(); + lambdaQueryWrapper.select(Article::getId, Article::getImageInput); + lambdaQueryWrapper.eq(Article::getIsBanner, true); + lambdaQueryWrapper.eq(Article::getHide, false); + lambdaQueryWrapper.eq(Article::getStatus, false); + lambdaQueryWrapper.orderByDesc(Article::getSort); + lambdaQueryWrapper.last(" limit " + articleBannerLimit); + return dao.selectList(lambdaQueryWrapper); + } + + /** + * 获取移动端热门列表 + * @return List + */ + @Override + public List getHotList() { + LambdaQueryWrapper
lambdaQueryWrapper = Wrappers.lambdaQuery(); + lambdaQueryWrapper.select(Article::getId, Article::getImageInput, Article::getTitle, Article::getCreateTime); + lambdaQueryWrapper.eq(Article::getIsHot, true); + lambdaQueryWrapper.eq(Article::getHide, false); + lambdaQueryWrapper.eq(Article::getStatus, false); + lambdaQueryWrapper.orderByDesc(Article::getSort); + lambdaQueryWrapper.last(" limit 20"); + List
articleList = dao.selectList(lambdaQueryWrapper); + if (CollUtil.isEmpty(articleList)) { + return CollUtil.newArrayList(); + } + List responseList = articleList.stream().map(e -> { + ArticleResponse articleResponse = new ArticleResponse(); + BeanUtils.copyProperties(e, articleResponse); + return articleResponse; + }).collect(Collectors.toList()); + return responseList; + } + + /** + * 获取文章分类列表(移动端) + * @return List + */ + @Override + public List getCategoryList() { + return categoryService.findArticleCategoryList(); + } + + /** + * 文章新增 + * @param articleRequest 文章新增参数 + * @return Boolean + */ + @Override + public Boolean create(ArticleRequest articleRequest) { + Article article = new Article(); + BeanUtils.copyProperties(articleRequest, article); + article.setImageInput(systemAttachmentService.clearPrefix(article.getImageInput())); + article.setContent(systemAttachmentService.clearPrefix(article.getContent())); + article.setVisit("0"); + return save(article); + } + + /** + * 文章删除 + * @param id 文章id + * @return Boolean + */ + @Override + public Boolean deleteById(Integer id) { + Article article = getById(id); + if (ObjectUtil.isNull(article)) { + throw new CrmebException("文章已删除"); + } + return removeById(id); + } + + /** + * 文章修改 + * @param id 文章id + * @param articleRequest 文章修改参数 + */ + @Override + public Boolean updateArticle(Integer id, ArticleRequest articleRequest) { + Article article = new Article(); + BeanUtils.copyProperties(articleRequest, article); + article.setId(id); + article.setImageInput(systemAttachmentService.clearPrefix(article.getImageInput())); + article.setContent(systemAttachmentService.clearPrefix(article.getContent())); + return updateById(article); + } + + /** + * 获取文章详情 + * @param id 文章id + * @return Article + */ + @Override + public Article getDetail(Integer id) { + Article article = getById(id); + if (ObjectUtil.isNull(article)) { + throw new CrmebException("文章不存在"); + } + return article; + } +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/CallbackServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/CallbackServiceImpl.java new file mode 100644 index 0000000..5af3eb5 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/CallbackServiceImpl.java @@ -0,0 +1,460 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.crypto.SecureUtil; +import com.alibaba.fastjson.JSONObject; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.constants.TaskConstants; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.model.combination.StoreCombination; +import com.zbkj.common.model.combination.StorePink; +import com.zbkj.common.model.finance.UserRecharge; +import com.zbkj.common.model.order.StoreOrder; +import com.zbkj.common.model.user.User; +import com.zbkj.common.model.wechat.WechatPayInfo; +import com.zbkj.common.utils.CrmebUtil; +import com.zbkj.common.utils.DateUtil; +import com.zbkj.common.utils.RedisUtil; +import com.zbkj.common.utils.WxPayUtil; +import com.zbkj.common.vo.AttachVo; +import com.zbkj.common.vo.CallbackVo; +import com.zbkj.common.vo.MyRecord; +import com.zbkj.service.service.*; +import org.bouncycastle.jce.provider.BouncyCastleProvider; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.support.TransactionTemplate; + +import javax.crypto.Cipher; +import javax.crypto.spec.SecretKeySpec; +import java.io.UnsupportedEncodingException; +import java.nio.charset.StandardCharsets; +import java.security.Security; +import java.util.*; + + +/** + * 订单支付回调 CallbackService 实现类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class CallbackServiceImpl implements CallbackService { + + private static final Logger logger = LoggerFactory.getLogger(CallbackServiceImpl.class); + + @Autowired + private RechargePayService rechargePayService; + + @Autowired + private StoreOrderService storeOrderService; + + @Autowired + private UserService userService; + + @Autowired + private UserRechargeService userRechargeService; + + @Autowired + private RedisUtil redisUtil; + + @Autowired + private SystemConfigService systemConfigService; + + @Autowired + private TransactionTemplate transactionTemplate; + + @Autowired + private StoreCombinationService storeCombinationService; + + @Autowired + private StorePinkService storePinkService; + + @Autowired + private WechatPayInfoService wechatPayInfoService; + + /** + * 微信支付回调 + */ + @Override + public String weChat(String xmlInfo) { + StringBuffer sb = new StringBuffer(); + sb.append(""); + if(StrUtil.isBlank(xmlInfo)){ + sb.append(""); + sb.append(""); + sb.append(""); + logger.error("wechat callback error : " + sb.toString()); + return sb.toString(); + } + + try{ + HashMap map = WxPayUtil.processResponseXml(xmlInfo); + // 通信是否成功 + String returnCode = (String) map.get("return_code"); + if (!returnCode.equals(Constants.SUCCESS)) { + sb.append(""); + sb.append(""); + sb.append(""); + logger.error("wechat callback error : wx pay return code is fail returnMsg : " + map.get("return_msg")); + return sb.toString(); + } + // 交易是否成功 + String resultCode = (String) map.get("result_code"); + if (!resultCode.equals(Constants.SUCCESS)) { + sb.append(""); + sb.append(""); + sb.append(""); + logger.error("wechat callback error : wx pay result code is fail"); + return sb.toString(); + } + + //解析xml + CallbackVo callbackVo = CrmebUtil.mapToObj(map, CallbackVo.class); + AttachVo attachVo = JSONObject.toJavaObject(JSONObject.parseObject(callbackVo.getAttach()), AttachVo.class); + + //判断openid + User user = userService.getById(attachVo.getUserId()); + if (ObjectUtil.isNull(user)) { + //用户信息错误 + throw new CrmebException("用户信息错误!"); + } + + //根据类型判断是订单或者充值 + if (!Constants.SERVICE_PAY_TYPE_ORDER.equals(attachVo.getType()) && !Constants.SERVICE_PAY_TYPE_RECHARGE.equals(attachVo.getType())) { + logger.error("wechat pay err : 未知的支付类型==》" + callbackVo.getOutTradeNo()); + throw new CrmebException("未知的支付类型!"); + } + // 订单 + if (Constants.SERVICE_PAY_TYPE_ORDER.equals(attachVo.getType())) { + StoreOrder orderParam = new StoreOrder(); + orderParam.setOutTradeNo(callbackVo.getOutTradeNo()); + orderParam.setUid(attachVo.getUserId()); + + StoreOrder storeOrder = storeOrderService.getInfoByEntity(orderParam); + if (ObjectUtil.isNull(storeOrder)) { + logger.error("wechat pay error : 订单信息不存在==》" + callbackVo.getOutTradeNo()); + throw new CrmebException("wechat pay error : 订单信息不存在==》" + callbackVo.getOutTradeNo()); + } + if (storeOrder.getPaid()) { + logger.error("wechat pay error : 订单已处理==》" + callbackVo.getOutTradeNo()); + sb.append(""); + sb.append(""); + sb.append(""); + return sb.toString(); + } + WechatPayInfo wechatPayInfo = wechatPayInfoService.getByNo(storeOrder.getOutTradeNo()); + if (ObjectUtil.isNull(wechatPayInfo)) { + logger.error("wechat pay error : 微信订单信息不存在==》" + callbackVo.getOutTradeNo()); + throw new CrmebException("wechat pay error : 微信订单信息不存在==》" + callbackVo.getOutTradeNo()); + } + wechatPayInfo.setIsSubscribe(callbackVo.getIsSubscribe()); + wechatPayInfo.setBankType(callbackVo.getBankType()); + wechatPayInfo.setCashFee(callbackVo.getCashFee()); + wechatPayInfo.setCouponFee(callbackVo.getCouponFee()); + wechatPayInfo.setTransactionId(callbackVo.getTransactionId()); + wechatPayInfo.setTimeEnd(callbackVo.getTimeEnd()); + + // 添加支付成功redis队列 + Boolean execute = transactionTemplate.execute(e -> { + storeOrder.setPaid(true); + storeOrder.setPayTime(DateUtil.nowDateTime()); + storeOrderService.updateById(storeOrder); + if (storeOrder.getUseIntegral() > 0) { + userService.updateIntegral(user, storeOrder.getUseIntegral(), "sub"); + } + wechatPayInfoService.updateById(wechatPayInfo); + + // 处理拼团 + if (storeOrder.getCombinationId() > 0) { + // 判断拼团团长是否存在 + StorePink headPink = new StorePink(); + Integer pinkId = storeOrder.getPinkId(); + if (pinkId > 0) { + headPink = storePinkService.getById(pinkId); + if (ObjectUtil.isNull(headPink) || headPink.getIsRefund().equals(true) || headPink.getStatus() == 3) { + pinkId = 0; + } + } + StoreCombination storeCombination = storeCombinationService.getById(storeOrder.getCombinationId()); + // 如果拼团人数已满,重新开团 + if (pinkId > 0) { + Integer count = storePinkService.getCountByKid(pinkId); + if (count >= storeCombination.getPeople()) { + pinkId = 0; + } + } + // 生成拼团表数据 + StorePink storePink = new StorePink(); + storePink.setUid(user.getUid()); + storePink.setAvatar(user.getAvatar()); + storePink.setNickname(user.getNickname()); + storePink.setOrderId(storeOrder.getOrderId()); + storePink.setOrderIdKey(storeOrder.getId()); + storePink.setTotalNum(storeOrder.getTotalNum()); + storePink.setTotalPrice(storeOrder.getTotalPrice()); + storePink.setCid(storeCombination.getId()); + storePink.setPid(storeCombination.getProductId()); + storePink.setPeople(storeCombination.getPeople()); + storePink.setPrice(storeCombination.getPrice()); + Integer effectiveTime = storeCombination.getEffectiveTime();// 有效小时数 + DateTime dateTime = cn.hutool.core.date.DateUtil.date(); + storePink.setAddTime(dateTime.getTime()); + if (pinkId > 0) { + storePink.setStopTime(headPink.getStopTime()); + } else { + DateTime hourTime = cn.hutool.core.date.DateUtil.offsetHour(dateTime, effectiveTime); + long stopTime = hourTime.getTime(); + if (stopTime > storeCombination.getStopTime()) { + stopTime = storeCombination.getStopTime(); + } + storePink.setStopTime(stopTime); + } + storePink.setKId(pinkId); + storePink.setIsTpl(false); + storePink.setIsRefund(false); + storePink.setStatus(1); + storePinkService.save(storePink); + // 如果是开团,需要更新订单数据 + storeOrder.setPinkId(storePink.getId()); + storeOrderService.updateById(storeOrder); + } + + return Boolean.TRUE; + }); + if (!execute) { + logger.error("wechat pay error : 订单更新失败==》" + callbackVo.getOutTradeNo()); + sb.append(""); + sb.append(""); + sb.append(""); + return sb.toString(); + } + redisUtil.lPush(TaskConstants.ORDER_TASK_PAY_SUCCESS_AFTER, storeOrder.getOrderId()); + } + // 充值 + if (Constants.SERVICE_PAY_TYPE_RECHARGE.equals(attachVo.getType())) { + UserRecharge userRecharge = new UserRecharge(); + userRecharge.setOrderId(callbackVo.getOutTradeNo()); + userRecharge.setUid(attachVo.getUserId()); + userRecharge = userRechargeService.getInfoByEntity(userRecharge); + if(ObjectUtil.isNull(userRecharge)){ + throw new CrmebException("没有找到订单信息"); + } + if(userRecharge.getPaid()){ + sb.append(""); + sb.append(""); + sb.append(""); + return sb.toString(); + } + // 支付成功处理 + Boolean rechargePayAfter = rechargePayService.paySuccess(userRecharge); + if (!rechargePayAfter) { + logger.error("wechat pay error : 数据保存失败==》" + callbackVo.getOutTradeNo()); + throw new CrmebException("wechat pay error : 数据保存失败==》" + callbackVo.getOutTradeNo()); + } + } + sb.append(""); + sb.append(""); + }catch (Exception e){ + sb.append(""); + sb.append(""); + logger.error("wechat pay error : 业务异常==》" + e.getMessage()); + } + sb.append(""); + logger.error("wechat callback response : " + sb.toString()); + return sb.toString(); + } + + /** + * 微信退款回调 + * @param xmlInfo 微信回调json + * @return MyRecord + */ + @Override + public String weChatRefund(String xmlInfo) { + MyRecord notifyRecord = new MyRecord(); + MyRecord refundRecord = refundNotify(xmlInfo, notifyRecord); + if ("fail".equals(refundRecord.getStr("status"))) { + logger.error("微信退款回调失败==>" + refundRecord.getColumns() + ", rawData==>" + xmlInfo + ", data==>" + notifyRecord); + return refundRecord.getStr("returnXml"); + } + + if (!refundRecord.getBoolean("isRefund")) { + logger.error("微信退款回调失败==>" + refundRecord.getColumns() + ", rawData==>" + xmlInfo + ", data==>" + notifyRecord); + return refundRecord.getStr("returnXml"); + } + String outRefundNo = notifyRecord.getStr("out_refund_no"); + StoreOrder storeOrder = storeOrderService.getByOderId(outRefundNo); + if (ObjectUtil.isNull(storeOrder)) { + logger.error("微信退款订单查询失败==>" + refundRecord.getColumns() + ", rawData==>" + xmlInfo + ", data==>" + notifyRecord); + return refundRecord.getStr("returnXml"); + } + if (storeOrder.getRefundStatus() == 2) { + logger.warn("微信退款订单已确认成功==>" + refundRecord.getColumns() + ", rawData==>" + xmlInfo + ", data==>" + notifyRecord); + return refundRecord.getStr("returnXml"); + } + storeOrder.setRefundStatus(2); + boolean update = storeOrderService.updateById(storeOrder); + if (update) { + // 退款task + redisUtil.lPush(Constants.ORDER_TASK_REDIS_KEY_AFTER_REFUND_BY_USER, storeOrder.getId()); + } else { + logger.warn("微信退款订单更新失败==>" + refundRecord.getColumns() + ", rawData==>" + xmlInfo + ", data==>" + notifyRecord); + } + return refundRecord.getStr("returnXml"); + } + + /** + * 支付订单回调通知 + * @return MyRecord + */ + private MyRecord refundNotify(String xmlInfo, MyRecord notifyRecord) { + MyRecord refundRecord = new MyRecord(); + refundRecord.set("status", "fail"); + StringBuilder sb = new StringBuilder(); + sb.append(""); + if(StrUtil.isBlank(xmlInfo)){ + sb.append(""); + sb.append(""); + sb.append(""); + logger.error("wechat refund callback error : " + sb.toString()); + return refundRecord.set("returnXml", sb.toString()).set("errMsg", "xmlInfo is blank"); + } + + Map respMap; + try { + respMap = WxPayUtil.xmlToMap(xmlInfo); + } catch (Exception e) { + sb.append(""); + sb.append(""); + sb.append(""); + logger.error("wechat refund callback error : " + e.getMessage()); + return refundRecord.set("returnXml", sb.toString()).set("errMsg", e.getMessage()); + } + + notifyRecord.setColums(_strMap2ObjMap(respMap)); + // 这里的可以应该根据小程序还是公众号区分 + String return_code = respMap.get("return_code"); + if (return_code.equals(Constants.SUCCESS)) { + String appid = respMap.get("appid"); + String signKey = getSignKey(appid); + // 解码加密信息 + String reqInfo = respMap.get("req_info"); + System.out.println("encodeReqInfo==>" + reqInfo); + try { + String decodeInfo = decryptToStr(reqInfo, signKey); + Map infoMap = WxPayUtil.xmlToMap(decodeInfo); + notifyRecord.setColums(_strMap2ObjMap(infoMap)); + + String refund_status = infoMap.get("refund_status"); + refundRecord.set("isRefund", refund_status.equals(Constants.SUCCESS)); + } catch (Exception e) { + refundRecord.set("isRefund", false); + logger.error("微信退款回调异常,e==》" + e.getMessage()); + } + } else { + notifyRecord.set("return_msg", respMap.get("return_msg")); + refundRecord.set("isRefund", false); + } + sb.append(""); + sb.append(""); + sb.append(""); + return refundRecord.set("returnXml", sb.toString()).set("status", "ok"); + } + + private String getSignKey(String appid) { + String publicAppid = systemConfigService.getValueByKey(Constants.CONFIG_KEY_PAY_WE_CHAT_APP_ID); + String miniAppid = systemConfigService.getValueByKey(Constants.CONFIG_KEY_PAY_ROUTINE_APP_ID); + String appAppid = systemConfigService.getValueByKey(Constants.CONFIG_KEY_PAY_WE_CHAT_APP_APP_ID); + String signKey = ""; + if (StrUtil.isBlank(publicAppid) && StrUtil.isBlank(miniAppid) && StrUtil.isBlank(appAppid)) { + throw new CrmebException("pay_weixin_appid或pay_routine_appid不能都为空"); + } + if (StrUtil.isNotBlank(publicAppid) && appid.equals(publicAppid)) { + signKey = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_WE_CHAT_APP_KEY); + } + if (StrUtil.isNotBlank(miniAppid) && appid.equals(miniAppid)) { + signKey = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_ROUTINE_APP_KEY); + } + if (StrUtil.isNotBlank(appAppid) && appid.equals(appAppid)) { + signKey = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_WE_CHAT_APP_APP_KEY); + } + return signKey; + } + + /** + * java自带的是PKCS5Padding填充,不支持PKCS7Padding填充。 + * 通过BouncyCastle组件来让java里面支持PKCS7Padding填充 + * 在加解密之前加上:Security.addProvider(new BouncyCastleProvider()), + * 并给Cipher.getInstance方法传入参数来指定Java使用这个库里的加/解密算法。 + */ + public static String decryptToStr(String reqInfo, String signKey) throws Exception { + Security.addProvider(new BouncyCastleProvider()); +// byte[] decodeReqInfo = Base64.decode(reqInfo); + byte[] decodeReqInfo = base64DecodeJustForWxPay(reqInfo).getBytes(StandardCharsets.ISO_8859_1); + SecretKeySpec key = new SecretKeySpec(SecureUtil.md5(signKey).toLowerCase().getBytes(), "AES"); + Cipher cipher; + cipher = Cipher.getInstance("AES/ECB/PKCS7Padding"); + cipher.init(Cipher.DECRYPT_MODE, key); + return new String(cipher.doFinal(decodeReqInfo), StandardCharsets.UTF_8); + } + + private static final List list = new ArrayList<>(); + static { + list.add("total_fee"); + list.add("cash_fee"); + list.add("coupon_fee"); + list.add("coupon_count"); + list.add("refund_fee"); + list.add("settlement_refund_fee"); + list.add("settlement_total_fee"); + list.add("cash_refund_fee"); + list.add("coupon_refund_fee"); + list.add("coupon_refund_count"); + } + + private Map _strMap2ObjMap(Map params) { + Map map = new HashMap<>(); + for (Map.Entry entry : params.entrySet()) { + if (list.contains(entry.getKey())) { + try { + map.put(entry.getKey(), Integer.parseInt(entry.getValue())); + } catch (NumberFormatException e) { + map.put(entry.getKey(), 0); + logger.error("字段格式错误,key==》" + entry.getKey() + ", value==》" + entry.getValue()); + } + continue; + } + + map.put(entry.getKey(), entry.getValue()); + } + return map; + } + + /** + * 仅仅为微信解析密文使用 + * @param source 待解析密文 + * @return 结果 + */ + public static String base64DecodeJustForWxPay(final String source) { + String result = ""; + final Base64.Decoder decoder = Base64.getDecoder(); + try { + result = new String(decoder.decode(source), "ISO-8859-1"); + } catch (final UnsupportedEncodingException e) { + e.printStackTrace(); + } + return result; + } +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/CategoryServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/CategoryServiceImpl.java new file mode 100644 index 0000000..543037b --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/CategoryServiceImpl.java @@ -0,0 +1,425 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.constants.CategoryConstants; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.vo.CategoryTreeVo; +import com.github.pagehelper.PageHelper; +import com.zbkj.common.utils.CrmebUtil; +import com.zbkj.common.model.category.Category; +import com.zbkj.common.request.CategoryRequest; +import com.zbkj.common.request.CategorySearchRequest; +import com.zbkj.service.dao.CategoryDao; +import com.zbkj.service.service.CategoryService; +import com.zbkj.service.service.SystemAttachmentService; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * CategoryServiceImpl 接口实现 +* +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- +*/ +@Service +public class CategoryServiceImpl extends ServiceImpl implements CategoryService { + + @Resource + private CategoryDao dao; + + @Autowired + private SystemAttachmentService systemAttachmentService; + + + /** + * 获取分类下子类的数量 + * @param request 请求参数 + * @param pageParamRequest 分页参数 + * @author Mr.Zhang + * @since 2020-04-16 + * @return List + */ + @Override + public List getList(CategorySearchRequest request, PageParamRequest pageParamRequest) { + PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + if(null != request.getPid()){ + lambdaQueryWrapper.eq(Category::getPid, request.getPid()); + } + if(null != request.getType()){ + lambdaQueryWrapper.eq(Category::getType, request.getType()); + } + if(ObjectUtil.isNotNull(request.getStatus()) && request.getStatus() >= 0){ + lambdaQueryWrapper.eq(Category::getStatus, request.getStatus().equals(CategoryConstants.CATEGORY_STATUS_NORMAL)); + } + if(null != request.getName()){ + lambdaQueryWrapper.like(Category::getName, request.getName()); + } + lambdaQueryWrapper.orderByDesc(Category::getSort).orderByDesc(Category::getId); + return dao.selectList(lambdaQueryWrapper); + } + + /** + * 通过id集合获取列表 + * @param idList List id集合 + * @author Mr.Zhang + * @since 2020-04-16 + * @return List + */ + @Override + public List getByIds(List idList) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.in(Category::getId, idList); + return dao.selectList(lambdaQueryWrapper); + } + + /** + * 通过id集合获取列表 id => name + * @param cateIdList List id集合 + * @author Mr.Zhang + * @since 2020-04-16 + * @return HashMap + */ + @Override + public HashMap getListInId(List cateIdList) { + HashMap map = new HashMap<>(); + List list = getByIds(cateIdList); + for (Category category : list){ + map.put(category.getId(), category.getName()); + } + + return map; + } + + /** + * 查询id和url是否存在 + * @author Mr.Zhang + * @since 2020-04-16 + * @return Boolean + */ + @Override + public Boolean checkAuth(List pathIdList, String uri) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.in(Category::getId, pathIdList).eq(Category::getUrl, uri); + List categoryList = dao.selectList(lambdaQueryWrapper); + if(categoryList.size() < 1){ + return false; + } + + return true; + } + + /** + * 修改 + * @param request CategoryRequest + * @param id Integer + * @author Mr.Zhang + * @since 2020-04-16 + * @return bool + */ + @Override + public boolean update(CategoryRequest request, Integer id) { + try{ + //修改分类信息 + Category category = new Category(); + BeanUtils.copyProperties(request, category); + category.setId(id); + category.setPath(getPathByPId(category.getPid())); + + updateById(category); + + //如状态为关闭,那么所以子集的状态都关闭 + if(!request.getStatus()){ + updateStatusByPid(id, false); + }else{ + //如是开启,则父类的状态为开启 + updatePidStatusById(id); + } + + return true; + }catch (Exception e){ + e.printStackTrace(); + return false; + } + } + + /** + * 开启父级状态 + * @param id Integer + * @author Mr.Zhang + * @since 2020-04-16 + */ + private void updatePidStatusById(Integer id) { + Category category = getById(id); + List categoryIdList = CrmebUtil.stringToArrayByRegex(category.getPath(), "/"); + categoryIdList.removeIf(i -> i.equals(0)); + ArrayList categoryArrayList = new ArrayList<>(); + if(categoryIdList.size() < 1){ + return; + } + for (Integer categoryId: categoryIdList) { + Category categoryVo = new Category(); + categoryVo.setId(categoryId); + categoryVo.setStatus(true); + categoryArrayList.add(categoryVo); + } + updateBatchById(categoryArrayList); + } + + /** + * 获取分类下子类的数量 + * @param pid Integer + * @author Mr.Zhang + * @since 2020-04-16 + * @return bool + */ + private int getChildCountByPid(Integer pid) { + //查看是否有子类 + QueryWrapper objectQueryWrapper = new QueryWrapper<>(); + objectQueryWrapper.like("path", "/"+pid+"/"); + return dao.selectCount(objectQueryWrapper); + } + + /** + * 修改分类以及子类的状态 + * @param pid Integer + * @author Mr.Zhang + * @since 2020-04-16 + * @return bool + */ + private int updateStatusByPid(Integer pid, boolean status) { + //查看是否有子类 + Category category = new Category(); + category.setStatus(status); + + QueryWrapper objectQueryWrapper = new QueryWrapper<>(); + objectQueryWrapper.like("path", "/"+pid+"/"); + return dao.update(category, objectQueryWrapper); + } + + private String getPathByPId(Integer pid) { + Category category = getById(pid); + if(null != category){ + return category.getPath() + pid + "/"; + } + return null; + } + + /** + * 带结构的无线级分类 + * @author Mr.Zhang + * @since 2020-04-16 + */ + @Override + public List getListTree(Integer type, Integer status, String name) { + return getTree(type, status,name,null); + } + + /** + * 带权限的属性结构 + */ + @Override + public List getListTree(Integer type, Integer status, List categoryIdList) { + System.out.println("菜单列表:getListTree: type:" + type + "| status:" + status + "| categoryIdList:" + JSON.toJSONString(categoryIdList)); + return getTree(type, status,null,categoryIdList); + } + + /** + * 带结构的无线级分类 + * @author Mr.Zhang + * @since 2020-04-16 + */ + private List getTree(Integer type, Integer status,String name, List categoryIdList) { + //循环数据,把数据对象变成带list结构的vo + List treeList = new ArrayList<>(); + + LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(); + lambdaQueryWrapper.eq(Category::getType, type); + + if(null != categoryIdList && categoryIdList.size() > 0){ + lambdaQueryWrapper.in(Category::getId, categoryIdList); + } + + if(status >= 0){ + lambdaQueryWrapper.eq(Category::getStatus, status); + } + if(StringUtils.isNotBlank(name)){ // 根据名称模糊搜索 + lambdaQueryWrapper.like(Category::getName,name); + } + + lambdaQueryWrapper.orderByDesc(Category::getSort); + lambdaQueryWrapper.orderByAsc(Category::getId); + List allTree = dao.selectList(lambdaQueryWrapper); + if(allTree == null){ + return null; + } + // 根据名称搜索特殊处理 这里仅仅处理两层搜索后有子父级关系的数据 + if(StringUtils.isNotBlank(name) && allTree.size() >0){ + List searchCategory = new ArrayList<>(); + List categoryIds = allTree.stream().map(Category::getId).collect(Collectors.toList()); + + List pidList = allTree.stream().filter(c -> c.getPid() > 0 && !categoryIds.contains(c.getPid())) + .map(Category::getPid).distinct().collect(Collectors.toList()); + if (CollUtil.isNotEmpty(pidList)) { + pidList.forEach(pid -> { + searchCategory.add(dao.selectById(pid)); + }); + } + allTree.addAll(searchCategory); + } + + for (Category category: allTree) { + CategoryTreeVo categoryTreeVo = new CategoryTreeVo(); + BeanUtils.copyProperties(category, categoryTreeVo); + treeList.add(categoryTreeVo); + } + + + //返回 + Map map = new HashMap<>(); + //ID 为 key 存储到map 中 + for (CategoryTreeVo categoryTreeVo1 : treeList) { + map.put(categoryTreeVo1.getId(), categoryTreeVo1); + } + + List list = new ArrayList<>(); + for (CategoryTreeVo tree : treeList) { + //子集ID返回对象,有则添加。 + CategoryTreeVo tree1 = map.get(tree.getPid()); + if(tree1 != null){ + tree1.getChild().add(tree); + }else { + list.add(tree); + } + } + System.out.println("无限极分类 : getTree:" + JSON.toJSONString(list)); + return list; + } + + /** + * 删除分类表 + * @param id Integer + * @author Mr.Zhang + * @since 2020-04-16 + * @return bool + */ + @Override + public int delete(Integer id) { + //查看是否有子类, 物理删除 + if(getChildCountByPid(id) > 0){ + throw new CrmebException("当前分类下有子类,请先删除子类!"); + } + + return dao.deleteById(id); + } + + /** + * 获取分类下子类 + * @param pid Integer + * @author Mr.Zhang + * @since 2020-04-16 + * @return List + */ + @Override + public List getChildVoListByPid(Integer pid) { + //查看是否有子类 + QueryWrapper objectQueryWrapper = new QueryWrapper<>(); + objectQueryWrapper.eq("status", CategoryConstants.CATEGORY_STATUS_NORMAL); + objectQueryWrapper.like("path", "/"+pid+"/"); + return dao.selectList(objectQueryWrapper); + } + + /** + * 检测分类名称是否存在 + * @param name String 分类名 + * @param type int 类型 + * @author Mr.Zhang + * @since 2020-04-16 + * @return int + */ + private int checkName(String name, Integer type) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(Category::getName, name); + if (ObjectUtil.isNotNull(type)) { + lambdaQueryWrapper.eq(Category::getType, type); + } + return dao.selectCount(lambdaQueryWrapper); + } + + /** + * 检测url是否存在 + * @param uri String url + * @author Mr.Zhang + * @since 2020-04-16 + * @return int + */ + @Override + public boolean checkUrl(String uri) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(Category::getUrl, uri); + return dao.selectCount(lambdaQueryWrapper) > 0; + } + + @Override + public boolean updateStatus(Integer id) { + Category category = getById(id); + category.setStatus(!category.getStatus()); + return updateById(category); + } + + /** + * 新增分类 + * @param categoryRequest + */ + @Override + public Boolean create(CategoryRequest categoryRequest) { + //检测标题是否存在 + if(checkName(categoryRequest.getName(), categoryRequest.getType()) > 0){ + throw new CrmebException("此分类已存在"); + } + Category category = new Category(); + BeanUtils.copyProperties(categoryRequest, category); + category.setPath(getPathByPId(category.getPid())); + category.setExtra(systemAttachmentService.clearPrefix(category.getExtra())); + return save(category); + } + + /** + * 获取文章分类列表 + * @return List + */ + @Override + public List findArticleCategoryList() { + LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(); + lambdaQueryWrapper.select(Category::getId, Category::getName); + lambdaQueryWrapper.eq(Category::getType, Constants.CATEGORY_TYPE_ARTICLE); + lambdaQueryWrapper.eq(Category::getStatus, true); + lambdaQueryWrapper.orderByDesc(Category::getSort); + lambdaQueryWrapper.orderByAsc(Category::getId); + return dao.selectList(lambdaQueryWrapper); + } +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/CosServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/CosServiceImpl.java new file mode 100644 index 0000000..e31afbb --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/CosServiceImpl.java @@ -0,0 +1,102 @@ +package com.zbkj.service.service.impl; + +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.vo.CloudVo; +import com.qcloud.cos.COSClient; +import com.qcloud.cos.exception.CosClientException; +import com.qcloud.cos.model.*; +import com.zbkj.service.service.CosService; +import com.zbkj.service.service.SystemAttachmentService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Service; + +import java.io.File; + + +/** + * CosServiceImpl 同步到云服务 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class CosServiceImpl implements CosService { + + private static final Logger logger = LoggerFactory.getLogger(CosServiceImpl.class); + + @Lazy + @Autowired + private SystemAttachmentService systemAttachmentService; + + @Override + public void uploadFile(CloudVo cloudVo, String webPth, String localFile, Integer id, COSClient cosClient) { + + logger.info("上传文件" + id + "开始:" + localFile); + try { + File file = new File(localFile); + if(!file.exists()){ + logger.info("上传文件"+ id + localFile + "不存在:"); + return; + } + + if(!cosClient.doesBucketExist(cloudVo.getBucketName())){ + CreateBucketRequest createBucketRequest = new CreateBucketRequest(cloudVo.getBucketName()); + // 设置 bucket 的权限为 Private(私有读写), 其他可选有公有读私有写, 公有读写 + createBucketRequest.setCannedAcl(CannedAccessControlList.Private); + + try{ + cosClient.createBucket(createBucketRequest); + } catch (CosClientException serverException) { + serverException.printStackTrace(); + } + } + + PutObjectRequest putObjectRequest = new PutObjectRequest(cloudVo.getBucketName(), webPth, file); + PutObjectResult putObjectResult = cosClient.putObject(putObjectRequest); + + logger.info("上传文件" + id + " -- 结束:" + putObjectResult.getETag()); + } catch (Exception e) { + throw new CrmebException(e.getMessage()); + } + } + + @Override + public void uploadFile(CloudVo cloudVo, String webPth, String localFile, File file, COSClient cosClient) { + logger.info("上传文件开始:" + localFile); + try { + if(!file.exists()){ + logger.info("上传文件" + localFile + "不存在:"); + return; + } + + if(!cosClient.doesBucketExist(cloudVo.getBucketName())){ + CreateBucketRequest createBucketRequest = new CreateBucketRequest(cloudVo.getBucketName()); + // 设置 bucket 的权限为 Private(私有读写), 其他可选有公有读私有写, 公有读写 + createBucketRequest.setCannedAcl(CannedAccessControlList.Private); + + try{ + cosClient.createBucket(createBucketRequest); + } catch (CosClientException serverException) { + serverException.printStackTrace(); + } + } + + PutObjectRequest putObjectRequest = new PutObjectRequest(cloudVo.getBucketName(), webPth, file); + PutObjectResult putObjectResult = cosClient.putObject(putObjectRequest); + + logger.info("上传文件 -- 结束:" + putObjectResult.getETag()); + } catch (Exception e) { + throw new CrmebException(e.getMessage()); + } + } +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/CrmebGeneratorCodeService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/CrmebGeneratorCodeService.java new file mode 100644 index 0000000..5cb464e --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/CrmebGeneratorCodeService.java @@ -0,0 +1,77 @@ +package com.zbkj.service.service.impl; + +import com.github.pagehelper.Page; +import com.github.pagehelper.PageHelper; +import com.zbkj.common.utils.genutils.GenCodePageListUtils; +import com.zbkj.common.utils.genutils.GenCodeUtils; +import com.zbkj.common.utils.genutils.GenCodePageQueryUtils; +import com.zbkj.service.dao.MySqlGenDao; +import org.apache.commons.io.IOUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.io.ByteArrayOutputStream; +import java.util.List; +import java.util.Map; +import java.util.zip.ZipOutputStream; + +/** + * 代码生成也业务类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class CrmebGeneratorCodeService { + + @Autowired + private MySqlGenDao mySqlGenDao; + + /** + * 查询数据库对应表 + * @param pageQueryUtils + * @return + */ + public GenCodePageListUtils queryList(GenCodePageQueryUtils pageQueryUtils) { + Page page = PageHelper.startPage(pageQueryUtils.getPage(), pageQueryUtils.getLimit()); + List> list = mySqlGenDao.getList(pageQueryUtils); + int total = (int) page.getTotal(); + return new GenCodePageListUtils(list, total, pageQueryUtils.getLimit(), pageQueryUtils.getPage()); + } + + public Map queryTable(String tableName) { + return mySqlGenDao.getTable(tableName); + } + + public List> queryColumns(String tableName) { + return mySqlGenDao.getColumns(tableName); + } + + + /** + * 参训数据库表对应的列数据 + * @param tableNames 数据库表名称 + * @return byte 数组 + */ + public byte[] generatorCode(String[] tableNames) { + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + ZipOutputStream zip = new ZipOutputStream(outputStream); + for (String tableName : tableNames) { + //查询表信息 + Map table = queryTable(tableName); + //查询列信息 + List> columns = queryColumns(tableName); + //生成代码 + GenCodeUtils.generatorCode(table, columns, zip); + } + + IOUtils.closeQuietly(zip); + return outputStream.toByteArray(); + } +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/ExcelServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/ExcelServiceImpl.java new file mode 100644 index 0000000..dfdfbf2 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/ExcelServiceImpl.java @@ -0,0 +1,293 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.collection.CollUtil; +import com.zbkj.common.config.CrmebConfig; +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.request.*; +import com.zbkj.common.response.StoreOrderDetailResponse; +import com.zbkj.common.response.StoreProductResponse; +import com.github.pagehelper.PageInfo; +import com.zbkj.common.utils.CrmebUtil; +import com.zbkj.common.utils.DateUtil; +import com.zbkj.common.utils.ExportUtil; +import com.zbkj.common.response.StoreBargainResponse; +import com.zbkj.common.response.StoreCombinationResponse; +import com.zbkj.common.vo.BargainProductExcelVo; +import com.zbkj.common.vo.CombinationProductExcelVo; +import com.zbkj.common.vo.OrderExcelVo; +import com.zbkj.common.vo.ProductExcelVo; +import com.zbkj.service.service.*; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.stream.Collectors; + +/** +* ExcelServiceImpl 接口实现 +* +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- +*/ +@Service +public class ExcelServiceImpl implements ExcelService { + + @Autowired + private StoreProductService storeProductService; + + @Autowired + private CategoryService categoryService; + + @Autowired + private StoreBargainService storeBargainService; + + @Autowired + private SystemConfigService systemConfigService; + + @Autowired + private StoreCombinationService storeCombinationService; + + @Autowired + private StoreOrderService storeOrderService; + + @Autowired + private CrmebConfig crmebConfig; + + /** + * 导出砍价商品 + * @param request 请求参数 + * @return 导出地址 + */ + @Override + public String exportBargainProduct(StoreBargainSearchRequest request) { + PageParamRequest pageParamRequest = new PageParamRequest(); + pageParamRequest.setPage(Constants.DEFAULT_PAGE); + pageParamRequest.setLimit(Constants.EXPORT_MAX_LIMIT); + PageInfo page = storeBargainService.getList(request, pageParamRequest); + if (CollUtil.isEmpty(page.getList())) throw new CrmebException("没有可导出的数据!"); + List list = page.getList(); + List voList = list.stream().map(temp -> { + BargainProductExcelVo vo = new BargainProductExcelVo(); + BeanUtils.copyProperties(temp, vo); + vo.setPrice("¥".concat(temp.getPrice().toString())); + vo.setStatus(temp.getStatus() ? "开启" : "关闭"); + vo.setStartTime(temp.getStartTime()); + vo.setStopTime(temp.getStopTime()); + vo.setAddTime(temp.getAddTime()); + return vo; + }).collect(Collectors.toList()); + + // 上传设置 + ExportUtil.setUpload(crmebConfig.getImagePath(), Constants.UPLOAD_MODEL_PATH_EXCEL, Constants.UPLOAD_TYPE_FILE); + + // 文件名 + String fileName = "砍价".concat(DateUtil.nowDateTime(Constants.DATE_TIME_FORMAT_NUM)).concat(CrmebUtil.randomCount(111111111, 999999999).toString()).concat(".xlsx"); + + //自定义标题别名 + LinkedHashMap aliasMap = new LinkedHashMap<>(); + aliasMap.put("title", "砍价活动名称"); + aliasMap.put("info", "砍价活动简介"); + aliasMap.put("price", "砍价金额"); + aliasMap.put("bargainNum", "用户每次砍价的次数"); + aliasMap.put("status", "砍价状态"); + aliasMap.put("startTime", "砍价开启时间"); + aliasMap.put("stopTime", "砍价结束时间"); + aliasMap.put("sales", "销量"); + aliasMap.put("quotaShow", "库存"); + aliasMap.put("giveIntegral", "返多少积分"); + aliasMap.put("addTime", "添加时间"); + + return ExportUtil.exportExecl(fileName, "砍价商品导出", voList, aliasMap); + } + + /** + * 导出拼团商品 + * @param request 请求参数 + * @return 导出地址 + */ + @Override + public String exportCombinationProduct(StoreCombinationSearchRequest request) { + PageParamRequest pageParamRequest = new PageParamRequest(); + pageParamRequest.setPage(Constants.DEFAULT_PAGE); + pageParamRequest.setLimit(Constants.EXPORT_MAX_LIMIT); + PageInfo page = storeCombinationService.getList(request, pageParamRequest); + if (CollUtil.isEmpty(page.getList())) throw new CrmebException("没有可导出的数据!"); + List list = page.getList(); + List voList = list.stream().map(temp -> { + CombinationProductExcelVo vo = new CombinationProductExcelVo(); + BeanUtils.copyProperties(temp, vo); + vo.setIsShow(temp.getIsShow() ? "开启" : "关闭"); + vo.setStopTime(DateUtil.timestamp2DateStr(temp.getStopTime(), Constants.DATE_FORMAT_DATE)); + return vo; + }).collect(Collectors.toList()); + + // 上传设置 + ExportUtil.setUpload(crmebConfig.getImagePath(), Constants.UPLOAD_MODEL_PATH_EXCEL, Constants.UPLOAD_TYPE_FILE); + + // 文件名 + String fileName = "拼团".concat(DateUtil.nowDateTime(Constants.DATE_TIME_FORMAT_NUM)).concat(CrmebUtil.randomCount(111111111, 999999999).toString()).concat(".xlsx"); + + //自定义标题别名 + LinkedHashMap aliasMap = new LinkedHashMap<>(); + aliasMap.put("id", "编号"); + aliasMap.put("title", "拼团名称"); + aliasMap.put("otPrice", "原价"); + aliasMap.put("price", "拼团价"); + aliasMap.put("quotaShow", "库存"); + aliasMap.put("countPeople", "拼团人数"); + aliasMap.put("countPeopleAll", "参与人数"); + aliasMap.put("countPeoplePink", "成团数量"); + aliasMap.put("sales", "销量"); + aliasMap.put("isShow", "商品状态"); + aliasMap.put("stopTime", "拼团结束时间"); + + return ExportUtil.exportExecl(fileName, "拼团商品导出", voList, aliasMap); + } + + /** + * 商品导出 + * @param request 请求参数 + * @return 导出地址 + */ + @Override + public String exportProduct(StoreProductSearchRequest request) { + PageParamRequest pageParamRequest = new PageParamRequest(); + pageParamRequest.setPage(Constants.DEFAULT_PAGE); + pageParamRequest.setLimit(Constants.EXPORT_MAX_LIMIT); + PageInfo storeProductResponsePageInfo = storeProductService.getAdminList(request, pageParamRequest); + List list = storeProductResponsePageInfo.getList(); + if(list.size() < 1){ + throw new CrmebException("没有可导出的数据!"); + } + + //产品分类id + List cateIdListStr = list.stream().map(StoreProductResponse::getCateId).distinct().collect(Collectors.toList()); + + HashMap categoryNameList = new HashMap(); + if(cateIdListStr.size() > 0){ + String join = StringUtils.join(cateIdListStr, ","); + List cateIdList = CrmebUtil.stringToArray(join); + categoryNameList = categoryService.getListInId(cateIdList); + } + List voList = CollUtil.newArrayList(); + for (StoreProductResponse product : list ) { + ProductExcelVo vo = new ProductExcelVo(); + vo.setStoreName(product.getStoreName()); + vo.setStoreInfo(product.getStoreInfo()); + vo.setCateName(CrmebUtil.getValueByIndex(categoryNameList, product.getCateId())); + vo.setPrice("¥" + product.getPrice()); + vo.setStock(product.getStock().toString()); + vo.setSales(product.getSales().toString()); + vo.setBrowse(product.getBrowse().toString()); + voList.add(vo); + } + + /** + * =============================== + * 以下为存储部分 + * =============================== + */ + // 上传设置 + ExportUtil.setUpload(crmebConfig.getImagePath(), Constants.UPLOAD_MODEL_PATH_EXCEL, Constants.UPLOAD_TYPE_FILE); + + // 文件名 + String fileName = "商品导出_".concat(DateUtil.nowDateTime(Constants.DATE_TIME_FORMAT_NUM)).concat(CrmebUtil.randomCount(111111111, 999999999).toString()).concat(".xlsx"); + + //自定义标题别名 + LinkedHashMap aliasMap = new LinkedHashMap<>(); + aliasMap.put("storeName", "商品名称"); + aliasMap.put("storeInfo", "商品简介"); + aliasMap.put("cateName", "商品分类"); + aliasMap.put("price", "价格"); + aliasMap.put("stock", "库存"); + aliasMap.put("sales", "销量"); + aliasMap.put("browse", "浏览量"); + + return ExportUtil.exportExecl(fileName, "商品导出", voList, aliasMap); + } + + /** + * 订单导出 + * + * @param request 查询条件 + * @return 文件名称 + */ + @Override + public String exportOrder(StoreOrderSearchRequest request) { + PageParamRequest pageParamRequest = new PageParamRequest(); + pageParamRequest.setPage(Constants.DEFAULT_PAGE); + pageParamRequest.setLimit(Constants.EXPORT_MAX_LIMIT); + CommonPage adminList = storeOrderService.getAdminList(request, pageParamRequest); + List list = adminList.getList(); + if(list.size() < 1){ + throw new CrmebException("没有可导出的数据!"); + } + + List voList = CollUtil.newArrayList(); + for (StoreOrderDetailResponse order: list ) { + OrderExcelVo vo = new OrderExcelVo(); + vo.setCreateTime(DateUtil.dateToStr(order.getCreateTime(), "yyyy-MM-dd HH:mm:ss")); + vo.setOrderId(order.getOrderId()); + vo.setOrderType(order.getOrderType()); + vo.setPayPrice(order.getPayPrice().toString()); + vo.setPayTypeStr(order.getPayTypeStr()); + vo.setProductName(order.getProductList().stream().map(item-> item.getInfo().getProductName()).collect(Collectors.joining(","))); + vo.setRealName(order.getRealName()); + vo.setStatusStr(order.getStatusStr().get("value")); + voList.add(vo); + } + + /* + =============================== + 以下为存储部分 + =============================== + */ + // 上传设置 + ExportUtil.setUpload(crmebConfig.getImagePath(), Constants.UPLOAD_MODEL_PATH_EXCEL, Constants.UPLOAD_TYPE_FILE); + + // 文件名 + String fileName = "订单导出_".concat(DateUtil.nowDateTime(Constants.DATE_TIME_FORMAT_NUM)).concat(CrmebUtil.randomCount(111111111, 999999999).toString()).concat(".xlsx"); + + //自定义标题别名 + LinkedHashMap aliasMap = new LinkedHashMap<>(); + aliasMap.put("orderId", "订单号"); + aliasMap.put("payPrice", "实际支付金额"); +// aliasMap.put("payType", "支付方式"); + aliasMap.put("createTime", "创建时间"); +// aliasMap.put("status", "订单状态"); + aliasMap.put("productName", "商品信息"); + aliasMap.put("statusStr", "订单状态"); + aliasMap.put("payTypeStr", "支付方式"); +// aliasMap.put("isDel", "是否删除"); +// aliasMap.put("refundReasonWapImg", "退款图片"); +// aliasMap.put("refundReasonWapExplain", "退款用户说明"); +// aliasMap.put("refundReasonTime", "退款时间"); +// aliasMap.put("refundReasonWap", "前台退款原因"); +// aliasMap.put("refundReason", "不退款的理由"); +// aliasMap.put("refundPrice", "退款金额"); +// aliasMap.put("refundStatus", "退款状态状态,0 未退款 1 申请中 2 已退款"); +// aliasMap.put("verifyCode", "核销码"); + aliasMap.put("orderType", "订单类型"); +// aliasMap.put("remark", "订单管理员备注"); + aliasMap.put("realName", "用户姓名"); +// aliasMap.put("paid", "支付状态"); +// aliasMap.put("type", "订单类型:0-普通订单,1-视频号订单"); +// aliasMap.put("isAlterPrice", "是否改价,0-否,1-是"); + + return ExportUtil.exportExecl(fileName, "订单导出", voList, aliasMap); + + } +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/ExpressServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/ExpressServiceImpl.java new file mode 100644 index 0000000..0311c82 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/ExpressServiceImpl.java @@ -0,0 +1,259 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.constants.OnePassConstants; +import com.zbkj.common.exception.CrmebException; +import com.github.pagehelper.PageHelper; +import com.zbkj.common.utils.RedisUtil; +import com.zbkj.common.model.express.Express; +import com.zbkj.common.request.ExpressSearchRequest; +import com.zbkj.common.request.ExpressUpdateRequest; +import com.zbkj.common.request.ExpressUpdateShowRequest; +import com.zbkj.service.dao.ExpressDao; +import com.zbkj.service.service.ExpressService; +import com.zbkj.service.util.OnePassUtil; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.List; +import java.util.Optional; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +/** + * ExpressServiceImpl 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- +*/ +@Service +public class ExpressServiceImpl extends ServiceImpl implements ExpressService { + + @Resource + private ExpressDao dao; + + @Autowired + private RedisUtil redisUtil; + + @Autowired + private OnePassUtil onePassUtil; + + /** + * 分页显示快递公司表 + * @param request 搜索条件 + * @param pageParamRequest 分页参数 + */ + @Override + public List getList(ExpressSearchRequest request, PageParamRequest pageParamRequest) { + PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + if (StrUtil.isNotBlank(request.getKeywords())) { + lambdaQueryWrapper.like(Express::getCode, request.getKeywords()).or().like(Express::getName, request.getKeywords()); + } + // 排序:sort字段倒序,正常id正序,方便展示常用物流公司 + lambdaQueryWrapper.orderByDesc(Express::getSort); + lambdaQueryWrapper.orderByAsc(Express::getId); + return dao.selectList(lambdaQueryWrapper); + } + + /** + * 编辑 + */ + @Override + public Boolean updateExpress(ExpressUpdateRequest expressRequest) { + Express temp = getById(expressRequest.getId()); + if (ObjectUtil.isNull(temp)) throw new CrmebException("快递公司不存在!"); + + if (StrUtil.isBlank(expressRequest.getAccount()) && temp.getPartnerId().equals(true)) { + throw new CrmebException("请输入月结账号"); + } + if (StrUtil.isBlank(expressRequest.getPassword()) && temp.getPartnerKey().equals(true)) { + throw new CrmebException("请输入月结密码"); + } + if (StrUtil.isBlank(expressRequest.getNetName()) && temp.getNet().equals(true)) { + throw new CrmebException("请输入取件网点"); + } + Express express = new Express(); + BeanUtils.copyProperties(expressRequest, express); + return updateById(express); + } + + /** + * 修改显示状态 + */ + @Override + public Boolean updateExpressShow(ExpressUpdateShowRequest expressRequest) { + Express temp = getById(expressRequest.getId()); + if (ObjectUtil.isNull(temp)) throw new CrmebException("编辑的记录不存在!"); + if (temp.getIsShow().equals(expressRequest.getIsShow())) { + return Boolean.TRUE; + } + Express express = new Express(); + BeanUtils.copyProperties(expressRequest, express); + return updateById(express); + } + + /** + * 同步物流公司 + */ + @Override + public Boolean syncExpress() { + if (redisUtil.exists(OnePassConstants.ONE_PASS_EXPRESS_CACHE_KEY)) { + return Boolean.TRUE; + } + getExpressList(); + + redisUtil.set(OnePassConstants.ONE_PASS_EXPRESS_CACHE_KEY, 1, 3600L, TimeUnit.SECONDS); + return Boolean.TRUE; + } + + /** + * 查询全部物流公司 + * @param type 类型:normal-普通,elec-电子面单 + */ + @Override + public List findAll(String type) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(Express::getIsShow, true); + if ("elec".equals(type)) { + lqw.eq(Express::getStatus, true); + } + lqw.orderByDesc(Express::getSort); + lqw.orderByAsc(Express::getId); + return dao.selectList(lqw); + } + + /** + * 查询物流公司面单模板 + * @param com 快递公司编号 + */ + @Override + public JSONObject template(String com) { + String token = onePassUtil.getToken(); + HashMap header = onePassUtil.getCommonHeader(token); + MultiValueMap param = new LinkedMultiValueMap<>(); + param.add("com", com); + return onePassUtil.postFrom(OnePassConstants.ONE_PASS_API_URL + OnePassConstants.ONE_PASS_API_EXPRESS_TEMP_URI, param, header); + } + + /** + * 查询快递公司 + * @param code 快递公司编号 + */ + @Override + public Express getByCode(String code) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(Express::getCode, code); + return dao.selectOne(lqw); + } + + /** + * 通过物流公司名称获取 + * @param name 物流公司名称 + */ + @Override + public Express getByName(String name) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(Express::getName, name); + lqw.last(" limit 1"); + return dao.selectOne(lqw); + } + + /** + * 获取快递公司详情 + * @param id 快递公司id + */ + @Override + public Express getInfo(Integer id) { + Express express = getById(id); + if (ObjectUtil.isNull(express)) { + throw new CrmebException("快递公司不存在"); + } + return express; + } + + /** + * 从平台获取物流公司 + * 并存入数据库 + */ + private void getExpressList() { + String token = onePassUtil.getToken(); + HashMap header = onePassUtil.getCommonHeader(token); + MultiValueMap param = new LinkedMultiValueMap<>(); + // param.add("type", 1);// 快递类型:1,国内运输商;2,国际运输商;3,国际邮政 不传获取全部 + param.add("page", 0); + param.add("limit", 1000); + + JSONObject post = onePassUtil.postFrom(OnePassConstants.ONE_PASS_API_URL + OnePassConstants.ONE_PASS_API_EXPRESS_URI, param, header); + System.out.println("OnePass Express ALL post = " + post); + JSONObject jsonObject = post.getJSONObject("data"); + JSONArray jsonArray = jsonObject.getJSONArray("data"); + if (CollUtil.isEmpty(jsonArray)) return; + + List expressList = CollUtil.newArrayList(); + List codeList = getAllCode(); + jsonArray.forEach(temp -> { + JSONObject object = (JSONObject) temp; + if (StrUtil.isNotBlank(object.getString("code")) && !codeList.contains(object.getString("code"))) { + Express express = new Express(); + express.setName(Optional.ofNullable(object.getString("name")).orElse("")); + express.setCode(Optional.ofNullable(object.getString("code")).orElse("")); + express.setPartnerId(false); + express.setPartnerKey(false); + express.setNet(false); + if (ObjectUtil.isNotNull(object.getInteger("partner_id"))) { + express.setPartnerId(object.getInteger("partner_id") == 1); + } + if (ObjectUtil.isNotNull(object.getInteger("partner_key"))) { + express.setPartnerKey(object.getInteger("partner_key") == 1); + } + if (ObjectUtil.isNotNull(object.getInteger("net"))) { + express.setNet(object.getInteger("net") == 1); + } + express.setIsShow(true); + express.setStatus(false); + if (!express.getPartnerId() && !express.getPartnerKey() && !express.getNet()) { + express.setStatus(true); + } + expressList.add(express); + } + }); + + if (CollUtil.isNotEmpty(expressList)) { + boolean saveBatch = saveBatch(expressList); + if (!saveBatch) throw new CrmebException("同步物流公司失败"); + } + } + + /** + * 获取所有物流公司code + */ + private List getAllCode() { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.select(Express::getCode); + List expressList = dao.selectList(lqw); + if (CollUtil.isEmpty(expressList)) { + return CollUtil.newArrayList(); + } + return expressList.stream().map(Express::getCode).collect(Collectors.toList()); + } +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/HomeServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/HomeServiceImpl.java new file mode 100644 index 0000000..c24451c --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/HomeServiceImpl.java @@ -0,0 +1,333 @@ +package com.zbkj.service.service.impl; + +import com.zbkj.common.constants.Constants; +import com.zbkj.common.model.order.StoreOrder; +import com.zbkj.common.response.HomeRateResponse; +import com.zbkj.common.utils.DateUtil; +import com.zbkj.service.service.HomeService; +import com.zbkj.service.service.StoreOrderService; +import com.zbkj.service.service.UserService; +import com.zbkj.service.service.UserVisitRecordService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.*; + +/** + * 用户表 服务实现类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class HomeServiceImpl implements HomeService { + + @Autowired + private StoreOrderService storeOrderService; + + @Autowired + private UserService userService; + + @Autowired + private UserVisitRecordService userVisitRecordService; + + /** + * 用户曲线图 + * @author Mr.Zhang + * @since 2020-05-16 + */ + @Override + public Map chartUser() { + return dataFormat(userService.getAddUserCountGroupDate(Constants.SEARCH_DATE_LATELY_30), Constants.SEARCH_DATE_LATELY_30); + } + + /** + * 订单量趋势 + * @author Mr.Zhang + * @since 2020-05-16 + */ + @Override + public Map chartOrder() { + Map map = new HashMap<>(); + + List list = storeOrderService.getOrderGroupByDate(Constants.SEARCH_DATE_LATELY_30, Constants.NUM_TEN); + + map.put("quality", + dataFormat(getOrderCountGroupByDate(list), Constants.SEARCH_DATE_LATELY_30) + ); + map.put("price", + dataFormat(getOrderPriceGroupByDate(list), Constants.SEARCH_DATE_LATELY_30) + ); + return map; + } + + /** + * 按开始结束时间查询每日新增订单数量 + * @param list List 时间范围 + * @author Mr.Zhang + * @since 2020-05-16 + * @return HashMap + */ + private Map getOrderCountGroupByDate(List list) { + Map map = new HashMap<>(); + + if (list.size() < 1) { + return map; + } + + for (StoreOrder storeOrder : list) { + map.put(storeOrder.getOrderId(), storeOrder.getId()); + } + + return map; + } + + /** + * 按开始结束时间查询每日新增订单销售额 + * @param list List 时间范围 + * @author Mr.Zhang + * @since 2020-05-16 + * @return HashMap + */ + private Map getOrderPriceGroupByDate(List list) { + Map map = new HashMap<>(); + + if (list.size() < 1) { + return map; + } + + for (StoreOrder storeOrder : list) { + map.put(storeOrder.getOrderId(), storeOrder.getPayPrice()); + } + + return map; + } + + /** + * 日期和数量格式化 + * @author Mr.Zhang + * @since 2020-05-16 + * @return Map + */ + private Map dataFormat(Map countGroupDate, String dateLimit) { + Map map = new LinkedHashMap<>(); + List listDate = DateUtil.getListDate(dateLimit); + + String[] weekList = new String[]{"周一", "周二", "周三", "周四", "周五", "周六", "周日"}; + + int i = 0; + for (String date : listDate) { + Object count = 0; + if (countGroupDate.containsKey(date)) { + count = countGroupDate.get(date); + } + String key; + + //周格式化 + switch(dateLimit) { + //格式化周 + case Constants.SEARCH_DATE_WEEK: + case Constants.SEARCH_DATE_PRE_WEEK: + key = weekList[i]; + break; + //格式化月 + case Constants.SEARCH_DATE_PRE_MONTH: + case Constants.SEARCH_DATE_MONTH: + key = i + 1 + ""; + break; + //默认显示两位日期 + default: + key = date.substring(5, 10); + } + map.put(key, count); + i++; + } + return map; + } + + /** + * 日期和数量格式化 + * @author Mr.Zhang + * @since 2020-05-16 + * @return Map + */ + private Map dataFormatYear(Map countGroupDate, String dateLimit) { + Map map = new LinkedHashMap<>(); + List listDate = new ArrayList<>(); + String year = ""; + if (dateLimit.equals(Constants.SEARCH_DATE_YEAR)) { + year = DateUtil.nowYear(); + } + + if (dateLimit.equals(Constants.SEARCH_DATE_PRE_YEAR)) { + year = DateUtil.lastYear(); + } + + //处理年 + //12个月份数据 + for (int i = 1; i <= 12; i++) { + String month = i + ""; + if (i < 10) { + month = "0" + i; + } + listDate.add(year + "-" + month); + } + + String[] monthList = new String[]{"一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月" , "十一月", "十二月" }; + + int i = 0; + for (Object date : listDate) { + Object count = 0; + if (countGroupDate.containsKey(date)) { + count = countGroupDate.get(date); + } + map.put(monthList[i], count); + i++; + } + return map; + } + + /** + * 用户购买统计 + * @author Mr.Zhang + * @since 2020-05-16 + */ + @Override + public Map chartUserBuy() { + Map map = new HashMap<>(); + //未消费用户 + map.put("zero", userService.getCountByPayCount(Constants.NUM_ZERO, Constants.NUM_ZERO)); + + //消费一次用户 + map.put("one", userService.getCountByPayCount(Constants.NUM_ONE, Constants.NUM_ONE)); + + //留存客户 + map.put("history", userService.getCountByPayCount(Constants.NUM_TWO, Constants.NUM_THREE)); + + //回流客户 + map.put("back", userService.getCountByPayCount(Constants.NUM_ONE, Constants.EXPORT_MAX_LIMIT)); + + return map; + } + + /** + * 周订单量趋势 + * @author Mr.Zhang + * @since 2020-05-16 + * @return Map + */ + @Override + public Map chartOrderInWeek() { + return returnOrderDate(Constants.SEARCH_DATE_WEEK, Constants.SEARCH_DATE_PRE_WEEK, Constants.NUM_TEN); + + + } + + /** + * 月订单量趋势 + * @author Mr.Zhang + * @since 2020-05-16 + * @return Map + */ + @Override + public Map chartOrderInMonth() { + return returnOrderDate(Constants.SEARCH_DATE_MONTH, Constants.SEARCH_DATE_PRE_MONTH, Constants.NUM_TEN); + } + + /** + * 年订单量趋势 + * @author Mr.Zhang + * @since 2020-05-16 + * @return Map + */ + @Override + public Map chartOrderInYear() { + Map map = new HashMap<>(); + + //查询本年订单量 + List list = storeOrderService.getOrderGroupByDate(Constants.SEARCH_DATE_YEAR, Constants.NUM_SEVEN); + + map.put("quality", + dataFormatYear(getOrderCountGroupByDate(list), Constants.SEARCH_DATE_YEAR) + ); + map.put("price", + dataFormatYear(getOrderPriceGroupByDate(list), Constants.SEARCH_DATE_YEAR) + ); + + //查询上年订单量 + List preList = storeOrderService.getOrderGroupByDate(Constants.SEARCH_DATE_PRE_YEAR, Constants.NUM_SEVEN); + + map.put("preQuality", + dataFormatYear(getOrderCountGroupByDate(preList), Constants.SEARCH_DATE_PRE_YEAR) + ); + map.put("prePrice", + dataFormatYear(getOrderPriceGroupByDate(preList), Constants.SEARCH_DATE_PRE_YEAR) + ); + + return map; + } + + /** + * 首页数据 + * 今日/昨日 + * 销售额 + * 用户访问量 + * 订单量 + * 新增用户 + * @return HomeRateResponse + */ + @Override + public HomeRateResponse indexDate() { + String today = cn.hutool.core.date.DateUtil.date().toString("yyyy-MM-dd"); + String yesterday = cn.hutool.core.date.DateUtil.yesterday().toString("yyyy-MM-dd"); + HomeRateResponse response = new HomeRateResponse(); + response.setSales(storeOrderService.getPayOrderAmountByDate(today)); + response.setYesterdaySales(storeOrderService.getPayOrderAmountByDate(yesterday)); + response.setPageviews(userVisitRecordService.getPageviewsByDate(today)); + response.setYesterdayPageviews(userVisitRecordService.getPageviewsByDate(yesterday)); + response.setOrderNum(storeOrderService.getOrderNumByDate(today)); + response.setYesterdayOrderNum(storeOrderService.getOrderNumByDate(yesterday)); + response.setNewUserNum(userService.getRegisterNumByDate(today)); + response.setYesterdayNewUserNum(userService.getRegisterNumByDate(yesterday)); + return response; + } + + /** + * 组装订单统计返回数据 + * @author Mr.Zhang + * @since 2020-05-16 + * @return Map + */ + private Map returnOrderDate(String dateLimit, String preDateLimit, int leftTime) { + Map map = new HashMap<>(); + + //查询本周周订单量 + List list = storeOrderService.getOrderGroupByDate(dateLimit, leftTime); + + map.put("quality", + dataFormat(getOrderCountGroupByDate(list), dateLimit) + ); + map.put("price", + dataFormat(getOrderPriceGroupByDate(list), dateLimit) + ); + + //查询上周周订单量 + List preList = storeOrderService.getOrderGroupByDate(preDateLimit, leftTime); + + map.put("preQuality", + dataFormat(getOrderCountGroupByDate(preList), preDateLimit) + ); + map.put("prePrice", + dataFormat(getOrderPriceGroupByDate(preList), preDateLimit) + ); + + return map; + } + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/LogisticsServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/LogisticsServiceImpl.java new file mode 100644 index 0000000..ea018a2 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/LogisticsServiceImpl.java @@ -0,0 +1,170 @@ +package com.zbkj.service.service.impl; + + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.utils.RedisUtil; +import com.zbkj.common.utils.RestTemplateUtil; +import com.zbkj.common.vo.LogisticsResultListVo; +import com.zbkj.common.vo.LogisticsResultVo; +import com.zbkj.common.vo.OnePassLogisticsQueryVo; +import com.zbkj.service.service.LogisticService; +import com.zbkj.service.service.OnePassService; +import com.zbkj.service.service.SystemConfigService; +import lombok.Data; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.List; +import java.util.concurrent.TimeUnit; + + +/** +* ExpressServiceImpl 接口实现 +* +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- +*/ +@Data +@Service +public class LogisticsServiceImpl implements LogisticService { + + @Autowired + private SystemConfigService systemConfigService; + + @Autowired + private RestTemplateUtil restTemplateUtil; + + @Autowired + private RedisUtil redisUtil; + + @Autowired + private OnePassService onePassService; + + private String redisKey = Constants.LOGISTICS_KEY; + private Long redisCacheSeconds = 1800L; + + private String expressNo; + + + /** 快递 + * @param expressNo String 物流单号 + * @param type String 快递公司字母简写:不知道可不填 95%能自动识别,填写查询速度会更快 https://market.aliyun.com/products/56928004/cmapi021863.html#sku=yuncode15863000015 + * @param com 快递公司编号 + * @author Mr.Zhang + * @since 2020-06-10 + * @return Express + */ + @Override + public LogisticsResultVo info(String expressNo, String type, String com, String phone) { + LogisticsResultVo resultVo = new LogisticsResultVo(); + setExpressNo(expressNo); + JSONObject result = getCache(); + if (ObjectUtil.isNotNull(result)) { + return JSONObject.toJavaObject(result, LogisticsResultVo.class); + } + String logisticsType = systemConfigService.getValueByKeyException("logistics_type"); + if ("1".equals(logisticsType)) {// 平台查询 + OnePassLogisticsQueryVo queryVo = onePassService.exprQuery(expressNo, com); + if (ObjectUtil.isNull(queryVo)) { + return resultVo; + } + // 一号通vo转公共返回vo + resultVo = queryToResultVo(queryVo); + String jsonString = JSONObject.toJSONString(resultVo); + saveCache(JSONObject.parseObject(jsonString)); + } + if ("2".equals(logisticsType)) {// 阿里云查询 + String appCode = systemConfigService.getValueByKey(Constants.CONFIG_KEY_LOGISTICS_APP_CODE); + + // 顺丰请输入单号 : 收件人或寄件人手机号后四位。例如:123456789:1234 + if (StrUtil.isNotBlank(com) && "shunfengkuaiyun".equals(com)) { + expressNo = expressNo.concat(":").concat(StrUtil.sub(phone, 7, -1)); + } + String url = Constants.LOGISTICS_API_URL + "?no=" + expressNo; + if(StringUtils.isNotBlank(type)){ + url += "&type=" + type; + } + + HashMap header = new HashMap<>(); + header.put("Authorization", "APPCODE " + appCode); + + JSONObject data = restTemplateUtil.getData(url, header); + checkResult(data); + //把数据解析成对象返回到前端 + result = data.getJSONObject("result"); + saveCache(result); + resultVo = JSONObject.toJavaObject(result, LogisticsResultVo.class); + } + return resultVo; + } + + /** + * 一号通vo转公共返回vo + */ + private LogisticsResultVo queryToResultVo(OnePassLogisticsQueryVo queryVo) { + LogisticsResultVo resultVo = new LogisticsResultVo(); + resultVo.setNumber(queryVo.getNum()); + resultVo.setExpName(queryVo.getCom()); + resultVo.setIsSign(queryVo.getIscheck()); + resultVo.setDeliveryStatus(queryVo.getStatus()); + + if (CollUtil.isNotEmpty(queryVo.getContent())) { + List list = CollUtil.newArrayList(); + queryVo.getContent().forEach(i -> { + LogisticsResultListVo listVo = new LogisticsResultListVo(); + listVo.setTime(i.getTime()); + listVo.setStatus(i.getStatus()); + list.add(listVo); + }); + resultVo.setList(list); + } + return resultVo; + } + + /** 获取快递缓存 + * @author Mr.Zhang + * @since 2020-07-06 + * @return JSONObject + */ + private JSONObject getCache() { + Object data = redisUtil.get(getRedisKey() + getExpressNo()); + if(null != data){ + return JSONObject.parseObject(data.toString()); + } + return null; + } + + /** 获取快递缓存 + * @param data JSONObject 需要保存的数据 + * @author Mr.Zhang + * @since 2020-07-06 + */ + private void saveCache(JSONObject data) { + redisUtil.set(getRedisKey() + getExpressNo(), data.toJSONString(), getRedisCacheSeconds(), TimeUnit.SECONDS); + } + + /** 获取快递缓存 + * @param data JSONObject 检测返回的结果 + * @author Mr.Zhang + * @since 2020-07-06 + */ + private void checkResult(JSONObject data) { + if (!"0".equals(data.getString("status"))){ + throw new CrmebException(data.getString("msg")); + } + } +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/OnePassServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/OnePassServiceImpl.java new file mode 100644 index 0000000..d28fe71 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/OnePassServiceImpl.java @@ -0,0 +1,554 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.crypto.SecureUtil; +import com.alibaba.fastjson.JSONObject; +import com.zbkj.common.request.*; +import com.zbkj.common.vo.MyRecord; +import com.zbkj.common.constants.OnePassConstants; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.utils.DateUtil; +import com.zbkj.common.utils.RedisUtil; +import com.zbkj.common.utils.ValidateFormUtil; +import com.zbkj.common.model.express.Express; +import com.zbkj.common.vo.OnePassLoginVo; +import com.zbkj.common.vo.OnePassLogisticsQueryVo; +import com.zbkj.service.service.ExpressService; +import com.zbkj.service.service.OnePassService; +import com.zbkj.service.service.SystemConfigService; +import com.zbkj.service.util.OnePassUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.support.TransactionTemplate; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.TimeUnit; + +/** + * OnePassService 接口实现 + * 一号通 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class OnePassServiceImpl implements OnePassService { + + @Autowired + private SystemConfigService systemConfigService; + + @Autowired + private RedisUtil redisUtil; + + @Autowired + private TransactionTemplate transactionTemplate; + + @Autowired + private OnePassUtil onePassUtil; + + @Autowired + private ExpressService expressService; + + /** + * 获取用户验证码 + * + * @param phone 手机号 + */ + @Override + public Object sendUserCode(String phone, Integer types) { + ValidateFormUtil.isPhoneException(phone); + MultiValueMap map = new LinkedMultiValueMap<>(); + map.add("phone", phone); + if (ObjectUtil.isNotNull(types)) { + map.add("types", types); + } + return onePassUtil.postFrom(OnePassConstants.ONE_PASS_API_URL + OnePassConstants.REGISTER_CAPTCHA_URI, map, null); + } + + /** + * 注册用户 + * + * @param registerRequest 注册参数 + * @return String + */ + @Override + public String register(OnePassRegisterRequest registerRequest) { + ValidateFormUtil.isPhoneException(registerRequest.getPhone()); + MultiValueMap map = new LinkedMultiValueMap<>(); + map.add("account", registerRequest.getAccount()); + map.add("password", SecureUtil.md5(registerRequest.getPassword())); + map.add("phone", registerRequest.getPhone()); + map.add("verify_code", registerRequest.getCode()); + map.add("url", registerRequest.getDomain()); + JSONObject post = onePassUtil.postFrom(OnePassConstants.ONE_PASS_API_URL + OnePassConstants.USER_REGISTER_URI, map, null); + + // 获取token存入Redis + String accessToken = OnePassConstants.ONE_PASS_USER_TOKEN_PREFIX.concat(post.getJSONObject("data").getString("access_token")); + Long expiresIn = post.getJSONObject("data").getLong("expires_in"); + expiresIn = expiresIn - DateUtil.getTime(); + String secret = SecureUtil.md5(registerRequest.getPhone() + SecureUtil.md5(registerRequest.getPassword())); + redisUtil.set(StrUtil.format(OnePassConstants.ONE_PASS_TOKEN_KEY_PREFIX, secret), accessToken, expiresIn, TimeUnit.SECONDS); + + //更新配置 + setConfigSmsInfo(registerRequest.getPhone(), registerRequest.getPassword()); + return post.getString("msg"); + } + + /** + * 用户登录 + */ + @Override + public MyRecord login(OnePassLoginRequest request) { + MultiValueMap param = new LinkedMultiValueMap<>(); + param.add("account", request.getAccount()); + String secret = SecureUtil.md5(request.getAccount() + SecureUtil.md5(request.getPassword())); + param.add("secret", secret); + JSONObject jsonObject = onePassUtil.postFrom(OnePassConstants.ONE_PASS_API_URL + OnePassConstants.USER_LOGIN_URI, param, null); + setConfigSmsInfo(request.getAccount(), request.getPassword()); + + String accessToken = OnePassConstants.ONE_PASS_USER_TOKEN_PREFIX.concat(jsonObject.getJSONObject("data").getString("access_token")); + Long expiresIn = jsonObject.getJSONObject("data").getLong("expires_in"); + expiresIn = expiresIn - DateUtil.getTime(); + redisUtil.set(StrUtil.format(OnePassConstants.ONE_PASS_TOKEN_KEY_PREFIX, secret), accessToken, expiresIn, TimeUnit.SECONDS); + MyRecord record = new MyRecord(); + record.set("account", request.getAccount()); + return record; + } + + /** + * 判断是否登录 + */ + @Override + public MyRecord isLogin() { + OnePassLoginVo loginVo; + MyRecord record = new MyRecord(); + try { + loginVo = onePassUtil.getLoginVo(); + } catch (Exception e) { + return record.set("status", false); + } + onePassUtil.getToken(loginVo); + record.set("status", true); + record.set("info", loginVo.getAccount()); + return record; + } + + /** + * 一号通用户信息 + */ + @Override + public JSONObject info() { + JSONObject info = getInfo(); + // 判断是否开通电子面单 + JSONObject dump = info.getJSONObject("dump"); + Integer open = dump.getInteger("open"); + if (open.equals(1)) { + String exportSiid = systemConfigService.getValueByKey("config_export_siid");// 打印机编号 + if (StrUtil.isBlank(exportSiid)) { + dump.put("open", 0); + info.put("dump", dump); + } + } + return info; + } + + private JSONObject getInfo() { + OnePassLoginVo loginVo = onePassUtil.getLoginVo(); + String accessToken = onePassUtil.getToken(loginVo); + HashMap header = onePassUtil.getCommonHeader(accessToken); + JSONObject jsonObject = onePassUtil.postFrom(OnePassConstants.ONE_PASS_API_URL + OnePassConstants.USER_INFO_URI, null, header); + JSONObject data = jsonObject.getJSONObject("data"); + data.put("account", loginVo.getAccount()); + return data; + } + + /** + * 用户注销 + */ + @Override + public Boolean logOut() { + OnePassLoginVo loginVo = onePassUtil.getLoginVo(); + boolean exists = redisUtil.exists(StrUtil.format(OnePassConstants.ONE_PASS_TOKEN_KEY_PREFIX, loginVo.getSecret())); + if (exists) { + redisUtil.delete(StrUtil.format(OnePassConstants.ONE_PASS_TOKEN_KEY_PREFIX, loginVo.getSecret())); + } + setConfigSmsInfo("", ""); + return true; + } + + /** + * 修改密码 + * + * @param request 修改密码参数 + * @return Boolean + */ + @Override + public Boolean updatePassword(OnePassUpdateRequest request) { + ValidateFormUtil.isPhoneException(request.getPhone()); + MultiValueMap map = new LinkedMultiValueMap<>(); + map.add("account", request.getAccount()); + map.add("password", SecureUtil.md5(request.getPassword())); + map.add("phone", request.getPhone()); + map.add("verify_code", request.getCode()); + onePassUtil.postFrom(OnePassConstants.ONE_PASS_API_URL + OnePassConstants.USER_UPDATE_PASSWORD_URI, map, null); + + setConfigSmsInfo("", ""); + return true; + } + + /** + * 修改用户手机 + * + * @param request 修改手机参数 + * @return Boolean + */ + @Override + public Boolean updatePhone(OnePassUpdateRequest request) { + ValidateFormUtil.isPhoneException(request.getPhone()); + MultiValueMap map = new LinkedMultiValueMap<>(); + map.add("account", request.getAccount()); + map.add("phone", request.getPhone()); + map.add("verify_code", request.getCode()); + + OnePassLoginVo loginVo = onePassUtil.getLoginVo(); + String token = onePassUtil.getToken(loginVo); + HashMap header = onePassUtil.getCommonHeader(token); + onePassUtil.postFrom(OnePassConstants.ONE_PASS_API_URL + OnePassConstants.USER_UPDATE_PHONE_URI, map, header); + onePassUtil.removeToken(loginVo); + setConfigSmsInfo("", ""); + return true; + } + + /** + * 套餐列表 + * + * @param type 套餐类型:sms,短信;expr_query,物流查询;expr_dump,电子面单;copy,产品复制 + * @return JSONObject + */ + @Override + public JSONObject mealList(String type) { + if (!validateMealType(type)) throw new CrmebException("请选择正确的套餐类型"); + + MultiValueMap params = new LinkedMultiValueMap<>(); + params.add("type", type); + String token = onePassUtil.getToken(); + HashMap header = onePassUtil.getCommonHeader(token); + + JSONObject jsonObject = onePassUtil.postFrom(OnePassConstants.ONE_PASS_API_URL + OnePassConstants.ONE_PASS_MEAL_LIST_URI, params, header); + return jsonObject.getJSONObject("data"); + } + + /** + * 套餐购买 + * + * @param request 购买参数 + */ + @Override + public JSONObject mealCode(MealCodeRequest request) { + if (!validateMealType(request.getType())) throw new CrmebException("请选择正确的套餐类型"); + // 获取用户详情 + String token = onePassUtil.getToken(); + HashMap header = onePassUtil.getCommonHeader(token); + JSONObject jsonObject = onePassUtil.postFrom(OnePassConstants.ONE_PASS_API_URL + OnePassConstants.USER_INFO_URI, null, header); + JSONObject data = jsonObject.getJSONObject("data"); + + boolean isGrant = false; + switch (request.getType()) { + case OnePassConstants.ONE_PASS_MEAL_TYPE_SMS: + isGrant = data.getJSONObject("sms").getInteger("open").equals(1); + break; + case OnePassConstants.ONE_PASS_MEAL_TYPE_EXPR: + isGrant = data.getJSONObject("query").getInteger("open").equals(1); + break; + case OnePassConstants.ONE_PASS_MEAL_TYPE_DUMP: + isGrant = data.getJSONObject("dump").getInteger("open").equals(1); + break; + case OnePassConstants.ONE_PASS_MEAL_TYPE_COPY: + isGrant = data.getJSONObject("copy").getInteger("open").equals(1); + break; + } + if (!isGrant) throw new CrmebException("请先开通对应的服务"); + + MultiValueMap params = new LinkedMultiValueMap<>(); + params.add("meal_id", request.getMealId()); + params.add("price", request.getPrice()); + params.add("num", request.getNum()); + params.add("type", request.getType()); + params.add("pay_type", request.getPayType()); + + JSONObject post = onePassUtil.postFrom(OnePassConstants.ONE_PASS_API_URL + OnePassConstants.ONE_PASS_MEAL_CODE_URI, params, header); + return post.getJSONObject("data"); + } + + /** + * 服务开通 + * + * @param request 服务开通参数 + */ + @Override + public Boolean serviceOpen(ServiceOpenRequest request) { + if (!validateMealType(request.getType())) throw new CrmebException("请选择正确的服务类型"); + Boolean open = false; + switch (request.getType()) { + case OnePassConstants.ONE_PASS_MEAL_TYPE_SMS:// 短信开通 + if (StrUtil.isBlank(request.getSign())) throw new CrmebException("签名不能为空"); + open = smsOpen(request); + break; + case OnePassConstants.ONE_PASS_MEAL_TYPE_EXPR:// 物流开通 + open = expressOpen(request); + break; + case OnePassConstants.ONE_PASS_MEAL_TYPE_DUMP:// 电子面单开通 + expressOpenValidate(request); + open = expressOpen(request); + break; + case OnePassConstants.ONE_PASS_MEAL_TYPE_COPY:// 产品复制开通 + open = copyOpen(); + break; + } + return open; + } + + /** + * 用量记录 + * @param request 用量记录查询参数 + */ + @Override + public JSONObject userRecord(OnePassUserRecordRequest request) { + if (!validateMealType(request.getType())) throw new CrmebException("请选择正确的记录类型"); + MultiValueMap params = new LinkedMultiValueMap<>(); + params.add("type", request.getType()); + params.add("page", request.getPage()); + params.add("limit", request.getLimit()); + if (OnePassConstants.ONE_PASS_MEAL_TYPE_SMS.equals(request.getType())) { +// int status = 3;// 查询全部状态 + if (ObjectUtil.isNotNull(request.getStatus()) && request.getStatus() != 3) { + params.add("status", request.getStatus()); + } + } + String token = onePassUtil.getToken(); + HashMap header = onePassUtil.getCommonHeader(token); + JSONObject jsonObject = onePassUtil.postFrom(OnePassConstants.ONE_PASS_API_URL + OnePassConstants.ONE_PASS_USER_RECORD_URI, params, header); + return jsonObject.getJSONObject("data"); + } + + /** + * 复制平台商品 + * @param url 商品链接 + * 平台复制商品示例 + * {"msg":"ok","data":{"image":"http://img.alicdn.com/imgextra/i2/2201504973406/O1CN01C7wCJe1b1zdtDz50j_!!2201504973406.jpg","store_info":"豹纹衣身,潮酷有型","give_integral":0,"cost":0,"temp_id":"","description_images":["http://img.alicdn.com/imgextra/i3/2201504973406/O1CN01tGSA611b1zaDd3sOk_!!2201504973406.jpg","http://img.alicdn.com/imgextra/i1/2201504973406/O1CN01zrSHcP1b1zaPZB9IR_!!2201504973406.jpg","http://img.alicdn.com/imgextra/i2/2201504973406/O1CN01X8KO5g1b1zaJcCOaN_!!2201504973406.jpg","http://img.alicdn.com/imgextra/i2/2201504973406/O1CN01cS03ht1b1zaNO9kKJ_!!2201504973406.jpg","http://img.alicdn.com/imgextra/i1/2201504973406/O1CN01cCfVkZ1b1zaLXTr3v_!!2201504973406.jpg","http://img.alicdn.com/imgextra/i4/2201504973406/O1CN01zqsHfb1b1zaONUmg7_!!2201504973406.jpg","http://img.alicdn.com/imgextra/i1/2201504973406/O1CN01pD7WGr1b1zaLujJVA_!!2201504973406.jpg","http://img.alicdn.com/imgextra/i4/2201504973406/O1CN01hB0cth1b1zaONVO6K_!!2201504973406.jpg","http://img.alicdn.com/imgextra/i4/2201504973406/O1CN01aAWvO51b1zaLNWxzL_!!2201504973406.jpg","http://img.alicdn.com/imgextra/i4/2201504973406/O1CN01DweEqg1b1zaLXSBBL_!!2201504973406.jpg","http://img.alicdn.com/imgextra/i1/2201504973406/O1CN01bk0dqy1b1zaMlYKrE_!!2201504973406.jpg","http://img.alicdn.com/imgextra/i1/2201504973406/O1CN01PwOQL41b1zaJFfOVL_!!2201504973406.jpg","http://img.alicdn.com/imgextra/i1/2201504973406/O1CN01Npc2Nx1b1zaLXSmZ2_!!2201504973406.jpg","http://img.alicdn.com/imgextra/i3/2201504973406/O1CN01CYZLU51b1zaDd2fZG_!!2201504973406.jpg","http://img.alicdn.com/imgextra/i1/2201504973406/O1CN01tXnKqb1b1zaJcAqxs_!!2201504973406.jpg","http://img.alicdn.com/imgextra/i3/2201504973406/O1CN0145DNqP1b1zaLuhZRf_!!2201504973406.jpg","http://img.alicdn.com/imgextra/i1/2201504973406/O1CN01QBjDyr1b1zaPZ9wTi_!!2201504973406.jpg","http://img.alicdn.com/imgextra/i3/2201504973406/O1CN01120POL1b1zaNOAHdT_!!2201504973406.jpg","http://img.alicdn.com/imgextra/i1/2201504973406/O1CN01C0YYiq1b1zaLNXdZZ_!!2201504973406.jpg","http://img.alicdn.com/imgextra/i4/2201504973406/O1CN01txpuLk1b1zaNO9LQZ_!!2201504973406.jpg"],"description":"","cate_id":"","slider_image":["http://img.alicdn.com/imgextra/i2/2201504973406/O1CN01C7wCJe1b1zdtDz50j_!!2201504973406.jpg","http://img.alicdn.com/imgextra/i4/2201504973406/O1CN01y07EFV1b1zaLru5es_!!2201504973406.jpg","http://img.alicdn.com/imgextra/i3/2201504973406/O1CN01dvxZXQ1b1zaJFgGWj_!!2201504973406.jpg","http://img.alicdn.com/imgextra/i2/2201504973406/O1CN0178H0r51b1zaLrvZ56_!!2201504973406.jpg","http://img.alicdn.com/imgextra/i3/2201504973406/O1CN01Rw9wYQ1b1zaPznzFQ_!!2201504973406.jpg"],"soure_link":"","attrs":[],"unit_name":"件","postage":0,"video_link":"","price":0,"store_name":"CacheCache短袖t恤女装2019新款潮豹纹牛油果绿抹茶绿古着感少女","ficti":0,"keyword":"","stock":0,"add_time":0,"items":[{"detail":["160/84A/S","165/88A/M","170/92A/L","175/96A/XL"],"value":"尺码"},{"detail":["蜡黄色/757"],"value":"主要颜色"}],"ot_price":0,"info":{"header":[{"minWidth":120,"title":"尺码","align":"center","key":"value1"},{"minWidth":120,"title":"主要颜色","align":"center","key":"value2"},{"minWidth":80,"slot":"pic","title":"图片","align":"center"},{"minWidth":95,"slot":"price","title":"售价","align":"center"},{"minWidth":95,"slot":"cost","title":"成本价","align":"center"},{"minWidth":95,"slot":"ot_price","title":"原价","align":"center"},{"minWidth":95,"slot":"stock","title":"库存","align":"center"},{"minWidth":120,"slot":"bar_code","title":"商品编号","align":"center"},{"minWidth":95,"slot":"weight","title":"重量(KG)","align":"center"},{"minWidth":95,"slot":"volume","title":"体积(m³)","align":"center"},{"minWidth":70,"slot":"action","title":"操作","align":"center"}],"attr":[{"detail":["160/84A/S","165/88A/M","170/92A/L","175/96A/XL"],"value":"尺码"},{"detail":["蜡黄色/757"],"value":"主要颜色"}],"value":[{"brokerage":0,"cost":0,"value2":"蜡黄色/757","value1":"160/84A/S","weight":0,"pic":"","volume":0,"brokerage_two":0,"price":0,"bar_code":"","detail":{"主要颜色":"蜡黄色/757","尺码":"160/84A/S"},"stock":0,"ot_price":0},{"brokerage":0,"cost":0,"value2":"蜡黄色/757","value1":"165/88A/M","weight":0,"pic":"","volume":0,"brokerage_two":0,"price":0,"bar_code":"","detail":{"主要颜色":"蜡黄色/757","尺码":"165/88A/M"},"stock":0,"ot_price":0},{"brokerage":0,"cost":0,"value2":"蜡黄色/757","value1":"170/92A/L","weight":0,"pic":"","volume":0,"brokerage_two":0,"price":0,"bar_code":"","detail":{"主要颜色":"蜡黄色/757","尺码":"170/92A/L"},"stock":0,"ot_price":0},{"brokerage":0,"cost":0,"value2":"蜡黄色/757","value1":"175/96A/XL","weight":0,"pic":"","volume":0,"brokerage_two":0,"price":0,"bar_code":"","detail":{"主要颜色":"蜡黄色/757","尺码":"175/96A/XL"},"stock":0,"ot_price":0}]}},"status":200} + */ + @Override + public JSONObject copyGoods(String url) { + HashMap header = onePassUtil.getCommonHeader(onePassUtil.getToken()); + MultiValueMap params = new LinkedMultiValueMap<>(); + params.add("url", url); + JSONObject jsonObject = onePassUtil.postFrom(OnePassConstants.ONE_PASS_API_URL + OnePassConstants.ONE_PASS_API_COPY_GOODS_URI, params, header); + System.out.println("one pass copy product = " + jsonObject); + return jsonObject.getJSONObject("data"); + } + + /** + * 电子面单 + * @param record 电子面单参数 + * @return + */ + @Override + public MyRecord expressDump(MyRecord record) { + HashMap header = onePassUtil.getCommonHeader(onePassUtil.getToken()); + MultiValueMap params = new LinkedMultiValueMap<>(); + Map columns = record.getColumns(); + columns.forEach(params::add); + JSONObject post = onePassUtil.postFrom(OnePassConstants.ONE_PASS_API_URL + OnePassConstants.ONE_PASS_API_EXPRESS_DUMP_URI, params, header); + MyRecord myRecord = new MyRecord(); + JSONObject jsonObject = post.getJSONObject("data"); + return myRecord.setColums(jsonObject); + } + + /** + * 物流追踪 + * @param expressNo 快递单号 + * @param com 快递公司简写 + * @return OnePassLogisticsQueryVo + */ + @Override + public OnePassLogisticsQueryVo exprQuery(String expressNo, String com) { + HashMap header = onePassUtil.getCommonHeader(onePassUtil.getToken()); + MultiValueMap params = new LinkedMultiValueMap<>(); + params.add("com", com); + params.add("num", expressNo); + JSONObject post = onePassUtil.postFrom(OnePassConstants.ONE_PASS_API_URL + OnePassConstants.ONE_PASS_API_EXPRESS_QUEARY_URI, params, header); + String dataStr = post.getString("data"); + if (StrUtil.isBlank(dataStr) || "[]".equals(dataStr)) { + return null; + } + JSONObject jsonObject = post.getJSONObject("data"); + return JSONObject.toJavaObject(jsonObject, OnePassLogisticsQueryVo.class); + } + + /** + * 修改手机号——验证账号密码 + * @return Boolean + */ + @Override + public Boolean beforeUpdatePhoneValidator(OnePassLoginRequest request) { + OnePassLoginVo loginVo = onePassUtil.getLoginVo(); + if (!loginVo.getAccount().equals(request.getAccount())) { + throw new CrmebException("账号不匹配"); + } + String secret = SecureUtil.md5(request.getAccount() + SecureUtil.md5(request.getPassword())); + if (!loginVo.getSecret().equals(secret)) { + throw new CrmebException("密码不匹配"); + } + return Boolean.TRUE; + } + + /** + * 校验一号通账号是否配置 + */ + @Override + public Boolean checkAccount() { + String account = systemConfigService.getValueByKey("sms_account");// 获取配置账号 + if (StrUtil.isBlank(account)) { + return Boolean.FALSE; + } + String token = systemConfigService.getValueByKey("sms_token"); //获取配置密码 + if (StrUtil.isBlank(token)) { + return Boolean.FALSE; + } + return Boolean.TRUE; + } + + /** + * 物流、电子面单开通参数校验 + */ + private void expressOpenValidate(ServiceOpenRequest request) { + if (StrUtil.isBlank(request.getCom())) { + throw new CrmebException("请选择快递公司"); + } + if (StrUtil.isBlank(request.getTempId())) { + throw new CrmebException("请选择快递模板"); + } + if (StrUtil.isBlank(request.getToName())) { + throw new CrmebException("请填写寄件人姓名"); + } + if (StrUtil.isBlank(request.getToTel())) { + throw new CrmebException("请输入寄件人手机号码"); + } + if (StrUtil.isBlank(request.getToAddress())) { + throw new CrmebException("请填写寄件人详细地址"); + } + if (StrUtil.isBlank(request.getSiid())) { + throw new CrmebException("请填写云打印机编号"); + } + ValidateFormUtil.isPhoneException(request.getToTel()); + } + + /** + * 商品复制开通 + */ + private Boolean copyOpen() { + String token = onePassUtil.getToken(); + HashMap header = onePassUtil.getCommonHeader(token); + onePassUtil.postFrom(OnePassConstants.ONE_PASS_API_URL + OnePassConstants.ONE_PASS_COPY_OPEN_URI, null, header); + return Boolean.TRUE; + } + + /** + * 物流开通 + * 保存平台电子面单打印信息 + */ + private Boolean expressOpen(ServiceOpenRequest request) { + String token = onePassUtil.getToken(); + HashMap header = onePassUtil.getCommonHeader(token); + if (request.getType().equals(OnePassConstants.ONE_PASS_MEAL_TYPE_EXPR)) {// 物流 + onePassUtil.postFrom(OnePassConstants.ONE_PASS_API_URL + OnePassConstants.ONE_PASS_EXPRESS_OPEN_URI, null, header); + return Boolean.TRUE; + } + + // 电子面单 + Express express = expressService.getByCode(request.getCom()); + if (ObjectUtil.isNull(express)) throw new CrmebException("没有找到对应的快递公司"); + + // 保存平台电子面单打印信息 + Boolean execute = transactionTemplate.execute(e -> { + // 快递公司id + systemConfigService.updateOrSaveValueByName("config_export_id", express.getId().toString()); + // 快递公司模板id + systemConfigService.updateOrSaveValueByName("config_export_temp_id", request.getTempId()); + // 快递公司编码 + systemConfigService.updateOrSaveValueByName("config_export_com", request.getCom()); + // 发货人姓名 + systemConfigService.updateOrSaveValueByName("config_export_to_name", request.getToName()); + // 发货人电话 + systemConfigService.updateOrSaveValueByName("config_export_to_tel", request.getToTel()); + // 发货人详细地址 + systemConfigService.updateOrSaveValueByName("config_export_to_address", request.getToAddress()); + // 电子面单打印机编号 + systemConfigService.updateOrSaveValueByName("config_export_siid", request.getSiid()); + return Boolean.TRUE; + }); + if (Boolean.FALSE.equals(execute)) throw new CrmebException("保存平台电子面单打印信息失败"); + + // 查询是否已经开通 + JSONObject info = info(); + JSONObject dump = info.getJSONObject("dump"); + if (dump.getInteger("open").equals(1)) { + return Boolean.TRUE; + } + onePassUtil.postFrom(OnePassConstants.ONE_PASS_API_URL + OnePassConstants.ONE_PASS_EXPRESS_OPEN_URI, null, header); + return Boolean.TRUE; + } + + /** + * 短信开通 + */ + private Boolean smsOpen(ServiceOpenRequest request) { + String token = onePassUtil.getToken(); + HashMap header = onePassUtil.getCommonHeader(token); + MultiValueMap params = new LinkedMultiValueMap<>(); + params.add("sign", request.getSign()); + onePassUtil.postFrom(OnePassConstants.ONE_PASS_API_URL + OnePassConstants.ONE_PASS_SMS_OPEN_URI, params, header); + return Boolean.TRUE; + } + + /** + * 校验套餐类型 + */ + private Boolean validateMealType(String type) { + List list = CollUtil.newArrayList(); + list.add(OnePassConstants.ONE_PASS_MEAL_TYPE_SMS); + list.add(OnePassConstants.ONE_PASS_MEAL_TYPE_EXPR); + list.add(OnePassConstants.ONE_PASS_MEAL_TYPE_DUMP); + list.add(OnePassConstants.ONE_PASS_MEAL_TYPE_COPY); + return list.contains(type); + } + + /** + * 更新sms配置信息 + * + * @param account 账号 + * @param password 密码 + * @author Mr.Zhang + * @since 2020-04-16 + */ + private void setConfigSmsInfo(String account, String password) { + boolean accountResult = systemConfigService.updateOrSaveValueByName("sms_account", account); + boolean tokenResult = systemConfigService.updateOrSaveValueByName("sms_token", password); + + if (!accountResult || !tokenResult) { + throw new CrmebException("数据更新失败!"); + } + } +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/OrderPayServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/OrderPayServiceImpl.java new file mode 100644 index 0000000..a1cf0a4 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/OrderPayServiceImpl.java @@ -0,0 +1,1029 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.zbkj.common.constants.*; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.model.combination.StoreCombination; +import com.zbkj.common.model.combination.StorePink; +import com.zbkj.common.model.coupon.StoreCouponUser; +import com.zbkj.common.model.order.StoreOrder; +import com.zbkj.common.model.order.StoreOrderInfo; +import com.zbkj.common.model.product.StoreProduct; +import com.zbkj.common.model.product.StoreProductAttrValue; +import com.zbkj.common.model.product.StoreProductCoupon; +import com.zbkj.common.model.sms.SmsTemplate; +import com.zbkj.common.model.system.SystemAdmin; +import com.zbkj.common.model.system.SystemNotification; +import com.zbkj.common.model.user.*; +import com.zbkj.common.request.OrderPayRequest; +import com.zbkj.common.response.OrderPayResultResponse; +import com.zbkj.common.utils.CrmebUtil; +import com.zbkj.common.utils.DateUtil; +import com.zbkj.common.utils.RedisUtil; +import com.zbkj.common.utils.WxPayUtil; +import com.zbkj.common.vo.*; +import com.zbkj.service.delete.OrderUtils; +import com.zbkj.service.service.*; +import lombok.Data; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Service; +import org.springframework.transaction.support.TransactionTemplate; + +import java.math.BigDecimal; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.stream.Collectors; + + +/** + * OrderPayService 实现类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@Service +public class OrderPayServiceImpl implements OrderPayService { + private static final Logger logger = LoggerFactory.getLogger(OrderPayServiceImpl.class); + + @Autowired + private StoreOrderService storeOrderService; + + @Autowired + private StoreOrderStatusService storeOrderStatusService; + + @Autowired + private StoreOrderInfoService storeOrderInfoService; + + @Lazy + @Autowired + private WeChatPayService weChatPayService; + + @Autowired + private TemplateMessageService templateMessageService; + + @Autowired + private UserBillService userBillService; + + @Lazy + @Autowired + private SmsService smsService; + + @Autowired + private UserService userService; + + @Autowired + private StoreProductCouponService storeProductCouponService; + + @Autowired + private StoreCouponUserService storeCouponUserService; + + @Autowired + private OrderUtils orderUtils; + + //订单类 + private StoreOrder order; + + @Autowired + private TransactionTemplate transactionTemplate; + + @Autowired + private RedisUtil redisUtil; + + @Autowired + private SystemConfigService systemConfigService; + + @Autowired + private StoreProductService storeProductService; + + @Autowired + private UserLevelService userLevelService; + + @Autowired + private StoreBargainService storeBargainService; + + @Autowired + private StoreBargainUserService storeBargainUserService; + + @Autowired + private StoreCombinationService storeCombinationService; + + @Autowired + private StorePinkService storePinkService; + + @Autowired + private UserBrokerageRecordService userBrokerageRecordService; + + @Autowired + private StoreCouponService storeCouponService; + + @Autowired + private SystemAdminService systemAdminService; + + @Autowired + private UserTokenService userTokenService; + + @Autowired + private UserIntegralRecordService userIntegralRecordService; + + @Autowired + private StoreProductAttrValueService storeProductAttrValueService; + + @Autowired + private WechatNewService wechatNewService; + + @Autowired + private UserExperienceRecordService userExperienceRecordService; + + @Autowired + private YlyPrintService ylyPrintService; + + @Autowired + private SystemNotificationService systemNotificationService; + + @Autowired + private SmsTemplateService smsTemplateService; + + /** + * 支付成功处理 + * @param storeOrder 订单 + */ + @Override + public Boolean paySuccess(StoreOrder storeOrder) { + + User user = userService.getById(storeOrder.getUid()); + + List billList = CollUtil.newArrayList(); + List integralList = CollUtil.newArrayList(); + + // 订单支付记录 + UserBill userBill = userBillInit(storeOrder, user); + billList.add(userBill); + + // 积分抵扣记录 + if (storeOrder.getUseIntegral() > 0) { + UserIntegralRecord integralRecordSub = integralRecordSubInit(storeOrder, user); + integralList.add(integralRecordSub); + } + + // 经验处理:1.经验添加,2.等级计算 + Integer experience; + experience = storeOrder.getPayPrice().setScale(0, BigDecimal.ROUND_DOWN).intValue(); + user.setExperience(user.getExperience() + experience); + // 经验添加记录 + UserExperienceRecord experienceRecord = experienceRecordInit(storeOrder, user.getExperience(), experience); + + + // 积分处理:1.下单赠送积分,2.商品赠送积分 + int integral; + // 下单赠送积分 + //赠送积分比例 + String integralStr = systemConfigService.getValueByKey(Constants.CONFIG_KEY_INTEGRAL_RATE_ORDER_GIVE); + if (StrUtil.isNotBlank(integralStr) && storeOrder.getPayPrice().compareTo(BigDecimal.ZERO) > 0) { + BigDecimal integralBig = new BigDecimal(integralStr); + integral = integralBig.multiply(storeOrder.getPayPrice()).setScale(0, BigDecimal.ROUND_DOWN).intValue(); + if (integral > 0) { + // 生成积分记录 + UserIntegralRecord integralRecord = integralRecordInit(storeOrder, user.getIntegral(), integral, "order"); + integralList.add(integralRecord); + } + } + + // 商品赠送积分 + // 查询订单详情 + // 获取商品额外赠送积分 + List orderInfoList = storeOrderInfoService.getListByOrderNo(storeOrder.getOrderId()); + if (orderInfoList.get(0).getProductType().equals(0)) { + List productIds = orderInfoList.stream().map(StoreOrderInfo::getProductId).collect(Collectors.toList()); + if (productIds.size() > 0) { + List products = storeProductService.getListInIds(productIds); + int sumIntegral = products.stream().mapToInt(StoreProduct::getGiveIntegral).sum(); + if (sumIntegral > 0) { + // 生成积分记录 + UserIntegralRecord integralRecord = integralRecordInit(storeOrder, user.getIntegral(), sumIntegral, "product"); + integralList.add(integralRecord); + } + } + } + + // 更新用户下单数量 + user.setPayCount(user.getPayCount() + 1); + + /** + * 计算佣金,生成佣金记录 + */ + List recordList = assignCommission(storeOrder); + + // 分销员逻辑 + if (!user.getIsPromoter()) { + String funcStatus = systemConfigService.getValueByKey(SysConfigConstants.CONFIG_KEY_BROKERAGE_FUNC_STATUS); + if ("1".equals(funcStatus)) { + String broQuota = systemConfigService.getValueByKey(SysConfigConstants.CONFIG_KEY_STORE_BROKERAGE_QUOTA); + if (!"-1".equals(broQuota) && storeOrder.getPayPrice().compareTo(new BigDecimal(broQuota)) >= 0) {// -1 不成为分销员 + user.setIsPromoter(true); + user.setPromoterTime(cn.hutool.core.date.DateUtil.date()); + } + } + } + + Boolean execute = transactionTemplate.execute(e -> { + //订单日志 + storeOrderStatusService.createLog(storeOrder.getId(), Constants.ORDER_LOG_PAY_SUCCESS, Constants.ORDER_LOG_MESSAGE_PAY_SUCCESS); + + // 用户信息变更 + userService.updateById(user); + + //资金变动 + userBillService.saveBatch(billList); + + // 积分记录 + userIntegralRecordService.saveBatch(integralList); + + // 经验记录 + userExperienceRecordService.save(experienceRecord); + + //经验升级 + userLevelService.upLevel(user); + + // 佣金记录 + if (CollUtil.isNotEmpty(recordList)) { + recordList.forEach(temp -> { + temp.setLinkId(storeOrder.getOrderId()); + }); + userBrokerageRecordService.saveBatch(recordList); + } + + // 如果是拼团订单进行拼团后置处理 + if (storeOrder.getCombinationId() > 0) { + pinkProcessing(storeOrder); + } + return Boolean.TRUE; + }); + + if (execute) { + try { + SystemNotification payNotification = systemNotificationService.getByMark(NotifyConstants.PAY_SUCCESS_MARK); + // 发送短信 + if (StrUtil.isNotBlank(user.getPhone()) && payNotification.getIsSms().equals(1)) { + SmsTemplate smsTemplate = smsTemplateService.getDetail(payNotification.getSmsId()); + smsService.sendPaySuccess(user.getPhone(), storeOrder.getOrderId(), storeOrder.getPayPrice(), Integer.valueOf(smsTemplate.getTempId())); + } + + // 发送用户支付成功管理员提醒短信 + SystemNotification payAdminNotification = systemNotificationService.getByMark(NotifyConstants.PAY_SUCCESS_ADMIN_MARK); + if (payAdminNotification.getIsSms().equals(1)) { + // 查询可已发送短信的管理员 + List systemAdminList = systemAdminService.findIsSmsList(); + if (CollUtil.isNotEmpty(systemAdminList)) { + SmsTemplate smsTemplate = smsTemplateService.getDetail(payAdminNotification.getSmsId()); + // 发送短信 + systemAdminList.forEach(admin -> { + smsService.sendOrderPaySuccessNotice(admin.getPhone(), storeOrder.getOrderId(), admin.getRealName(), Integer.valueOf(smsTemplate.getTempId())); + }); + } + } + + if (payNotification.getIsWechat().equals(1) || payNotification.getIsRoutine().equals(1)) { + //下发模板通知 + pushMessageOrder(storeOrder, user, payNotification); + } + + // 购买成功后根据配置送优惠券 + autoSendCoupons(storeOrder); + + // 根据配置 打印小票 + ylyPrintService.YlyPrint(storeOrder.getOrderId(),true); + + } catch (Exception e) { + e.printStackTrace(); + logger.error("短信、模板通知、优惠券或打印小票异常"); + } + } + return execute; + } + + // 支持成功拼团后置处理 + private Boolean pinkProcessing(StoreOrder storeOrder) { + // 判断拼团是否成功 + StorePink storePink = storePinkService.getById(storeOrder.getPinkId()); + if (storePink.getKId() <= 0) { + return true; + } + + List pinkList = storePinkService.getListByCidAndKid(storePink.getCid(), storePink.getKId()); + StorePink tempPink = storePinkService.getById(storePink.getKId()); + pinkList.add(tempPink); + if (pinkList.size() < storePink.getPeople()) {// 还未拼团成功 + return true; + } + // 1.修改拼团状态 + // 2.给所有拼团人员发送拼团成功通知 + pinkList.forEach(e -> { + e.setStatus(2); + }); + boolean update = storePinkService.updateBatchById(pinkList); + if (!update) { + logger.error("拼团订单支付成功后更新拼团状态失败,orderNo = " + storeOrder.getOrderId()); + return false; + } + SystemNotification notification = systemNotificationService.getByMark(NotifyConstants.GROUP_SUCCESS_MARK); + if (notification.getIsWechat().equals(1) || notification.getIsRoutine().equals(1)) { + pinkList.forEach(i -> { + StoreOrder order = storeOrderService.getByOderId(i.getOrderId()); + StoreCombination storeCombination = storeCombinationService.getById(i.getCid()); + User tempUser = userService.getById(i.getUid()); + // 发送微信模板消息 + MyRecord record = new MyRecord(); + record.set("orderNo", order.getOrderId()); + record.set("proName", storeCombination.getTitle()); + record.set("payType", order.getPayType()); + record.set("isChannel", order.getIsChannel()); + pushMessagePink(record, tempUser, notification); + }); + } + return true; + } + + /** + * 发送拼团成功通知 + * @param record 信息参数 + * @param user 用户 + */ + private void pushMessagePink(MyRecord record, User user, SystemNotification notification) { + if (!record.getStr("payType").equals(Constants.PAY_TYPE_WE_CHAT)) { + return ; + } + if (record.getInt("isChannel").equals(2)) { + return ; + } + + UserToken userToken; + HashMap temMap = new HashMap<>(); + // 公众号 + if (record.getInt("isChannel").equals(Constants.ORDER_PAY_CHANNEL_PUBLIC) && notification.getIsWechat().equals(1)) { + userToken = userTokenService.getTokenByUserId(user.getUid(), UserConstants.USER_TOKEN_TYPE_WECHAT); + if (ObjectUtil.isNull(userToken)) { + return ; + } + // 发送微信模板消息 + temMap.put(Constants.WE_CHAT_TEMP_KEY_FIRST, "恭喜您拼团成功!我们将尽快为您发货。"); + temMap.put("keyword1", record.getStr("orderNo")); + temMap.put("keyword2", record.getStr("proName")); + temMap.put(Constants.WE_CHAT_TEMP_KEY_END, "感谢你的使用!"); + templateMessageService.pushTemplateMessage(notification.getWechatId(), temMap, userToken.getToken()); + } else if (notification.getIsRoutine().equals(1)) { + // 小程序发送订阅消息 + userToken = userTokenService.getTokenByUserId(user.getUid(), UserConstants.USER_TOKEN_TYPE_ROUTINE); + if (ObjectUtil.isNull(userToken)) { + return ; + } + // 组装数据 +// temMap.put("character_string1", record.getStr("orderNo")); +// temMap.put("thing2", record.getStr("proName")); +// temMap.put("thing5", "恭喜您拼团成功!我们将尽快为您发货。"); + temMap.put("character_string10", record.getStr("orderNo")); + temMap.put("thing7", record.getStr("proName")); + temMap.put("thing9", "恭喜您拼团成功!我们将尽快为您发货。"); + templateMessageService.pushMiniTemplateMessage(notification.getRoutineId(), temMap, userToken.getToken()); + } + + } + + /** + * 分配佣金 + * @param storeOrder 订单 + * @return List + */ + private List assignCommission(StoreOrder storeOrder) { + // 检测商城是否开启分销功能 + String isOpen = systemConfigService.getValueByKey(Constants.CONFIG_KEY_STORE_BROKERAGE_IS_OPEN); + if(StrUtil.isBlank(isOpen) || "0".equals(isOpen)){ + return CollUtil.newArrayList(); + } + // 营销产品不参与 + if(storeOrder.getCombinationId() > 0 || storeOrder.getSeckillId() > 0 || storeOrder.getBargainId() > 0){ + return CollUtil.newArrayList(); + } + // 查找订单所属人信息 + User user = userService.getById(storeOrder.getUid()); + // 当前用户不存在 没有上级 或者 当用用户上级时自己 直接返回 + if(null == user.getSpreadUid() || user.getSpreadUid() < 1 || user.getSpreadUid().equals(storeOrder.getUid())){ + return CollUtil.newArrayList(); + } + // 获取参与分佣的人(两级) + List spreadRecordList = getSpreadRecordList(user.getSpreadUid()); + if (CollUtil.isEmpty(spreadRecordList)) { + return CollUtil.newArrayList(); + } + // 获取佣金冻结期 + String fronzenTime = systemConfigService.getValueByKey(Constants.CONFIG_KEY_STORE_BROKERAGE_EXTRACT_TIME); + + // 生成佣金记录 + List brokerageRecordList = spreadRecordList.stream().map(record -> { + BigDecimal brokerage = calculateCommission(record, storeOrder.getId()); + UserBrokerageRecord brokerageRecord = new UserBrokerageRecord(); + brokerageRecord.setUid(record.getInt("spreadUid")); + brokerageRecord.setLinkType(BrokerageRecordConstants.BROKERAGE_RECORD_LINK_TYPE_ORDER); + brokerageRecord.setType(BrokerageRecordConstants.BROKERAGE_RECORD_TYPE_ADD); + brokerageRecord.setTitle(BrokerageRecordConstants.BROKERAGE_RECORD_TITLE_ORDER); + brokerageRecord.setPrice(brokerage); + brokerageRecord.setMark(StrUtil.format("获得推广佣金,分佣{}", brokerage)); + brokerageRecord.setStatus(BrokerageRecordConstants.BROKERAGE_RECORD_STATUS_CREATE); + brokerageRecord.setFrozenTime(Integer.valueOf(Optional.ofNullable(fronzenTime).orElse("0"))); + brokerageRecord.setCreateTime(DateUtil.nowDateTime()); + brokerageRecord.setBrokerageLevel(record.getInt("index")); + return brokerageRecord; + }).collect(Collectors.toList()); + + return brokerageRecordList; + } + + /** + * 计算佣金 + * @param record index-分销级数,spreadUid-分销人 + * @param orderId 订单id + * @return BigDecimal + */ + private BigDecimal calculateCommission(MyRecord record, Integer orderId) { + BigDecimal brokeragePrice = BigDecimal.ZERO; + // 查询订单详情 + List orderInfoVoList = storeOrderInfoService.getOrderListByOrderId(orderId); + if (CollUtil.isEmpty(orderInfoVoList)) { + return brokeragePrice; + } + BigDecimal totalBrokerPrice = BigDecimal.ZERO; + //查询对应等级的分销比例 + Integer index = record.getInt("index"); + String key = ""; + if (index == 1) { + key = Constants.CONFIG_KEY_STORE_BROKERAGE_RATE_ONE; + } + if (index == 2) { + key = Constants.CONFIG_KEY_STORE_BROKERAGE_RATE_TWO; + } + String rate = systemConfigService.getValueByKey(key); + if(StringUtils.isBlank(rate)){ + rate = "1"; + } + //佣金比例整数存储, 例如80, 所以计算的时候要除以 10*10 + BigDecimal rateBigDecimal = brokeragePrice; + if(StringUtils.isNotBlank(rate)){ + rateBigDecimal = new BigDecimal(rate).divide(BigDecimal.TEN.multiply(BigDecimal.TEN)); + } + + for (StoreOrderInfoOldVo orderInfoVo : orderInfoVoList) { + // 先看商品是否有固定分佣 + StoreProductAttrValue attrValue = storeProductAttrValueService.getById(orderInfoVo.getInfo().getAttrValueId()); + if (orderInfoVo.getInfo().getIsSub()) {// 有固定分佣 + if(index == 1){ + brokeragePrice = Optional.ofNullable(attrValue.getBrokerage()).orElse(BigDecimal.ZERO); + } + if(index == 2){ + brokeragePrice = Optional.ofNullable(attrValue.getBrokerageTwo()).orElse(BigDecimal.ZERO); + } + } else {// 系统分佣 + if(!rateBigDecimal.equals(BigDecimal.ZERO)){ + // 商品没有分销金额, 并且有设置对应等级的分佣比例 + // 舍入模式向零舍入。 + if (ObjectUtil.isNotNull(orderInfoVo.getInfo().getVipPrice())) { + brokeragePrice = orderInfoVo.getInfo().getVipPrice().multiply(rateBigDecimal).setScale(2, BigDecimal.ROUND_DOWN); + } else { + brokeragePrice = orderInfoVo.getInfo().getPrice().multiply(rateBigDecimal).setScale(2, BigDecimal.ROUND_DOWN); + } + } else { + brokeragePrice = BigDecimal.ZERO; + } + } + // 同规格商品可能有多件 + if (brokeragePrice.compareTo(BigDecimal.ZERO) > 0 && orderInfoVo.getInfo().getPayNum() > 1) { + brokeragePrice = brokeragePrice.multiply(new BigDecimal(orderInfoVo.getInfo().getPayNum())); + } + totalBrokerPrice = totalBrokerPrice.add(brokeragePrice); + } + + return totalBrokerPrice; + } + + /** + * 获取参与分佣人员(两级) + * @param spreadUid 一级分佣人Uid + * @return List + */ + private List getSpreadRecordList(Integer spreadUid) { + List recordList = CollUtil.newArrayList(); + + // 第一级 + User spreadUser = userService.getById(spreadUid); + if (ObjectUtil.isNull(spreadUser)) { + return recordList; + } + // 判断分销模式 + String model = systemConfigService.getValueByKey(Constants.CONFIG_KEY_STORE_BROKERAGE_MODEL); + if (StrUtil.isNotBlank(model) && "1".equals(model) && !spreadUser.getIsPromoter()) { + // 指定分销模式下:不是推广员不参与分销 + return recordList; + } + MyRecord firstRecord = new MyRecord(); + firstRecord.set("index", 1); + firstRecord.set("spreadUid", spreadUid); + recordList.add(firstRecord); + + // 第二级 + User spreadSpreadUser = userService.getById(spreadUser.getSpreadUid()); + if (ObjectUtil.isNull(spreadSpreadUser)) { + return recordList; + } + if (StrUtil.isNotBlank(model) && "1".equals(model) && !spreadSpreadUser.getIsPromoter()) { + // 指定分销模式下:不是推广员不参与分销 + return recordList; + } + MyRecord secondRecord = new MyRecord(); + secondRecord.set("index", 2); + secondRecord.set("spreadUid", spreadSpreadUser.getUid()); + recordList.add(secondRecord); + return recordList; + } + + /** + * 余额支付 + * @param storeOrder 订单 + * @return Boolean Boolean + */ + private Boolean yuePay(StoreOrder storeOrder) { + + // 用户余额扣除 + User user = userService.getById(storeOrder.getUid()); + if (ObjectUtil.isNull(user)) throw new CrmebException("用户不存在"); + if (user.getNowMoney().compareTo(storeOrder.getPayPrice()) < 0) { + throw new CrmebException("用户余额不足"); + } + if (user.getIntegral() < storeOrder.getUseIntegral()) { + throw new CrmebException("用户积分不足"); + } + storeOrder.setPaid(true); + storeOrder.setPayTime(DateUtil.nowDateTime()); + Boolean execute = transactionTemplate.execute(e -> { + // 订单修改 + storeOrderService.updateById(storeOrder); + // 这里只扣除金额,账单记录在task中处理 + userService.updateNowMoney(user, storeOrder.getPayPrice(), "sub"); + // 扣除积分 + if (storeOrder.getUseIntegral() > 0) { + userService.updateIntegral(user, storeOrder.getUseIntegral(), "sub"); + } + // 添加支付成功redis队列 + redisUtil.lPush(TaskConstants.ORDER_TASK_PAY_SUCCESS_AFTER, storeOrder.getOrderId()); + + // 处理拼团 + if (storeOrder.getCombinationId() > 0) { + // 判断拼团团长是否存在 + StorePink headPink = new StorePink(); + Integer pinkId = storeOrder.getPinkId(); + if (pinkId > 0) { + headPink = storePinkService.getById(pinkId); + if (ObjectUtil.isNull(headPink) || headPink.getIsRefund().equals(true) || headPink.getStatus() == 3) { + pinkId = 0; + } + } + StoreCombination storeCombination = storeCombinationService.getById(storeOrder.getCombinationId()); + // 如果拼团人数已满,重新开团 + if (pinkId > 0) { + Integer count = storePinkService.getCountByKid(pinkId); + if (count >= storeCombination.getPeople()) { + pinkId = 0; + } + } + // 生成拼团表数据 + StorePink storePink = new StorePink(); + storePink.setUid(user.getUid()); + storePink.setAvatar(user.getAvatar()); + storePink.setNickname(user.getNickname()); + storePink.setOrderId(storeOrder.getOrderId()); + storePink.setOrderIdKey(storeOrder.getId()); + storePink.setTotalNum(storeOrder.getTotalNum()); + storePink.setTotalPrice(storeOrder.getTotalPrice()); + storePink.setCid(storeCombination.getId()); + storePink.setPid(storeCombination.getProductId()); + storePink.setPeople(storeCombination.getPeople()); + storePink.setPrice(storeCombination.getPrice()); + Integer effectiveTime = storeCombination.getEffectiveTime();// 有效小时数 + DateTime dateTime = cn.hutool.core.date.DateUtil.date(); + storePink.setAddTime(dateTime.getTime()); + if (pinkId > 0) { + storePink.setStopTime(headPink.getStopTime()); + } else { + DateTime hourTime = cn.hutool.core.date.DateUtil.offsetHour(dateTime, effectiveTime); + long stopTime = hourTime.getTime(); + if (stopTime > storeCombination.getStopTime()) { + stopTime = storeCombination.getStopTime(); + } + storePink.setStopTime(stopTime); + } + storePink.setKId(pinkId); + storePink.setIsTpl(false); + storePink.setIsRefund(false); + storePink.setStatus(1); + storePinkService.save(storePink); + // 如果是开团,需要更新订单数据 + storeOrder.setPinkId(storePink.getId()); + storeOrderService.updateById(storeOrder); + } + + return Boolean.TRUE; + }); + if (!execute) throw new CrmebException("余额支付订单失败"); + return execute; + } + + /** + * 订单支付 + * @param orderPayRequest 支付参数 + * @param ip ip + * @return OrderPayResultResponse + * 1.微信支付拉起微信预支付,返回前端调用微信支付参数,在之后需要调用微信支付查询接口 + * 2.余额支付,更改对应信息后,加入支付成功处理task + */ + @Override + public OrderPayResultResponse payment(OrderPayRequest orderPayRequest, String ip) { + StoreOrder storeOrder = storeOrderService.getByOderId(orderPayRequest.getOrderNo()); + if (ObjectUtil.isNull(storeOrder)) { + throw new CrmebException("订单不存在"); + } + if (storeOrder.getIsDel()) { + throw new CrmebException("订单已被删除"); + } + if (storeOrder.getPaid()) { + throw new CrmebException("订单已支付"); + } + User user = userService.getById(storeOrder.getUid()); + if (ObjectUtil.isNull(user)) throw new CrmebException("用户不存在"); + + // 判断订单是否还是之前的支付类型 + if (!storeOrder.getPayType().equals(orderPayRequest.getPayType())) { + // 根据支付类型进行校验,更换支付类型 + storeOrder.setPayType(orderPayRequest.getPayType()); + // 余额支付 + if (orderPayRequest.getPayType().equals(PayConstants.PAY_TYPE_YUE)) { + if (user.getNowMoney().compareTo(storeOrder.getPayPrice()) < 0) { + throw new CrmebException("用户余额不足"); + } + storeOrder.setIsChannel(3); + } + if (orderPayRequest.getPayType().equals(PayConstants.PAY_TYPE_WE_CHAT)) { + switch (orderPayRequest.getPayChannel()){ + case PayConstants.PAY_CHANNEL_WE_CHAT_H5:// H5 + storeOrder.setIsChannel(2); + break; + case PayConstants.PAY_CHANNEL_WE_CHAT_PUBLIC:// 公众号 + storeOrder.setIsChannel(0); + break; + case PayConstants.PAY_CHANNEL_WE_CHAT_PROGRAM:// 小程序 + storeOrder.setIsChannel(1); + break; + } + } + + boolean changePayType = storeOrderService.updateById(storeOrder); + if (!changePayType) { + throw new CrmebException("变更订单支付类型失败!"); + } + } + + if (user.getIntegral() < storeOrder.getUseIntegral()) { + throw new CrmebException("用户积分不足"); + } + + OrderPayResultResponse response = new OrderPayResultResponse(); + response.setOrderNo(storeOrder.getOrderId()); + response.setPayType(storeOrder.getPayType()); + // 0元付 + if (storeOrder.getPayPrice().compareTo(BigDecimal.ZERO) <= 0) { + Boolean aBoolean = yuePay(storeOrder); + response.setPayType(PayConstants.PAY_TYPE_YUE); + response.setStatus(aBoolean); + return response; + } + + // 微信支付,调用微信预下单,返回拉起微信支付需要的信息 + if (storeOrder.getPayType().equals(PayConstants.PAY_TYPE_WE_CHAT)) { + // 预下单 + Map unifiedorder = unifiedorder(storeOrder, ip); + response.setStatus(true); + WxPayJsResultVo vo = new WxPayJsResultVo(); + vo.setAppId(unifiedorder.get("appId")); + vo.setNonceStr(unifiedorder.get("nonceStr")); + vo.setPackages(unifiedorder.get("package")); + vo.setSignType(unifiedorder.get("signType")); + vo.setTimeStamp(unifiedorder.get("timeStamp")); + vo.setPaySign(unifiedorder.get("paySign")); + if (storeOrder.getIsChannel() == 2) { + vo.setMwebUrl(unifiedorder.get("mweb_url")); + response.setPayType(PayConstants.PAY_CHANNEL_WE_CHAT_H5); + } + if (storeOrder.getIsChannel() == 4 || storeOrder.getIsChannel() == 5) { + vo.setPartnerid(unifiedorder.get("partnerid")); + } + // 更新商户订单号 + storeOrder.setOutTradeNo(unifiedorder.get("outTradeNo")); + storeOrderService.updateById(storeOrder); + response.setJsConfig(vo); + return response; + } + // 余额支付 + if (storeOrder.getPayType().equals(PayConstants.PAY_TYPE_YUE)) { + Boolean yueBoolean = yuePay(storeOrder); + response.setStatus(yueBoolean); + return response; + } + if (storeOrder.getPayType().equals(PayConstants.PAY_TYPE_OFFLINE)) { + throw new CrmebException("暂时不支持线下支付"); + } + response.setStatus(false); + return response; + } + + /** + * 预下单 + * @param storeOrder 订单 + * @param ip ip + * @return 预下单返回对象 + */ + private Map unifiedorder(StoreOrder storeOrder, String ip) { + // 获取用户openId + // 根据订单支付类型来判断获取公众号openId还是小程序openId + UserToken userToken = new UserToken(); + if (storeOrder.getIsChannel() == 0) {// 公众号 + userToken = userTokenService.getTokenByUserId(storeOrder.getUid(), 1); + } + if (storeOrder.getIsChannel() == 1) {// 小程序 + userToken = userTokenService.getTokenByUserId(storeOrder.getUid(), 2); + } + if (storeOrder.getIsChannel() == 2) {// H5 + userToken.setToken(""); + } + if (ObjectUtil.isNull(userToken)) { + throw new CrmebException("该用户没有openId"); + } + + // 获取appid、mch_id + // 微信签名key + String appId = ""; + String mchId = ""; + String signKey = ""; + if (storeOrder.getIsChannel() == 0) {// 公众号 + appId = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_WE_CHAT_APP_ID); + mchId = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_WE_CHAT_MCH_ID); + signKey = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_WE_CHAT_APP_KEY); + } + if (storeOrder.getIsChannel() == 1) {// 小程序 + appId = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_ROUTINE_APP_ID); + mchId = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_ROUTINE_MCH_ID); + signKey = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_ROUTINE_APP_KEY); + } + if (storeOrder.getIsChannel() == 2) {// H5,使用公众号的 + appId = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_WE_CHAT_APP_ID); + mchId = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_WE_CHAT_MCH_ID); + signKey = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_WE_CHAT_APP_KEY); + } + // 获取微信预下单对象 + CreateOrderRequestVo unifiedorderVo = getUnifiedorderVo(storeOrder, userToken.getToken(), ip, appId, mchId, signKey); + // 预下单(统一下单) + CreateOrderResponseVo responseVo = wechatNewService.payUnifiedorder(unifiedorderVo); + // 组装前端预下单参数 + Map map = new HashMap<>(); + map.put("appId", unifiedorderVo.getAppid()); + map.put("nonceStr", unifiedorderVo.getAppid()); + map.put("package", "prepay_id=".concat(responseVo.getPrepayId())); + map.put("signType", unifiedorderVo.getSign_type()); + Long currentTimestamp = WxPayUtil.getCurrentTimestamp(); + map.put("timeStamp", Long.toString(currentTimestamp)); + String paySign = WxPayUtil.getSign(map, signKey); + map.put("paySign", paySign); + map.put("prepayId", responseVo.getPrepayId()); + map.put("prepayTime", DateUtil.nowDateTimeStr()); + map.put("outTradeNo", unifiedorderVo.getOut_trade_no()); + if (storeOrder.getIsChannel() == 2) { + map.put("mweb_url", responseVo.getMWebUrl()); + } + return map; + } + + /** + * 获取微信预下单对象 + * @return 微信预下单对象 + */ + private CreateOrderRequestVo getUnifiedorderVo(StoreOrder storeOrder, String openid, String ip, String appId, String mchId, String signKey) { + + // 获取域名 + String domain = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_SITE_URL); + String apiDomain = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_API_URL); + + AttachVo attachVo = new AttachVo(Constants.SERVICE_PAY_TYPE_ORDER, storeOrder.getUid()); + CreateOrderRequestVo vo = new CreateOrderRequestVo(); + + vo.setAppid(appId); + vo.setMch_id(mchId); + vo.setNonce_str(WxPayUtil.getNonceStr()); + vo.setSign_type(PayConstants.WX_PAY_SIGN_TYPE_MD5); + String siteName = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_SITE_NAME); + // 因商品名称在微信侧超长更换为网站名称 + vo.setBody(siteName); + vo.setAttach(JSONObject.toJSONString(attachVo)); + vo.setOut_trade_no(CrmebUtil.getOrderNo("wxNo")); + // 订单中使用的是BigDecimal,这里要转为Integer类型 + vo.setTotal_fee(storeOrder.getPayPrice().multiply(BigDecimal.TEN).multiply(BigDecimal.TEN).intValue()); + vo.setSpbill_create_ip(ip); + vo.setNotify_url(apiDomain + PayConstants.WX_PAY_NOTIFY_API_URI); + vo.setTrade_type(PayConstants.WX_PAY_TRADE_TYPE_JS); + vo.setOpenid(openid); + if (storeOrder.getIsChannel() == 2){// H5 + vo.setTrade_type(PayConstants.WX_PAY_TRADE_TYPE_H5); + vo.setOpenid(null); + } + CreateOrderH5SceneInfoVo createOrderH5SceneInfoVo = new CreateOrderH5SceneInfoVo( + new CreateOrderH5SceneInfoDetailVo( + domain, + systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_SITE_NAME) + ) + ); + vo.setScene_info(JSONObject.toJSONString(createOrderH5SceneInfoVo)); + String sign = WxPayUtil.getSign(vo, signKey); + vo.setSign(sign); + return vo; + } + + private UserIntegralRecord integralRecordSubInit(StoreOrder storeOrder, User user) { + UserIntegralRecord integralRecord = new UserIntegralRecord(); + integralRecord.setUid(storeOrder.getUid()); + integralRecord.setLinkId(storeOrder.getOrderId()); + integralRecord.setLinkType(IntegralRecordConstants.INTEGRAL_RECORD_LINK_TYPE_ORDER); + integralRecord.setType(IntegralRecordConstants.INTEGRAL_RECORD_TYPE_SUB); + integralRecord.setTitle(IntegralRecordConstants.BROKERAGE_RECORD_TITLE_ORDER); + integralRecord.setIntegral(storeOrder.getUseIntegral()); + integralRecord.setBalance(user.getIntegral()); + integralRecord.setMark(StrUtil.format("订单支付抵扣{}积分购买商品", storeOrder.getUseIntegral())); + integralRecord.setStatus(IntegralRecordConstants.INTEGRAL_RECORD_STATUS_COMPLETE); + return integralRecord; + } + + private UserBill userBillInit(StoreOrder order, User user) { + UserBill userBill = new UserBill(); + userBill.setPm(0); + userBill.setUid(order.getUid()); + userBill.setLinkId(order.getId().toString()); + userBill.setTitle("购买商品"); + userBill.setCategory(Constants.USER_BILL_CATEGORY_MONEY); + userBill.setType(Constants.USER_BILL_TYPE_PAY_ORDER); + userBill.setNumber(order.getPayPrice()); + userBill.setBalance(user.getNowMoney()); + userBill.setMark("支付" + order.getPayPrice() + "元购买商品"); + return userBill; + } + + /** + * 经验添加记录 + */ + private UserExperienceRecord experienceRecordInit(StoreOrder storeOrder, Integer balance, Integer experience) { + UserExperienceRecord record = new UserExperienceRecord(); + record.setUid(storeOrder.getUid()); + record.setLinkId(storeOrder.getOrderId()); + record.setLinkType(ExperienceRecordConstants.EXPERIENCE_RECORD_LINK_TYPE_ORDER); + record.setType(ExperienceRecordConstants.EXPERIENCE_RECORD_TYPE_ADD); + record.setTitle(ExperienceRecordConstants.EXPERIENCE_RECORD_TITLE_ORDER); + record.setExperience(experience); + record.setBalance(balance); + record.setMark("用户付款成功增加" + experience + "经验"); + record.setCreateTime(cn.hutool.core.date.DateUtil.date()); + return record; + } + + /** + * 积分添加记录 + * @return UserIntegralRecord + */ + private UserIntegralRecord integralRecordInit(StoreOrder storeOrder, Integer balance, Integer integral, String type) { + UserIntegralRecord integralRecord = new UserIntegralRecord(); + integralRecord.setUid(storeOrder.getUid()); + integralRecord.setLinkId(storeOrder.getOrderId()); + integralRecord.setLinkType(IntegralRecordConstants.INTEGRAL_RECORD_LINK_TYPE_ORDER); + integralRecord.setType(IntegralRecordConstants.INTEGRAL_RECORD_TYPE_ADD); + integralRecord.setTitle(IntegralRecordConstants.BROKERAGE_RECORD_TITLE_ORDER); + integralRecord.setIntegral(integral); + integralRecord.setBalance(balance); + if ("order".equals(type)){ + integralRecord.setMark(StrUtil.format("用户付款成功,订单增加{}积分", integral)); + } + if ("product".equals(type)) { + integralRecord.setMark(StrUtil.format("用户付款成功,商品增加{}积分", integral)); + } + integralRecord.setStatus(IntegralRecordConstants.INTEGRAL_RECORD_STATUS_CREATE); + // 获取积分冻结期 + String fronzenTime = systemConfigService.getValueByKey(Constants.CONFIG_KEY_STORE_INTEGRAL_EXTRACT_TIME); + integralRecord.setFrozenTime(Integer.valueOf(Optional.ofNullable(fronzenTime).orElse("0"))); + integralRecord.setCreateTime(DateUtil.nowDateTime()); + return integralRecord; + } + + /** + * 发送消息通知 + * 根据用户类型发送 + * 公众号模板消息 + * 小程序订阅消息 + */ + private void pushMessageOrder(StoreOrder storeOrder, User user, SystemNotification payNotification) { + if (storeOrder.getIsChannel().equals(2)) {// H5 + return; + } + UserToken userToken; + HashMap temMap = new HashMap<>(); + if (!storeOrder.getPayType().equals(Constants.PAY_TYPE_WE_CHAT)) { + return; + } + // 公众号 + if (storeOrder.getIsChannel().equals(Constants.ORDER_PAY_CHANNEL_PUBLIC) && payNotification.getIsWechat().equals(1)) { + userToken = userTokenService.getTokenByUserId(user.getUid(), UserConstants.USER_TOKEN_TYPE_WECHAT); + if (ObjectUtil.isNull(userToken)) { + return ; + } + // 发送微信模板消息 + temMap.put(Constants.WE_CHAT_TEMP_KEY_FIRST, "您的订单已支付成功!"); + temMap.put("keyword1", storeOrder.getPayPrice().toString()); + temMap.put("keyword2", storeOrder.getOrderId()); + temMap.put(Constants.WE_CHAT_TEMP_KEY_END, "欢迎下次再来!"); + templateMessageService.pushTemplateMessage(payNotification.getWechatId(), temMap, userToken.getToken()); + return; + } + if (storeOrder.getIsChannel().equals(Constants.ORDER_PAY_CHANNEL_PROGRAM) && payNotification.getIsRoutine().equals(1)) { + // 小程序发送订阅消息 + userToken = userTokenService.getTokenByUserId(user.getUid(), UserConstants.USER_TOKEN_TYPE_ROUTINE); + if (ObjectUtil.isNull(userToken)) { + return ; + } + // 组装数据 +// temMap.put("character_string1", storeOrder.getOrderId()); +// temMap.put("amount2", storeOrder.getPayPrice().toString() + "元"); +// temMap.put("thing7", "您的订单已支付成功"); + temMap.put("character_string3", storeOrder.getOrderId()); + temMap.put("amount9", storeOrder.getPayPrice().toString() + "元"); + temMap.put("thing6", "您的订单已支付成功"); + templateMessageService.pushMiniTemplateMessage(payNotification.getRoutineId(), temMap, userToken.getToken()); + } + } + + /** + * 商品购买后根据配置送券 + */ + private void autoSendCoupons(StoreOrder storeOrder){ + // 根据订单详情获取商品信息 + List orders = storeOrderInfoService.getOrderListByOrderId(storeOrder.getId()); + if(null == orders){ + return; + } + List couponUserList = CollUtil.newArrayList(); + Map couponMap = CollUtil.newHashMap(); + for (StoreOrderInfoOldVo order : orders) { + List couponsForGiveUser = storeProductCouponService.getListByProductId(order.getProductId()); + for (int i = 0; i < couponsForGiveUser.size();) { + StoreProductCoupon storeProductCoupon = couponsForGiveUser.get(i); + MyRecord record = storeCouponUserService.paySuccessGiveAway(storeProductCoupon.getIssueCouponId(), storeOrder.getUid()); + if ("fail".equals(record.getStr("status"))) { + logger.error(StrUtil.format("支付成功领取优惠券失败,失败原因:{}", record.getStr("errMsg"))); + couponsForGiveUser.remove(i); + continue; + } + + StoreCouponUser storeCouponUser = record.get("storeCouponUser"); + couponUserList.add(storeCouponUser); + couponMap.put(storeCouponUser.getCouponId(), record.getBoolean("isLimited")); + i++; + } + } + + Boolean execute = transactionTemplate.execute(e -> { + if (CollUtil.isNotEmpty(couponUserList)) { + storeCouponUserService.saveBatch(couponUserList); + couponUserList.forEach(i -> storeCouponService.deduction(i.getCouponId(), 1, couponMap.get(i.getCouponId()))); + } + return Boolean.TRUE; + }); + if (!execute) { + logger.error(StrUtil.format("支付成功领取优惠券,更新数据库失败,订单编号:{}", storeOrder.getOrderId())); + } + } +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/OrderServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/OrderServiceImpl.java new file mode 100644 index 0000000..834e4e0 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/OrderServiceImpl.java @@ -0,0 +1,2131 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.zbkj.common.constants.*; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.model.bargain.StoreBargain; +import com.zbkj.common.model.bargain.StoreBargainUser; +import com.zbkj.common.model.cat.StoreCart; +import com.zbkj.common.model.combination.StoreCombination; +import com.zbkj.common.model.coupon.StoreCouponUser; +import com.zbkj.common.model.express.Express; +import com.zbkj.common.model.express.ShippingTemplates; +import com.zbkj.common.model.express.ShippingTemplatesFree; +import com.zbkj.common.model.express.ShippingTemplatesRegion; +import com.zbkj.common.model.order.StoreOrder; +import com.zbkj.common.model.order.StoreOrderInfo; +import com.zbkj.common.model.order.StoreOrderStatus; +import com.zbkj.common.model.product.StoreProduct; +import com.zbkj.common.model.product.StoreProductAttrValue; +import com.zbkj.common.model.seckill.StoreSeckill; +import com.zbkj.common.model.seckill.StoreSeckillManger; +import com.zbkj.common.model.sms.SmsTemplate; +import com.zbkj.common.model.system.SystemAdmin; +import com.zbkj.common.model.system.SystemNotification; +import com.zbkj.common.model.system.SystemStore; +import com.zbkj.common.model.system.SystemUserLevel; +import com.zbkj.common.model.user.User; +import com.zbkj.common.model.user.UserAddress; +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.request.*; +import com.zbkj.common.response.*; +import com.zbkj.common.utils.CrmebUtil; +import com.zbkj.common.utils.DateUtil; +import com.zbkj.common.utils.RedisUtil; +import com.zbkj.common.vo.*; +import com.zbkj.service.delete.OrderUtils; +import com.zbkj.service.service.*; +import org.apache.commons.lang3.StringEscapeUtils; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationContext; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.support.TransactionTemplate; + +import java.math.BigDecimal; +import java.util.*; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +/** + * H5端订单操作 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class OrderServiceImpl implements OrderService { + + private final Logger logger = LoggerFactory.getLogger(OrderServiceImpl.class); + + @Autowired + private UserService userService; + + @Autowired + private StoreCartService storeCartService; + + @Autowired + private StoreOrderService storeOrderService; + + @Autowired + private StoreOrderInfoService storeOrderInfoService; + + @Autowired + private StoreOrderStatusService storeOrderStatusService; + + @Autowired + private ShippingTemplatesService shippingTemplatesService; + + @Autowired + private UserAddressService userAddressService; + + @Autowired + private SystemConfigService systemConfigService; + + @Autowired + private StoreProductReplyService storeProductReplyService; + + @Autowired + private RedisUtil redisUtil; + + @Autowired + private SystemStoreService systemStoreService; + + @Autowired + private OrderUtils orderUtils; + + @Autowired + private SystemAttachmentService systemAttachmentService; + + @Autowired + private LogisticService logisticsService; + + @Autowired + private StoreSeckillService storeSeckillService; + + private StoreCombinationService storeCombinationService; + + @Autowired + public void setStoreCombinationService(ApplicationContext applicationContext) { + this.storeCombinationService = applicationContext.getBean(StoreCombinationService.class); + } + + @Autowired + private StoreBargainService storeBargainService; + + @Autowired + private TransactionTemplate transactionTemplate; + + @Autowired + private SystemAdminService systemAdminService; + + @Autowired + private SmsService smsService; + + @Autowired + private SystemGroupDataService systemGroupDataService; + + @Autowired + private StoreProductService storeProductService; + + @Autowired + private StoreProductAttrValueService attrValueService; + + @Autowired + private ShippingTemplatesFreeService shippingTemplatesFreeService; + + @Autowired + private ShippingTemplatesRegionService shippingTemplatesRegionService; + + @Autowired + private StoreCouponUserService storeCouponUserService; + + @Autowired + private StoreProductAttrValueService storeProductAttrValueService; + + @Autowired + private StoreBargainUserService storeBargainUserService; + + @Autowired + private StoreSeckillMangerService storeSeckillMangerService; + + @Autowired + private ExpressService expressService; + + @Autowired + private SystemUserLevelService systemUserLevelService; + + @Autowired + private SystemNotificationService systemNotificationService; + + @Autowired + private SmsTemplateService smsTemplateService; + + /** + * 发送后台管理员下单提醒通知短信 + * @param orderNo 订单编号 + */ + @Async + public void sendAdminOrderNotice(String orderNo) { + // 系统是否开启用户下单管理员提醒开关 + SystemNotification notification = systemNotificationService.getByMark(NotifyConstants.PLACE_AN_ORDER_ADMIN_MARK); + if (!notification.getIsSms().equals(1)) { + return; + } + // 查询可已发送短信的管理员 + List systemAdminList = systemAdminService.findIsSmsList(); + if (CollUtil.isEmpty(systemAdminList)) { + return ; + } + // 发送短信 + SmsTemplate smsTemplate = smsTemplateService.getDetail(notification.getSmsId()); + Integer tempId = Integer.valueOf(smsTemplate.getTempId()); + systemAdminList.forEach(admin -> smsService.sendCreateOrderNotice(admin.getPhone(), orderNo, admin.getRealName(), tempId)); + } + + /** + * 删除已完成订单 + * @param id Integer 订单id + * @return 删除结果 + */ + @Override + public Boolean delete(Integer id) { + StoreOrder storeOrder = storeOrderService.getById(id); + Integer userId = userService.getUserIdException(); + if (ObjectUtil.isNull(storeOrder) || !userId.equals(storeOrder.getUid())) { + throw new CrmebException("没有找到相关订单信息!"); + } + if (storeOrder.getIsDel() || storeOrder.getIsSystemDel()) { + throw new CrmebException("订单已删除!"); + } + if (storeOrder.getPaid()) { + if (storeOrder.getRefundStatus() > 0 && !storeOrder.getRefundStatus().equals(2)) { + throw new CrmebException("订单在退款流程中无法删除!"); + } + if (storeOrder.getRefundStatus().equals(0) && !storeOrder.getStatus().equals(3)) { + throw new CrmebException("只能删除已完成订单!"); + } + } else { + throw new CrmebException("未支付订单无法删除!"); + } + + //可以删除 + storeOrder.setIsDel(true); + Boolean execute = transactionTemplate.execute(e -> { + storeOrderService.updateById(storeOrder); + //日志 + storeOrderStatusService.createLog(storeOrder.getId(), "remove_order", "删除订单"); + return Boolean.TRUE; + }); + return execute; + } + + /** + * 创建订单商品评价 + * @param request 请求参数 + * @return Boolean + */ + @Override + public Boolean reply(StoreProductReplyAddRequest request) { + if (StrUtil.isBlank(request.getOrderNo())) { + throw new CrmebException("订单号参数不能为空"); + } + return storeProductReplyService.create(request); + } + + /** + * 订单收货 + * @param id Integer 订单id + */ + @Override + public Boolean take(Integer id) { + StoreOrder storeOrder = orderUtils.getInfoById(id); + if (!storeOrder.getStatus().equals(Constants.ORDER_STATUS_INT_SPIKE)) { + throw new CrmebException("订单状态错误"); + } + //已收货,待评价 + storeOrder.setStatus(Constants.ORDER_STATUS_INT_BARGAIN); + boolean result = storeOrderService.updateById(storeOrder); + if (result) { + //后续操作放入redis + redisUtil.lPush(TaskConstants.ORDER_TASK_REDIS_KEY_AFTER_TAKE_BY_USER, id); + } + return result; + } + + /** + * 订单取消 + * @param id Integer 订单id + */ + @Override + public Boolean cancel(Integer id) { + StoreOrder storeOrder = orderUtils.getInfoById(id); + //已收货,待评价 + storeOrder.setIsDel(true); + storeOrder.setIsSystemDel(true); + boolean result = storeOrderService.updateById(storeOrder); + + //后续操作放入redis + redisUtil.lPush(Constants.ORDER_TASK_REDIS_KEY_AFTER_CANCEL_BY_USER, id); + return result; + } + + /** + * 订单退款申请 + * @param request OrderRefundApplyRequest 退款参数 + */ + @Override + public Boolean refundApply(OrderRefundApplyRequest request) { + StoreOrder storeOrderPram = new StoreOrder(); + storeOrderPram.setOrderId(request.getUni()); + storeOrderPram.setIsDel(false); + storeOrderPram.setPaid(true); + StoreOrder existStoreOrder = storeOrderService.getByEntityOne(storeOrderPram); + if (null == existStoreOrder) throw new CrmebException("支付订单不存在"); + if (existStoreOrder.getRefundStatus() == 1) { + throw new CrmebException("正在申请退款中"); + } + + if (existStoreOrder.getRefundStatus() == 2) { + throw new CrmebException("订单已退款"); + } + + if (existStoreOrder.getRefundStatus() == 3) { + throw new CrmebException("订单退款中"); + } + + existStoreOrder.setRefundStatus(1); + existStoreOrder.setRefundReasonTime(DateUtil.nowDateTime()); + existStoreOrder.setRefundReasonWap(request.getText()); + existStoreOrder.setRefundReasonWapExplain(request.getExplain()); + existStoreOrder.setRefundReasonWapImg(systemAttachmentService.clearPrefix(request.getReasonImage())); + existStoreOrder.setRefundPrice(BigDecimal.ZERO); + + Boolean execute = transactionTemplate.execute(e -> { + storeOrderService.updateById(existStoreOrder); + storeOrderStatusService.createLog(existStoreOrder.getId(), Constants.ORDER_LOG_REFUND_APPLY, "用户申请退款原因:" + request.getText()); + return Boolean.TRUE; + }); + + if (execute) { + // 发送用户退款管理员提醒短信 + SystemNotification notification = systemNotificationService.getByMark(NotifyConstants.APPLY_ORDER_REFUND_ADMIN_MARK); + if (notification.getIsSms().equals(1)) { + // 查询可已发送短信的管理员 + List systemAdminList = systemAdminService.findIsSmsList(); + if (CollUtil.isNotEmpty(systemAdminList)) { + SmsTemplate smsTemplate = smsTemplateService.getDetail(notification.getSmsId()); + Integer tempId = Integer.valueOf(smsTemplate.getTempId()); + // 发送短信 + systemAdminList.forEach(admin -> { + smsService.sendOrderRefundApplyNotice(admin.getPhone(), existStoreOrder.getOrderId(), admin.getRealName(), tempId); + }); + } + } + } + if (!execute) throw new CrmebException("申请退款失败"); + return execute; + } + + /** + * 订单退款申请Task使用 + * @param applyList OrderRefundApplyRequest 退款参数 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean refundApplyTask(List applyList) { + if (CollUtil.isEmpty(applyList)) { + return false; + } + SystemNotification notification = systemNotificationService.getByMark(NotifyConstants.APPLY_ORDER_REFUND_ADMIN_MARK); + List systemAdminList = systemAdminService.findIsSmsList(); + SmsTemplate smsTemplate = smsTemplateService.getDetail(notification.getSmsId()); + Integer tempId = Integer.valueOf(smsTemplate.getTempId()); + List orderList = CollUtil.newArrayList(); + for (OrderRefundApplyRequest request : applyList) { + StoreOrder storeOrder = storeOrderService.getById(request.getId()); + if (ObjectUtil.isNull(storeOrder)) { + //订单号错误 + logger.error("拼团自动处理订单申请退款:没有找到相关订单信息!"); + continue; + } + if (storeOrder.getRefundStatus() == 1) { + logger.error("拼团自动处理订单申请退款:正在申请退款中!"); + continue; + } + + if (storeOrder.getRefundStatus() == 2) { + logger.error("拼团自动处理订单申请退款:订单已退款!"); + continue; + } + + if (storeOrder.getRefundStatus() == 3) { + logger.error("拼团自动处理订单申请退款:订单退款中!"); + continue; + } + + storeOrder.setRefundReasonWapImg(systemAttachmentService.clearPrefix(request.getReasonImage())); + storeOrder.setRefundStatus(1); + storeOrder.setRefundReasonWapExplain(request.getExplain()); + storeOrder.setRefundReason(request.getText()); + storeOrder.setRefundPrice(BigDecimal.ZERO); + storeOrder.setRefundReasonTime(DateUtil.nowDateTime()); + orderList.add(storeOrder); + + // 发送用户退款管理员提醒短信 + if (notification.getIsSms().equals(1) && CollUtil.isNotEmpty(systemAdminList)) { + // 发送短信 + systemAdminList.forEach(admin -> smsService.sendOrderRefundApplyNotice(admin.getPhone(), storeOrder.getOrderId(), admin.getRealName(), tempId)); + } + } + + return storeOrderService.updateBatchById(orderList, 100); + } + + /** + * 订单列表 + * @param status 类型 + * @param pageRequest 分页 + * @return CommonPage + */ + @Override + public CommonPage list(Integer status, PageParamRequest pageRequest) { + Integer userId = userService.getUserIdException(); + + List orderList = storeOrderService.getUserOrderList(userId, status, pageRequest); + CommonPage storeOrderCommonPage = CommonPage.restPage(orderList); + List responseList = CollUtil.newArrayList(); + for (StoreOrder storeOrder : orderList) { + OrderDetailResponse infoResponse = new OrderDetailResponse(); + BeanUtils.copyProperties(storeOrder, infoResponse); + // 订单状态 + infoResponse.setOrderStatus(getH5OrderStatus(storeOrder)); + // 活动类型 + infoResponse.setActivityType(getOrderActivityType(storeOrder)); + // 订单详情对象列表 + List orderInfoList = storeOrderInfoService.getListByOrderNo(storeOrder.getOrderId()); + List infoResponseList = CollUtil.newArrayList(); + orderInfoList.forEach(e -> { + OrderInfoResponse orderInfoResponse = new OrderInfoResponse(); + orderInfoResponse.setStoreName(e.getProductName()); + orderInfoResponse.setImage(e.getImage()); + orderInfoResponse.setCartNum(e.getPayNum()); + orderInfoResponse.setPrice(ObjectUtil.isNotNull(e.getVipPrice()) ? e.getVipPrice() : e.getPrice()); + orderInfoResponse.setProductId(e.getProductId()); + infoResponseList.add(orderInfoResponse); + }); + infoResponse.setOrderInfoList(infoResponseList); + responseList.add(infoResponse); + } + CommonPage detailPage = CommonPage.restPage(responseList); + BeanUtils.copyProperties(storeOrderCommonPage, detailPage, "list"); + return detailPage; + } + + /** + * 获取订单活动类型 + * @param storeOrder 订单都西昂 + * @return 活动类型 + */ + private String getOrderActivityType(StoreOrder storeOrder) { + if (storeOrder.getSeckillId() > 0) { + return "秒杀"; + } + if (storeOrder.getCombinationId() > 0) { + return "拼团"; + } + if (storeOrder.getBargainId() > 0) { + return "砍价"; + } + if (storeOrder.getType().equals(1)) { + return "视频号"; + } + if (storeOrder.getShippingType().equals(2)) { + return "核销"; + } + return "普通"; + } + + /** + * 获取H5订单状态 + * @param storeOrder 订单对象 + */ + private String getH5OrderStatus(StoreOrder storeOrder) { + if (!storeOrder.getPaid()) { + return "待支付"; + } + if (storeOrder.getRefundStatus().equals(1)) { + return "申请退款中"; + } + if (storeOrder.getRefundStatus().equals(2)) { + return "已退款"; + } + if (storeOrder.getRefundStatus().equals(3)) { + return "退款中"; + } + if (storeOrder.getStatus().equals(0)) { + return "待发货"; + } + if (storeOrder.getStatus().equals(1)) { + return "待收货"; + } + if (storeOrder.getStatus().equals(2)) { + return "待评价"; + } + if (storeOrder.getStatus().equals(3)) { + return "已完成"; + } + return ""; + } + + /** + * 订单详情 + * @param orderId 订单id + */ + @Override + public StoreOrderDetailInfoResponse detailOrder(String orderId) { + User currentUser = userService.getInfoException(); + + StoreOrderDetailInfoResponse storeOrderDetailResponse = new StoreOrderDetailInfoResponse(); + // 查询订单 + StoreOrder storeOrder = storeOrderService.getByOderId(orderId); + if (ObjectUtil.isNull(storeOrder) || storeOrder.getIsDel() || storeOrder.getIsSystemDel()) { + throw new CrmebException("订单不存在"); + } + if (!storeOrder.getUid().equals(currentUser.getUid())) { + throw new CrmebException("订单不存在"); + } + + BeanUtils.copyProperties(storeOrder, storeOrderDetailResponse); + MyRecord orderStatusVo = getOrderStatusVo(storeOrder); + // 订单详情对象列表 + List infoResponseList = CollUtil.newArrayList(); + List infoList = storeOrderInfoService.getListByOrderNo(storeOrder.getOrderId()); + infoList.forEach(e -> { + OrderInfoResponse orderInfoResponse = new OrderInfoResponse(); + orderInfoResponse.setStoreName(e.getProductName()); + orderInfoResponse.setImage(e.getImage()); + orderInfoResponse.setCartNum(e.getPayNum()); + orderInfoResponse.setPrice(ObjectUtil.isNotNull(e.getVipPrice()) ? e.getVipPrice() : e.getPrice()); + orderInfoResponse.setProductId(e.getProductId()); + orderInfoResponse.setIsReply(e.getIsReply() ? 1 : 0); + orderInfoResponse.setAttrId(e.getAttrValueId()); + orderInfoResponse.setSku(e.getSku()); + infoResponseList.add(orderInfoResponse); + }); + storeOrderDetailResponse.setOrderInfoList(infoResponseList); + + // 系统门店信息 + SystemStore systemStorePram = new SystemStore(); + systemStorePram.setId(storeOrder.getStoreId()); + storeOrderDetailResponse.setSystemStore(systemStoreService.getByCondition(systemStorePram)); + // 腾讯云地图key + storeOrderDetailResponse.setMapKey(systemConfigService.getValueByKey(SysConfigConstants.CONFIG_SITE_TENG_XUN_MAP_KEY)); + BeanUtils.copyProperties(storeOrder, storeOrderDetailResponse); + storeOrderDetailResponse.setStatusPic(orderStatusVo.getStr("statusPic")); + storeOrderDetailResponse.setOrderStatusMsg(orderStatusVo.getStr("msg")); + storeOrderDetailResponse.setPayTypeStr(orderStatusVo.getStr("payTypeStr")); + BigDecimal proTotalPrice = storeOrderDetailResponse.getPayPrice().add(storeOrderDetailResponse.getCouponPrice()).add(storeOrderDetailResponse.getDeductionPrice()).subtract(storeOrderDetailResponse.getPayPostage()); + storeOrderDetailResponse.setProTotalPrice(proTotalPrice); + return storeOrderDetailResponse; + } + + /** + * 获取订单状态相关信息 + * @return MyRecord + */ + private MyRecord getOrderStatusVo(StoreOrder storeOrder) { + MyRecord record = new MyRecord(); + if (!storeOrder.getPaid()) { + record.set("type", 0); + record.set("title", "未支付"); + record.set("msg", "订单未支付"); + List configKeys = new ArrayList<>(); + configKeys.add("order_cancel_time"); + configKeys.add("order_activity_time"); + configKeys.add("order_bargain_time"); + configKeys.add("order_seckill_time"); + configKeys.add("order_pink_time"); + List configValues = systemConfigService.getValuesByKes(configKeys); + Date timeSpace; + timeSpace = DateUtil.addSecond(storeOrder.getCreateTime(),Double.valueOf(configValues.get(0)).intValue() * 3600); + record.set("msg", "请在" + DateUtil.dateToStr(timeSpace, Constants.DATE_FORMAT) +"前完成支付"); + } else if (storeOrder.getRefundStatus() == 1) { + record.set("type", -1); + record.set("title", "申请退款中"); + record.set("msg", "商家审核中,请耐心等待"); + } else if (storeOrder.getRefundStatus() == 2) { + record.set("type", -2); + record.set("title", "已退款"); + record.set("msg", "已为您退款,感谢您的支持"); + } else if (storeOrder.getRefundStatus() == 3) { + record.set("type", -3); + record.set("title", "退款中"); + record.set("msg", "正在为您退款,感谢您的支持"); + } else if (storeOrder.getStatus() == 0) { + record.set("type", 1); + record.set("title", "未发货"); + record.set("msg", "商家未发货,请耐心等待"); + } else if (storeOrder.getStatus() == 1) { // 待收货处理 + // 待收货 + if (null != storeOrder.getDeliveryType() && storeOrder.getDeliveryType().equals(Constants.ORDER_STATUS_STR_SPIKE_KEY)) { // 送货 + StoreOrderStatus storeOrderStatus = new StoreOrderStatus(); + storeOrderStatus.setOid(storeOrder.getId()); + storeOrderStatus.setChangeType(Constants.ORDER_LOG_DELIVERY); + List sOrderStatusResults = storeOrderStatusService.getByEntity(storeOrderStatus); + if (sOrderStatusResults.size()>0) { + record.set("type", 2); + record.set("title", "待收货"); + record.set("msg", "商家已送货,请耐心等待"); + } + } else if (null != storeOrder.getDeliveryType() && storeOrder.getDeliveryType().equals(Constants.ORDER_LOG_EXPRESS)) { + StoreOrderStatus storeOrderStatus = new StoreOrderStatus(); + storeOrderStatus.setOid(storeOrder.getId()); + storeOrderStatus.setChangeType(Constants.ORDER_LOG_EXPRESS); + List sOrderStatusResults = storeOrderStatusService.getByEntity(storeOrderStatus); + if (sOrderStatusResults.size()>0) { + record.set("type", 2); + record.set("title", "待收货"); + record.set("msg", "商家已发货,请耐心等待"); + } + }else { + StoreOrderStatus storeOrderStatus = new StoreOrderStatus(); + storeOrderStatus.setOid(storeOrder.getId()); + storeOrderStatus.setChangeType(Constants.ORDER_LOG_DELIVERY_VI); + List sOrderStatusResults = storeOrderStatusService.getByEntity(storeOrderStatus); + if (sOrderStatusResults.size()>0) { + record.set("type", 2); + record.set("title", "待收货"); + record.set("msg", "服务商已虚拟发货"); + } else { + record.set("type", 2); + record.set("title", "待收货"); + record.set("msg", "退款拒绝订单已发货"); + } + } + }else if (storeOrder.getStatus() == 2) { + record.set("type", 3); + record.set("title", "待评价"); + record.set("msg", "已收货,快去评价一下吧"); + }else if (storeOrder.getStatus() == 3) { + record.set("type", 4); + record.set("title", "交易完成"); + record.set("msg", "交易完成,感谢您的支持"); + } + + // 支付方式 + String orderPayTypeStr = orderUtils.getOrderPayTypeStr(storeOrder.getPayType()); + record.set("payTypeStr", orderPayTypeStr); + if (StringUtils.isNotBlank(storeOrder.getDeliveryType())) { + record.set("deliveryType", StringUtils.isNotBlank(storeOrder.getDeliveryType()) ? storeOrder.getDeliveryType():"其他方式"); + } + + // 获取商品状态图片 ignore + List orderStatusPicList = systemGroupDataService.getListByGid(SysGroupDataConstants.GROUP_DATA_ID_ORDER_STATUS_PIC, SystemGroupDataOrderStatusPicResponse.class);// 53 = group id 在groupData中查询数据 + for (SystemGroupDataOrderStatusPicResponse picList : orderStatusPicList) { + if (picList.getOrderStatus() == record.getInt("type")) { + record.set("statusPic", picList.getUrl()); + break; + } + } + return record; + } + + /** + * 订单tap data + * @return 订单状态数据量 + */ + @Override + public OrderDataResponse orderData() { + Integer userId = userService.getUserIdException(); + OrderDataResponse result = new OrderDataResponse(); + + // 订单数量 + Integer orderCount = storeOrderService.getOrderCountByUid(userId); + // 待支付订单数 + Integer unPaidCount = storeOrderService.getTopDataUtil(Constants.ORDER_STATUS_H5_UNPAID, userId); + + if (orderCount.equals(0)) { + result.setOrderCount(0); + result.setSumPrice(BigDecimal.ZERO); + result.setUnPaidCount(unPaidCount); + result.setUnShippedCount(0); + result.setReceivedCount(0); + result.setEvaluatedCount(0); + result.setCompleteCount(0); + result.setRefundCount(0); + return result; + } + + result.setOrderCount(orderCount); + // 总消费金额 + BigDecimal sumPrice = storeOrderService.getSumPayPriceByUid(userId); + result.setSumPrice(sumPrice); + // 未支付 + result.setUnPaidCount(unPaidCount); + // 待发货 + result.setUnShippedCount(storeOrderService.getTopDataUtil(Constants.ORDER_STATUS_H5_NOT_SHIPPED, userId)); + // 待收货 + result.setReceivedCount(storeOrderService.getTopDataUtil(Constants.ORDER_STATUS_H5_SPIKE, userId)); + // 待核销 + result.setEvaluatedCount(storeOrderService.getTopDataUtil(Constants.ORDER_STATUS_H5_JUDGE, userId)); + // 已完成 + result.setCompleteCount(storeOrderService.getTopDataUtil(Constants.ORDER_STATUS_H5_COMPLETE, userId)); + // 退款中和已退款(只展示退款中) + result.setRefundCount(storeOrderService.getTopDataUtil(Constants.ORDER_STATUS_H5_REFUNDING, userId)); + return result; + } + + /** + * 查询退款理由 + * @return 退款理由集合 + */ + @Override + public List getRefundReason() { + String reasonString = systemConfigService.getValueByKey(SysConfigConstants.CONFIG_KEY_STOR_REASON); + reasonString = CrmebUtil.UnicodeToCN(reasonString); + reasonString = reasonString.replace("rn", "n"); + return Arrays.asList(reasonString.split("\\n")); + } + + /** + * 订单物流查看 + * @param orderId 订单id + */ + @Override + public Object expressOrder(String orderId) { + HashMap resultMap = new HashMap<>(); + StoreOrder storeOrderPram = new StoreOrder(); + storeOrderPram.setOrderId(orderId); + StoreOrder existOrder = storeOrderService.getByEntityOne(storeOrderPram); + if (ObjectUtil.isNull(existOrder)) throw new CrmebException("未找到该订单信息"); + if (!existOrder.getDeliveryType().equals(Constants.ORDER_LOG_EXPRESS) || StringUtils.isBlank(existOrder.getDeliveryType())) + throw new CrmebException("该订单不存在快递订单号"); + + if (existOrder.getType().equals(1)) {// 视频号订单 + Express express = expressService.getByName(existOrder.getDeliveryName()); + if (ObjectUtil.isNotNull(express)) { + existOrder.setDeliveryCode(express.getCode()); + } else { + existOrder.setDeliveryCode(""); + } + } + LogisticsResultVo expressInfo = logisticsService.info(existOrder.getDeliveryId(), null, Optional.ofNullable(existOrder.getDeliveryCode()).orElse(""), storeOrderPram.getUserPhone()); + + List list = storeOrderInfoService.getVoListByOrderId(existOrder.getId()); + List> cartInfos = CollUtil.newArrayList(); + for (StoreOrderInfoVo infoVo : list) { + HashMap cartInfo = new HashMap<>(); + cartInfo.put("payNum", infoVo.getInfo().getPayNum()); + cartInfo.put("price", infoVo.getInfo().getPrice()); + cartInfo.put("productName", infoVo.getInfo().getProductName()); + cartInfo.put("productImg", infoVo.getInfo().getImage()); + cartInfos.add(cartInfo); + } + HashMap orderInfo = new HashMap<>(); + orderInfo.put("deliveryId", existOrder.getDeliveryId()); + orderInfo.put("deliveryName", existOrder.getDeliveryName()); + orderInfo.put("deliveryType", existOrder.getDeliveryType()); + orderInfo.put("info", cartInfos); + + resultMap.put("order", orderInfo); + resultMap.put("express", expressInfo); + return resultMap; + + } + + /** + *获取待评价信息 + */ + @Override + public OrderProductReplyResponse getReplyProduct(GetProductReply productReply) { + StoreOrderInfo storeOrderInfo = storeOrderInfoService.getByUniAndOrderId(productReply.getUni(), productReply.getOrderId()); + OrderInfoDetailVo scr = JSONObject.parseObject(storeOrderInfo.getInfo(), OrderInfoDetailVo.class); + OrderProductReplyResponse response = new OrderProductReplyResponse(); + response.setCartNum(scr.getPayNum()); + response.setTruePrice(scr.getPrice()); + response.setProductId(scr.getProductId()); + response.setImage(scr.getImage()); + response.setSku(scr.getSku()); + response.setStoreName(scr.getProductName()); + return response; + } + + /** + * 获取申请订单退款信息 + * @param orderId 订单编号 + * @return ApplyRefundOrderInfoResponse + */ + @Override + public ApplyRefundOrderInfoResponse applyRefundOrderInfo(String orderId) { + StoreOrder storeOrder = getByOrderIdException(orderId); + ApplyRefundOrderInfoResponse response = new ApplyRefundOrderInfoResponse(); + BeanUtils.copyProperties(storeOrder, response); + // 订单详情对象列表 + List infoVoList = storeOrderInfoService.getOrderListByOrderId(storeOrder.getId()); + List infoResponseList = CollUtil.newArrayList(); + infoVoList.forEach(e -> { + OrderInfoResponse orderInfoResponse = new OrderInfoResponse(); + orderInfoResponse.setStoreName(e.getInfo().getProductName()); + orderInfoResponse.setImage(e.getInfo().getImage()); + orderInfoResponse.setCartNum(e.getInfo().getPayNum()); + orderInfoResponse.setPrice(e.getInfo().getPrice()); + orderInfoResponse.setProductId(e.getProductId()); + infoResponseList.add(orderInfoResponse); + }); + response.setOrderInfoList(infoResponseList); + return response; + } + + /** + * 订单预下单 + * @param request 预下单请求参数 + * @return PreOrderResponse + */ + @Override + public MyRecord preOrder(PreOrderRequest request) { + if (CollUtil.isEmpty(request.getOrderDetails())) { + throw new CrmebException("预下单订单详情列表不能为空"); + } + User user = userService.getInfoException(); + // 校验预下单商品信息 + OrderInfoVo orderInfoVo = validatePreOrderRequest(request, user); + // 商品总计金额 + BigDecimal totalPrice; + if (orderInfoVo.getOrderDetailList().get(0).getProductType().equals(Constants.PRODUCT_TYPE_NORMAL)) { + // 普通商品 + totalPrice = orderInfoVo.getOrderDetailList().stream().map(e -> e.getVipPrice().multiply(new BigDecimal(e.getPayNum()))).reduce(BigDecimal.ZERO, BigDecimal::add); + } else { + totalPrice = orderInfoVo.getOrderDetailList().stream().map(e -> e.getPrice().multiply(new BigDecimal(e.getPayNum()))).reduce(BigDecimal.ZERO, BigDecimal::add); + } + orderInfoVo.setProTotalFee(totalPrice); + // 购买商品总数量 + int orderProNum = orderInfoVo.getOrderDetailList().stream().mapToInt(OrderInfoDetailVo::getPayNum).sum(); + orderInfoVo.setOrderProNum(orderProNum); + // 获取默认地址 + UserAddress userAddress = userAddressService.getDefaultByUid(user.getUid()); + if (ObjectUtil.isNotNull(userAddress)) { + // 计算运费 + getFreightFee(orderInfoVo, userAddress); + orderInfoVo.setAddressId(userAddress.getId()); + orderInfoVo.setRealName(userAddress.getRealName()); + orderInfoVo.setPhone(userAddress.getPhone()); + orderInfoVo.setProvince(userAddress.getProvince()); + orderInfoVo.setCity(userAddress.getCity()); + orderInfoVo.setDistrict(userAddress.getDistrict()); + orderInfoVo.setDetail(userAddress.getDetail()); + } else { + orderInfoVo.setFreightFee(BigDecimal.ZERO); + } + // 实际支付金额 + orderInfoVo.setPayFee(orderInfoVo.getProTotalFee().add(orderInfoVo.getFreightFee())); + orderInfoVo.setUserIntegral(user.getIntegral()); + orderInfoVo.setUserBalance(user.getNowMoney()); + // 缓存订单 + String key = user.getUid() + DateUtil.getNowTime().toString()+CrmebUtil.getUuid(); + redisUtil.set("user_order:" + key, JSONObject.toJSONString(orderInfoVo), Constants.ORDER_CASH_CONFIRM, TimeUnit.MINUTES); + MyRecord record = new MyRecord(); + record.set("preOrderNo", key); + return record; + } + + /** + * 加载预下单信息 + * @param preOrderNo 预下单号 + * @return 预下单信息 + */ + @Override + public PreOrderResponse loadPreOrder(String preOrderNo) { + // 通过缓存获取预下单对象 + String key = "user_order:" + preOrderNo; + boolean exists = redisUtil.exists(key); + if (!exists) { + throw new CrmebException("预下单订单不存在"); + } + String orderVoString = redisUtil.get(key).toString(); + OrderInfoVo orderInfoVo = JSONObject.parseObject(orderVoString, OrderInfoVo.class); + PreOrderResponse preOrderResponse = new PreOrderResponse(); + preOrderResponse.setOrderInfoVo(orderInfoVo); + String payWeixinOpen = systemConfigService.getValueByKey(SysConfigConstants.CONFIG_PAY_WEIXIN_OPEN); + if (orderInfoVo.getIsVideo()) { + // 关闭余额支付和到店自提 + preOrderResponse.setYuePayStatus("0"); + preOrderResponse.setPayWeixinOpen(payWeixinOpen); + preOrderResponse.setStoreSelfMention("false"); + preOrderResponse.setAliPayStatus("0"); + return preOrderResponse; + } + String yuePayStatus = systemConfigService.getValueByKey(SysConfigConstants.CONFIG_YUE_PAY_STATUS);// 1开启 2关闭 + String storeSelfMention = systemConfigService.getValueByKey(SysConfigConstants.CONFIG_KEY_STORE_SELF_MENTION); + String aliPayStatus = systemConfigService.getValueByKey(SysConfigConstants.CONFIG_ALI_PAY_STATUS);// 1开启 + preOrderResponse.setYuePayStatus(yuePayStatus); + preOrderResponse.setPayWeixinOpen(payWeixinOpen); + preOrderResponse.setStoreSelfMention(storeSelfMention); + preOrderResponse.setAliPayStatus(aliPayStatus); + return preOrderResponse; + } + + /** + * 计算订单价格 + * @param request 计算订单价格请求对象 + * @return ComputedOrderPriceResponse + */ + @Override + public ComputedOrderPriceResponse computedOrderPrice(OrderComputedPriceRequest request) { + // 通过缓存获取预下单对象 + String key = "user_order:" + request.getPreOrderNo(); + boolean exists = redisUtil.exists(key); + if (!exists) { + throw new CrmebException("预下单订单不存在"); + } + String orderVoString = redisUtil.get(key).toString(); + OrderInfoVo orderInfoVo = JSONObject.parseObject(orderVoString, OrderInfoVo.class); + User user = userService.getInfoException(); + return computedPrice(request, orderInfoVo, user); + } + + /** + * 创建订单 + * @param request 创建订单请求参数 + * @return MyRecord 订单编号 + */ + @Override + public MyRecord createOrder(CreateOrderRequest request) { + User user = userService.getInfoException(); + // 通过缓存获取预下单对象 + String key = "user_order:" + request.getPreOrderNo(); + boolean exists = redisUtil.exists(key); + if (!exists) { + throw new CrmebException("预下单订单不存在"); + } + String orderVoString = redisUtil.get(key).toString(); + OrderInfoVo orderInfoVo = JSONObject.parseObject(orderVoString, OrderInfoVo.class); + + // 检测支付方式 + if (!orderUtils.checkPayType(request.getPayType())) throw new CrmebException("暂不支持该支付方式,请刷新页面或者联系管理员"); + + if (request.getPayType().equals(PayConstants.PAY_TYPE_WE_CHAT)) { + // 检测支付渠道 + if (StrUtil.isBlank(request.getPayChannel())) throw new CrmebException("支付渠道不能为空!"); + if (!OrderUtils.checkPayChannel(request.getPayChannel())) throw new CrmebException("支付渠道不存在!"); + } + + // 校验商品库存 + List skuRecordList = validateProductStock(orderInfoVo, user); + + // 校验收货信息 + String verifyCode = ""; + String userAddressStr = ""; + if (request.getShippingType() == 1) { // 快递配送 + if (request.getAddressId() <= 0) throw new CrmebException("请选择收货地址"); + UserAddress userAddress = userAddressService.getById(request.getAddressId()); + if (ObjectUtil.isNull(userAddress) || userAddress.getIsDel()) { + throw new CrmebException("收货地址有误"); + } + request.setRealName(userAddress.getRealName()); + request.setPhone(userAddress.getPhone()); + userAddressStr = userAddress.getProvince() + userAddress.getCity() + userAddress.getDistrict() + userAddress.getDetail(); + }else if (request.getShippingType() == 2) { // 到店自提 + if (StringUtils.isBlank(request.getRealName()) || StringUtils.isBlank(request.getPhone())) { + throw new CrmebException("请填写姓名和电话"); + } + // 自提开关是否打开 + String storeSelfMention = systemConfigService.getValueByKey(SysConfigConstants.CONFIG_KEY_STORE_SELF_MENTION); + if ("false".equals(storeSelfMention)) { + throw new CrmebException("请先联系管理员开启门店自提"); + } + SystemStore systemStore = systemStoreService.getById(request.getStoreId()); + if (ObjectUtil.isNull(systemStore) || systemStore.getIsDel() || !systemStore.getIsShow()) { + throw new CrmebException("暂无门店无法选择门店自提"); + } + verifyCode = CrmebUtil.randomCount(1111111111,999999999)+""; + userAddressStr = systemStore.getName(); + } + + // 活动商品校验 + // 秒杀 + if (ObjectUtil.isNotNull(orderInfoVo.getSeckillId()) && orderInfoVo.getSeckillId() > 0) { + StoreSeckill storeSeckill = storeSeckillService.getByIdException(orderInfoVo.getSeckillId()); + if (storeSeckill.getStatus().equals(0)) { + throw new CrmebException("秒杀商品已关闭"); + } + OrderInfoDetailVo detailVo = orderInfoVo.getOrderDetailList().get(0); + StoreProductAttrValue seckillAttrValue = storeProductAttrValueService.getByIdAndProductIdAndType(detailVo.getAttrValueId(), orderInfoVo.getSeckillId(), Constants.PRODUCT_TYPE_SECKILL); + if (ObjectUtil.isNull(seckillAttrValue)) { + throw new CrmebException("秒杀商品规格不存在"); + } + commonValidateSeckill(storeSeckill, seckillAttrValue, user, detailVo.getPayNum()); + } + + // 计算订单各种价格 + OrderComputedPriceRequest orderComputedPriceRequest = new OrderComputedPriceRequest(); + orderComputedPriceRequest.setShippingType(request.getShippingType()); + orderComputedPriceRequest.setAddressId(request.getAddressId()); + orderComputedPriceRequest.setCouponId(request.getCouponId()); + orderComputedPriceRequest.setUseIntegral(request.getUseIntegral()); + ComputedOrderPriceResponse computedOrderPriceResponse = computedPrice(orderComputedPriceRequest, orderInfoVo, user); + + // 生成订单号 + String orderNo = CrmebUtil.getOrderNo("order"); + + // 购买赠送的积分 + int gainIntegral = 0; + List storeOrderInfos = new ArrayList<>(); + for (OrderInfoDetailVo detailVo : orderInfoVo.getOrderDetailList()) { + // 赠送积分 + if (ObjectUtil.isNotNull(detailVo.getGiveIntegral()) && detailVo.getGiveIntegral() > 0) { + gainIntegral += detailVo.getGiveIntegral() * detailVo.getPayNum(); + } + // 订单详情 + StoreOrderInfo soInfo = new StoreOrderInfo(); + soInfo.setProductId(detailVo.getProductId()); + soInfo.setInfo(JSON.toJSON(detailVo).toString()); + soInfo.setUnique(detailVo.getAttrValueId().toString()); + soInfo.setOrderNo(orderNo); + soInfo.setProductName(detailVo.getProductName()); + soInfo.setAttrValueId(detailVo.getAttrValueId()); + soInfo.setImage(detailVo.getImage()); + soInfo.setSku(detailVo.getSku()); + soInfo.setPrice(detailVo.getPrice()); + soInfo.setPayNum(detailVo.getPayNum()); + soInfo.setWeight(detailVo.getWeight()); + soInfo.setVolume(detailVo.getVolume()); + if (ObjectUtil.isNotNull(detailVo.getGiveIntegral()) && detailVo.getGiveIntegral() > 0) { + soInfo.setGiveIntegral(detailVo.getGiveIntegral()); + } else { + soInfo.setGiveIntegral(0); + } + soInfo.setIsReply(false); + soInfo.setIsSub(detailVo.getIsSub()); + soInfo.setProductType(detailVo.getProductType()); + if (ObjectUtil.isNotNull(detailVo.getVipPrice())) { + soInfo.setVipPrice(detailVo.getVipPrice()); + } else { + soInfo.setVipPrice(detailVo.getPrice()); + } + + storeOrderInfos.add(soInfo); + } + + // 下单赠送积分 + if (computedOrderPriceResponse.getPayFee().compareTo(BigDecimal.ZERO) > 0) { + // 赠送积分比例 + String integralStr = systemConfigService.getValueByKey(SysConfigConstants.CONFIG_KEY_INTEGRAL_RATE_ORDER_GIVE); + if (StrUtil.isNotBlank(integralStr)) { + BigDecimal integralBig = new BigDecimal(integralStr); + int integral = integralBig.multiply(computedOrderPriceResponse.getPayFee()).setScale(0, BigDecimal.ROUND_DOWN).intValue(); + if (integral > 0) { + // 添加积分 + gainIntegral += integral; + } + } + } + + // 支付渠道 默认:余额支付 + int isChannel = 3; + if (request.getPayType().equals(PayConstants.PAY_TYPE_WE_CHAT)) { + switch (request.getPayChannel()) { + case PayConstants.PAY_CHANNEL_WE_CHAT_H5:// H5 + isChannel = 2; + break; + case PayConstants.PAY_CHANNEL_WE_CHAT_PUBLIC:// 公众号 + isChannel = 0; + break; + case PayConstants.PAY_CHANNEL_WE_CHAT_PROGRAM:// 小程序 + isChannel = 1; + break; + case PayConstants.PAY_CHANNEL_WE_CHAT_APP_IOS:// app ios + isChannel = 4; + break; + case PayConstants.PAY_CHANNEL_WE_CHAT_APP_ANDROID:// app android + isChannel = 5; + break; + } + } + if (request.getPayType().equals(PayConstants.PAY_TYPE_ALI_PAY)) { + isChannel = 6; + if (request.getPayChannel().equals(PayConstants.PAY_CHANNEL_ALI_APP_PAY)) { + isChannel = 7; + } + } + + StoreOrder storeOrder = new StoreOrder(); + storeOrder.setUid(user.getUid()); + storeOrder.setOrderId(orderNo); + storeOrder.setRealName(request.getRealName()); + storeOrder.setUserPhone(request.getPhone()); + storeOrder.setUserAddress(userAddressStr); + // 如果是自提 + if (request.getShippingType() == 2) { + storeOrder.setVerifyCode(verifyCode); + storeOrder.setStoreId(request.getStoreId()); + } + storeOrder.setTotalNum(orderInfoVo.getOrderProNum()); + storeOrder.setCouponId(Optional.ofNullable(request.getCouponId()).orElse(0)); + + // 订单总价 + BigDecimal totalPrice = computedOrderPriceResponse.getProTotalFee().add(computedOrderPriceResponse.getFreightFee()); + + storeOrder.setTotalPrice(totalPrice); + storeOrder.setProTotalPrice(computedOrderPriceResponse.getProTotalFee()); + storeOrder.setTotalPostage(computedOrderPriceResponse.getFreightFee()); + storeOrder.setCouponPrice(computedOrderPriceResponse.getCouponFee()); + storeOrder.setPayPrice(computedOrderPriceResponse.getPayFee()); + storeOrder.setPayPostage(computedOrderPriceResponse.getFreightFee()); + storeOrder.setDeductionPrice(computedOrderPriceResponse.getDeductionPrice()); + storeOrder.setPayType(request.getPayType()); + storeOrder.setUseIntegral(computedOrderPriceResponse.getUsedIntegral()); + storeOrder.setGainIntegral(gainIntegral); + storeOrder.setMark(StringEscapeUtils.escapeHtml4(request.getMark())); + storeOrder.setCombinationId(orderInfoVo.getCombinationId()); + storeOrder.setPinkId(orderInfoVo.getPinkId()); + storeOrder.setSeckillId(orderInfoVo.getSeckillId()); + storeOrder.setBargainId(orderInfoVo.getBargainId()); + storeOrder.setBargainUserId(orderInfoVo.getBargainUserId()); + storeOrder.setCreateTime(DateUtil.nowDateTime()); + storeOrder.setShippingType(request.getShippingType()); + storeOrder.setIsChannel(isChannel); + storeOrder.setPaid(false); + storeOrder.setCost(BigDecimal.ZERO); + storeOrder.setType(0); + if (orderInfoVo.getIsVideo()) { + storeOrder.setType(1);// 视频号订单 + } + + StoreCouponUser storeCouponUser = new StoreCouponUser(); + // 优惠券修改 + if (storeOrder.getCouponId() > 0) { + storeCouponUser = storeCouponUserService.getById(storeOrder.getCouponId()); + storeCouponUser.setStatus(1); + } + StoreCouponUser finalStoreCouponUser = storeCouponUser; + + Boolean execute = transactionTemplate.execute(e -> { + // 扣减库存 + // 需要根据是否活动商品,扣减不同的库存 + if (storeOrder.getSeckillId() > 0) {// 秒杀扣库存 + MyRecord skuRecord = skuRecordList.get(0); + // 秒杀商品扣库存 + storeSeckillService.operationStock(skuRecord.getInt("activityId"), skuRecord.getInt("num"), "sub"); + // 秒杀商品规格扣库存 + storeProductAttrValueService.operationStock(skuRecord.getInt("activityAttrValueId"), skuRecord.getInt("num"), "sub", Constants.PRODUCT_TYPE_SECKILL); + // 普通商品口库存 + storeProductService.operationStock(skuRecord.getInt("productId"), skuRecord.getInt("num"), "sub"); + // 普通商品规格扣库存 + storeProductAttrValueService.operationStock(skuRecord.getInt("attrValueId"), skuRecord.getInt("num"), "sub", Constants.PRODUCT_TYPE_NORMAL); + } else if (storeOrder.getBargainId() > 0) {// 砍价扣库存 + MyRecord skuRecord = skuRecordList.get(0); + // 砍价商品扣库存 + storeBargainService.operationStock(skuRecord.getInt("activityId"), skuRecord.getInt("num"), "sub"); + // 砍价商品规格扣库存 + storeProductAttrValueService.operationStock(skuRecord.getInt("activityAttrValueId"), skuRecord.getInt("num"), "sub", Constants.PRODUCT_TYPE_BARGAIN); + // 普通商品口库存 + storeProductService.operationStock(skuRecord.getInt("productId"), skuRecord.getInt("num"), "sub"); + // 普通商品规格扣库存 + storeProductAttrValueService.operationStock(skuRecord.getInt("attrValueId"), skuRecord.getInt("num"), "sub", Constants.PRODUCT_TYPE_NORMAL); + } else if (storeOrder.getCombinationId() > 0) {// 拼团扣库存 + MyRecord skuRecord = skuRecordList.get(0); + // 拼团商品扣库存 + Boolean operationStock = storeCombinationService.operationStock(skuRecord.getInt("activityId"), skuRecord.getInt("num"), "sub"); + System.out.println("拼团商品扣库存operationStock " + operationStock); + // 拼团商品规格扣库存 + storeProductAttrValueService.operationStock(skuRecord.getInt("activityAttrValueId"), skuRecord.getInt("num"), "sub", Constants.PRODUCT_TYPE_PINGTUAN); + // 普通商品口库存 + storeProductService.operationStock(skuRecord.getInt("productId"), skuRecord.getInt("num"), "sub"); + // 普通商品规格扣库存 + storeProductAttrValueService.operationStock(skuRecord.getInt("attrValueId"), skuRecord.getInt("num"), "sub", Constants.PRODUCT_TYPE_NORMAL); + } else { // 普通商品 + for (MyRecord skuRecord : skuRecordList) { + // 普通商品口库存 + storeProductService.operationStock(skuRecord.getInt("productId"), skuRecord.getInt("num"), "sub"); + // 普通商品规格扣库存 + storeProductAttrValueService.operationStock(skuRecord.getInt("attrValueId"), skuRecord.getInt("num"), "sub", Constants.PRODUCT_TYPE_NORMAL); + } + } + + storeOrderService.create(storeOrder); + storeOrderInfos.forEach(info -> info.setOrderId(storeOrder.getId())); + // 优惠券修改 + if (storeOrder.getCouponId() > 0) { + storeCouponUserService.updateById(finalStoreCouponUser); + } + // 保存购物车商品详情 + storeOrderInfoService.saveOrderInfos(storeOrderInfos); + // 生成订单日志 + storeOrderStatusService.createLog(storeOrder.getId(), Constants.ORDER_STATUS_CACHE_CREATE_ORDER, "订单生成"); + + // 清除购物车数据 + if (CollUtil.isNotEmpty(orderInfoVo.getCartIdList())) { + storeCartService.deleteCartByIds(orderInfoVo.getCartIdList()); + } + return Boolean.TRUE; + }); + if (!execute) { + throw new CrmebException("订单生成失败"); + } + + // 删除缓存订单 + if (redisUtil.exists(key)) { + redisUtil.delete(key); + } + + // 加入自动未支付自动取消队列 + redisUtil.lPush(Constants.ORDER_AUTO_CANCEL_KEY, storeOrder.getOrderId()); + + // 发送后台管理员下单提醒通知短信 + sendAdminOrderNotice(storeOrder.getOrderId()); + + MyRecord record = new MyRecord(); + record.set("orderNo", storeOrder.getOrderId()); + return record; + } + + /** + * 获取支付配置 + * @return PreOrderResponse + */ + @Override + public PreOrderResponse getPayConfig() { + PreOrderResponse preOrderResponse = new PreOrderResponse(); + String payWeixinOpen = systemConfigService.getValueByKey(SysConfigConstants.CONFIG_PAY_WEIXIN_OPEN); + String yuePayStatus = systemConfigService.getValueByKey(SysConfigConstants.CONFIG_YUE_PAY_STATUS);// 1开启 2关闭 + String storeSelfMention = systemConfigService.getValueByKey(SysConfigConstants.CONFIG_KEY_STORE_SELF_MENTION); + String aliPayStatus = systemConfigService.getValueByKey(SysConfigConstants.CONFIG_ALI_PAY_STATUS);// 1开启 + preOrderResponse.setYuePayStatus(yuePayStatus); + preOrderResponse.setPayWeixinOpen(payWeixinOpen); + preOrderResponse.setStoreSelfMention(storeSelfMention); + preOrderResponse.setAliPayStatus(aliPayStatus); + return preOrderResponse; + } + + /** + * 校验商品库存(生成订单) + * @param orderInfoVo 订单详情Vo + * @return List + * skuRecord 扣减库存对象 + * ——activityId 活动商品id + * ——activityAttrValueId 活动商品skuId + * ——productId 普通(主)商品id + * ——attrValueId 普通(主)商品skuId + * ——num 购买数量 + */ + private List validateProductStock(OrderInfoVo orderInfoVo, User user) { + List recordList = CollUtil.newArrayList(); + if (orderInfoVo.getSeckillId() > 0) { + // 秒杀部分判断 + Integer seckillId = orderInfoVo.getSeckillId(); + OrderInfoDetailVo detailVo = orderInfoVo.getOrderDetailList().get(0); + StoreSeckill storeSeckill = storeSeckillService.getByIdException(seckillId); + StoreProductAttrValue seckillAttrValue = storeProductAttrValueService.getByIdAndProductIdAndType(detailVo.getAttrValueId(), seckillId, Constants.PRODUCT_TYPE_SECKILL); + if (ObjectUtil.isNull(seckillAttrValue)) { + throw new CrmebException("秒杀商品规格不存在"); + } + MyRecord seckillRecord = commonValidateSeckill(storeSeckill, seckillAttrValue, user, detailVo.getPayNum()); + // 主商品sku + StoreProductAttrValue productAttrValue = seckillRecord.get("productAttrValue"); + + MyRecord record = new MyRecord(); + record.set("activityId", seckillId); + record.set("activityAttrValueId", seckillAttrValue.getId()); + record.set("productId", storeSeckill.getProductId()); + record.set("attrValueId", productAttrValue.getId()); + record.set("num", detailVo.getPayNum()); + recordList.add(record); + return recordList; + } + if (orderInfoVo.getBargainId() > 0) { + // 砍价部分判断 + Integer bargainId = orderInfoVo.getBargainId(); + OrderInfoDetailVo detailVo = orderInfoVo.getOrderDetailList().get(0); + StoreBargain storeBargain = storeBargainService.getByIdException(bargainId); + if (storeBargain.getStock().equals(0) || detailVo.getPayNum() > storeBargain.getStock()) { + throw new CrmebException("砍价商品库存不足"); + } + StoreProductAttrValue bargainAttrValue = storeProductAttrValueService.getByIdAndProductIdAndType(detailVo.getAttrValueId(), bargainId, Constants.PRODUCT_TYPE_BARGAIN); + if (ObjectUtil.isNull(bargainAttrValue)) { + throw new CrmebException("砍价商品规格不存在"); + } + MyRecord bargainRecord = commonValidateBargain(storeBargain, bargainAttrValue, orderInfoVo.getBargainUserId(), user, detailVo.getPayNum()); + StoreProductAttrValue productAttrValue = bargainRecord.get("productAttrValue"); + + MyRecord record = new MyRecord(); + record.set("activityId", bargainId); + record.set("activityAttrValueId", bargainAttrValue.getId()); + record.set("productId", storeBargain.getProductId()); + record.set("attrValueId", productAttrValue.getId()); + record.set("num", detailVo.getPayNum()); + recordList.add(record); + return recordList; + } + if (orderInfoVo.getCombinationId() > 0) { + // 拼团部分判断 + Integer combinationId = orderInfoVo.getCombinationId(); + OrderInfoDetailVo detailVo = orderInfoVo.getOrderDetailList().get(0); + StoreCombination storeCombination = storeCombinationService.getByIdException(combinationId); + StoreProductAttrValue combinationAttrValue = storeProductAttrValueService.getByIdAndProductIdAndType(detailVo.getAttrValueId(), combinationId, Constants.PRODUCT_TYPE_PINGTUAN); + if (ObjectUtil.isNull(combinationAttrValue)) { + throw new CrmebException("拼团商品规格不存在"); + } + MyRecord combinationRecord = commonValidateCombination(storeCombination, combinationAttrValue, user, detailVo.getPayNum()); + StoreProductAttrValue productAttrValue = combinationRecord.get("productAttrValue"); + + MyRecord record = new MyRecord(); + record.set("activityId", combinationId); + record.set("activityAttrValueId", combinationAttrValue.getId()); + record.set("productId", storeCombination.getProductId()); + record.set("attrValueId", productAttrValue.getId()); + record.set("num", detailVo.getPayNum()); + recordList.add(record); + return recordList; + } + // 普通商品 + List orderDetailList = orderInfoVo.getOrderDetailList(); + orderDetailList.forEach(e -> { + // 查询商品信息 + StoreProduct storeProduct = storeProductService.getById(e.getProductId()); + if (ObjectUtil.isNull(storeProduct)) { + throw new CrmebException("购买的商品信息不存在"); + } + if (storeProduct.getIsDel()) { + throw new CrmebException("购买的商品已删除"); + } + if (!storeProduct.getIsShow()) { + throw new CrmebException("购买的商品已下架"); + } + if (storeProduct.getStock().equals(0) || e.getPayNum() > storeProduct.getStock()) { + throw new CrmebException("购买的商品库存不足"); + } + // 查询商品规格属性值信息 + StoreProductAttrValue attrValue = attrValueService.getByIdAndProductIdAndType(e.getAttrValueId(), e.getProductId(), Constants.PRODUCT_TYPE_NORMAL); + if (ObjectUtil.isNull(attrValue)) { + throw new CrmebException("购买的商品规格信息不存在"); + } + if (attrValue.getStock() < e.getPayNum()) { + throw new CrmebException("购买的商品库存不足"); + } + MyRecord record = new MyRecord(); + record.set("productId", e.getProductId()); + record.set("num", e.getPayNum()); + record.set("attrValueId", e.getAttrValueId()); + recordList.add(record); + }); + return recordList; + } + + + /** + * 校验预下单商品信息 + * @param request 预下单请求参数 + * @return OrderInfoVo + */ + private OrderInfoVo validatePreOrderRequest(PreOrderRequest request, User user) { + OrderInfoVo orderInfoVo = new OrderInfoVo(); + List detailVoList = CollUtil.newArrayList(); + if ("shoppingCart".equals(request.getPreOrderType())) {// 购物车购买 + detailVoList = validatePreOrderShopping(request, user); + List cartIdList = request.getOrderDetails().stream().map(PreOrderDetailRequest::getShoppingCartId).distinct().collect(Collectors.toList()); + orderInfoVo.setCartIdList(cartIdList); + } + if ("buyNow".equals(request.getPreOrderType())) {// 立即购买 + // 立即购买只会有一条详情 + PreOrderDetailRequest detailRequest = request.getOrderDetails().get(0); + if (detailRequest.getSeckillId() > 0) {// 秒杀 + detailVoList.add(validatePreOrderSeckill(detailRequest, user)); + orderInfoVo.setSeckillId(detailRequest.getSeckillId()); + } else if (detailRequest.getBargainId() > 0) {// 砍价 + detailVoList.add(validatePreOrderBargain(detailRequest, user)); + orderInfoVo.setBargainId(detailRequest.getBargainId()); + orderInfoVo.setBargainUserId(detailRequest.getBargainUserId()); + } else if (detailRequest.getCombinationId() > 0) {// 拼团 + detailVoList.add(validatePreOrderCombination(detailRequest, user)); + orderInfoVo.setCombinationId(detailRequest.getCombinationId()); + orderInfoVo.setPinkId(detailRequest.getPinkId()); + } else { + // 普通商品 + if (ObjectUtil.isNull(detailRequest.getProductId())) { + throw new CrmebException("商品编号不能为空"); + } + if (ObjectUtil.isNull(detailRequest.getAttrValueId())) { + throw new CrmebException("商品规格属性值不能为空"); + } + if (ObjectUtil.isNull(detailRequest.getProductNum()) || detailRequest.getProductNum() < 0) { + throw new CrmebException("购买数量必须大于0"); + } + // 查询商品信息 + StoreProduct storeProduct = storeProductService.getById(detailRequest.getProductId()); + if (ObjectUtil.isNull(storeProduct)) { + throw new CrmebException("商品信息不存在,请刷新后重新选择"); + } + if (storeProduct.getIsDel()) { + throw new CrmebException("商品已删除,请刷新后重新选择"); + } + if (!storeProduct.getIsShow()) { + throw new CrmebException("商品已下架,请刷新后重新选择"); + } + if (storeProduct.getStock() < detailRequest.getProductNum()) { + throw new CrmebException("商品库存不足,请刷新后重新选择"); + } + // 查询商品规格属性值信息 + StoreProductAttrValue attrValue = attrValueService.getByIdAndProductIdAndType(detailRequest.getAttrValueId(), detailRequest.getProductId(), Constants.PRODUCT_TYPE_NORMAL); + if (ObjectUtil.isNull(attrValue)) { + throw new CrmebException("商品规格信息不存在,请刷新后重新选择"); + } + if (attrValue.getStock() < detailRequest.getProductNum()) { + throw new CrmebException("商品规格库存不足,请刷新后重新选择"); + } + SystemUserLevel userLevel = null; + if (user.getLevel() > 0) { + userLevel = systemUserLevelService.getByLevelId(user.getLevel()); + } + OrderInfoDetailVo detailVo = new OrderInfoDetailVo(); + detailVo.setProductId(storeProduct.getId()); + detailVo.setProductName(storeProduct.getStoreName()); + detailVo.setAttrValueId(attrValue.getId()); + detailVo.setSku(attrValue.getSuk()); + detailVo.setPrice(attrValue.getPrice()); + detailVo.setPayNum(detailRequest.getProductNum()); + detailVo.setImage(StrUtil.isNotBlank(attrValue.getImage()) ? attrValue.getImage() : storeProduct.getImage()); + detailVo.setVolume(attrValue.getVolume()); + detailVo.setWeight(attrValue.getWeight()); + detailVo.setTempId(storeProduct.getTempId()); + detailVo.setIsSub(storeProduct.getIsSub()); + detailVo.setProductType(Constants.PRODUCT_TYPE_NORMAL); + detailVo.setVipPrice(detailVo.getPrice()); + detailVo.setGiveIntegral(storeProduct.getGiveIntegral()); + if (ObjectUtil.isNotNull(userLevel)) { + detailVo.setVipPrice(detailVo.getPrice()); + } + detailVoList.add(detailVo); + } + } + if ("again".equals(request.getPreOrderType())) {// 再次购买 + PreOrderDetailRequest detailRequest = request.getOrderDetails().get(0); + detailVoList = validatePreOrderAgain(detailRequest, user); + } + orderInfoVo.setOrderDetailList(detailVoList); + return orderInfoVo; + } + + /** + * 购物车预下单校验 + * @param request 请求参数 + * @param user 用户 + * @return List + */ + private List validatePreOrderShopping(PreOrderRequest request, User user) { + List detailVoList = CollUtil.newArrayList(); + SystemUserLevel userLevel = null; + if (user.getLevel() > 0) { + userLevel = systemUserLevelService.getByLevelId(user.getLevel()); + } + SystemUserLevel finalUserLevel = userLevel; + request.getOrderDetails().forEach(e -> { + if (ObjectUtil.isNull(e.getShoppingCartId())) { + throw new CrmebException("购物车编号不能为空"); + } + StoreCart storeCart = storeCartService.getByIdAndUid(e.getShoppingCartId(), user.getUid()); + if (ObjectUtil.isNull(storeCart)) { + throw new CrmebException("未找到对应的购物车信息"); + } + // 查询商品信息 + StoreProduct storeProduct = storeProductService.getById(storeCart.getProductId()); + if (ObjectUtil.isNull(storeProduct)) { + throw new CrmebException("商品信息不存在,请刷新后重新选择"); + } + if (storeProduct.getIsDel()) { + throw new CrmebException("商品已删除,请刷新后重新选择"); + } + if (!storeProduct.getIsShow()) { + throw new CrmebException("商品已下架,请刷新后重新选择"); + } + if (storeProduct.getStock() < storeCart.getCartNum()) { + throw new CrmebException("商品库存不足,请刷新后重新选择"); + } + // 查询商品规格属性值信息 + StoreProductAttrValue attrValue = attrValueService.getByIdAndProductIdAndType(Integer.valueOf(storeCart.getProductAttrUnique()), storeCart.getProductId(), Constants.PRODUCT_TYPE_NORMAL); + if (ObjectUtil.isNull(attrValue)) { + throw new CrmebException("商品规格信息不存在,请刷新后重新选择"); + } + if (attrValue.getStock() < storeCart.getCartNum()) { + throw new CrmebException("商品规格库存不足,请刷新后重新选择"); + } + OrderInfoDetailVo detailVo = new OrderInfoDetailVo(); + detailVo.setProductId(storeProduct.getId()); + detailVo.setProductName(storeProduct.getStoreName()); + detailVo.setAttrValueId(attrValue.getId()); + detailVo.setSku(attrValue.getSuk()); + detailVo.setPrice(attrValue.getPrice()); + detailVo.setPayNum(storeCart.getCartNum()); + detailVo.setImage(StrUtil.isNotBlank(attrValue.getImage()) ? attrValue.getImage() : storeProduct.getImage()); + detailVo.setVolume(attrValue.getVolume()); + detailVo.setWeight(attrValue.getWeight()); + detailVo.setTempId(storeProduct.getTempId()); + detailVo.setGiveIntegral(storeProduct.getGiveIntegral()); + detailVo.setIsSub(storeProduct.getIsSub()); + detailVo.setProductType(Constants.PRODUCT_TYPE_NORMAL); + detailVo.setVipPrice(detailVo.getPrice()); + if (ObjectUtil.isNotNull(finalUserLevel)) { + BigDecimal vipPrice = detailVo.getPrice().multiply(new BigDecimal(finalUserLevel.getDiscount())).divide(new BigDecimal("100"), 2, BigDecimal.ROUND_HALF_UP); + detailVo.setVipPrice(vipPrice); + } + detailVoList.add(detailVo); + }); + return detailVoList; + } + + /** + * 秒杀预下单校验 + * @param detailRequest 请求参数 + * @param user 用户 + * @return OrderInfoDetailVo + */ + private OrderInfoDetailVo validatePreOrderSeckill(PreOrderDetailRequest detailRequest, User user) { + Integer seckillId = detailRequest.getSeckillId(); + StoreSeckill storeSeckill = storeSeckillService.getByIdException(seckillId); + if (storeSeckill.getStatus().equals(0)) { + throw new CrmebException("秒杀商品已关闭"); + } + StoreProductAttrValue seckillAttrValue = storeProductAttrValueService.getByIdAndProductIdAndType(detailRequest.getAttrValueId(), seckillId, Constants.PRODUCT_TYPE_SECKILL); + if (ObjectUtil.isNull(seckillAttrValue)) { + throw new CrmebException("秒杀商品规格不存在"); + } + commonValidateSeckill(storeSeckill, seckillAttrValue, user, detailRequest.getProductNum()); + + OrderInfoDetailVo detailVo = new OrderInfoDetailVo(); + detailVo.setProductId(storeSeckill.getProductId()); + detailVo.setProductName(storeSeckill.getTitle()); + detailVo.setAttrValueId(seckillAttrValue.getId()); + detailVo.setSku(seckillAttrValue.getSuk()); + detailVo.setPrice(seckillAttrValue.getPrice()); + detailVo.setPayNum(detailRequest.getProductNum()); + detailVo.setImage(StrUtil.isNotBlank(seckillAttrValue.getImage()) ? seckillAttrValue.getImage() : storeSeckill.getImage()); + detailVo.setVolume(seckillAttrValue.getVolume()); + detailVo.setWeight(seckillAttrValue.getWeight()); + detailVo.setTempId(storeSeckill.getTempId()); + detailVo.setProductType(Constants.PRODUCT_TYPE_SECKILL); + return detailVo; + } + + /** + * 公共校验秒杀 + * @param storeSeckill 秒杀商品 + * @param seckillAttrValue 秒杀商品规格属性 + * @param user 用户 + * @return MyRecord + */ + private MyRecord commonValidateSeckill(StoreSeckill storeSeckill, StoreProductAttrValue seckillAttrValue, User user, Integer productNum) { + if (storeSeckill.getStock().equals(0) || productNum > storeSeckill.getStock()) { + throw new CrmebException("秒杀商品库存不足"); + } + if (seckillAttrValue.getStock() <= 0 || seckillAttrValue.getQuota() <= 0 || productNum > seckillAttrValue.getStock()) { + throw new CrmebException("秒杀商品规格库存不足"); + } + // 普通商品部分判断 + StoreProduct product = storeProductService.getById(storeSeckill.getProductId()); + if (ObjectUtil.isNull(product) || product.getIsDel()) { + throw new CrmebException("秒杀主商品不存在"); + } + if (product.getStock().equals(0) || productNum > product.getStock()) { + throw new CrmebException("秒杀主商品库存不足"); + } + // 主商品sku + StoreProductAttrValue productAttrValue = storeProductAttrValueService.getByProductIdAndSkuAndType(storeSeckill.getProductId(), seckillAttrValue.getSuk(), Constants.PRODUCT_TYPE_NORMAL); + if (ObjectUtil.isNull(productAttrValue)) { + throw new CrmebException("秒杀主商品规格不存在"); + } + if (productAttrValue.getStock() <= 0 || productNum > productAttrValue.getStock()) { + throw new CrmebException("秒杀主商品规格库存不足"); + } + + // 判断秒杀是否过期 1:日期是否在范围内 2:时间是否在每天的时间段内 + StoreSeckillManger seckillManger = storeSeckillMangerService.getById(storeSeckill.getTimeId()); + if (ObjectUtil.isNull(seckillManger)) { + throw new CrmebException("秒杀时段不存在"); + } + // 判断日期是否过期 + DateTime nowDateTime = cn.hutool.core.date.DateUtil.date(); + String stopTimeStr = DateUtil.dateToStr(storeSeckill.getStopTime(), Constants.DATE_FORMAT_DATE); + Date stopDate = DateUtil.strToDate( stopTimeStr + " " + seckillManger.getEndTime() +":00:00", Constants.DATE_FORMAT); + if (nowDateTime.getTime() - stopDate.getTime() >= 0) { + throw new CrmebException("秒杀商品已过期"); + } + // 判断是否在秒杀时段内(小时),秒杀开始时间 <= 当前时间 <= 秒杀结束时间 + int hour = nowDateTime.getField(Calendar.HOUR_OF_DAY);// 现在的小时 + if (seckillManger.getStartTime() > hour || seckillManger.getEndTime() < hour) { + throw new CrmebException("秒杀商品已过期"); + } + + // 判断秒杀购买次数 + // 当天参与活动次数 -根据用户和秒杀信息查询当天订单判断订单数量 + List userCurrentDaySecKillOrders = storeOrderService.getUserCurrentDaySecKillOrders(user.getUid(), storeSeckill.getId()); + if (CollUtil.isNotEmpty(userCurrentDaySecKillOrders)) { + // 判断是否有待支付订单 + List unPayOrders = userCurrentDaySecKillOrders.stream().filter(e -> !e.getPaid()).collect(Collectors.toList()); + if (unPayOrders.size() > 0) { + throw new CrmebException("您有秒杀待支付订单,请支付后再购买"); + } + + // 判断是否达到上限 + if (userCurrentDaySecKillOrders.size() >= storeSeckill.getNum()) { + throw new CrmebException("您已经达到当前秒杀活动上限"); + } + } + + MyRecord record = new MyRecord(); + record.set("productAttrValue", productAttrValue); + return record; + } + + /** + * 砍价预下单校验 + * @param detailRequest 请求参数 + * @param user 用户 + * @return OrderInfoDetailVo + */ + private OrderInfoDetailVo validatePreOrderBargain(PreOrderDetailRequest detailRequest, User user) { + if (detailRequest.getBargainUserId() <= 0) { + throw new CrmebException("用户砍价活动id必须大于0"); + } + // 砍价部分判断 + Integer bargainId = detailRequest.getBargainId(); + StoreBargain storeBargain = storeBargainService.getByIdException(bargainId); + StoreProductAttrValue bargainAttrValue = storeProductAttrValueService.getByIdAndProductIdAndType(detailRequest.getAttrValueId(), bargainId, Constants.PRODUCT_TYPE_BARGAIN); + if (ObjectUtil.isNull(bargainAttrValue)) { + throw new CrmebException("砍价商品规格不存在"); + } + commonValidateBargain(storeBargain, bargainAttrValue, detailRequest.getBargainUserId(), user, detailRequest.getProductNum()); + + + OrderInfoDetailVo detailVo = new OrderInfoDetailVo(); + detailVo.setProductId(storeBargain.getProductId()); + detailVo.setProductName(storeBargain.getTitle()); + detailVo.setAttrValueId(bargainAttrValue.getId()); + detailVo.setSku(bargainAttrValue.getSuk()); + detailVo.setPrice(storeBargain.getMinPrice()); + detailVo.setPayNum(detailRequest.getProductNum()); + detailVo.setImage(StrUtil.isNotBlank(bargainAttrValue.getImage()) ? bargainAttrValue.getImage() : bargainAttrValue.getImage()); + detailVo.setVolume(bargainAttrValue.getVolume()); + detailVo.setWeight(bargainAttrValue.getWeight()); + detailVo.setTempId(storeBargain.getTempId()); + detailVo.setProductType(Constants.PRODUCT_TYPE_BARGAIN); + return detailVo; + } + + /** + * 公共校验砍价 + * @param storeBargain 砍价商品 + * @param bargainAttrValue 砍价商品规格属性 + * @param bargainUserId 砍价活动id + * @param user 用户 + * @param productNum 购买数量 + * @return MyRecord + */ + private MyRecord commonValidateBargain(StoreBargain storeBargain, StoreProductAttrValue bargainAttrValue, Integer bargainUserId, User user, Integer productNum) { + if (storeBargain.getStock().equals(0) || productNum > storeBargain.getStock()) { + throw new CrmebException("砍价商品库存不足"); + } + long currentTimeMillis = System.currentTimeMillis(); + if (currentTimeMillis > storeBargain.getStopTime()) { + throw new CrmebException("砍价活动已结束"); + } + StoreBargainUser bargainUser = storeBargainUserService.getById(bargainUserId); + if (ObjectUtil.isNull(bargainUser)) { + throw new CrmebException("用户砍价活动不存在"); + } + if (bargainUser.getIsDel()) { + throw new CrmebException("用户砍价活动已取消"); + } + if (!bargainUser.getStatus().equals(3)) { + if (bargainUser.getBargainPriceMin().compareTo(bargainUser.getBargainPrice().subtract(bargainUser.getPrice())) != 0) { + throw new CrmebException("请先完成砍价活动"); + } + } + // 判断是否有订单 + StoreOrder bargainOrder = storeOrderService.getByBargainOrder(bargainUser.getBargainId(), bargainUser.getId()); + if (ObjectUtil.isNotNull(bargainOrder)) { + if (!bargainOrder.getPaid()) { + throw new CrmebException("订单已创建,尚未支付"); + } + throw new CrmebException("该砍价活动已创建了订单"); + } + // 参与活动次数 -根据用户和秒杀信息查询当天订单判断订单数量 + List userCurrentBargainOrders = storeOrderService.getUserCurrentBargainOrders(user.getUid(), storeBargain.getId()); + if (CollUtil.isNotEmpty(userCurrentBargainOrders)) { + // 判断是否有待支付订单 + List unPayOrders = userCurrentBargainOrders.stream().filter(e -> !e.getPaid()).collect(Collectors.toList()); + if (unPayOrders.size() > 0) throw new CrmebException("您有砍价待支付订单,请支付后再购买"); + + // 判断是否达到上限 + if (CollUtil.isNotEmpty(userCurrentBargainOrders) && userCurrentBargainOrders.size() >= storeBargain.getNum()) { + throw new CrmebException("您已经达到当前砍价活动上限"); + } + } + + if (bargainAttrValue.getStock() <= 0 || bargainAttrValue.getQuota() <= 0 || productNum > bargainAttrValue.getStock()) { + throw new CrmebException("砍价商品规格库存不足"); + } + // 普通商品部分判断 + StoreProduct product = storeProductService.getById(storeBargain.getProductId()); + if (ObjectUtil.isNull(product) || product.getIsDel()) { + throw new CrmebException("砍价主商品不存在"); + } + if (product.getStock().equals(0) || productNum > product.getStock()) { + throw new CrmebException("砍价主商品库存不足"); + } + // 主商品sku + StoreProductAttrValue productAttrValue = storeProductAttrValueService.getByProductIdAndSkuAndType(storeBargain.getProductId(), bargainAttrValue.getSuk(), Constants.PRODUCT_TYPE_NORMAL); + if (ObjectUtil.isNull(productAttrValue)) { + throw new CrmebException("砍价主商品规格不存在"); + } + if (productAttrValue.getStock() <= 0 || productNum > productAttrValue.getStock()) { + throw new CrmebException("砍价主商品规格库存不足"); + } + + MyRecord record = new MyRecord(); + record.set("productAttrValue", productAttrValue); + return record; + } + + /** + * 拼团预下单校验 + * @param detailRequest 请求参数 + * @param user 用户 + * @return OrderInfoDetailVo + */ + private OrderInfoDetailVo validatePreOrderCombination(PreOrderDetailRequest detailRequest, User user) { + // 拼团部分判断 + Integer combinationId = detailRequest.getCombinationId(); + StoreCombination storeCombination = storeCombinationService.getByIdException(combinationId); + if (storeCombination.getStock().equals(0) || detailRequest.getProductNum() > storeCombination.getStock()) { + throw new CrmebException("拼团商品库存不足"); + } + StoreProductAttrValue combinationAttrValue = storeProductAttrValueService.getByIdAndProductIdAndType(detailRequest.getAttrValueId(), combinationId, Constants.PRODUCT_TYPE_PINGTUAN); + if (ObjectUtil.isNull(combinationAttrValue)) { + throw new CrmebException("拼团商品规格不存在"); + } + commonValidateCombination(storeCombination, combinationAttrValue, user, detailRequest.getProductNum()); + + OrderInfoDetailVo detailVo = new OrderInfoDetailVo(); + detailVo.setProductId(storeCombination.getProductId()); + detailVo.setProductName(storeCombination.getTitle()); + detailVo.setAttrValueId(combinationAttrValue.getId()); + detailVo.setSku(combinationAttrValue.getSuk()); + detailVo.setPrice(combinationAttrValue.getPrice()); + detailVo.setPayNum(detailRequest.getProductNum()); + detailVo.setImage(StrUtil.isNotBlank(combinationAttrValue.getImage()) ? combinationAttrValue.getImage() : combinationAttrValue.getImage()); + detailVo.setVolume(combinationAttrValue.getVolume()); + detailVo.setWeight(combinationAttrValue.getWeight()); + detailVo.setTempId(storeCombination.getTempId()); + detailVo.setProductType(Constants.PRODUCT_TYPE_PINGTUAN); + return detailVo; + } + + /** + * 公共校验拼团 + * @param storeCombination 砍价商品 + * @param combinationAttrValue 砍价商品规格属性 + * @param user 用户 + * @param productNum 购买数量 + * @return MyRecord + */ + private MyRecord commonValidateCombination(StoreCombination storeCombination, StoreProductAttrValue combinationAttrValue, User user, Integer productNum) { + // 判断拼团时间段 + long timeMillis = System.currentTimeMillis(); + if (timeMillis < storeCombination.getStartTime()) { + throw new CrmebException("拼团商品活动未开始"); + } + if (timeMillis >= storeCombination.getStopTime()) { + throw new CrmebException("拼团商品已过期"); + } + // 判断购买数量 + if (productNum > storeCombination.getOnceNum()) { + throw new CrmebException("购买数量超过单次拼团购买上限"); + } + + if (combinationAttrValue.getStock() <= 0 || combinationAttrValue.getQuota() <= 0 || productNum > combinationAttrValue.getStock()) { + throw new CrmebException("拼团商品规格库存不足"); + } + // 普通商品部分判断 + StoreProduct product = storeProductService.getById(storeCombination.getProductId()); + if (ObjectUtil.isNull(product) || product.getIsDel()) { + throw new CrmebException("拼团主商品不存在"); + } + if (product.getStock().equals(0) || productNum > product.getStock()) { + throw new CrmebException("拼团主商品库存不足"); + } + // 主商品sku + StoreProductAttrValue productAttrValue = storeProductAttrValueService.getByProductIdAndSkuAndType(storeCombination.getProductId(), combinationAttrValue.getSuk(), Constants.PRODUCT_TYPE_NORMAL); + if (ObjectUtil.isNull(productAttrValue)) { + throw new CrmebException("拼团主商品规格不存在"); + } + if (productAttrValue.getStock() <= 0 || productNum > productAttrValue.getStock()) { + throw new CrmebException("拼团主商品规格库存不足"); + } + + // 用户参与活动的次数 + List userCombinationOrders = storeOrderService.getUserCurrentCombinationOrders(user.getUid(), storeCombination.getId()); + if (CollUtil.isNotEmpty(userCombinationOrders)) { + // 判断是否有待支付订单 + List unPayOrders = userCombinationOrders.stream().filter(e -> !e.getPaid()).collect(Collectors.toList()); + if (unPayOrders.size() > 0) throw new CrmebException("您有拼团待支付订单,请支付后再购买"); + int payNum = userCombinationOrders.stream().mapToInt(StoreOrder::getTotalNum).sum(); + if (storeCombination.getNum() <= payNum) { + throw new CrmebException("您已达到该商品拼团活动上限"); + } + if ((payNum + productNum) > storeCombination.getNum()) { + throw new CrmebException("超过该商品拼团活动您的购买上限"); + } + } + + MyRecord record = new MyRecord(); + record.set("productAttrValue", productAttrValue); + return record; + } + + /** + * 再次下单预下单校验 + * @param detailRequest 请求参数 + * @return List + */ + private List validatePreOrderAgain(PreOrderDetailRequest detailRequest, User user) { + List detailVoList = CollUtil.newArrayList(); + if (StrUtil.isBlank(detailRequest.getOrderNo())) { + throw new CrmebException("再次购买订单编号不能为空"); + } + StoreOrder storeOrder = getByOrderIdException(detailRequest.getOrderNo()); + if (storeOrder.getRefundStatus() > 0 || storeOrder.getStatus() != 3) { + throw new CrmebException("只有已完成状态订单才能再次购买"); + } + if (storeOrder.getSeckillId() > 0 || storeOrder.getBargainId() > 0 || storeOrder.getCombinationId() > 0) { + throw new CrmebException("活动商品订单不能再次购买"); + } + if (storeOrder.getType().equals(1)) { + throw new CrmebException("视频订单不能再次购买"); + } + // 获取订单详情 + List infoVoList = storeOrderInfoService.getVoListByOrderId(storeOrder.getId()); + if (CollUtil.isEmpty(infoVoList)) { + throw new CrmebException("订单详情未找到"); + } + SystemUserLevel userLevel = null; + if (user.getLevel() > 0) { + userLevel = systemUserLevelService.getByLevelId(user.getLevel()); + } + SystemUserLevel finalUserLevel = userLevel; + infoVoList.forEach(e -> { + OrderInfoDetailVo detailVo = e.getInfo(); + // 查询商品信息 + StoreProduct storeProduct = storeProductService.getById(detailVo.getProductId()); + if (ObjectUtil.isNull(storeProduct)) { + throw new CrmebException("商品信息不存在,请刷新后重新选择"); + } + if (storeProduct.getIsDel()) { + throw new CrmebException("商品已删除,请刷新后重新选择"); + } + if (!storeProduct.getIsShow()) { + throw new CrmebException("商品已下架,请刷新后重新选择"); + } + if (storeProduct.getStock() < detailVo.getPayNum()) { + throw new CrmebException("商品库存不足,请刷新后重新选择"); + } + // 查询商品规格属性值信息 + StoreProductAttrValue attrValue = attrValueService.getByIdAndProductIdAndType(detailVo.getAttrValueId(), detailVo.getProductId(), Constants.PRODUCT_TYPE_NORMAL); + if (ObjectUtil.isNull(attrValue)) { + throw new CrmebException("商品规格信息不存在,请刷新后重新选择"); + } + if (attrValue.getStock() < detailVo.getPayNum()) { + throw new CrmebException("商品规格库存不足,请刷新后重新选择"); + } + OrderInfoDetailVo tempDetailVo = new OrderInfoDetailVo(); + tempDetailVo.setProductId(storeProduct.getId()); + tempDetailVo.setProductName(storeProduct.getStoreName()); + tempDetailVo.setAttrValueId(attrValue.getId()); + tempDetailVo.setSku(attrValue.getSuk()); + tempDetailVo.setPrice(attrValue.getPrice()); + tempDetailVo.setPayNum(detailVo.getPayNum()); + tempDetailVo.setImage(StrUtil.isNotBlank(attrValue.getImage()) ? attrValue.getImage() : storeProduct.getImage()); + tempDetailVo.setVolume(attrValue.getVolume()); + tempDetailVo.setWeight(attrValue.getWeight()); + tempDetailVo.setTempId(storeProduct.getTempId()); + tempDetailVo.setGiveIntegral(storeProduct.getGiveIntegral()); + tempDetailVo.setIsSub(storeProduct.getIsSub()); + tempDetailVo.setProductType(Constants.PRODUCT_TYPE_NORMAL); + tempDetailVo.setVipPrice(attrValue.getPrice()); + if (ObjectUtil.isNotNull(finalUserLevel)) { + tempDetailVo.setVipPrice(attrValue.getPrice()); + } + detailVoList.add(tempDetailVo); + }); + return detailVoList; + } + + private StoreOrder getByOrderIdException(String orderId) { + StoreOrder storeOrder = storeOrderService.getByOderId(orderId); + if (ObjectUtil.isNull(storeOrder)) { + throw new CrmebException("订单不存在"); + } + if (storeOrder.getIsDel() || storeOrder.getIsSystemDel()) { + throw new CrmebException("订单不存在"); + } + return storeOrder; + } + + /** + * 计算订单运费 + */ + private void getFreightFee(OrderInfoVo orderInfoVo, UserAddress userAddress) { + // 判断是否满额包邮 type=1按件数 2按重量 3按体积 + // 全场满额包邮开关 + String postageSwitchString = systemConfigService.getValueByKey(SysConfigConstants.STORE_FEE_POSTAGE_SWITCH); + // 全场满额包邮金额 + String storeFreePostageString = systemConfigService.getValueByKey(SysConfigConstants.STORE_FEE_POSTAGE); + BigDecimal storePostage = BigDecimal.ZERO; + if ("true".equals(postageSwitchString) && ("0".equals(storeFreePostageString) || orderInfoVo.getProTotalFee().compareTo(new BigDecimal(storeFreePostageString)) >= 0)) { + storePostage = BigDecimal.ZERO; + } else if (ObjectUtil.isNull(userAddress) || userAddress.getCityId() <= 0) { + // 用户地址不存在,默认运费为0元 + storePostage = BigDecimal.ZERO; + } else { + // 有用户地址的情况下 + // 运费根据商品计算 + Map proMap = CollUtil.newHashMap(); + orderInfoVo.getOrderDetailList().forEach(e -> { + Integer proId = e.getProductId(); + if (proMap.containsKey(proId)) { + MyRecord record = proMap.get(proId); + record.set("totalPrice", record.getBigDecimal("totalPrice").add(e.getPrice().multiply(BigDecimal.valueOf(e.getPayNum())))); + record.set("totalNum", record.getInt("totalNum") + e.getPayNum()); + BigDecimal weight = e.getWeight().multiply(BigDecimal.valueOf(e.getPayNum())); + record.set("weight", record.getBigDecimal("weight").add(weight)); + BigDecimal volume = e.getVolume().multiply(BigDecimal.valueOf(e.getPayNum())); + record.set("volume", record.getBigDecimal("volume").add(volume)); + } else { + MyRecord record = new MyRecord(); + record.set("totalPrice", e.getPrice().multiply(BigDecimal.valueOf(e.getPayNum()))); + record.set("totalNum", e.getPayNum()); + record.set("tempId", e.getTempId()); + record.set("proId", proId); + BigDecimal weight = e.getWeight().multiply(BigDecimal.valueOf(e.getPayNum())); + record.set("weight", weight); + BigDecimal volume = e.getVolume().multiply(BigDecimal.valueOf(e.getPayNum())); + record.set("volume", volume); + + proMap.put(proId, record); + } + }); + + // 指定包邮(单品运费模板)> 指定区域配送(单品运费模板) + int cityId = userAddress.getCityId(); + + for (Map.Entry m : proMap.entrySet()) { + MyRecord value = m.getValue(); + Integer tempId = value.getInt("tempId"); + ShippingTemplates shippingTemplate = shippingTemplatesService.getById(tempId); + if (shippingTemplate.getAppoint()) {// 指定包邮 + // 判断是否在指定包邮区域内 + // 必须满足件数 + 金额 才能包邮 + ShippingTemplatesFree shippingTemplatesFree = shippingTemplatesFreeService.getByTempIdAndCityId(tempId, cityId); + if (ObjectUtil.isNotNull(shippingTemplatesFree)) { // 在包邮区域内 + BigDecimal freeNum = shippingTemplatesFree.getNumber(); + BigDecimal multiply = value.getBigDecimal("totalPrice"); + if (new BigDecimal(value.getInt("totalNum")).compareTo(freeNum) >= 0 && multiply.compareTo(shippingTemplatesFree.getPrice()) >= 0) { + // 满足件数 + 金额 = 包邮 + continue; + } + } + } + // 不满足指定包邮条件,走指定区域配送 + ShippingTemplatesRegion shippingTemplatesRegion = shippingTemplatesRegionService.getByTempIdAndCityId(tempId, cityId); + if (ObjectUtil.isNull(shippingTemplatesRegion)) { + throw new CrmebException("计算运费时,未找到全国运费配置"); + } + + // 判断计费方式:件数、重量、体积 + switch (shippingTemplate.getType()) { + case 1: // 件数 + // 判断件数是否超过首件 + Integer num = value.getInt("totalNum"); + if (num <= shippingTemplatesRegion.getFirst().intValue()) { + storePostage = storePostage.add(shippingTemplatesRegion.getFirstPrice()); + } else {// 超过首件的需要计算续件 + int renewalNum = num - shippingTemplatesRegion.getFirst().intValue(); + // 剩余件数/续件 = 需要计算的续件费用的次数 + BigDecimal divide = new BigDecimal(renewalNum).divide(shippingTemplatesRegion.getRenewal(), 0, BigDecimal.ROUND_UP); + BigDecimal renewalPrice = shippingTemplatesRegion.getRenewalPrice().multiply(divide); + storePostage = storePostage.add(shippingTemplatesRegion.getFirstPrice()).add(renewalPrice); + } + break; + case 2: // 重量 + BigDecimal weight = value.getBigDecimal("weight"); + if (weight.compareTo(shippingTemplatesRegion.getFirst()) <= 0) { + storePostage = storePostage.add(shippingTemplatesRegion.getFirstPrice()); + } else {// 超过首件的需要计算续件 + BigDecimal renewalNum = weight.subtract(shippingTemplatesRegion.getFirst()); + // 剩余件数/续件 = 需要计算的续件费用的次数 + BigDecimal divide = renewalNum.divide(shippingTemplatesRegion.getRenewal(), 0, BigDecimal.ROUND_UP); + BigDecimal renewalPrice = shippingTemplatesRegion.getRenewalPrice().multiply(divide); + storePostage = storePostage.add(shippingTemplatesRegion.getFirstPrice()).add(renewalPrice); + } + break; + case 3: // 体积 + BigDecimal volume = value.getBigDecimal("volume"); + if (volume.compareTo(shippingTemplatesRegion.getFirst()) <= 0) { + storePostage = storePostage.add(shippingTemplatesRegion.getFirstPrice()); + } else {// 超过首件的需要计算续件 + BigDecimal renewalNum = volume.subtract(shippingTemplatesRegion.getFirst()); + // 剩余件数/续件 = 需要计算的续件费用的次数 + BigDecimal divide = renewalNum.divide(shippingTemplatesRegion.getRenewal(), 0, BigDecimal.ROUND_UP); + BigDecimal renewalPrice = shippingTemplatesRegion.getRenewalPrice().multiply(divide); + storePostage = storePostage.add(shippingTemplatesRegion.getFirstPrice()).add(renewalPrice); + } + break; + } + } + } + orderInfoVo.setFreightFee(storePostage); + } + + private ComputedOrderPriceResponse computedPrice(OrderComputedPriceRequest request, OrderInfoVo orderInfoVo, User user) { + // 计算各种价格 + ComputedOrderPriceResponse priceResponse = new ComputedOrderPriceResponse(); + // 计算运费 + if (request.getShippingType().equals(2)) {// 到店自提,不计算运费 + priceResponse.setFreightFee(BigDecimal.ZERO); + } else if (ObjectUtil.isNull(request.getAddressId()) || request.getAddressId() <= 0) { + // 快递配送,无地址 + priceResponse.setFreightFee(BigDecimal.ZERO); + } else {// 快递配送,有地址 + UserAddress userAddress = userAddressService.getById(request.getAddressId()); + if (ObjectUtil.isNull(userAddress)) { + priceResponse.setFreightFee(BigDecimal.ZERO); + } else { + getFreightFee(orderInfoVo, userAddress); + priceResponse.setFreightFee(orderInfoVo.getFreightFee()); + } + } + // 计算优惠券金额 + if (ObjectUtil.isNull(request.getCouponId()) || request.getCouponId() <= 0) { + priceResponse.setCouponFee(BigDecimal.ZERO); + } else if (orderInfoVo.getSeckillId() > 0 || orderInfoVo.getBargainId() > 0 || orderInfoVo.getCombinationId() > 0) { + throw new CrmebException("营销活动商品无法使用优惠券"); + } else if (orderInfoVo.getIsVideo()) { + throw new CrmebException("视频号商品无法使用优惠券"); + } else { + // 判断优惠券是否可以使用 + StoreCouponUser storeCouponUser = storeCouponUserService.getById(request.getCouponId()); + if (ObjectUtil.isNull(storeCouponUser) || !storeCouponUser.getUid().equals(user.getUid())) { + throw new CrmebException("优惠券领取记录不存在!"); + } + if (storeCouponUser.getStatus() == 1) { + throw new CrmebException("此优惠券已使用!"); + } + + if (storeCouponUser.getStatus() == 2) { + throw new CrmebException("此优惠券已失效!"); + } + //判断是否在使用时间内 + Date date = DateUtil.nowDateTime(); + if (storeCouponUser.getStartTime().compareTo(date) > 0) { + throw new CrmebException("此优惠券还未到达使用时间范围之内!"); + } + if (date.compareTo(storeCouponUser.getEndTime()) > 0) { + throw new CrmebException("此优惠券已经失效了"); + } + if (storeCouponUser.getMinPrice().compareTo(orderInfoVo.getProTotalFee()) > 0) { + throw new CrmebException("总金额小于优惠券最小使用金额"); + } + //检测优惠券信息 + if (storeCouponUser.getUseType() > 1) { + List productIdList = orderInfoVo.getOrderDetailList().stream().map(OrderInfoDetailVo::getProductId).collect(Collectors.toList()); + if (productIdList.size() < 1) { + throw new CrmebException("没有找到商品"); + } + + //设置优惠券所提供的集合 + List primaryKeyIdList = CrmebUtil.stringToArray(storeCouponUser.getPrimaryKey()); + + //取两个集合的交集,如果是false则证明没有相同的值 + //oldList.retainAll(newList)返回值代表oldList是否保持原样,如果old和new完全相同,那old保持原样并返回false。 + //交集:listA.retainAll(listB) ——listA内容变为listA和listB都存在的对象;listB不变 + if (storeCouponUser.getUseType() == 2) { + primaryKeyIdList.retainAll(productIdList); + if (CollUtil.isEmpty(primaryKeyIdList)) { + throw new CrmebException("此优惠券为商品券,请购买相关商品之后再使用!"); + } + } + + if (storeCouponUser.getUseType() == 3) { + //拿出需要使用优惠券的商品分类集合 + List categoryIdList = storeProductService.getSecondaryCategoryByProductId(StringUtils.join(productIdList, ",")); + + primaryKeyIdList.retainAll(categoryIdList); + if (CollUtil.isEmpty(primaryKeyIdList)) { + throw new CrmebException("此优惠券为分类券,请购买相关分类下的商品之后再使用!"); + } + } + } + if (orderInfoVo.getProTotalFee().compareTo(storeCouponUser.getMoney()) <= 0) { + priceResponse.setCouponFee(orderInfoVo.getProTotalFee()); + priceResponse.setDeductionPrice(BigDecimal.ZERO); + priceResponse.setSurplusIntegral(user.getIntegral()); + priceResponse.setPayFee(priceResponse.getFreightFee()); + priceResponse.setUsedIntegral(0); + priceResponse.setUseIntegral(false); + priceResponse.setProTotalFee(orderInfoVo.getProTotalFee()); + return priceResponse; + } else { + priceResponse.setCouponFee(storeCouponUser.getMoney()); + } + } + // 积分部分 + BigDecimal payPrice = orderInfoVo.getProTotalFee().add(priceResponse.getFreightFee()).subtract(priceResponse.getCouponFee()); + priceResponse.setUseIntegral(request.getUseIntegral()); + priceResponse.setProTotalFee(orderInfoVo.getProTotalFee()); + if (!request.getUseIntegral() || user.getIntegral() <= 0) {// 不使用积分 + priceResponse.setDeductionPrice(BigDecimal.ZERO); + priceResponse.setSurplusIntegral(user.getIntegral()); + priceResponse.setPayFee(payPrice); + priceResponse.setUsedIntegral(0); + return priceResponse; + } + // 使用积分 + // 查询积分使用比例 + String integralRatio = systemConfigService.getValueByKey(SysConfigConstants.CONFIG_KEY_INTEGRAL_RATE); + BigDecimal deductionPrice = new BigDecimal(user.getIntegral()).multiply(new BigDecimal(integralRatio)); + if (request.getUseIntegral()) { + // 积分兑换金额小于实际支付金额 + if (deductionPrice.compareTo(payPrice) < 0) { + payPrice = payPrice.subtract(deductionPrice); + priceResponse.setSurplusIntegral(0); + priceResponse.setUsedIntegral(user.getIntegral()); + } else { + deductionPrice = payPrice; + if (payPrice.compareTo(BigDecimal.ZERO) > 0) { + int usedIntegral = payPrice.divide(new BigDecimal(integralRatio), 0, BigDecimal.ROUND_UP).intValue(); + priceResponse.setSurplusIntegral(user.getIntegral() - usedIntegral); + priceResponse.setUsedIntegral(usedIntegral); + } + payPrice = BigDecimal.ZERO; + } + priceResponse.setPayFee(payPrice); + priceResponse.setDeductionPrice(deductionPrice); + } + return priceResponse; + } +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/OrderTaskServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/OrderTaskServiceImpl.java new file mode 100644 index 0000000..b97ea01 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/OrderTaskServiceImpl.java @@ -0,0 +1,354 @@ +package com.zbkj.service.service.impl; + + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONObject; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.constants.TaskConstants; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.model.order.StoreOrder; +import com.zbkj.common.model.order.StoreOrderStatus; +import com.zbkj.common.model.product.StoreProductReply; +import com.zbkj.common.model.user.User; +import com.zbkj.common.utils.DateUtil; +import com.zbkj.common.utils.RedisUtil; +import com.zbkj.common.vo.StoreOrderInfoOldVo; +import com.zbkj.service.service.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.support.TransactionTemplate; + +import java.util.List; + +/** + * StoreOrderServiceImpl 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class OrderTaskServiceImpl implements OrderTaskService { + //日志 + private static final Logger logger = LoggerFactory.getLogger(OrderTaskServiceImpl.class); + + @Autowired + private RedisUtil redisUtil; + + @Autowired + private StoreOrderTaskService storeOrderTaskService; + + @Autowired + private StoreOrderService storeOrderService; + + @Autowired + private StoreOrderStatusService storeOrderStatusService; + + @Autowired + private StoreOrderInfoService storeOrderInfoService; + + @Autowired + private UserService userService; + + @Autowired + private StoreProductReplyService storeProductReplyService; + + @Autowired + private TransactionTemplate transactionTemplate; + + @Autowired + private OrderPayService orderPayService; + + /** + * 用户取消订单 + * @author Mr.Zhang + * @since 2020-07-09 + */ + @Override + public void cancelByUser() { + String redisKey = Constants.ORDER_TASK_REDIS_KEY_AFTER_CANCEL_BY_USER; + Long size = redisUtil.getListSize(redisKey); + logger.info("OrderTaskServiceImpl.cancelByUser | size:" + size); + if (size < 1) { + return; + } + for (int i = 0; i < size; i++) { + //如果10秒钟拿不到一个数据,那么退出循环 + Object data = redisUtil.getRightPop(redisKey, 10L); + if (null == data) { + continue; + } + try { +// StoreOrder storeOrder = getJavaBeanStoreOrder(data); + StoreOrder storeOrder = storeOrderService.getById(Integer.valueOf(data.toString())); + boolean result = storeOrderTaskService.cancelByUser(storeOrder); + if (!result) { + redisUtil.lPush(redisKey, data); + } + } catch (Exception e) { + redisUtil.lPush(redisKey, data); + } + } + } + + private StoreOrder getJavaBeanStoreOrder(Object data) { + return JSONObject.toJavaObject(JSONObject.parseObject(data.toString()), StoreOrder.class); + } + + /** + * 执行 用户退款申请 + * @author Mr.Zhang + * @since 2020-07-09 + */ + @Override + public void refundApply() { + String redisKey = Constants.ORDER_TASK_REDIS_KEY_AFTER_REFUND_BY_USER; + Long size = redisUtil.getListSize(redisKey); + logger.info("OrderTaskServiceImpl.refundApply | size:" + size); + if (size < 1) { + return; + } + for (int i = 0; i < size; i++) { + //如果10秒钟拿不到一个数据,那么退出循环 + Object orderId = redisUtil.getRightPop(redisKey, 10L); + if (null == orderId) { + continue; + } + try { + StoreOrder storeOrder = storeOrderService.getById(Integer.valueOf(orderId.toString())); + if (ObjectUtil.isNull(storeOrder)) { + throw new CrmebException("订单不存在,orderNo = " + orderId); + } +// boolean result = storeOrderTaskService.refundApply(storeOrder); + boolean result = storeOrderTaskService.refundOrder(storeOrder); + if (!result) { + logger.error("订单退款错误:result = " + result); + redisUtil.lPush(redisKey, orderId); + } + } catch (Exception e) { + logger.error("订单退款错误:" + e.getMessage()); + redisUtil.lPush(redisKey, orderId); + } + } + } + + /** + * 完成订单 + * @author Mr.Zhang + * @since 2020-07-09 + */ + @Override + public void complete() { + String redisKey = Constants.ORDER_TASK_REDIS_KEY_AFTER_COMPLETE_BY_USER; + Long size = redisUtil.getListSize(redisKey); + logger.info("OrderTaskServiceImpl.complete | size:" + size); + if (size < 1) { + return; + } + for (int i = 0; i < size; i++) { + //如果10秒钟拿不到一个数据,那么退出循环 + Object data = redisUtil.getRightPop(redisKey, 10L); + if (null == data) { + continue; + } + try { + StoreOrder storeOrder = getJavaBeanStoreOrder(data); + boolean result = storeOrderTaskService.complete(storeOrder); + if (!result) { + redisUtil.lPush(redisKey, data); + } + } catch (Exception e) { + redisUtil.lPush(redisKey, data); + } + } + } + + /** + * 订单支付成功后置处理 + */ + @Override + public void orderPaySuccessAfter() { + String redisKey = TaskConstants.ORDER_TASK_PAY_SUCCESS_AFTER; + Long size = redisUtil.getListSize(redisKey); + logger.info("OrderTaskServiceImpl.orderPaySuccessAfter | size:" + size); + if (size < 1) { + return; + } + for (int i = 0; i < size; i++) { + //如果10秒钟拿不到一个数据,那么退出循环 + Object data = redisUtil.getRightPop(redisKey, 10L); + if (ObjectUtil.isNull(data)) { + continue; + } + try { + StoreOrder storeOrder = storeOrderService.getByOderId(String.valueOf(data)); + if (ObjectUtil.isNull(storeOrder)) { + logger.error("OrderTaskServiceImpl.orderPaySuccessAfter | 订单不存在,orderNo: " + data); + throw new CrmebException("订单不存在,orderNo: " + data); + } + boolean result = orderPayService.paySuccess(storeOrder); + if (!result) { + redisUtil.lPush(redisKey, data); + } + } catch (Exception e) { + e.printStackTrace(); + redisUtil.lPush(redisKey, data); + } + } + } + + /** + * 自动取消未支付订单 + */ + @Override + public void autoCancel() { + String redisKey = Constants.ORDER_AUTO_CANCEL_KEY; + Long size = redisUtil.getListSize(redisKey); + logger.info("OrderTaskServiceImpl.autoCancel | size:" + size); + if (size < 1) { + return; + } + for (int i = 0; i < size; i++) { + //如果10秒钟拿不到一个数据,那么退出循环 + Object data = redisUtil.getRightPop(redisKey, 10L); + if (null == data) { + continue; + } + try { + StoreOrder storeOrder = storeOrderService.getByOderId(String.valueOf(data)); + if (ObjectUtil.isNull(storeOrder)) { + logger.error("OrderTaskServiceImpl.autoCancel | 订单不存在,orderNo: " + data); + throw new CrmebException("订单不存在,orderNo: " + data); + } + boolean result = storeOrderTaskService.autoCancel(storeOrder); + if (!result) { + redisUtil.lPush(redisKey, data); + } + } catch (Exception e) { + e.printStackTrace(); + redisUtil.lPush(redisKey, data); + } + } + } + + /** + * 订单收货 + */ + @Override + public void orderReceiving() { + String redisKey = TaskConstants.ORDER_TASK_REDIS_KEY_AFTER_TAKE_BY_USER; + Long size = redisUtil.getListSize(redisKey); + logger.info("OrderTaskServiceImpl.orderReceiving | size:" + size); + if (size < 1) { + return; + } + for (int i = 0; i < size; i++) { + //如果10秒钟拿不到一个数据,那么退出循环 + Object id = redisUtil.getRightPop(redisKey, 10L); + if (null == id) { + continue; + } + try { + Boolean result = storeOrderTaskService.orderReceiving(Integer.valueOf(id.toString())); + if (!result) { + redisUtil.lPush(redisKey, id); + } + } catch (Exception e) { + redisUtil.lPush(redisKey, id); + } + } + } + + /** + * 订单自动完成 + */ + @Override + public void autoComplete() { + // 查找所有收获状态订单 + List orderList = storeOrderService.findIdAndUidListByReceipt(); + if (CollUtil.isEmpty(orderList)) { + return ; + } + logger.info("OrderTaskServiceImpl.autoComplete | size:0"); + + // 根据订单状态表判断订单是否可以自动完成 + for (StoreOrder order : orderList) { + StoreOrderStatus orderStatus = storeOrderStatusService.getLastByOrderId(order.getId()); + if (!"user_take_delivery".equals(orderStatus.getChangeType())) { + logger.error("订单自动完成:订单记录最后一条不是收货状态,orderId = " + order.getId()); + continue ; + } + // 判断是否到自动完成时间(收货时间向后偏移7天) + String comTime = DateUtil.addDay(orderStatus.getCreateTime(), 7, Constants.DATE_FORMAT); + int compareDate = DateUtil.compareDate(comTime, DateUtil.nowDateTime(Constants.DATE_FORMAT), Constants.DATE_FORMAT); + if (compareDate < 0) { + continue ; + } + + /** + * --------------- + * 自动好评转完成 + * --------------- + */ + // 获取订单详情 + List orderInfoVoList = storeOrderInfoService.getOrderListByOrderId(order.getId()); + if (CollUtil.isEmpty(orderInfoVoList)) { + logger.error("订单自动完成:无订单详情数据,orderId = " + order.getId()); + continue; + } + List replyList = CollUtil.newArrayList(); + User user = userService.getById(order.getUid()); + // 生成评论 + for (StoreOrderInfoOldVo orderInfo : orderInfoVoList) { + // 判断是否已评论 + if (orderInfo.getInfo().getIsReply().equals(1)) { + continue; + } + String replyType = Constants.STORE_REPLY_TYPE_PRODUCT; +// if (ObjectUtil.isNotNull(orderInfo.getInfo().getSeckillId()) && orderInfo.getInfo().getSeckillId() > 0) { +// replyType = Constants.STORE_REPLY_TYPE_SECKILL; +// } +// if (ObjectUtil.isNotNull(orderInfo.getInfo().getBargainId()) && orderInfo.getInfo().getBargainId() > 0) { +// replyType = Constants.STORE_REPLY_TYPE_BARGAIN; +// } +// if (ObjectUtil.isNotNull(orderInfo.getInfo().getCombinationId()) && orderInfo.getInfo().getCombinationId() > 0) { +// replyType = Constants.STORE_REPLY_TYPE_PINTUAN; +// } + StoreProductReply reply = new StoreProductReply(); + reply.setUid(order.getUid()); + reply.setOid(order.getId()); + reply.setProductId(orderInfo.getProductId()); + reply.setUnique(orderInfo.getUnique()); + reply.setReplyType(replyType); + reply.setProductScore(5); + reply.setServiceScore(5); + reply.setComment(""); + reply.setPics(""); + reply.setNickname(user.getNickname()); + reply.setAvatar(user.getAvatar()); + reply.setSku(orderInfo.getInfo().getSku()); + reply.setCreateTime(DateUtil.nowDateTime()); + replyList.add(reply); + } + order.setStatus(Constants.ORDER_STATUS_INT_COMPLETE); + Boolean execute = transactionTemplate.execute(e -> { + storeOrderService.updateById(order); + storeProductReplyService.saveBatch(replyList); + return Boolean.TRUE; + }); + if (execute) { + redisUtil.lPush(Constants.ORDER_TASK_REDIS_KEY_AFTER_COMPLETE_BY_USER, order.getId()); + } else { + logger.error("订单自动完成:更新数据库失败,orderId = " + order.getId()); + } + } + } +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/OssServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/OssServiceImpl.java new file mode 100644 index 0000000..fe7c77e --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/OssServiceImpl.java @@ -0,0 +1,60 @@ +package com.zbkj.service.service.impl; + +import com.aliyun.oss.OSS; +import com.aliyun.oss.OSSClientBuilder; +import com.aliyun.oss.model.PutObjectRequest; +import com.aliyun.oss.model.PutObjectResult; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.vo.CloudVo; +import com.zbkj.service.service.OssService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import java.io.File; + + +/** + * AsyncServiceImpl 同步到云服务 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class OssServiceImpl implements OssService { + + private static final Logger logger = LoggerFactory.getLogger(OssServiceImpl.class); + + @Override + public void upload(CloudVo cloudVo, String webPth, String localFile, File file) { + logger.info("上传文件开始:" + localFile); + OSS ossClient = new OSSClientBuilder().build(cloudVo.getRegion(), cloudVo.getAccessKey(), cloudVo.getSecretKey()); + try { + //判断bucket是否存在 + if (!ossClient.doesBucketExist(cloudVo.getBucketName())){ + ossClient.createBucket(cloudVo.getBucketName()); + } + + if(!file.exists()){ + logger.info("上传文件" + localFile + "不存在:"); + return; + } + PutObjectRequest putObjectRequest = new PutObjectRequest(cloudVo.getBucketName(), webPth, file); + // 上传文件。 + PutObjectResult putObjectResult = ossClient.putObject(putObjectRequest); + logger.info("上传文件 -- 结束:" + putObjectResult.getETag()); + + } catch (Exception e){ + throw new CrmebException(e.getMessage()); + } finally { + ossClient.shutdown(); + } + } +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/QiNiuServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/QiNiuServiceImpl.java new file mode 100644 index 0000000..ecbc4f9 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/QiNiuServiceImpl.java @@ -0,0 +1,88 @@ +package com.zbkj.service.service.impl; + +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.vo.CloudVo; +import com.qiniu.common.QiniuException; +import com.qiniu.http.Response; +import com.qiniu.storage.UploadManager; +import com.zbkj.service.service.QiNiuService; +import com.zbkj.service.service.SystemAttachmentService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; + +import java.io.File; + + +/** + * AsyncServiceImpl 同步到云服务 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class QiNiuServiceImpl implements QiNiuService { + private static final Logger logger = LoggerFactory.getLogger(QiNiuServiceImpl.class); + + @Lazy + @Autowired + private SystemAttachmentService systemAttachmentService; + + /** + * 同步到七牛云 + * @param cloudVo CloudVo + * @author Mr.Zhang + * @since 2020-05-06 + */ + @Async + @Override + public void upload(UploadManager uploadManager, CloudVo cloudVo, String upToken, String webPth, String localFile, Integer id) { + try { + logger.info("上传文件" + id + "开始:" + localFile); + + File file = new File(localFile); + if(!file.exists()){ + logger.info("上传文件"+ id + localFile + "不存在:"); + return; + } + + Response put = uploadManager.put(localFile, webPth, upToken); + put.close(); + logger.info("上传文件" + id + " -- 结束:" + put.address); + //更新数据库 + systemAttachmentService.updateCloudType(id, 2); + } catch (QiniuException ex) { + throw new CrmebException(ex.getMessage()); + } + } + + @Override + public void uploadFile(UploadManager uploadManager, CloudVo cloudVo, String upToken, String webPth, String localFile, File file) { + try { + logger.info("上传文件开始:" + localFile); + +// File file = new File(localFile); + if(!file.exists()){ + logger.info("上传文件" + localFile + "不存在:"); + return; + } + +// Response put = uploadManager.put(localFile, webPth, upToken); + Response put = uploadManager.put(file, webPth, upToken); + put.close(); + logger.info("上传文件 -- 结束:" + put.address); + } catch (QiniuException ex) { + throw new CrmebException(ex.getMessage()); + } + } +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/RechargePayServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/RechargePayServiceImpl.java new file mode 100644 index 0000000..9eda326 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/RechargePayServiceImpl.java @@ -0,0 +1,86 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.util.StrUtil; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.utils.DateUtil; +import com.zbkj.common.model.finance.UserRecharge; +import com.zbkj.common.model.user.User; +import com.zbkj.common.model.user.UserBill; +import com.zbkj.service.service.RechargePayService; +import com.zbkj.service.service.UserBillService; +import com.zbkj.service.service.UserRechargeService; +import com.zbkj.service.service.UserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.support.TransactionTemplate; + +import java.math.BigDecimal; + + +/** + * 支付类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class RechargePayServiceImpl implements RechargePayService { + + @Autowired + private UserRechargeService userRechargeService; + + @Autowired + private UserService userService; + + @Autowired + private TransactionTemplate transactionTemplate; + + @Autowired + private UserBillService userBillService; + + /** + * 支付成功处理 + * 增加余额,userBill记录 + * @param userRecharge 充值订单 + */ + @Override + public Boolean paySuccess(UserRecharge userRecharge) { + userRecharge.setPaid(true); + userRecharge.setPayTime(DateUtil.nowDateTime()); + + User user = userService.getById(userRecharge.getUid()); + + BigDecimal payPrice = userRecharge.getPrice().add(userRecharge.getGivePrice()); + BigDecimal balance = user.getNowMoney().add(payPrice); + // 余额变动对象 + UserBill userBill = new UserBill(); + userBill.setUid(userRecharge.getUid()); + userBill.setLinkId(userRecharge.getOrderId()); + userBill.setPm(1); + userBill.setTitle("充值支付"); + userBill.setCategory(Constants.USER_BILL_CATEGORY_MONEY); + userBill.setType(Constants.USER_BILL_TYPE_PAY_RECHARGE); + userBill.setNumber(payPrice); + userBill.setBalance(balance); + userBill.setMark(StrUtil.format("余额增加了{}元", payPrice)); + userBill.setStatus(1); + userBill.setCreateTime(DateUtil.nowDateTime()); + + Boolean execute = transactionTemplate.execute(e -> { + // 订单变动 + userRechargeService.updateById(userRecharge); + // 余额变动 + userService.operationNowMoney(user.getUid(), payPrice, user.getNowMoney(), "add"); + // 创建记录 + userBillService.save(userBill); + return Boolean.TRUE; + }); + return execute; + } +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/RetailShopServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/RetailShopServiceImpl.java new file mode 100644 index 0000000..216f6c9 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/RetailShopServiceImpl.java @@ -0,0 +1,172 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.request.RetailShopRequest; +import com.zbkj.common.response.SpreadUserResponse; +import com.github.pagehelper.Page; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.zbkj.common.response.UserExtractResponse; +import com.zbkj.common.model.user.User; +import com.zbkj.common.model.user.UserBrokerageRecord; +import com.zbkj.service.dao.UserDao; +import com.zbkj.service.service.*; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; + +/** + * RetailShopServiceImpl 接口实现 分销业务实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class RetailShopServiceImpl extends ServiceImpl implements RetailShopService { + + @Autowired + private UserService userService; + + @Autowired + private UserExtractService userExtractService; + + @Autowired + private StoreOrderService storeOrderService; + + @Autowired + private SystemConfigService systemConfigService; + + @Autowired + private UserBrokerageRecordService userBrokerageRecordService; + + /** + * 获取分销列表 + * @param keywords 搜索参数 + * @param dateLimit 时间参数 + * @param pageRequest 分页参数 + */ + @Override + public CommonPage getSpreadPeopleList(String keywords, String dateLimit, PageParamRequest pageRequest) { + Page pageUserPage = PageHelper.startPage(pageRequest.getPage(), pageRequest.getLimit()); + // id,头像,昵称,姓名,电话,推广用户数,推广订单数,推广订单额,佣金总金额,已提现金额,提现次数,未提现金额,上级推广人 + PageInfo userPageInfo = userService.getAdminSpreadPeopleList(keywords, dateLimit, pageRequest); + + if (CollUtil.isEmpty(userPageInfo.getList())) { + return CommonPage.restPage(new PageInfo<>()); + } + List userList = userPageInfo.getList(); + List responseList = CollUtil.newArrayList(); + userList.forEach(user -> { + SpreadUserResponse userResponse = new SpreadUserResponse(); + BeanUtils.copyProperties(user, userResponse); + // 上级推广员名称 + userResponse.setSpreadNickname("无"); + if (ObjectUtil.isNotNull(user.getSpreadUid()) && user.getSpreadUid() > 0) { + User spreadUser = userService.getById(user.getSpreadUid()); + userResponse.setSpreadNickname(Optional.ofNullable(spreadUser.getNickname()).orElse("--")); + } + + List recordList = userBrokerageRecordService.getSpreadListByUid(user.getUid()); + if (CollUtil.isEmpty(recordList)) { + // 推广订单数 + userResponse.setSpreadOrderNum(0); + // 推广订单额 + userResponse.setSpreadOrderTotalPrice(BigDecimal.ZERO); + // 佣金总金额 + userResponse.setTotalBrokeragePrice(BigDecimal.ZERO); + // 已提现金额 + userResponse.setExtractCountPrice(BigDecimal.ZERO); + // 提现次数 + userResponse.setExtractCountNum(0); + // 冻结中佣金 + userResponse.setFreezeBrokeragePrice(BigDecimal.ZERO); + } else { + // 推广订单数 + userResponse.setSpreadOrderNum(recordList.size()); + // 佣金总金额 + userResponse.setTotalBrokeragePrice(recordList.stream().map(UserBrokerageRecord::getPrice).reduce(BigDecimal.ZERO, BigDecimal::add)); + // 推广订单额 + List orderNoList = recordList.stream().map(UserBrokerageRecord::getLinkId).collect(Collectors.toList()); + BigDecimal spreadOrderTotalPrice = storeOrderService.getSpreadOrderTotalPriceByOrderList(orderNoList); + userResponse.setSpreadOrderTotalPrice(spreadOrderTotalPrice); + + UserExtractResponse extractResponse = userExtractService.getUserExtractByUserId(user.getUid()); + // 已提现金额 + userResponse.setExtractCountPrice(extractResponse.getExtractCountPrice()); + // 提现次数 + userResponse.setExtractCountNum(extractResponse.getExtractCountNum()); + // 冻结中佣金 + userResponse.setFreezeBrokeragePrice(userBrokerageRecordService.getFreezePrice(user.getUid())); + } + responseList.add(userResponse); + }); + PageInfo responsePageInfo = CommonPage.copyPageInfo(pageUserPage, responseList); + responsePageInfo.setTotal(userPageInfo.getTotal()); + responsePageInfo.setPages(userPageInfo.getPages()); + return CommonPage.restPage(responsePageInfo); + } + + /** + * 获取分销配置信息 + * @return 返回配置信息 + */ + @Override + public RetailShopRequest getManageInfo() { +// List keys = initKeys(); + RetailShopRequest response = new RetailShopRequest(); + response.setBrokerageFuncStatus(Integer.parseInt(systemConfigService.getValueByKey("brokerage_func_status"))); +// response.setStoreBrokerageStatus(systemConfigService.getValueByKey(keys.get(1))); + response.setStoreBrokerageRatio(Integer.parseInt(systemConfigService.getValueByKey("store_brokerage_ratio"))); + response.setStoreBrokerageTwo(Integer.parseInt(systemConfigService.getValueByKey("store_brokerage_two"))); + response.setUserExtractMinPrice(new BigDecimal(systemConfigService.getValueByKey("user_extract_min_price"))); + response.setUserExtractBank(systemConfigService.getValueByKey("user_extract_bank").replace("\\n","\n")); + response.setExtractTime(Integer.parseInt(systemConfigService.getValueByKey("extract_time"))); + response.setStoreBrokerageQuota(Integer.parseInt(systemConfigService.getValueByKey("store_brokerage_quota"))); + response.setStoreBrokerageIsBubble(Integer.parseInt(systemConfigService.getValueByKey("store_brokerage_is_bubble"))); + response.setBrokerageBindind(Integer.parseInt(systemConfigService.getValueByKey("brokerage_bindind"))); + return response; + } + + /** + * 更新分销配置信息 + * @param retailShopRequest 待保存数据 + * @return 更新结果 + */ + @Override + public boolean setManageInfo(RetailShopRequest retailShopRequest) { + // 返佣比例之和+起来不能超过100% + int ration = retailShopRequest.getStoreBrokerageTwo() + retailShopRequest.getStoreBrokerageRatio(); + if (ration > 100 || ration < 0) throw new CrmebException("返佣比例加起来不能超过100%"); + +// List keys = initKeys(); + systemConfigService.updateOrSaveValueByName("brokerage_func_status", retailShopRequest.getBrokerageFuncStatus().toString()); +// systemConfigService.updateOrSaveValueByName("store_brokerage_status", retailShopRequest.getStoreBrokerageStatus()); + systemConfigService.updateOrSaveValueByName("store_brokerage_ratio", retailShopRequest.getStoreBrokerageRatio().toString()); + systemConfigService.updateOrSaveValueByName("store_brokerage_two", retailShopRequest.getStoreBrokerageTwo().toString()); + systemConfigService.updateOrSaveValueByName("user_extract_min_price", retailShopRequest.getUserExtractMinPrice().toString()); + systemConfigService.updateOrSaveValueByName("user_extract_bank", retailShopRequest.getUserExtractBank()); + systemConfigService.updateOrSaveValueByName("extract_time", retailShopRequest.getExtractTime().toString()); +// systemConfigService.updateOrSaveValueByName(keys.get(7), retailShopRequest.getStoreBrokeragePrice().toString()); + systemConfigService.updateOrSaveValueByName("brokerage_bindind", retailShopRequest.getBrokerageBindind().toString()); + systemConfigService.updateOrSaveValueByName("store_brokerage_quota", retailShopRequest.getStoreBrokerageQuota().toString()); + systemConfigService.updateOrSaveValueByName("store_brokerage_is_bubble", retailShopRequest.getStoreBrokerageIsBubble().toString()); + return true; + } + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/ShippingTemplatesFreeServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/ShippingTemplatesFreeServiceImpl.java new file mode 100644 index 0000000..53ea6af --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/ShippingTemplatesFreeServiceImpl.java @@ -0,0 +1,154 @@ +package com.zbkj.service.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.utils.CrmebUtil; +import com.zbkj.common.model.express.ShippingTemplatesFree; +import com.zbkj.common.request.ShippingTemplatesFreeRequest; +import com.zbkj.service.dao.ShippingTemplatesFreeDao; +import com.zbkj.service.service.ShippingTemplatesFreeService; +import com.zbkj.service.service.SystemCityService; +import org.apache.commons.codec.digest.DigestUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** +* ShippingTemplatesFreeServiceImpl 接口实现 +* +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- +*/ +@Service +public class ShippingTemplatesFreeServiceImpl extends ServiceImpl implements ShippingTemplatesFreeService { + + @Resource + private ShippingTemplatesFreeDao dao; + + @Autowired + private SystemCityService systemCityService; + + private List cityIdList; + + /** + * 保存配送区域 + * @param shippingTemplatesFreeRequestList List 运费集合 + * @param type Integer 计费方式 + * @param tempId Integer 运费模板id + * @author Mr.Zhang + * @since 2020-05-20 + */ + @Async + @Override + public void saveAll(List shippingTemplatesFreeRequestList, Integer type, Integer tempId) { + + ArrayList shippingTemplatesFreesList = new ArrayList<>(); + + //把目前模板下的所有数据标记为无效 + updateStatus(tempId); + + for (ShippingTemplatesFreeRequest shippingTemplatesFreeRequest : shippingTemplatesFreeRequestList) { + String uniqueKey = DigestUtils.md5Hex(shippingTemplatesFreeRequest.toString()); + if("all".equals(shippingTemplatesFreeRequest.getCityId()) || "0".equals(shippingTemplatesFreeRequest.getCityId())){ + cityIdList = getCityIdList(); + }else{ + cityIdList = CrmebUtil.stringToArray(shippingTemplatesFreeRequest.getCityId()); + } + for (Integer cityId: cityIdList) { + ShippingTemplatesFree shippingTemplatesFree = new ShippingTemplatesFree(); + shippingTemplatesFree.setCityId(cityId); + shippingTemplatesFree.setTitle(shippingTemplatesFreeRequest.getTitle()); + shippingTemplatesFree.setUniqid(uniqueKey); + shippingTemplatesFree.setTempId(tempId); + shippingTemplatesFree.setType(type); + shippingTemplatesFree.setNumber(shippingTemplatesFreeRequest.getNumber()); + shippingTemplatesFree.setPrice(shippingTemplatesFreeRequest.getPrice()); + shippingTemplatesFree.setStatus(true); + shippingTemplatesFreesList.add(shippingTemplatesFree); + } + } + //批量保存模板数据 + saveBatch(shippingTemplatesFreesList); + + //删除模板下的无效数据 + delete(tempId); + } + + /** + * 获取所有城市cityId + * @author Mr.Zhang + * @since 2020-04-16 + * @return List + */ + private List getCityIdList() { + if(this.cityIdList == null || this.cityIdList.size() < 1){ + this.cityIdList = systemCityService.getCityIdList(); + } + return this.cityIdList; + } + + /** + * 把模板下的所有数据标记为无效 + * @param tempId Integer 运费模板id + * @author Mr.Zhang + * @since 2020-05-20 + */ + private void updateStatus(Integer tempId) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(ShippingTemplatesFree::getTempId, tempId); + + ShippingTemplatesFree shippingTemplatesFree = new ShippingTemplatesFree(); + shippingTemplatesFree.setStatus(false); + update(shippingTemplatesFree, lambdaQueryWrapper); + } + + /** + * 删除模板下的无效数据 + * @param tempId Integer 运费模板id + */ + @Override + public Boolean delete(Integer tempId) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(ShippingTemplatesFree::getTempId, tempId); + lambdaQueryWrapper.eq(ShippingTemplatesFree::getStatus, false); + return dao.delete(lambdaQueryWrapper) > 0; + } + + /** + * 根据模板编号、城市ID查询 + * @param tempId 模板编号 + * @param cityId 城市ID + * @return 运费模板 + */ + @Override + public ShippingTemplatesFree getByTempIdAndCityId(Integer tempId, Integer cityId) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(ShippingTemplatesFree::getTempId, tempId); + lqw.eq(ShippingTemplatesFree::getCityId, cityId); + lqw.eq(ShippingTemplatesFree::getStatus, true); + lqw.orderByDesc(ShippingTemplatesFree::getId); + lqw.last(" limit 1"); + return dao.selectOne(lqw); + } + + /** + * 分组查询 + * @param tempId Integer 运费模板id + * @return List + */ + @Override + public List getListGroup(Integer tempId) { + return dao.getListGroup(tempId); + } +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/ShippingTemplatesRegionServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/ShippingTemplatesRegionServiceImpl.java new file mode 100644 index 0000000..96f81ed --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/ShippingTemplatesRegionServiceImpl.java @@ -0,0 +1,167 @@ +package com.zbkj.service.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.utils.CrmebUtil; +import com.zbkj.common.model.express.ShippingTemplatesRegion; +import com.zbkj.common.request.ShippingTemplatesRegionRequest; +import com.zbkj.service.dao.ShippingTemplatesRegionDao; +import com.zbkj.service.service.ShippingTemplatesRegionService; +import com.zbkj.service.service.SystemCityService; +import org.apache.commons.codec.digest.DigestUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +/** +* ShippingTemplatesRegionServiceImpl 接口实现 +* +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- +*/ +@Service +public class ShippingTemplatesRegionServiceImpl extends ServiceImpl implements ShippingTemplatesRegionService { + + @Resource + private ShippingTemplatesRegionDao dao; + + @Autowired + private SystemCityService systemCityService; + + private List cityIdList; + + @Override + public List listByIds(Collection idList) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.in(ShippingTemplatesRegion::getTempId, idList); + lqw.orderByAsc(ShippingTemplatesRegion::getCityId); + return dao.selectList(lqw); + } + + /** + * 保存配送区域及运费 + * @param shippingTemplatesRegionRequestList List 运费集合 + * @param type Integer 计费方式 + * @param tempId Integer 运费模板id + * @author Mr.Zhang + * @since 2020-05-20 + */ + @Async + @Override + public void saveAll(List shippingTemplatesRegionRequestList, Integer type, Integer tempId) { + ArrayList shippingTemplatesRegionList = new ArrayList<>(); + + //把目前模板下的所有数据标记为无效 + updateStatus(tempId); + + for (ShippingTemplatesRegionRequest shippingTemplatesRegionRequest : shippingTemplatesRegionRequestList) { + String uniqueKey = DigestUtils.md5Hex(shippingTemplatesRegionRequest.toString()); + + if("all".equals(shippingTemplatesRegionRequest.getCityId()) || "0".equals(shippingTemplatesRegionRequest.getCityId())){ + cityIdList = getCityIdList(); + }else{ + cityIdList = CrmebUtil.stringToArray(shippingTemplatesRegionRequest.getCityId()); + } + for (Integer cityId: cityIdList) { + ShippingTemplatesRegion shippingTemplatesRegion = new ShippingTemplatesRegion(); + shippingTemplatesRegion.setCityId(cityId); + shippingTemplatesRegion.setTitle(shippingTemplatesRegionRequest.getTitle()); + shippingTemplatesRegion.setUniqid(uniqueKey); + shippingTemplatesRegion.setRenewal(shippingTemplatesRegionRequest.getRenewal()); + shippingTemplatesRegion.setRenewalPrice(shippingTemplatesRegionRequest.getRenewalPrice()); + shippingTemplatesRegion.setFirst(shippingTemplatesRegionRequest.getFirst()); + shippingTemplatesRegion.setFirstPrice(shippingTemplatesRegionRequest.getFirstPrice()); + shippingTemplatesRegion.setTempId(tempId); + shippingTemplatesRegion.setType(type); + shippingTemplatesRegion.setStatus(true); + shippingTemplatesRegionList.add(shippingTemplatesRegion); + } + } + //批量保存模板数据 + saveBatch(shippingTemplatesRegionList); + + //删除模板下的无效数据 + delete(tempId); + } + + /** + * 获取所有城市cityId + * @author Mr.Zhang + * @since 2020-04-16 + * @return List + */ + private List getCityIdList() { + if(this.cityIdList == null || this.cityIdList.size() < 1){ + this.cityIdList = systemCityService.getCityIdList(); + } + return this.cityIdList; + } + + /** + * 把模板下的所有数据标记为无效 + * @param tempId Integer 运费模板id + * @author Mr.Zhang + * @since 2020-05-20 + */ + private void updateStatus(Integer tempId) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(ShippingTemplatesRegion::getTempId, tempId); + + ShippingTemplatesRegion shippingTemplatesRegion = new ShippingTemplatesRegion(); + shippingTemplatesRegion.setStatus(false); + update(shippingTemplatesRegion, lambdaQueryWrapper); + } + + /** + * 删除模板下的无效数据 + * @param tempId Integer 运费模板id + * @return Boolean + */ + @Override + public Boolean delete(Integer tempId) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(ShippingTemplatesRegion::getTempId, tempId); + lambdaQueryWrapper.eq(ShippingTemplatesRegion::getStatus, false); + return dao.delete(lambdaQueryWrapper) > 0; + } + + /** + * 根据模板编号、城市ID查询 + * @param tempId 模板编号 + * @param cityId 城市ID + * @return 运费模板 + */ + @Override + public ShippingTemplatesRegion getByTempIdAndCityId(Integer tempId, Integer cityId) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(ShippingTemplatesRegion::getTempId, tempId); + lambdaQueryWrapper.eq(ShippingTemplatesRegion::getCityId, cityId); + lambdaQueryWrapper.eq(ShippingTemplatesRegion::getStatus, true); + lambdaQueryWrapper.orderByDesc(ShippingTemplatesRegion::getId); + lambdaQueryWrapper.last(" limit 1"); + return dao.selectOne(lambdaQueryWrapper); + } + + /** + * 分组查询 + * @param tempId Integer 运费模板id + * @return List + */ + @Override + public List getListGroup(Integer tempId) { + return dao.getListGroup(tempId); + } +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/ShippingTemplatesServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/ShippingTemplatesServiceImpl.java new file mode 100644 index 0000000..0ec6959 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/ShippingTemplatesServiceImpl.java @@ -0,0 +1,196 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.exception.CrmebException; +import com.github.pagehelper.PageHelper; +import com.zbkj.common.model.express.ShippingTemplates; +import com.zbkj.common.request.ShippingTemplatesFreeRequest; +import com.zbkj.common.request.ShippingTemplatesRegionRequest; +import com.zbkj.common.request.ShippingTemplatesRequest; +import com.zbkj.common.request.ShippingTemplatesSearchRequest; +import com.zbkj.service.dao.ShippingTemplatesDao; +import com.zbkj.service.service.ShippingTemplatesFreeService; +import com.zbkj.service.service.ShippingTemplatesRegionService; +import com.zbkj.service.service.ShippingTemplatesService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.support.TransactionTemplate; + +import javax.annotation.Resource; +import java.util.List; + +/** +* ShippingTemplatesServiceImpl 接口实现 +* +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- +*/ +@Service +public class ShippingTemplatesServiceImpl extends ServiceImpl implements ShippingTemplatesService { + + @Resource + private ShippingTemplatesDao dao; + + @Autowired + private ShippingTemplatesRegionService shippingTemplatesRegionService; + + @Autowired + private ShippingTemplatesFreeService shippingTemplatesFreeService; + + @Autowired + private TransactionTemplate transactionTemplate; + + /** + * 列表 + * @param request 请求参数 + * @param pageParamRequest 分页类参数 + * @author Mr.Zhang + * @since 2020-04-17 + * @return List + */ + @Override + public List getList(ShippingTemplatesSearchRequest request, PageParamRequest pageParamRequest) { + PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + if(!StringUtils.isBlank(request.getKeywords())){ + lambdaQueryWrapper.like(ShippingTemplates::getName, request.getKeywords()); + } + lambdaQueryWrapper.orderByDesc(ShippingTemplates::getSort).orderByDesc(ShippingTemplates::getId); + return dao.selectList(lambdaQueryWrapper); + } + + /** + * 新增 + * @param request 新增参数 + * @author Mr.Zhang + * @since 2020-04-17 + * @return bool + */ + @Override + public Boolean create(ShippingTemplatesRequest request) { + // 判断模板名称是否重复 + if (isExistName(request.getName())) { + throw new CrmebException("模板名称已存在,请更换模板名称!"); + } + List shippingTemplatesRegionRequestList = request.getShippingTemplatesRegionRequestList(); + if (CollUtil.isEmpty(shippingTemplatesRegionRequestList)) { + throw new CrmebException("区域运费最少需要一条默认的全国区域"); + } + + ShippingTemplates shippingTemplates = new ShippingTemplates(); + shippingTemplates.setName(request.getName()); + shippingTemplates.setSort(request.getSort()); + shippingTemplates.setType(request.getType()); + shippingTemplates.setAppoint(request.getAppoint()); + + save(shippingTemplates); + + //区域运费 + shippingTemplatesRegionService.saveAll(shippingTemplatesRegionRequestList, request.getType(), shippingTemplates.getId()); + + + List shippingTemplatesFreeRequestList = request.getShippingTemplatesFreeRequestList(); + if(null != shippingTemplatesFreeRequestList && shippingTemplatesFreeRequestList.size() > 0 && request.getAppoint()){ + shippingTemplatesFreeService.saveAll(shippingTemplatesFreeRequestList, request.getType(), shippingTemplates.getId()); + } + + return true; + } + + /** + * 根据模板名称获取模板 + * @param name 模板名称 + * @return ShippingTemplates + */ + private ShippingTemplates getByName(String name) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.in(ShippingTemplates::getName, name); + return dao.selectOne(lqw); + } + + /** + * 是否存在模板名称 + */ + private Boolean isExistName(String name) { + ShippingTemplates templates = getByName(name); + if (ObjectUtil.isNull(templates)) { + return Boolean.FALSE; + } + return Boolean.TRUE; + } + + /** + * 新增 + * @param id Integer 模板id + * @param request ShippingTemplatesRequest 新增参数 + */ + @Override + public Boolean update(Integer id, ShippingTemplatesRequest request) { + ShippingTemplates shippingTemplates = new ShippingTemplates(); + shippingTemplates.setId(id); + shippingTemplates.setName(request.getName()); + shippingTemplates.setSort(request.getSort()); + shippingTemplates.setType(request.getType()); + shippingTemplates.setAppoint(request.getAppoint()); + + + updateById(shippingTemplates); + + //区域运费 + List shippingTemplatesRegionRequestList = request.getShippingTemplatesRegionRequestList(); + + if(shippingTemplatesRegionRequestList.size() < 1){ + throw new CrmebException("请设置区域配送信息!"); + } + shippingTemplatesRegionService.saveAll(shippingTemplatesRegionRequestList, request.getType(), shippingTemplates.getId()); + + List shippingTemplatesFreeRequestList = request.getShippingTemplatesFreeRequestList(); + if(CollUtil.isNotEmpty(shippingTemplatesFreeRequestList) && request.getAppoint()){ + shippingTemplatesFreeService.saveAll(shippingTemplatesFreeRequestList, request.getType(), shippingTemplates.getId()); + } + + return true; + } + + /** + * 删除 + * @param id Integer + * @return boolean + */ + @Override + public Boolean remove(Integer id) { + return transactionTemplate.execute(e -> { + shippingTemplatesRegionService.delete(id); + shippingTemplatesFreeService.delete(id); + removeById(id); + return Boolean.TRUE; + }); + } + + /** + * 获取模板信息 + * @param id 模板id + * @return ShippingTemplates + */ + @Override + public ShippingTemplates getInfo(Integer id) { + ShippingTemplates template = getById(id); + if (ObjectUtil.isNull(template)) { + throw new CrmebException("模板不存在"); + } + return template; + } + +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SmsRecordServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SmsRecordServiceImpl.java new file mode 100644 index 0000000..33644b1 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SmsRecordServiceImpl.java @@ -0,0 +1,40 @@ +package com.zbkj.service.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.model.sms.SmsRecord; +import com.zbkj.service.dao.SmsRecordDao; +import com.zbkj.service.service.SmsRecordService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * SmsRecordServiceImpl 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class SmsRecordServiceImpl extends ServiceImpl implements SmsRecordService { + + @Resource + private SmsRecordDao dao; + + /** + * 短信发送记录保存 + * + * @param smsRecord 待保存短信记录 + * @return 保存结果 + */ + @Override + public boolean save(SmsRecord smsRecord) { + return dao.insert(smsRecord) > 0; + } +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SmsServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SmsServiceImpl.java new file mode 100644 index 0000000..c0457bf --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SmsServiceImpl.java @@ -0,0 +1,596 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.zbkj.common.request.SmsApplyTempRequest; +import com.zbkj.common.request.SmsModifySignRequest; +import com.zbkj.common.utils.CrmebUtil; +import com.zbkj.common.utils.RedisUtil; +import com.zbkj.common.utils.RestTemplateUtil; +import com.zbkj.common.utils.ValidateFormUtil; +import com.zbkj.common.vo.MyRecord; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.constants.OnePassConstants; +import com.zbkj.common.constants.SmsConstants; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.vo.OnePassLoginVo; +import com.zbkj.common.vo.SendSmsVo; +import com.zbkj.service.service.*; +import com.zbkj.service.util.OnePassUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; + +import java.math.BigDecimal; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +/** + * SmsServiceImpl 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class SmsServiceImpl implements SmsService { + + @Autowired + private SystemConfigService systemConfigService; + + @Autowired + private RestTemplateUtil restTemplateUtil; + + @Autowired + private SmsRecordService smsRecordService; + + @Autowired + private RedisUtil redisUtil; + + @Autowired + private UserService userService; + + @Autowired + private OnePassUtil onePassUtil; + + @Autowired + private OnePassService onePassService; + + private static final Logger logger = LoggerFactory.getLogger(SmsServiceImpl.class); + + /** + * 发送短信 + * @param phone 手机号 + * @param tag 短信标识 + * @param msgTempId 短信模板id + * @param pram 参数 + * @return Boolean + */ + private Boolean sendMessages(String phone, Integer tag, Integer msgTempId, HashMap pram) { + //发送手机验证码, 记录到redis sms_validate_code_手机号 + switch (tag) { + case SmsConstants.SMS_CONFIG_TYPE_VERIFICATION_CODE: // 验证码 特殊处理 code + //获取短信验证码过期时间 + String codeExpireStr = systemConfigService.getValueByKey(Constants.CONFIG_KEY_SMS_CODE_EXPIRE); + if (StrUtil.isBlank(codeExpireStr) || Integer.parseInt(codeExpireStr) == 0) { + codeExpireStr = Constants.NUM_FIVE + "";// 默认5分钟过期 + } + Integer code = CrmebUtil.randomCount(111111, 999999); + HashMap justPram = new HashMap<>(); + justPram.put("code", code); + justPram.put("time", codeExpireStr); + push(phone, SmsConstants.SMS_CONFIG_VERIFICATION_CODE, + SmsConstants.SMS_CONFIG_VERIFICATION_CODE_TEMP_ID, justPram); + + // 将验证码存入redis + redisUtil.set(userService.getValidateCodeRedisKey(phone), code, Long.valueOf(codeExpireStr), TimeUnit.MINUTES); + break; + case SmsConstants.SMS_CONFIG_TYPE_LOWER_ORDER_SWITCH: // 支付成功短信提醒 pay_price order_id + push(phone, msgTempId, pram); + break; + case SmsConstants.SMS_CONFIG_TYPE_DELIVER_GOODS_SWITCH: // 发货短信提醒 nickname store_name + push(phone, msgTempId, pram); + break; + case SmsConstants.SMS_CONFIG_TYPE_CONFIRM_TAKE_OVER_SWITCH: // 确认收货短信提醒 order_id store_name + push(phone, SmsConstants.SMS_CONFIG_CONFIRM_TAKE_OVER_SWITCH, + SmsConstants.SMS_CONFIG_CONFIRM_TAKE_OVER_SWITCH_TEMP_ID, pram); + break; + case SmsConstants.SMS_CONFIG_TYPE_ADMIN_LOWER_ORDER_SWITCH: // 用户下单管理员短信提醒 admin_name order_id + push(phone, msgTempId, pram); + break; + case SmsConstants.SMS_CONFIG_TYPE_ADMIN_PAY_SUCCESS_SWITCH: // 支付成功管理员短信提醒 admin_name order_id + push(phone, msgTempId, pram); + break; + case SmsConstants.SMS_CONFIG_TYPE_ADMIN_REFUND_SWITCH: // 用户确认收货管理员短信提醒 admin_name order_id + push(phone, msgTempId, pram); + break; + case SmsConstants.SMS_CONFIG_TYPE_ADMIN_CONFIRM_TAKE_OVER_SWITCH: // 用户发起退款管理员短信提醒 admin_name order_id + push(phone, msgTempId, pram); + break; + case SmsConstants.SMS_CONFIG_TYPE_PRICE_REVISION_SWITCH: // 改价短信提醒 order_id pay_price + push(phone, SmsConstants.SMS_CONFIG_PRICE_REVISION_SWITCH, + SmsConstants.SMS_CONFIG_PRICE_REVISION_SWITCH_TEMP_ID, pram); + break; + } + return true; + } + + /** + * 发送短信 + * @param sendSmsVo 短信参数 + */ + private Boolean sendCode(SendSmsVo sendSmsVo) { + String result; + try { + String token = onePassUtil.getToken(); + HashMap header = onePassUtil.getCommonHeader(token); + + Map map = (Map) JSONObject.parseObject(sendSmsVo.getParam()); + MultiValueMap param = new LinkedMultiValueMap<>(); + param.add("phone", sendSmsVo.getMobile()); + param.add("temp_id", sendSmsVo.getTemplate()); + map.entrySet().stream().forEach(entry -> param.add(StrUtil.format(SmsConstants.SMS_COMMON_PARAM_FORMAT, entry.getKey()), entry.getValue())); + System.out.println("============发送短信=========header = " + header); + result = restTemplateUtil.postFromUrlencoded(OnePassConstants.ONE_PASS_API_URL + OnePassConstants.ONE_PASS_API_SEND_URI, param, header); + checkResult(result); + } catch (Exception e) { + //接口请求异常,需要重新发送 + e.printStackTrace(); + logger.error(e.getMessage()); + return false; + } + return true; + } + + /** + * 组装发送对象 + * + * @param phone 手机号 + * @param msgTempId 模板id + * @param mapPram 参数map + */ + private Boolean push(String phone, Integer msgTempId, HashMap mapPram) { + if (StrUtil.isBlank(phone) || msgTempId <= 0) { + return false; + } + OnePassLoginVo loginVo = onePassUtil.getLoginVo(); + SendSmsVo smsVo = new SendSmsVo(); + smsVo.setUid(loginVo.getAccount()); + smsVo.setToken(loginVo.getSecret()); + smsVo.setMobile(phone); + smsVo.setTemplate(msgTempId); + smsVo.setParam(JSONObject.toJSONString(mapPram)); + return sendCode(smsVo); + } + + /** + * 添加待发送消息到redis队列 + * + * @param phone 手机号 + * @param tempKey 模板key + * @param msgTempId 模板id + * @param mapPram 参数map + */ + private Boolean push(String phone, String tempKey, Integer msgTempId, HashMap mapPram) { + if (StrUtil.isBlank(phone) || StrUtil.isBlank(tempKey) || msgTempId <= 0) { + return false; + } + OnePassLoginVo loginVo = onePassUtil.getLoginVo(); + SendSmsVo smsVo = new SendSmsVo(); + smsVo.setUid(loginVo.getAccount()); + smsVo.setToken(loginVo.getSecret()); + smsVo.setMobile(phone); + smsVo.setTemplate(msgTempId); + smsVo.setParam(JSONObject.toJSONString(mapPram)); + return sendCode(smsVo); + } + + /** + * 修改签名 + */ + @Override + public Boolean modifySign(SmsModifySignRequest request) { + ValidateFormUtil.isPhoneException(request.getPhone()); + String token = onePassUtil.getToken(); + HashMap header = onePassUtil.getCommonHeader(token); + + MultiValueMap map = new LinkedMultiValueMap<>(); + map.add("sign", request.getSign()); + map.add("phone", request.getPhone()); + map.add("verify_code", request.getCode()); + + onePassUtil.postFrom(OnePassConstants.ONE_PASS_API_URL + OnePassConstants.ONE_PASS_SMS_MODIFY_URI, map, header); + return Boolean.TRUE; + } + + /** + * 短信模板 + */ + @Override + public MyRecord temps(PageParamRequest pageParamRequest) { + String token = onePassUtil.getToken(); + HashMap header = onePassUtil.getCommonHeader(token); + MultiValueMap param = new LinkedMultiValueMap<>(); + param.add("page", pageParamRequest.getPage()); + param.add("limit", pageParamRequest.getLimit()); + param.add("temp_type", 0);// 查询所有类型模板 + JSONObject post = postFrom(OnePassConstants.ONE_PASS_API_URL + OnePassConstants.ONE_PASS_TEMP_LIST_URI, param, header); + JSONObject jsonObject = post.getJSONObject("data"); + JSONArray jsonArray = jsonObject.getJSONArray("data"); + MyRecord myRecord = new MyRecord(); + if (CollUtil.isEmpty(jsonArray)) { + return myRecord.set("count", 0); + } + List recordList = jsonArray.stream().map(i -> { + MyRecord record = new MyRecord(); + record.setColums((JSONObject) i); + switch (record.getInt("temp_type")) { + case 1: + record.set("type", "验证码"); + break; + case 2: + record.set("type", "通知"); + break; + case 3: + record.set("type", "营销短信"); + break; + } + return record; + }).collect(Collectors.toList()); + + myRecord.set("count", recordList.size()); + myRecord.set("data", recordList); + return myRecord; + } + + /** + * 申请模板消息 + */ + @Override + public Boolean applyTempMessage(SmsApplyTempRequest request) { + String token = onePassUtil.getToken(); + HashMap header = onePassUtil.getCommonHeader(token); + MultiValueMap param = new LinkedMultiValueMap<>(); + param.add("title", request.getTitle()); + param.add("content", request.getContent()); + param.add("type", request.getType()); + + onePassUtil.postFrom(OnePassConstants.ONE_PASS_API_URL + OnePassConstants.ONE_PASS_TEMP_APPLY_URI, param, header); + return Boolean.TRUE; + } + + /** + * 模板申请记录 + * + * @param type (1=验证码 2=通知 3=推广) + */ + @Override + public MyRecord applys(Integer type, PageParamRequest pageParamRequest) { + String token = onePassUtil.getToken(); + HashMap header = onePassUtil.getCommonHeader(token); + MultiValueMap param = new LinkedMultiValueMap<>(); + param.add("page", pageParamRequest.getPage()); + param.add("limit", pageParamRequest.getLimit()); + if (ObjectUtil.isNotNull(type)) { + param.add("temp_type", type); + } + + JSONObject post = onePassUtil.postFrom(OnePassConstants.ONE_PASS_API_URL + OnePassConstants.ONE_PASS_APPLYS_LIST_URI, param, header); + JSONObject jsonObject = post.getJSONObject("data"); + JSONArray jsonArray = jsonObject.getJSONArray("data"); + MyRecord myRecord = new MyRecord(); + if (CollUtil.isEmpty(jsonArray)) { + return myRecord.set("count", 0); + } + List recordList = jsonArray.stream().map(i -> { + MyRecord record = new MyRecord(); + record.setColums((JSONObject) i); + switch (record.getInt("temp_type")) { + case 1: + record.set("type", "验证码"); + break; + case 2: + record.set("type", "通知"); + break; + case 3: + record.set("type", "营销短信"); + break; + } + return record; + }).collect(Collectors.toList()); + + myRecord.set("count", recordList.size()); + myRecord.set("data", recordList); + return myRecord; + } + + /** + * 发送公共验证码 + * + * @param phone 手机号 + * @return Boolean + * 1.校验后台是否配置一号通 + * 2.一号通是否剩余短信条数 + * 3.发送短信 + */ + @Override + public Boolean sendCommonCode(String phone) { + ValidateFormUtil.isPhone(phone,"手机号码错误"); + Boolean checkAccount = onePassService.checkAccount(); + if (!checkAccount) { + throw new CrmebException("发送短信请先登录一号通账号"); + } + JSONObject info = onePassService.info(); + JSONObject smsObject = info.getJSONObject("sms"); + Integer open = smsObject.getInteger("open"); + if (!open.equals(1)) { + throw new CrmebException("发送短信请先开通一号通账号服务"); + } + if (smsObject.getInteger("num") <= 0) { + throw new CrmebException("一号通账号服务余量不足"); + } + + return sendSms(phone, SmsConstants.SMS_CONFIG_TYPE_VERIFICATION_CODE, null); + } + + /** + * 发送支付成功短信 + * + * @param phone 手机号 + * @param orderNo 订单编号 + * @param payPrice 支付金额 + * @param msgTempId 短信模板id + * @return Boolean + */ + @Override + public Boolean sendPaySuccess(String phone, String orderNo, BigDecimal payPrice, Integer msgTempId) { + HashMap map = CollUtil.newHashMap(); + map.put("pay_price", payPrice); + map.put("order_id", orderNo); + return sendMessages(phone, SmsConstants.SMS_CONFIG_TYPE_LOWER_ORDER_SWITCH, msgTempId, map); + } + + /** + * 发送管理员下单短信提醒 + * + * @param phone 手机号 + * @param orderNo 订单编号 + * @param realName 管理员名称 + * @param msgTempId 短信模板id + * @return Boolean + */ + @Override + public Boolean sendCreateOrderNotice(String phone, String orderNo, String realName, Integer msgTempId) { + HashMap map = CollUtil.newHashMap(); + map.put("admin_name", realName); + map.put("order_id", orderNo); + return sendMessages(phone, SmsConstants.SMS_CONFIG_TYPE_ADMIN_LOWER_ORDER_SWITCH, msgTempId, map); + } + + /** + * 发送订单支付成功管理员提醒短信 + * + * @param phone 手机号 + * @param orderNo 订单编号 + * @param realName 管理员名称 + * @param msgTempId 短信模板id + * @return Boolean + */ + @Override + public Boolean sendOrderPaySuccessNotice(String phone, String orderNo, String realName, Integer msgTempId) { + HashMap map = CollUtil.newHashMap(); + map.put("admin_name", realName); + map.put("order_id", orderNo); + return sendMessages(phone, SmsConstants.SMS_CONFIG_TYPE_ADMIN_PAY_SUCCESS_SWITCH, msgTempId, map); + } + + /** + * 发送用户退款管理员提醒短信 + * + * @param phone 手机号 + * @param orderNo 订单编号 + * @param realName 管理员名称 + * @param msgTempId 短信模板id + * @return Boolean + */ + @Override + public Boolean sendOrderRefundApplyNotice(String phone, String orderNo, String realName, Integer msgTempId) { + HashMap map = CollUtil.newHashMap(); + map.put("admin_name", realName); + map.put("order_id", orderNo); + return sendMessages(phone, SmsConstants.SMS_CONFIG_TYPE_ADMIN_CONFIRM_TAKE_OVER_SWITCH, msgTempId, map); + } + + /** + * 发送用户确认收货管理员提醒短信 + * @param phone 手机号 + * @param orderNo 订单编号 + * @param realName 管理员名称 + * @param msgTempId 短信模板id + */ + @Override + public Boolean sendOrderReceiptNotice(String phone, String orderNo, String realName, Integer msgTempId) { + HashMap map = CollUtil.newHashMap(); + map.put("admin_name", realName); + map.put("order_id", orderNo); + return sendMessages(phone, SmsConstants.SMS_CONFIG_TYPE_ADMIN_REFUND_SWITCH, msgTempId, map); + } + + /** + * 发送订单改价提醒短信 + * + * @param phone 手机号 + * @param orderNo 订单编号 + * @param price 修改后的支付金额 + * @param msgTempId 短信模板id + * @return Boolean + */ + @Override + public Boolean sendOrderEditPriceNotice(String phone, String orderNo, BigDecimal price, Integer msgTempId) { + HashMap map = CollUtil.newHashMap(); + map.put("order_id", orderNo); + map.put("pay_price", price); + return sendMessages(phone, SmsConstants.SMS_CONFIG_TYPE_PRICE_REVISION_SWITCH, msgTempId, map); + } + + /** + * 发送订单发货提醒短信 + * + * @param phone 手机号 + * @param nickName 用户昵称 + * @param storeName 商品名称 + * @param orderNo 订单编号 + * @param msgTempId 短信模板id + */ + @Override + public Boolean sendOrderDeliverNotice(String phone, String nickName, String storeName, String orderNo, Integer msgTempId) { + HashMap map = CollUtil.newHashMap(); + map.put("nickname", nickName); + map.put("store_name", storeName); + map.put("order_id", orderNo); + return sendMessages(phone, SmsConstants.SMS_CONFIG_TYPE_DELIVER_GOODS_SWITCH, msgTempId, map); + } + + /** + * post请求from表单模式提交 + */ + private JSONObject postFrom(String url, MultiValueMap param, Map header) { + String result = restTemplateUtil.postFromUrlencoded(url, param, header); + return checkResult(result); + } + + /** + * 检测结构请求返回的数据 + * + * @param result 接口返回的结果 + * @return JSONObject + * @author Mr.Zhang + * @since 2020-04-16 + */ + private JSONObject checkResult(String result) { + if (StrUtil.isBlank(result)) { + throw new CrmebException("短信平台接口异常,没任何数据返回!"); + } + + JSONObject jsonObject; + try { + jsonObject = JSONObject.parseObject(result); + } catch (Exception e) { + throw new CrmebException("短信平台接口异常!"); + } + if (SmsConstants.SMS_ERROR_CODE.equals(jsonObject.getInteger("status"))) { + throw new CrmebException("短信平台接口" + jsonObject.getString("msg")); + } + return jsonObject; + } + + /** + * 发送短信 + * 验证码特殊处理其他的参数自行根据要求处理 + * 参数处理逻辑 {code:value,code1:value1} + * + * @param phone String 手机号码 + * @return boolean + */ + private Boolean sendSms(String phone, Integer tag, HashMap pram) { + SendSmsVo sendSmsVo = new SendSmsVo(); + sendSmsVo.setMobile(phone); + if (tag.equals(SmsConstants.SMS_CONFIG_TYPE_VERIFICATION_CODE)) {// 验证码 特殊处理 code + //获取短信验证码过期时间 + String codeExpireStr = systemConfigService.getValueByKey(Constants.CONFIG_KEY_SMS_CODE_EXPIRE); + if (StrUtil.isBlank(codeExpireStr) || Integer.parseInt(codeExpireStr) == 0) { + codeExpireStr = Constants.NUM_FIVE + "";// 默认5分钟过期 + } + Integer code = CrmebUtil.randomCount(111111, 999999); + HashMap justPram = new HashMap<>(); + justPram.put("code", code); + justPram.put("time", codeExpireStr); + + sendSmsVo.setTemplate(SmsConstants.SMS_CONFIG_VERIFICATION_CODE_TEMP_ID); + sendSmsVo.setContent(JSONObject.toJSONString(justPram)); + Boolean aBoolean = commonSendSms(sendSmsVo); + if (!aBoolean) { + throw new CrmebException("发送短信失败,请联系后台管理员"); + } + // 将验证码存入redis + redisUtil.set(userService.getValidateCodeRedisKey(phone), code, Long.valueOf(codeExpireStr), TimeUnit.MINUTES); + return aBoolean; + } + // 以下部分实时性不高暂时还是使用队列发送 + sendSmsVo.setContent(JSONObject.toJSONString(pram)); + switch (tag) { + case SmsConstants.SMS_CONFIG_TYPE_LOWER_ORDER_SWITCH: // 支付成功短信提醒 pay_price order_id + sendSmsVo.setTemplate(SmsConstants.SMS_CONFIG_LOWER_ORDER_SWITCH_TEMP_ID); + break; + case SmsConstants.SMS_CONFIG_TYPE_DELIVER_GOODS_SWITCH: // 发货短信提醒 nickname store_name + sendSmsVo.setTemplate(SmsConstants.SMS_CONFIG_DELIVER_GOODS_SWITCH_TEMP_ID); + break; + case SmsConstants.SMS_CONFIG_TYPE_CONFIRM_TAKE_OVER_SWITCH: // 确认收货短信提醒 order_id store_name + sendSmsVo.setTemplate(SmsConstants.SMS_CONFIG_CONFIRM_TAKE_OVER_SWITCH_TEMP_ID); + break; + case SmsConstants.SMS_CONFIG_TYPE_ADMIN_LOWER_ORDER_SWITCH: // 用户下单管理员短信提醒 admin_name order_id + sendSmsVo.setTemplate(SmsConstants.SMS_CONFIG_ADMIN_LOWER_ORDER_SWITCH_TEMP_ID); + break; + case SmsConstants.SMS_CONFIG_TYPE_ADMIN_PAY_SUCCESS_SWITCH: // 支付成功管理员短信提醒 admin_name order_id + sendSmsVo.setTemplate(SmsConstants.SMS_CONFIG_ADMIN_PAY_SUCCESS_SWITCH_TEMP_ID); + break; + case SmsConstants.SMS_CONFIG_TYPE_ADMIN_REFUND_SWITCH: // 用户确认收货管理员短信提醒 admin_name order_id + sendSmsVo.setTemplate(SmsConstants.SMS_CONFIG_ADMIN_REFUND_SWITCH_TEMP_ID); + break; + case SmsConstants.SMS_CONFIG_TYPE_ADMIN_CONFIRM_TAKE_OVER_SWITCH: // 用户发起退款管理员短信提醒 admin_name order_id + sendSmsVo.setTemplate(SmsConstants.SMS_CONFIG_ADMIN_CONFIRM_TAKE_OVER_SWITCH_TEMP_ID); + break; + case SmsConstants.SMS_CONFIG_TYPE_PRICE_REVISION_SWITCH: // 改价短信提醒 order_id pay_price + sendSmsVo.setTemplate(SmsConstants.SMS_CONFIG_PRICE_REVISION_SWITCH_TEMP_ID); + break; + case SmsConstants.SMS_CONFIG_TYPE_ORDER_PAY_FALSE: // 订单未支付 order_id + sendSmsVo.setTemplate(SmsConstants.SMS_CONFIG_ORDER_PAY_FALSE_TEMP_ID); + break; + } + return commonSendSms(sendSmsVo); + } + + /** + * 公共发送短信 + * + * @param sendSmsVo 发送短信对象 + * @return 是否发送成功 + */ + private Boolean commonSendSms(SendSmsVo sendSmsVo) { + try { + String result; + String token = onePassUtil.getToken(); + HashMap header = onePassUtil.getCommonHeader(token); + + Map map = (Map) JSONObject.parseObject(sendSmsVo.getContent()); + MultiValueMap param = new LinkedMultiValueMap<>(); + param.add("phone", sendSmsVo.getMobile()); + param.add("temp_id", sendSmsVo.getTemplate()); + + map.forEach((key, value) -> param.add(StrUtil.format(SmsConstants.SMS_COMMON_PARAM_FORMAT, key), value)); + logger.info("============发送短信=========header = " + header); + result = restTemplateUtil.postFromUrlencoded(OnePassConstants.ONE_PASS_API_URL + OnePassConstants.ONE_PASS_API_SEND_URI, param, header); + checkResult(result); + } catch (Exception e) { + e.printStackTrace(); + logger.error("发送短信失败:" + e.getMessage()); + return false; + } + return true; + } +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SmsTemplateServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SmsTemplateServiceImpl.java new file mode 100644 index 0000000..157ee56 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SmsTemplateServiceImpl.java @@ -0,0 +1,45 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.model.sms.SmsTemplate; +import com.zbkj.service.dao.SmsTemplateDao; +import com.zbkj.service.service.SmsTemplateService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * SmsTemplateServiceImpl 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class SmsTemplateServiceImpl extends ServiceImpl implements SmsTemplateService { + + @Resource + private SmsTemplateDao dao; + + /** + * 获取详情 + * @param id 模板id + * @return SmsTemplate + */ + @Override + public SmsTemplate getDetail(Integer id) { + SmsTemplate smsTemplate = getById(id); + if (ObjectUtil.isNull(smsTemplate)) { + throw new CrmebException("短信模板不存在"); + } + return smsTemplate; + } +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreBargainServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreBargainServiceImpl.java new file mode 100644 index 0000000..d778e50 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreBargainServiceImpl.java @@ -0,0 +1,925 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.request.*; +import com.zbkj.common.response.*; +import com.zbkj.common.vo.MyRecord; +import com.zbkj.common.constants.BargainConstants; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.constants.ProductConstants; +import com.zbkj.common.exception.CrmebException; +import com.github.pagehelper.Page; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.zbkj.common.utils.DateUtil; +import com.zbkj.common.utils.RedisUtil; +import com.zbkj.common.model.bargain.StoreBargain; +import com.zbkj.common.model.bargain.StoreBargainUser; +import com.zbkj.common.model.record.UserVisitRecord; +import com.zbkj.common.model.product.StoreProduct; +import com.zbkj.common.model.product.StoreProductAttr; +import com.zbkj.common.model.product.StoreProductAttrValue; +import com.zbkj.common.model.product.StoreProductDescription; +import com.zbkj.common.model.user.User; +import com.zbkj.service.dao.StoreBargainDao; +import com.zbkj.service.service.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.support.TransactionTemplate; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.HashMap; +import java.util.List; +import java.util.stream.Collectors; + +/** + * StoreBargainService 实现类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class StoreBargainServiceImpl extends ServiceImpl implements StoreBargainService { + + @Resource + private StoreBargainDao dao; + + @Autowired + private StoreBargainUserService storeBargainUserService; + + @Autowired + private StoreBargainUserHelpService storeBargainUserHelpService; + + @Autowired + private SystemAttachmentService systemAttachmentService; + + @Autowired + private StoreProductAttrService attrService; + + @Autowired + private StoreProductAttrValueService attrValueService; + + @Autowired + private StoreProductAttrResultService storeProductAttrResultService; + + @Autowired + private StoreProductDescriptionService storeProductDescriptionService; + + @Autowired + private UserService userService; + + @Autowired + private RedisUtil redisUtil; + + @Autowired + private StoreProductService storeProductService; + + @Autowired + private TransactionTemplate transactionTemplate; + + @Autowired + private UserVisitRecordService userVisitRecordService; + + private static final Logger logger = LoggerFactory.getLogger(StoreBargainServiceImpl.class); + + /** + * 列表 + * @param request 请求参数 + * @param pageParamRequest 分页类参数 + * @author HZW + * @since 2020-11-06 + * @return List + */ + @Override + public PageInfo getList(StoreBargainSearchRequest request, PageParamRequest pageParamRequest) { + Page storeBargainPage = PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(StoreBargain::getIsDel, false); + if (StrUtil.isNotEmpty(request.getKeywords())) { + lambdaQueryWrapper.and(i -> i.like(StoreBargain::getId, request.getKeywords()) + .or().like(StoreBargain::getStoreName, request.getKeywords()) + .or().like(StoreBargain::getTitle, request.getKeywords())); + } + if (ObjectUtil.isNotNull(request.getStatus())) { + lambdaQueryWrapper.eq(StoreBargain::getStatus, request.getStatus()); + } + lambdaQueryWrapper.orderByDesc(StoreBargain::getSort, StoreBargain::getId); + List storeBargainList = dao.selectList(lambdaQueryWrapper); + if (CollUtil.isEmpty(storeBargainList)) { + return CommonPage.copyPageInfo(storeBargainPage, CollUtil.newArrayList()); + } + // 1.砍价参与人数,2.帮忙砍价人数,3.砍价成功人数 + List storeProductResponses = CollUtil.newArrayList(); + for (StoreBargain storeBargain : storeBargainList) { + StoreBargainResponse storeBargainResponse = new StoreBargainResponse(); + BeanUtils.copyProperties(storeBargain, storeBargainResponse); + storeBargainResponse.setStartTime(DateUtil.timestamp2DateStr(storeBargain.getStartTime(), Constants.DATE_FORMAT_DATE)); + storeBargainResponse.setStopTime(DateUtil.timestamp2DateStr(storeBargain.getStopTime(), Constants.DATE_FORMAT_DATE)); + storeBargainResponse.setAddTime(DateUtil.timestamp2DateStr(storeBargain.getAddTime(), Constants.DATE_FORMAT)); + List bargainUserList = storeBargainUserService.getListByBargainId(storeBargain.getId()); + if (CollUtil.isEmpty(bargainUserList)) { + storeBargainResponse.setCountPeopleAll(0L); + storeBargainResponse.setCountPeopleHelp(0L); + storeBargainResponse.setCountPeopleSuccess(0L); + //限量剩余 + storeBargainResponse.setSurplusQuota(storeBargain.getQuota()); + storeProductResponses.add(storeBargainResponse); + continue ; + } + //砍价参与人数 + Integer countPeopleAll = bargainUserList.size(); + //砍价成功人数 + Long countPeopleSuccess = bargainUserList.stream() + .filter(o -> o.getStatus().equals(BargainConstants.BARGAIN_USER_STATUS_SUCCESS)).count(); + //帮忙砍价人数 + Long countPeopleHelp = storeBargainUserHelpService.getHelpCountByBargainId(storeBargain.getId()); + storeBargainResponse.setCountPeopleAll(countPeopleAll.longValue()); + storeBargainResponse.setCountPeopleHelp(countPeopleHelp); + storeBargainResponse.setCountPeopleSuccess(countPeopleSuccess); + //限量剩余 + storeBargainResponse.setSurplusQuota(storeBargain.getQuota()); + storeProductResponses.add(storeBargainResponse); + } + return CommonPage.copyPageInfo(storeBargainPage, storeProductResponses); + } + + /** + * 删除砍价商品 + * @param id 砍价商品id + * @return Boolean + */ + @Override + public boolean deleteById(Integer id) { + StoreBargain existBargain = getById(id); + long timeMillis = System.currentTimeMillis(); + if (existBargain.getStatus().equals(true) && existBargain.getStartTime() <= timeMillis && timeMillis <= existBargain.getStopTime()) { + throw new CrmebException("活动开启中,商品不支持删除"); + } + + StoreBargain storeBargain = new StoreBargain(); + storeBargain.setId(id).setIsDel(true); + + + List collect = CollUtil.newArrayList(); + List bargainUserList = storeBargainUserService.getListByBargainId(storeBargain.getId()); + collect = bargainUserList.stream().filter(e -> e.getStatus().equals(1)).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(collect)) { + collect.forEach(e -> e.setStatus(2)); + } + List finalCollect = collect; + + Boolean execute = transactionTemplate.execute(e -> { + dao.updateById(storeBargain); + if (CollUtil.isNotEmpty(finalCollect)) { + storeBargainUserService.updateBatchById(finalCollect); + } + return Boolean.TRUE; + }); + return execute; + } + + /** + * 新增砍价商品 + * @param request 砍价商品result + * @return 新增结果 + */ + @Override + public boolean saveBargain(StoreBargainRequest request) { + // 参数校验 + if (CollUtil.isEmpty(request.getAttrValue())) { + throw new CrmebException("请选择砍价商品的规格属性"); + } + StoreProductAttrValueAddRequest attrValueRequest = request.getAttrValue().get(0); + if (ObjectUtil.isNull(attrValueRequest.getQuota()) || attrValueRequest.getQuota() <= 0) { + throw new CrmebException("活动限购数量必须大于0"); + } + // 可砍价的金额 + BigDecimal tempPrice = attrValueRequest.getPrice().subtract(attrValueRequest.getMinPrice()); + // 砍价人数 * 0.01 = 每人砍1分总共钱数 + BigDecimal multiply = new BigDecimal(request.getPeopleNum()).multiply(new BigDecimal("0.01")); + if (tempPrice.compareTo(multiply) < 0) { + // 砍价起始金额 - 砍价最低价 >= 砍价人数 * 0.01 + throw new CrmebException("必须保证每个人最少砍1分钱"); + } + + StoreBargain bargain = new StoreBargain(); + BeanUtils.copyProperties(request, bargain); + bargain.setId(null); + // 头图、轮播图 + bargain.setImage(systemAttachmentService.clearPrefix(request.getImage())); + bargain.setImages(systemAttachmentService.clearPrefix(request.getImages())); + // 活动开始结束时间 + bargain.setStartTime(DateUtil.dateStr2Timestamp(request.getStartTime(), Constants.DATE_TIME_TYPE_BEGIN)); + bargain.setStopTime(DateUtil.dateStr2Timestamp(request.getStopTime(), Constants.DATE_TIME_TYPE_END)); + bargain.setAddTime(System.currentTimeMillis()); + // 砍价商品价格 + bargain.setPrice(attrValueRequest.getPrice()); + bargain.setMinPrice(attrValueRequest.getMinPrice()); + bargain.setCost(attrValueRequest.getCost()); + bargain.setStock(attrValueRequest.getStock()); + bargain.setQuota(attrValueRequest.getQuota()); + bargain.setIsDel(false); + bargain.setQuotaShow(bargain.getQuota()); + bargain.setSales(0); + + // 处理商品属性,给砍价商品一份单规格默认属性 + List addRequestList = request.getAttr(); + List attrList = addRequestList.stream().map(e -> { + StoreProductAttr attr = new StoreProductAttr(); + BeanUtils.copyProperties(e, attr); + attr.setType(Constants.PRODUCT_TYPE_BARGAIN); + return attr; + }).collect(Collectors.toList()); + + // 处理商品属性值,砍价商品只有一条属性值 + StoreProductAttrValue singleAttrValue = new StoreProductAttrValue(); + BeanUtils.copyProperties(attrValueRequest, singleAttrValue); + singleAttrValue.setType(ProductConstants.PRODUCT_TYPE_BARGAIN); + singleAttrValue.setImage(systemAttachmentService.clearPrefix(singleAttrValue.getImage())); + + // 处理富文本 + StoreProductDescription spd = new StoreProductDescription(); + spd.setDescription(request.getContent().length() > 0 ? systemAttachmentService.clearPrefix(request.getContent()) : ""); + spd.setType(Constants.PRODUCT_TYPE_BARGAIN); + + Boolean execute = transactionTemplate.execute(e -> { + save(bargain); + attrList.forEach(attr -> attr.setProductId(bargain.getId())); + singleAttrValue.setProductId(bargain.getId()); + attrService.saveBatch(attrList); + attrValueService.save(singleAttrValue); + + spd.setProductId(bargain.getId()); + storeProductDescriptionService.deleteByProductId(spd.getProductId(), ProductConstants.PRODUCT_TYPE_BARGAIN); + storeProductDescriptionService.save(spd); + + return Boolean.TRUE; + }); + + return execute; + } + + /** + * 编辑砍价商品 + * @param request 请求参数 + * @return Boolean + */ + @Override + public boolean updateBargain(StoreBargainRequest request) { + if (ObjectUtil.isNull(request.getId())) { + throw new CrmebException("砍价商品id不能为空"); + } + StoreBargain existBargain = getById(request.getId()); + if (ObjectUtil.isNull(existBargain) || existBargain.getIsDel()) { + throw new CrmebException("砍价商品不存在"); + } + long timeMillis = System.currentTimeMillis(); + if (existBargain.getStatus().equals(true) && existBargain.getStartTime() <= timeMillis && timeMillis <= existBargain.getStopTime()) { + throw new CrmebException("活动开启中,商品不支持修改"); + } + + if (CollUtil.isEmpty(request.getAttrValue())) { + throw new CrmebException("请选择砍价商品的规格属性"); + } + + StoreProductAttrValueAddRequest attrValueRequest = request.getAttrValue().get(0); + + // 可砍价的金额 + BigDecimal tempPrice =attrValueRequest.getPrice().subtract(attrValueRequest.getMinPrice()); + // 砍价人数 * 0.01 = 每人砍1分总共钱数 + BigDecimal multiply = new BigDecimal(request.getPeopleNum()).multiply(new BigDecimal("0.01")); + if (tempPrice.compareTo(multiply) < 0) { + // 砍价起始金额 - 砍价最低价 >= 砍价人数 * 0.01 + throw new CrmebException("必须保证每个人最少砍1分钱"); + } + + StoreBargain bargain = new StoreBargain(); + BeanUtils.copyProperties(request, bargain); + // 头图、轮播图 + bargain.setImage(systemAttachmentService.clearPrefix(request.getImage())); + bargain.setImages(systemAttachmentService.clearPrefix(request.getImages())); + // 活动开始结束时间 + bargain.setStartTime(DateUtil.dateStr2Timestamp(request.getStartTime(), Constants.DATE_TIME_TYPE_BEGIN)); + bargain.setStopTime(DateUtil.dateStr2Timestamp(request.getStopTime(), Constants.DATE_TIME_TYPE_END)); + + // 砍价商品价格 + bargain.setPrice(attrValueRequest.getPrice()); + bargain.setMinPrice(attrValueRequest.getMinPrice()); + bargain.setCost(attrValueRequest.getCost()); + bargain.setStock(attrValueRequest.getStock()); + bargain.setQuota(attrValueRequest.getQuota()); + bargain.setQuotaShow(attrValueRequest.getQuota()); + int saveCount = dao.updateById(bargain); + if (saveCount <= 0) { + throw new CrmebException("编辑砍价商品失败"); + } + + List addRequestList = request.getAttr(); + List attrAddList = CollUtil.newArrayList(); + List attrUpdateList = CollUtil.newArrayList(); + addRequestList.forEach(e -> { + StoreProductAttr attr = new StoreProductAttr(); + BeanUtils.copyProperties(e, attr); + if (ObjectUtil.isNull(attr.getId())) { + attr.setProductId(bargain.getId()); + attr.setType(Constants.PRODUCT_TYPE_BARGAIN); + attrAddList.add(attr); + } else { + attr.setProductId(bargain.getId()); + attr.setIsDel(false); + attrUpdateList.add(attr); + } + }); + + // attrValue部分 + StoreProductAttrValue attrValue = new StoreProductAttrValue(); + BeanUtils.copyProperties(attrValueRequest, attrValue); + attrValue.setSuk(attrValueRequest.getSuk()); + attrValue.setImage(systemAttachmentService.clearPrefix(attrValueRequest.getImage())); + if (ObjectUtil.isNull(attrValue.getId())) { + attrValue.setProductId(bargain.getId()); + attrValue.setQuota(attrValueRequest.getQuota()); + attrValue.setQuotaShow(attrValueRequest.getQuota()); + attrValue.setType(Constants.PRODUCT_TYPE_BARGAIN); + } else { + attrValue.setIsDel(false); + } + + // 处理富文本 + StoreProductDescription spd = new StoreProductDescription(); + spd.setDescription(request.getContent().length() > 0 ? systemAttachmentService.clearPrefix(request.getContent()) : ""); + spd.setType(Constants.PRODUCT_TYPE_BARGAIN); + spd.setProductId(bargain.getId()); + + Boolean execute = transactionTemplate.execute(e -> { + dao.updateById(bargain); + + // 先删除原用attr+value + attrService.deleteByProductIdAndType(bargain.getId(), Constants.PRODUCT_TYPE_BARGAIN); + attrValueService.deleteByProductIdAndType(bargain.getId(), Constants.PRODUCT_TYPE_BARGAIN); + + if (CollUtil.isNotEmpty(attrAddList)) { + attrService.saveBatch(attrAddList); + } + if (CollUtil.isNotEmpty(attrUpdateList)) { + attrService.saveOrUpdateBatch(attrUpdateList); + } + + if (ObjectUtil.isNotNull(attrValue.getId())) { + attrValueService.updateById(attrValue); + } else { + attrValueService.save(attrValue); + } + + storeProductDescriptionService.deleteByProductId(bargain.getId(), Constants.PRODUCT_TYPE_BARGAIN); + storeProductDescriptionService.save(spd); + return Boolean.TRUE; + }); + + return execute; + } + + /** + * 更新砍价商品状态 + * @param id 砍价商品id + * @param status 砍价商品状态 + * @return Boolean + */ + @Override + public boolean updateBargainStatus(Integer id, boolean status) { + StoreBargain temp = getById(id); + if (ObjectUtil.isNull(temp) || temp.getIsDel()) { + throw new CrmebException("砍价商品不存在"); + } + if (status) { + // 判断商品是否存在 + StoreProduct product = storeProductService.getById(temp.getProductId()); + if (ObjectUtil.isNull(product)) { + throw new CrmebException("关联的商品已删除,无法开启活动"); + } + } + + StoreBargain storeBargain = new StoreBargain(); + storeBargain.setId(id).setStatus(status); + return dao.updateById(storeBargain) > 0; + } + + /** + * 获取砍价商品详情 + * @param bargainId 砍价商品id + * @return StoreProductResponse + */ + @Override + public StoreProductInfoResponse getAdminDetail(Integer bargainId) { + StoreBargain storeBargain = dao.selectById(bargainId); + if (ObjectUtil.isNull(storeBargain) || storeBargain.getIsDel()) { + throw new CrmebException("未找到对应砍价商品信息"); + } + StoreProductInfoResponse storeProductResponse = new StoreProductInfoResponse(); + BeanUtils.copyProperties(storeBargain, storeProductResponse); + storeProductResponse.setStatus(storeBargain.getStatus().equals(true) ? 1 : 0); + + // 查询attr + List attrs = attrService.getListByProductIdAndType(storeBargain.getId(), ProductConstants.PRODUCT_TYPE_BARGAIN); + storeProductResponse.setAttr(attrs); + storeProductResponse.setSliderImage(String.join(",",storeBargain.getImages())); + + boolean specType = false; + if (attrs.size() > 1) { + specType = true; + } + storeProductResponse.setSpecType(specType); + + // 注意:数据瓶装步骤:分别查询砍价和商品本身信息组装sku信息之后,再对比sku属性是否相等来赋值是否砍价sku信息 + List bargainAttrValueList = attrValueService.getListByProductIdAndType(bargainId, ProductConstants.PRODUCT_TYPE_BARGAIN); + // 查询主商品sku + List attrValueList = attrValueService.getListByProductIdAndType(storeBargain.getProductId(), Constants.PRODUCT_TYPE_NORMAL); + + List valueResponseList = attrValueList.stream().map(e -> { + AttrValueResponse valueResponse = new AttrValueResponse(); + Integer id = 0; + for (StoreProductAttrValue value : bargainAttrValueList) { + if (value.getSuk().equals(e.getSuk())) { + id = value.getId(); + BeanUtils.copyProperties(value, valueResponse); + break; + } + } + if (id.equals(0)) { + BeanUtils.copyProperties(e, valueResponse); + valueResponse.setId(null); + } else { + valueResponse.setId(id); + } + valueResponse.setMinPrice(storeBargain.getMinPrice()); + return valueResponse; + }).collect(Collectors.toList()); + storeProductResponse.setAttrValue(valueResponseList); + + StoreProductDescription sd = storeProductDescriptionService.getByProductIdAndType(bargainId, Constants.PRODUCT_TYPE_BARGAIN); + if(ObjectUtil.isNotNull(sd)){ + storeProductResponse.setContent(ObjectUtil.isNull(sd.getDescription()) ? "" : sd.getDescription()); + } + return storeProductResponse; + } + + /** + * h5 获取砍价商品列表 + * @param pageParamRequest 分页参数 + * @return PageInfo + */ + @Override + public PageInfo getH5List(PageParamRequest pageParamRequest) { + Page storeBargainPage = PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.select(StoreBargain::getId, StoreBargain::getProductId, StoreBargain::getTitle, StoreBargain::getImage, + StoreBargain::getStartTime, StoreBargain::getStopTime, StoreBargain::getMinPrice, StoreBargain::getQuota); + lqw.eq(StoreBargain::getStatus, true); + lqw.eq(StoreBargain::getIsDel, false); + long timeMillis = System.currentTimeMillis(); + lqw.le(StoreBargain::getStartTime, timeMillis); + lqw.ge(StoreBargain::getStopTime, timeMillis); + lqw.orderByDesc(StoreBargain::getSort, StoreBargain::getId); + List storeBargains = dao.selectList(lqw); + if (CollUtil.isEmpty(storeBargains)) { + return CommonPage.copyPageInfo(storeBargainPage, CollUtil.newArrayList()); + } + List bargainResponseList = storeBargains.stream().map(bargain -> { + StoreBargainDetailResponse storeBargainResponse = new StoreBargainDetailResponse(); + BeanUtils.copyProperties(bargain, storeBargainResponse); + return storeBargainResponse; + }).collect(Collectors.toList()); + return CommonPage.copyPageInfo(storeBargainPage, bargainResponseList); + } + + /** + * H5 砍价商品详情 + * @param id 砍价商品id + */ + @Override + public BargainDetailH5Response getH5Detail(Integer id) { + StoreBargain storeBargain = dao.selectById(id); + if (ObjectUtil.isNull(storeBargain) || storeBargain.getIsDel()) { + throw new CrmebException("未找到对应砍价商品信息"); + } + if (!storeBargain.getStatus()) { + throw new CrmebException("砍价商品已下架"); + } + BargainDetailH5Response detailH5Response = new BargainDetailH5Response(); + BeanUtils.copyProperties(storeBargain, detailH5Response); + StoreProduct storeProduct = storeProductService.getById(storeBargain.getProductId()); + if (storeProduct.getIsDel()) { + detailH5Response.setMasterStatus("delete"); + } else if (!storeProduct.getIsShow()) { + detailH5Response.setMasterStatus("soldOut"); + } else if (storeProduct.getStock() <= 0) { + detailH5Response.setMasterStatus("sellOut"); + } else { + detailH5Response.setMasterStatus("normal"); + } + + List storeProductAttrValuesBargain = attrValueService.getListByProductIdAndType(id, ProductConstants.PRODUCT_TYPE_BARGAIN); + if (CollUtil.isEmpty(storeProductAttrValuesBargain)) { + throw new CrmebException("砍价商品规格属性值未找到"); + } + StoreProductAttrValue productAttrValue = storeProductAttrValuesBargain.get(0); + detailH5Response.setAttrValueId(productAttrValue.getId()); + detailH5Response.setSku(productAttrValue.getSuk()); + + StoreProductDescription sd = storeProductDescriptionService.getOne( + new LambdaQueryWrapper() + .eq(StoreProductDescription::getProductId, id) + .eq(StoreProductDescription::getType, ProductConstants.PRODUCT_TYPE_BARGAIN)); + if (ObjectUtil.isNotNull(sd)) { + detailH5Response.setContent(ObjectUtil.isNull(sd.getDescription()) ? "" : sd.getDescription()); + } + // 保存用户访问记录 + UserVisitRecord visitRecord = new UserVisitRecord(); + visitRecord.setDate(cn.hutool.core.date.DateUtil.date().toString("yyyy-MM-dd")); + visitRecord.setUid(userService.getUserId()); + visitRecord.setVisitType(3); + userVisitRecordService.save(visitRecord); + return detailH5Response; + } + + /** + * 获取当前时间段的砍价商品 + * @param productId 砍价商品id + * @return List + */ + @Override + public List getCurrentBargainByProductId(Integer productId) { + long timeMillis = System.currentTimeMillis(); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(StoreBargain::getProductId, productId); + lqw.eq(StoreBargain::getIsDel, false); + lqw.eq(StoreBargain::getStatus,true); + lqw.le(StoreBargain::getStartTime, timeMillis); + lqw.ge(StoreBargain::getStopTime, timeMillis); + lqw.orderByDesc(StoreBargain::getSort, StoreBargain::getId); + return dao.selectList(lqw); + } + + /** + * 创建砍价活动 + * @param request 请求参数 + * @return MyRecord + */ + @Override + public MyRecord start(BargainFrontRequest request) { + StoreBargain storeBargain = dao.selectById(request.getBargainId()); + if (ObjectUtil.isNull(storeBargain) || storeBargain.getIsDel()) { + throw new CrmebException("对应的砍价商品不存在"); + } + if (!storeBargain.getStatus()) { + throw new CrmebException("砍价商品已下架"); + } + if (storeBargain.getQuota() <= 0 || storeBargain.getStock() <= 0) { + throw new CrmebException("砍价商品已售罄"); + } + long currentTimeMillis = System.currentTimeMillis(); + if (currentTimeMillis > storeBargain.getStopTime()) { + throw new CrmebException("砍价活动已结束"); + } + User user = userService.getInfoException(); + + // 判断是否有正在砍价商品 + StoreBargainUser spavBargainUser = new StoreBargainUser(); + spavBargainUser.setIsDel(false).setBargainId(request.getBargainId()).setUid(user.getUid()); + List historyList = storeBargainUserService.getByEntity(spavBargainUser); + if (CollUtil.isNotEmpty(historyList)) { + List collect = historyList.stream().filter(i -> i.getStatus().equals(BargainConstants.BARGAIN_USER_STATUS_PARTICIPATE)).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(collect)) { + throw new CrmebException("请先完成当前砍价活动"); + } + // 判断是否达到参与砍价活动上限 + if (historyList.size() >= storeBargain.getNum()) { + throw new CrmebException("您已达到当前砍价活动上限"); + } + } + + StoreBargainUser storeBargainUser = new StoreBargainUser(); + storeBargainUser.setUid(user.getUid()); + storeBargainUser.setBargainId(request.getBargainId()); + storeBargainUser.setBargainPriceMin(storeBargain.getMinPrice()); + storeBargainUser.setBargainPrice(storeBargain.getPrice()); + storeBargainUser.setPrice(BigDecimal.ZERO); + storeBargainUser.setAddTime(System.currentTimeMillis()); + storeBargainUser.setStatus(BargainConstants.BARGAIN_USER_STATUS_PARTICIPATE); + boolean save = storeBargainUserService.save(storeBargainUser); + if (!save) { + throw new CrmebException("参与砍价失败"); + } + MyRecord record = new MyRecord(); + record.set("storeBargainUserId", storeBargainUser.getId()); + return record; + } + + /** + * 后台任务批量操作库存 + */ + @Override + public void consumeProductStock() { + String redisKey = Constants.PRODUCT_BARGAIN_STOCK_UPDATE; + Long size = redisUtil.getListSize(redisKey); + logger.info("StoreBargainServiceImpl.consumeProductStock | size:" + size); + if (size < 1) { + return; + } + for (int i = 0; i < size; i++) { + //如果10秒钟拿不到一个数据,那么退出循环 + Object data = redisUtil.getRightPop(redisKey, 10L); + if (ObjectUtil.isNull(data)) { + continue; + } + try{ + StoreProductStockRequest storeProductStockRequest = + com.alibaba.fastjson.JSONObject.toJavaObject(com.alibaba.fastjson.JSONObject.parseObject(data.toString()), StoreProductStockRequest.class); + boolean result = doProductStock(storeProductStockRequest); + if(!result){ + redisUtil.lPush(redisKey, data); + } + }catch (Exception e){ + redisUtil.lPush(redisKey, data); + } + } + + } + + /** + * 砍价活动结束后处理 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void stopAfterChange() { + // 查询活动状态为开启,结束时间小于当前时间的数据 + List storeBargainList = getByStatusAndGtStopTime(); + logger.info("StoreBargainServiceImpl.stopAfterChange | size:" + storeBargainList.size()); + if (CollUtil.isEmpty(storeBargainList)) { + return; + } + List bargainUserList = CollUtil.newArrayList(); + for (StoreBargain bargain : storeBargainList) { + // 查询用户参与活动表中状态为进行中的数据 + StoreBargainUser spavBargainUser = new StoreBargainUser(); + spavBargainUser.setBargainId(bargain.getId()); + spavBargainUser.setStatus(BargainConstants.BARGAIN_USER_STATUS_PARTICIPATE); + spavBargainUser.setIsDel(false); + List bargainUsers = storeBargainUserService.getByEntity(spavBargainUser); + if (CollUtil.isEmpty(bargainUsers)) { + continue ; + } + for (StoreBargainUser bargainUser : bargainUsers) { + bargainUser.setStatus(BargainConstants.BARGAIN_USER_STATUS_FAIL); + } + bargainUserList.addAll(bargainUsers); + } + boolean b = storeBargainUserService.updateBatchById(bargainUserList, 100); + if (!b) { + logger.error("砍价活动结束后更新用户状态定时任务——————失败"); + throw new CrmebException("砍价活动结束后更新用户状态失败"); + } + } + + /** + * 商品是否存在砍价活动 + * @param productId 商品编号 + * @return Boolean + */ + @Override + public Boolean isExistActivity(Integer productId) { + // 查询商品关联的砍价商品 + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(StoreBargain::getProductId, productId); + List bargainList = dao.selectList(lqw); + if (CollUtil.isEmpty(bargainList)) { + return false; + } + // 判断关联的商品是否处于活动开启状态 + List list = bargainList.stream().filter(i -> i.getStatus().equals(true)).collect(Collectors.toList()); + return CollUtil.isNotEmpty(list); + } + + /** + * 查询带异常 + * @param id 砍价商品id + * @return StoreBargain + */ + @Override + public StoreBargain getByIdException(Integer id) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(StoreBargain::getId, id); + lqw.eq(StoreBargain::getIsDel, false); + lqw.eq(StoreBargain::getStatus, true); + StoreBargain storeBargain = dao.selectOne(lqw); + if (ObjectUtil.isNull(storeBargain)) throw new CrmebException("砍价商品不存在或未开启"); + return storeBargain; + } + + /** + * 添加/扣减库存 + * @param id 秒杀商品id + * @param num 数量 + * @param type 类型:add—添加,sub—扣减 + */ + @Override + public Boolean operationStock(Integer id, Integer num, String type) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + if ("add".equals(type)) { + updateWrapper.setSql(StrUtil.format("stock = stock + {}", num)); + updateWrapper.setSql(StrUtil.format("sales = sales - {}", num)); + updateWrapper.setSql(StrUtil.format("quota = quota + {}", num)); + } + if ("sub".equals(type)) { + updateWrapper.setSql(StrUtil.format("stock = stock - {}", num)); + updateWrapper.setSql(StrUtil.format("sales = sales + {}", num)); + updateWrapper.setSql(StrUtil.format("quota = quota - {}", num)); + // 扣减时加乐观锁保证库存不为负 + updateWrapper.last(StrUtil.format(" and (quota - {} >= 0)", num)); + } + updateWrapper.eq("id", id); + boolean update = update(updateWrapper); + if (!update) { + throw new CrmebException("更新砍价商品库存失败,商品id = " + id); + } + return update; + } + + /** + * 砍价首页信息 + * 砍价商品信息6条 + * @return BargainIndexResponse + */ + @Override + public BargainIndexResponse getIndexInfo() { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.select(StoreBargain::getId, StoreBargain::getProductId, StoreBargain::getTitle, StoreBargain::getMinPrice, StoreBargain::getPrice, StoreBargain::getImage); + lqw.eq(StoreBargain::getStatus, true); + lqw.eq(StoreBargain::getIsDel, false); + lqw.gt(StoreBargain::getStock, 0); + long timeMillis = System.currentTimeMillis(); + lqw.le(StoreBargain::getStartTime, timeMillis); + lqw.ge(StoreBargain::getStopTime, timeMillis); + lqw.orderByDesc(StoreBargain::getSort, StoreBargain::getId); + lqw.last(" limit 6"); + List storeBargains = dao.selectList(lqw); + if (CollUtil.isEmpty(storeBargains)) { + return null; + } + BargainIndexResponse response = new BargainIndexResponse(); + response.setProductList(storeBargains); + return response; + } + + /** + * 获取砍价列表header + * @return BargainHeaderResponse + */ + @Override + public BargainHeaderResponse getHeader() { + BargainHeaderResponse headerResponse = new BargainHeaderResponse(); + // 获取参与砍价总人数 + Integer bargainTotal = storeBargainUserHelpService.getCount(); + headerResponse.setBargainTotal(bargainTotal); + if (bargainTotal <= 0) { + return headerResponse; + } + // 获取砍价成功列表 + List bargainUserList = storeBargainUserService.getHeaderList(); + if (CollUtil.isEmpty(bargainUserList)) { + headerResponse.setBargainSuccessList(CollUtil.newArrayList()); + return headerResponse; + } + List uidList = bargainUserList.stream().map(StoreBargainUser::getUid).distinct().collect(Collectors.toList()); + HashMap userMap = userService.getMapListInUid(uidList); + List bargainIdList = bargainUserList.stream().map(StoreBargainUser::getBargainId).distinct().collect(Collectors.toList()); + HashMap bargainMap = getStoreNameMapInId(bargainIdList); + List> mapList = bargainUserList.stream().map(e -> { + // 获取用户昵称头像 + User user = userMap.get(e.getUid()); + HashMap map = CollUtil.newHashMap(); + map.put("nickName", user.getNickname()); + map.put("avatar", user.getAvatar()); + map.put("price", e.getBargainPriceMin()); + map.put("title", bargainMap.get(e.getBargainId())); + return map; + }).collect(Collectors.toList()); + headerResponse.setBargainSuccessList(mapList); + return headerResponse; + } + + /** + * 根据id数组获取砍价商品map + * @param bargainIdList 砍价商品id数组 + * @return HashMap + */ + @Override + public HashMap getMapInId(List bargainIdList) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.in(StoreBargain::getId, bargainIdList); + List bargainList = dao.selectList(lqw); + HashMap map = CollUtil.newHashMap(); + bargainList.forEach(e -> { + map.put(e.getId(), e); + }); + return map; + } + + /** + * 获取砍价商品名称Map + * @param bargainIdList 砍价商品id数组 + * @return List> + */ + private HashMap getStoreNameMapInId(List bargainIdList) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.select(StoreBargain::getId, StoreBargain::getTitle); + lqw.in(StoreBargain::getId, bargainIdList); + List bargainList = dao.selectList(lqw); + HashMap map = CollUtil.newHashMap(); + bargainList.forEach(e -> { + map.put(e.getId(), e.getTitle()); + }); + return map; + } + + /** + * 查询活动状态为开启,结束时间小于当前时间的数据 + * @return List + */ + private List getByStatusAndGtStopTime() { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(StoreBargain::getStatus, true); + lqw.lt(StoreBargain::getStopTime, System.currentTimeMillis()); + return dao.selectList(lqw); + } + + // 砍价操作库存 + private boolean doProductStock(StoreProductStockRequest storeProductStockRequest){ + // 砍价商品信息回滚 + StoreBargain existProduct = getById(storeProductStockRequest.getBargainId()); + List existAttr = + attrValueService.getListByProductIdAndAttrId( + storeProductStockRequest.getBargainId(), + storeProductStockRequest.getAttrId().toString(), + storeProductStockRequest.getType()); + if(ObjectUtil.isNull(existProduct) || ObjectUtil.isNull(existAttr)){ // 未找到商品 + logger.info("库存修改任务未获取到商品信息"+JSON.toJSONString(storeProductStockRequest)); + return true; + } + + // 回滚商品库存/销量 并更新 + boolean isPlus = "add".equals(storeProductStockRequest.getOperationType()); + int productStock = isPlus ? existProduct.getStock() + storeProductStockRequest.getNum() : existProduct.getStock() - storeProductStockRequest.getNum(); + existProduct.setStock(productStock); + existProduct.setSales(existProduct.getSales() - storeProductStockRequest.getNum()); + existProduct.setQuota(existProduct.getQuota() + storeProductStockRequest.getNum()); + updateById(existProduct); + + // 回滚sku库存 + for (StoreProductAttrValue attrValue : existAttr) { + int productAttrStock = isPlus ? attrValue.getStock() + storeProductStockRequest.getNum() : attrValue.getStock() - storeProductStockRequest.getNum(); + attrValue.setStock(productAttrStock); + attrValue.setSales(attrValue.getSales()-storeProductStockRequest.getNum()); + attrValue.setQuota(attrValue.getQuota() + storeProductStockRequest.getNum()); + attrValueService.updateById(attrValue); + } + + // 商品本身库存回滚 + // StoreProductStockRequest 创建次对象调用商品扣减库存实现扣减上本本身库存 + StoreProductResponse existProductLinkedSeckill = storeProductService.getByProductId(storeProductStockRequest.getProductId()); + for (StoreProductAttrValueResponse attrValueResponse : existProductLinkedSeckill.getAttrValue()) { + if(attrValueResponse.getSuk().equals(storeProductStockRequest.getSuk())){ + StoreProductStockRequest r = new StoreProductStockRequest() + .setAttrId(attrValueResponse.getId()) + .setNum(storeProductStockRequest.getNum()) + .setOperationType("add") + .setProductId(storeProductStockRequest.getProductId()) + .setType(Constants.PRODUCT_TYPE_NORMAL) + .setSuk(storeProductStockRequest.getSuk()); + storeProductService.doProductStock(r); + } + } + return true; + } + +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreBargainUserHelpServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreBargainUserHelpServiceImpl.java new file mode 100644 index 0000000..c889bd0 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreBargainUserHelpServiceImpl.java @@ -0,0 +1,427 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.RandomUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.constants.BargainConstants; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.constants.NotifyConstants; +import com.zbkj.common.constants.UserConstants; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.model.system.SystemNotification; +import com.zbkj.common.request.BargainFrontRequest; +import com.zbkj.common.utils.DateUtil; +import com.zbkj.common.model.bargain.StoreBargain; +import com.zbkj.common.model.bargain.StoreBargainUser; +import com.zbkj.common.model.bargain.StoreBargainUserHelp; +import com.zbkj.common.response.StoreBargainUserHelpResponse; +import com.zbkj.common.model.user.User; +import com.zbkj.common.model.user.UserToken; +import com.zbkj.service.dao.StoreBargainUserHelpDao; +import com.zbkj.service.service.*; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.support.TransactionTemplate; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * StoreBargainUserHelpService 实现类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class StoreBargainUserHelpServiceImpl extends ServiceImpl implements StoreBargainUserHelpService { + + @Resource + private StoreBargainUserHelpDao dao; + + @Autowired + private StoreBargainUserService storeBargainUserService; + + @Autowired + private UserService userService; + + @Autowired + private StoreBargainService storeBargainService; + + @Autowired + private TemplateMessageService templateMessageService; + + @Autowired + private UserTokenService userTokenService; + + @Autowired + private TransactionTemplate transactionTemplate; + + @Autowired + private SystemNotificationService systemNotificationService; + + + /** + * 列表 + * @param bargainUserId 砍价活动id + * @return List + */ + @Override + public List getList(Integer bargainUserId) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(StoreBargainUserHelp::getBargainUserId, bargainUserId); + lqw.orderByDesc(StoreBargainUserHelp::getId); + List helpList = dao.selectList(lqw); + if (CollUtil.isEmpty(helpList)) { + return CollUtil.newArrayList(); + } + List list = helpList.stream().map(help -> { + StoreBargainUserHelpResponse helpResponse = new StoreBargainUserHelpResponse(); + BeanUtils.copyProperties(help, helpResponse); + helpResponse.setAddTime(DateUtil.timestamp2DateStr(help.getAddTime(), Constants.DATE_FORMAT)); + User user = userService.getById(help.getUid()); + helpResponse.setAvatar(user.getAvatar()); + helpResponse.setNickname(user.getNickname()); + return helpResponse; + }).collect(Collectors.toList()); + return list; + } + + /** + * 获取帮助砍价人数 + * @param bargainId 砍价商品ID + * @return Long + */ + @Override + public Long getHelpCountByBargainId(Integer bargainId) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.select(StoreBargainUserHelp::getId); + lambdaQueryWrapper.eq(StoreBargainUserHelp::getBargainId, bargainId); + return dao.selectCount(lambdaQueryWrapper).longValue(); + } + + /** + * 获取帮助砍价人数 + * @param bargainId 砍价商品ID + * @param bargainUserId 砍价商品发起用户表id + * @return Long + */ + @Override + public Long getHelpCountByBargainIdAndBargainUid(Integer bargainId, Integer bargainUserId) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.select(StoreBargainUserHelp::getId); + lambdaQueryWrapper.eq(StoreBargainUserHelp::getBargainId, bargainId); + lambdaQueryWrapper.eq(StoreBargainUserHelp::getBargainUserId, bargainUserId); + return dao.selectCount(lambdaQueryWrapper).longValue(); + } + + /** + * 砍价 + * @param request 砍价请求参数 + * @return 砍价金额 + */ + @Override + public Map help(BargainFrontRequest request) { + if (ObjectUtil.isNull(request.getBargainUserId())) { + throw new CrmebException("砍价活动id不能为空"); + } + + Map map = new HashMap<>(); + User user = userService.getInfoException(); + StoreBargain storeBargain = storeBargainService.getById(request.getBargainId()); + if (ObjectUtil.isNull(storeBargain) || storeBargain.getIsDel()) { + throw new CrmebException("对应的砍价商品不存在"); + } + if (!storeBargain.getStatus()) { + throw new CrmebException("砍价商品已下架"); + } + if (storeBargain.getQuota() <= 0 || storeBargain.getStock() <= 0) { + throw new CrmebException("砍价商品已售罄"); + } + long currentTimeMillis = System.currentTimeMillis(); + if (currentTimeMillis < storeBargain.getStartTime()) { + throw new CrmebException("砍价活动未开始"); + } + if (currentTimeMillis > storeBargain.getStopTime()) { + throw new CrmebException("砍价活动已结束"); + } + StoreBargainUser storeBargainUser = storeBargainUserService.getById(request.getBargainUserId()); + if (ObjectUtil.isNull(storeBargainUser)) { + throw new CrmebException("砍价商品用户信息不存在"); + } + + // 判断是否砍价成功 + if (storeBargainUser.getStatus().equals(BargainConstants.BARGAIN_USER_STATUS_SUCCESS) || storeBargainUser.getBargainPriceMin().compareTo(storeBargainUser.getBargainPrice().subtract(storeBargainUser.getPrice())) >= 0) { + throw new CrmebException("商品已完成砍价"); + } + + // 给自己砍价 + if (user.getUid().equals(storeBargainUser.getUid())) { + StoreBargainUserHelp myHelp = getByUidAndBargainIdAndBargainUserId(user.getUid(), storeBargain.getId(), storeBargainUser.getId()); + if (ObjectUtil.isNotNull(myHelp)) { + throw new CrmebException("您已经砍过了"); + } + } else {// 不是给自己砍价,不包含给自己砍的 + // 用户对本商品的砍价次数 + List tempUserList = storeBargainUserService.getListByBargainIdAndUid(storeBargain.getId(), user.getUid()); + if (CollUtil.isNotEmpty(tempUserList)) { + List tempUserIdList = tempUserList.stream().map(StoreBargainUser::getId).collect(Collectors.toList()); + Integer helpCount = getUserHelpNum(user.getUid(), storeBargain.getId(), tempUserIdList); + if (helpCount >= storeBargain.getBargainNum()) { + throw new CrmebException("您的帮砍次数已达上限"); + } + } + } + + // 获取活动用户的总已砍次数 + Long helpCount = getHelpCountByBargainIdAndBargainUid(request.getBargainId(), storeBargainUser.getId()); + // 计算砍价金额 + BigDecimal bargainPrice = helpBargain(storeBargain, storeBargainUser, helpCount); + boolean isOut = false; + if (storeBargain.getPeopleNum().equals(helpCount.intValue() + 1)) { + isOut = true; + } + + boolean finalIsOut = isOut; + Boolean execute = transactionTemplate.execute(e -> { + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.set(StoreBargainUser::getPrice, storeBargainUser.getPrice().add(bargainPrice)); + if (finalIsOut) { + updateWrapper.set(StoreBargainUser::getStatus, 3); + } + updateWrapper.eq(StoreBargainUser::getId, storeBargainUser.getId()); + updateWrapper.eq(StoreBargainUser::getPrice, storeBargainUser.getPrice()); + storeBargainUserService.update(updateWrapper); + storeBargainUser.setPrice(storeBargainUser.getPrice().add(bargainPrice)); + + StoreBargainUserHelp userHelp = new StoreBargainUserHelp(); + userHelp.setBargainId(request.getBargainId()); + userHelp.setBargainUserId(storeBargainUser.getId()); + userHelp.setUid(user.getUid()); + userHelp.setPrice(bargainPrice); + userHelp.setAddTime(System.currentTimeMillis()); + save(userHelp); + + // 分享人数添加 + if (!user.getUid().equals(request.getBargainUserUid())) { + storeBargain.setShare(storeBargain.getShare() + 1); + storeBargainService.updateById(storeBargain); + } + + return Boolean.TRUE; + }); + + if (!execute) { + throw new CrmebException("砍价失败!"); + } + + try { + // 如果砍价完成,发送微信模板消息 + if (isOut) { + // 发送微信模板消息 + SystemNotification notification = systemNotificationService.getByMark(NotifyConstants.BARGAINING_SUCCESS_MARK); + if (notification.getIsWechat().equals(1) || notification.getIsRoutine().equals(1)) { + User tempUser = userService.getById(storeBargainUser.getUid()); + pushMessageOrder(storeBargain, tempUser, notification); + } + } + } catch (Exception e) { + e.printStackTrace(); + log.error("砍价成功发送微信消息失败:" + e.getMessage()); + } + map.put("bargainPrice", bargainPrice); + return map; + } + + /** + * 发送消息通知 + * @param storeBargain 砍价商品 + * @param user 发起砍价用户 + */ + private void pushMessageOrder(StoreBargain storeBargain, User user, SystemNotification notification) { + UserToken userToken; + HashMap temMap = new HashMap<>(); + // 公众号 + if (notification.getIsWechat().equals(1)) { + userToken = userTokenService.getTokenByUserId(user.getUid(), UserConstants.USER_TOKEN_TYPE_WECHAT); + if (ObjectUtil.isNotNull(userToken)) { + // 发送微信模板消息 + temMap.put(Constants.WE_CHAT_TEMP_KEY_FIRST, "好腻害!你的朋友们已经帮你砍到底价了!"); + temMap.put("keyword1", storeBargain.getTitle()); + temMap.put("keyword2", storeBargain.getMinPrice().toString()); + temMap.put(Constants.WE_CHAT_TEMP_KEY_END, "请尽快支付!"); + templateMessageService.pushTemplateMessage(notification.getWechatId(), temMap, userToken.getToken()); + return; + } + } + if (notification.getIsRoutine().equals(1)) { + // 小程序发送订阅消息 + userToken = userTokenService.getTokenByUserId(user.getUid(), UserConstants.USER_TOKEN_TYPE_ROUTINE); + if (ObjectUtil.isNull(userToken)) { + return ; + } + // 组装数据 +// temMap.put("thing6", storeBargain.getTitle()); +// temMap.put("amount3", storeBargain.getMinPrice().toString() + "元"); +// temMap.put("thing7", "好腻害!你的朋友们已经帮你砍到底价了!"); + temMap.put("thing1", storeBargain.getTitle()); + temMap.put("amount2", storeBargain.getMinPrice().toString() + "元"); + temMap.put("thing3", "好腻害!你的朋友们已经帮你砍到底价了!"); + templateMessageService.pushMiniTemplateMessage(notification.getRoutineId(), temMap, userToken.getToken()); + } + } + + /** + * 获取参与砍价总人数(次) + * @return Integer + */ + @Override + public Integer getCount() { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.select(StoreBargainUserHelp::getId); + return dao.selectCount(lqw); + } + + /** + * 获取好友助力列表 + * @param bargainUserId 砍价用户表id + * @return List + */ + @Override + public List getHelpListByBargainUserId(Integer bargainUserId) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(StoreBargainUserHelp::getBargainUserId, bargainUserId); + return dao.selectList(lqw); + } + + /** + * 是否帮砍过 + * @param bargainUserId 用户砍价活动id + * @param uid 用户uid + * @return Boolean + */ + @Override + public Boolean getIsHelp(Integer bargainUserId, Integer uid) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(StoreBargainUserHelp::getBargainUserId, bargainUserId); + lqw.eq(StoreBargainUserHelp::getUid, uid); + StoreBargainUserHelp userHelp = dao.selectOne(lqw); + if (ObjectUtil.isNull(userHelp)) { + return Boolean.FALSE; + } + return Boolean.TRUE; + } + + /** + * 获取该砍价商品用户的帮砍次数 + * @param bargainId 砍价商品id + * @param uid 用户uid + * @param bargainUserIdList 用户参与砍价活动id数组 + * @return Integer + */ + @Override + public Integer getHelpCountByBargainIdAndUidInBUserId(Integer bargainId, Integer uid, List bargainUserIdList) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.select(StoreBargainUserHelp::getId); + lqw.eq(StoreBargainUserHelp::getBargainId, bargainId); + lqw.eq(StoreBargainUserHelp::getUid, uid); + lqw.notIn(StoreBargainUserHelp::getBargainUserId, bargainUserIdList); + return dao.selectCount(lqw); + } + + /** + * 砍价金额计算 + * @param storeBargain 砍价商品 + * @param storeBargainUser 砍价商品用户 + * @param helpCount 帮助砍价次数 + * @return + * 砍价时在设置好的价格区间内以大于20%小于80%之间随机一个价格后 在总金额中减去,砍价最后一位不可随机价格,直接砍价到设置区间的最低价格为准 + * + * 剩余砍价金额 - 剩余砍价次数 * 0.01 = 可砍价金额 + * 可砍价金额 > 0.01 以大于20%小于80%之间随机一个价格 + * + */ + private BigDecimal helpBargain(StoreBargain storeBargain, StoreBargainUser storeBargainUser, Long helpCount) { + BigDecimal minPrice = storeBargainUser.getBargainPriceMin();//底价 + BigDecimal price = storeBargainUser.getBargainPrice();//砍价商品金额 + BigDecimal userPrice = storeBargainUser.getPrice();//已砍金额 + Integer peopleNum = storeBargain.getPeopleNum();//帮助砍价好友人数限定 + + BigDecimal subtract = price.subtract(minPrice);// 可砍价金额(总) + + BigDecimal bargainPrice; + double retainPrice;// 需要保留的金额 + // 没有砍过 + if (helpCount == 0) { + // 可砍价金额 + retainPrice = (peopleNum - 1) * 0.01; + BigDecimal canBargainPrice = subtract.subtract(new BigDecimal(retainPrice)); + if (canBargainPrice.compareTo(new BigDecimal("0.01")) > 0) {// 超过0.01 + bargainPrice = RandomUtil.randomBigDecimal(subtract.multiply(new BigDecimal(Constants.BARGAIN_TATIO_DOWN)), subtract.multiply(new BigDecimal(Constants.BARGAIN_TATIO_UP))); + if (bargainPrice.compareTo(new BigDecimal("0.01")) < 0) { + bargainPrice = new BigDecimal("0.01"); + } + return bargainPrice.setScale(2, BigDecimal.ROUND_HALF_UP); + } + return new BigDecimal("0.01"); + } + // 最后一次砍价 + if (peopleNum - helpCount.intValue() == 1) { + return subtract.subtract(userPrice); + } + // 其他情况 + retainPrice = (peopleNum - helpCount.intValue()) * 0.01; + BigDecimal remaining = subtract.subtract(userPrice).subtract(new BigDecimal(retainPrice)); + if (remaining.compareTo(new BigDecimal("0.01")) > 0) {// 超过0.01 + bargainPrice = RandomUtil.randomBigDecimal(remaining.multiply(new BigDecimal(Constants.BARGAIN_TATIO_DOWN)), remaining.multiply(new BigDecimal(Constants.BARGAIN_TATIO_UP))); + if (bargainPrice.compareTo(new BigDecimal("0.01")) < 0) { + bargainPrice = new BigDecimal("0.01"); + } + return bargainPrice.setScale(2, BigDecimal.ROUND_HALF_UP); + } + return new BigDecimal("0.01"); + } + + /** + * 获取帮助砍价用户的帮砍次数 + */ + private StoreBargainUserHelp getByUidAndBargainIdAndBargainUserId(Integer uid, Integer bargainId, Integer bargainUserId) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(StoreBargainUserHelp::getUid, uid); + lambdaQueryWrapper.eq(StoreBargainUserHelp::getBargainId, bargainId); + lambdaQueryWrapper.eq(StoreBargainUserHelp::getBargainUserId, bargainUserId); + return dao.selectOne(lambdaQueryWrapper); + } + + /** + * 获取用户帮砍次数 + * 用户对商品砍了几次(不包含自己) + * @param uid 用户uid + * @param bargainId 砍价商品id + * @return Integer + */ + private Integer getUserHelpNum(Integer uid, Integer bargainId, List tempUserIdList) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.select(StoreBargainUserHelp::getId); + lambdaQueryWrapper.eq(StoreBargainUserHelp::getUid, uid); + lambdaQueryWrapper.eq(StoreBargainUserHelp::getBargainId, bargainId); + if (CollUtil.isNotEmpty(tempUserIdList)) { + lambdaQueryWrapper.notIn(StoreBargainUserHelp::getBargainUserId, tempUserIdList); + } + return dao.selectCount(lambdaQueryWrapper); + } +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreBargainUserServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreBargainUserServiceImpl.java new file mode 100644 index 0000000..5a6dc85 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreBargainUserServiceImpl.java @@ -0,0 +1,607 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.request.BargainFrontRequest; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.response.BargainRecordResponse; +import com.zbkj.common.response.BargainUserInfoResponse; +import com.github.pagehelper.Page; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.zbkj.common.utils.CrmebUtil; +import com.zbkj.common.utils.DateUtil; +import com.zbkj.common.vo.dateLimitUtilVo; +import com.zbkj.common.model.bargain.StoreBargain; +import com.zbkj.common.model.bargain.StoreBargainUser; +import com.zbkj.common.model.bargain.StoreBargainUserHelp; +import com.zbkj.common.request.StoreBargainUserSearchRequest; +import com.zbkj.common.response.StoreBargainUserResponse; +import com.zbkj.common.model.order.StoreOrder; +import com.zbkj.common.model.user.User; +import com.zbkj.service.dao.StoreBargainUserDao; +import com.zbkj.service.service.*; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.HashMap; +import java.util.List; +import java.util.stream.Collectors; + +/** + * StoreBargainUserService 实现类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class StoreBargainUserServiceImpl extends ServiceImpl implements StoreBargainUserService { + + @Resource + private StoreBargainUserDao dao; + + @Autowired + private UserService userService; + + @Autowired + private StoreBargainService storeBargainService; + + @Autowired + private StoreBargainUserHelpService storeBargainUserHelpService; + + @Autowired + private StoreOrderService storeOrderService; + + + /** + * 分页展示砍价参与用户列表 + * @param request 请求参数 + * @param pageParamRequest 分页类参数 + * @return List + */ + @Override + public PageInfo getList(StoreBargainUserSearchRequest request, PageParamRequest pageParamRequest) { + Page startPage = PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + if (ObjectUtil.isNotNull(request.getStatus())) { + lqw.eq(StoreBargainUser::getStatus, request.getStatus()); + } + if (StrUtil.isNotBlank(request.getDateLimit())) { + dateLimitUtilVo dateLimit = DateUtil.getDateLimit(request.getDateLimit()); + lqw.between(StoreBargainUser::getAddTime, DateUtil.dateStr2Timestamp(dateLimit.getStartTime(), Constants.DATE_TIME_TYPE_BEGIN), DateUtil.dateStr2Timestamp(dateLimit.getEndTime(), Constants.DATE_TIME_TYPE_END)); + } + lqw.orderByDesc(StoreBargainUser::getId); + List bargainUserList = dao.selectList(lqw); + if (CollUtil.isEmpty(bargainUserList)) { + return CommonPage.copyPageInfo(startPage, CollUtil.newArrayList()); + } + List list = bargainUserList.stream().map(bargainUser -> { + StoreBargainUserResponse bargainUserResponse = new StoreBargainUserResponse(); + BeanUtils.copyProperties(bargainUser, bargainUserResponse); + bargainUserResponse.setAddTime(DateUtil.timestamp2DateStr(bargainUser.getAddTime(), Constants.DATE_FORMAT)); + bargainUserResponse.setNowPrice(bargainUser.getBargainPrice().subtract(bargainUser.getPrice())); + // 查询用户信息 + User user = userService.getById(bargainUser.getUid()); + bargainUserResponse.setAvatar(user.getAvatar()); + bargainUserResponse.setNickname(user.getNickname()); + // 查询砍价商品信息 + StoreBargain storeBargain = storeBargainService.getById(bargainUser.getBargainId()); + bargainUserResponse.setTitle(storeBargain.getTitle()); + + bargainUserResponse.setDataTime(DateUtil.timestamp2DateStr(storeBargain.getStopTime(), Constants.DATE_FORMAT)); + bargainUserResponse.setPeopleNum(storeBargain.getPeopleNum()); + // 剩余砍价次数 + Long helpCount = storeBargainUserHelpService.getHelpCountByBargainIdAndBargainUid(storeBargain.getId(), bargainUser.getId()); + bargainUserResponse.setNum(storeBargain.getPeopleNum() - helpCount.intValue()); + return bargainUserResponse; + }).collect(Collectors.toList()); + + return CommonPage.copyPageInfo(startPage, list); + } + + /** + * 获取砍价用户列表 + * @param bargainId 砍价商品ID + * @return List + */ + @Override + public List getListByBargainId(Integer bargainId) { + QueryWrapper qw = new QueryWrapper<>(); + qw.select("id", "status"); + qw.eq("bargain_id", bargainId).eq("is_del", false); + return dao.selectList(qw); + } + + /** + * 通过砍价商品ID + 用户uid 获取用户砍价中砍价商品信息 + * @param bargainId 砍价商品编号 + * @param uid 参与用户uid + * @return StoreBargainUser + */ + @Override + public List getListByBargainIdAndUid(Integer bargainId, Integer uid) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(StoreBargainUser::getBargainId, bargainId); + lqw.eq(StoreBargainUser::getUid, uid); + lqw.eq(StoreBargainUser::getIsDel, false); + return dao.selectList(lqw); + } + + /** + * 砍价商品用户根据实体查询 + * @param bargainUser 砍价活动 + * @return List + */ + @Override + public List getByEntity(StoreBargainUser bargainUser) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.setEntity(bargainUser); + return dao.selectList(lqw); + } + + /** + * 获取砍价成功列表Header + */ + @Override + public List getHeaderList() { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StoreBargainUser::getStatus, 3); + lqw.eq(StoreBargainUser::getIsDel, false); + lqw.groupBy(StoreBargainUser::getUid); + lqw.orderByDesc(StoreBargainUser::getId); + lqw.last(" limit 10"); + return dao.selectList(lqw); + } + + /** + * 获取用户砍价信息 + * @param bargainFrontRequest 请求参数 + * @return BargainUserInfoResponse + */ + @Override + public BargainUserInfoResponse getBargainUserInfo(BargainFrontRequest bargainFrontRequest) { + if (ObjectUtil.isNull(bargainFrontRequest.getBargainUserId()) || bargainFrontRequest.getBargainUserId()<= 0) { // 获取自己的砍价信息 + return oneselfBargainActivity(bargainFrontRequest); + } + return otherBargainActivity(bargainFrontRequest); + } + + /** + * 其他途径进入砍价活动 + * @param bargainFrontRequest 请求参数 + * @return BargainUserInfoResponse + */ + private BargainUserInfoResponse otherBargainActivity(BargainFrontRequest bargainFrontRequest) { + User user = userService.getInfoException(); + // 获取砍价商品信息 + StoreBargain storeBargain = storeBargainService.getById(bargainFrontRequest.getBargainId()); + if (ObjectUtil.isNull(storeBargain) || storeBargain.getIsDel()) { + throw new CrmebException("未找到对应砍价商品信息"); + } + if (!storeBargain.getStatus()) { + throw new CrmebException("砍价商品已下架"); + } + if (storeBargain.getStock() <= 0 || storeBargain.getQuota() <= 0) { + throw new CrmebException("砍价商品已售罄"); + } + long currentTimeMillis = System.currentTimeMillis(); + if (storeBargain.getStopTime() < currentTimeMillis) { + throw new CrmebException("活动已结束"); + } + StoreBargainUser bargainUser = getById(bargainFrontRequest.getBargainUserId()); + if (ObjectUtil.isNull(bargainUser)) { + throw new CrmebException("用户砍价活动未找到"); + } + if (bargainUser.getIsDel()) { + throw new CrmebException("用户砍价活动已取消"); + } + if (bargainUser.getStatus().equals(2)) { + throw new CrmebException("砍价活动已过期"); + } + // 判断是否是自己的砍价活动 + BargainUserInfoResponse infoResponse = new BargainUserInfoResponse(); + int bargainStatus;// 砍价状态 + int percent;// 砍价百分比 + if (bargainUser.getUid().equals(user.getUid())) {// 自己的砍价活动 + if (bargainUser.getStatus().equals(3)) {// 砍价已完成 + // 判断是否生成订单 + StoreOrder bargainOrder = storeOrderService.getByBargainOrder(bargainUser.getBargainId(), bargainUser.getId()); + if (ObjectUtil.isNotNull(bargainOrder)) {// 有订单 + // 判断是否支付 + if (!bargainOrder.getPaid()) {// 未支付 + bargainStatus = 8;// 砍价已生成订单未支付 + if (bargainOrder.getIsDel() || bargainOrder.getIsSystemDel()) { + bargainStatus = 10;// 订单未支付已取消 + } + BigDecimal alreadyPrice = bargainUser.getPrice();// 已砍金额 + BigDecimal surplusPrice = BigDecimal.ZERO;// 剩余金额 + percent = 100; + infoResponse.setBargainStatus(bargainStatus); + infoResponse.setAlreadyPrice(alreadyPrice); + infoResponse.setSurplusPrice(surplusPrice); + infoResponse.setBargainPercent(percent); + // 获取好友助力列表 + infoResponse.setUserHelpList(getHelpList(bargainUser.getId())); + infoResponse.setStoreBargainUserId(bargainUser.getId()); + return infoResponse; + } + // 已支付 + bargainStatus = 9;// 砍价订单已支付 + BigDecimal alreadyPrice = bargainUser.getPrice();// 已砍金额 + BigDecimal surplusPrice = BigDecimal.ZERO;// 剩余金额 + percent = 100; + infoResponse.setBargainStatus(bargainStatus); + infoResponse.setAlreadyPrice(alreadyPrice); + infoResponse.setSurplusPrice(surplusPrice); + infoResponse.setBargainPercent(percent); + // 获取好友助力列表 + infoResponse.setUserHelpList(getHelpList(bargainUser.getId())); + infoResponse.setStoreBargainUserId(bargainUser.getId()); + return infoResponse; + } + // 无订单 + bargainStatus = 4;// 砍价已完成 + BigDecimal alreadyPrice = bargainUser.getPrice();// 已砍金额 + BigDecimal surplusPrice = BigDecimal.ZERO;// 剩余金额 + percent = 100; + infoResponse.setBargainStatus(bargainStatus); + infoResponse.setAlreadyPrice(alreadyPrice); + infoResponse.setSurplusPrice(surplusPrice); + infoResponse.setBargainPercent(percent); + // 获取好友助力列表 + infoResponse.setUserHelpList(getHelpList(bargainUser.getId())); + infoResponse.setStoreBargainUserId(bargainUser.getId()); + return infoResponse; + } + bargainStatus = 3;// 砍价中 + BigDecimal alreadyPrice = bargainUser.getPrice();// 已砍金额 + BigDecimal surplusPrice = bargainUser.getBargainPrice().subtract(storeBargain.getMinPrice()).subtract(alreadyPrice);// 剩余金额 + percent = CrmebUtil.percentInstanceIntVal(alreadyPrice, alreadyPrice.add(surplusPrice)); + infoResponse.setBargainStatus(bargainStatus); + infoResponse.setAlreadyPrice(alreadyPrice); + infoResponse.setSurplusPrice(surplusPrice); + infoResponse.setBargainPercent(percent); + // 获取好友助力列表 + infoResponse.setUserHelpList(getHelpList(bargainUser.getId())); + infoResponse.setStoreBargainUserId(bargainUser.getId()); + return infoResponse; + } + // 其他人的砍价活动 + if (bargainUser.getStatus().equals(3)) { + bargainStatus = 4;// 砍价已完成 + BigDecimal alreadyPrice = bargainUser.getPrice();// 已砍金额 + BigDecimal surplusPrice = BigDecimal.ZERO;// 剩余金额 + percent = 100; + infoResponse.setBargainStatus(bargainStatus); + infoResponse.setAlreadyPrice(alreadyPrice); + infoResponse.setSurplusPrice(surplusPrice); + infoResponse.setBargainPercent(percent); + // 获取好友助力列表 + infoResponse.setUserHelpList(getHelpList(bargainUser.getId())); + infoResponse.setStoreBargainUserId(bargainUser.getId()); + User tempUser = userService.getById(bargainUser.getUid()); + infoResponse.setStoreBargainUserName(tempUser.getNickname()); + infoResponse.setStoreBargainUserAvatar(tempUser.getAvatar()); + return infoResponse; + } + // 是否帮ta砍过 + Boolean isHelp = storeBargainUserHelpService.getIsHelp(bargainUser.getId(), user.getUid()); + if (isHelp) { // 帮砍过 + bargainStatus = 6;// 已帮砍 + BigDecimal alreadyPrice = bargainUser.getPrice();// 已砍金额 + BigDecimal surplusPrice = bargainUser.getBargainPrice().subtract(storeBargain.getMinPrice()).subtract(alreadyPrice);// 剩余金额 + percent = CrmebUtil.percentInstanceIntVal(alreadyPrice, alreadyPrice.add(surplusPrice)); + infoResponse.setBargainStatus(bargainStatus); + infoResponse.setAlreadyPrice(alreadyPrice); + infoResponse.setSurplusPrice(surplusPrice); + infoResponse.setBargainPercent(percent); + // 获取好友助力列表 + infoResponse.setUserHelpList(getHelpList(bargainUser.getId())); + infoResponse.setStoreBargainUserId(bargainUser.getId()); + User tempUser = userService.getById(bargainUser.getUid()); + infoResponse.setStoreBargainUserName(tempUser.getNickname()); + infoResponse.setStoreBargainUserAvatar(tempUser.getAvatar()); + return infoResponse; + } + // 获取该砍价商品用户的帮砍次数 + Integer helpNum = getHelpNumByBargainIdAndUid(bargainFrontRequest.getBargainId(), user.getUid()); + if (storeBargain.getBargainNum() <= helpNum) { + bargainStatus = 7;// 帮砍次数已满 + BigDecimal alreadyPrice = bargainUser.getPrice();// 已砍金额 + BigDecimal surplusPrice = bargainUser.getBargainPrice().subtract(storeBargain.getMinPrice()).subtract(alreadyPrice);// 剩余金额 + percent = CrmebUtil.percentInstanceIntVal(alreadyPrice, alreadyPrice.add(surplusPrice)); + infoResponse.setBargainStatus(bargainStatus); + infoResponse.setAlreadyPrice(alreadyPrice); + infoResponse.setSurplusPrice(surplusPrice); + infoResponse.setBargainPercent(percent); + // 获取好友助力列表 + infoResponse.setUserHelpList(getHelpList(bargainUser.getId())); + infoResponse.setStoreBargainUserId(bargainUser.getId()); + User tempUser = userService.getById(bargainUser.getUid()); + infoResponse.setStoreBargainUserName(tempUser.getNickname()); + infoResponse.setStoreBargainUserAvatar(tempUser.getAvatar()); + return infoResponse; + } + // 没有帮砍过 + bargainStatus = 5;// 可以帮砍 + BigDecimal alreadyPrice = bargainUser.getPrice();// 已砍金额 + BigDecimal surplusPrice = bargainUser.getBargainPrice().subtract(storeBargain.getMinPrice()).subtract(alreadyPrice);// 剩余金额 + percent = CrmebUtil.percentInstanceIntVal(alreadyPrice, alreadyPrice.add(surplusPrice)); + infoResponse.setBargainStatus(bargainStatus); + infoResponse.setAlreadyPrice(alreadyPrice); + infoResponse.setSurplusPrice(surplusPrice); + infoResponse.setBargainPercent(percent); + // 获取好友助力列表 + infoResponse.setUserHelpList(getHelpList(bargainUser.getId())); + infoResponse.setStoreBargainUserId(bargainUser.getId()); + User tempUser = userService.getById(bargainUser.getUid()); + infoResponse.setStoreBargainUserName(tempUser.getNickname()); + infoResponse.setStoreBargainUserAvatar(tempUser.getAvatar()); + return infoResponse; + } + + /** + * 获取好友助力列表 + * @param bargainUserId 砍价活动id + * @return List + */ + private List getHelpList(Integer bargainUserId) { + List helpList = storeBargainUserHelpService.getHelpListByBargainUserId(bargainUserId); + helpList.forEach(e -> { + User helpUser = userService.getById(e.getUid()); + e.setNickname(helpUser.getNickname()); + e.setAvatar(helpUser.getAvatar()); + e.setAddTimeStr(cn.hutool.core.date.DateUtil.date(e.getAddTime()).toString()); + }); + return helpList; + } + + /** + * 自己的砍价活动 + * @param bargainFrontRequest 请求参数 + * @return BargainUserInfoResponse + */ + private BargainUserInfoResponse oneselfBargainActivity(BargainFrontRequest bargainFrontRequest) { + User user = userService.getInfoException(); + // 获取砍价商品信息 + StoreBargain storeBargain = storeBargainService.getById(bargainFrontRequest.getBargainId()); + if (ObjectUtil.isNull(storeBargain) || storeBargain.getIsDel()) { + throw new CrmebException("未找到对应砍价商品信息"); + } + if (!storeBargain.getStatus()) { + throw new CrmebException("砍价商品已下架"); + } + if (storeBargain.getStock() <= 0 || storeBargain.getQuota() <= 0) { + throw new CrmebException("砍价商品已售罄"); + } + long currentTimeMillis = System.currentTimeMillis(); + if (storeBargain.getStopTime() < currentTimeMillis) { + throw new CrmebException("活动已结束"); + } + + BargainUserInfoResponse infoResponse = new BargainUserInfoResponse(); + // 查看是否有正在砍价的信息 + StoreBargainUser storeBargainUser = getLastByIdAndUid(bargainFrontRequest.getBargainId(), user.getUid()); + int percent = 0;// 砍价百分比 + int bargainStatus = 1;// 砍价状态:1-可以参与砍价 + if (ObjectUtil.isNull(storeBargainUser)) {// 没有参与该商品的砍价活动 + BigDecimal alreadyPrice = BigDecimal.ZERO;// 已砍金额 + BigDecimal surplusPrice = storeBargain.getPrice().subtract(storeBargain.getMinPrice());// 剩余金额 + infoResponse.setBargainStatus(bargainStatus); + infoResponse.setAlreadyPrice(alreadyPrice); + infoResponse.setSurplusPrice(surplusPrice); + infoResponse.setBargainPercent(percent); + return infoResponse; + } + if (storeBargainUser.getStatus().equals(2)) {// 活动结束,砍价未完成 + throw new CrmebException("未在活动期内完成砍价"); + } + // 参与过该商品的砍价 + if (storeBargainUser.getIsDel()) { // 已取消 + // 获取用户参与过的次数 + Integer bargainCount = getCountByBargainIdAndUid(bargainFrontRequest.getBargainId(), user.getUid()); + if (storeBargain.getNum() >= bargainCount) { + bargainStatus = 2;// 参与次数已满 + BigDecimal alreadyPrice = BigDecimal.ZERO;// 已砍金额 + BigDecimal surplusPrice = storeBargain.getPrice().subtract(storeBargain.getMinPrice());// 剩余金额 + infoResponse.setBargainStatus(bargainStatus); + infoResponse.setAlreadyPrice(alreadyPrice); + infoResponse.setSurplusPrice(surplusPrice); + return infoResponse; + } + // 还可以参与 + BigDecimal alreadyPrice = BigDecimal.ZERO;// 已砍金额 + BigDecimal surplusPrice = storeBargain.getPrice().subtract(storeBargain.getMinPrice());// 剩余金额 + infoResponse.setBargainStatus(bargainStatus); + infoResponse.setAlreadyPrice(alreadyPrice); + infoResponse.setSurplusPrice(surplusPrice); + infoResponse.setBargainPercent(percent); + return infoResponse; + } + if (storeBargainUser.getStatus().equals(3)) {// 砍价已完成 + // 判断是否生成订单 + StoreOrder bargainOrder = storeOrderService.getByBargainOrder(storeBargainUser.getBargainId(), storeBargainUser.getId()); + if (ObjectUtil.isNotNull(bargainOrder)) {// 有订单 + // 判断是否支付 + if (!bargainOrder.getPaid()) {// 未支付 + bargainStatus = 8;// 砍价已生成订单未支付 + if (bargainOrder.getIsDel()) { + bargainStatus = 10;// 订单未支付已取消 + } + BigDecimal alreadyPrice = storeBargainUser.getPrice();// 已砍金额 + BigDecimal surplusPrice = BigDecimal.ZERO;// 剩余金额 + percent = 100; + infoResponse.setBargainStatus(bargainStatus); + infoResponse.setAlreadyPrice(alreadyPrice); + infoResponse.setSurplusPrice(surplusPrice); + infoResponse.setBargainPercent(percent); + // 获取好友助力列表 + infoResponse.setUserHelpList(getHelpList(storeBargainUser.getId())); + infoResponse.setStoreBargainUserId(storeBargainUser.getId()); + return infoResponse; + } + // 已支付,看起新的活动 + // 获取用户参与过的次数 + Integer bargainCount = getCountByBargainIdAndUid(bargainFrontRequest.getBargainId(), user.getUid()); + if (storeBargain.getNum() <= bargainCount) { + bargainStatus = 2;// 参与次数已满 + BigDecimal alreadyPrice = BigDecimal.ZERO;// 已砍金额 + BigDecimal surplusPrice = storeBargain.getPrice().subtract(storeBargain.getMinPrice());// 剩余金额 + infoResponse.setBargainStatus(bargainStatus); + infoResponse.setAlreadyPrice(alreadyPrice); + infoResponse.setSurplusPrice(surplusPrice); + return infoResponse; + } + // 还可以参与 + BigDecimal alreadyPrice = BigDecimal.ZERO;// 已砍金额 + BigDecimal surplusPrice = storeBargain.getPrice().subtract(storeBargain.getMinPrice());// 剩余金额 + infoResponse.setBargainStatus(bargainStatus); + infoResponse.setAlreadyPrice(alreadyPrice); + infoResponse.setSurplusPrice(surplusPrice); + infoResponse.setBargainPercent(percent); + return infoResponse; + } + // 没有订单 + bargainStatus = 4;// 砍价已完成 + BigDecimal alreadyPrice = storeBargainUser.getPrice();// 已砍金额 + BigDecimal surplusPrice = BigDecimal.ZERO;// 剩余金额 + percent = 100; + infoResponse.setBargainStatus(bargainStatus); + infoResponse.setAlreadyPrice(alreadyPrice); + infoResponse.setSurplusPrice(surplusPrice); + infoResponse.setBargainPercent(percent); + // 获取好友助力列表 + infoResponse.setUserHelpList(getHelpList(storeBargainUser.getId())); + infoResponse.setStoreBargainUserId(storeBargainUser.getId()); + return infoResponse; + } + // 有尚未砍完的活动 + bargainStatus = 3;// 砍价中 + BigDecimal alreadyPrice = storeBargainUser.getPrice();// 已砍金额 + BigDecimal surplusPrice = storeBargainUser.getBargainPrice().subtract(storeBargain.getMinPrice()).subtract(alreadyPrice);// 剩余金额 + percent = CrmebUtil.percentInstanceIntVal(alreadyPrice, alreadyPrice.add(surplusPrice)); + infoResponse.setBargainStatus(bargainStatus); + infoResponse.setAlreadyPrice(alreadyPrice); + infoResponse.setSurplusPrice(surplusPrice); + infoResponse.setBargainPercent(percent); + // 获取好友助力列表 + infoResponse.setUserHelpList(getHelpList(storeBargainUser.getId())); + infoResponse.setStoreBargainUserId(storeBargainUser.getId()); + return infoResponse; + } + + /** + * 获取最后一条砍价信息 + * @return StoreBargainUser + */ + private StoreBargainUser getLastByIdAndUid(Integer id, Integer uid) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StoreBargainUser::getBargainId, id); + lqw.eq(StoreBargainUser::getUid, uid); + lqw.orderByDesc(StoreBargainUser::getId); + lqw.last(" limit 1"); + return dao.selectOne(lqw); + } + + /** + * 砍价记录 + * @return PageInfo + */ + @Override + public PageInfo getRecordList(PageParamRequest pageParamRequest) { + Integer userId = userService.getUserIdException(); + Page startPage = PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StoreBargainUser::getUid, userId); + lqw.orderByDesc(StoreBargainUser::getId); + List bargainUserList = dao.selectList(lqw); + if (CollUtil.isEmpty(bargainUserList)) { + return new PageInfo<>(); + } + List bargainIdList = bargainUserList.stream().map(StoreBargainUser::getBargainId).distinct().collect(Collectors.toList()); + HashMap bargainMap = storeBargainService.getMapInId(bargainIdList); + List responseList = bargainUserList.stream().map(e -> { + BargainRecordResponse recordResponse = new BargainRecordResponse(); + StoreBargain storeBargain = bargainMap.get(e.getBargainId()); + BeanUtils.copyProperties(storeBargain, recordResponse); + recordResponse.setBargainUserId(e.getId()); + recordResponse.setStatus(e.getStatus()); + recordResponse.setIsDel(e.getIsDel()); + recordResponse.setIsOrder(false); + recordResponse.setIsPay(false); + if (!e.getIsDel() && e.getStatus().equals(3)) { + // 查询是否有订单 + StoreOrder bargainOrder = storeOrderService.getByBargainOrder(e.getBargainId(), e.getId()); + if (ObjectUtil.isNotNull(bargainOrder)) { + recordResponse.setIsOrder(true); + if (bargainOrder.getIsDel()) { + recordResponse.setIsDel(true); + } else if (bargainOrder.getPaid()) { + recordResponse.setIsPay(true); + } else { + recordResponse.setOrderNo(bargainOrder.getOrderId()); + } + } + } + // 剩余金额 + BigDecimal surplusPrice; + if (e.getStatus().equals(3)) { + surplusPrice = e.getBargainPriceMin(); + } else { + surplusPrice = e.getBargainPrice().subtract(e.getPrice()); + } + recordResponse.setSurplusPrice(surplusPrice); + return recordResponse; + }).collect(Collectors.toList()); + + return CommonPage.copyPageInfo(startPage, responseList); + } + + private Integer getHelpNumByBargainIdAndUid(Integer bargainId, Integer uid) { + // 查看是否有正在砍价的信息 + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.select(StoreBargainUser::getId); + lqw.eq(StoreBargainUser::getBargainId, bargainId); + lqw.eq(StoreBargainUser::getUid, uid); + List bargainUserList = dao.selectList(lqw); + if (CollUtil.isEmpty(bargainUserList)) { + return 0; + } + List bargainUserIdList = bargainUserList.stream().map(StoreBargainUser::getId).collect(Collectors.toList()); + return storeBargainUserHelpService.getHelpCountByBargainIdAndUidInBUserId(bargainId, uid, bargainUserIdList); + } + + /** + * 获取用户参与砍价活动的次数(成功) + * @param bargainId 砍价商品id + * @param uid 用户uid + * @return 用户参与砍价活动的次数(成功) + */ + private Integer getCountByBargainIdAndUid(Integer bargainId, Integer uid) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StoreBargainUser::getBargainId, bargainId); + lqw.eq(StoreBargainUser::getUid, uid); + lqw.eq(StoreBargainUser::getIsDel, false); + lqw.eq(StoreBargainUser::getStatus, 3); + return dao.selectCount(lqw); + } + +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreCartServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreCartServiceImpl.java new file mode 100644 index 0000000..ec6094c --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreCartServiceImpl.java @@ -0,0 +1,398 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.request.CartNumRequest; +import com.zbkj.common.request.CartRequest; +import com.zbkj.common.request.CartResetRequest; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.constants.RedisConstatns; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.response.CartInfoResponse; +import com.github.pagehelper.Page; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.zbkj.common.utils.RedisUtil; +import com.zbkj.common.model.cat.StoreCart; +import com.zbkj.common.model.product.StoreProduct; +import com.zbkj.common.model.product.StoreProductAttrValue; +import com.zbkj.common.model.system.SystemUserLevel; +import com.zbkj.common.model.user.User; +import com.zbkj.service.dao.StoreCartDao; +import com.zbkj.service.service.*; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * StoreCartServiceImpl 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class StoreCartServiceImpl extends ServiceImpl implements StoreCartService { + + @Resource + private StoreCartDao dao; + + @Autowired + private StoreProductService storeProductService; + + @Autowired + private UserService userService; + + @Autowired + private StoreProductAttrValueService storeProductAttrValueService; + + @Autowired + private SystemUserLevelService systemUserLevelService; + + @Autowired + private RedisUtil redisUtil; + + /** + * 列表 + * @param pageParamRequest 分页类参数 + * @param isValid 是否失效 + * @return List + */ + @Override + public PageInfo getList(PageParamRequest pageParamRequest, boolean isValid) { + Integer userId = userService.getUserIdException(); + Page page = PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + //带 StoreCart 类的多条件查询 + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(StoreCart::getUid, userId); + lambdaQueryWrapper.eq(StoreCart::getStatus, isValid); + lambdaQueryWrapper.eq(StoreCart::getIsNew, false); + lambdaQueryWrapper.orderByDesc(StoreCart::getId); + List storeCarts = dao.selectList(lambdaQueryWrapper); + if (CollUtil.isEmpty(storeCarts)) { + return CommonPage.copyPageInfo(page, new ArrayList<>()); + } + + User user = userService.getInfo(); + SystemUserLevel userLevel = null; + if (ObjectUtil.isNotNull(user) && user.getLevel() > 0) { + userLevel = systemUserLevelService.getByLevelId(user.getLevel()); + } + + List response = new ArrayList<>(); + for (StoreCart storeCart : storeCarts) { + CartInfoResponse cartInfoResponse = new CartInfoResponse(); + BeanUtils.copyProperties(storeCart, cartInfoResponse); + // 获取商品信息 + StoreProduct storeProduct = storeProductService.getCartByProId(storeCart.getProductId()); + cartInfoResponse.setImage(storeProduct.getImage()); + cartInfoResponse.setStoreName(storeProduct.getStoreName()); + + if (!isValid) {// 失效商品直接掠过 + cartInfoResponse.setAttrStatus(false); + response.add(cartInfoResponse); + continue ; + } + + // 获取对应的商品规格信息(只会有一条信息) + List attrValueList = storeProductAttrValueService.getListByProductIdAndAttrId(storeCart.getProductId(), + storeCart.getProductAttrUnique(), Constants.PRODUCT_TYPE_NORMAL); + // 规格不存在即失效 + if (CollUtil.isEmpty(attrValueList)) { + cartInfoResponse.setAttrStatus(false); + response.add(cartInfoResponse); + continue ; + } + StoreProductAttrValue attrValue = attrValueList.get(0); + if (StrUtil.isNotBlank(attrValue.getImage())) { + cartInfoResponse.setImage(attrValue.getImage()); + } + cartInfoResponse.setAttrId(attrValue.getId()); + cartInfoResponse.setSuk(attrValue.getSuk()); + cartInfoResponse.setPrice(attrValue.getPrice()); + cartInfoResponse.setAttrId(attrValue.getId()); + cartInfoResponse.setAttrStatus(attrValue.getStock() > 0); + cartInfoResponse.setStock(attrValue.getStock()); + if (ObjectUtil.isNotNull(userLevel)) { + BigDecimal vipPrice = attrValue.getPrice().multiply(new BigDecimal(userLevel.getDiscount())).divide(new BigDecimal(100), 2 ,BigDecimal.ROUND_HALF_UP); + cartInfoResponse.setVipPrice(vipPrice); + } + response.add(cartInfoResponse); + } + return CommonPage.copyPageInfo(page, response); + } + + /** + * 购物车数量 + * @param request 请求参数 + * @return Map + */ + @Override + public Map getUserCount(CartNumRequest request) { + Integer userId = userService.getUserIdException(); + Map map = new HashMap<>(); + int num; + if ("total".equals(request.getType())) { + num = getUserCountByStatus(userId, request.getNumType()); + } else { + num = getUserSumByStatus(userId, request.getNumType()); + } + map.put("count", num); + return map; + } + + /** + * 新增商品至购物车 + * @param storeCartRequest 购物车参数 + * @return 添加后的成功标识 + */ + @Override + public String saveCate(CartRequest storeCartRequest) { + // 判断商品正常 + StoreProduct product = storeProductService.getById(storeCartRequest.getProductId()); + if (ObjectUtil.isNull(product) || product.getIsDel() || !product.getIsShow()) { + throw new CrmebException("未找到对应商品"); + } + List attrValues = storeProductAttrValueService.getListByProductIdAndAttrId(product.getId(), storeCartRequest.getProductAttrUnique(), Constants.PRODUCT_TYPE_NORMAL); + if (CollUtil.isEmpty(attrValues)) { + throw new CrmebException("未找到对应的商品SKU"); + } + + // 普通商品部分(只有普通商品才能添加购物车) + // 是否已经有同类型商品在购物车,有则添加数量没有则新增 + User currentUser = userService.getInfo(); + StoreCart storeCartPram = new StoreCart(); + storeCartPram.setProductAttrUnique(storeCartRequest.getProductAttrUnique()); + storeCartPram.setUid(currentUser.getUid()); + List existCarts = getByEntity(storeCartPram); // 这里仅仅能获取一条以信息 + String todayStr = DateUtil.date().toString(Constants.DATE_FORMAT_DATE); + if (existCarts.size() > 0) { // 购物车添加数量 + StoreCart forUpdateStoreCart = existCarts.get(0); + forUpdateStoreCart.setCartNum(forUpdateStoreCart.getCartNum() + storeCartRequest.getCartNum()); + boolean updateResult = updateById(forUpdateStoreCart); + if (!updateResult) throw new CrmebException("添加购物车失败"); + return forUpdateStoreCart.getId()+""; + } else {// 新增购物车数据 + StoreCart storeCart = new StoreCart(); + BeanUtils.copyProperties(storeCartRequest, storeCart); + storeCart.setUid(currentUser.getUid()); + storeCart.setType("product"); + if (dao.insert(storeCart) <= 0) throw new CrmebException("添加购物车失败"); + return storeCart.getId()+""; + } + } + + /** + * 删除购物车信息 + * @param ids 待删除id + * @return 删除结果状态 + */ + @Override + public Boolean deleteCartByIds(List ids) { + return dao.deleteBatchIds(ids) > 0; + } + + /** + * 购物车基本查询 + * @param storeCart 购物车参数 + * @return 购物车结果数据 + */ + private List getByEntity(StoreCart storeCart) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.setEntity(storeCart); + return dao.selectList(lqw); + } + + /** + * 检测商品是否有效 更新购物车商品状态 + * @param productId 商品id + * @return 跟新结果 + */ + @Override + public Boolean productStatusNotEnable(Integer productId) { + StoreCart storeCartPram = new StoreCart(); + storeCartPram.setProductId(productId); + List existStoreCartProducts = getByEntity(storeCartPram); + if (null == existStoreCartProducts) return true; + existStoreCartProducts.forEach(e-> e.setStatus(false)); + return updateBatchById(existStoreCartProducts); + } + + /** + * 购物车重选 + * @param resetRequest 重选数据 + * @return 重选结果 + */ + @Override + public Boolean resetCart(CartResetRequest resetRequest) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(StoreCart::getId, resetRequest.getId()); + StoreCart storeCart = dao.selectOne(lqw); + if (ObjectUtil.isNull(storeCart)) throw new CrmebException("购物车不存在"); + if (ObjectUtil.isNull(resetRequest.getNum()) || resetRequest.getNum() <= 0 || resetRequest.getNum() >= 999) + throw new CrmebException("数量不合法"); + storeCart.setCartNum(resetRequest.getNum()); + storeCart.setProductAttrUnique(resetRequest.getUnique() + ""); + boolean updateResult = dao.updateById(storeCart) > 0; + if (!updateResult) throw new CrmebException("重选添加购物车失败"); + productStatusEnableFlag(resetRequest.getId(), true); + return updateResult; + } + + /** + * 对应sku购物车生效 + * @param skuIdList skuIdList + * @return Boolean + */ + @Override + public Boolean productStatusNoEnable(List skuIdList) { + LambdaUpdateWrapper lqw = new LambdaUpdateWrapper<>(); + lqw.set(StoreCart::getStatus, true); + lqw.in(StoreCart::getProductAttrUnique, skuIdList); + lqw.eq(StoreCart::getIsNew, false); + return update(lqw); + } + + /** + * 删除商品对应的购物车 + * @param productId 商品id + */ + @Override + public Boolean productDelete(Integer productId) { + StoreCart storeCartPram = new StoreCart(); + storeCartPram.setProductId(productId); + List existStoreCartProducts = getByEntity(storeCartPram); + if (CollUtil.isNotEmpty(existStoreCartProducts)) return true; + List cartIds = existStoreCartProducts.stream().map(StoreCart::getId).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(cartIds)) { + deleteCartByIds(cartIds); + } + return true; + } + + /** + * 通过id和uid获取购物车信息 + * @param id 购物车id + * @param uid 用户uid + * @return StoreCart + */ + @Override + public StoreCart getByIdAndUid(Long id, Integer uid) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StoreCart::getId, id); + lqw.eq(StoreCart::getUid, uid); + lqw.eq(StoreCart::getIsNew, false); + lqw.eq(StoreCart::getStatus, true); + return dao.selectOne(lqw); + } + + /** + * 获取购物车商品数量(不区分规格) + * @param uid 用户uid + * @param proId 商品id + */ + @Override + public Integer getProductNumByUidAndProductId(Integer uid, Integer proId) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StoreCart::getUid, uid); + lqw.eq(StoreCart::getProductId, proId); + lqw.eq(StoreCart::getStatus, true); + List cartList = dao.selectList(lqw); + if (CollUtil.isNotEmpty(cartList)) { + return cartList.stream().mapToInt(StoreCart::getCartNum).sum(); + } + return 0; + } + + /** + * 修改购物车商品数量 + * @param id 购物车id + * @param number 数量 + */ + @Override + public Boolean updateCartNum(Integer id, Integer number) { + if (ObjectUtil.isNull(number)) throw new CrmebException("商品数量不合法"); + if (number <=0 || number > 99) throw new CrmebException("商品数量不能小于1大于99"); + StoreCart storeCart = getById(id); + if (ObjectUtil.isNull(storeCart)) throw new CrmebException("当前购物车不存在"); + if (storeCart.getCartNum().equals(number)) return true; + storeCart.setCartNum(number); + return updateById(storeCart); + } + + ///////////////////////////////////////////////////////////////////自定义方法 + /** + * 购物车商品数量(条数) + * @param userId Integer 用户id + * @param status Boolean 商品类型:true-有效商品,false-无效商品 + * @return Integer + */ + private Integer getUserCountByStatus(Integer userId, Boolean status) { + //购物车商品种类数量 + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(StoreCart::getUid, userId); + lambdaQueryWrapper.eq(StoreCart::getStatus, status); + lambdaQueryWrapper.eq(StoreCart::getIsNew, false); + return dao.selectCount(lambdaQueryWrapper); + } + + /** + * 购物车购买商品总数量 + * @param userId Integer 用户id + * @param status 商品类型:true-有效商品,false-无效商品 + * @return Integer + */ + private Integer getUserSumByStatus(Integer userId, Boolean status) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.select("ifnull(sum(cart_num), 0) as cart_num"); + queryWrapper.eq("uid", userId); + queryWrapper.eq("is_new", false); + queryWrapper.eq("status", status); + StoreCart storeCart = dao.selectOne(queryWrapper); + if (ObjectUtil.isNull(storeCart)) { + return 0; + } + return storeCart.getCartNum(); + } + + /** + * 根据购物车id更新状态 + * @param carId 购物车id + * @param flag 待更新状态值 + * @return 更新结果 + */ + private Boolean productStatusEnableFlag(Long carId, Boolean flag) { + StoreCart storeCartPram = new StoreCart(); + storeCartPram.setId(carId); + List existStoreCartProducts = getByEntity(storeCartPram); + if(ObjectUtil.isNull(existStoreCartProducts)) return false; + existStoreCartProducts = existStoreCartProducts.stream().map(e->{ + e.setStatus(flag); + return e; + }).collect(Collectors.toList()); + return updateBatchById(existStoreCartProducts); + } +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreCombinationServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreCombinationServiceImpl.java new file mode 100644 index 0000000..cf38625 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreCombinationServiceImpl.java @@ -0,0 +1,1147 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.model.order.StoreOrder; +import com.zbkj.common.model.product.StoreProduct; +import com.zbkj.common.model.product.StoreProductAttr; +import com.zbkj.common.model.product.StoreProductAttrValue; +import com.zbkj.common.model.product.StoreProductDescription; +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.constants.ProductConstants; +import com.zbkj.common.exception.CrmebException; +import com.github.pagehelper.Page; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.zbkj.common.request.*; +import com.zbkj.common.response.*; +import com.zbkj.common.utils.CrmebUtil; +import com.zbkj.common.utils.DateUtil; +import com.zbkj.common.utils.RedisUtil; +import com.zbkj.common.model.combination.StoreCombination; +import com.zbkj.common.model.combination.StorePink; +import com.zbkj.common.model.record.UserVisitRecord; +import com.zbkj.common.model.user.User; +import com.zbkj.service.dao.StoreCombinationDao; +import com.zbkj.service.service.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationContext; +import org.springframework.stereotype.Service; +import org.springframework.transaction.support.TransactionTemplate; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +/** + * StoreCombinationService 实现类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class StoreCombinationServiceImpl extends ServiceImpl implements StoreCombinationService { + + @Resource + private StoreCombinationDao dao; + + @Autowired + private StorePinkService storePinkService; + + @Autowired + private SystemAttachmentService systemAttachmentService; + + @Autowired + private StoreProductAttrService storeProductAttrService; + + @Autowired + private StoreProductAttrValueService storeProductAttrValueService; + + @Autowired + private StoreProductAttrResultService storeProductAttrResultService; + + @Autowired + private StoreProductDescriptionService storeProductDescriptionService; + + @Autowired + private UserService userService; + + @Autowired + private StoreProductRelationService storeProductRelationService; + + @Autowired + private StoreProductService storeProductService; + + @Autowired + private StoreOrderService storeOrderService; + + private OrderService orderService; + + @Autowired + public void setOrderService(ApplicationContext applicationContext) { + this.orderService = applicationContext.getBean(OrderService.class); + } + + @Autowired + private RedisUtil redisUtil; + + @Autowired + private SystemGroupDataService systemGroupDataService; + + @Autowired + private TransactionTemplate transactionTemplate; + + @Autowired + private UserVisitRecordService userVisitRecordService; + + private static final Logger logger = LoggerFactory.getLogger(StoreCombinationServiceImpl.class); + + /** + * 分页显示拼团商品表 + * + * @param request 请求参数 + * @param pageParamRequest 分页类参数 + * @return List + */ + @Override + public PageInfo getList(StoreCombinationSearchRequest request, PageParamRequest pageParamRequest) { + Page combinationPage = PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(StoreCombination::getIsDel, false); + if (StrUtil.isNotEmpty(request.getKeywords())) { + lambdaQueryWrapper.and(i -> i.like(StoreCombination::getProductId, request.getKeywords()) + .or().like(StoreCombination::getId, request.getKeywords()) + .or().like(StoreCombination::getTitle, request.getKeywords())); + } + if (ObjectUtil.isNotNull(request.getIsShow())) { + lambdaQueryWrapper.eq(StoreCombination::getIsShow, request.getIsShow() == 1); + } + lambdaQueryWrapper.orderByDesc(StoreCombination::getSort, StoreCombination::getId); + List storeCombinationList = dao.selectList(lambdaQueryWrapper); + if (CollUtil.isEmpty(storeCombinationList)) { + return CommonPage.copyPageInfo(combinationPage, CollUtil.newArrayList()); + } + + List responseList = storeCombinationList.stream().map(combination -> { + //原价 拼团人数 参与人数 成团数量 限量剩余 + StoreCombinationResponse combinationResponse = new StoreCombinationResponse(); + BeanUtils.copyProperties(combination, combinationResponse); + combinationResponse.setRemainingQuota(combination.getQuota()); + List pinkList = storePinkService.getListByCid(combination.getId()); + combinationResponse.setCountPeople(0); + combinationResponse.setCountPeopleAll(0); + combinationResponse.setCountPeoplePink(0); + if (CollUtil.isNotEmpty(pinkList)) { + List teamList = pinkList.stream().filter(i -> i.getKId() == 0).collect(Collectors.toList()); + List successTeam = teamList.stream().filter(i -> i.getStatus() == 2).collect(Collectors.toList()); + combinationResponse.setCountPeople(teamList.size()); + combinationResponse.setCountPeopleAll(pinkList.size()); + combinationResponse.setCountPeoplePink(successTeam.size()); + } + combinationResponse.setStopTimeStr(DateUtil.timestamp2DateStr(combination.getStopTime(), Constants.DATE_FORMAT_DATE)); + return combinationResponse; + }).collect(Collectors.toList()); + + return CommonPage.copyPageInfo(combinationPage, responseList); + } + + /** + * 新增拼团商品 + * + * @param request 新增请求参数 + * @return Boolean + */ + @Override + public Boolean saveCombination(StoreCombinationRequest request) { + if (!request.getSpecType()) { + if (request.getAttrValue().size() > 1) { + throw new CrmebException("单规格商品属性值不能大于1"); + } + } + // 过滤掉checked=false的数据 +// clearNotCheckedAndValidationPrice(request); + + StoreCombination storeCombination = new StoreCombination(); + BeanUtils.copyProperties(request, storeCombination); + // 校验结束时间 + Long stopTime = DateUtil.dateStr2Timestamp(request.getStopTime(), Constants.DATE_TIME_TYPE_END); + if (stopTime <= System.currentTimeMillis()) { + throw new CrmebException("活动结束时间不能小于当前时间"); + } + + storeCombination.setId(null); + // 头图、轮播图 + storeCombination.setImage(systemAttachmentService.clearPrefix(request.getImage())); + storeCombination.setImages(systemAttachmentService.clearPrefix(request.getImages())); + // 活动开始结束时间 + storeCombination.setStartTime(DateUtil.dateStr2Timestamp(request.getStartTime(), Constants.DATE_TIME_TYPE_BEGIN)); + storeCombination.setStopTime(stopTime); + storeCombination.setAddTime(System.currentTimeMillis()); + storeCombination.setSales(0); + + List attrValueAddRequestList = request.getAttrValue(); + // 计算价格 + StoreProductAttrValueAddRequest minAttrValue = attrValueAddRequestList.stream().min(Comparator.comparing(StoreProductAttrValueAddRequest::getPrice)).get(); + storeCombination.setPrice(minAttrValue.getPrice()); + storeCombination.setOtPrice(minAttrValue.getOtPrice()); + storeCombination.setCost(minAttrValue.getCost()); + storeCombination.setStock(attrValueAddRequestList.stream().mapToInt(StoreProductAttrValueAddRequest::getStock).sum()); + int quotaTotal = attrValueAddRequestList.stream().mapToInt(StoreProductAttrValueAddRequest::getQuota).sum(); + storeCombination.setQuota(quotaTotal); + storeCombination.setQuotaShow(quotaTotal); + + List addRequestList = request.getAttr(); + List attrList = addRequestList.stream().map(e -> { + StoreProductAttr attr = new StoreProductAttr(); + BeanUtils.copyProperties(e, attr); + attr.setType(Constants.PRODUCT_TYPE_PINGTUAN); + return attr; + }).collect(Collectors.toList()); + + List attrValueList = attrValueAddRequestList.stream().map(e -> { + StoreProductAttrValue attrValue = new StoreProductAttrValue(); + BeanUtils.copyProperties(e, attrValue); + attrValue.setSuk(e.getSuk()); + attrValue.setQuota(e.getQuota()); + attrValue.setQuotaShow(e.getQuota()); + attrValue.setType(Constants.PRODUCT_TYPE_PINGTUAN); + attrValue.setImage(systemAttachmentService.clearPrefix(e.getImage())); + return attrValue; + }).collect(Collectors.toList()); + + // 处理富文本 + StoreProductDescription spd = new StoreProductDescription(); + spd.setDescription(request.getContent().length() > 0 ? systemAttachmentService.clearPrefix(request.getContent()) : ""); + spd.setType(Constants.PRODUCT_TYPE_PINGTUAN); + + Boolean execute = transactionTemplate.execute(e -> { + save(storeCombination); + + attrList.forEach(attr -> attr.setProductId(storeCombination.getId())); + attrValueList.forEach(value -> value.setProductId(storeCombination.getId())); + storeProductAttrService.saveBatch(attrList); + storeProductAttrValueService.saveBatch(attrValueList); + + spd.setProductId(storeCombination.getId()); + storeProductDescriptionService.deleteByProductId(storeCombination.getId(), Constants.PRODUCT_TYPE_PINGTUAN); + storeProductDescriptionService.save(spd); + + return Boolean.TRUE; + }); + + return execute; + } + + /** + * 删除拼团商品 + */ + @Override + public Boolean deleteById(Integer id) { + StoreCombination combination = getById(id); + long timeMillis = System.currentTimeMillis(); + if (combination.getIsShow().equals(true) && combination.getStartTime() <= timeMillis && timeMillis <= combination.getStopTime()) { + throw new CrmebException("活动开启中,商品不支持删除"); + } + + StoreCombination storeCombination = new StoreCombination(); + storeCombination.setId(id).setIsDel(true); + return updateById(storeCombination); + } + + /** + * 编辑拼团商品 + * + * @param request 编辑请求参数 + * @return Boolean + */ + @Override + public Boolean updateCombination(StoreCombinationRequest request) { + if (ObjectUtil.isNull(request.getId())) { + throw new CrmebException("拼团商品id不能为空"); + } + StoreCombination existCombination = getById(request.getId()); + if (ObjectUtil.isNull(existCombination) || existCombination.getIsDel()) { + throw new CrmebException("拼团商品不存在"); + } + long timeMillis = System.currentTimeMillis(); + if (existCombination.getIsShow().equals(true) && existCombination.getStartTime() <= timeMillis && timeMillis <= existCombination.getStopTime()) { + throw new CrmebException("活动开启中,商品不支持修改"); + } + + StoreCombination storeCombination = new StoreCombination(); + BeanUtils.copyProperties(request, storeCombination); + // 头图、轮播图 + storeCombination.setImage(systemAttachmentService.clearPrefix(request.getImage())); + storeCombination.setImages(systemAttachmentService.clearPrefix(request.getImages())); + // 活动开始结束时间 + storeCombination.setStartTime(DateUtil.dateStr2Timestamp(request.getStartTime(), Constants.DATE_TIME_TYPE_BEGIN)); + storeCombination.setStopTime(DateUtil.dateStr2Timestamp(request.getStopTime(), Constants.DATE_TIME_TYPE_END)); + + List attrValueAddRequestList = request.getAttrValue(); + // 计算价格 + StoreProductAttrValueAddRequest minAttrValue = attrValueAddRequestList.stream().min(Comparator.comparing(StoreProductAttrValueAddRequest::getPrice)).get(); + storeCombination.setPrice(minAttrValue.getPrice()); + storeCombination.setOtPrice(minAttrValue.getOtPrice()); + storeCombination.setCost(minAttrValue.getCost()); + storeCombination.setStock(attrValueAddRequestList.stream().mapToInt(StoreProductAttrValueAddRequest::getStock).sum()); + int quotaTotal = attrValueAddRequestList.stream().mapToInt(StoreProductAttrValueAddRequest::getQuota).sum(); + storeCombination.setQuota(quotaTotal); + storeCombination.setQuotaShow(quotaTotal); + + // attr部分 + List addRequestList = request.getAttr(); + List attrAddList = CollUtil.newArrayList(); + List attrUpdateList = CollUtil.newArrayList(); + addRequestList.forEach(e -> { + StoreProductAttr attr = new StoreProductAttr(); + BeanUtils.copyProperties(e, attr); + if (ObjectUtil.isNull(attr.getId())) { + attr.setProductId(storeCombination.getId()); + attr.setType(Constants.PRODUCT_TYPE_PINGTUAN); + attrAddList.add(attr); + } else { + attr.setProductId(storeCombination.getId()); + attr.setIsDel(false); + attrUpdateList.add(attr); + } + }); + + // attrValue部分 + List attrValueAddList = CollUtil.newArrayList(); + List attrValueUpdateList = CollUtil.newArrayList(); + attrValueAddRequestList.forEach(e -> { + StoreProductAttrValue attrValue = new StoreProductAttrValue(); + BeanUtils.copyProperties(e, attrValue); + attrValue.setSuk(e.getSuk()); + attrValue.setImage(systemAttachmentService.clearPrefix(e.getImage())); + attrValue.setQuota(e.getQuota()); + attrValue.setQuotaShow(e.getQuota()); + if (ObjectUtil.isNull(attrValue.getId())) { + attrValue.setProductId(storeCombination.getId()); + attrValue.setType(Constants.PRODUCT_TYPE_PINGTUAN); + attrValueAddList.add(attrValue); + } else { + attrValue.setProductId(storeCombination.getId()); + attrValue.setIsDel(false); + attrValueUpdateList.add(attrValue); + } + }); + + // 处理富文本 + StoreProductDescription spd = new StoreProductDescription(); + spd.setDescription(request.getContent().length() > 0 ? systemAttachmentService.clearPrefix(request.getContent()) : ""); + spd.setType(Constants.PRODUCT_TYPE_PINGTUAN); + spd.setProductId(request.getId()); + + Boolean execute = transactionTemplate.execute(e -> { + dao.updateById(storeCombination); + + // 先删除原用attr+value + storeProductAttrService.deleteByProductIdAndType(storeCombination.getId(), Constants.PRODUCT_TYPE_PINGTUAN); + storeProductAttrValueService.deleteByProductIdAndType(storeCombination.getId(), Constants.PRODUCT_TYPE_PINGTUAN); + + if (CollUtil.isNotEmpty(attrAddList)) { + storeProductAttrService.saveBatch(attrAddList); + } + if (CollUtil.isNotEmpty(attrUpdateList)) { + storeProductAttrService.saveOrUpdateBatch(attrUpdateList); + } + + if (CollUtil.isNotEmpty(attrValueAddList)) { + storeProductAttrValueService.saveBatch(attrValueAddList); + } + if (CollUtil.isNotEmpty(attrValueUpdateList)) { + storeProductAttrValueService.saveOrUpdateBatch(attrValueUpdateList); + } + + storeProductDescriptionService.deleteByProductId(storeCombination.getId(), Constants.PRODUCT_TYPE_PINGTUAN); + storeProductDescriptionService.save(spd); + + return Boolean.TRUE; + }); + + return execute; + } + + /** + * 拼团商品详情 + * + * @param id 拼团商品ID + * @return StoreProductInfoResponse + */ + @Override + public StoreProductInfoResponse getAdminDetail(Integer id) { + StoreCombination storeCombination = dao.selectById(id); + if (ObjectUtil.isNull(storeCombination) || storeCombination.getIsDel()) { + throw new CrmebException("未找到对应商品信息"); + } + StoreProductInfoResponse storeProductResponse = new StoreProductInfoResponse(); + BeanUtils.copyProperties(storeCombination, storeProductResponse); +// storeProductResponse.setStartTimeStr(DateUtil.timestamp2DateStr(storeCombination.getStartTime(), Constants.DATE_FORMAT_DATE)); +// storeProductResponse.setStopTimeStr(DateUtil.timestamp2DateStr(storeCombination.getStopTime(), Constants.DATE_FORMAT_DATE)); + + // 查询attr + List attrs = storeProductAttrService.getListByProductIdAndType(id, Constants.PRODUCT_TYPE_PINGTUAN); + storeProductResponse.setAttr(attrs); + storeProductResponse.setSliderImage(String.join(",", storeCombination.getImages())); + + boolean specType = false; + if (attrs.size() > 1) { + specType = true; + } + storeProductResponse.setSpecType(specType); + + List comAttrValueList = storeProductAttrValueService.getListByProductIdAndType(id, ProductConstants.PRODUCT_TYPE_PINGTUAN); + // 查询主商品sku + List attrValueList = storeProductAttrValueService.getListByProductIdAndType(storeCombination.getProductId(), Constants.PRODUCT_TYPE_NORMAL); + + List valueResponseList = attrValueList.stream().map(e -> { + AttrValueResponse valueResponse = new AttrValueResponse(); + Integer tempId = 0; + for (StoreProductAttrValue value : comAttrValueList) { + if (value.getSuk().equals(e.getSuk())) { + tempId = value.getId(); + BeanUtils.copyProperties(value, valueResponse); + break; + } + } + if (tempId.equals(0)) { + BeanUtils.copyProperties(e, valueResponse); + valueResponse.setId(null); + } else { + valueResponse.setId(tempId); + } + return valueResponse; + }).collect(Collectors.toList()); + storeProductResponse.setAttrValue(valueResponseList); + + StoreProductDescription sd = storeProductDescriptionService.getByProductIdAndType(id, Constants.PRODUCT_TYPE_PINGTUAN); + if (ObjectUtil.isNotNull(sd)) { + storeProductResponse.setContent(ObjectUtil.isNull(sd.getDescription()) ? "" : sd.getDescription()); + } + return storeProductResponse; + } + + /** + * 修改拼团商品状态 + */ + @Override + public Boolean updateCombinationShow(Integer id, Boolean isShow) { + StoreCombination temp = getById(id); + if (ObjectUtil.isNull(temp) || temp.getIsDel()) { + throw new CrmebException("拼团商品不存在"); + } + if (isShow) { + // 判断商品是否存在 + StoreProduct product = storeProductService.getById(temp.getProductId()); + if (ObjectUtil.isNull(product)) { + throw new CrmebException("关联的商品已删除,无法开启活动"); + } + } + + StoreCombination storeCombination = new StoreCombination(); + storeCombination.setId(id).setIsShow(isShow); + return updateById(storeCombination); + } + + /** + * admin拼团统计 + */ + @Override + public Map getAdminStatistics() { + StorePink spavPink = new StorePink(); + spavPink.setKId(0); + List pinkList = storePinkService.getByEntity(spavPink); + Map map = CollUtil.newHashMap(); + map.put("countPeople", 0); + map.put("countTeam", 0); + if (CollUtil.isNotEmpty(pinkList)) { + map.put("countPeople", storePinkService.count()); + long countTeam = pinkList.stream().filter(i -> i.getStatus() == 2).count(); + map.put("countTeam", countTeam); + } + return map; + } + + /** + * H5拼团商品列表 + */ + @Override + public List getH5List(PageParamRequest pageParamRequest) { + PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.select(StoreCombination::getId ,StoreCombination::getProductId ,StoreCombination::getImage ,StoreCombination::getTitle + ,StoreCombination::getPeople ,StoreCombination::getOtPrice ,StoreCombination::getPrice ,StoreCombination::getStock); + lqw.eq(StoreCombination::getIsDel, false); + lqw.eq(StoreCombination::getIsShow, true); + long millis = System.currentTimeMillis(); + lqw.le(StoreCombination::getStartTime, millis); + lqw.ge(StoreCombination::getStopTime, millis); + lqw.orderByDesc(StoreCombination::getSort, StoreCombination::getId); + List combinationList = dao.selectList(lqw); + if (CollUtil.isEmpty(combinationList)) { + return CollUtil.newArrayList(); + } + List responseList = combinationList.stream().map(e -> { + StoreCombinationH5Response response = new StoreCombinationH5Response(); + BeanUtils.copyProperties(e, response); + return response; + }).collect(Collectors.toList()); + return responseList; + } + + /** + * H5拼团商品详情 + * + * @param comId 拼团商品编号 + * @return CombinationDetailResponse + */ + @Override + public CombinationDetailResponse getH5Detail(Integer comId) { + CombinationDetailResponse detailResponse = new CombinationDetailResponse(); + StoreCombination storeCombination = getById(comId); + if (ObjectUtil.isNull(storeCombination) || storeCombination.getIsDel()) { + throw new CrmebException("对应拼团商品不存在"); + } + if (!storeCombination.getIsShow()) { + throw new CrmebException("拼团商品已下架"); + } + CombinationDetailH5Response infoResponse = new CombinationDetailH5Response(); + BeanUtils.copyProperties(storeCombination, infoResponse); + infoResponse.setStoreName(storeCombination.getTitle()); + infoResponse.setSliderImage(storeCombination.getImages()); + infoResponse.setStoreInfo(storeCombination.getInfo()); + // 详情 + StoreProductDescription sd = storeProductDescriptionService.getOne( + new LambdaQueryWrapper() + .eq(StoreProductDescription::getProductId, comId) + .eq(StoreProductDescription::getType, Constants.PRODUCT_TYPE_PINGTUAN)); + if (ObjectUtil.isNotNull(sd)) { + infoResponse.setContent(ObjectUtil.isNull(sd.getDescription()) ? "" : sd.getDescription()); + } + + // 获取主商品信息 + StoreProduct storeProduct = storeProductService.getById(storeCombination.getProductId()); + // 主商品状态 + if (storeProduct.getIsDel()) { + detailResponse.setMasterStatus("delete"); + } else if (!storeProduct.getIsShow()) { + detailResponse.setMasterStatus("soldOut"); + } else if (storeProduct.getStock() <= 0) { + detailResponse.setMasterStatus("sellOut"); + } else { + detailResponse.setMasterStatus("normal"); + } + + // 拼团销量 = 原商品销量(包含虚拟销量) + infoResponse.setSales(storeProduct.getSales()); + infoResponse.setFicti(storeProduct.getFicti()); + detailResponse.setStoreCombination(infoResponse); + + // 获取拼团商品规格 + List attrList = storeProductAttrService.getListByProductIdAndType(comId, Constants.PRODUCT_TYPE_PINGTUAN); + // 根据制式设置attr属性 +// List skuAttr = getSkuAttr(attrList); + detailResponse.setProductAttr(attrList); + + // 根据制式设置sku属性 + HashMap skuMap = CollUtil.newHashMap(); + // 获取主商品sku + List storeProductAttrValues = storeProductAttrValueService.getListByProductIdAndType(storeCombination.getProductId(), Constants.PRODUCT_TYPE_NORMAL); + // 获取拼团商品sku + List combinationAttrValues = storeProductAttrValueService.getListByProductIdAndType(storeCombination.getId(), Constants.PRODUCT_TYPE_PINGTUAN); + + for (StoreProductAttrValue productAttrValue : storeProductAttrValues) { + StoreProductAttrValueResponse atr = new StoreProductAttrValueResponse(); + List valueList = combinationAttrValues.stream().filter(e -> productAttrValue.getSuk().equals(e.getSuk())).collect(Collectors.toList()); + if (CollUtil.isEmpty(valueList)) { + BeanUtils.copyProperties(productAttrValue, atr); + } else { + BeanUtils.copyProperties(valueList.get(0), atr); + } + if (ObjectUtil.isNull(atr.getQuota())) { + atr.setQuota(0); + } + skuMap.put(atr.getSuk(), atr); + } + detailResponse.setProductValue(skuMap); + + // 设置点赞和收藏 + User user = userService.getInfo(); + if (ObjectUtil.isNotNull(user) && ObjectUtil.isNotNull(user.getUid())) { + detailResponse.setUserCollect(storeProductRelationService.getLikeOrCollectByUser(user.getUid(), storeCombination.getProductId(), false).size() > 0); + } else { + detailResponse.setUserCollect(false); + } + + detailResponse.setPinkOkSum(0); + // 拼团团长列表 + List headList = storePinkService.getListByCidAndKid(storeCombination.getId(), 0); + if (CollUtil.isNotEmpty(headList)) { + List headPinkList = headList.stream().map(i -> { + StorePinkResponse pinkResponse = new StorePinkResponse(); + BeanUtils.copyProperties(i, pinkResponse); + User teamUser = userService.getById(i.getUid()); + pinkResponse.setAvatar(Optional.ofNullable(teamUser.getAvatar()).orElse("")); + pinkResponse.setNickname(teamUser.getNickname()); + return pinkResponse; + }).collect(Collectors.toList()); + + // 拼团成功部分 + List okList = headPinkList.stream().filter(i -> i.getStatus().equals(2)).collect(Collectors.toList()); + if (ObjectUtil.isNotEmpty(okList)) { + // 拼团完成的商品总件数 + List pinkOkList = CollUtil.newArrayList(); + okList.forEach(e -> { + List list = storePinkService.getListByCidAndKid(e.getCid(), e.getId()); + if (CollUtil.isNotEmpty(list)) { + pinkOkList.addAll(list); + } + }); + List responseList = pinkOkList.stream().map(i -> { + StorePinkResponse pinkResponse = new StorePinkResponse(); + BeanUtils.copyProperties(i, pinkResponse); + User teamUser = userService.getById(i.getUid()); + pinkResponse.setAvatar(Optional.ofNullable(teamUser.getAvatar()).orElse("")); + pinkResponse.setNickname(teamUser.getNickname()); + return pinkResponse; + }).collect(Collectors.toList()); + okList.addAll(responseList); + int pinkOkSum = okList.stream().mapToInt(StorePinkResponse::getTotalNum).sum(); + detailResponse.setPinkOkSum(pinkOkSum); + //拼团完成的用户 + detailResponse.setPinkOkList(okList); + } + + // 可拼团团长部分 + List pinkingList = headPinkList.stream().filter(i -> { + boolean filter = false; + if (i.getStatus().equals(1) && i.getStopTime() > System.currentTimeMillis()) { + filter = true; + } + return filter; + }).collect(Collectors.toList()); + // 获取还剩几人成团 + pinkingList.forEach(i -> { + Integer countPeople = storePinkService.getCountByKid(i.getId()); + i.setCountPeople(countPeople); + i.setCount(i.getPeople() - countPeople); + }); + + // 所有团长列表 + detailResponse.setPinkList(pinkingList); + } + + // 保存用户访问记录 + UserVisitRecord visitRecord = new UserVisitRecord(); + visitRecord.setDate(cn.hutool.core.date.DateUtil.date().toString("yyyy-MM-dd")); + visitRecord.setUid(userService.getUserId()); + visitRecord.setVisitType(3); + userVisitRecordService.save(visitRecord); + return detailResponse; + } + + /** + * 去拼团 + * + * @param pinkId 拼团团长单ID + * @return GoPinkResponse + */ + @Override + public GoPinkResponse goPink(Integer pinkId) { + int isOk = 0;//判断拼团是否完成 + int userBool = 0;//判断当前用户是否在团内 0未在 1在 + int pinkBool = 0;//判断拼团是否成功 0未成功 1成功 + + StorePink teamPink = storePinkService.getById(pinkId); + if (ObjectUtil.isNull(teamPink) || teamPink.getIsRefund()) throw new CrmebException("对应的拼团不存在"); + StoreCombination storeCombination = getById(teamPink.getCid()); + if (ObjectUtil.isNull(storeCombination) || storeCombination.getIsDel()) throw new CrmebException("对应拼团商品不存在"); + + // 判断拼团活动时效 + if (!storeCombination.getIsShow()) { + throw new CrmebException("拼团活动已结束"); + } + if (System.currentTimeMillis() > storeCombination.getStopTime()) { + throw new CrmebException("拼团活动已结束"); + } + + User user = userService.getInfo(); + + GoPinkResponse goPinkResponse = new GoPinkResponse(); + List pinkList; + if (teamPink.getKId().equals(0)) { + pinkList = storePinkService.getListByCidAndKid(teamPink.getCid(), teamPink.getId()); + pinkList.add(teamPink); + } else { + pinkList = storePinkService.getListByCidAndKid(teamPink.getCid(), teamPink.getKId()); + pinkList.add(storePinkService.getById(teamPink.getKId())); + } + //拼团剩余人数 + int count = teamPink.getPeople() - ( CollUtil.isEmpty(pinkList) ? 0 : pinkList.size() ); + + if (teamPink.getStatus() == 2) {//已完成 + isOk = 1; + pinkBool = 1; + } + if (teamPink.getStatus() == 1) {//进行中 + if (count < 1) {// 拼团已完成 + isOk = 1; + pinkBool = 1; + // 拼团完成处理 + storePinkService.pinkSuccess(teamPink.getId()); + } + } + + List uidList = pinkList.stream().map(StorePink::getUid).collect(Collectors.toList()); + uidList.add(teamPink.getUid()); + if (uidList.contains(user.getUid())) { + userBool = 1; + } + + // 处理用户头像昵称 + List pinkResponseList = CollUtil.newArrayList(); + // 团长 + StorePinkResponse storePinkTResponse = new StorePinkResponse(); + for (StorePink pink : pinkList) { + if (pink.getKId().equals(0)) { + BeanUtils.copyProperties(pink, storePinkTResponse); + if (pink.getUid().equals(user.getUid())) { + storePinkTResponse.setNickname(user.getNickname()); + storePinkTResponse.setAvatar(user.getAvatar()); + } else { + User teamUser = userService.getById(pink.getUid()); + storePinkTResponse.setNickname(teamUser.getNickname()); + storePinkTResponse.setAvatar(teamUser.getAvatar()); + } + continue; + } + StorePinkResponse storePinkResponse = new StorePinkResponse(); + BeanUtils.copyProperties(pink, storePinkResponse); + User userOne = userService.getById(pink.getUid()); + storePinkResponse.setNickname(userOne.getNickname()); + storePinkResponse.setAvatar(userOne.getAvatar()); + pinkResponseList.add(storePinkResponse); + } + + goPinkResponse.setCount(count); + goPinkResponse.setIsOk(isOk); + goPinkResponse.setPinkBool(pinkBool); + goPinkResponse.setUserBool(userBool); + if (userBool == 1) { + pinkList.forEach(e -> { + if (e.getUid().equals(user.getUid())) { + goPinkResponse.setCurrentPinkOrder(e.getOrderId()); + } + }); + } + goPinkResponse.setPinkAll(pinkResponseList); + goPinkResponse.setPinkT(storePinkTResponse); + goPinkResponse.setUserInfo(user); + + // storeCombination部分 + StoreCombinationResponse detailResponse = new StoreCombinationResponse(); + BeanUtils.copyProperties(storeCombination, detailResponse); + detailResponse.setSpecType(false); + // sku部分 + StoreProductAttr spavAttr = new StoreProductAttr(); + spavAttr.setProductId(storeCombination.getId()); + spavAttr.setType(Constants.PRODUCT_TYPE_PINGTUAN); + List attrList = storeProductAttrService.getByEntity(spavAttr); + List> skuAttrList = getSkuAttrList(attrList); + detailResponse.setProductAttr(skuAttrList); + if (CollUtil.isNotEmpty(attrList) && attrList.size() > 1) { + detailResponse.setSpecType(true); + } + // 单属性时讲attrValueId 赋值给外层方便前端使用 + if (!detailResponse.getSpecType()) { + detailResponse.setAloneAttrValueId(attrList.get(0).getId()); + } + + + StoreProductAttrValue spavValue = new StoreProductAttrValue(); + spavValue.setProductId(storeCombination.getId()); + spavValue.setType(Constants.PRODUCT_TYPE_PINGTUAN); + List valueList = storeProductAttrValueService.getByEntity(spavValue); + // H5 端用于生成skuList + List sPAVResponses = new ArrayList<>(); + for (StoreProductAttrValue storeProductAttrValue : valueList) { + StoreProductAttrValueResponse atr = new StoreProductAttrValueResponse(); + BeanUtils.copyProperties(storeProductAttrValue, atr); + sPAVResponses.add(atr); + } + HashMap skuMap = new HashMap<>(); + for (StoreProductAttrValueResponse attrValue : sPAVResponses) { + skuMap.put(attrValue.getSuk(), attrValue); + } + + detailResponse.setProductValue(skuMap); + goPinkResponse.setStoreCombination(detailResponse); + return goPinkResponse; + } + + /** + * 更多拼团信息 + */ + @Override + public PageInfo getMore(PageParamRequest pageParamRequest, Integer comId) { + Page combinationPage = PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + if (ObjectUtil.isNotNull(comId)) { + lqw.ne(StoreCombination::getId, comId); + } + lqw.eq(StoreCombination::getIsDel, false); + lqw.eq(StoreCombination::getIsShow, true); + long millis = System.currentTimeMillis(); + lqw.le(StoreCombination::getStartTime, millis); + lqw.ge(StoreCombination::getStopTime, millis); + lqw.orderByDesc(StoreCombination::getSort, StoreCombination::getId); + List storeCombinations = dao.selectList(lqw); + return CommonPage.copyPageInfo(combinationPage, storeCombinations); + } + + /** + * 取消拼团 + * + * @return 此处只是转为申请退款订单 + * 自己是团长,取消后,顺位第一人变为团长 + * 自己不是团长,直接取消 + */ + @Override + public Boolean removePink(StorePinkRequest storePinkRequest) { + StorePink userPink = storePinkService.getById(storePinkRequest.getId()); + if (ObjectUtil.isNull(userPink)) throw new CrmebException("未查到拼团信息,无法取消"); + if (userPink.getIsRefund()) throw new CrmebException("拼团订单已退款"); + // 获取是否拼团成功 + if (userPink.getStatus() == 2) { + throw new CrmebException("拼团已完成,无法取消"); + } + Integer kid = userPink.getKId() > 0 ? userPink.getKId() : userPink.getId(); + Integer count = storePinkService.getCountByKid(kid); + if (count.equals(userPink.getPeople())) { + // 拼团完成操作 + storePinkService.pinkSuccess(kid); + throw new CrmebException("拼团已完成,无法取消"); + } + if (userPink.getStatus() == 3) { + throw new CrmebException("拼团已申请取消"); + } + + StoreOrder order = storeOrderService.getByOderId(userPink.getOrderId()); + if (ObjectUtil.isNull(order) || order.getIsDel()) throw new CrmebException("拼团订单不存在"); + if (order.getStatus() == -1 && order.getRefundStatus() != 0) { + throw new CrmebException("拼团订单已进入退款流程"); + } + + // 订单申请退款 + OrderRefundApplyRequest refundRequest = new OrderRefundApplyRequest(); + refundRequest.setId(order.getId()); + refundRequest.setUni(order.getOrderId()); + refundRequest.setText("拼团订单取消,申请退款"); + refundRequest.setExplain("用户取消拼团订单,申请退款"); + boolean apply = orderService.refundApply(refundRequest); + if (!apply) throw new CrmebException("订单申请退款失败"); + + // 拼团改为未完成 + userPink.setStatus(3).setStopTime(System.currentTimeMillis()); + storePinkService.updateById(userPink); + if (userPink.getKId() == 0) {// 是团长 + List pinkList = storePinkService.getListByCidAndKid(userPink.getCid(), userPink.getId()); + if (CollUtil.isNotEmpty(pinkList)) { + // 团员更换团长 + StorePink newHeadPink = pinkList.get(pinkList.size() - 1); + newHeadPink.setKId(0); + pinkList.remove(pinkList.size() - 1); + pinkList.forEach(i -> i.setKId(newHeadPink.getId())); + pinkList.add(newHeadPink); + storePinkService.updateBatchById(pinkList); + } + } + + return true; + } + + @Override + public void consumeProductStock() { + String redisKey = Constants.PRODUCT_COMBINATION_STOCK_UPDATE; + Long size = redisUtil.getListSize(redisKey); + logger.info("StoreProductServiceImpl.doProductStock | size:" + size); + if (size < 1) { + return; + } + for (int i = 0; i < size; i++) { + //如果10秒钟拿不到一个数据,那么退出循环 + Object data = redisUtil.getRightPop(redisKey, 10L); + if (null == data) { + continue; + } + try { + StoreProductStockRequest storeProductStockRequest = + com.alibaba.fastjson.JSONObject.toJavaObject(com.alibaba.fastjson.JSONObject.parseObject(data.toString()), StoreProductStockRequest.class); + boolean result = doProductStock(storeProductStockRequest); + if (!result) { + redisUtil.lPush(redisKey, data); + } + } catch (Exception e) { + redisUtil.lPush(redisKey, data); + } + } + } + + /** + * 获取当前时间的拼团商品 + * + * @param productId 商品编号 + */ + @Override + public List getCurrentBargainByProductId(Integer productId) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(StoreCombination::getProductId, productId); + lqw.eq(StoreCombination::getIsShow, true); + long millis = System.currentTimeMillis(); + lqw.le(StoreCombination::getStartTime, millis); + lqw.ge(StoreCombination::getStopTime, millis); + lqw.orderByDesc(StoreCombination::getSort, StoreCombination::getId); + return dao.selectList(lqw); + } + + /** + * 商品是否存在拼团活动 + * + * @param productId 商品编号 + */ + @Override + public Boolean isExistActivity(Integer productId) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(StoreCombination::getProductId, productId); + List combinationList = dao.selectList(lqw); + if (CollUtil.isEmpty(combinationList)) { + return false; + } + // 判断关联的商品是否处于活动开启状态 + List list = combinationList.stream().filter(i -> i.getIsShow().equals(true)).collect(Collectors.toList()); + return CollUtil.isNotEmpty(list); + } + + /** + * 查询带异常 + * + * @param combinationId 拼团商品id + * @return StoreCombination + */ + @Override + public StoreCombination getByIdException(Integer combinationId) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(StoreCombination::getId, combinationId); + lqw.eq(StoreCombination::getIsDel, false); + lqw.eq(StoreCombination::getIsShow, true); + StoreCombination storeCombination = dao.selectOne(lqw); + if (ObjectUtil.isNull(storeCombination)) throw new CrmebException("拼团商品不存在或未开启"); + return storeCombination; + } + + /** + * 添加/扣减库存 + * + * @param id 秒杀商品id + * @param num 数量 + * @param type 类型:add—添加,sub—扣减 + */ + @Override + public Boolean operationStock(Integer id, Integer num, String type) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + if ("add".equals(type)) { + updateWrapper.setSql(StrUtil.format("stock = stock + {}", num)); + updateWrapper.setSql(StrUtil.format("sales = sales - {}", num)); + updateWrapper.setSql(StrUtil.format("quota = quota + {}", num)); + } + if ("sub".equals(type)) { + updateWrapper.setSql(StrUtil.format("stock = stock - {}", num)); + updateWrapper.setSql(StrUtil.format("sales = sales + {}", num)); + updateWrapper.setSql(StrUtil.format("quota = quota - {}", num)); + // 扣减时加乐观锁保证库存不为负 + updateWrapper.last(StrUtil.format(" and (quota - {} >= 0)", num)); + } + updateWrapper.eq("id", id); + boolean update = update(updateWrapper); + if (!update) { + throw new CrmebException("更新拼团商品库存失败,商品id = " + id); + } + return update; + } + + /** + * 拼团首页数据 + * 拼团数据 + 拼团商品6个 + * 3个用户头像(最多) + * 拼团参与总人数 + * @return CombinationIndexResponse + */ + @Override + public CombinationIndexResponse getIndexInfo() { + // 获取最近的3单拼团订单 + List tempPinkList = storePinkService.findSizePink(3); + List avatarList = CollUtil.newArrayList(); + if (CollUtil.isNotEmpty(tempPinkList)) { + // 获取这三个用户头像 + avatarList = tempPinkList.stream().map(StorePink::getAvatar).collect(Collectors.toList()); + } + // 获取拼团参与总人数 + Integer totalPeople = storePinkService.getTotalPeople(); + + // 获取6个拼团商品 + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(StoreCombination::getIsDel, false); + lqw.eq(StoreCombination::getIsShow, true); + lqw.ge(StoreCombination::getStock, 0); + long millis = System.currentTimeMillis(); + lqw.le(StoreCombination::getStartTime, millis); + lqw.ge(StoreCombination::getStopTime, millis); + lqw.orderByDesc(StoreCombination::getSort, StoreCombination::getId); + lqw.last(" limit 6"); + List combinationList = dao.selectList(lqw); + if (CollUtil.isEmpty(combinationList)) { + return null; + } + combinationList.forEach(e -> { + int percentIntVal = CrmebUtil.percentInstanceIntVal(e.getQuota(), e.getQuotaShow()); + e.setQuotaPercent(percentIntVal); + }); + + CombinationIndexResponse response = new CombinationIndexResponse(); + response.setAvatarList(avatarList); + response.setTotalPeople(totalPeople); + response.setProductList(combinationList); + return response; + } + + /** + * 拼团列表header + * @return CombinationHeaderResponse + */ + @Override + public CombinationHeaderResponse getHeader() { + // 获取最近的3单拼团订单 + List tempPinkList = storePinkService.findSizePink(7); + List avatarList = CollUtil.newArrayList(); + if (CollUtil.isNotEmpty(tempPinkList)) { + // 获取这三个用户头像 + avatarList = tempPinkList.stream().map(StorePink::getAvatar).collect(Collectors.toList()); + } + // 获取拼团参与总人数 + Integer totalPeople = storePinkService.getTotalPeople(); + + // 获取拼团列表banner + List> bannerList = systemGroupDataService.getListMapByGid(Constants.GROUP_DATA_ID_COMBINATION_LIST_BANNNER); + + CombinationHeaderResponse response = new CombinationHeaderResponse(); + response.setAvatarList(avatarList); + response.setTotalPeople(totalPeople); + response.setBannerList(bannerList); + return response; + } + + /** + * 拼团操作库存 + */ + private boolean doProductStock(StoreProductStockRequest storeProductStockRequest) { + // 砍价商品信息回滚 + StoreCombination existCombination = getById(storeProductStockRequest.getCombinationId()); + List existAttr = + storeProductAttrValueService.getListByProductIdAndAttrId( + storeProductStockRequest.getCombinationId(), + storeProductStockRequest.getAttrId().toString(), + storeProductStockRequest.getType()); + if (ObjectUtil.isNull(existCombination) || ObjectUtil.isNull(existAttr)) { // 未找到商品 + logger.info("库存修改任务未获取到商品信息" + JSON.toJSONString(storeProductStockRequest)); + return true; + } + + // 回滚商品库存/销量 并更新 + boolean isPlus = "add".equals(storeProductStockRequest.getOperationType()); + int productStock = isPlus ? existCombination.getStock() + storeProductStockRequest.getNum() : existCombination.getStock() - storeProductStockRequest.getNum(); + existCombination.setStock(productStock); + existCombination.setSales(existCombination.getSales() - storeProductStockRequest.getNum()); + existCombination.setQuota(existCombination.getQuota() + storeProductStockRequest.getNum()); + updateById(existCombination); + + // 回滚sku库存 + for (StoreProductAttrValue attrValue : existAttr) { + int productAttrStock = isPlus ? attrValue.getStock() + storeProductStockRequest.getNum() : attrValue.getStock() - storeProductStockRequest.getNum(); + attrValue.setStock(productAttrStock); + attrValue.setSales(attrValue.getSales() - storeProductStockRequest.getNum()); + attrValue.setQuota(attrValue.getQuota() + storeProductStockRequest.getNum()); + storeProductAttrValueService.updateById(attrValue); + } + + // 商品本身库存回滚 + // StoreProductStockRequest 创建次对象调用商品扣减库存实现扣减上本本身库存 + StoreProductResponse existProductLinkedSeckill = storeProductService.getByProductId(storeProductStockRequest.getProductId()); + for (StoreProductAttrValueResponse attrValueResponse : existProductLinkedSeckill.getAttrValue()) { + if (attrValueResponse.getSuk().equals(storeProductStockRequest.getSuk())) { + StoreProductStockRequest r = new StoreProductStockRequest() + .setAttrId(attrValueResponse.getId()) + .setNum(storeProductStockRequest.getNum()) + .setOperationType("add") + .setProductId(storeProductStockRequest.getProductId()) + .setType(Constants.PRODUCT_TYPE_NORMAL) + .setSuk(storeProductStockRequest.getSuk()); + storeProductService.doProductStock(r); + } + } + + return true; + } + + /** + * 获取制式结构给attr属性 + */ + private List> getSkuAttrList(List attrList) { + List> attrMapList = new ArrayList<>(); + if (CollUtil.isEmpty(attrList)) { + return attrMapList; + } + for (StoreProductAttr attr : attrList) { + HashMap attrMap = new HashMap<>(); + attrMap.put("productId", attr.getProductId()); + attrMap.put("attrName", attr.getAttrName()); + List attrValues = new ArrayList<>(); + String trimAttr = attr.getAttrValues() + .replace("[", "") + .replace("]", ""); + if (attr.getAttrValues().contains(",")) { + attrValues = Arrays.asList(trimAttr.split(",")); + } else { + attrValues.add(trimAttr); + } + attrMap.put("attrValues", attrValues); + + List> attrValueMapList = new ArrayList<>(); + for (String attrValue : attrValues) { + HashMap attrValueMap = new HashMap<>(); + attrValueMap.put("attr", attrValue); + attrValueMapList.add(attrValueMap); + } + attrMap.put("attrValue", attrValueMapList); + attrMapList.add(attrMap); + } + return attrMapList; + } +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreCouponServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreCouponServiceImpl.java new file mode 100644 index 0000000..6a0c9d8 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreCouponServiceImpl.java @@ -0,0 +1,455 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.request.SearchAndPageRequest; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.constants.CouponConstants; +import com.zbkj.common.exception.CrmebException; +import com.github.pagehelper.PageHelper; +import com.zbkj.common.utils.CrmebUtil; +import com.zbkj.common.utils.DateUtil; +import com.zbkj.common.model.category.Category; +import com.zbkj.common.model.coupon.StoreCoupon; +import com.zbkj.common.model.coupon.StoreCouponUser; +import com.zbkj.common.request.StoreCouponRequest; +import com.zbkj.common.request.StoreCouponSearchRequest; +import com.zbkj.common.response.StoreCouponFrontResponse; +import com.zbkj.common.response.StoreCouponInfoResponse; +import com.zbkj.common.model.product.StoreProduct; +import com.zbkj.service.dao.StoreCouponDao; +import com.zbkj.service.service.*; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.stream.Collectors; + +/** + * StoreCouponServiceImpl 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class StoreCouponServiceImpl extends ServiceImpl implements StoreCouponService { + + @Resource + private StoreCouponDao dao; + + @Autowired + private StoreProductService storeProductService; + + @Autowired + private StoreCouponUserService storeCouponUserService; + + @Autowired + private CategoryService categoryService; + + @Autowired + private UserService userService; + + + /** + * 列表 + * @param request 请求参数 + * @param pageParamRequest 分页类参数 + * @return List + */ + @Override + public List getList(StoreCouponSearchRequest request, PageParamRequest pageParamRequest) { + PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + + //带 StoreCoupon 类的多条件查询 + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(StoreCoupon::getIsDel, false); + + if (null != request.getType()) { + lambdaQueryWrapper.eq(StoreCoupon::getType, request.getType()); + } + + if (null != request.getStatus()) { + lambdaQueryWrapper.eq(StoreCoupon::getStatus, request.getStatus()); + } + + if (StrUtil.isNotBlank(request.getName())) { + lambdaQueryWrapper.like(StoreCoupon::getName, request.getName()); + } + + lambdaQueryWrapper.orderByDesc(StoreCoupon::getSort).orderByDesc(StoreCoupon::getId); + return dao.selectList(lambdaQueryWrapper); + } + + /** + * 保存优惠券表 + * @param request StoreCouponRequest 新增参数 + * @author Mr.Zhang + * @since 2020-05-18 + */ + @Override + public boolean create(StoreCouponRequest request) { + StoreCoupon storeCoupon = new StoreCoupon(); + BeanUtils.copyProperties(request, storeCoupon); + if (storeCoupon.getIsLimited() && (storeCoupon.getTotal() == null || storeCoupon.getTotal() == 0)) { + throw new CrmebException("请输入数量!"); + } + + if (request.getUseType() > 1 && (StrUtil.isBlank(request.getPrimaryKey()))) { + throw new CrmebException("请选择商品/分类!"); + } + + storeCoupon.setLastTotal(storeCoupon.getTotal()); + if (!request.getIsForever()) { + storeCoupon.setReceiveStartTime(DateUtil.nowDateTime()); //开始时间设置为当前时间 + }else{ + if (storeCoupon.getReceiveStartTime() == null || storeCoupon.getReceiveEndTime() == null) { + throw new CrmebException("请选择领取时间范围!"); + } + + int compareDate = DateUtil.compareDate(DateUtil.dateToStr(storeCoupon.getReceiveStartTime(), Constants.DATE_FORMAT), DateUtil.dateToStr(storeCoupon.getReceiveEndTime(), Constants.DATE_FORMAT), Constants.DATE_FORMAT); + if (compareDate > -1) { + throw new CrmebException("请选择正确的领取时间范围!"); + } + } + + //非固定时间, 领取后多少天 + if (!request.getIsFixedTime()) { + if (storeCoupon.getDay() == null || storeCoupon.getDay() == 0) { + throw new CrmebException("请输入天数!"); + } + storeCoupon.setUseStartTime(null); + storeCoupon.setUseEndTime(null); + } + return save(storeCoupon); + } + + /** + * 获取详情 + * @param id Integer id + * @return StoreCoupon + */ + @Override + public StoreCoupon getInfoException(Integer id) { + //获取优惠券信息 + StoreCoupon storeCoupon = getById(id); + checkException(storeCoupon); + + return storeCoupon; + } + + /** + * 检测当前优惠券是否正常 + * @param storeCoupon StoreCoupon 优惠券对象` + * @author Mr.Zhang + * @since 2020-05-18 + */ + private void checkException(StoreCoupon storeCoupon) { + if (storeCoupon == null || storeCoupon.getIsDel() || !storeCoupon.getStatus()) { + throw new CrmebException("优惠券信息不存在或者已失效!"); + } + + //看是否过期 + if (!(storeCoupon.getReceiveEndTime() == null || "".equals(storeCoupon.getReceiveEndTime()))) { + //非永久可领取 + String date = DateUtil.nowDateTimeStr(); + int result = DateUtil.compareDate(date, DateUtil.dateToStr(storeCoupon.getReceiveEndTime(), Constants.DATE_FORMAT), Constants.DATE_FORMAT); + if (result == 1) { + //过期了 + throw new CrmebException("已超过优惠券领取最后期限!"); + } + } + + //看是否有剩余数量 + if (storeCoupon.getIsLimited()) { + //考虑到并发溢出的问题用大于等于 + if (storeCoupon.getLastTotal() < 1) { + throw new CrmebException("此优惠券已经被领完了!"); + } + } + } + + /** + * 优惠券详情 + * @param id Integer 获取可用优惠券的商品id + * @return StoreCouponInfoResponse + */ + @Override + public StoreCouponInfoResponse info(Integer id) { + StoreCoupon storeCoupon = getById(id); + if (ObjectUtil.isNull(storeCoupon) || storeCoupon.getIsDel() || !storeCoupon.getStatus()) { + throw new CrmebException("优惠券信息不存在或者已失效!"); + } + + List productList = null; + List categoryList = null; + if (StrUtil.isNotBlank(storeCoupon.getPrimaryKey()) && storeCoupon.getUseType() > 1) { + List primaryIdList = CrmebUtil.stringToArray(storeCoupon.getPrimaryKey()); + if (storeCoupon.getUseType() == 2) { + productList = storeProductService.getListInIds(primaryIdList); + } + if (storeCoupon.getUseType() == 3) { + categoryList = categoryService.getByIds(primaryIdList); + } + } + + StoreCouponRequest coupon = new StoreCouponRequest(); + BeanUtils.copyProperties(storeCoupon, coupon); + coupon.setIsForever(false); + if (ObjectUtil.isNotNull(coupon.getReceiveEndTime())) { + coupon.setIsForever(true); + } + + return new StoreCouponInfoResponse(coupon, productList, categoryList); + } + + /** + * 根据优惠券id获取 + * @param ids 优惠券id集合 + * @return List + */ + @Override + public List getByIds(List ids) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.in(StoreCoupon::getId, ids); + return dao.selectList(lambdaQueryWrapper); + } + + /** + * 扣减数量 + * @param id 优惠券id + * @param num 数量 + * @param isLimited 是否限量 + */ + @Override + public Boolean deduction(Integer id, Integer num, Boolean isLimited) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + if (isLimited) { + updateWrapper.setSql(StrUtil.format("last_total = last_total - {}", num)); + updateWrapper.last(StrUtil.format(" and (last_total - {} >= 0)", num)); + } else { + updateWrapper.setSql(StrUtil.format("last_total = last_total + {}", num)); + } + updateWrapper.eq("id", id); + return update(updateWrapper); + } + + /** + * 获取用户注册赠送新人券 + * @return List + */ + @Override + public List findRegisterList() { + String dateStr = DateUtil.nowDate(Constants.DATE_FORMAT); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(StoreCoupon::getType, 2); + lqw.eq(StoreCoupon::getStatus, true); + lqw.eq(StoreCoupon::getIsDel, false); + lqw.le(StoreCoupon::getReceiveStartTime, dateStr); + List list = dao.selectList(lqw); + if (CollUtil.isEmpty(list)) { + return CollUtil.newArrayList(); + } + List couponList = list.stream().filter(coupon -> { + // 是否限量 + if (coupon.getIsLimited() && coupon.getLastTotal() <= 0) { + return false; + } + // 判断是否达到可领取时间 + if (ObjectUtil.isNotNull(coupon.getReceiveStartTime())) { + //非永久可领取 + int result = DateUtil.compareDate(dateStr, DateUtil.dateToStr(coupon.getReceiveStartTime(), Constants.DATE_FORMAT), Constants.DATE_FORMAT); + if (result == -1) { + // 未开始 + return false; + } + } + + // 是否有领取结束时间 + if (ObjectUtil.isNotNull(coupon.getReceiveEndTime())) { + int compareDate = DateUtil.compareDate(dateStr, DateUtil.dateToStr(coupon.getReceiveEndTime(), Constants.DATE_FORMAT), Constants.DATE_FORMAT); + if (compareDate > 0) { + return false; + } + } + return true; + }).collect(Collectors.toList()); + return couponList; + } + + /** + * 发送优惠券列表 + * @param request 搜索分页参数 + * @return 优惠券列表 + * PC管理员可发送优惠券:手动领取类型,状态开启,且有剩余数量的优惠券 + * 只支持优惠券名称模糊搜索 + */ + @Override + public List getSendList(SearchAndPageRequest request) { + PageHelper.startPage(request.getPage(), request.getLimit()); + + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.select(StoreCoupon::getId, StoreCoupon::getName, StoreCoupon::getMoney, StoreCoupon::getMinPrice, + StoreCoupon::getUseStartTime, StoreCoupon::getUseEndTime, StoreCoupon::getIsFixedTime, StoreCoupon::getDay, + StoreCoupon::getIsLimited, StoreCoupon::getLastTotal); + lqw.eq(StoreCoupon::getIsDel, false); + if (ObjectUtil.isNotNull(request.getType())) { + lqw.eq(StoreCoupon::getType, request.getType()); + } + lqw.eq(StoreCoupon::getStatus, true); + if (StrUtil.isNotBlank(request.getKeywords())) { + lqw.like(StoreCoupon::getName, request.getKeywords()); + } + lqw.and(o -> o.eq(StoreCoupon::getIsLimited, false).or().ge(StoreCoupon::getLastTotal, 0)); + lqw.and(o -> o.isNull(StoreCoupon::getReceiveEndTime).or().gt(StoreCoupon::getReceiveEndTime, DateUtil.nowDate(Constants.DATE_FORMAT))); + lqw.orderByDesc(StoreCoupon::getSort, StoreCoupon::getId); + return dao.selectList(lqw); + } + + /** + * 删除优惠券 + * @param id 优惠券id + * @return Boolean + */ + @Override + public Boolean delete(Integer id) { + StoreCoupon coupon = getById(id); + if (ObjectUtil.isNull(coupon) || coupon.getIsDel()) { + throw new CrmebException("优惠券不存在"); + } + coupon.setIsDel(true); + return dao.updateById(coupon) > 0; + } + + /** + * 移动端优惠券列表 + * @param type 类型,1-通用,2-商品,3-品类 + * @param productId 产品id,搜索产品指定优惠券 + * @param pageParamRequest 分页参数 + * @return List + */ + @Override + public List getH5List(Integer type, Integer productId, PageParamRequest pageParamRequest) { + // 获取优惠券列表 + List list = getListByReceive(type, productId, pageParamRequest); + if (ObjectUtil.isNull(list)) { + return null; + } + //获取用户当前已领取未使用的优惠券 + HashMap couponUserMap = null; + Integer userId = userService.getUserId(); + if (userId > 0) { + couponUserMap = storeCouponUserService.getMapByUserId(userId); + } + List storeCouponFrontResponseArrayList = new ArrayList<>(); + for (StoreCoupon storeCoupon : list) { + StoreCouponFrontResponse response = new StoreCouponFrontResponse(); + BeanUtils.copyProperties(storeCoupon, response); + + if (userId > 0) { + if (CollUtil.isNotEmpty(couponUserMap) && couponUserMap.containsKey(storeCoupon.getId())) { + response.setIsUse(true); + } + } + + if (response.getReceiveEndTime() == null) { + response.setReceiveStartTime(null); + } + + // 更改使用时间格式,去掉时分秒 + response.setUseStartTimeStr(DateUtil.dateToStr(storeCoupon.getUseStartTime(), Constants.DATE_FORMAT_DATE)); + response.setUseEndTimeStr(DateUtil.dateToStr(storeCoupon.getUseEndTime(), Constants.DATE_FORMAT_DATE)); + storeCouponFrontResponseArrayList.add(response); + } + + return storeCouponFrontResponseArrayList; + } + + /** + * 修改优惠券状态 + * @param id 优惠券id + * @param status 状态 + */ + @Override + public Boolean updateStatus(Integer id, Boolean status) { + StoreCoupon coupon = getById(id); + if (ObjectUtil.isNull(coupon)) { + throw new CrmebException("优惠券不存在"); + } + if (coupon.getStatus().equals(status)) { + throw new CrmebException("优惠券状态无需变更"); + } + StoreCoupon storeCoupon = new StoreCoupon(); + storeCoupon.setId(id); + storeCoupon.setStatus(status); + return updateById(storeCoupon); + } + + /** + * 用户可领取的优惠券 + * @return List + */ + private List getListByReceive(Integer type, Integer productId, PageParamRequest pageParamRequest) { + PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + Date date = DateUtil.nowDateTime(); + //带 StoreCoupon 类的多条件查询 + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(StoreCoupon::getIsDel, false); + lqw.eq(StoreCoupon::getStatus, 1); + //剩余数量大于0 或者不设置上限 + lqw.and(i -> i.gt(StoreCoupon::getLastTotal, 0).or().eq(StoreCoupon::getIsLimited, false)); + //领取时间范围, 结束时间为null则是不限时 + lqw.and(i -> i.isNull(StoreCoupon::getReceiveEndTime).or( p -> p.lt(StoreCoupon::getReceiveStartTime, date).gt(StoreCoupon::getReceiveEndTime, date))); + // 用户使用时间范围,结束时间为null则是不限时 + lqw.and(i -> i.isNull(StoreCoupon::getUseEndTime).or(p -> p.gt(StoreCoupon::getUseEndTime, date))); + lqw.eq(StoreCoupon::getType, 1); + if (productId > 0) { + //有商品id 通用券可以领取,商品券可以领取,分类券可以领取 + getPrimaryKeySql(lqw, productId.toString()); + } + switch (type) { + case 1: + lqw.eq(StoreCoupon::getUseType, CouponConstants.COUPON_USE_TYPE_COMMON); + break; + case 2: + lqw.eq(StoreCoupon::getUseType, CouponConstants.COUPON_USE_TYPE_PRODUCT); + break; + case 3: + lqw.eq(StoreCoupon::getUseType, CouponConstants.COUPON_USE_TYPE_CATEGORY); + break; + } + + lqw.orderByDesc(StoreCoupon::getSort).orderByDesc(StoreCoupon::getId); + return dao.selectList(lqw); + } + + private void getPrimaryKeySql(LambdaQueryWrapper lambdaQueryWrapper, String productIdStr) { + if (StrUtil.isBlank(productIdStr)) { + return; + } + + List categoryIdList = storeProductService.getSecondaryCategoryByProductId(productIdStr); + lambdaQueryWrapper.and(i -> i.and( + //通用券 商品券 品类券 + t -> t.eq(StoreCoupon::getUseType, 1) + .or(p -> p.eq(StoreCoupon::getUseType , 2).apply(CrmebUtil.getFindInSetSql("primary_key", productIdStr))) + .or(c -> c.eq(StoreCoupon::getUseType , 3).apply(CrmebUtil.getFindInSetSql("primary_key", (ArrayList) categoryIdList))) + )); + } +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreCouponUserServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreCouponUserServiceImpl.java new file mode 100644 index 0000000..c159386 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreCouponUserServiceImpl.java @@ -0,0 +1,593 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.request.UserCouponReceiveRequest; +import com.zbkj.common.vo.MyRecord; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.constants.CouponConstants; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.vo.OrderInfoDetailVo; +import com.zbkj.common.vo.OrderInfoVo; +import com.github.pagehelper.Page; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.zbkj.common.utils.CrmebUtil; +import com.zbkj.common.utils.DateUtil; +import com.zbkj.common.utils.RedisUtil; +import com.zbkj.common.model.coupon.StoreCoupon; +import com.zbkj.common.model.coupon.StoreCouponUser; +import com.zbkj.common.request.StoreCouponUserRequest; +import com.zbkj.common.request.StoreCouponUserSearchRequest; +import com.zbkj.common.response.StoreCouponUserOrder; +import com.zbkj.common.response.StoreCouponUserResponse; +import com.zbkj.common.model.user.User; +import com.zbkj.service.dao.StoreCouponUserDao; +import com.zbkj.service.service.StoreCouponService; +import com.zbkj.service.service.StoreCouponUserService; +import com.zbkj.service.service.StoreProductService; +import com.zbkj.service.service.UserService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.support.TransactionTemplate; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.stream.Collectors; + +/** + * StoreCouponUserService 实现类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class StoreCouponUserServiceImpl extends ServiceImpl implements StoreCouponUserService { + + @Resource + private StoreCouponUserDao dao; + + @Autowired + private StoreCouponService storeCouponService; + + @Autowired + private UserService userService; + + @Autowired + private StoreProductService storeProductService; + + @Autowired + private TransactionTemplate transactionTemplate; + + @Autowired + private RedisUtil redisUtil; + + /** + * 列表 + * @param request 请求参数 + * @param pageParamRequest 分页类参数 + * @return List + */ + @Override + public PageInfo getList(StoreCouponUserSearchRequest request, PageParamRequest pageParamRequest) { + Page storeCouponUserPage = PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + + //带 StoreCouponUser 类的多条件查询 + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + if (!StringUtils.isBlank(request.getName())) { + lambdaQueryWrapper.like(StoreCouponUser::getName, request.getName()); + } + + if (request.getUid() !=null && request.getUid() > 0) { + lambdaQueryWrapper.eq(StoreCouponUser::getUid, request.getUid()); + } + + if (request.getStatus() !=null) { + lambdaQueryWrapper.eq(StoreCouponUser::getStatus, request.getStatus()); + } + + if (request.getCouponId() != null) { + lambdaQueryWrapper.eq(StoreCouponUser::getCouponId, request.getCouponId()); + } + lambdaQueryWrapper.orderByDesc(StoreCouponUser::getId); + List storeCouponUserList = dao.selectList(lambdaQueryWrapper); + if (storeCouponUserList.size() < 1) { + return new PageInfo<>(); + } + ArrayList storeCouponUserResponseList = new ArrayList<>(); + + List uidList = storeCouponUserList.stream().map(StoreCouponUser::getUid).distinct().collect(Collectors.toList()); + HashMap userList = userService.getMapListInUid(uidList); + + for (StoreCouponUser storeCouponUser : storeCouponUserList) { + StoreCouponUserResponse storeCouponUserResponse = new StoreCouponUserResponse(); + BeanUtils.copyProperties(storeCouponUser, storeCouponUserResponse); + if (userList.containsKey(storeCouponUser.getUid())) { + storeCouponUserResponse.setNickname(userList.get(storeCouponUser.getUid()).getNickname()); + storeCouponUserResponse.setAvatar(userList.get(storeCouponUser.getUid()).getAvatar()); + } + storeCouponUserResponseList.add(storeCouponUserResponse); + } + return CommonPage.copyPageInfo(storeCouponUserPage, storeCouponUserResponseList); + } + + /** + * 领券/批量领券 + * @param request 新增参数 + * @return boolean + */ + @Override + public Boolean receive(StoreCouponUserRequest request) { + //获取优惠券信息 + StoreCoupon storeCoupon = storeCouponService.getInfoException(request.getCouponId()); + + List uidList = CrmebUtil.stringToArray(request.getUid()); + if (uidList.size() < 1) { + throw new CrmebException("请选择用户!"); + } + + //看是否有剩余数量 + if (storeCoupon.getIsLimited()) { + //看剩余的是否够给当前用户 + if (storeCoupon.getLastTotal() < uidList.size()) { + throw new CrmebException("当前剩余数量不够领取!"); + } + } + + //过滤掉已经领取过的用户 + filterReceiveUserInUid(storeCoupon.getId(), uidList); + if (uidList.size() < 1) { + //都已经领取过了 + throw new CrmebException("当前用户已经领取过此优惠券了!"); + } + + //是否有固定的使用时间 + if (!storeCoupon.getIsFixedTime()) { + String endTime = DateUtil.addDay(DateUtil.nowDate(Constants.DATE_FORMAT), storeCoupon.getDay(), Constants.DATE_FORMAT); + storeCoupon.setUseEndTime(DateUtil.strToDate(endTime, Constants.DATE_FORMAT)); + storeCoupon.setUseStartTime(DateUtil.nowDateTimeReturnDate(Constants.DATE_FORMAT)); + } + + ArrayList storeCouponUserList = new ArrayList<>(); + + for (Integer uid : uidList) { + StoreCouponUser storeCouponUser = new StoreCouponUser(); + storeCouponUser.setCouponId(storeCoupon.getId()); + storeCouponUser.setUid(uid); + storeCouponUser.setName(storeCoupon.getName()); + storeCouponUser.setMoney(storeCoupon.getMoney()); + storeCouponUser.setMinPrice(storeCoupon.getMinPrice()); + storeCouponUser.setStartTime(storeCoupon.getUseStartTime()); + storeCouponUser.setEndTime(storeCoupon.getUseEndTime()); + storeCouponUser.setUseType(storeCoupon.getUseType()); + storeCouponUser.setType(CouponConstants.STORE_COUPON_USER_TYPE_SEND); + if (storeCoupon.getUseType() > 1) { + storeCouponUser.setPrimaryKey(storeCoupon.getPrimaryKey()); + } + storeCouponUserList.add(storeCouponUser); + } + + storeCoupon.setLastTotal(storeCoupon.getLastTotal() - uidList.size()); + + Boolean execute = transactionTemplate.execute(e -> { + saveBatch(storeCouponUserList); + storeCouponService.updateById(storeCoupon); + return Boolean.TRUE; + }); + + return execute; + } + + /** + * 过滤已经领取过此优惠券的用户id + * @param couponId Integer 优惠券id + * @param uidList List 用户id集合 + */ + private void filterReceiveUserInUid(Integer couponId, List uidList) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(StoreCouponUser::getCouponId, couponId); + lambdaQueryWrapper.in(StoreCouponUser::getUid, uidList); + List storeCouponUserList = dao.selectList(lambdaQueryWrapper); + if (storeCouponUserList != null) { + List receiveUidList = storeCouponUserList.stream().map(StoreCouponUser::getUid).distinct().collect(Collectors.toList()); + uidList.removeAll(receiveUidList); + } + } + + /** + * 用户已领取的优惠券 + * @param userId Integer 用户id + * @author Mr.Zhang + * @since 2020-05-18 + * @return boolean + */ + @Override + public HashMap getMapByUserId(Integer userId) { + List list = findListByUid(userId); + + if (list.size() < 1) { + return null; + } + + HashMap map = new HashMap<>(); + for (StoreCouponUser info : list) { + map.put(info.getCouponId(), info); + } + return map; + } + + private List findListByUid(Integer uid) { + LambdaQueryWrapper lwq = new LambdaQueryWrapper<>(); + lwq.eq(StoreCouponUser::getUid, uid); + return dao.selectList(lwq); + } + + /** + * 根据购物车id获取可用优惠券 + * @param preOrderNo 预下单订单号 + * @return 优惠券集合 + */ + @Override + public List getListByPreOrderNo(String preOrderNo) { + // 通过缓存获取预下单对象 + String key = "user_order:" + preOrderNo; + boolean exists = redisUtil.exists(key); + if (!exists) { + throw new CrmebException("预下单订单不存在"); + } + String orderVoString = redisUtil.get(key).toString(); + OrderInfoVo orderInfoVo = JSONObject.parseObject(orderVoString, OrderInfoVo.class); + //产品id集合 + List productIds = orderInfoVo.getOrderDetailList().stream().map(OrderInfoDetailVo::getProductId).distinct().collect(Collectors.toList()); + + //计算购物车价格 + BigDecimal maxPrice = orderInfoVo.getProTotalFee(); + + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + Date date = DateUtil.nowDateTime(); + lambdaQueryWrapper.eq(StoreCouponUser::getStatus, 0) + .le(StoreCouponUser::getMinPrice, maxPrice) + .lt(StoreCouponUser::getStartTime, date) + .gt(StoreCouponUser::getEndTime, date); + lambdaQueryWrapper.eq(StoreCouponUser::getUid, userService.getUserIdException()); + getPrimaryKeySql(lambdaQueryWrapper, StringUtils.join(productIds, ",")); + + + ArrayList storeCouponUserOrderArrayList = new ArrayList<>(); + List storeCouponUserList = dao.selectList(lambdaQueryWrapper); + if (storeCouponUserList.size() < 1) { + return storeCouponUserOrderArrayList; + } + //前端组件统一 转化数据 + for (StoreCouponUser storeCouponUser : storeCouponUserList) { + StoreCouponUserOrder storeCouponUserOrder = new StoreCouponUserOrder(); + BeanUtils.copyProperties(storeCouponUser, storeCouponUserOrder); + storeCouponUserOrderArrayList.add(storeCouponUserOrder); + } + return storeCouponUserOrderArrayList; + } + + /** + * 移动端列表 + * @param type 类型,usable-可用,unusable-不可用 + * @param userId 用户id + * @param pageParamRequest 分页类参数 + * @return List + */ + private List getH5List(String type, Integer userId, PageParamRequest pageParamRequest) { + PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + + //带 StoreCouponUser 类的多条件查询 + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + + lqw.eq(StoreCouponUser::getUid, userId); + if ("usable".equals(type)) { + lqw.eq(StoreCouponUser::getStatus, CouponConstants.STORE_COUPON_USER_STATUS_USABLE); + lqw.orderByDesc(StoreCouponUser::getId); + } + if ("unusable".equals(type)) { + lqw.gt(StoreCouponUser::getStatus, CouponConstants.STORE_COUPON_USER_STATUS_USABLE); + lqw.last(StrUtil.format(" order by case `status` when {} then {} when {} then {} when {} then {} end", 0, 1, 1, 2, 2, 3)); + } + + List storeCouponUserList = dao.selectList(lqw); + if (CollUtil.isEmpty(storeCouponUserList)) { + return CollUtil.newArrayList(); + } + return storeCouponUserList; + } + + /** + * 优惠券过期定时任务 + */ + @Override + public void overdueTask() { + // 查询所有状态——可用的优惠券 + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(StoreCouponUser::getStatus, 0); + List couponList = dao.selectList(lqw); + if (CollUtil.isEmpty(couponList)) { + return; + } + // 判断优惠券是否过期 + List updateList = CollUtil.newArrayList(); + String nowDateStr = DateUtil.nowDate(Constants.DATE_FORMAT); + couponList.forEach(coupon -> { + if (ObjectUtil.isNotNull(coupon.getEndTime())) { + String endDateStr = DateUtil.dateToStr(coupon.getEndTime(), Constants.DATE_FORMAT); + if (DateUtil.compareDate(nowDateStr, endDateStr, Constants.DATE_FORMAT) >= 0) { + coupon.setStatus(2); + updateList.add(coupon); + } + } + }); + + if (CollUtil.isEmpty(updateList)) { + return; + } + boolean update = updateBatchById(updateList); + if (!update) throw new CrmebException("批量更新优惠券过期动作失败"); + } + + /** + * 用户领取优惠券 + */ + @Override + public Boolean receiveCoupon(UserCouponReceiveRequest request) { + // 获取优惠券信息 + StoreCoupon storeCoupon = storeCouponService.getInfoException(request.getCouponId()); + + Integer userId = userService.getUserIdException(); + + //看是否有剩余数量,是否够给当前用户 + if (storeCoupon.getIsLimited() && storeCoupon.getLastTotal() < 1) { + throw new CrmebException("当前剩余数量不够领取!"); + } + //过滤掉已经领取过的用户 + List uidList = CollUtil.newArrayList(); + uidList.add(userId); + filterReceiveUserInUid(storeCoupon.getId(), uidList); + if (uidList.size() < 1) { + //都已经领取过了 + throw new CrmebException("当前用户已经领取过此优惠券了!"); + } + //是否有固定的使用时间 + if (!storeCoupon.getIsFixedTime()) { + String endTime = DateUtil.addDay(DateUtil.nowDate(Constants.DATE_FORMAT), storeCoupon.getDay(), Constants.DATE_FORMAT); + storeCoupon.setUseEndTime(DateUtil.strToDate(endTime, Constants.DATE_FORMAT)); + storeCoupon.setUseStartTime(DateUtil.nowDateTimeReturnDate(Constants.DATE_FORMAT)); + } + StoreCouponUser storeCouponUser = new StoreCouponUser(); + storeCouponUser.setCouponId(storeCoupon.getId()); + storeCouponUser.setUid(userId); + storeCouponUser.setName(storeCoupon.getName()); + storeCouponUser.setMoney(storeCoupon.getMoney()); + storeCouponUser.setMinPrice(storeCoupon.getMinPrice()); + storeCouponUser.setStartTime(storeCoupon.getUseStartTime()); + storeCouponUser.setEndTime(storeCoupon.getUseEndTime()); + storeCouponUser.setUseType(storeCoupon.getUseType()); + storeCouponUser.setType(CouponConstants.STORE_COUPON_USER_TYPE_GET); + if (storeCoupon.getUseType() > 1) { + storeCouponUser.setPrimaryKey(storeCoupon.getPrimaryKey()); + } + Boolean execute = transactionTemplate.execute(e -> { + save(storeCouponUser); + storeCouponService.deduction(storeCoupon.getId(), 1, storeCoupon.getIsLimited()); + return Boolean.TRUE; + }); + + return execute; + } + + /** + * 支付成功赠送处理 + * @param couponId 优惠券编号 + * @param uid 用户uid + * @return MyRecord + */ + @Override + public MyRecord paySuccessGiveAway(Integer couponId, Integer uid) { + MyRecord record = new MyRecord(); + record.set("status", "fail"); + // 获取优惠券信息 + StoreCoupon storeCoupon = storeCouponService.getById(couponId); + if (ObjectUtil.isNull(storeCoupon) || storeCoupon.getIsDel() || !storeCoupon.getStatus()) { + record.set("errMsg", "优惠券信息不存在或者已失效!"); + return record; + } + + // 判断是否达到可领取时间 + if (ObjectUtil.isNotNull(storeCoupon.getReceiveStartTime())) { + //非永久可领取 + String date = DateUtil.nowDateTimeStr(); + int result = DateUtil.compareDate(date, DateUtil.dateToStr(storeCoupon.getReceiveStartTime(), Constants.DATE_FORMAT), Constants.DATE_FORMAT); + if (result == -1) { + // 未开始 + record.set("errMsg", "还未达到优惠券领取时间!"); + return record; + } + } + + //看是否过期 + if (storeCoupon.getReceiveEndTime() != null) { + //非永久可领取 + String date = DateUtil.nowDateTimeStr(); + int result = DateUtil.compareDate(date, DateUtil.dateToStr(storeCoupon.getReceiveEndTime(), Constants.DATE_FORMAT), Constants.DATE_FORMAT); + if (result == 1) { + //过期了 + record.set("errMsg", "已超过优惠券领取最后期限!"); + return record; + } + } + + //看是否有剩余数量 + if (storeCoupon.getIsLimited() && storeCoupon.getLastTotal() < 1) { + record.set("errMsg", "此优惠券已经被领完了!"); + return record; + } + + //过滤掉已经领取过的用户 + List uidList = CollUtil.newArrayList(); + uidList.add(uid); + filterReceiveUserInUid(storeCoupon.getId(), uidList); + if (uidList.size() < 1) { + //都已经领取过了 + record.set("errMsg", "当前用户已经领取过此优惠券了!"); + return record; + } + + //是否有固定的使用时间 + if (!storeCoupon.getIsFixedTime()) { + String endTime = DateUtil.addDay(DateUtil.nowDate(Constants.DATE_FORMAT), storeCoupon.getDay(), Constants.DATE_FORMAT); + storeCoupon.setUseEndTime(DateUtil.strToDate(endTime, Constants.DATE_FORMAT)); + storeCoupon.setUseStartTime(DateUtil.nowDateTimeReturnDate(Constants.DATE_FORMAT)); + } + + StoreCouponUser storeCouponUser = new StoreCouponUser(); + storeCouponUser.setCouponId(storeCoupon.getId()); + storeCouponUser.setUid(uid); + storeCouponUser.setName(storeCoupon.getName()); + storeCouponUser.setMoney(storeCoupon.getMoney()); + storeCouponUser.setMinPrice(storeCoupon.getMinPrice()); + storeCouponUser.setStartTime(storeCoupon.getUseStartTime()); + storeCouponUser.setEndTime(storeCoupon.getUseEndTime()); + storeCouponUser.setUseType(storeCoupon.getUseType()); + storeCouponUser.setType(CouponConstants.STORE_COUPON_USER_TYPE_BUY); + if (storeCoupon.getUseType() > 1) { + storeCouponUser.setPrimaryKey(storeCoupon.getPrimaryKey()); + } + record.set("status", "ok"); + record.set("storeCouponUser", storeCouponUser); + record.set("isLimited", storeCoupon.getIsLimited()); + return record; + } + + /** + * 根据uid获取列表 + * @param uid uid + * @param pageParamRequest 分页参数 + * @return 优惠券列表 + */ + @Override + public List findListByUid(Integer uid, PageParamRequest pageParamRequest) { + PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + + //带 StoreCouponUser 类的多条件查询 + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + + lambdaQueryWrapper.eq(StoreCouponUser::getUid, uid); + lambdaQueryWrapper.orderByDesc(StoreCouponUser::getId); + return dao.selectList(lambdaQueryWrapper); + } + + /** + * 获取可用优惠券数量 + * @param uid 用户uid + * @return Integer + */ + @Override + public Integer getUseCount(Integer uid) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(StoreCouponUser::getUid, uid); + lambdaQueryWrapper.eq(StoreCouponUser::getStatus, 0); + List storeCouponUserList = dao.selectList(lambdaQueryWrapper); + if (CollUtil.isEmpty(storeCouponUserList)) { + return 0; + } + Date date = DateUtil.nowDateTime(); + for (int i = 0; i < storeCouponUserList.size();) { + StoreCouponUser couponUser = storeCouponUserList.get(i); + //判断是否在使用时间内 + if (ObjectUtil.isNotNull(couponUser.getStartTime()) && ObjectUtil.isNotNull(couponUser.getEndTime())) { + if (date.compareTo(couponUser.getEndTime()) >= 0) { + storeCouponUserList.remove(i); + continue; + } + } + i++; + } + return CollUtil.isEmpty(storeCouponUserList) ? 0 : storeCouponUserList.size(); + } + + /** + * 我的优惠券列表 + * @param type 类型,usable-可用,unusable-不可用 + * @param pageParamRequest 分页参数 + * @return CommonPage + */ + @Override + public CommonPage getMyCouponList(String type, PageParamRequest pageParamRequest) { + Integer userId = userService.getUserIdException(); + + List couponUserList = getH5List(type, userId, pageParamRequest); + + if (CollUtil.isEmpty(couponUserList)) { + return null; + } + Date date = DateUtil.nowDateTime(); + List responseList = CollUtil.newArrayList(); + for (StoreCouponUser storeCouponUser :couponUserList) { + StoreCouponUserResponse storeCouponUserResponse = new StoreCouponUserResponse(); + BeanUtils.copyProperties(storeCouponUser, storeCouponUserResponse); + String validStr = "usable";// 可用 + if (storeCouponUser.getStatus().equals(CouponConstants.STORE_COUPON_USER_STATUS_USED)) { + validStr = "unusable";// 已用 + } + if (storeCouponUser.getStatus().equals(CouponConstants.STORE_COUPON_USER_STATUS_LAPSED)) { + validStr = "overdue";// 过期 + } + + //判断是否在使用时间内 + if (null != storeCouponUserResponse.getStartTime() && null != storeCouponUserResponse.getEndTime()) { + if (storeCouponUserResponse.getStartTime().compareTo(date) > 0) { + validStr = "notStart";// 未开始 + } + if (date.compareTo(storeCouponUserResponse.getEndTime()) >= 0) { + validStr = "overdue";// 过期 + } + } + storeCouponUserResponse.setValidStr(validStr); + + // 更改使用时间格式,去掉时分秒 + storeCouponUserResponse.setUseStartTimeStr(DateUtil.dateToStr(storeCouponUserResponse.getStartTime(), Constants.DATE_FORMAT_DATE)); + storeCouponUserResponse.setUseEndTimeStr(DateUtil.dateToStr(storeCouponUserResponse.getEndTime(), Constants.DATE_FORMAT_DATE)); + responseList.add(storeCouponUserResponse); + } + return CommonPage.restPage(responseList); + } + + private void getPrimaryKeySql(LambdaQueryWrapper lambdaQueryWrapper, String productIdStr) { + if (StringUtils.isBlank(productIdStr)) { + return; + } + + List categoryIdList = storeProductService.getSecondaryCategoryByProductId(productIdStr); + String categoryIdStr = categoryIdList.stream().map(Object::toString).collect(Collectors.joining(",")); + lambdaQueryWrapper.and(i -> i.and( + //通用券 商品券 品类券 + t -> t.eq(StoreCouponUser::getUseType, 1) + .or(p -> p.eq(StoreCouponUser::getUseType , 2).apply(StrUtil.format(" primary_key in ({})", productIdStr))) + .or(c -> c.eq(StoreCouponUser::getUseType , 3).apply(StrUtil.format(" primary_key in ({})", categoryIdStr))) + + )); + } +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreOrderInfoServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreOrderInfoServiceImpl.java new file mode 100644 index 0000000..83724c8 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreOrderInfoServiceImpl.java @@ -0,0 +1,195 @@ +package com.zbkj.service.service.impl; + +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.vo.OrderInfoDetailVo; +import com.zbkj.common.vo.StoreOrderInfoOldVo; +import com.zbkj.common.vo.StoreOrderInfoVo; +import com.zbkj.common.model.order.StoreOrderInfo; +import com.zbkj.service.dao.StoreOrderInfoDao; +import com.zbkj.service.service.StoreOrderInfoService; +import com.zbkj.service.service.StoreProductReplyService; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +/** + * StoreOrderInfoServiceImpl 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class StoreOrderInfoServiceImpl extends ServiceImpl + implements StoreOrderInfoService { + + @Resource + private StoreOrderInfoDao dao; + + @Autowired + private StoreProductReplyService storeProductReplyService; + + /** + * 根据id集合查询数据,返回 map + * @param orderList List id集合 + * @author Mr.Zhang + * @since 2020-04-17 + * @return HashMap + */ + @Override + public HashMap> getMapInId(List orderList){ + HashMap> map = new HashMap<>(); + if(orderList.size() < 1){ + return map; + } + LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(); + lambdaQueryWrapper.in(StoreOrderInfo::getOrderId, orderList); + List systemStoreStaffList = dao.selectList(lambdaQueryWrapper); + if(systemStoreStaffList.size() < 1){ + return map; + } + for (StoreOrderInfo storeOrderInfo : systemStoreStaffList) { + //解析商品详情JSON + StoreOrderInfoOldVo StoreOrderInfoVo = new StoreOrderInfoOldVo(); + BeanUtils.copyProperties(storeOrderInfo, StoreOrderInfoVo, "info"); + StoreOrderInfoVo.setInfo(JSON.parseObject(storeOrderInfo.getInfo(), OrderInfoDetailVo.class)); + if(map.containsKey(storeOrderInfo.getOrderId())){ + map.get(storeOrderInfo.getOrderId()).add(StoreOrderInfoVo); + }else{ + List storeOrderInfoVoList = new ArrayList<>(); + storeOrderInfoVoList.add(StoreOrderInfoVo); + map.put(storeOrderInfo.getOrderId(), storeOrderInfoVoList); + } + } + return map; + } + + /** + * 根据id集合查询数据,返回 map + * @param orderId Integer id + * @author Mr.Zhang + * @since 2020-04-17 + * @return HashMap + */ + @Override + public List getOrderListByOrderId(Integer orderId){ + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(StoreOrderInfo::getOrderId, orderId); + List systemStoreStaffList = dao.selectList(lambdaQueryWrapper); + if(systemStoreStaffList.size() < 1){ + return null; + } + + List storeOrderInfoVoList = new ArrayList<>(); + for (StoreOrderInfo storeOrderInfo : systemStoreStaffList) { + //解析商品详情JSON + StoreOrderInfoOldVo storeOrderInfoVo = new StoreOrderInfoOldVo(); + BeanUtils.copyProperties(storeOrderInfo, storeOrderInfoVo, "info"); + storeOrderInfoVo.setInfo(JSON.parseObject(storeOrderInfo.getInfo(), OrderInfoDetailVo.class)); + storeOrderInfoVo.getInfo().setIsReply( + storeProductReplyService.isReply(storeOrderInfoVo.getUnique(), storeOrderInfoVo.getOrderId()) ? 1 : 0 + ); + storeOrderInfoVoList.add(storeOrderInfoVo); + } + return storeOrderInfoVoList; + } + + /** + * 根据id集合查询数据,返回 map + * @param orderId 订单id + * @return HashMap + */ + @Override + public List getVoListByOrderId(Integer orderId){ + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(StoreOrderInfo::getOrderId, orderId); + List systemStoreStaffList = dao.selectList(lambdaQueryWrapper); + if(systemStoreStaffList.size() < 1){ + return null; + } + + List storeOrderInfoVoList = new ArrayList<>(); + for (StoreOrderInfo storeOrderInfo : systemStoreStaffList) { + //解析商品详情JSON + StoreOrderInfoVo storeOrderInfoVo = new StoreOrderInfoVo(); + BeanUtils.copyProperties(storeOrderInfo, storeOrderInfoVo, "info"); + storeOrderInfoVo.setInfo(JSON.parseObject(storeOrderInfo.getInfo(), OrderInfoDetailVo.class)); + storeOrderInfoVoList.add(storeOrderInfoVo); + } + return storeOrderInfoVoList; + } + + /** + * 获取订单详情-订单编号 + * @param orderNo 订单编号 + * @return List + */ + @Override + public List getListByOrderNo(String orderNo) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StoreOrderInfo::getOrderNo, orderNo); + return dao.selectList(lqw); + } + + /** + * 根据时间、商品id获取销售件数 + * @param date 时间,格式'yyyy-MM-dd' + * @param proId 商品id + * @return Integer + */ + @Override + public Integer getSalesNumByDateAndProductId(String date, Integer proId) { + return dao.getSalesNumByDateAndProductId(date, proId); + } + + /** + * 根据时间、商品id获取销售额 + * @param date 时间,格式'yyyy-MM-dd' + * @param proId 商品id + * @return BigDecimal + */ + @Override + public BigDecimal getSalesByDateAndProductId(String date, Integer proId) { + return dao.getSalesByDateAndProductId(date, proId); + } + + /** + * 新增订单详情 + * @param storeOrderInfos 订单详情集合 + * @return 订单新增结果 + */ + @Override + public boolean saveOrderInfos(List storeOrderInfos) { + return saveBatch(storeOrderInfos); + } + + /** + * 通过订单编号和规格号查询 + * @param uni 规格号 + * @param orderId 订单编号 + * @return StoreOrderInfo + */ + @Override + public StoreOrderInfo getByUniAndOrderId(String uni, Integer orderId) { + //带 StoreOrderInfo 类的多条件查询 + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(StoreOrderInfo::getOrderId, orderId); + lambdaQueryWrapper.eq(StoreOrderInfo::getUnique, uni); + return dao.selectOne(lambdaQueryWrapper); + } +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreOrderRefundServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreOrderRefundServiceImpl.java new file mode 100644 index 0000000..38b9c5b --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreOrderRefundServiceImpl.java @@ -0,0 +1,106 @@ +package com.zbkj.service.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.constants.PayConstants; +import com.zbkj.common.request.StoreOrderRefundRequest; +import com.zbkj.common.utils.RestTemplateUtil; +import com.zbkj.common.utils.WxPayUtil; +import com.zbkj.common.vo.WxRefundVo; +import com.zbkj.common.model.order.StoreOrder; +import com.zbkj.service.dao.StoreOrderDao; +import com.zbkj.service.service.StoreOrderRefundService; +import com.zbkj.service.service.SystemConfigService; +import com.zbkj.service.service.WechatNewService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; + +/** + * StoreOrderServiceImpl 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class StoreOrderRefundServiceImpl extends ServiceImpl implements StoreOrderRefundService { + + @Autowired + private SystemConfigService systemConfigService; + + @Autowired + private RestTemplateUtil restTemplateUtil; + @Autowired + private WechatNewService wechatNewService; + + /** + * 退款 需要优化 + * @author Mr.Zhang + * @since 2020-06-03 + */ + @Override + public void refund(StoreOrderRefundRequest request, StoreOrder storeOrder) { + refundWx(request, storeOrder); + } + + /** + * 公共号退款 + * @param request + * @param storeOrder + */ + private void refundWx(StoreOrderRefundRequest request, StoreOrder storeOrder) { + // 获取appid、mch_id + // 微信签名key + String appId = ""; + String mchId = ""; + String signKey = ""; + String path = ""; + if (storeOrder.getIsChannel() == 0) {// 公众号 + appId = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_WE_CHAT_APP_ID); + mchId = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_WE_CHAT_MCH_ID); + signKey = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_WE_CHAT_APP_KEY); +// path = systemConfigService.getValueByKeyException("pay_routine_client_p12"); + path = systemConfigService.getValueByKeyException("pay_weixin_certificate_path"); + } + if (storeOrder.getIsChannel() == 1) {// 小程序 + appId = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_ROUTINE_APP_ID); + mchId = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_ROUTINE_MCH_ID); + signKey = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_ROUTINE_APP_KEY); +// path = systemConfigService.getValueByKeyException("pay_mini_client_p12"); + path = systemConfigService.getValueByKeyException("pay_routine_certificate_path"); + } + if (storeOrder.getIsChannel() == 2) {// H5, 使用公众号的 + appId = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_WE_CHAT_APP_ID); + mchId = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_WE_CHAT_MCH_ID); + signKey = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_WE_CHAT_APP_KEY); +// path = systemConfigService.getValueByKeyException("pay_mini_client_p12"); + path = systemConfigService.getValueByKeyException("pay_weixin_certificate_path"); + } + + String apiDomain = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_API_URL); + + //统一下单数据 + WxRefundVo wxRefundVo = new WxRefundVo(); + wxRefundVo.setAppid(appId); + wxRefundVo.setMch_id(mchId); + wxRefundVo.setNonce_str(WxPayUtil.getNonceStr()); + wxRefundVo.setOut_trade_no(storeOrder.getOutTradeNo()); + wxRefundVo.setOut_refund_no(storeOrder.getOrderId()); + wxRefundVo.setTotal_fee(storeOrder.getPayPrice().multiply(BigDecimal.TEN).multiply(BigDecimal.TEN).intValue()); + wxRefundVo.setRefund_fee(request.getAmount().multiply(BigDecimal.TEN).multiply(BigDecimal.TEN).intValue()); + wxRefundVo.setNotify_url(apiDomain + PayConstants.WX_PAY_REFUND_NOTIFY_API_URI); + String sign = WxPayUtil.getSign(wxRefundVo, signKey); + wxRefundVo.setSign(sign); + + wechatNewService.payRefund(wxRefundVo, path); + } + +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreOrderServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreOrderServiceImpl.java new file mode 100644 index 0000000..10bb5d7 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreOrderServiceImpl.java @@ -0,0 +1,2103 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.Page; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.constants.NotifyConstants; +import com.zbkj.common.constants.UserConstants; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.model.combination.StorePink; +import com.zbkj.common.model.express.Express; +import com.zbkj.common.model.order.StoreOrder; +import com.zbkj.common.model.sms.SmsTemplate; +import com.zbkj.common.model.system.SystemAdmin; +import com.zbkj.common.model.system.SystemNotification; +import com.zbkj.common.model.system.SystemStore; +import com.zbkj.common.model.user.User; +import com.zbkj.common.model.user.UserBrokerageRecord; +import com.zbkj.common.model.user.UserToken; +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.request.*; +import com.zbkj.common.response.*; +import com.zbkj.common.utils.DateUtil; +import com.zbkj.common.utils.RedisUtil; +import com.zbkj.common.utils.ValidateFormUtil; +import com.zbkj.common.vo.*; +import com.zbkj.service.dao.StoreOrderDao; +import com.zbkj.service.delete.OrderUtils; +import com.zbkj.service.service.*; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.support.TransactionTemplate; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; + +/** + * StoreOrderServiceImpl 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class StoreOrderServiceImpl extends ServiceImpl implements StoreOrderService { + + @Resource + private StoreOrderDao dao; + + @Autowired + private SystemStoreService systemStoreService; + + @Autowired + private StoreOrderInfoService StoreOrderInfoService; + + @Autowired + private UserService userService; + + @Autowired + private UserBillService userBillService; + + @Autowired + private StoreOrderStatusService storeOrderStatusService; + + @Autowired + private StoreOrderRefundService storeOrderRefundService; + + @Autowired + private ExpressService expressService; + + @Autowired + private TemplateMessageService templateMessageService; + + @Autowired + private LogisticService logisticService; + + @Autowired + private OrderUtils orderUtils; + + @Autowired + private SystemAdminService systemAdminService; + + @Autowired + private RedisUtil redisUtil; + + @Autowired + private StorePinkService storePinkService; + + @Autowired + private SystemConfigService systemConfigService; + + @Autowired + private TransactionTemplate transactionTemplate; + + @Autowired + private OnePassService onePassService; + + @Autowired + private UserTokenService userTokenService; + + @Autowired + private SmsService smsService; + + @Autowired + private StoreOrderInfoService storeOrderInfoService; + + @Autowired + private UserBrokerageRecordService userBrokerageRecordService; + + @Autowired + private SystemNotificationService systemNotificationService; + + @Autowired + private SmsTemplateService smsTemplateService; + + /** + * 列表 + * @param request 请求参数 + * @param pageParamRequest 分页类参数 + * @return CommonPage + */ + @Override + public CommonPage getAdminList(StoreOrderSearchRequest request, PageParamRequest pageParamRequest) { + Page startPage = PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.select("id", "order_id", "uid", "real_name", "pay_price", "pay_type", "create_time", "status", "refund_status" + , "refund_reason_wap_img", "refund_reason_wap_explain", "refund_reason_wap", "refund_reason", "refund_reason_time" + , "is_del", "combination_id", "pink_id", "seckill_id", "bargain_id", "verify_code", "remark", "paid", "is_system_del", "shipping_type", "type", "is_alter_price"); + if (StrUtil.isNotBlank(request.getOrderNo())) { + queryWrapper.eq("order_id", request.getOrderNo()); + } + getRequestTimeWhere(queryWrapper, request); + getStatusWhere(queryWrapper, request.getStatus()); + if (!request.getType().equals(2)) { + queryWrapper.eq("type", request.getType()); + } + queryWrapper.orderByDesc("id"); + List orderList = dao.selectList(queryWrapper); + List detailResponseList = new ArrayList<>(); + if (CollUtil.isNotEmpty(orderList)) { + detailResponseList = formatOrder1(orderList); + } + return CommonPage.restPage(CommonPage.copyPageInfo(startPage, detailResponseList)); + } + + + /** + * H5订单列表 + * @param uid 用户uid + * @param status 评价等级|0=未支付,1=待发货,2=待收货,3=待评价,4=已完成,-3=售后/退款 + * @param pageParamRequest 分页参数 + * @return 订单结果列表 + */ + @Override + public List getUserOrderList(Integer uid, Integer status, PageParamRequest pageParamRequest) { + PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + orderUtils.statusApiByWhere(lqw, status); + lqw.eq(StoreOrder::getUid, uid); + lqw.orderByDesc(StoreOrder::getId); + return dao.selectList(lqw); + } + + /** + * 创建订单 + * @param storeOrder 订单参数 + * @return 结果标识 + */ + @Override + public boolean create(StoreOrder storeOrder) { + return dao.insert(storeOrder) > 0; + } + + /** + * 订单基本查询一条 + * @param storeOrder 参数 + * @return 查询结果 + */ + @Override + public StoreOrder getByEntityOne(StoreOrder storeOrder) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.setEntity(storeOrder); + return dao.selectOne(lqw); + } + + /** + * 核销列表 + * @param request 请求参数 + * @param pageParamRequest 分页类参数 + * @return List + */ + @Override + public SystemWriteOffOrderResponse getWriteOffList(SystemWriteOffOrderSearchRequest request, PageParamRequest pageParamRequest) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + String where = " is_del = 0 and shipping_type = 2"; + //时间 + if (!StringUtils.isBlank(request.getDateLimit())) { + dateLimitUtilVo dateLimit = DateUtil.getDateLimit(request.getDateLimit()); + where += " and (create_time between '" + dateLimit.getStartTime() + "' and '" + dateLimit.getEndTime() + "' )"; + } + + if (!StringUtils.isBlank(request.getKeywords())) { + where += " and (real_name like '%"+ request.getKeywords() +"%' or user_phone = '"+ request.getKeywords() +"' or order_id = '" + request.getKeywords() + "' or id = '" + request.getKeywords() + "' )"; + } + + if (request.getStoreId() != null && request.getStoreId() > 0) { + where += " and store_id = " + request.getStoreId(); + } + + SystemWriteOffOrderResponse systemWriteOffOrderResponse = new SystemWriteOffOrderResponse(); + BigDecimal totalPrice = dao.getTotalPrice(where); + if (ObjectUtil.isNull(totalPrice)) { + totalPrice = BigDecimal.ZERO; + } + systemWriteOffOrderResponse.setOrderTotalPrice(totalPrice); //订单总金额 + + BigDecimal refundPrice = dao.getRefundPrice(where); + if (ObjectUtil.isNull(refundPrice)) { + refundPrice = BigDecimal.ZERO; + } + systemWriteOffOrderResponse.setRefundTotalPrice(refundPrice); //退款总金额 + systemWriteOffOrderResponse.setRefundTotal(dao.getRefundTotal(where)); //退款总单数 + + Page storeOrderPage = PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + + lambdaQueryWrapper.apply(where); + lambdaQueryWrapper.orderByDesc(StoreOrder::getId); + List storeOrderList = dao.selectList(lambdaQueryWrapper); + + if (storeOrderList.size() < 1) { + systemWriteOffOrderResponse.setList(CommonPage.restPage(new PageInfo<>())); + return systemWriteOffOrderResponse; + } + + List storeOrderItemResponseArrayList = formatOrder(storeOrderList); + + systemWriteOffOrderResponse.setTotal(storeOrderPage.getTotal()); //总单数 + systemWriteOffOrderResponse.setList(CommonPage.restPage(CommonPage.copyPageInfo(storeOrderPage, storeOrderItemResponseArrayList))); + + return systemWriteOffOrderResponse; + } + + /** + * 格式化订单信息,对外输出一致 + * @param orderList List 订单列表 + * @return List + */ + private List formatOrder1(List orderList) { + List detailResponseList = new ArrayList<>(); + if (CollUtil.isEmpty(orderList)) { + return detailResponseList; + } + + //订单id集合 + List orderIdList = orderList.stream().map(StoreOrder::getId).distinct().collect(Collectors.toList()); + + //获取订单详情map + HashMap> orderInfoList = StoreOrderInfoService.getMapInId(orderIdList); +// +// //根据用户获取信息 +// List userIdList = orderList.stream().map(StoreOrder::getUid).distinct().collect(Collectors.toList()); +// //订单用户信息 +// HashMap userList = userService.getMapListInUid(userIdList); + + for (StoreOrder storeOrder : orderList) { + StoreOrderDetailResponse storeOrderItemResponse = new StoreOrderDetailResponse(); + BeanUtils.copyProperties(storeOrder, storeOrderItemResponse); + + storeOrderItemResponse.setProductList(orderInfoList.get(storeOrder.getId())); + + //订单状态 + storeOrderItemResponse.setStatusStr(getStatus(storeOrder)); + storeOrderItemResponse.setStatus(storeOrder.getStatus()); + //支付方式 + storeOrderItemResponse.setPayTypeStr(getPayType(storeOrder.getPayType())); + + // 添加订单类型信息 + storeOrderItemResponse.setOrderType(getOrderTypeStr(storeOrder)); + detailResponseList.add(storeOrderItemResponse); + } + return detailResponseList; + } + + /** + * 获取订单类型(前端展示) + * @param storeOrder 订单 + * @return String + */ + private String getOrderTypeStr(StoreOrder storeOrder) { + String orderTypeFormat = "[{}订单]{}"; + String orderType = StrUtil.format(orderTypeFormat, "普通", ""); + // 核销 + if (StrUtil.isNotBlank(storeOrder.getVerifyCode())) { + orderType = StrUtil.format(orderTypeFormat, "核销", ""); + } + // 秒杀 + if (ObjectUtil.isNotNull(storeOrder.getSeckillId()) && storeOrder.getSeckillId() > 0) { + orderType = StrUtil.format(orderTypeFormat, "秒杀", ""); + } + // 砍价 + if (ObjectUtil.isNotNull(storeOrder.getBargainId()) && storeOrder.getBargainId() > 0) { + orderType = StrUtil.format(orderTypeFormat, "砍价", ""); + } + // 拼团 + if (ObjectUtil.isNotNull(storeOrder.getCombinationId()) && storeOrder.getCombinationId() > 0) { + StorePink storePink = storePinkService.getById(storeOrder.getPinkId()); + if (ObjectUtil.isNotNull(storePink)) { + String pinkstatus = ""; + if (storePink.getStatus() == 2) { + pinkstatus = "已完成"; + } else if (storePink.getStatus() == 3) { + pinkstatus = "未完成"; + } else { + pinkstatus = "正在进行中"; + } + orderType = StrUtil.format(orderTypeFormat, "拼团", pinkstatus); + } + } + if (storeOrder.getType().equals(1)) {// 视频订单 + orderType = StrUtil.format(orderTypeFormat, "视频号", ""); + } + return orderType; + } + + /** + * 格式化订单信息,对外输出一致 + * @param storeOrderList List 订单列表 + * @author Mr.Zhang + * @since 2020-05-28 + * @return List + */ + private List formatOrder(List storeOrderList) { + List storeOrderItemResponseArrayList = new ArrayList<>(); + if (null == storeOrderList || storeOrderList.size() < 1) { + return storeOrderItemResponseArrayList; + } + //门店id + List storeIdList = storeOrderList.stream().map(StoreOrder::getStoreId).distinct().collect(Collectors.toList()); + //店员id / 核销员id + List clerkIdList = storeOrderList.stream().map(StoreOrder::getClerkId).distinct().collect(Collectors.toList()); + + //订单id集合 + List orderIdList = storeOrderList.stream().map(StoreOrder::getId).distinct().collect(Collectors.toList()); + + //获取门店map + HashMap systemStoreList = systemStoreService.getMapInId(storeIdList); + //获取店员map +// HashMap systemStoreStaffList = systemStoreStaffService.getMapInId(clerkIdList); + HashMap systemStoreStaffList = systemAdminService.getMapInId(clerkIdList); + //获取订单详情map + HashMap> orderInfoList = StoreOrderInfoService.getMapInId(orderIdList); + + //根据用户获取信息 + List userIdList = storeOrderList.stream().map(StoreOrder::getUid).distinct().collect(Collectors.toList()); + //订单用户信息 + HashMap userList = userService.getMapListInUid(userIdList); + + //获取推广人id集合 + List spreadPeopleUidList = new ArrayList<>(); + for(Map.Entry entry : userList.entrySet()) { + spreadPeopleUidList.add(entry.getValue().getSpreadUid()); + } + + //推广信息 + HashMap mapListInUid = new HashMap<>(); + if (userIdList.size() > 0 && spreadPeopleUidList.size() > 0) { + //推广人信息 + mapListInUid = userService.getMapListInUid(spreadPeopleUidList); + } + + for (StoreOrder storeOrder : storeOrderList) { + StoreOrderItemResponse storeOrderItemResponse = new StoreOrderItemResponse(); + BeanUtils.copyProperties(storeOrder, storeOrderItemResponse); + String storeName = ""; + if (systemStoreList.containsKey(storeOrder.getStoreId())) { + storeName = systemStoreList.get(storeOrder.getStoreId()).getName(); + } + storeOrderItemResponse.setStoreName(storeName); + + // 添加核销人信息 + String clerkName = ""; + if (systemStoreStaffList.containsKey(storeOrder.getClerkId())) { + clerkName = systemStoreStaffList.get(storeOrder.getClerkId()).getRealName(); + } + storeOrderItemResponse.setProductList(orderInfoList.get(storeOrder.getId())); + storeOrderItemResponse.setTotalNum(storeOrder.getTotalNum()); + + //订单状态 + storeOrderItemResponse.setStatusStr(getStatus(storeOrder)); + storeOrderItemResponse.setStatus(storeOrder.getStatus()); + //支付方式 + storeOrderItemResponse.setPayTypeStr(getPayType(storeOrder.getPayType())); + + //推广人信息 + if (!userList.isEmpty() && null != userList.get(storeOrder.getUid()) && mapListInUid.containsKey(userList.get(storeOrder.getUid()).getSpreadUid())) { + storeOrderItemResponse.getSpreadInfo().setId(mapListInUid.get(userList.get(storeOrder.getUid()).getSpreadUid()).getUid()); + storeOrderItemResponse.getSpreadInfo().setName(mapListInUid.get(userList.get(storeOrder.getUid()).getSpreadUid()).getNickname()); + } + storeOrderItemResponse.setRefundStatus(storeOrder.getRefundStatus()); + + storeOrderItemResponse.setClerkName(clerkName); + + // 添加订单类型信息 + String orderTypeFormat = "[{}订单]{}"; + String orderType = ""; + // 核销 + if (StrUtil.isNotBlank(storeOrder.getVerifyCode())) { + orderType = StrUtil.format(orderTypeFormat, "核销", ""); + } + // 秒杀 + if (ObjectUtil.isNotNull(storeOrder.getSeckillId()) && storeOrder.getSeckillId() > 0) { + orderType = StrUtil.format(orderTypeFormat, "秒杀", ""); + } + // 砍价 + if (ObjectUtil.isNotNull(storeOrder.getBargainId()) && storeOrder.getBargainId() > 0) { + orderType = StrUtil.format(orderTypeFormat, "砍价", ""); + } + // 拼团 + if (ObjectUtil.isNotNull(storeOrder.getPinkId()) && storeOrder.getPinkId() > 0) { + StorePink storePink = storePinkService.getById(storeOrder.getPinkId()); + if (ObjectUtil.isNotNull(storePink)) { + String pinkstatus = ""; + if (storePink.getStatus() == 2) { + pinkstatus = "已完成"; + } else if (storePink.getStatus() == 3) { + pinkstatus = "未完成"; + } else { + pinkstatus = "正在进行中"; + } + orderType = StrUtil.format(orderTypeFormat, "拼团", pinkstatus); + } + } + if (StrUtil.isBlank(orderType)) { + orderType = StrUtil.format(orderTypeFormat, "普通", ""); + } + storeOrderItemResponse.setOrderType(orderType); + storeOrderItemResponseArrayList.add(storeOrderItemResponse); + } + return storeOrderItemResponseArrayList; + } + + /** + * 累计消费 + * @param userId Integer 用户id + * @author Mr.Zhang + * @since 2020-06-10 + * @return UserBalanceResponse + */ + @Override + public BigDecimal getSumBigDecimal(Integer userId, String date) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.select("sum(pay_price) as pay_price"). + eq("paid", 1). + eq("is_del", 0); + if (null != userId) { + queryWrapper.eq("uid", userId); + } + if (null != date) { + dateLimitUtilVo dateLimit = DateUtil.getDateLimit(date); + queryWrapper.between("create_time", dateLimit.getStartTime(), dateLimit.getEndTime()); + } + StoreOrder storeOrder = dao.selectOne(queryWrapper); + if (null == storeOrder || null == storeOrder.getPayPrice()) { + return BigDecimal.ZERO; + } + return storeOrder.getPayPrice(); + } + + /** + * 按开始结束时间分组订单 + * @param date String 时间范围 + * @param lefTime int 截取创建时间长度 + * @author Mr.Zhang + * @since 2020-05-16 + * @return HashMap + */ + public List getOrderGroupByDate(String date, int lefTime) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.select("sum(pay_price) as pay_price", "left(create_time, "+lefTime+") as orderId", "count(id) as id"); + if (StringUtils.isNotBlank(date)) { + dateLimitUtilVo dateLimit = DateUtil.getDateLimit(date); + queryWrapper.between("create_time", dateLimit.getStartTime(), dateLimit.getEndTime()); + } + queryWrapper.groupBy("orderId").orderByAsc("orderId"); + return dao.selectList(queryWrapper); + } + + /** 退款 + * @param request StoreOrderRefundRequest 退款参数 + * @return boolean + * 这里只处理订单状态 + * 余额支付需要把余额给用户加回去 + * 其余处理放入redis中处理 + */ + @Override + public boolean refund(StoreOrderRefundRequest request) { + StoreOrder storeOrder = getInfoException(request.getOrderNo()); + if (!storeOrder.getPaid()) { + throw new CrmebException("未支付无法退款"); + } + if (storeOrder.getRefundPrice().add(request.getAmount()).compareTo(storeOrder.getPayPrice()) > 0) { + throw new CrmebException("退款金额大于支付金额,请修改退款金额"); + } + if (request.getAmount().compareTo(BigDecimal.ZERO) <= 0) { + if (storeOrder.getPayPrice().compareTo(BigDecimal.ZERO) != 0) { + throw new CrmebException("退款金额不能为0,请修改退款金额"); + } + } + request.setOrderId(storeOrder.getId()); + //用户 + User user = userService.getById(storeOrder.getUid()); + + //退款 + if (storeOrder.getPayType().equals(Constants.PAY_TYPE_WE_CHAT) && request.getAmount().compareTo(BigDecimal.ZERO) > 0) { + try { + storeOrderRefundService.refund(request, storeOrder); + } catch (Exception e) { + e.printStackTrace(); + throw new CrmebException("微信申请退款失败!"); + } + } + + //修改订单退款状态 + storeOrder.setRefundStatus(3); + storeOrder.setRefundPrice(request.getAmount()); + + Boolean execute = transactionTemplate.execute(e -> { + updateById(storeOrder); + if (storeOrder.getPayType().equals(Constants.PAY_TYPE_YUE)) { + //新增日志 + request.setOrderId(storeOrder.getId()); + userBillService.saveRefundBill(request, user); + + // 更新用户金额 + userService.operationNowMoney(user.getUid(), request.getAmount(), user.getNowMoney(), "add"); + + // 退款task + redisUtil.lPush(Constants.ORDER_TASK_REDIS_KEY_AFTER_REFUND_BY_USER, storeOrder.getId()); + } + if (storeOrder.getPayType().equals(Constants.PAY_TYPE_WE_CHAT) && request.getAmount().compareTo(BigDecimal.ZERO) == 0) { + //新增日志 + userBillService.saveRefundBill(request, user); + + // 退款task + redisUtil.lPush(Constants.ORDER_TASK_REDIS_KEY_AFTER_REFUND_BY_USER, storeOrder.getId()); + } + return Boolean.TRUE; + }); + if (!execute) { + storeOrderStatusService.saveRefund(storeOrder.getId(), request.getAmount(), "失败"); + throw new CrmebException("订单更新失败"); + } + + // 发送消息通知 + return execute; + } + + /** + * 订单详情(PC) + * @param orderNo 订单编号 + * @return StoreOrderInfoResponse + */ + @Override + public StoreOrderInfoResponse info(String orderNo) { + StoreOrder storeOrder = getInfoException(orderNo); + if (storeOrder.getIsSystemDel()) { + throw new CrmebException("未找到对应订单信息"); + } + StoreOrderInfoResponse storeOrderInfoResponse = new StoreOrderInfoResponse(); + BeanUtils.copyProperties(storeOrder, storeOrderInfoResponse); + List orderInfos = StoreOrderInfoService.getOrderListByOrderId(storeOrder.getId()); + storeOrderInfoResponse.setOrderInfo(orderInfos); + storeOrderInfoResponse.setPayTypeStr(getPayType(storeOrder.getPayType())); + storeOrderInfoResponse.setStatusStr(getStatus(storeOrder)); + if (ObjectUtil.isNotNull(storeOrder.getStoreId()) && storeOrder.getStoreId() > 0) { + SystemStore systemStorePram = new SystemStore(); + systemStorePram.setId(storeOrder.getStoreId()); + storeOrderInfoResponse.setSystemStore(systemStoreService.getByCondition(systemStorePram)); + } + + //用户信息 + User user = userService.getById(storeOrder.getUid()); + storeOrderInfoResponse.setNikeName(user.getNickname()); + storeOrderInfoResponse.setPhone(user.getPhone()); + + UserBrokerageRecord brokerageRecord = userBrokerageRecordService.getByLinkIdAndLinkType(orderNo, "order"); + if (ObjectUtil.isNotNull(brokerageRecord)) { + User spread = userService.getById(brokerageRecord.getUid()); + storeOrderInfoResponse.setSpreadName(spread.getNickname()); + } + + storeOrderInfoResponse.setProTotalPrice(storeOrder.getTotalPrice().subtract(storeOrder.getTotalPostage())); + return storeOrderInfoResponse; + } + + /** 发送货物 + * @param request StoreOrderSendRequest 发货参数 + * @author Mr.Zhang + * @since 2020-06-10 + * @return boolean + */ + @Override + public Boolean send(StoreOrderSendRequest request) { + //订单信息 + StoreOrder storeOrder = getInfoException(request.getOrderNo()); + if (storeOrder.getIsDel()) throw new CrmebException("订单已删除,不能发货!"); + if (storeOrder.getStatus() > 0) throw new CrmebException("订单已发货请勿重复操作!"); + request.setId(storeOrder.getId()); + switch (request.getType()) { + case "1":// 发货 + express(request, storeOrder); + break; + case "2":// 送货 + delivery(request, storeOrder); + break; + case "3":// 虚拟 + virtual(request, storeOrder); + break; + default: + throw new CrmebException("类型错误"); + } + return true; + } + + /** + * 订单备注 + * @param orderNo 订单编号 + * @param mark 备注 + * @return Boolean + */ + @Override + public Boolean mark(String orderNo, String mark) { + StoreOrder storeOrder = getInfoException(orderNo); + storeOrder.setRemark(mark); + return updateById(storeOrder); + } + + /** + * 拒绝退款 + * @param orderNo 订单编号 + * @param reason String 原因 + * @return Boolean + */ + @Override + public Boolean refundRefuse(String orderNo, String reason) { + if (StrUtil.isBlank(reason)) { + throw new CrmebException("请填写拒绝退款原因"); + } + StoreOrder storeOrder = getInfoException(orderNo); + storeOrder.setRefundReason(reason); + storeOrder.setRefundStatus(0); + + User user = userService.getById(storeOrder.getUid()); + + Boolean execute = transactionTemplate.execute(e -> { + updateById(storeOrder); + storeOrderStatusService.createLog(storeOrder.getId(), Constants.ORDER_LOG_REFUND_REFUSE, Constants.ORDER_LOG_MESSAGE_REFUND_REFUSE.replace("{reason}", reason)); + return Boolean.TRUE; + }); + if (execute) { + // 如果是拼团订单要将拼团状态改回去 + if (ObjectUtil.isNotNull(storeOrder) && storeOrder.getPinkId() > 0) { + StorePink storePink = storePinkService.getById(storeOrder.getPinkId()); + if (storePink.getStatus().equals(3)) { + storePink.setStatus(1); + storePinkService.updateById(storePink); + } + } + } + return execute; + } + + /** + * 查询单条 + * @param storeOrder StoreOrder 订单参数 + * @author Mr.Zhang + * @since 2020-05-28 + * @return StoreOrder + */ + @Override + public StoreOrder getInfoByEntity(StoreOrder storeOrder) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.setEntity(storeOrder); + return dao.selectOne(lambdaQueryWrapper); + } + + /** + * 获取订单快递信息 + * @param orderNo 订单编号 + * @return LogisticsResultVo + */ + @Override + public LogisticsResultVo getLogisticsInfo(String orderNo) { + StoreOrder info = getInfoException(orderNo); + if (info.getType().equals(1)) {// 视频号订单 + Express express = expressService.getByName(info.getDeliveryName()); + if (ObjectUtil.isNotNull(express)) { + info.setDeliveryCode(express.getCode()); + } else { + info.setDeliveryCode(""); + } + } + return logisticService.info(info.getDeliveryId(), null, Optional.ofNullable(info.getDeliveryCode()).orElse(""), info.getUserPhone()); + } + + /** + * 订单 top 查询参数 + * @param status 状态参数 + * @return 订单查询结果 + */ + @Override + public Integer getTopDataUtil(Integer status, Integer userId) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + orderUtils.statusApiByWhere(lqw, status); + lqw.eq(StoreOrder::getUid,userId); + return dao.selectCount(lqw); + } + + /** + * 改价 + * @param orderNo 订单编号 + * @param price 修改后的价格 + * @param oldPrice 原支付金额 + */ + private Boolean orderEditPrice(String orderNo, BigDecimal price, BigDecimal oldPrice) { + LambdaUpdateWrapper luw = new LambdaUpdateWrapper<>(); + luw.set(StoreOrder::getPayPrice, price); + luw.set(StoreOrder::getBeforePayPrice, oldPrice); + luw.set(StoreOrder::getIsAlterPrice, 1); + luw.eq(StoreOrder::getOrderId, orderNo); + luw.eq(StoreOrder::getPaid, false); + return update(luw); + } + + /** + * 根据时间参数统计订单销售额 + * + * @param dateLimit 时间区间 + * @param type 类型 + * @return 统计订单信息 + */ + @Override + public StoreOrderStatisticsResponse orderStatisticsByTime(String dateLimit, Integer type) { + StoreOrderStatisticsResponse response = new StoreOrderStatisticsResponse(); + // 根据开始时间和结束时间获取时间差 再根据时间差获取上一个时间段 查询当前和上一个时间段的数据 进行比较且返回 + dateLimitUtilVo dateRange = DateUtil.getDateLimit(dateLimit); + String dateStartD = dateRange.getStartTime(); + String dateEndD = dateRange.getEndTime(); + int days = DateUtil.daysBetween( + DateUtil.strToDate(dateStartD,Constants.DATE_FORMAT_DATE), + DateUtil.strToDate(dateEndD,Constants.DATE_FORMAT_DATE) + ); + // 同时间区间的上一个时间起点 + String perDateStart = DateUtil.addDay( + DateUtil.strToDate(dateStartD,Constants.DATE_FORMAT_DATE), -days, Constants.DATE_FORMAT_START); + // 当前时间区间 + String dateStart = DateUtil.addDay( + DateUtil.strToDate(dateStartD,Constants.DATE_FORMAT_DATE),0,Constants.DATE_FORMAT_START); + String dateEnd = DateUtil.addDay( + DateUtil.strToDate(dateEndD,Constants.DATE_FORMAT_DATE),0,Constants.DATE_FORMAT_END); + + // 上一个时间段查询 + List orderPerList = getOrderPayedByDateLimit(perDateStart,dateStart); + + // 当前时间段 + List orderCurrentList = getOrderPayedByDateLimit(dateStart, dateEnd); + double increasePrice = 0; + if (type == 1) { + double perSumPrice = orderPerList.stream().mapToDouble(e -> e.getPayPrice().doubleValue()).sum(); + double currentSumPrice = orderCurrentList.stream().mapToDouble(e -> e.getPayPrice().doubleValue()).sum(); + + response.setChart(dao.getOrderStatisticsPriceDetail(new StoreDateRangeSqlPram(dateStart,dateEnd))); + response.setTime(BigDecimal.valueOf(currentSumPrice).setScale(2,BigDecimal.ROUND_HALF_UP)); + // 当前营业额和上一个同比营业额增长区间 + increasePrice = currentSumPrice - perSumPrice; + if (increasePrice <= 0) response.setGrowthRate(0); + else if (perSumPrice == 0) response.setGrowthRate((int) increasePrice * 100); + else response.setGrowthRate((int)((increasePrice * perSumPrice) * 100)); + }else if (type ==2) { + response.setChart(dao.getOrderStatisticsOrderCountDetail(new StoreDateRangeSqlPram(dateStart,dateEnd))); + response.setTime(BigDecimal.valueOf(orderCurrentList.size())); + increasePrice = orderCurrentList.size() - orderPerList.size(); + if (increasePrice <= 0) response.setGrowthRate(0); + else if (orderPerList.size() == 0) response.setGrowthRate((int) increasePrice); + else response.setGrowthRate((int)((increasePrice / orderPerList.size()) * 100)); + } + response.setIncreaseTime(increasePrice+""); + response.setIncreaseTimeStatus(increasePrice >= 0 ? 1:2); + return response; + } + + /** + * 获取用户当天的秒杀数量 + * + * @param uid 用户uid + * @param seckillId 秒杀商品id + * @return 用户当天的秒杀商品订单数量 + */ + @Override + public List getUserCurrentDaySecKillOrders(Integer uid, Integer seckillId) { + String dayStart = DateUtil.nowDateTime(Constants.DATE_FORMAT_START); + String dayEnd = DateUtil.nowDateTime(Constants.DATE_FORMAT_END); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StoreOrder::getUid, uid); + lqw.eq(StoreOrder::getSeckillId, seckillId); + lqw.between(StoreOrder::getCreateTime, dayStart, dayEnd); + lqw.eq(StoreOrder::getIsDel, false); + return dao.selectList(lqw); + } + + /** + * 获取用户当前的砍价订单 + * @param uid 用户uid + * @return 用户当前的砍价订单 + */ + @Override + public List getUserCurrentBargainOrders(Integer uid, Integer bargainId) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StoreOrder::getUid, uid); + lqw.eq(StoreOrder::getBargainId, bargainId); + lqw.eq(StoreOrder::getIsDel, false); + return dao.selectList(lqw); + } + + /** + * 获取用户当前的拼团订单 + * @param uid 用户uid + * @return 用户当前的拼团订单 + */ + @Override + public List getUserCurrentCombinationOrders(Integer uid, Integer combinationId) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StoreOrder::getUid, uid); + lqw.eq(StoreOrder::getCombinationId, combinationId); + lqw.eq(StoreOrder::getIsDel, false); + return dao.selectList(lqw); + } + + @Override + public StoreOrder getByOderId(String orderId) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StoreOrder::getOrderId, orderId); + return dao.selectOne(lqw); + } + + /** + * 获取面单默认配置信息 + * @return ExpressSheetVo + */ + @Override + public ExpressSheetVo getDeliveryInfo() { + return systemConfigService.getDeliveryInfo(); + } + + /** + * 更新支付结果 + * @param orderNo 订单编号 + * @return Boolean + */ + @Override + public Boolean updatePaid(String orderNo) { + LambdaUpdateWrapper lqw = new LambdaUpdateWrapper<>(); + lqw.set(StoreOrder::getPaid, true); + lqw.set(StoreOrder::getPayTime, DateUtil.nowDateTime()); + lqw.eq(StoreOrder::getOrderId, orderNo); + lqw.eq(StoreOrder::getPaid,false); + return update(lqw); + } + + /** + * 跟据订单号列表获取订单列表Map + * @param orderNoList 订单号列表 + * @return Map + */ + @Override + public Map getMapInOrderNo(List orderNoList) { + Map map = CollUtil.newHashMap(); + LambdaUpdateWrapper lqw = new LambdaUpdateWrapper<>(); + lqw.in(StoreOrder::getOrderId, orderNoList); + List orderList = dao.selectList(lqw); + orderList.forEach(order -> { + map.put(order.getOrderId(), order); + }); + return map; + } + + /** + * 获取推广订单总金额 + * @param orderNoList 订单编号列表 + * @return BigDecimal + */ + @Override + public BigDecimal getSpreadOrderTotalPriceByOrderList(List orderNoList) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.select(StoreOrder::getPayPrice); + lqw.in(StoreOrder::getOrderId, orderNoList); + List orderList = dao.selectList(lqw); + return orderList.stream().map(StoreOrder::getPayPrice).reduce(BigDecimal.ZERO, BigDecimal::add); + } + + /** + * 获取所有收货订单id集合 + * @return List + */ + @Override + public List findIdAndUidListByReceipt() { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.select(StoreOrder::getId, StoreOrder::getUid); + lqw.eq(StoreOrder::getStatus, 2); + lqw.eq(StoreOrder::getRefundStatus, 0); + lqw.eq(StoreOrder::getIsDel, false); + List orderList = dao.selectList(lqw); + if (CollUtil.isEmpty(orderList)) { + return CollUtil.newArrayList(); + } + return orderList; + } + + /** + * + * @param userId 用户uid + * @param pageParamRequest 分页参数 + * @return List + */ + @Override + public List findPaidListByUid(Integer userId, PageParamRequest pageParamRequest) { + PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(StoreOrder::getUid, userId); + lqw.eq(StoreOrder::getPaid, true); + lqw.eq(StoreOrder::getIsDel, false); + lqw.lt(StoreOrder::getRefundStatus, 2); + lqw.orderByDesc(StoreOrder::getId); + return dao.selectList(lqw); + } + + /** + * 订单改价 + * @param request 改价请求对象 + * @return 改价结果 + */ + @Override + public Boolean updatePrice(StoreOrderUpdatePriceRequest request) { + StoreOrder existOrder = getInfoException(request.getOrderNo()); + // 订单已支付 + if (existOrder.getPaid()) { + throw new CrmebException(StrUtil.format("订单号为 {} 的订单已支付", existOrder.getOrderId())); + } + if (existOrder.getIsAlterPrice()) { + throw new CrmebException("系统只支持一次改价"); + } + // 修改价格和原来价格相同 + if (existOrder.getPayPrice().compareTo(request.getPayPrice()) ==0) { + throw new CrmebException(StrUtil.format("修改价格不能和原支付价格相同 原价 {} 修改价 {}", existOrder.getPayPrice(), request.getPayPrice())); + } + String oldPrice = existOrder.getPayPrice()+""; + + Boolean execute = transactionTemplate.execute(e -> { + // 修改订单价格 + orderEditPrice(existOrder.getOrderId(), request.getPayPrice(), existOrder.getPayPrice()); + // 订单修改状态操作 + storeOrderStatusService.createLog(existOrder.getId(), Constants.ORDER_LOG_EDIT, + Constants.RESULT_ORDER_EDIT_PRICE_LOGS.replace("${orderPrice}", oldPrice) + .replace("${price}", request.getPayPrice() + "")); + return Boolean.TRUE; + }); + if (!execute) { + throw new CrmebException(Constants.RESULT_ORDER_EDIT_PRICE_SUCCESS + .replace("${orderNo}", existOrder.getOrderId()).replace("${price}", request.getPayPrice()+"")); + } + // 发送改价短信提醒 + SystemNotification notification = systemNotificationService.getByMark(NotifyConstants.MODIFY_ORDER_PRICE_MARK); + if (notification.getIsSms().equals(1)) { + User user = userService.getById(existOrder.getUid()); + if (StrUtil.isNotBlank(user.getPhone())) { + SmsTemplate smsTemplate = smsTemplateService.getDetail(notification.getSmsId()); + // 发送改价短信提醒 + smsService.sendOrderEditPriceNotice(user.getPhone(), existOrder.getOrderId(), request.getPayPrice(), Integer.valueOf(smsTemplate.getTempId())); + } + } + + return execute; + } + + /** + * 获取订单总数量 + * @param uid 用户uid + * @return Integer + */ + @Override + public Integer getOrderCountByUid(Integer uid) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StoreOrder::getPaid, true); + lqw.eq(StoreOrder::getIsDel, false); + lqw.eq(StoreOrder::getUid, uid); + lqw.lt(StoreOrder::getRefundStatus, 2); + return dao.selectCount(lqw); + } + + /** + * 获取用户总消费金额 + * @param userId 用户uid + * @return BigDecimal + */ + @Override + public BigDecimal getSumPayPriceByUid(Integer userId) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.select(StoreOrder::getPayPrice); + lqw.eq(StoreOrder::getPaid, true); + lqw.eq(StoreOrder::getIsDel, false); + lqw.eq(StoreOrder::getUid, userId); + lqw.lt(StoreOrder::getRefundStatus, 2); + List orderList = dao.selectList(lqw); + return orderList.stream().map(StoreOrder::getPayPrice).reduce(BigDecimal.ZERO, BigDecimal::add); + } + + /** + * 获取订单数量(时间) + * @param uid 用户uid + * @return Integer + */ + @Override + public Integer getOrderCountByUidAndDate(Integer uid, String date) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StoreOrder::getPaid, true); + lqw.eq(StoreOrder::getIsDel, false); + lqw.eq(StoreOrder::getUid, uid); + lqw.lt(StoreOrder::getRefundStatus, 2); + if (StrUtil.isNotBlank(date)) { + dateLimitUtilVo dateLimit = DateUtil.getDateLimit(date); + lqw.between(StoreOrder::getCreateTime, dateLimit.getStartTime(), dateLimit.getEndTime()); + } + return dao.selectCount(lqw); + } + + /** + * 获取用户消费金额(时间) + * @param userId 用户uid + * @return BigDecimal + */ + @Override + public BigDecimal getSumPayPriceByUidAndDate(Integer userId, String date) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.select(StoreOrder::getPayPrice); + lqw.eq(StoreOrder::getPaid, true); + lqw.eq(StoreOrder::getIsDel, false); + lqw.eq(StoreOrder::getUid, userId); + lqw.lt(StoreOrder::getRefundStatus, 2); + if (StrUtil.isNotBlank(date)) { + dateLimitUtilVo dateLimit = DateUtil.getDateLimit(date); + lqw.between(StoreOrder::getCreateTime, dateLimit.getStartTime(), dateLimit.getEndTime()); + } + List orderList = dao.selectList(lqw); + return orderList.stream().map(StoreOrder::getPayPrice).reduce(BigDecimal.ZERO, BigDecimal::add); + } + + /** + * 获取砍价订单 + * @param bargainId 砍价商品id + * @param bargainUserId 用户砍价活动id + * @return StoreOrder + */ + @Override + public StoreOrder getByBargainOrder(Integer bargainId, Integer bargainUserId) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StoreOrder::getBargainId, bargainId); + lqw.eq(StoreOrder::getBargainUserId, bargainUserId); + lqw.orderByDesc(StoreOrder::getId); + lqw.last(" limit 1"); + return dao.selectOne(lqw); + } + + /** + * 获取订单状态数量 + * @return StoreOrderCountItemResponse + */ + @Override + public StoreOrderCountItemResponse getOrderStatusNum(String dateLimit, Integer type) { + StoreOrderCountItemResponse response = new StoreOrderCountItemResponse(); + if (type.equals(2)) { + type = null; + } + // 全部订单 + response.setAll(getCount(dateLimit, Constants.ORDER_STATUS_ALL, type)); + // 未支付订单 + response.setUnPaid(getCount(dateLimit, Constants.ORDER_STATUS_UNPAID, type)); + // 未发货订单 + response.setNotShipped(getCount(dateLimit, Constants.ORDER_STATUS_NOT_SHIPPED, type)); + // 待收货订单 + response.setSpike(getCount(dateLimit, Constants.ORDER_STATUS_SPIKE, type)); + // 待评价订单 + response.setBargain(getCount(dateLimit, Constants.ORDER_STATUS_BARGAIN, type)); + // 交易完成订单 + response.setComplete(getCount(dateLimit, Constants.ORDER_STATUS_COMPLETE, type)); + // 待核销订单 + response.setToBeWrittenOff(getCount(dateLimit, Constants.ORDER_STATUS_TOBE_WRITTEN_OFF, type)); + // 退款中订单 + response.setRefunding(getCount(dateLimit, Constants.ORDER_STATUS_REFUNDING, type)); + // 已退款订单 + response.setRefunded(getCount(dateLimit, Constants.ORDER_STATUS_REFUNDED, type)); + // 已删除订单 + response.setDeleted(getCount(dateLimit, Constants.ORDER_STATUS_DELETED, type)); + return response; + } + + /** + * 获取订单统计数据 + * @param dateLimit 时间端 + * @return StoreOrderTopItemResponse + */ + @Override + public StoreOrderTopItemResponse getOrderData(String dateLimit) { + StoreOrderTopItemResponse itemResponse = new StoreOrderTopItemResponse(); + // 订单数量 + itemResponse.setCount(getCount(dateLimit, Constants.ORDER_STATUS_ALL)); + // 订单金额 + itemResponse.setAmount(getAmount(dateLimit, "")); + // 微信支付金额 + itemResponse.setWeChatAmount(getAmount(dateLimit, Constants.PAY_TYPE_WE_CHAT)); + // 余额支付金额 + itemResponse.setYueAmount(getAmount(dateLimit, Constants.PAY_TYPE_YUE)); + return itemResponse; + } + + /** + * 订单删除 + * @param orderNo 订单编号 + * @return Boolean + */ + @Override + public Boolean delete(String orderNo) { + StoreOrder storeOrder = getInfoException(orderNo); + if (!storeOrder.getIsDel()) { + throw new CrmebException("您选择的的订单存在用户未删除的订单,无法删除用户未删除的订单!"); + } + if (storeOrder.getIsSystemDel()) { + throw new CrmebException("此订单已经被删除了!"); + } + storeOrder.setIsSystemDel(true); + return updateById(storeOrder); + } + + /** + * 通过日期获取商品交易件数 + * @param date 日期,yyyy-MM-dd格式 + * @return Integer + */ + @Override + public Integer getOrderProductNumByDate(String date) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.select("IFNULL(sum(total_num), 0) as total_num"); + wrapper.apply("date_format(create_time, '%Y-%m-%d') = {0}", date); + StoreOrder storeOrder = dao.selectOne(wrapper); + return storeOrder.getTotalNum(); + } + + /** + * 通过日期获取商品交易成功件数 + * @param date 日期,yyyy-MM-dd格式 + * @return Integer + */ + @Override + public Integer getOrderSuccessProductNumByDate(String date) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.select("IFNULL(sum(total_num), 0) as total_num"); + wrapper.eq("paid", 1); + wrapper.apply("date_format(create_time, '%Y-%m-%d') = {0}", date); + StoreOrder storeOrder = dao.selectOne(wrapper); + return storeOrder.getTotalNum(); + } + + /** + * 通过日期获取订单数量 + * @param date 日期,yyyy-MM-dd格式 + * @return Integer + */ + @Override + public Integer getOrderNumByDate(String date) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.select("id"); + wrapper.eq("paid", 1); + wrapper.apply("date_format(create_time, '%Y-%m-%d') = {0}", date); + return dao.selectCount(wrapper); + } + + /** + * 通过日期获取支付订单数量 + * @param date 日期,yyyy-MM-dd格式 + * @return Integer + */ + @Override + public Integer getPayOrderNumByDate(String date) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.select("id"); + wrapper.eq("paid", 1); + wrapper.apply("date_format(create_time, '%Y-%m-%d') = {0}", date); + return dao.selectCount(wrapper); + } + + /** + * 通过日期获取支付订单金额 + * @param date 日期,yyyy-MM-dd格式 + * @return BigDecimal + */ + @Override + public BigDecimal getPayOrderAmountByDate(String date) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.select("IFNULL(sum(pay_price), 0) as pay_price"); + wrapper.eq("paid", 1); + wrapper.apply("date_format(create_time, '%Y-%m-%d') = {0}", date); + StoreOrder storeOrder = dao.selectOne(wrapper); + return storeOrder.getPayPrice(); + } + + /** + * 通过日期获取支付订单金额 + * @param startDate 日期 + * @param endDate 日期 + * @return BigDecimal + */ + @Override + public BigDecimal getPayOrderAmountByPeriod(String startDate, String endDate) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.select("IFNULL(sum(pay_price), 0) as pay_price"); + wrapper.eq("paid", 1); + wrapper.apply("date_format(create_time, '%Y-%m-%d') between {0} and {1}", startDate, endDate); + StoreOrder storeOrder = dao.selectOne(wrapper); + return storeOrder.getPayPrice(); + } + + /** + * 通过日期获取余额支付订单支付金额 + * @param date 日期,yyyy-MM-dd格式 + * @return BigDecimal + */ + @Override + public BigDecimal getYuePayOrderAmountByDate(String date) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.select("IFNULL(sum(pay_price), 0) as pay_price"); + wrapper.eq("paid", 1); + wrapper.eq("pay_type", "yue"); + wrapper.apply("date_format(create_time, '%Y-%m-%d') = {0}", date); + StoreOrder storeOrder = dao.selectOne(wrapper); + return storeOrder.getPayPrice(); + } + + /** + * 获取累计消费金额 + * @return BigDecimal + */ + @Override + public BigDecimal getTotalPrice() { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.select("IFNULL(sum(pay_price), 0) as pay_price"); + wrapper.eq("paid", 1); + StoreOrder storeOrder = dao.selectOne(wrapper); + return storeOrder.getPayPrice(); + } + + /** + * 根据日期获取下单用户数量 + * @param date 日期 + * @return Integer + */ + @Override + public Integer getOrderUserNumByDate(String date) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.select("id"); + wrapper.apply("date_format(create_time, '%Y-%m-%d') = {0}", date); + wrapper.groupBy("uid"); + List orderList = dao.selectList(wrapper); + if (CollUtil.isEmpty(orderList)) { + return 0; + } + return orderList.size(); + } + + /** + * 根据日期获取下单用户数量 + * @param startDate 日期 + * @param endDate 日期 + * @return Integer + */ + @Override + public Integer getOrderUserNumByPeriod(String startDate, String endDate) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.select("id"); + wrapper.apply("date_format(create_time, '%Y-%m-%d') between {0} and {1}", startDate, endDate); + wrapper.groupBy("uid"); + List orderList = dao.selectList(wrapper); + if (CollUtil.isEmpty(orderList)) { + return 0; + } + return orderList.size(); + } + + /** + * 根据日期获取成交用户数量 + * @param date 日期 + * @return Integer + */ + @Override + public Integer getOrderPayUserNumByDate(String date) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.select("id"); + wrapper.eq("paid", 1); + wrapper.apply("date_format(create_time, '%Y-%m-%d') = {0}", date); + wrapper.groupBy("uid"); + List orderList = dao.selectList(wrapper); + if (CollUtil.isEmpty(orderList)) { + return 0; + } + return orderList.size(); + } + + /** + * 根据日期获取成交用户数量 + * @param startDate 日期 + * @param endDate 日期 + * @return Integer + */ + @Override + public Integer getOrderPayUserNumByPeriod(String startDate, String endDate) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.select("id"); + wrapper.eq("paid", 1); + wrapper.apply("date_format(create_time, '%Y-%m-%d') between {0} and {1}", startDate, endDate); + wrapper.groupBy("uid"); + List orderList = dao.selectList(wrapper); + if (CollUtil.isEmpty(orderList)) { + return 0; + } + return orderList.size(); + } + + /** + * 根据用户uid列表获取成交用户数量 + * @param uidList 用户列表 + * @return Integer + */ + @Override + public Integer getOrderPayUserNumByUidList(List uidList) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.select("id"); + wrapper.eq("paid", 1); + wrapper.in("uid", uidList); + wrapper.groupBy("uid"); + List orderList = dao.selectList(wrapper); + if (CollUtil.isEmpty(orderList)) { + return 0; + } + return orderList.size(); + } + + /** + * 根据用户uid列表获取支付金额 + * @param uidList 用户列表 + * @return BigDecimal + */ + @Override + public BigDecimal getPayOrderAmountByUidList(List uidList) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.select("IFNULL(sum(pay_price), 0.00) as pay_price"); +// wrapper.select("ifnull(if(sum(pay_price) = 0.00, 0, sum(pay_price)), 0) as pay_price"); + wrapper.eq("paid", 1); + wrapper.in("uid", uidList); + List orderList = dao.selectList(wrapper); + if (CollUtil.isEmpty(orderList)) { + return BigDecimal.ZERO; + } + return orderList.stream().map(StoreOrder::getPayPrice).reduce(BigDecimal.ZERO, BigDecimal::add); + } + + /** + * 获取待发货订单数量 + * @return Integer + */ + @Override + public Integer getNotShippingNum() { + return getCount("", Constants.ORDER_STATUS_NOT_SHIPPED); + } + + /** + * 获取退款中订单数量 + */ + @Override + public Integer getRefundingNum() { + return getCount("", Constants.ORDER_STATUS_REFUNDING); + } + + /** + * 获取待核销订单数量 + */ + @Override + public Integer getNotWriteOffNum() { + return getCount("", Constants.ORDER_STATUS_TOBE_WRITTEN_OFF); + } + + /** + * 获取佣金相关数据 + * @param uid 用户uid + * @param spreadId 推广人uid + */ + @Override + public OrderBrokerageData getBrokerageData(Integer uid, Integer spreadId) { + return dao.getBrokerageData(uid, spreadId); + } + +///////////////////////////////////////////////////////////////////////////////////////////////////// 以下为自定义方法 + + /** + * 根据时间参数获取有效订单 + * @return 有效订单列表 + */ + private List getOrderPayedByDateLimit(String startTime, String endTime) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StoreOrder::getIsDel, false).eq(StoreOrder::getPaid, true).eq(StoreOrder::getRefundStatus,0) + .between(StoreOrder::getCreateTime, startTime, endTime); + return dao.selectList(lqw); + } + + private StoreOrder getInfoException(String orderNo) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StoreOrder::getOrderId, orderNo); + StoreOrder storeOrder = dao.selectOne(lqw); + if (ObjectUtil.isNull(storeOrder)) { + throw new CrmebException("没有找到订单信息"); + } + return storeOrder; + } + + /** 快递 + * @param request StoreOrderSendRequest 发货参数 + * @param storeOrder StoreOrder 订单信息 + */ + private void express(StoreOrderSendRequest request, StoreOrder storeOrder) { + // 校验快递发货参数 + validateExpressSend(request); + //快递公司信息 + Express express = expressService.getByCode(request.getExpressCode()); + if (request.getExpressRecordType().equals("1")) { // 正常发货 + deliverGoods(request, storeOrder); + } + if (request.getExpressRecordType().equals("2")) { // 电子面单 + request.setExpressName(express.getName()); + expressDump(request, storeOrder, express); + } + + storeOrder.setDeliveryCode(express.getCode()); + storeOrder.setDeliveryName(express.getName()); + storeOrder.setStatus(1); + storeOrder.setDeliveryType("express"); + + String message = Constants.ORDER_LOG_MESSAGE_EXPRESS.replace("{deliveryName}", express.getName()).replace("{deliveryCode}", storeOrder.getDeliveryId()); + + Boolean execute = transactionTemplate.execute(i -> { + updateById(storeOrder); + //订单记录增加 + storeOrderStatusService.createLog(request.getId(), Constants.ORDER_LOG_EXPRESS, message); + return Boolean.TRUE; + }); + + if (!execute) throw new CrmebException("快递发货失败!"); + + sendGoodsNotify(storeOrder); + } + + + /** + * 发货通知 + * @param storeOrder 订单 + */ + private void sendGoodsNotify(StoreOrder storeOrder) { + User user = userService.getById(storeOrder.getUid()); + SystemNotification notification = systemNotificationService.getByMark(NotifyConstants.DELIVER_GOODS_MARK); + if (notification.getIsSms().equals(1)) { + // 发货短信提醒 + if (StrUtil.isNotBlank(user.getPhone())) { + SmsTemplate smsTemplate = smsTemplateService.getDetail(notification.getSmsId()); + String proName = ""; + List voList = storeOrderInfoService.getOrderListByOrderId(storeOrder.getId()); + proName = voList.get(0).getInfo().getProductName(); + if (voList.size() > 1) { + proName = proName.concat("等"); + } + smsService.sendOrderDeliverNotice(user.getPhone(), user.getNickname(), proName, storeOrder.getOrderId(), Integer.valueOf(smsTemplate.getTempId())); + } + } + + // 发送消息通知 + pushMessageOrder(storeOrder, user, notification); + } + + /** + * 发送消息通知 + * 根据用户类型发送 + * 公众号模板消息 + * 小程序订阅消息 + */ + private void pushMessageOrder(StoreOrder storeOrder, User user, SystemNotification notification) { + if (storeOrder.getIsChannel().equals(2)) { + return; + } + if (!storeOrder.getPayType().equals(Constants.PAY_TYPE_WE_CHAT)) { + return; + } + UserToken userToken; + HashMap temMap = new HashMap<>(); + + // 公众号 + if (storeOrder.getIsChannel().equals(Constants.ORDER_PAY_CHANNEL_PUBLIC) && notification.getIsWechat().equals(1)) { + userToken = userTokenService.getTokenByUserId(user.getUid(), UserConstants.USER_TOKEN_TYPE_WECHAT); + if (ObjectUtil.isNull(userToken)) { + return ; + } + // 发送微信模板消息 + temMap.put(Constants.WE_CHAT_TEMP_KEY_FIRST, "订单发货提醒"); + temMap.put("keyword1", storeOrder.getOrderId()); + temMap.put("keyword2", cn.hutool.core.date.DateUtil.now()); + temMap.put("keyword3", storeOrder.getDeliveryName()); + temMap.put("keyword4", storeOrder.getDeliveryId()); + temMap.put(Constants.WE_CHAT_TEMP_KEY_END, "欢迎再次购买!"); + templateMessageService.pushTemplateMessage(notification.getWechatId(), temMap, userToken.getToken()); + return; + } else if (notification.getIsRoutine().equals(1)) { + // 小程序发送订阅消息 + userToken = userTokenService.getTokenByUserId(user.getUid(), UserConstants.USER_TOKEN_TYPE_ROUTINE); + if (ObjectUtil.isNull(userToken)) { + return ; + } + // 组装数据 + // 注释部分为丰享汇小程序 +// temMap.put("character_string1", storeOrder.getOrderId()); +// temMap.put("name3", storeOrder.getDeliveryName()); +// temMap.put("character_string4", storeOrder.getDeliveryId()); +// temMap.put("thing7", "您的订单已发货"); + // 放开部分为一码秦川小程序 + temMap.put("character_string1", storeOrder.getOrderId()); + temMap.put("name6", storeOrder.getDeliveryName()); + temMap.put("character_string7", storeOrder.getDeliveryId()); + temMap.put("thing11", "您的订单已发货"); + templateMessageService.pushMiniTemplateMessage(notification.getRoutineId(), temMap, userToken.getToken()); + } + } + + /** + * 电子面单 + * @param request + * @param storeOrder + * @param express + */ + private void expressDump(StoreOrderSendRequest request, StoreOrder storeOrder, Express express) { + String configExportOpen = systemConfigService.getValueByKeyException("config_export_open"); + if (!configExportOpen.equals("1")) {// 电子面单未开启 + throw new CrmebException("请先开启电子面单"); + } + MyRecord record = new MyRecord(); + record.set("com", express.getCode());// 快递公司编码 + record.set("to_name", storeOrder.getRealName());// 收件人 + record.set("to_tel", storeOrder.getUserPhone());// 收件人电话 + record.set("to_addr", storeOrder.getUserAddress());// 收件人详细地址 + record.set("from_name", request.getToName());// 寄件人 + record.set("from_tel", request.getToTel());// 寄件人电话 + record.set("from_addr", request.getToAddr());// 寄件人详细地址 + record.set("temp_id", request.getExpressTempId());// 电子面单模板ID + String siid = systemConfigService.getValueByKeyException("config_export_siid"); + record.set("siid", siid);// 云打印机编号 + record.set("count", storeOrder.getTotalNum());// 商品数量 + + //获取购买商品名称 + List orderIdList = new ArrayList<>(); + orderIdList.add(storeOrder.getId()); + HashMap> orderInfoMap = StoreOrderInfoService.getMapInId(orderIdList); + if (orderInfoMap.isEmpty() || !orderInfoMap.containsKey(storeOrder.getId())) { + throw new CrmebException("没有找到购买的商品信息"); + } + List productNameList = new ArrayList<>(); + for (StoreOrderInfoOldVo storeOrderInfoVo : orderInfoMap.get(storeOrder.getId())) { + productNameList.add(storeOrderInfoVo.getInfo().getProductName()); + } + + record.set("cargo", String.join(",", productNameList));// 物品名称 + if (express.getPartnerId()) { + record.set("partner_id", express.getAccount());// 电子面单月结账号(部分快递公司必选) + } + if (express.getPartnerKey()) { + record.set("partner_key", express.getPassword());// 电子面单密码(部分快递公司必选) + } + if (express.getNet()) { + record.set("net", express.getNetName());// 收件网点名称(部分快递公司必选) + } + + MyRecord myRecord = onePassService.expressDump(record); + storeOrder.setDeliveryId(myRecord.getStr("kuaidinum")); + } + + /** + * 正常发货 + */ + private void deliverGoods(StoreOrderSendRequest request, StoreOrder storeOrder) { + storeOrder.setDeliveryId(request.getExpressNumber()); + } + + /** + * 校验快递发货参数 + */ + private void validateExpressSend(StoreOrderSendRequest request) { + if (request.getExpressRecordType().equals("1")) { + if (StrUtil.isBlank(request.getExpressNumber())) throw new CrmebException("请填写快递单号"); + return; + } + if (StrUtil.isBlank(request.getExpressCode())) throw new CrmebException("请选择快递公司"); + if (StrUtil.isBlank(request.getExpressRecordType())) throw new CrmebException("请选择发货记录类型"); + if (StrUtil.isBlank(request.getExpressTempId())) throw new CrmebException("请选择电子面单"); + if (StrUtil.isBlank(request.getToName())) throw new CrmebException("请填写寄件人姓名"); + if (StrUtil.isBlank(request.getToTel())) throw new CrmebException("请填写寄件人电话"); + if (StrUtil.isBlank(request.getToAddr())) throw new CrmebException("请填写寄件人地址"); + } + + /** 送货上门 + * @param request StoreOrderSendRequest 发货参数 + * @param storeOrder StoreOrder 订单信息 + * @author Mr.Zhang + * @since 2020-06-10 + */ + private void delivery(StoreOrderSendRequest request, StoreOrder storeOrder) { + if (StrUtil.isBlank(request.getDeliveryName())) throw new CrmebException("请输入送货人姓名"); + if (StrUtil.isBlank(request.getDeliveryTel())) throw new CrmebException("请输入送货人电话号码"); + ValidateFormUtil.isPhone(request.getDeliveryTel(), "送货人联系方式"); + + //送货信息 + storeOrder.setDeliveryName(request.getDeliveryName()); + storeOrder.setDeliveryId(request.getDeliveryTel()); + storeOrder.setStatus(1); + storeOrder.setDeliveryType("send"); + + //获取购买商品名称 + List orderIdList = new ArrayList<>(); + orderIdList.add(storeOrder.getId()); + HashMap> orderInfoMap = StoreOrderInfoService.getMapInId(orderIdList); + if (orderInfoMap.isEmpty() || !orderInfoMap.containsKey(storeOrder.getId())) { + throw new CrmebException("没有找到购买的商品信息"); + } + List productNameList = new ArrayList<>(); + for (StoreOrderInfoOldVo storeOrderInfoVo : orderInfoMap.get(storeOrder.getId())) { + productNameList.add(storeOrderInfoVo.getInfo().getProductName()); + } + + String message = Constants.ORDER_LOG_MESSAGE_DELIVERY.replace("{deliveryName}", request.getDeliveryName()).replace("{deliveryCode}", request.getDeliveryTel()); + + Boolean execute = transactionTemplate.execute(i -> { + // 更新订单 + updateById(storeOrder); + // 订单记录增加 + storeOrderStatusService.createLog(request.getId(), Constants.ORDER_LOG_DELIVERY, message); + return Boolean.TRUE; + }); + if (!execute) throw new CrmebException("订单更新送货失败"); + + User user = userService.getById(storeOrder.getUid()); + // 发送消息通知 + pushMessageDeliveryOrder(storeOrder, user, request, productNameList); + } + + /** + * 发送消息通知 + * 根据用户类型发送 + * 公众号模板消息 + * 小程序订阅消息 + */ + private void pushMessageDeliveryOrder(StoreOrder storeOrder, User user, StoreOrderSendRequest request, List productNameList) { + if (storeOrder.getIsChannel().equals(2)) { + return; + } + if (!storeOrder.getPayType().equals(Constants.PAY_TYPE_WE_CHAT)) { + return; + } + SystemNotification notification = systemNotificationService.getByMark(NotifyConstants.FULFILLMENT_ORDER_MARK); + UserToken userToken; + HashMap map = new HashMap<>(); + String proName = ""; + if (CollUtil.isNotEmpty(productNameList)) { + proName = StringUtils.join(productNameList, "|"); + } + // 公众号 + if (storeOrder.getIsChannel().equals(Constants.ORDER_PAY_CHANNEL_PUBLIC) && notification.getIsWechat().equals(1)) { + userToken = userTokenService.getTokenByUserId(user.getUid(), UserConstants.USER_TOKEN_TYPE_WECHAT); + if (ObjectUtil.isNull(userToken)) { + return ; + } + map.put(Constants.WE_CHAT_TEMP_KEY_FIRST, "订单配送提醒"); + map.put("keyword1", storeOrder.getOrderId()); + map.put("keyword2", DateUtil.dateToStr(storeOrder.getCreateTime(), Constants.DATE_FORMAT)); + map.put("keyword3", storeOrder.getUserAddress()); + map.put("keyword4", request.getDeliveryName()); + map.put("keyword5", request.getDeliveryTel()); + map.put(Constants.WE_CHAT_TEMP_KEY_END, "欢迎再次购买!"); + // 发送微信模板消息 + templateMessageService.pushTemplateMessage(notification.getWechatId(), map, userToken.getToken()); + } else if (notification.getIsRoutine().equals(1)) { + // 小程序发送订阅消息 + userToken = userTokenService.getTokenByUserId(user.getUid(), UserConstants.USER_TOKEN_TYPE_ROUTINE); + if (ObjectUtil.isNull(userToken)) { + return ; + } + + if (proName.length() > 20) { + proName = proName.substring(0, 15) + "***"; + } +// map.put("thing8", proName); +// map.put("character_string1", storeOrder.getOrderId()); +// map.put("name4", request.getDeliveryName()); +// map.put("phone_number10", request.getDeliveryTel()); + map.put("thing8", proName); + map.put("character_string1", storeOrder.getOrderId()); + map.put("name4", request.getDeliveryName()); + map.put("phone_number10", request.getDeliveryTel()); + templateMessageService.pushMiniTemplateMessage(notification.getRoutineId(), map, userToken.getToken()); + } + } + + /** 虚拟 + * @param request StoreOrderSendRequest 发货参数 + * @param storeOrder StoreOrder 订单信息 + * @author Mr.Zhang + * @since 2020-06-10 + */ + private void virtual(StoreOrderSendRequest request, StoreOrder storeOrder) { + //快递信息 + storeOrder.setDeliveryType("fictitious"); + storeOrder.setStatus(1); + + Boolean execute = transactionTemplate.execute(i -> { + updateById(storeOrder); + //订单记录增加 + storeOrderStatusService.createLog(request.getId(), Constants.ORDER_LOG_DELIVERY_VI, "虚拟物品发货"); + return Boolean.TRUE; + }); + if (!execute) throw new CrmebException("虚拟物品发货失败"); + } + + /** + * 获取订单总数 + * @param dateLimit 时间端 + * @param status String 状态 + * @return Integer + */ + private Integer getCount(String dateLimit, String status) { + //总数只计算时间 + QueryWrapper queryWrapper = new QueryWrapper<>(); + if (StrUtil.isNotBlank(dateLimit)) { + dateLimitUtilVo dateLimitUtilVo = DateUtil.getDateLimit(dateLimit); + queryWrapper.between("create_time", dateLimitUtilVo.getStartTime(), dateLimitUtilVo.getEndTime()); + } + getStatusWhereNew(queryWrapper, status); + return dao.selectCount(queryWrapper); + } + + /** + * 获取订单总数 + * @param dateLimit 时间端 + * @param status String 状态 + * @return Integer + */ + private Integer getCount(String dateLimit, String status, Integer type) { + //总数只计算时间 + QueryWrapper queryWrapper = new QueryWrapper<>(); + if (StrUtil.isNotBlank(dateLimit)) { + dateLimitUtilVo dateLimitUtilVo = DateUtil.getDateLimit(dateLimit); + queryWrapper.between("create_time", dateLimitUtilVo.getStartTime(), dateLimitUtilVo.getEndTime()); + } + getStatusWhereNew(queryWrapper, status); + if (ObjectUtil.isNotNull(type)) { + queryWrapper.eq("type", type); + } + return dao.selectCount(queryWrapper); + } + + /** + * 获取订单金额 + * @param dateLimit 时间端 + * @param type 支付类型 + * @return Integer + */ + private BigDecimal getAmount(String dateLimit, String type) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.select("sum(pay_price) as pay_price"); + if (StringUtils.isNotBlank(type)) { + queryWrapper.eq("pay_type", type); + } + queryWrapper.isNotNull("pay_time"); + queryWrapper.eq("paid", 1); + if (StringUtils.isNotBlank(dateLimit)) { + dateLimitUtilVo dateLimitUtilVo = DateUtil.getDateLimit(dateLimit); + queryWrapper.between("create_time", dateLimitUtilVo.getStartTime(), dateLimitUtilVo.getEndTime()); + } + StoreOrder storeOrder = dao.selectOne(queryWrapper); + if (ObjectUtil.isNull(storeOrder)) { + return BigDecimal.ZERO; + } + return storeOrder.getPayPrice(); + } + + /** + * 获取request的where条件 + * @param queryWrapper QueryWrapper 表达式 + * @param request StoreOrderSearchRequest 请求参数 + */ + private void getRequestTimeWhere(QueryWrapper queryWrapper, StoreOrderSearchRequest request) { + if (StringUtils.isNotBlank(request.getDateLimit())) { + dateLimitUtilVo dateLimitUtilVo = DateUtil.getDateLimit(request.getDateLimit()); + queryWrapper.between("create_time", dateLimitUtilVo.getStartTime(), dateLimitUtilVo.getEndTime()); + } + } + + /** + * 根据订单状态获取where条件 + * @param queryWrapper QueryWrapper 表达式 + * @param status String 类型 + */ + private void getStatusWhereNew(QueryWrapper queryWrapper, String status) { + if (StrUtil.isBlank(status)) { + return; + } + switch (status) { + case Constants.ORDER_STATUS_ALL: //全部 + break; + case Constants.ORDER_STATUS_UNPAID: //未支付 + queryWrapper.eq("paid", 0);//支付状态 + queryWrapper.eq("status", 0); //订单状态 + queryWrapper.eq("is_del", 0);//删除状态 + break; + case Constants.ORDER_STATUS_NOT_SHIPPED: //未发货 + queryWrapper.eq("paid", 1); + queryWrapper.eq("status", 0); + queryWrapper.eq("refund_status", 0); + queryWrapper.eq("shipping_type", 1);//配送方式 + queryWrapper.eq("is_del", 0); + break; + case Constants.ORDER_STATUS_SPIKE: //待收货 + queryWrapper.eq("paid", 1); + queryWrapper.eq("status", 1); + queryWrapper.eq("refund_status", 0); + queryWrapper.eq("is_del", 0); + break; + case Constants.ORDER_STATUS_BARGAIN: //待评价 + queryWrapper.eq("paid", 1); + queryWrapper.eq("status", 2); + queryWrapper.eq("refund_status", 0); + queryWrapper.eq("is_del", 0); + break; + case Constants.ORDER_STATUS_COMPLETE: //交易完成 + queryWrapper.eq("paid", 1); + queryWrapper.eq("status", 3); + queryWrapper.eq("refund_status", 0); + queryWrapper.eq("is_del", 0); + break; + case Constants.ORDER_STATUS_TOBE_WRITTEN_OFF: //待核销 + queryWrapper.eq("paid", 1); + queryWrapper.eq("status", 0); + queryWrapper.eq("refund_status", 0); + queryWrapper.eq("shipping_type", 2);//配送方式 + queryWrapper.eq("is_del", 0); + break; + case Constants.ORDER_STATUS_REFUNDING: //退款中 + queryWrapper.eq("paid", 1); + queryWrapper.in("refund_status", 1,3); + queryWrapper.eq("is_del", 0); + break; + case Constants.ORDER_STATUS_REFUNDED: //已退款 + queryWrapper.eq("paid", 1); + queryWrapper.eq("refund_status", 2); + queryWrapper.eq("is_del", 0); + break; + case Constants.ORDER_STATUS_DELETED: //已删除 + queryWrapper.eq("is_del", 1); + break; + default: + queryWrapper.eq("paid", 1); + queryWrapper.ne("refund_status", 2); + break; + } + queryWrapper.eq("is_system_del", 0); + } + + /** + * 根据订单状态获取where条件 + * @param queryWrapper QueryWrapper 表达式 + * @param status String 类型 + */ + private void getStatusWhere(QueryWrapper queryWrapper, String status) { + if (StrUtil.isBlank(status)) { + return; + } + switch (status) { + case Constants.ORDER_STATUS_UNPAID: //未支付 + queryWrapper.eq("paid", 0);//支付状态 + queryWrapper.eq("status", 0); //订单状态 + queryWrapper.eq("is_del", 0);//删除状态 + break; + case Constants.ORDER_STATUS_NOT_SHIPPED: //未发货 + queryWrapper.eq("paid", 1); + queryWrapper.eq("status", 0); + queryWrapper.eq("refund_status", 0); + queryWrapper.eq("shipping_type", 1);//配送方式 + queryWrapper.eq("is_del", 0); + break; + case Constants.ORDER_STATUS_SPIKE: //待收货 + queryWrapper.eq("paid", 1); + queryWrapper.eq("status", 1); + queryWrapper.eq("refund_status", 0); + queryWrapper.eq("is_del", 0); + break; + case Constants.ORDER_STATUS_BARGAIN: //待评价 + queryWrapper.eq("paid", 1); + queryWrapper.eq("status", 2); + queryWrapper.eq("refund_status", 0); + queryWrapper.eq("is_del", 0); + break; + case Constants.ORDER_STATUS_COMPLETE: //交易完成 + queryWrapper.eq("paid", 1); + queryWrapper.eq("status", 3); + queryWrapper.eq("refund_status", 0); + queryWrapper.eq("is_del", 0); + break; + case Constants.ORDER_STATUS_TOBE_WRITTEN_OFF: //待核销 + queryWrapper.eq("paid", 1); + queryWrapper.eq("status", 0); + queryWrapper.eq("refund_status", 0); + queryWrapper.eq("shipping_type", 2);//配送方式 + queryWrapper.eq("is_del", 0); + break; + case Constants.ORDER_STATUS_REFUNDING: //退款中 + queryWrapper.eq("paid", 1); + queryWrapper.in("refund_status", 1,3); + queryWrapper.eq("is_del", 0); + break; + case Constants.ORDER_STATUS_REFUNDED: //已退款 + queryWrapper.eq("paid", 1); + queryWrapper.eq("refund_status", 2); + queryWrapper.eq("is_del", 0); + break; + case Constants.ORDER_STATUS_DELETED: //已删除 + queryWrapper.eq("is_del", 1); + break; + default: + queryWrapper.eq("paid", 1); + queryWrapper.ne("refund_status", 2); + break; + } + queryWrapper.eq("is_system_del", 0); + } + + /** + * 获取订单状态 + * @param storeOrder StoreOrder 订单信息 + * @author Mr.Zhang + * @since 2020-06-12 + */ + private Map getStatus(StoreOrder storeOrder) { + Map map = new HashMap<>(); + map.put("key", ""); + map.put("value", ""); + if (null == storeOrder) { + return map; + } + // 未支付 + if (!storeOrder.getPaid() + && storeOrder.getStatus() == 0 + && storeOrder.getRefundStatus() == 0 + && !storeOrder.getIsDel() + && !storeOrder.getIsSystemDel()) { + map.put("key", Constants.ORDER_STATUS_UNPAID); + map.put("value", Constants.ORDER_STATUS_STR_UNPAID); + return map; + } + // 未发货 + if (storeOrder.getPaid() + && storeOrder.getStatus() == 0 + && storeOrder.getRefundStatus() == 0 + && storeOrder.getShippingType() == 1 + && !storeOrder.getIsDel() + && !storeOrder.getIsSystemDel()) { + map.put("key", Constants.ORDER_STATUS_NOT_SHIPPED); + map.put("value", Constants.ORDER_STATUS_STR_NOT_SHIPPED); + return map; + } + // 待收货 + if (storeOrder.getPaid() + && storeOrder.getStatus() == 1 + && storeOrder.getRefundStatus() == 0 + && storeOrder.getShippingType() == 1 + && !storeOrder.getIsDel() + && !storeOrder.getIsSystemDel()) { + map.put("key", Constants.ORDER_STATUS_SPIKE); + map.put("value", Constants.ORDER_STATUS_STR_SPIKE); + return map; + } + // 待评价 + if (storeOrder.getPaid() + && storeOrder.getStatus() == 2 + && storeOrder.getRefundStatus() == 0 + && !storeOrder.getIsDel() + && !storeOrder.getIsSystemDel()) { + map.put("key", Constants.ORDER_STATUS_BARGAIN); + map.put("value", Constants.ORDER_STATUS_STR_BARGAIN); + return map; + } + // 交易完成 + if (storeOrder.getPaid() + && storeOrder.getStatus() == 3 + && storeOrder.getRefundStatus() == 0 + && !storeOrder.getIsDel() + && !storeOrder.getIsSystemDel()) { + map.put("key", Constants.ORDER_STATUS_COMPLETE); + map.put("value", Constants.ORDER_STATUS_STR_COMPLETE); + return map; + } + // 待核销 + if (storeOrder.getPaid() + && storeOrder.getStatus() == 0 + && storeOrder.getRefundStatus() == 0 + && storeOrder.getShippingType() == 2 + && !storeOrder.getIsDel() + && !storeOrder.getIsSystemDel()) { + map.put("key", Constants.ORDER_STATUS_TOBE_WRITTEN_OFF); + map.put("value", Constants.ORDER_STATUS_STR_TOBE_WRITTEN_OFF); + return map; + } + + //申请退款 + if (storeOrder.getPaid() + && storeOrder.getRefundStatus() == 1 + && !storeOrder.getIsDel() + && !storeOrder.getIsSystemDel()) { + map.put("key", Constants.ORDER_STATUS_APPLY_REFUNDING); + map.put("value", Constants.ORDER_STATUS_STR_APPLY_REFUNDING); + return map; + } + + //退款中 + if (storeOrder.getPaid() + && storeOrder.getRefundStatus() == 3 + && !storeOrder.getIsDel() + && !storeOrder.getIsSystemDel()) { + map.put("key", Constants.ORDER_STATUS_REFUNDING); + map.put("value", Constants.ORDER_STATUS_STR_REFUNDING); + return map; + } + + //已退款 + if (storeOrder.getPaid() + && storeOrder.getRefundStatus() == 2 + && !storeOrder.getIsDel() + && !storeOrder.getIsSystemDel()) { + map.put("key", Constants.ORDER_STATUS_REFUNDED); + map.put("value", Constants.ORDER_STATUS_STR_REFUNDED); + } + + //已删除 + if (storeOrder.getIsDel() || storeOrder.getIsSystemDel()) { + map.put("key", Constants.ORDER_STATUS_DELETED); + map.put("value", Constants.ORDER_STATUS_STR_DELETED); + } + + return map; + } + /** + * 获取支付文字 + * @param payType String 支付方式 + */ + private String getPayType(String payType) { + switch (payType) { + case Constants.PAY_TYPE_WE_CHAT: + return Constants.PAY_TYPE_STR_WE_CHAT; + case Constants.PAY_TYPE_YUE: + return Constants.PAY_TYPE_STR_YUE; + case Constants.PAY_TYPE_ALI_PAY: + return Constants.PAY_TYPE_STR_ALI_PAY; + default: + return Constants.PAY_TYPE_STR_OTHER; + } + } + +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreOrderStatusServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreOrderStatusServiceImpl.java new file mode 100644 index 0000000..c95fb72 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreOrderStatusServiceImpl.java @@ -0,0 +1,155 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.request.StoreOrderStatusSearchRequest; +import com.github.pagehelper.PageHelper; +import com.zbkj.common.utils.DateUtil; +import com.zbkj.common.model.order.StoreOrder; +import com.zbkj.common.model.order.StoreOrderStatus; +import com.zbkj.service.dao.StoreOrderStatusDao; +import com.zbkj.service.service.StoreOrderService; +import com.zbkj.service.service.StoreOrderStatusService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.List; + +/** + * StoreOrderStatusServiceImpl 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class StoreOrderStatusServiceImpl extends ServiceImpl implements StoreOrderStatusService { + + @Resource + private StoreOrderStatusDao dao; + + @Autowired + private StoreOrderService storeOrderService; + + /** + * 列表 + * @param request 请求参数 + * @param pageParamRequest 分页类参数 + * @return List + */ + @Override + public List getList(StoreOrderStatusSearchRequest request, PageParamRequest pageParamRequest) { + StoreOrder storeOrder = storeOrderService.getByOderId(request.getOrderNo()); + if (ObjectUtil.isNull(storeOrder)) { + return CollUtil.newArrayList(); + } + PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(StoreOrderStatus::getOid, storeOrder.getId()); + lqw.orderByDesc(StoreOrderStatus::getCreateTime); + return dao.selectList(lqw); + } + + /** + * 保存订单退款记录 + * @param orderId 订单号 + * @param amount 金额 + * @param message 备注 + * @return {@link Boolean} + */ + @Override + public Boolean saveRefund(Integer orderId, BigDecimal amount, String message) { + //此处更新订单状态 + String changeMessage = Constants.ORDER_LOG_MESSAGE_REFUND_PRICE.replace("{amount}", amount.toString()); + if(StringUtils.isNotBlank(message)){ + changeMessage += message; + } + StoreOrderStatus storeOrderStatus = new StoreOrderStatus(); + storeOrderStatus.setOid(orderId); + storeOrderStatus.setChangeType(Constants.ORDER_LOG_REFUND_PRICE); + storeOrderStatus.setChangeMessage(changeMessage); + return save(storeOrderStatus); + } + + /** + * 创建记录日志 + * @param orderId Integer 订单号 + * @param type String 类型 + * @param message String 消息 + * @return Boolean + */ + @Override + public Boolean createLog(Integer orderId, String type, String message) { + StoreOrderStatus storeOrderStatus = new StoreOrderStatus(); + storeOrderStatus.setOid(orderId); + storeOrderStatus.setChangeType(type); + storeOrderStatus.setChangeMessage(message); + storeOrderStatus.setCreateTime(DateUtil.nowDateTime()); + return save(storeOrderStatus); + } + + /** + * 根据实体获取 + * @param storeOrderStatus 订单状态参数 + * @return 查询结果 + */ + @Override + public List getByEntity(StoreOrderStatus storeOrderStatus) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.setEntity(storeOrderStatus); + return dao.selectList(lambdaQueryWrapper); + } + + /** + * 根据订单id获取最后一条记录 + * @param orderId 订单id + * @return StoreOrderStatus + */ + @Override + public StoreOrderStatus getLastByOrderId(Integer orderId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("oid", orderId); + queryWrapper.orderByDesc("create_time"); + queryWrapper.last(" limit 1"); + return dao.selectOne(queryWrapper); + } + + /** + * 通过日期获取订单退款数量 + * @param date 日期,yyyy-MM-dd格式 + * @return Integer + */ + @Override + public Integer getRefundOrderNumByDate(String date) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.select("oid"); + wrapper.eq("change_type", "refund_price"); + wrapper.apply("date_format(create_time, '%Y-%m-%d') = {0}", date); + return dao.selectCount(wrapper); + } + + /** + * 通过日期获取订单退款金额 + * @param date 日期,yyyy-MM-dd格式 + * @return BigDecimal + */ + @Override + public BigDecimal getRefundOrderAmountByDate(String date) { + return dao.getRefundOrderAmountByDate(date); + } + +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreOrderTaskServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreOrderTaskServiceImpl.java new file mode 100644 index 0000000..ca3520a --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreOrderTaskServiceImpl.java @@ -0,0 +1,562 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateField; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUnit; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.zbkj.common.constants.*; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.model.bargain.StoreBargain; +import com.zbkj.common.model.combination.StoreCombination; +import com.zbkj.common.model.combination.StorePink; +import com.zbkj.common.model.coupon.StoreCouponUser; +import com.zbkj.common.model.order.StoreOrder; +import com.zbkj.common.model.order.StoreOrderInfo; +import com.zbkj.common.model.product.StoreProductAttrValue; +import com.zbkj.common.model.seckill.StoreSeckill; +import com.zbkj.common.model.sms.SmsTemplate; +import com.zbkj.common.model.system.SystemAdmin; +import com.zbkj.common.model.system.SystemNotification; +import com.zbkj.common.model.user.*; +import com.zbkj.common.utils.DateUtil; +import com.zbkj.service.delete.OrderUtils; +import com.zbkj.service.service.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.support.TransactionTemplate; + +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.stream.Collectors; + +/** + * StoreOrderTaskService实现类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class StoreOrderTaskServiceImpl implements StoreOrderTaskService { + //日志 + private static final Logger logger = LoggerFactory.getLogger(StoreOrderTaskServiceImpl.class); + + @Autowired + private StoreOrderService storeOrderService; + + @Autowired + private StoreOrderInfoService storeOrderInfoService; + + @Autowired + private StoreProductService storeProductService; + + @Autowired + private StoreOrderStatusService storeOrderStatusService; + + @Autowired + private UserService userService; + + @Autowired + private SystemConfigService systemConfigService; + + @Autowired + private StoreSeckillService storeSeckillService; + + @Autowired + private StoreBargainService storeBargainService; + + @Autowired + private StoreCombinationService storeCombinationService; + + @Autowired + private TransactionTemplate transactionTemplate; + + @Autowired + private UserBrokerageRecordService userBrokerageRecordService; + + @Autowired + private SmsService smsService; + + @Autowired + private SystemAdminService systemAdminService; + + @Autowired + private UserTokenService userTokenService; + + @Autowired + private TemplateMessageService templateMessageService; + + @Autowired + private OrderUtils orderUtils; + + @Autowired + private StorePinkService storePinkService; + + @Autowired + private UserIntegralRecordService userIntegralRecordService; + + @Autowired + private UserLevelService userLevelService; + + @Autowired + private StoreProductAttrValueService attrValueService; + + @Autowired + private StoreCouponUserService couponUserService; + + @Autowired + private UserExperienceRecordService userExperienceRecordService; + + @Autowired + private SystemNotificationService systemNotificationService; + + @Autowired + private SmsTemplateService smsTemplateService; + + /** + * 用户取消订单 + * @author Mr.Zhang + * @since 2020-07-09 + */ + @Override + @Transactional(rollbackFor = {RuntimeException.class, Error.class, CrmebException.class}) + public Boolean cancelByUser(StoreOrder storeOrder) { + try{ + /* + * 1、修改订单状态 (用户操作的时候已处理) + * 2、写订单日志 + * 3、回滚库存 + * 4、回滚优惠券 + * 5、回滚积分 + * */ + + //写订单日志 + storeOrderStatusService.createLog(storeOrder.getId(), "cancel_order", "取消订单"); + // 退优惠券 + if (storeOrder.getCouponId() > 0 ) { + StoreCouponUser couponUser = couponUserService.getById(storeOrder.getCouponId()); + couponUser.setStatus(CouponConstants.STORE_COUPON_USER_STATUS_USABLE); + couponUserService.updateById(couponUser); + } + return rollbackStock(storeOrder); + }catch (Exception e){ + return false; + } + } + + /** + * 完成订单 + * @author Mr.Zhang + * @since 2020-07-09 + */ + @Override + @Transactional(rollbackFor = {RuntimeException.class, Error.class, CrmebException.class}) + public Boolean complete(StoreOrder storeOrder) { + /* + * 1、修改订单状态 (用户操作的时候已处理) + * 2、写订单日志 + * */ + try{ + storeOrderStatusService.createLog(storeOrder.getId(), "check_order_over", "用户评价"); + return true; + }catch (Exception e){ + return false; + } + } + + /** + * 回滚库存 + * @param storeOrder 订单信息 + */ + private Boolean rollbackStock(StoreOrder storeOrder) { + try{ + // 查找出商品详情 + List orderInfoList = storeOrderInfoService.getListByOrderNo(storeOrder.getOrderId()); + if(null == orderInfoList || orderInfoList.size() < 1){ + return true; + } + + // 兼容处理秒杀数据退款 + // 秒杀商品回滚库存和销量 + if(null != storeOrder.getSeckillId() && storeOrder.getSeckillId() > 0){ + // 秒杀只会有一个商品 + StoreOrderInfo orderInfo = orderInfoList.get(0); + StoreSeckill storeSeckill = storeSeckillService.getByIdException(storeOrder.getSeckillId()); + storeSeckillService.operationStock(storeOrder.getSeckillId(), orderInfo.getPayNum(), "add"); + attrValueService.operationStock(orderInfo.getAttrValueId(), orderInfo.getPayNum(), "add", Constants.PRODUCT_TYPE_SECKILL); + storeProductService.operationStock(storeSeckill.getProductId(), orderInfo.getPayNum(), "add"); + List attrValueList = attrValueService.getListByProductIdAndType(storeSeckill.getProductId(), Constants.PRODUCT_TYPE_NORMAL); + attrValueList.forEach(e -> { + if (e.getSuk().equals(orderInfo.getSku())) { + attrValueService.operationStock(e.getId(), orderInfo.getPayNum(), "add", Constants.PRODUCT_TYPE_NORMAL); + } + }); + } else if (ObjectUtil.isNotNull(storeOrder.getBargainId()) && storeOrder.getBargainId() > 0) { // 砍价商品回滚销量库存 + StoreOrderInfo orderInfo = orderInfoList.get(0); + StoreBargain storeBargain = storeBargainService.getByIdException(storeOrder.getBargainId()); + storeBargainService.operationStock(storeBargain.getId(), orderInfo.getPayNum(), "add"); + attrValueService.operationStock(orderInfo.getAttrValueId(), orderInfo.getPayNum(), "add", Constants.PRODUCT_TYPE_BARGAIN); + storeProductService.operationStock(storeBargain.getProductId(), orderInfo.getPayNum(), "add"); + List attrValueList = attrValueService.getListByProductIdAndType(storeBargain.getProductId(), Constants.PRODUCT_TYPE_NORMAL); + attrValueList.forEach(e -> { + if (e.getSuk().equals(orderInfo.getSku())) { + attrValueService.operationStock(e.getId(), orderInfo.getPayNum(), "add", Constants.PRODUCT_TYPE_NORMAL); + } + }); + } else if (ObjectUtil.isNotNull(storeOrder.getCombinationId()) && storeOrder.getCombinationId() > 0) { // 拼团商品回滚销量库存 + StoreOrderInfo orderInfo = orderInfoList.get(0); + StoreCombination storeCombination = storeCombinationService.getByIdException(storeOrder.getCombinationId()); + storeCombinationService.operationStock(storeCombination.getId(), orderInfo.getPayNum(), "add"); + attrValueService.operationStock(orderInfo.getAttrValueId(), orderInfo.getPayNum(), "add", Constants.PRODUCT_TYPE_PINGTUAN); + storeProductService.operationStock(storeCombination.getProductId(), orderInfo.getPayNum(), "add"); + List attrValueList = attrValueService.getListByProductIdAndType(storeCombination.getProductId(), Constants.PRODUCT_TYPE_NORMAL); + attrValueList.forEach(e -> { + if (e.getSuk().equals(orderInfo.getSku())) { + attrValueService.operationStock(e.getId(), orderInfo.getPayNum(), "add", Constants.PRODUCT_TYPE_NORMAL); + } + }); + } else { // 正常商品回滚销量库存 + for (StoreOrderInfo orderInfoVo : orderInfoList) { + storeProductService.operationStock(orderInfoVo.getProductId(), orderInfoVo.getPayNum(), "add"); + attrValueService.operationStock(orderInfoVo.getAttrValueId(), orderInfoVo.getPayNum(), "add", Constants.PRODUCT_TYPE_NORMAL); + } + } + }catch (Exception e){ +// throw new CrmebException(e.getMessage()); + logger.error("回滚库存失败,error = " + e.getMessage()); + return true; + } + return true; + } + + /** + * 订单退款处理 + * 退款得时候根据userBill 来进行回滚 + */ + @Override + public Boolean refundOrder(StoreOrder storeOrder) { + /** + * 1、写订单日志 + * 2、回滚消耗积分 + * 3、回滚获得积分 + * 4、回滚冻结期佣金 + * 5、回滚经验 + * 6、回滚库存 + * 7、发送通知 + * 实际上2-5就是user数据的处理+userBill的记录 + */ + // 获取用户对象 + User user = userService.getById(storeOrder.getUid()); + if (ObjectUtil.isNull(user)) { + logger.error("订单退款处理,对应的用户不存在,storeOrder===>" + storeOrder); + return Boolean.FALSE; + } + + // 回滚经验 + UserExperienceRecord userExperienceRecord = userExperienceRecordService.getByOrderNoAndUid(storeOrder.getOrderId(), storeOrder.getUid()); + user.setExperience(user.getExperience() - userExperienceRecord.getExperience()); + + UserExperienceRecord experienceRecord = new UserExperienceRecord(); + BeanUtils.copyProperties(userExperienceRecord, experienceRecord); + experienceRecord.setId(null); + experienceRecord.setTitle(ExperienceRecordConstants.EXPERIENCE_RECORD_TITLE_REFUND); + experienceRecord.setType(ExperienceRecordConstants.EXPERIENCE_RECORD_TYPE_SUB); + experienceRecord.setBalance(user.getExperience()); + experienceRecord.setMark(StrUtil.format("订单退款,扣除{}赠送经验", userExperienceRecord.getExperience())); + experienceRecord.setCreateTime(cn.hutool.core.date.DateUtil.date()); + + // 回滚积分 + List integralRecordList = userIntegralRecordService.findListByOrderIdAndUid(storeOrder.getOrderId(), storeOrder.getUid()); + integralRecordList.forEach(record -> { + if (record.getType().equals(IntegralRecordConstants.INTEGRAL_RECORD_TYPE_SUB)) {// 订单抵扣部分 + user.setIntegral(user.getIntegral() + record.getIntegral()); + record.setId(null); + record.setTitle(IntegralRecordConstants.BROKERAGE_RECORD_TITLE_REFUND); + record.setType(IntegralRecordConstants.INTEGRAL_RECORD_TYPE_ADD); + record.setBalance(user.getIntegral()); + record.setMark(StrUtil.format("订单退款,返还支付扣除得{}积分", record.getIntegral())); + record.setStatus(IntegralRecordConstants.INTEGRAL_RECORD_STATUS_COMPLETE); + record.setUpdateTime(cn.hutool.core.date.DateUtil.date()); + } else if (record.getType().equals(IntegralRecordConstants.INTEGRAL_RECORD_TYPE_ADD)) {// 冻结积分部分 + record.setStatus(IntegralRecordConstants.INTEGRAL_RECORD_STATUS_INVALIDATION); + record.setUpdateTime(cn.hutool.core.date.DateUtil.date()); + } + }); + List addIntegralList = integralRecordList.stream().filter(e -> ObjectUtil.isNull(e.getId())).collect(Collectors.toList()); + List updateIntegralList = integralRecordList.stream().filter(e -> ObjectUtil.isNotNull(e.getId())).collect(Collectors.toList()); + + StoreOrder tempOrder = new StoreOrder(); + tempOrder.setId(storeOrder.getId()); + tempOrder.setRefundStatus(2); + // 佣金处理:只处理冻结期佣金 + // 查询佣金记录 + List brokerageRecordList = CollUtil.newArrayList(); + List recordList = userBrokerageRecordService.findListByLinkIdAndLinkType(storeOrder.getOrderId(), BrokerageRecordConstants.BROKERAGE_RECORD_LINK_TYPE_ORDER); + if (CollUtil.isNotEmpty(recordList)) { + recordList.forEach(r -> { + //创建、冻结期佣金置为失效状态 + if (r.getStatus() < BrokerageRecordConstants.BROKERAGE_RECORD_STATUS_COMPLETE) { + r.setStatus(BrokerageRecordConstants.BROKERAGE_RECORD_STATUS_INVALIDATION); + brokerageRecordList.add(r); + } + }); + } + + Boolean execute = transactionTemplate.execute(e -> { + //写订单日志 + storeOrderStatusService.saveRefund(storeOrder.getId(), storeOrder.getRefundPrice(), "成功"); + + // 更新用户数据 + userService.updateById(user); + + // 积分部分 + if (CollUtil.isNotEmpty(addIntegralList)) { + userIntegralRecordService.saveBatch(addIntegralList); + } + if (CollUtil.isNotEmpty(updateIntegralList)) { + userIntegralRecordService.updateBatchById(updateIntegralList); + } + + // 佣金处理 + if (CollUtil.isNotEmpty(brokerageRecordList)) { + userBrokerageRecordService.updateBatchById(brokerageRecordList); + } + + // 经验处理 + userExperienceRecordService.save(experienceRecord); + userLevelService.downLevel(user); + + // 回滚库存 + rollbackStock(storeOrder); + + storeOrderService.updateById(tempOrder); + + // 拼团状态处理 + if (storeOrder.getCombinationId() > 0) { + StorePink storePink = storePinkService.getByOrderId(storeOrder.getOrderId()); + storePink.setStatus(3); + storePink.setIsRefund(true); + storePinkService.updateById(storePink); + } + + // 退优惠券 + if (storeOrder.getCouponId() > 0 ) { + StoreCouponUser couponUser = couponUserService.getById(storeOrder.getCouponId()); + couponUser.setStatus(CouponConstants.STORE_COUPON_USER_STATUS_USABLE); + couponUserService.updateById(couponUser); + } + return Boolean.TRUE; + }); + return execute; + } + + /** + * 超时未支付系统自动取消 + */ + @Override + public Boolean autoCancel(StoreOrder storeOrder) { + // 判断订单是否支付 + if (storeOrder.getPaid()) { + return Boolean.TRUE; + } + if (storeOrder.getIsDel() || storeOrder.getIsSystemDel()) { + return Boolean.TRUE; + } + // 获取过期时间 + String cancelStr; + DateTime cancelTime; + if (storeOrder.getType().equals(1)) { + cancelStr = "3"; + cancelTime = cn.hutool.core.date.DateUtil.offset(storeOrder.getCreateTime(), DateField.MINUTE, Integer.parseInt(cancelStr)); + } else { + if (storeOrder.getBargainId() > 0 || storeOrder.getSeckillId() > 0 || storeOrder.getCombinationId() > 0) { + cancelStr = systemConfigService.getValueByKey("order_activity_time"); + } else { + cancelStr = systemConfigService.getValueByKey("order_cancel_time"); + } + if (StrUtil.isBlank(cancelStr)) { + cancelStr = "1"; + } + cancelTime = cn.hutool.core.date.DateUtil.offset(storeOrder.getCreateTime(), DateField.HOUR_OF_DAY, Integer.parseInt(cancelStr)); + } + long between = cn.hutool.core.date.DateUtil.between(cancelTime, cn.hutool.core.date.DateUtil.date(), DateUnit.SECOND, false); + if (between < 0) {// 未到过期时间继续循环 + return Boolean.FALSE; + } + storeOrder.setIsDel(true).setIsSystemDel(true); + Boolean execute = transactionTemplate.execute(e -> { + storeOrderService.updateById(storeOrder); + //写订单日志 + storeOrderStatusService.createLog(storeOrder.getId(), "cancel", "到期未支付系统自动取消"); + // 退优惠券 + if (storeOrder.getCouponId() > 0 ) { + StoreCouponUser couponUser = couponUserService.getById(storeOrder.getCouponId()); + couponUser.setStatus(CouponConstants.STORE_COUPON_USER_STATUS_USABLE); + couponUserService.updateById(couponUser); + } + return Boolean.TRUE; + }); + if (execute) { + // 回滚库存 + rollbackStock(storeOrder); + } + return execute; + } + + /** + * 订单收货task处理 + * @param orderId 订单id + * @return Boolean + * 1.写订单日志 + * 2.分佣-佣金进入冻结期 + */ + @Override + public Boolean orderReceiving(Integer orderId) { + StoreOrder storeOrder = storeOrderService.getById(orderId); + if (ObjectUtil.isNull(storeOrder)) { + throw new CrmebException(StrUtil.format("订单收货task处理,未找到订单,id={}", orderId)); + } + User user = userService.getById(storeOrder.getUid()); + + // 获取佣金记录 + List recordList = userBrokerageRecordService.findListByLinkIdAndLinkType(storeOrder.getOrderId(), BrokerageRecordConstants.BROKERAGE_RECORD_LINK_TYPE_ORDER); + logger.info("收货处理佣金条数:" + recordList.size()); + for (UserBrokerageRecord record : recordList) { + if (!record.getStatus().equals(BrokerageRecordConstants.BROKERAGE_RECORD_STATUS_CREATE)) { + throw new CrmebException(StrUtil.format("订单收货task处理,订单佣金记录不是创建状态,id={}", orderId)); + } + // 佣金进入冻结期 + record.setStatus(BrokerageRecordConstants.BROKERAGE_RECORD_STATUS_FROZEN); + // 计算解冻时间 + Long thawTime = cn.hutool.core.date.DateUtil.current(false); + if (record.getFrozenTime() > 0) { + DateTime dateTime = cn.hutool.core.date.DateUtil.offsetDay(new Date(), record.getFrozenTime()); + thawTime = dateTime.getTime(); + } + record.setThawTime(thawTime); + } + + // 获取积分记录 + List integralRecordList = userIntegralRecordService.findListByOrderIdAndUid(storeOrder.getOrderId(), storeOrder.getUid()); + logger.info("收货处理积分条数:" + integralRecordList.size()); + List userIntegralRecordList = integralRecordList.stream().filter(e -> e.getType().equals(IntegralRecordConstants.INTEGRAL_RECORD_TYPE_ADD)).collect(Collectors.toList()); + for (UserIntegralRecord record : userIntegralRecordList) { + if (!record.getStatus().equals(IntegralRecordConstants.INTEGRAL_RECORD_STATUS_CREATE)) { + throw new CrmebException(StrUtil.format("订单收货task处理,订单积分记录不是创建状态,id={}", orderId)); + } + // 佣金进入冻结期 + record.setStatus(IntegralRecordConstants.INTEGRAL_RECORD_STATUS_FROZEN); + // 计算解冻时间 + Long thawTime = cn.hutool.core.date.DateUtil.current(false); + if (record.getFrozenTime() > 0) { + DateTime dateTime = cn.hutool.core.date.DateUtil.offsetDay(new Date(), record.getFrozenTime()); + thawTime = dateTime.getTime(); + } + record.setThawTime(thawTime); + } + + Boolean execute = transactionTemplate.execute(e -> { + // 日志 + storeOrderStatusService.createLog(storeOrder.getId(), "user_take_delivery", Constants.ORDER_STATUS_STR_TAKE); + // 分佣-佣金进入冻结期 + if (CollUtil.isNotEmpty(recordList)) { + userBrokerageRecordService.updateBatchById(recordList); + } + // 积分进入冻结期 + if (CollUtil.isNotEmpty(userIntegralRecordList)) { + userIntegralRecordService.updateBatchById(userIntegralRecordList); + } + return Boolean.TRUE; + }); + if (execute) { + // 发送用户确认收货管理员提醒短信 + SystemNotification notification = systemNotificationService.getByMark(NotifyConstants.RECEIPT_GOODS_ADMIN_MARK); + if (notification.getIsSms().equals(1)) { + // 查询可已发送短信的管理员 + List systemAdminList = systemAdminService.findIsSmsList(); + if (CollUtil.isNotEmpty(systemAdminList)) { + SmsTemplate smsTemplate = smsTemplateService.getDetail(notification.getSmsId()); + Integer tempId = Integer.valueOf(smsTemplate.getTempId()); + // 发送短信 + systemAdminList.forEach(admin -> { + smsService.sendOrderReceiptNotice(admin.getPhone(), storeOrder.getOrderId(), admin.getRealName(), tempId); + }); + } + } + + // 发送消息通知 + pushMessageOrder(storeOrder, user); + } + + return execute; + } + + /** + * 发送消息通知 + * 根据用户类型发送 + * 公众号模板消息 + * 小程序订阅消息 + */ + private void pushMessageOrder(StoreOrder storeOrder, User user) { + SystemNotification notification = systemNotificationService.getByMark(NotifyConstants.RECEIPT_GOODS_MARK); + if (storeOrder.getIsChannel().equals(2)) { + return; + } + if (!storeOrder.getPayType().equals(Constants.PAY_TYPE_WE_CHAT)) { + return; + } + UserToken userToken; + HashMap temMap = new HashMap<>(); + // 公众号 + if (storeOrder.getIsChannel().equals(Constants.ORDER_PAY_CHANNEL_PUBLIC) && notification.getIsWechat().equals(1)) { + userToken = userTokenService.getTokenByUserId(user.getUid(), UserConstants.USER_TOKEN_TYPE_WECHAT); + if (ObjectUtil.isNull(userToken)) { + return ; + } + // 发送微信模板消息 + temMap.put(Constants.WE_CHAT_TEMP_KEY_FIRST, "您购买的商品已确认收货!"); + temMap.put("keyword1", storeOrder.getOrderId()); + temMap.put("keyword2", "已收货"); + temMap.put("keyword3", DateUtil.nowDateTimeStr()); + temMap.put("keyword4", "详情请进入订单查看"); + temMap.put(Constants.WE_CHAT_TEMP_KEY_END, "感谢你的使用。"); + templateMessageService.pushTemplateMessage(notification.getWechatId(), temMap, userToken.getToken()); + } else if (notification.getIsRoutine().equals(1)) { + // 小程序发送订阅消息 + userToken = userTokenService.getTokenByUserId(user.getUid(), UserConstants.USER_TOKEN_TYPE_ROUTINE); + if (ObjectUtil.isNull(userToken)) { + return ; + } + // 组装数据 + // 获取商品名称 + String storeNameAndCarNumString = orderUtils.getStoreNameAndCarNumString(storeOrder.getId()); + if (StrUtil.isBlank(storeNameAndCarNumString)) { + return ; + } + if (storeNameAndCarNumString.length() > 20) { + storeNameAndCarNumString = storeNameAndCarNumString.substring(0, 15) + "***"; + } +// temMap.put("character_string6", storeOrder.getOrderId()); +// temMap.put("phrase4", "已收货"); +// temMap.put("time7", DateUtil.nowDateTimeStr()); +// temMap.put("thing1", storeNameAndCarNumString); +// temMap.put("thing5", "您购买的商品已确认收货!"); + temMap.put("character_string6", storeOrder.getOrderId()); + temMap.put("date5", DateUtil.nowDateTimeStr()); + temMap.put("thing2", storeNameAndCarNumString); + templateMessageService.pushMiniTemplateMessage(notification.getRoutineId(), temMap, userToken.getToken()); + } + } +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreOrderVerificationImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreOrderVerificationImpl.java new file mode 100644 index 0000000..1f6018b --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreOrderVerificationImpl.java @@ -0,0 +1,209 @@ +package com.zbkj.service.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.constants.TaskConstants; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.model.order.StoreOrder; +import com.zbkj.common.model.system.SystemAdmin; +import com.zbkj.common.request.StoreOrderStaticsticsRequest; +import com.zbkj.common.response.StoreOrderVerificationConfirmResponse; +import com.zbkj.common.response.StoreStaffDetail; +import com.zbkj.common.response.StoreStaffTopDetail; +import com.zbkj.common.utils.DateUtil; +import com.zbkj.common.utils.RedisUtil; +import com.zbkj.common.utils.SecurityUtil; +import com.zbkj.common.vo.LoginUserVo; +import com.zbkj.common.vo.dateLimitUtilVo; +import com.zbkj.service.dao.StoreOrderDao; +import com.zbkj.service.delete.OrderUtils; +import com.zbkj.service.service.StoreOrderInfoService; +import com.zbkj.service.service.StoreOrderService; +import com.zbkj.service.service.StoreOrderVerification; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + +/** + * StoreOrderVerificationImpl 接口实现 核销订单 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class StoreOrderVerificationImpl implements StoreOrderVerification { + + @Resource + private StoreOrderDao dao; + + @Autowired + private OrderUtils orderUtils; + + @Autowired + private StoreOrderService storeOrderService; + + @Autowired + private StoreOrderInfoService storeOrderInfoService; + + @Autowired + private RedisUtil redisUtil; + + /** + * 获取订单核销数据 + */ + @Override + public StoreStaffTopDetail getOrderVerificationData() { + StoreStaffTopDetail storeStaffTopDetail = new StoreStaffTopDetail(); + //订单支付没有退款 数量- + LambdaQueryWrapper lqwOrderCount = Wrappers.lambdaQuery(); + lqwOrderCount.eq(StoreOrder::getIsDel,false).eq(StoreOrder::getPaid,true).eq(StoreOrder::getRefundStatus,0); + storeStaffTopDetail.setOrderCount(dao.selectCount(lqwOrderCount)); + //订单支付没有退款 支付总金额 + LambdaQueryWrapper lqwSumPrice = Wrappers.lambdaQuery(); + lqwSumPrice.eq(StoreOrder::getIsDel,false).eq(StoreOrder::getPaid,true).eq(StoreOrder::getRefundStatus,0); + List storeOrdersSumPrice = dao.selectList(lqwSumPrice); + Double sumPrice = storeOrdersSumPrice.stream().mapToDouble(e->e.getPayPrice().doubleValue()).sum(); + storeStaffTopDetail.setSumPrice(BigDecimal.valueOf(sumPrice).setScale(2,BigDecimal.ROUND_HALF_UP)); + //订单待支付 数量 + LambdaQueryWrapper lqwUnPaidCount = Wrappers.lambdaQuery(); + orderUtils.statusApiByWhere(lqwUnPaidCount,0); + storeStaffTopDetail.setUnpaidCount(dao.selectCount(lqwUnPaidCount)); + //订单待发货 数量 + LambdaQueryWrapper lqwUnShippedCount = Wrappers.lambdaQuery(); + orderUtils.statusApiByWhere(lqwUnShippedCount,1); + storeStaffTopDetail.setUnshippedCount(dao.selectCount(lqwUnShippedCount)); + //订单待收货 数量 + LambdaQueryWrapper lqwReceivedCount = Wrappers.lambdaQuery(); + orderUtils.statusApiByWhere(lqwReceivedCount,2); + storeStaffTopDetail.setReceivedCount(dao.selectCount(lqwReceivedCount)); + // 订单待核销数量 + LambdaQueryWrapper verificationCount = Wrappers.lambdaQuery(); + orderUtils.statusApiByWhere(verificationCount,3); + storeStaffTopDetail.setVerificationCount(dao.selectCount(verificationCount)); + //订单已完成 数量 + LambdaQueryWrapper lqwCompleteCount = Wrappers.lambdaQuery(); + orderUtils.statusApiByWhere(lqwCompleteCount,4); + storeStaffTopDetail.setCompleteCount(dao.selectCount(lqwCompleteCount)); + //订单退款 数量 + LambdaQueryWrapper lqwRefundCount = Wrappers.lambdaQuery(); + orderUtils.statusApiByWhere(lqwRefundCount,-3); + storeStaffTopDetail.setRefundCount(dao.selectCount(lqwRefundCount)); + + // 获取今日,昨日,本月,订单金额 + String dayStart = DateUtil.nowDateTime(Constants.DATE_FORMAT_START); + String dayEnd = DateUtil.nowDateTime(Constants.DATE_FORMAT_END); + String yesterdayStart = DateUtil.addDay(dayStart,-1,Constants.DATE_FORMAT_START); + String yesterdayEnd = DateUtil.addDay(dayEnd,-1,Constants.DATE_FORMAT_END); + String monthStart = DateUtil.nowDateTime(Constants.DATE_FORMAT_MONTH_START); + String monthEnd = DateUtil.getMonthEndDay(); + + // 今日订单数量 + LambdaQueryWrapper lqwTodayCount = Wrappers.lambdaQuery(); + lqwTodayCount.eq(StoreOrder::getIsDel,false).between(StoreOrder::getPayTime,dayStart,dayEnd) + .eq(StoreOrder::getPaid,1).eq(StoreOrder::getRefundStatus,0); + List storeOrdersTodayCount = dao.selectList(lqwTodayCount); + if(null == storeOrdersTodayCount) storeOrdersTodayCount = new ArrayList<>(); + storeStaffTopDetail.setTodayCount(storeOrdersTodayCount.size()); + + // 今日成交额 + double todayPrice = storeOrdersTodayCount.stream().mapToDouble(e->e.getPayPrice().doubleValue()).sum(); + storeStaffTopDetail.setTodayPrice(BigDecimal.valueOf(todayPrice).setScale(2,BigDecimal.ROUND_HALF_UP)); + + // 昨日订单数 + LambdaQueryWrapper lqwPro = Wrappers.lambdaQuery(); + lqwPro.eq(StoreOrder::getIsDel,false).between(StoreOrder::getCreateTime,yesterdayStart,yesterdayEnd) + .eq(StoreOrder::getPaid, true).eq(StoreOrder::getRefundStatus,0); + List storeOrdersPro = dao.selectList(lqwPro); + if(null == storeOrdersPro) storeOrdersPro = new ArrayList<>(); + storeStaffTopDetail.setProCount(storeOrdersPro.size()); + + // 昨日成交额 + double proPrice = storeOrdersPro.stream().mapToDouble(e->e.getPayPrice().doubleValue()).sum(); + storeStaffTopDetail.setProPrice(BigDecimal.valueOf(proPrice).setScale(2,BigDecimal.ROUND_HALF_UP)); + + // 本月成交订单数量 + LambdaQueryWrapper lqwMonth = Wrappers.lambdaQuery(); + lqwMonth.eq(StoreOrder::getIsDel,false).between(StoreOrder::getPayTime,monthStart, monthEnd) + .eq(StoreOrder::getPaid,true).eq(StoreOrder::getRefundStatus,0); + List storeOrdersMonth = dao.selectList(lqwMonth); + if(null == storeOrdersMonth) storeOrdersMonth = new ArrayList<>(); + storeStaffTopDetail.setMonthCount(storeOrdersMonth.size()); + + // 本月成交额 + double monthTotalPrice = storeOrdersMonth.stream().mapToDouble(e -> e.getPayPrice().doubleValue()).sum(); + storeStaffTopDetail.setMonthPrice(BigDecimal.valueOf(monthTotalPrice).setScale(2,BigDecimal.ROUND_HALF_UP)); + + return storeStaffTopDetail; + } + + /** + * 核销月详情 + * @return 月详情 + */ + @Override + public List getOrderVerificationDetail(StoreOrderStaticsticsRequest request) { + request.setPage((request.getPage() - 1) * request.getLimit()); + dateLimitUtilVo dateLimit = DateUtil.getDateLimit(request.getDateLimit()); + request.setStartTime(dateLimit.getStartTime()); + request.setEndTime(dateLimit.getEndTime()); + return dao.getOrderVerificationDetail(request); + } + + + /** + * 根据核销码核销订单(相当于收货) + * + * @param vCode 核销码 + * @return 核销结果 + */ + @Override + public boolean verificationOrderByCode(String vCode) { + StoreOrderVerificationConfirmResponse existOrder = getVerificationOrderByCode(vCode); + // 判断当前用户是否有权限核销 + LoginUserVo loginUserVo = SecurityUtil.getLoginUserVo(); + SystemAdmin currentAdmin = loginUserVo.getUser(); + // 添加核销人员后执行核销操作 + StoreOrder storeOrder = new StoreOrder(); + BeanUtils.copyProperties(existOrder,storeOrder); + storeOrder.setStatus(Constants.ORDER_STATUS_INT_BARGAIN); + storeOrder.setClerkId(currentAdmin.getId()); + boolean saveStatus = dao.updateById(storeOrder) > 0; + + // 小程序订阅消息发送 + if(saveStatus){ + //后续操作放入redis + redisUtil.lPush(TaskConstants.ORDER_TASK_REDIS_KEY_AFTER_TAKE_BY_USER, storeOrder.getId()); + } + return saveStatus; + } + + /** + * 根据核销码查询待核销订单 + * + * @param vCode 核销码 + * @return 待核销订单详情 + */ + @Override + public StoreOrderVerificationConfirmResponse getVerificationOrderByCode(String vCode) { + StoreOrderVerificationConfirmResponse response = new StoreOrderVerificationConfirmResponse(); + StoreOrder storeOrderPram = new StoreOrder().setVerifyCode(vCode).setPaid(true).setRefundStatus(0); + StoreOrder existOrder = storeOrderService.getByEntityOne(storeOrderPram); + if(null == existOrder) throw new CrmebException(Constants.RESULT_VERIFICATION_ORDER_NOT_FUND.replace("${vCode}",vCode)); + if(existOrder.getStatus() > 0) throw new CrmebException(Constants.RESULT_VERIFICATION_ORDER_VED.replace("${vCode}",vCode)); + BeanUtils.copyProperties(existOrder, response); + response.setStoreOrderInfoVos(storeOrderInfoService.getOrderListByOrderId(existOrder.getId())); + return response; + } +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StorePinkServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StorePinkServiceImpl.java new file mode 100644 index 0000000..e0dc537 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StorePinkServiceImpl.java @@ -0,0 +1,398 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.constants.NotifyConstants; +import com.zbkj.common.model.system.SystemNotification; +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.request.OrderRefundApplyRequest; +import com.zbkj.common.vo.MyRecord; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.constants.UserConstants; +import com.zbkj.common.exception.CrmebException; +import com.github.pagehelper.Page; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.zbkj.common.utils.DateUtil; +import com.zbkj.common.vo.dateLimitUtilVo; +import com.zbkj.common.model.combination.StoreCombination; +import com.zbkj.common.model.combination.StorePink; +import com.zbkj.common.request.StorePinkSearchRequest; +import com.zbkj.common.response.StorePinkAdminListResponse; +import com.zbkj.common.response.StorePinkDetailResponse; +import com.zbkj.common.model.order.StoreOrder; +import com.zbkj.common.model.user.User; +import com.zbkj.common.model.user.UserToken; +import com.zbkj.service.dao.StorePinkDao; +import com.zbkj.service.service.*; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.List; +import java.util.stream.Collectors; + +/** + * StorePinkService 实现类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class StorePinkServiceImpl extends ServiceImpl implements StorePinkService { + + @Resource + private StorePinkDao dao; + + @Autowired + private UserService userService; + + @Autowired + private OrderService orderService; + + @Autowired + private StoreOrderService storeOrderService; + + @Autowired + private StoreCombinationService storeCombinationService; + + @Autowired + private TemplateMessageService templateMessageService; + + @Autowired + private UserTokenService userTokenService; + + @Autowired + private SystemNotificationService systemNotificationService; + + + /** + * 列表 + * @param request 请求参数 + * @param pageParamRequest 分页类参数 + * @author HZW + * @since 2020-11-13 + * @return List + */ + @Override + public PageInfo getList(StorePinkSearchRequest request, PageParamRequest pageParamRequest) { + Page pinkPage = PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + if (ObjectUtil.isNotNull(request.getStatus())) { + lqw.eq(StorePink::getStatus, request.getStatus()); + } + if (StrUtil.isNotBlank(request.getDateLimit())) { + dateLimitUtilVo dateLimit = DateUtil.getDateLimit(request.getDateLimit()); + lqw.between(StorePink::getAddTime, DateUtil.dateStr2Timestamp(dateLimit.getStartTime(), Constants.DATE_TIME_TYPE_BEGIN), DateUtil.dateStr2Timestamp(dateLimit.getEndTime(), Constants.DATE_TIME_TYPE_END)); + } + lqw.eq(StorePink::getKId, 0); + lqw.orderByDesc(StorePink::getId); + List storePinks = dao.selectList(lqw); + if (CollUtil.isEmpty(storePinks)) { + return CommonPage.copyPageInfo(pinkPage, CollUtil.newArrayList()); + } + List list = storePinks.stream().map(pink -> { + StorePinkAdminListResponse storePinkResponse = new StorePinkAdminListResponse(); + BeanUtils.copyProperties(pink, storePinkResponse); + Integer countPeople = getCountByKidAndCid(pink.getCid(), pink.getId()); + storePinkResponse.setCountPeople(countPeople); + storePinkResponse.setAddTime(DateUtil.timestamp2DateStr(pink.getAddTime(), Constants.DATE_FORMAT)); + storePinkResponse.setStopTime(DateUtil.timestamp2DateStr(pink.getStopTime(), Constants.DATE_FORMAT)); + StoreCombination combination = storeCombinationService.getById(pink.getCid()); + storePinkResponse.setTitle(combination.getTitle()); + return storePinkResponse; + }).collect(Collectors.toList()); + return CommonPage.copyPageInfo(pinkPage, list); + } + + /** + * 获取拼团列表cid + * @param cid 拼团商品id + * @return + */ + @Override + public List getListByCid(Integer cid) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(StorePink::getCid, cid); + lqw.orderByDesc(StorePink::getId); + return dao.selectList(lqw); + } + + /** + * 拼团实体查询 + * @param storePink + * @return + */ + @Override + public List getByEntity(StorePink storePink) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.setEntity(storePink); + return dao.selectList(lqw); + } + + /** + * PC拼团详情列表 + * @param pinkId 团长pinkId + * @return + */ + @Override + public List getAdminList(Integer pinkId) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StorePink::getId, pinkId).or().eq(StorePink::getKId, pinkId); + lqw.orderByDesc(StorePink::getId); + List pinkList = dao.selectList(lqw); + // 将拼团状态提换为订单状态 + List responseList = pinkList.stream().map(pink -> { + StorePinkDetailResponse response = new StorePinkDetailResponse(); + BeanUtils.copyProperties(pink, response); + StoreOrder storeOrder = storeOrderService.getByOderId(pink.getOrderId()); + if (ObjectUtil.isNotNull(storeOrder)) { + response.setOrderStatus(storeOrder.getStatus()); + response.setRefundStatus(storeOrder.getRefundStatus()); + } + return response; + }).collect(Collectors.toList()); + return responseList; + } + + @Override + public List getListByCidAndKid(Integer cid, Integer kid) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(StorePink::getCid, cid); + lqw.eq(StorePink::getKId, kid); + lqw.eq(StorePink::getIsRefund, false); + lqw.orderByDesc(StorePink::getId); + return dao.selectList(lqw); + } + + @Override + public Integer getCountByKid(Integer pinkId) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.select(StorePink::getId); + lqw.eq(StorePink::getIsRefund, false); + lqw.and(i -> i.eq(StorePink::getKId, pinkId).or().eq(StorePink::getId, pinkId)); + return dao.selectCount(lqw); + } + + /** + * 检查状态,更新数据 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void detectionStatus() { + // 查找所有结束时间小等于当前的进行中拼团团长 + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(StorePink::getStatus, 1); + lqw.eq(StorePink::getKId, 0); + lqw.le(StorePink::getStopTime, System.currentTimeMillis()); + List headList = dao.selectList(lqw); + if (CollUtil.isEmpty(headList)) { + return ; + } + /** + * 1.判断是否拼团成功 + * 2.成功的修改状态 + * 3.失败的拼团改为失败,订单申请退款 + */ + List pinkSuccessList = CollUtil.newArrayList(); + List pinkFailList = CollUtil.newArrayList(); + List applyList = CollUtil.newArrayList(); + for (StorePink headPink : headList) { + // 查询团员 + List memberList = getListByCidAndKid(headPink.getCid(), headPink.getId()); + memberList.add(headPink); + if (headPink.getPeople().equals(memberList.size())) { + memberList.forEach(i -> i.setStatus(2)); + pinkSuccessList.addAll(memberList); + continue; + } + // 计算虚拟比例,判断是否拼团成功 + StoreCombination storeCombination = storeCombinationService.getById(headPink.getCid()); + Integer virtual = storeCombination.getVirtualRation();// 虚拟成团比例 + if (headPink.getPeople() <= memberList.size() + virtual) { + // 可以虚拟成团 + memberList.forEach(i -> i.setStatus(2).setIs_virtual(true)); + pinkSuccessList.addAll(memberList); + continue; + } + // 失败 + headPink.setStatus(3); + // 订单申请退款 + OrderRefundApplyRequest refundRequest = new OrderRefundApplyRequest(); + refundRequest.setId(headPink.getOrderIdKey()); + refundRequest.setText("拼团订单取消,申请退款"); + refundRequest.setExplain("用户取消拼团订单,申请退款"); + pinkFailList.add(headPink); + applyList.add(refundRequest); + + // 团员处理 + if (CollUtil.isNotEmpty(memberList)) { + memberList.forEach(i -> i.setStatus(3)); + List tempApplyList = memberList.stream().map(i -> { + OrderRefundApplyRequest tempRefundRequest = new OrderRefundApplyRequest(); + tempRefundRequest.setId(headPink.getOrderIdKey()); + tempRefundRequest.setText("拼团订单取消,申请退款"); + tempRefundRequest.setExplain("用户取消拼团订单,申请退款"); + return tempRefundRequest; + }).collect(Collectors.toList()); + pinkFailList.addAll(memberList); + applyList.addAll(tempApplyList); + } + } + if (CollUtil.isNotEmpty(pinkFailList) && pinkFailList.size() > 0) { + boolean failUpdate = updateBatchById(pinkFailList, 100); + if (!failUpdate) throw new CrmebException("批量更新拼团状态,拼团未成功部分,失败"); + } + if (applyList.size() > 0) { + boolean task = orderService.refundApplyTask(applyList); + if (!task) throw new CrmebException("拼团未成功,订单申请退款失败"); + } + if (CollUtil.isNotEmpty(pinkSuccessList) && pinkSuccessList.size() > 0) { + boolean successUpdate = updateBatchById(pinkSuccessList, 100); + if (!successUpdate) throw new CrmebException("批量更新拼团状态,拼团成功部分,失败"); + SystemNotification notification = systemNotificationService.getByMark(NotifyConstants.GROUP_SUCCESS_MARK); + if (notification.getIsRoutine().equals(1) || notification.getIsWechat().equals(1)) { + pinkSuccessList.forEach(i -> { + StoreOrder storeOrder = storeOrderService.getByOderId(i.getOrderId()); + StoreCombination storeCombination = storeCombinationService.getById(i.getCid()); + User tempUser = userService.getById(i.getUid()); + // 发送微信模板消息 + MyRecord record = new MyRecord(); + record.set("orderNo", storeOrder.getOrderId()); + record.set("proName", storeCombination.getTitle()); + record.set("payType", storeOrder.getPayType()); + record.set("isChannel", storeOrder.getIsChannel()); + pushMessageOrder(record, tempUser, notification); + }); + } + } + } + + /** + * 发送消息通知 + * @param record 参数 + * @param user 拼团用户 + */ + private void pushMessageOrder(MyRecord record, User user, SystemNotification notification) { + if (!record.getStr("payType").equals(Constants.PAY_TYPE_WE_CHAT)) { + return ; + } + if (record.getInt("isChannel").equals(2)) { + return ; + } + + UserToken userToken; + HashMap temMap = new HashMap<>(); + // 公众号 + if (record.getInt("isChannel").equals(Constants.ORDER_PAY_CHANNEL_PUBLIC) && notification.getIsWechat().equals(1)) { + userToken = userTokenService.getTokenByUserId(user.getUid(), UserConstants.USER_TOKEN_TYPE_WECHAT); + if (ObjectUtil.isNull(userToken)) { + return ; + } + // 发送微信模板消息 + temMap.put(Constants.WE_CHAT_TEMP_KEY_FIRST, "恭喜您拼团成功!我们将尽快为您发货。"); + temMap.put("keyword1", record.getStr("orderNo")); + temMap.put("keyword2", record.getStr("proName")); + temMap.put(Constants.WE_CHAT_TEMP_KEY_END, "感谢你的使用!"); + templateMessageService.pushTemplateMessage(notification.getWechatId(), temMap, userToken.getToken()); + } else if (notification.getIsRoutine().equals(1)) { + // 小程序发送订阅消息 + userToken = userTokenService.getTokenByUserId(user.getUid(), UserConstants.USER_TOKEN_TYPE_ROUTINE); + if (ObjectUtil.isNull(userToken)) { + return ; + } + // 组装数据 +// temMap.put("character_string1", record.getStr("orderNo")); +// temMap.put("thing2", record.getStr("proName")); +// temMap.put("thing5", "恭喜您拼团成功!我们将尽快为您发货。"); + temMap.put("character_string10", record.getStr("orderNo")); + temMap.put("thing7", record.getStr("proName")); + temMap.put("thing9", "恭喜您拼团成功!我们将尽快为您发货。"); + templateMessageService.pushMiniTemplateMessage(notification.getRoutineId(), temMap, userToken.getToken()); + } + } + + /** + * 拼团成功 + * @param kid + * @return + */ + @Override + public boolean pinkSuccess(Integer kid) { + if (ObjectUtil.isNull(kid)) { + return false; + } + StorePink teamPink = getById(kid); + List memberList = getListByCidAndKid(teamPink.getCid(), kid); + long timeMillis = System.currentTimeMillis(); + memberList.add(teamPink); + memberList.forEach(i -> { + i.setStatus(2); + i.setStopTime(timeMillis); + }); + return updateBatchById(memberList); + } + + /** + * 根据订单编号获取 + * @param orderId + * @return + */ + @Override + public StorePink getByOrderId(String orderId) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(StorePink::getOrderId, orderId); + return dao.selectOne(lqw); + } + + /** + * 获取最后3个拼团信息(不同用户) + * @return List + */ + @Override + public List findSizePink(Integer size) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(StorePink::getIsRefund, false); + lqw.in(StorePink::getStatus, 1, 2); + lqw.groupBy(StorePink::getUid); + lqw.orderByDesc(StorePink::getId); + lqw.last(" limit " + size); + return dao.selectList(lqw); + } + + /** + * 获取拼团参与总人数 + * @return Integer + */ + @Override + public Integer getTotalPeople() { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(StorePink::getIsRefund, false); + lqw.in(StorePink::getStatus, 1, 2); + return dao.selectCount(lqw); + } + + private Integer getCountByKidAndCid(Integer cid, Integer kid) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.select(StorePink::getId); + lqw.eq(StorePink::getCid, cid); + lqw.and(i -> i.eq(StorePink::getKId, kid).or().eq(StorePink::getId, kid)); + lqw.eq(StorePink::getIsRefund, false); + return dao.selectCount(lqw); + } +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductAttrResultServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductAttrResultServiceImpl.java new file mode 100644 index 0000000..556e292 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductAttrResultServiceImpl.java @@ -0,0 +1,46 @@ +package com.zbkj.service.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.model.product.StoreProductAttrResult; +import com.zbkj.service.dao.StoreProductAttrResultDao; +import com.zbkj.service.service.StoreProductAttrResultService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * StoreProductAttrResultService实现类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class StoreProductAttrResultServiceImpl extends ServiceImpl + implements StoreProductAttrResultService { + + @Resource + private StoreProductAttrResultDao dao; + + /** + * 根据商品属性值集合查询 + * + * @param storeProductAttrResult 查询参数 + * @return 查询结果 + */ + @Override + public List getByEntity(StoreProductAttrResult storeProductAttrResult) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.setEntity(storeProductAttrResult); + return dao.selectList(lqw); + } +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductAttrServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductAttrServiceImpl.java new file mode 100644 index 0000000..a8e2a4f --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductAttrServiceImpl.java @@ -0,0 +1,96 @@ +package com.zbkj.service.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.model.product.StoreProductAttr; +import com.zbkj.service.dao.StoreProductAttrDao; +import com.zbkj.service.service.StoreProductAttrService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * StoreProductAttrServiceImpl 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class StoreProductAttrServiceImpl extends ServiceImpl + implements StoreProductAttrService { + + @Resource + private StoreProductAttrDao dao; + + /** + * 根据基本属性查询商品属性详情 + * + * @param storeProductAttr 商品属性 + * @return 查询商品属性集合 + */ + @Override + public List getByEntity(StoreProductAttr storeProductAttr) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + if(null != storeProductAttr.getId()) lqw.eq(StoreProductAttr::getId,storeProductAttr.getId()); + if(StringUtils.isNotBlank(storeProductAttr.getAttrValues())) + lqw.eq(StoreProductAttr::getAttrValues,storeProductAttr.getAttrValues()); + if(StringUtils.isNotBlank(storeProductAttr.getAttrName())) + lqw.eq(StoreProductAttr::getAttrName,storeProductAttr.getAttrName()); + if(null != storeProductAttr.getProductId()) lqw.eq(StoreProductAttr::getProductId,storeProductAttr.getProductId()); + if(null != storeProductAttr.getType()) lqw.eq(StoreProductAttr::getType,storeProductAttr.getType()); + return dao.selectList(lqw); + } + + /** + * 根据id删除商品 + * @param productId 待删除商品id + * @param type 类型区分是是否添加营销 + */ + @Override + public void removeByProductId(Integer productId,int type) { + LambdaQueryWrapper lambdaQW = Wrappers.lambdaQuery(); + lambdaQW.eq(StoreProductAttr::getProductId, productId).eq(StoreProductAttr::getType,type); + dao.delete(lambdaQW); + } + + /** + * 删除商品规格 + * @param productId 商品id + * @param type 商品类型 + * @return Boolean + */ + @Override + public Boolean deleteByProductIdAndType(Integer productId, Integer type) { + LambdaUpdateWrapper luw = Wrappers.lambdaUpdate(); + luw.set(StoreProductAttr::getIsDel, true); + luw.eq(StoreProductAttr::getProductId, productId); + luw.eq(StoreProductAttr::getType, type); + return update(luw); + } + + /** + * 获取商品规格列表 + * @param productId 商品id + * @param type 商品类型 + * @return List + */ + @Override + public List getListByProductIdAndType(Integer productId, Integer type) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StoreProductAttr::getProductId, productId); + lqw.eq(StoreProductAttr::getType, type); + lqw.eq(StoreProductAttr::getIsDel, false); + return dao.selectList(lqw); + } +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductAttrValueServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductAttrValueServiceImpl.java new file mode 100644 index 0000000..7fc9a20 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductAttrValueServiceImpl.java @@ -0,0 +1,187 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.model.product.StoreProductAttrValue; +import com.zbkj.service.dao.StoreProductAttrValueDao; +import com.zbkj.service.service.StoreProductAttrValueService; +import com.zbkj.service.service.SystemConfigService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * StoreProductAttrValueServiceImpl 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class StoreProductAttrValueServiceImpl extends ServiceImpl + implements StoreProductAttrValueService { + + @Resource + private StoreProductAttrValueDao dao; + + @Autowired + private SystemConfigService systemConfigService; + + /** + * + * @param productId 商品id + * @param attrId 属性id + * @return 商品属性集合 + */ + @Override + public List getListByProductIdAndAttrId(Integer productId, String attrId, Integer type) { + LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(); + lambdaQueryWrapper.eq(StoreProductAttrValue::getProductId, productId); + lambdaQueryWrapper.eq(StoreProductAttrValue::getType, type); + if(null != attrId){ + lambdaQueryWrapper.eq(StoreProductAttrValue::getId, attrId); + } + lambdaQueryWrapper.eq(StoreProductAttrValue::getIsDel, false); + return dao.selectList(lambdaQueryWrapper); + } + + /** + * 根据产品属性查询 + * @param storeProductAttrValue 商品属性参数 + * @return 查询到的属性结果 + */ + @Override + public List getByEntity(StoreProductAttrValue storeProductAttrValue) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.setEntity(storeProductAttrValue); + return dao.selectList(lqw); + } + + /** + * 根据商品id删除AttrValue + * @param productId 商品id + * @param type 类型区分是是否添加营销 + * @reture 删除结果 + */ + @Override + public boolean removeByProductId(Integer productId,int type) { + LambdaQueryWrapper lambdaQW = Wrappers.lambdaQuery(); + lambdaQW.eq(StoreProductAttrValue::getProductId, productId).eq(StoreProductAttrValue::getType,type); + return dao.delete(lambdaQW) > 0; + } + + /** + * 根据id、类型查询 + * @param id ID + * @param type 类型 + * @return StoreProductAttrValue + */ + @Override + public StoreProductAttrValue getByIdAndProductIdAndType(Integer id, Integer productId, Integer type) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StoreProductAttrValue::getId, id); + lqw.eq(StoreProductAttrValue::getProductId, productId); + lqw.eq(StoreProductAttrValue::getType, type); + lqw.eq(StoreProductAttrValue::getIsDel, false); + return dao.selectOne(lqw); + } + + /** + * 根据sku查询 + * @param productId 商品id + * @param suk sku + * @param type 规格类型 + * @return StoreProductAttrValue + */ + @Override + public StoreProductAttrValue getByProductIdAndSkuAndType(Integer productId, String suk, Integer type) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StoreProductAttrValue::getProductId, productId); + lqw.eq(StoreProductAttrValue::getSuk, suk); + lqw.eq(StoreProductAttrValue::getType, type); + lqw.eq(StoreProductAttrValue::getIsDel, false); + return dao.selectOne(lqw); + } + + /** + * 添加(退货)/扣减库存 + * @param id 秒杀商品id + * @param num 数量 + * @param operationType 类型:add—添加,sub—扣减 + * @param type 活动类型 0=商品,1=秒杀,2=砍价,3=拼团 + * @return Boolean + */ + @Override + public Boolean operationStock(Integer id, Integer num, String operationType, Integer type) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + if ("add".equals(operationType)) { + updateWrapper.setSql(StrUtil.format("stock = stock + {}", num)); + updateWrapper.setSql(StrUtil.format("sales = sales - {}", num)); + if (type > 0) { + updateWrapper.setSql(StrUtil.format("quota = quota + {}", num)); + } + } + if ("sub".equals(operationType)) { + updateWrapper.setSql(StrUtil.format("stock = stock - {}", num)); + updateWrapper.setSql(StrUtil.format("sales = sales + {}", num)); + if (type > 0) { + updateWrapper.setSql(StrUtil.format("quota = quota - {}", num)); + // 扣减时加乐观锁保证库存不为负 + updateWrapper.last(StrUtil.format("and (quota - {} >= 0)", num)); + } else { + // 扣减时加乐观锁保证库存不为负 + updateWrapper.last(StrUtil.format("and (stock - {} >= 0)", num)); + } + } + updateWrapper.eq("id", id); + updateWrapper.eq("type", type); + boolean update = update(updateWrapper); + if (!update) { + throw new CrmebException("更新商品attrValue失败,attrValueId = " + id); + } + return update; + } + + /** + * 删除商品规格属性值 + * @param productId 商品id + * @param type 商品类型 + * @return Boolean + */ + @Override + public Boolean deleteByProductIdAndType(Integer productId, Integer type) { + LambdaUpdateWrapper luw = Wrappers.lambdaUpdate(); + luw.set(StoreProductAttrValue::getIsDel, true); + luw.eq(StoreProductAttrValue::getProductId, productId); + luw.eq(StoreProductAttrValue::getType, type); + return update(luw); + } + + /** + * 获取商品规格列表 + * @param productId 商品id + * @param type 商品类型 + * @return List + */ + @Override + public List getListByProductIdAndType(Integer productId, Integer type) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StoreProductAttrValue::getProductId, productId); + lqw.eq(StoreProductAttrValue::getType, type); + lqw.eq(StoreProductAttrValue::getIsDel, false); + return dao.selectList(lqw); + } +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductCouponServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductCouponServiceImpl.java new file mode 100644 index 0000000..c88b065 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductCouponServiceImpl.java @@ -0,0 +1,54 @@ +package com.zbkj.service.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.model.product.StoreProductCoupon; +import com.zbkj.service.dao.StoreProductCouponDao; +import com.zbkj.service.service.StoreProductCouponService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * StoreProductCouponServiceImpl 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class StoreProductCouponServiceImpl extends ServiceImpl + implements StoreProductCouponService { + + @Resource + private StoreProductCouponDao dao; + /** + * + * @param productId 产品id + */ + @Override + public boolean deleteByProductId(Integer productId) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(StoreProductCoupon::getProductId, productId); + return dao.delete(lambdaQueryWrapper) > 0; + } + + /** + * 根据商品id获取已关联优惠券信息 + * @param productId 商品id + * @return 已关联优惠券 + */ + @Override + public List getListByProductId(Integer productId) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(StoreProductCoupon::getProductId, productId); + return dao.selectList(lambdaQueryWrapper); + } +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductDescriptionServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductDescriptionServiceImpl.java new file mode 100644 index 0000000..a76319d --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductDescriptionServiceImpl.java @@ -0,0 +1,57 @@ +package com.zbkj.service.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.model.product.StoreProductDescription; +import com.zbkj.service.dao.StoreProductDescriptionDao; +import com.zbkj.service.service.StoreProductDescriptionService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * StoreProductDescriptionServiceImpl 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class StoreProductDescriptionServiceImpl extends ServiceImpl implements StoreProductDescriptionService { + + @Resource + private StoreProductDescriptionDao dao; + + /** + * 根据商品id和type删除对应描述 + * @param productId 商品id + * @param type 类型 + */ + @Override + public void deleteByProductId(int productId,int type) { + LambdaQueryWrapper lmq = Wrappers.lambdaQuery(); + lmq.eq(StoreProductDescription::getProductId, productId).eq(StoreProductDescription::getType,type); + dao.delete(lmq); + } + + /** + * 获取详情 + * @param productId 商品id + * @param type 商品类型 + * @return StoreProductDescription + */ + @Override + public StoreProductDescription getByProductIdAndType(Integer productId, Integer type) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StoreProductDescription::getProductId, productId); + lqw.eq(StoreProductDescription::getType,type); + return dao.selectOne(lqw); + } +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductLogServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductLogServiceImpl.java new file mode 100644 index 0000000..7fc4425 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductLogServiceImpl.java @@ -0,0 +1,30 @@ +package com.zbkj.service.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.model.log.StoreProductLog; +import com.zbkj.service.dao.StoreProductLogDao; +import com.zbkj.service.service.StoreProductLogService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * StoreProductLogServiceImpl 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class StoreProductLogServiceImpl extends ServiceImpl implements StoreProductLogService { + + @Resource + private StoreProductLogDao dao; + +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductRelationServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductRelationServiceImpl.java new file mode 100644 index 0000000..1a60059 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductRelationServiceImpl.java @@ -0,0 +1,239 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.request.UserCollectAllRequest; +import com.zbkj.common.request.UserCollectRequest; +import com.zbkj.common.response.UserRelationResponse; +import com.github.pagehelper.PageHelper; +import com.zbkj.common.utils.CrmebUtil; +import com.zbkj.common.model.product.StoreProductRelation; +import com.zbkj.service.dao.StoreProductRelationDao; +import com.zbkj.service.service.StoreProductRelationService; +import com.zbkj.service.service.UserService; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +/** + * StoreProductRelationServiceImpl 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class StoreProductRelationServiceImpl extends ServiceImpl + implements StoreProductRelationService { + + @Resource + private StoreProductRelationDao dao; + + @Autowired + private UserService userService; + + /** + * 添加收藏产品 + * @param request UserCollectAllRequest 新增参数 + * @return boolean + */ + @Override + public Boolean all(UserCollectAllRequest request) { + Integer[] arr = request.getProductId(); + if(arr.length < 1){ + throw new CrmebException("请选择产品"); + } + + List list = CrmebUtil.arrayUnique(arr); + + Integer uid = userService.getUserIdException(); + deleteAll(request, uid, "collect"); //先删除所有已存在的 + + ArrayList storeProductRelationList = new ArrayList<>(); + for (Integer productId: list) { + StoreProductRelation storeProductRelation = new StoreProductRelation(); + storeProductRelation.setUid(uid); + storeProductRelation.setType("collect"); + storeProductRelation.setProductId(productId); + storeProductRelation.setCategory(request.getCategory()); + storeProductRelationList.add(storeProductRelation); + } + return saveBatch(storeProductRelationList); + } + + + /** + * 取消收藏产品 + */ + @Override + public Boolean delete(String requestJson) { + JSONObject jsonObject = JSONObject.parseObject(requestJson); + if (StrUtil.isBlank(jsonObject.getString("ids"))) { + throw new CrmebException("收藏id不能为空"); + } + List idList = CrmebUtil.stringToArray(jsonObject.getString("ids")); + if (CollUtil.isEmpty(idList)) { + throw new CrmebException("收藏id不能为空"); + } + Integer userId = userService.getUserIdException(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.in(StoreProductRelation::getId, idList); + lqw.eq(StoreProductRelation::getUid, userId); + int delete = dao.delete(lqw); + return delete > 0; + } + + /** + * 取消收藏产品 + * @param request UserCollectAllRequest 参数 + * @param type 类型 + */ + private void deleteAll(UserCollectAllRequest request, Integer uid, String type) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.in(StoreProductRelation::getProductId, Arrays.asList(request.getProductId())) + .eq(StoreProductRelation::getCategory, request.getCategory()) + .eq(StoreProductRelation::getUid, uid) + .eq(StoreProductRelation::getType, type); + dao.delete(lambdaQueryWrapper); + } + + /** + * 根据产品id和类型获取对应列表 + * @param productId 产品id + * @param type 类型 + * @return 对应结果 + */ + @Override + public List getList(Integer productId, String type) { + LambdaQueryWrapper lqr = new LambdaQueryWrapper<>(); + lqr.eq(StoreProductRelation::getProductId, productId); + lqr.eq(StoreProductRelation::getType, type); + return dao.selectList(lqr); + } + + /** + * 获取用户当前是否喜欢该商品 + * @param userId 用户id + * @param productId 商品id + * @return 是否喜欢标识 + */ + @Override + public List getLikeOrCollectByUser(Integer userId, Integer productId,boolean isLike) { + String typeValue = isLike?"like":"collect"; + LambdaQueryWrapper lqr = new LambdaQueryWrapper<>(); + lqr.eq(StoreProductRelation::getProductId, productId); + lqr.eq(StoreProductRelation::getUid, userId); + lqr.eq(StoreProductRelation::getType,typeValue); + return dao.selectList(lqr); + } + + /** + * 获取用户收藏列表 + * @param pageParamRequest 分页参数 + * @return List + */ + @Override + public List getUserList(PageParamRequest pageParamRequest) { + PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + Integer userId = userService.getUserIdException(); + return dao.getUserList(userId); + } + + /** + * 获取用户的收藏数量 + * @param uid 用户uid + * @return 收藏数量 + */ + @Override + public Integer getCollectCountByUid(Integer uid) { + LambdaQueryWrapper lqr = Wrappers.lambdaQuery(); + lqr.eq(StoreProductRelation::getUid, uid); + lqr.eq(StoreProductRelation::getType,"collect"); + return dao.selectCount(lqr); + } + + /** + * 根据商品Id取消收藏 + * @param proId 商品Id + * @return Boolean + */ + @Override + public Boolean deleteByProId(Integer proId) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.in(StoreProductRelation::getProductId, proId); + int delete = dao.delete(lqw); + return delete > 0; + } + + /** + * 根据商品Id取消收藏 + * @param proId 商品Id + * @return Boolean + */ + @Override + public Boolean deleteByProIdAndUid(Integer proId) { + Integer userId = userService.getUserIdException(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.in(StoreProductRelation::getProductId, proId); + lqw.eq(StoreProductRelation::getUid, userId); + int delete = dao.delete(lqw); + return delete > 0; + } + + /** + * 根据日期获取收藏量 + * @param date 日期,yyyy-MM-dd格式 + * @return Integer + */ + @Override + public Integer getCountByDate(String date) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.select(StoreProductRelation::getId); + lqw.apply("date_format(create_time, '%Y-%m-%d') = {0}", date); + return dao.selectCount(lqw); + } + + /** + * 根据日期获取收藏量 + * @param date 日期,yyyy-MM-dd格式 + * @param proId 商品id + * @return Integer + */ + @Override + public Integer getCountByDateAndProId(String date, Integer proId) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.select(StoreProductRelation::getId); + lqw.eq(StoreProductRelation::getProductId, proId); + lqw.apply("date_format(create_time, '%Y-%m-%d') = {0}", date); + return dao.selectCount(lqw); + } + + /** + * 添加收藏 + * @param request 收藏参数 + */ + @Override + public Boolean add(UserCollectRequest request) { + StoreProductRelation storeProductRelation = new StoreProductRelation(); + BeanUtils.copyProperties(request, storeProductRelation); + storeProductRelation.setUid(userService.getUserIdException()); + return save(storeProductRelation); + } +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductReplyServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductReplyServiceImpl.java new file mode 100644 index 0000000..107d234 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductReplyServiceImpl.java @@ -0,0 +1,510 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.Page; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.model.order.StoreOrder; +import com.zbkj.common.model.product.StoreProduct; +import com.zbkj.common.model.product.StoreProductReply; +import com.zbkj.common.model.user.User; +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.request.StoreProductReplyAddRequest; +import com.zbkj.common.request.StoreProductReplyCommentRequest; +import com.zbkj.common.request.StoreProductReplySearchRequest; +import com.zbkj.common.response.ProductDetailReplyResponse; +import com.zbkj.common.response.ProductReplyResponse; +import com.zbkj.common.response.StoreProductReplyResponse; +import com.zbkj.common.utils.CrmebUtil; +import com.zbkj.common.utils.DateUtil; +import com.zbkj.common.utils.RedisUtil; +import com.zbkj.common.vo.MyRecord; +import com.zbkj.common.vo.StoreOrderInfoOldVo; +import com.zbkj.common.vo.dateLimitUtilVo; +import com.zbkj.service.dao.StoreProductReplyDao; +import com.zbkj.service.service.*; +import org.apache.commons.lang3.ArrayUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.support.TransactionTemplate; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** + * StoreProductReplyServiceImpl 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class StoreProductReplyServiceImpl extends ServiceImpl + implements StoreProductReplyService { + + @Resource + private StoreProductReplyDao dao; + + @Autowired + private StoreProductService storeProductService; + + @Autowired + private StoreOrderService storeOrderService; + + @Autowired + private StoreOrderInfoService storeOrderInfoService; + + @Autowired + private UserService userService; + + @Autowired + private SystemAttachmentService systemAttachmentService; + + @Autowired + private RedisUtil redisUtil; + + @Autowired + private TransactionTemplate transactionTemplate; + + + /** + * 列表 + * @param request 请求参数 + * @param pageParamRequest 分页类参数 + * @return List + */ + @Override + public PageInfo getList(StoreProductReplySearchRequest request, PageParamRequest pageParamRequest) { + Page pageStoreReply = PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + //带 StoreProductReply 类的多条件查询 + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(StoreProductReply::getIsDel, false); + if (ObjectUtil.isNotNull(request.getIsReply())) { + lambdaQueryWrapper.eq(StoreProductReply::getIsReply, request.getIsReply()); + } + if (StrUtil.isNotBlank(request.getProductSearch())) { + List storeProducts = storeProductService.likeProductName(request.getProductSearch()); + if (CollUtil.isNotEmpty(storeProducts)) { + List productIds = storeProducts.stream().map(StoreProduct::getId).collect(Collectors.toList()); + lambdaQueryWrapper.in(StoreProductReply::getProductId, productIds); + } + } + if (StringUtils.isNotBlank(request.getNickname())) { + lambdaQueryWrapper.like(StoreProductReply::getNickname,request.getNickname()); + } + if (StringUtils.isNotBlank(request.getDateLimit())) { + dateLimitUtilVo dateLimit = DateUtil.getDateLimit(request.getDateLimit()); + lambdaQueryWrapper.between(StoreProductReply::getCreateTime, dateLimit.getStartTime(), dateLimit.getEndTime()); + } + lambdaQueryWrapper.orderByDesc(StoreProductReply::getId); + List dataList = dao.selectList(lambdaQueryWrapper); + List dataResList = new ArrayList<>(); + for (StoreProductReply productReply : dataList) { + StoreProductReplyResponse productReplyResponse = new StoreProductReplyResponse(); + BeanUtils.copyProperties(productReply, productReplyResponse); + StoreProduct storeProduct = storeProductService.getById(productReply.getProductId()); + productReplyResponse.setStoreProduct(storeProduct); + productReplyResponse.setPics(CrmebUtil.stringToArrayStr(productReply.getPics())); + dataResList.add(productReplyResponse); + } + return CommonPage.copyPageInfo(pageStoreReply, dataResList); + } + + /** + * 商品分数 + * @return Integer + */ + private Integer getSumStar(Integer productId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.select("IFNULL(sum(product_score),0) as product_score", "IFNULL(sum(service_score),0) as service_score"); + queryWrapper.eq("is_del", 0); + queryWrapper.eq("product_id", productId); + StoreProductReply storeProductReply = dao.selectOne(queryWrapper); + if (ObjectUtil.isNull(storeProductReply)) { + return 0; + } + if (storeProductReply.getProductScore() == 0 || storeProductReply.getServiceScore() == 0) { + return 0; + } + // 星数 = (商品评星 + 服务评星) / 2 + BigDecimal sumScore = new BigDecimal(storeProductReply.getProductScore() + storeProductReply.getServiceScore()); + BigDecimal divide = sumScore.divide(BigDecimal.valueOf(2L), 0, BigDecimal.ROUND_DOWN); + return divide.intValue(); + } + + /** + * 创建订单商品评价 + * @param request 请求参数 + * @return Boolean + */ + @Override + public Boolean create(StoreProductReplyAddRequest request) { + User user = userService.getInfoException(); + StoreOrder storeOrder = storeOrderService.getByOderId(request.getOrderNo()); + if (ObjectUtil.isNull(storeOrder) || !storeOrder.getUid().equals(user.getUid())) { + throw new CrmebException("该订单不存在"); + } + StoreProductReply storeProductReply = new StoreProductReply(); + BeanUtils.copyProperties(request, storeProductReply); + storeProductReply.setOid(storeOrder.getId()); + Integer count = checkIsReply(storeProductReply); + storeProductReply.setAvatar(systemAttachmentService.clearPrefix(user.getAvatar())); + storeProductReply.setNickname(user.getNickname()); + if (StringUtils.isNotBlank(request.getPics())) { + String pics = request.getPics().replace("[\"","").replace("\"]","") + .replace("\"",""); + storeProductReply.setPics(systemAttachmentService.clearPrefix(ArrayUtils.toString(pics))); + } + Boolean execute = transactionTemplate.execute(e -> { + save(storeProductReply); + //修改订单信息 + completeOrder(storeProductReply, count, storeOrder); + return Boolean.TRUE; + }); + if (!execute) { + throw new CrmebException("评价订单失败"); + } + return execute; + } + + /** + * 添加虚拟评论 + * @param request 评论参数 + * @return 评论结果 + */ + @Override + public boolean virtualCreate(StoreProductReplyAddRequest request) { + StoreProductReply storeProductReply = new StoreProductReply(); + BeanUtils.copyProperties(request, storeProductReply); + if (StringUtils.isNotBlank(request.getPics())) { + String pics = request.getPics() + .replace("[","") + .replace("]","") + .replace("\"",""); + storeProductReply.setPics(systemAttachmentService.clearPrefix(ArrayUtils.toString(pics))); + } + storeProductReply.setAvatar(systemAttachmentService.clearPrefix(storeProductReply.getAvatar())); + storeProductReply.setUnique(CrmebUtil.randomCount(11111,9999)+""); + return save(storeProductReply); + } + + /** + * 订单是否已回复 + * @param unique skuId + * @param orderId 订单id + * @return 回复内容 + */ + @Override + public Boolean isReply(String unique, Integer orderId) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(StoreProductReply::getUnique, unique); + lqw.eq(StoreProductReply::getOid, orderId); + List replyList = dao.selectList(lqw); + if (CollUtil.isEmpty(replyList)) { + return Boolean.FALSE; + } + return Boolean.TRUE; + } + + /** + * H5商品评论统计 + * @param productId 商品编号 + * @return MyRecord + */ + @Override + public MyRecord getH5Count(Integer productId) { + // 评论总数 + Integer sumCount = getCountByScore(productId, "all"); + // 好评总数 + Integer goodCount = getCountByScore(productId, "good"); + // 中评总数 + Integer mediumCount = getCountByScore(productId, "medium"); + // 差评总数 + Integer poorCount = getCountByScore(productId, "poor"); + // 好评率 + String replyChance = "0"; + if (sumCount > 0 && goodCount > 0) { + replyChance = String.format("%.2f", ((goodCount.doubleValue() / sumCount.doubleValue()))); + } + // 评分星数(商品评星 + 服务评星)/2 + Integer replyStar = 0; + if (sumCount > 0) { + replyStar = getSumStar(productId); + + } + MyRecord record = new MyRecord(); + record.set("sumCount", sumCount); + record.set("goodCount", goodCount); + record.set("mediumCount", mediumCount); + record.set("poorCount", poorCount); + record.set("replyChance", replyChance); + record.set("replyStar", replyStar); + return record; + } + + /** + * H5商品详情评论信息 + * @param proId 商品编号 + * @return ProductDetailReplyResponse + */ + @Override + public ProductDetailReplyResponse getH5ProductReply(Integer proId) { + ProductDetailReplyResponse response = new ProductDetailReplyResponse(); + + // 评论总数 + Integer sumCount = getCountByScore(proId, "all"); + if (sumCount.equals(0)) { + response.setSumCount(0); + response.setReplyChance("0"); + return response; + } + // 好评总数 + Integer goodCount = getCountByScore(proId, "good"); + // 好评率 + String replyChance = "0"; + if (sumCount > 0 && goodCount > 0) { + replyChance = String.format("%.2f", ((goodCount.doubleValue() / sumCount.doubleValue()))); + } + + // 查询最后一条评论 + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(StoreProductReply::getProductId, proId); + lqw.eq(StoreProductReply::getIsDel, false); + lqw.orderByDesc(StoreProductReply::getId); + lqw.last(" limit 1"); + StoreProductReply storeProductReply = dao.selectOne(lqw); + ProductReplyResponse productReplyResponse = new ProductReplyResponse(); + BeanUtils.copyProperties(storeProductReply, productReplyResponse); + // 评价图 + productReplyResponse.setPics(CrmebUtil.stringToArrayStr(storeProductReply.getPics())); + // 昵称 + String nickname = storeProductReply.getNickname(); + if (StrUtil.isNotBlank(nickname)) { + if (nickname.length() == 1) { + nickname = nickname.concat("**"); + } else if (nickname.length() == 2) { + nickname = nickname.substring(0, 1) + "**"; + } else { + nickname = nickname.substring(0, 1) + "**" + nickname.substring(nickname.length() - 1); + } + productReplyResponse.setNickname(nickname); + } + // 星数 = (商品评星 + 服务评星) / 2 + BigDecimal sumScore = new BigDecimal(storeProductReply.getProductScore() + storeProductReply.getServiceScore()); + BigDecimal divide = sumScore.divide(BigDecimal.valueOf(2L), 0, BigDecimal.ROUND_DOWN); + productReplyResponse.setScore(divide.intValue()); + + response.setSumCount(sumCount); + response.setReplyChance(replyChance); + response.setProductReply(productReplyResponse); + return response; + } + + /** + * 移动端商品评论列表 + * @param proId 商品编号 + * @param type 评价等级|0=全部,1=好评,2=中评,3=差评 + * @param pageParamRequest 分页参数 + * @return PageInfo + */ + @Override + public PageInfo getH5List(Integer proId, Integer type, PageParamRequest pageParamRequest) { + Page startPage = PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + + //带 StoreProductReply 类的多条件查询 + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(StoreProductReply::getIsDel, false); + lqw.eq(StoreProductReply::getProductId, proId); + //评价等级|0=全部,1=好评,2=中评,3=差评 + switch (type) { + case 1: + lqw.apply(" (product_score + service_score) >= 8"); + break; + case 2: + lqw.apply(" (product_score + service_score) < 8 and (product_score + service_score) > 4"); + break; + case 3: + lqw.apply(" (product_score + service_score) <= 4"); + break; + default: + break; + + } + lqw.orderByDesc(StoreProductReply::getId); + List replyList = dao.selectList(lqw); + List responseList = new ArrayList<>(); + for (StoreProductReply productReply : replyList) { + ProductReplyResponse productReplyResponse = new ProductReplyResponse(); + BeanUtils.copyProperties(productReply, productReplyResponse); + // 评价图 + productReplyResponse.setPics(CrmebUtil.stringToArrayStr(productReply.getPics())); + // 昵称 + String nickname = productReply.getNickname(); + if (StrUtil.isNotBlank(nickname)) { + if (nickname.length() == 1) { + nickname = nickname.concat("**"); + } else if (nickname.length() == 2) { + nickname = nickname.substring(0, 1) + "**"; + } else { + nickname = nickname.substring(0, 1) + "**" + nickname.substring(nickname.length() - 1); + } + productReplyResponse.setNickname(nickname); + } + // 星数 = (商品评星 + 服务评星) / 2 + BigDecimal sumScore = new BigDecimal(productReply.getProductScore() + productReply.getServiceScore()); + BigDecimal divide = sumScore.divide(BigDecimal.valueOf(2L), 0, BigDecimal.ROUND_DOWN); + productReplyResponse.setScore(divide.intValue()); + + responseList.add(productReplyResponse); + } + return CommonPage.copyPageInfo(startPage, responseList); + } + + /** + * 删除评论 + * @param id 评论id + * @return Boolean + */ + @Override + public Boolean delete(Integer id) { + LambdaUpdateWrapper lmdUp = new LambdaUpdateWrapper<>(); + lmdUp.set(StoreProductReply::getIsDel, 1); + lmdUp.eq(StoreProductReply::getId, id); + return update(lmdUp); + } + + /** + * 商品评论回复 + * @param request 回复参数 + */ + @Override + public Boolean comment(StoreProductReplyCommentRequest request) { + LambdaUpdateWrapper lup = new LambdaUpdateWrapper<>(); + lup.eq(StoreProductReply::getId, request.getIds()); + lup.set(StoreProductReply::getMerchantReplyContent, request.getMerchantReplyContent()); + lup.set(StoreProductReply::getMerchantReplyTime, DateUtil.getNowTime()); + lup.set(StoreProductReply::getIsReply, true); + return update(lup); + } + + // 获取统计数据(好评、中评、差评) + private Integer getCountByScore(Integer productId, String type) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(StoreProductReply::getProductId, productId); + lqw.eq(StoreProductReply::getIsDel, false); + + switch (type) { + case "all": + break; + case "good": + lqw.apply( " (product_score + service_score) >= 8"); + break; + case "medium": + lqw.apply( " (product_score + service_score) < 8 and (product_score + service_score) > 4"); + break; + case "poor": + lqw.apply( " (product_score + service_score) <= 4"); + break; + } + return dao.selectCount(lqw); + } + + /** + * 如果所有的都已评价,那么订单完成 + * @author Mr.Zhang + * @since 2020-06-03 + * @return Integer + */ + private void completeOrder(StoreProductReply storeProductReply, Integer count, StoreOrder storeOrder) { + Integer replyCount = getReplyCountByEntity(storeProductReply, true); + + if (replyCount.equals(count)) { + //全部商品都已评价 + storeOrder.setStatus(Constants.ORDER_STATUS_INT_COMPLETE); + storeOrderService.updateById(storeOrder); + redisUtil.lPush(Constants.ORDER_TASK_REDIS_KEY_AFTER_COMPLETE_BY_USER, storeOrder.getId()); + } + } + + /** + * 检测当前商品是否可以评论 + * @author Mr.Zhang + * @since 2020-06-03 + * @return Integer + */ + private Integer checkIsReply(StoreProductReply storeProductReply) { + + //查看商品信息 + List orderInfoVoList = storeOrderInfoService.getOrderListByOrderId(storeProductReply.getOid()); + if (null == orderInfoVoList || orderInfoVoList.size() < 1) { + throw new CrmebException("没有找到商品信息"); + } + + boolean findResult = false; + for (StoreOrderInfoOldVo orderInfoVo : orderInfoVoList) { +// Integer productId = orderInfoVo.getInfo().getInteger("product_id"); + Integer productId = orderInfoVo.getInfo().getProductId(); + if (productId < 1) { + continue; + } + + if (storeProductReply.getProductId().equals(productId)) { + findResult = true; + break; + } + } + + if (!findResult) { + throw new CrmebException("没有找到商品信息"); + } + + //商品是否已评价 + Integer replyCount = getReplyCountByEntity(storeProductReply, false); + if (replyCount > 0) { + throw new CrmebException("该商品已评价"); + } + + return orderInfoVoList.size(); + } + + /** + * 根据商品id 订单id 用户id 获取评论信息 + * @author Mr.Zhang + * @since 2020-06-03 + * @return Integer + */ + private Integer getReplyCountByEntity(StoreProductReply request, boolean isAll) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(StoreProductReply::getOid, request.getOid()); +// .eq(StoreProductReply::getUnique, request.getUnique()); + if (null != request.getUid()) { + lambdaQueryWrapper.eq(StoreProductReply::getUid, request.getUid()); + } + if (!isAll) { + lambdaQueryWrapper.eq(StoreProductReply::getProductId, request.getProductId()); + + } + return dao.selectCount(lambdaQueryWrapper); + } + +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductRuleServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductRuleServiceImpl.java new file mode 100644 index 0000000..cb6e6cb --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductRuleServiceImpl.java @@ -0,0 +1,102 @@ +package com.zbkj.service.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.request.StoreProductRuleRequest; +import com.zbkj.common.request.StoreProductRuleSearchRequest; +import com.github.pagehelper.PageHelper; +import com.zbkj.common.model.product.StoreProductRule; +import com.zbkj.service.dao.StoreProductRuleDao; +import com.zbkj.service.service.StoreProductRuleService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * StoreProductRuleServiceImpl 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class StoreProductRuleServiceImpl extends ServiceImpl implements StoreProductRuleService { + + @Resource + private StoreProductRuleDao dao; + + + /** + * 列表 + * @param request 请求参数 + * @param pageParamRequest 分页类参数 + * @return List + */ + @Override + public List getList(StoreProductRuleSearchRequest request, PageParamRequest pageParamRequest) { + PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + + //带 StoreProductRule 类的多条件查询 + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + if(null != request.getKeywords()){ + lambdaQueryWrapper.like(StoreProductRule::getRuleName, request.getKeywords()); + lambdaQueryWrapper.or().like(StoreProductRule::getRuleValue, request.getKeywords()); + } + lambdaQueryWrapper.orderByDesc(StoreProductRule::getId); + return dao.selectList(lambdaQueryWrapper); + } + + /** + * 新增商品规格 + * @param storeProductRuleRequest 规格参数 + * @return 新增结果 + */ + @Override + public boolean save(StoreProductRuleRequest storeProductRuleRequest) { + if(getListByRuleName(storeProductRuleRequest.getRuleName()).size() > 0){ + throw new CrmebException("此规格值已经存在"); + } + StoreProductRule storeProductRule = new StoreProductRule(); + BeanUtils.copyProperties(storeProductRuleRequest, storeProductRule); + return save(storeProductRule); + } + + /** + * 修改规格 + * @param storeProductRuleRequest 规格参数 + * @return Boolean + */ + @Override + public Boolean updateRule(StoreProductRuleRequest storeProductRuleRequest) { + StoreProductRule storeProductRule = new StoreProductRule(); + BeanUtils.copyProperties(storeProductRuleRequest, storeProductRule); + storeProductRule.setId(storeProductRuleRequest.getId()); + return updateById(storeProductRule); + } + + /** + * 根据规格名称查询同名规格 + * @param ruleName 规格名称 + * @return 查询到的数据 + */ + private List getListByRuleName(String ruleName){ + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + if(StringUtils.isBlank(ruleName)){ + return new ArrayList<>(); + } + lambdaQueryWrapper.eq(StoreProductRule::getRuleName, ruleName); + return dao.selectList(lambdaQueryWrapper); + } +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductServiceImpl.java new file mode 100644 index 0000000..f8a25c5 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductServiceImpl.java @@ -0,0 +1,1360 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.parser.Feature; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.model.category.Category; +import com.zbkj.common.model.coupon.StoreCoupon; +import com.zbkj.common.model.product.*; +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.request.*; +import com.zbkj.common.response.*; +import com.zbkj.common.utils.CrmebUtil; +import com.zbkj.common.utils.DateUtil; +import com.zbkj.common.utils.RedisUtil; +import com.zbkj.common.vo.MyRecord; +import com.github.pagehelper.Page; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.zbkj.service.dao.StoreProductDao; +import com.zbkj.service.delete.ProductUtils; +import com.zbkj.service.service.*; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.support.TransactionTemplate; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +/** + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class StoreProductServiceImpl extends ServiceImpl + implements StoreProductService { + + @Resource + private StoreProductDao dao; + + @Autowired + private StoreProductAttrService attrService; + + @Autowired + private StoreProductAttrValueService storeProductAttrValueService; + + @Autowired + private SystemConfigService systemConfigService; + + @Autowired + private StoreProductDescriptionService storeProductDescriptionService; + + @Autowired + private RedisUtil redisUtil; + + @Autowired + private CategoryService categoryService; + + @Autowired + private StoreProductRelationService storeProductRelationService; + + @Autowired + private SystemAttachmentService systemAttachmentService; + + @Autowired + private StoreProductAttrResultService storeProductAttrResultService; + + @Autowired + private StoreProductCouponService storeProductCouponService; + + @Autowired + private StoreCouponService storeCouponService; + + @Autowired + private ProductUtils productUtils; + + @Autowired + private StoreBargainService storeBargainService; + + @Autowired + private StoreCombinationService storeCombinationService; + + @Autowired + private StoreSeckillService storeSeckillService; + + @Autowired + private OnePassService onePassService; + + @Autowired + private StoreCartService storeCartService; + + @Autowired + private TransactionTemplate transactionTemplate; + + private static final Logger logger = LoggerFactory.getLogger(StoreProductServiceImpl.class); + + /** + * 获取产品列表Admin + * @param request 筛选参数 + * @param pageParamRequest 分页参数 + * @return PageInfo + */ + @Override + public PageInfo getAdminList(StoreProductSearchRequest request, PageParamRequest pageParamRequest) { + //带 StoreProduct 类的多条件查询 + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + //类型搜索 + switch (request.getType()) { + case 1: + //出售中(已上架) + lambdaQueryWrapper.eq(StoreProduct::getIsShow, true); + lambdaQueryWrapper.eq(StoreProduct::getIsRecycle, false); + lambdaQueryWrapper.eq(StoreProduct::getIsDel, false); + break; + case 2: + //仓库中(未上架) + lambdaQueryWrapper.eq(StoreProduct::getIsShow, false); + lambdaQueryWrapper.eq(StoreProduct::getIsRecycle, false); + lambdaQueryWrapper.eq(StoreProduct::getIsDel, false); + break; + case 3: + //已售罄 + lambdaQueryWrapper.le(StoreProduct::getStock, 0); + lambdaQueryWrapper.eq(StoreProduct::getIsRecycle, false); + lambdaQueryWrapper.eq(StoreProduct::getIsDel, false); + break; + case 4: + //警戒库存 + Integer stock = Integer.parseInt(systemConfigService.getValueByKey("store_stock")); + lambdaQueryWrapper.le(StoreProduct::getStock, stock); + lambdaQueryWrapper.eq(StoreProduct::getIsRecycle, false); + lambdaQueryWrapper.eq(StoreProduct::getIsDel, false); + break; + case 5: + //回收站 + lambdaQueryWrapper.eq(StoreProduct::getIsRecycle, true); + lambdaQueryWrapper.eq(StoreProduct::getIsDel, false); + break; + default: + break; + } + + //关键字搜索 + if (StrUtil.isNotBlank(request.getKeywords())) { + lambdaQueryWrapper.and(i -> i + .or().eq(StoreProduct::getId, request.getKeywords()) + .or().like(StoreProduct::getStoreName, request.getKeywords()) + .or().like(StoreProduct::getKeyword, request.getKeywords())); + } + lambdaQueryWrapper.apply(StringUtils.isNotBlank(request.getCateId()), "FIND_IN_SET ('" + request.getCateId() + "', cate_id)"); + lambdaQueryWrapper.orderByDesc(StoreProduct::getSort).orderByDesc(StoreProduct::getId); + + Page storeProductPage = PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + List storeProducts = dao.selectList(lambdaQueryWrapper); + List storeProductResponses = new ArrayList<>(); + for (StoreProduct product : storeProducts) { + StoreProductResponse storeProductResponse = new StoreProductResponse(); + BeanUtils.copyProperties(product, storeProductResponse); + StoreProductAttr storeProductAttrPram = new StoreProductAttr(); + storeProductAttrPram.setProductId(product.getId()).setType(Constants.PRODUCT_TYPE_NORMAL); + List attrs = attrService.getByEntity(storeProductAttrPram); + + if (attrs.size() > 0) { + storeProductResponse.setAttr(attrs); + } + List storeProductAttrValueResponse = new ArrayList<>(); + + StoreProductAttrValue storeProductAttrValuePram = new StoreProductAttrValue(); + storeProductAttrValuePram.setProductId(product.getId()).setType(Constants.PRODUCT_TYPE_NORMAL); + List storeProductAttrValues = storeProductAttrValueService.getByEntity(storeProductAttrValuePram); + storeProductAttrValues.stream().map(e->{ + StoreProductAttrValueResponse response = new StoreProductAttrValueResponse(); + BeanUtils.copyProperties(e,response); + storeProductAttrValueResponse.add(response); + return e; + }).collect(Collectors.toList()); + storeProductResponse.setAttrValue(storeProductAttrValueResponse); + // 处理富文本 + StoreProductDescription sd = storeProductDescriptionService.getOne( + new LambdaQueryWrapper() + .eq(StoreProductDescription::getProductId, product.getId()) + .eq(StoreProductDescription::getType, Constants.PRODUCT_TYPE_NORMAL)); + if (null != sd) { + storeProductResponse.setContent(null == sd.getDescription()?"":sd.getDescription()); + } + // 处理分类中文 + List cg = categoryService.getByIds(CrmebUtil.stringToArray(product.getCateId())); + if (CollUtil.isEmpty(cg)) { + storeProductResponse.setCateValues(""); + } else { + storeProductResponse.setCateValues(cg.stream().map(Category::getName).collect(Collectors.joining(","))); + } + + storeProductResponse.setCollectCount( + storeProductRelationService.getList(product.getId(),"collect").size()); + storeProductResponses.add(storeProductResponse); + } + // 多条sql查询处理分页正确 + return CommonPage.copyPageInfo(storeProductPage, storeProductResponses); + } + + /** + * 根据商品id集合获取 + * @param productIds id集合 + * @return + */ + @Override + public List getListInIds(List productIds) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.in(StoreProduct::getId,productIds); + lambdaQueryWrapper.eq(StoreProduct::getIsDel, false); + return dao.selectList(lambdaQueryWrapper); + } + + /** + * 新增产品 + * @param request 新增产品request对象 + * @return 新增结果 + */ + @Override + public Boolean save(StoreProductAddRequest request) { + // 多规格需要校验规格参数 + if (!request.getSpecType()) { + if (request.getAttrValue().size() > 1) { + throw new CrmebException("单规格商品属性值不能大于1"); + } + } + + StoreProduct storeProduct = new StoreProduct(); + BeanUtils.copyProperties(request, storeProduct); + storeProduct.setId(null); + storeProduct.setAddTime(DateUtil.getNowTime()); + storeProduct.setIsShow(false); + + // 设置Acticity活动 + storeProduct.setActivity(getProductActivityStr(request.getActivity())); + + //主图 + storeProduct.setImage(systemAttachmentService.clearPrefix(storeProduct.getImage())); + + //轮播图 + storeProduct.setSliderImage(systemAttachmentService.clearPrefix(storeProduct.getSliderImage())); + // 展示图 + if (StrUtil.isNotEmpty(storeProduct.getFlatPattern())) { + storeProduct.setFlatPattern(systemAttachmentService.clearPrefix(storeProduct.getFlatPattern())); + } + + List attrValueAddRequestList = request.getAttrValue(); + //计算价格 + StoreProductAttrValueAddRequest minAttrValue = attrValueAddRequestList.stream().min(Comparator.comparing(StoreProductAttrValueAddRequest::getPrice)).get(); + storeProduct.setPrice(minAttrValue.getPrice()); + storeProduct.setOtPrice(minAttrValue.getOtPrice()); + storeProduct.setCost(minAttrValue.getCost()); + storeProduct.setStock(attrValueAddRequestList.stream().mapToInt(StoreProductAttrValueAddRequest::getStock).sum()); + + // 默认值设置 + if (ObjectUtil.isNull(request.getSort())) { + storeProduct.setSort(0); + } + if (ObjectUtil.isNull(request.getIsHot())) { + storeProduct.setIsHot(false); + } + if (ObjectUtil.isNull(request.getIsBenefit())) { + storeProduct.setIsBenefit(false); + } + if (ObjectUtil.isNull(request.getIsBest())) { + storeProduct.setIsBest(false); + } + if (ObjectUtil.isNull(request.getIsNew())) { + storeProduct.setIsNew(false); + } + if (ObjectUtil.isNull(request.getIsGood())) { + storeProduct.setIsGood(false); + } + if (ObjectUtil.isNull(request.getGiveIntegral())) { + storeProduct.setGiveIntegral(0); + } + if (ObjectUtil.isNull(request.getFicti())) { + storeProduct.setFicti(0); + } + + List addRequestList = request.getAttr(); + List attrList = addRequestList.stream().map(e -> { + StoreProductAttr attr = new StoreProductAttr(); + BeanUtils.copyProperties(e, attr); + attr.setType(Constants.PRODUCT_TYPE_NORMAL); + return attr; + }).collect(Collectors.toList()); + + List attrValueList = attrValueAddRequestList.stream().map(e -> { + StoreProductAttrValue attrValue = new StoreProductAttrValue(); + BeanUtils.copyProperties(e, attrValue); + attrValue.setId(null); + attrValue.setSuk(getSku(e.getAttrValue())); + attrValue.setQuota(0); + attrValue.setQuotaShow(0); + attrValue.setType(Constants.PRODUCT_TYPE_NORMAL); + attrValue.setImage(systemAttachmentService.clearPrefix(e.getImage())); + return attrValue; + }).collect(Collectors.toList()); + + // 处理富文本 + StoreProductDescription spd = new StoreProductDescription(); + spd.setDescription(request.getContent().length() > 0 ? systemAttachmentService.clearPrefix(request.getContent()) : ""); + spd.setType(Constants.PRODUCT_TYPE_NORMAL); + + Boolean execute = transactionTemplate.execute(e -> { + save(storeProduct); + + attrList.forEach(attr -> attr.setProductId(storeProduct.getId())); + attrValueList.forEach(value -> value.setProductId(storeProduct.getId())); + attrService.saveBatch(attrList); + storeProductAttrValueService.saveBatch(attrValueList); + + spd.setProductId(storeProduct.getId()); + storeProductDescriptionService.deleteByProductId(storeProduct.getId(), Constants.PRODUCT_TYPE_NORMAL); + storeProductDescriptionService.save(spd); + + if (CollUtil.isNotEmpty(request.getCouponIds())) { + List couponList = new ArrayList<>(); + for (Integer couponId : request.getCouponIds()) { + StoreProductCoupon spc = new StoreProductCoupon(storeProduct.getId(), couponId, DateUtil.getNowTime()); + couponList.add(spc); + } + storeProductCouponService.saveBatch(couponList); + } + return Boolean.TRUE; + }); + + return execute; + } + + /** + * 商品sku + * @param attrValue json字符串 + * @return sku + */ + private String getSku(String attrValue) { + LinkedHashMap linkedHashMap = JSONObject.parseObject(attrValue, LinkedHashMap.class, Feature.OrderedField); + Iterator> iterator = linkedHashMap.entrySet().iterator(); + List strings = CollUtil.newArrayList(); + while (iterator.hasNext()) { + Map.Entry next = iterator.next(); + strings.add(next.getValue()); + } +// List strings = jsonObject.values().stream().map(o -> (String) o).collect(Collectors.toList()); + return String.join(",", strings); + } + + /** + * 商品活动字符串 + * @param activityList 活动数组 + * @return 商品活动字符串 + */ + private String getProductActivityStr(List activityList) { + if (CollUtil.isEmpty(activityList)) { + return "0, 1, 2, 3"; + } + List activities = new ArrayList<>(); + activityList.forEach(e->{ + switch (e) { + case Constants.PRODUCT_TYPE_NORMAL_STR: + activities.add(Constants.PRODUCT_TYPE_NORMAL); + break; + case Constants.PRODUCT_TYPE_SECKILL_STR: + activities.add(Constants.PRODUCT_TYPE_SECKILL); + break; + case Constants.PRODUCT_TYPE_BARGAIN_STR: + activities.add(Constants.PRODUCT_TYPE_BARGAIN); + break; + case Constants.PRODUCT_TYPE_PINGTUAN_STR: + activities.add(Constants.PRODUCT_TYPE_PINGTUAN); + break; + } + }); + return activities.stream().map(Object::toString).collect(Collectors.joining(",")); + } + + /** + * 更新商品信息 + * @param storeProductRequest 商品参数 + * @return 更新结果 + */ + @Override + public Boolean update(StoreProductAddRequest storeProductRequest) { + if (ObjectUtil.isNull(storeProductRequest.getId())) { + throw new CrmebException("商品ID不能为空"); + } + + if (!storeProductRequest.getSpecType()) { + if (storeProductRequest.getAttrValue().size() > 1) { + throw new CrmebException("单规格商品属性值不能大于1"); + } + } + + StoreProduct tempProduct = getById(storeProductRequest.getId()); + if (ObjectUtil.isNull(tempProduct)) { + throw new CrmebException("商品不存在"); + } + if (tempProduct.getIsRecycle() || tempProduct.getIsDel()) { + throw new CrmebException("商品已删除"); + } + if (tempProduct.getIsShow()) { + throw new CrmebException("请先下架商品,再进行修改"); + } + // 如果商品是活动商品主商品不允许修改 +// if (storeSeckillService.isExistByProductId(storeProductRequest.getId())) { +// throw new CrmebException("商品作为秒杀商品的主商品,需要修改请先删除对应秒杀商品"); +// } +// if (storeBargainService.isExistByProductId(storeProductRequest.getId())) { +// throw new CrmebException("商品作为砍价商品的主商品,需要修改请先删除对应砍价商品"); +// } +// if (storeCombinationService.isExistByProductId(storeProductRequest.getId())) { +// throw new CrmebException("商品作为拼团商品的主商品,需要修改请先删除对应拼团商品"); +// } + + StoreProduct storeProduct = new StoreProduct(); + BeanUtils.copyProperties(storeProductRequest, storeProduct); + + // 设置Activity活动 + storeProduct.setActivity(getProductActivityStr(storeProductRequest.getActivity())); + + //主图 + storeProduct.setImage(systemAttachmentService.clearPrefix(storeProduct.getImage())); + + //轮播图 + storeProduct.setSliderImage(systemAttachmentService.clearPrefix(storeProduct.getSliderImage())); + + List attrValueAddRequestList = storeProductRequest.getAttrValue(); + //计算价格 + StoreProductAttrValueAddRequest minAttrValue = attrValueAddRequestList.stream().min(Comparator.comparing(StoreProductAttrValueAddRequest::getPrice)).get(); + storeProduct.setPrice(minAttrValue.getPrice()); + storeProduct.setOtPrice(minAttrValue.getOtPrice()); + storeProduct.setCost(minAttrValue.getCost()); + storeProduct.setStock(attrValueAddRequestList.stream().mapToInt(StoreProductAttrValueAddRequest::getStock).sum()); + + // attr部分 + List addRequestList = storeProductRequest.getAttr(); + List attrAddList = CollUtil.newArrayList(); + List attrUpdateList = CollUtil.newArrayList(); + addRequestList.forEach(e -> { + StoreProductAttr attr = new StoreProductAttr(); + BeanUtils.copyProperties(e, attr); + if (ObjectUtil.isNull(attr.getId())) { + attr.setProductId(storeProduct.getId()); + attr.setType(Constants.PRODUCT_TYPE_NORMAL); + attrAddList.add(attr); + } else { + attr.setIsDel(false); + attrUpdateList.add(attr); + } + }); + + // attrValue部分 + List attrValueAddList = CollUtil.newArrayList(); + List attrValueUpdateList = CollUtil.newArrayList(); + attrValueAddRequestList.forEach(e -> { + StoreProductAttrValue attrValue = new StoreProductAttrValue(); + BeanUtils.copyProperties(e, attrValue); + attrValue.setSuk(getSku(e.getAttrValue())); + attrValue.setImage(systemAttachmentService.clearPrefix(e.getImage())); + if (ObjectUtil.isNull(attrValue.getId()) || attrValue.getId().equals(0)) { + attrValue.setId(null); + attrValue.setProductId(storeProduct.getId()); + attrValue.setQuota(0); + attrValue.setQuotaShow(0); + attrValue.setType(Constants.PRODUCT_TYPE_NORMAL); + attrValueAddList.add(attrValue); + } else { + attrValue.setIsDel(false); + attrValueUpdateList.add(attrValue); + } + }); + + // 处理富文本 + StoreProductDescription spd = new StoreProductDescription(); + spd.setDescription(storeProductRequest.getContent().length() > 0 ? systemAttachmentService.clearPrefix(storeProductRequest.getContent()) : ""); + spd.setType(Constants.PRODUCT_TYPE_NORMAL); + spd.setProductId(storeProduct.getId()); + + Boolean execute = transactionTemplate.execute(e -> { + dao.updateById(storeProduct); + + // 先删除原用attr+value + attrService.deleteByProductIdAndType(storeProduct.getId(), Constants.PRODUCT_TYPE_NORMAL); + storeProductAttrValueService.deleteByProductIdAndType(storeProduct.getId(), Constants.PRODUCT_TYPE_NORMAL); + + if (CollUtil.isNotEmpty(attrAddList)) { + attrService.saveBatch(attrAddList); + } + if (CollUtil.isNotEmpty(attrUpdateList)) { + attrService.saveOrUpdateBatch(attrUpdateList); + } + + if (CollUtil.isNotEmpty(attrValueAddList)) { + storeProductAttrValueService.saveBatch(attrValueAddList); + } + if (CollUtil.isNotEmpty(attrValueUpdateList)) { + storeProductAttrValueService.saveOrUpdateBatch(attrValueUpdateList); + } + + storeProductDescriptionService.deleteByProductId(storeProduct.getId(), Constants.PRODUCT_TYPE_NORMAL); + storeProductDescriptionService.save(spd); + + if (CollUtil.isNotEmpty(storeProductRequest.getCouponIds())) { + storeProductCouponService.deleteByProductId(storeProduct.getId()); + List couponList = new ArrayList<>(); + for (Integer couponId : storeProductRequest.getCouponIds()) { + StoreProductCoupon spc = new StoreProductCoupon(storeProduct.getId(), couponId, DateUtil.getNowTime()); + couponList.add(spc); + } + storeProductCouponService.saveBatch(couponList); + } else { + storeProductCouponService.deleteByProductId(storeProduct.getId()); + } + + return Boolean.TRUE; + }); + + return execute; + } + + /** + * 商品详情 + * @param id 商品id + * @return 详情数据 + */ + @Override + public StoreProductResponse getByProductId(Integer id) { + StoreProduct storeProduct = dao.selectById(id); + if (null == storeProduct) throw new CrmebException("未找到对应商品信息"); + StoreProductResponse storeProductResponse = new StoreProductResponse(); + BeanUtils.copyProperties(storeProduct, storeProductResponse); + StoreProductAttr spaPram = new StoreProductAttr(); + spaPram.setProductId(storeProduct.getId()).setType(Constants.PRODUCT_TYPE_NORMAL); + storeProductResponse.setAttr(attrService.getByEntity(spaPram)); + + // 设置商品所参与的活动 + storeProductResponse.setActivityH5(productUtils.getProductCurrentActivity(storeProduct)); + StoreProductAttrValue spavPram = new StoreProductAttrValue(); + spavPram.setProductId(id).setType(Constants.PRODUCT_TYPE_NORMAL); + List storeProductAttrValues = storeProductAttrValueService.getByEntity(spavPram); + // 根据attrValue生成前端所需的数据 + List> attrValues = new ArrayList<>(); + + if (storeProduct.getSpecType()) { + // 后端多属性用于编辑 + StoreProductAttrResult sparPram = new StoreProductAttrResult(); + sparPram.setProductId(storeProduct.getId()).setType(Constants.PRODUCT_TYPE_NORMAL); + List attrResults = storeProductAttrResultService.getByEntity(sparPram); + if (null == attrResults || attrResults.size() == 0) { + throw new CrmebException("未找到对应属性值"); + } + StoreProductAttrResult attrResult = attrResults.get(0); + //PC 端生成skuAttrInfo + List storeProductAttrValueRequests = + com.alibaba.fastjson.JSONObject.parseArray(attrResult.getResult(), StoreProductAttrValueRequest.class); + if (null != storeProductAttrValueRequests) { + for (int i = 0; i < storeProductAttrValueRequests.size(); i++) { +// StoreProductAttrValueRequest storeProductAttrValueRequest = storeProductAttrValueRequests.get(i); + HashMap attrValue = new HashMap<>(); + String currentSku = storeProductAttrValues.get(i).getSuk(); + List hasCurrentSku = + storeProductAttrValues.stream().filter(e -> e.getSuk().equals(currentSku)).collect(Collectors.toList()); + StoreProductAttrValue currentAttrValue = hasCurrentSku.get(0); + attrValue.put("id", hasCurrentSku.size() > 0 ? hasCurrentSku.get(0).getId():0); + attrValue.put("image", currentAttrValue.getImage()); + attrValue.put("cost", currentAttrValue.getCost()); + attrValue.put("price", currentAttrValue.getPrice()); + attrValue.put("otPrice", currentAttrValue.getOtPrice()); + attrValue.put("stock", currentAttrValue.getStock()); + attrValue.put("barCode", currentAttrValue.getBarCode()); + attrValue.put("weight", currentAttrValue.getWeight()); + attrValue.put("volume", currentAttrValue.getVolume()); + attrValue.put("suk", currentSku); + attrValue.put("attrValue", JSON.parseObject(storeProductAttrValues.get(i).getAttrValue(), Feature.OrderedField)); + attrValue.put("brokerage", currentAttrValue.getBrokerage()); + attrValue.put("brokerageTwo", currentAttrValue.getBrokerageTwo()); + String[] skus = currentSku.split(","); + for (int k = 0; k < skus.length; k++) { + attrValue.put("value"+k,skus[k]); + } + attrValues.add(attrValue); + } + } + } + + // H5 端用于生成skuList + List sPAVResponses = new ArrayList<>(); + + for (StoreProductAttrValue storeProductAttrValue : storeProductAttrValues) { + StoreProductAttrValueResponse atr = new StoreProductAttrValueResponse(); + BeanUtils.copyProperties(storeProductAttrValue,atr); + sPAVResponses.add(atr); + } + storeProductResponse.setAttrValues(attrValues); + storeProductResponse.setAttrValue(sPAVResponses); +// if (null != storeProductAttrResult) { + StoreProductDescription sd = storeProductDescriptionService.getOne( + new LambdaQueryWrapper() + .eq(StoreProductDescription::getProductId, storeProduct.getId()) + .eq(StoreProductDescription::getType, Constants.PRODUCT_TYPE_NORMAL)); + if (null != sd) { + storeProductResponse.setContent(null == sd.getDescription()?"":sd.getDescription()); + } +// } + // 获取已关联的优惠券 + List storeProductCoupons = storeProductCouponService.getListByProductId(storeProduct.getId()); + if (null != storeProductCoupons && storeProductCoupons.size() > 0) { + List ids = storeProductCoupons.stream().map(StoreProductCoupon::getIssueCouponId).collect(Collectors.toList()); + List shipCoupons = storeCouponService.getByIds(ids); + storeProductResponse.setCoupons(shipCoupons); + storeProductResponse.setCouponIds(ids); + } + return storeProductResponse; + } + + /** + * 商品详情(管理端) + * @param id 商品id + * @return StoreProductInfoResponse + */ + @Override + public StoreProductInfoResponse getInfo(Integer id) { + StoreProduct storeProduct = dao.selectById(id); + if (ObjectUtil.isNull(storeProduct)) { + throw new CrmebException("未找到对应商品信息"); + } + + StoreProductInfoResponse storeProductResponse = new StoreProductInfoResponse(); + BeanUtils.copyProperties(storeProduct, storeProductResponse); + + // 设置商品所参与的活动 + List activityList = getProductActivityList(storeProduct.getActivity()); + storeProductResponse.setActivity(activityList); + + List attrList = attrService.getListByProductIdAndType(storeProduct.getId(), Constants.PRODUCT_TYPE_NORMAL); + storeProductResponse.setAttr(attrList); + + List attrValueList = storeProductAttrValueService.getListByProductIdAndType(storeProduct.getId(), Constants.PRODUCT_TYPE_NORMAL); + List valueResponseList = attrValueList.stream().map(e -> { + AttrValueResponse valueResponse = new AttrValueResponse(); + BeanUtils.copyProperties(e, valueResponse); + return valueResponse; + }).collect(Collectors.toList()); + storeProductResponse.setAttrValue(valueResponseList); + + StoreProductDescription sd = storeProductDescriptionService.getByProductIdAndType(storeProduct.getId(), Constants.PRODUCT_TYPE_NORMAL); + if (ObjectUtil.isNotNull(sd)) { + storeProductResponse.setContent(ObjectUtil.isNull(sd.getDescription()) ? "" : sd.getDescription()); + } + + // 获取已关联的优惠券 + List storeProductCoupons = storeProductCouponService.getListByProductId(storeProduct.getId()); + if (CollUtil.isNotEmpty(storeProductCoupons)) { + List ids = storeProductCoupons.stream().map(StoreProductCoupon::getIssueCouponId).collect(Collectors.toList()); + storeProductResponse.setCouponIds(ids); + } + return storeProductResponse; + } + + /** + * 商品活动字符列表 + * @param activityStr 商品活动字符串 + * @return 商品活动字符列表 + */ + private List getProductActivityList(String activityStr) { + List activityList = CollUtil.newArrayList(); + if ("0, 1, 2, 3".equals(activityStr)) { + activityList.add(Constants.PRODUCT_TYPE_NORMAL_STR); + activityList.add(Constants.PRODUCT_TYPE_SECKILL_STR); + activityList.add(Constants.PRODUCT_TYPE_BARGAIN_STR); + activityList.add(Constants.PRODUCT_TYPE_PINGTUAN_STR); + return activityList; + } + String[] split = activityStr.split(","); + for (String s : split) { + Integer integer = Integer.valueOf(s); + if (integer.equals(Constants.PRODUCT_TYPE_NORMAL)) { + activityList.add(Constants.PRODUCT_TYPE_NORMAL_STR); + } + if (integer.equals(Constants.PRODUCT_TYPE_SECKILL)) { + activityList.add(Constants.PRODUCT_TYPE_SECKILL_STR); + } + if (integer.equals(Constants.PRODUCT_TYPE_BARGAIN)) { + activityList.add(Constants.PRODUCT_TYPE_BARGAIN_STR); + } + if (integer.equals(Constants.PRODUCT_TYPE_PINGTUAN)) { + activityList.add(Constants.PRODUCT_TYPE_PINGTUAN_STR); + } + } + return activityList; + } + + /** + * 根据商品tabs获取对应类型的产品数量 + * @return List + */ + @Override + public List getTabsHeader() { + List headers = new ArrayList<>(); + StoreProductTabsHeader header1 = new StoreProductTabsHeader(0,"出售中商品",1); + StoreProductTabsHeader header2 = new StoreProductTabsHeader(0,"仓库中商品",2); + StoreProductTabsHeader header3 = new StoreProductTabsHeader(0,"已经售馨商品",3); + StoreProductTabsHeader header4 = new StoreProductTabsHeader(0,"警戒库存",4); + StoreProductTabsHeader header5 = new StoreProductTabsHeader(0,"商品回收站",5); + headers.add(header1); + headers.add(header2); + headers.add(header3); + headers.add(header4); + headers.add(header5); + for (StoreProductTabsHeader h : headers) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + switch (h.getType()) { + case 1: + //出售中(已上架) + lambdaQueryWrapper.eq(StoreProduct::getIsShow, true); + lambdaQueryWrapper.eq(StoreProduct::getIsRecycle, false); + lambdaQueryWrapper.eq(StoreProduct::getIsDel, false); + break; + case 2: + //仓库中(未上架) + lambdaQueryWrapper.eq(StoreProduct::getIsShow, false); + lambdaQueryWrapper.eq(StoreProduct::getIsRecycle, false); + lambdaQueryWrapper.eq(StoreProduct::getIsDel, false); + break; + case 3: + //已售罄 + lambdaQueryWrapper.le(StoreProduct::getStock, 0); + lambdaQueryWrapper.eq(StoreProduct::getIsRecycle, false); + lambdaQueryWrapper.eq(StoreProduct::getIsDel, false); + break; + case 4: + //警戒库存 + Integer stock = Integer.parseInt(systemConfigService.getValueByKey("store_stock")); + lambdaQueryWrapper.le(StoreProduct::getStock, stock); + lambdaQueryWrapper.eq(StoreProduct::getIsRecycle, false); + lambdaQueryWrapper.eq(StoreProduct::getIsDel, false); + break; + case 5: + //回收站 + lambdaQueryWrapper.eq(StoreProduct::getIsRecycle, true); + lambdaQueryWrapper.eq(StoreProduct::getIsDel, false); + break; + default: + break; + } + List storeProducts = dao.selectList(lambdaQueryWrapper); + h.setCount(storeProducts.size()); + } + + return headers; + } + + /** + * 后台任务批量操作库存 + */ + @Override + public void consumeProductStock() { + String redisKey = Constants.PRODUCT_STOCK_UPDATE; + Long size = redisUtil.getListSize(redisKey); + logger.info("StoreProductServiceImpl.doProductStock | size:" + size); + if (size < 1) { + return; + } + for (int i = 0; i < size; i++) { + //如果10秒钟拿不到一个数据,那么退出循环 + Object data = redisUtil.getRightPop(redisKey, 10L); + if (null == data) { + continue; + } + try { + StoreProductStockRequest storeProductStockRequest = + com.alibaba.fastjson.JSONObject.toJavaObject(com.alibaba.fastjson.JSONObject.parseObject(data.toString()), StoreProductStockRequest.class); + boolean result = doProductStock(storeProductStockRequest); + if (!result) { + redisUtil.lPush(redisKey, data); + } + } catch (Exception e) { + redisUtil.lPush(redisKey, data); + } + } + } + + /** + * 根据商品id取出二级分类 + * @param productIdStr String 商品分类 + * @return List + */ + @Override + public List getSecondaryCategoryByProductId(String productIdStr) { + List idList = new ArrayList<>(); + + if (StringUtils.isBlank(productIdStr)) { + return idList; + } + List productIdList = CrmebUtil.stringToArray(productIdStr); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.in(StoreProduct::getId, productIdList); + List productList = dao.selectList(lambdaQueryWrapper); + if (productIdList.size() < 1) { + return idList; + } + + //把所有的分类id写入集合 + for (StoreProduct storeProduct : productList) { + List categoryIdList = CrmebUtil.stringToArray(storeProduct.getCateId()); + idList.addAll(categoryIdList); + } + + //去重 + List cateIdList = idList.stream().distinct().collect(Collectors.toList()); + if (cateIdList.size() < 1) { + return idList; + } + + //取出所有的二级分类 + List categoryList = categoryService.getByIds(cateIdList); + if (categoryList.size() < 1) { + return idList; + } + + for (Category category: categoryList) { + List parentIdList = CrmebUtil.stringToArrayByRegex(category.getPath(), "/"); + if (parentIdList.size() > 2) { + Integer secondaryCategoryId = parentIdList.get(2); + if (secondaryCategoryId > 0) { + idList.add(secondaryCategoryId); + } + } + } + return idList; + } + + /** + * 根据其他平台url导入产品信息 + * @param url 待导入平台url + * @param tag 1=淘宝,2=京东,3=苏宁,4=拼多多, 5=天猫 + * @return StoreProductRequest + */ + @Override + public StoreProductRequest importProductFromUrl(String url, int tag) { + StoreProductRequest productRequest = null; + try { + switch (tag) { + case 1: + productRequest = productUtils.getTaobaoProductInfo(url,tag); + break; + case 2: + productRequest = productUtils.getJDProductInfo(url,tag); + break; + case 3: + productRequest = productUtils.getSuningProductInfo(url,tag); + break; + case 4: + productRequest = productUtils.getPddProductInfo(url,tag); + break; + case 5: + productRequest = productUtils.getTmallProductInfo(url,tag); + break; + } + } catch (Exception e) { + throw new CrmebException("确认URL和平台是否正确,以及平台费用是否足额"+e.getMessage()); + } + return productRequest; + } + + /** + * + * @param productId 商品id + * @param type 类型:recycle——回收站 delete——彻底删除 + * @return Boolean + */ + @Override + public Boolean deleteProduct(Integer productId, String type) { + StoreProduct product = getById(productId); + if (ObjectUtil.isNull(product)) { + throw new CrmebException("商品不存在"); + } + if (StrUtil.isNotBlank(type) && "recycle".equals(type) && product.getIsDel()) { + throw new CrmebException("商品已存在回收站"); + } + + LambdaUpdateWrapper lambdaUpdateWrapper = new LambdaUpdateWrapper<>(); + if (StrUtil.isNotBlank(type) && "delete".equals(type)) { + // 判断商品活动状态(秒杀、砍价、拼团) + isExistActivity(productId); + + lambdaUpdateWrapper.eq(StoreProduct::getId, productId); + lambdaUpdateWrapper.set(StoreProduct::getIsDel, true); + return update(lambdaUpdateWrapper); + } + lambdaUpdateWrapper.eq(StoreProduct::getId, productId); + lambdaUpdateWrapper.set(StoreProduct::getIsRecycle, true); + return update(lambdaUpdateWrapper); + } + + /** + * 判断商品活动状态(秒杀、砍价、拼团) + * @param productId + */ + private void isExistActivity(Integer productId) { + Boolean existActivity = false; + // 秒杀活动判断 + existActivity = storeSeckillService.isExistActivity(productId); + if (existActivity) { + throw new CrmebException("有商品关联的秒杀商品活动开启中,不能删除"); + } + // 砍价活动判断 + existActivity = storeBargainService.isExistActivity(productId); + if (existActivity) { + throw new CrmebException("有商品关联的砍价商品活动开启中,不能删除"); + } + // 拼团活动判断 + existActivity = storeCombinationService.isExistActivity(productId); + if (existActivity) { + throw new CrmebException("有商品关联的拼团商品活动开启中,不能删除"); + } + } + + /** + * 恢复已删除的商品 + * @param productId 商品id + * @return 恢复结果 + */ + @Override + public Boolean reStoreProduct(Integer productId) { + LambdaUpdateWrapper lambdaUpdateWrapper = new LambdaUpdateWrapper<>(); + lambdaUpdateWrapper.eq(StoreProduct::getId, productId); + lambdaUpdateWrapper.set(StoreProduct::getIsRecycle, false); + return update(lambdaUpdateWrapper); + } + + ///////////////////////////////////////////自定义方法 + + /** + * 扣减库存任务操作 + * @param storeProductStockRequest 扣减库存参数 + * @return 执行结果 + */ + @Override + public boolean doProductStock(StoreProductStockRequest storeProductStockRequest) { + // 获取商品本身信息 + StoreProduct existProduct = getById(storeProductStockRequest.getProductId()); + List existAttr = + storeProductAttrValueService.getListByProductIdAndAttrId( + storeProductStockRequest.getProductId(), + storeProductStockRequest.getAttrId().toString(), + storeProductStockRequest.getType()); + if (null == existProduct || null == existAttr) { // 未找到商品 + logger.info("库存修改任务未获取到商品信息"+JSON.toJSONString(storeProductStockRequest)); + return true; + } + + // 回滚商品库存/销量 并更新 + boolean isPlus = "add".equals(storeProductStockRequest.getOperationType()); + int productStock = isPlus ? existProduct.getStock() + storeProductStockRequest.getNum() : existProduct.getStock() - storeProductStockRequest.getNum(); + existProduct.setStock(productStock); + existProduct.setSales(existProduct.getSales() - storeProductStockRequest.getNum()); + updateById(existProduct); + + // 回滚sku库存 + for (StoreProductAttrValue attrValue : existAttr) { + int productAttrStock = isPlus ? attrValue.getStock() + storeProductStockRequest.getNum() : attrValue.getStock() - storeProductStockRequest.getNum(); + attrValue.setStock(productAttrStock); + attrValue.setSales(attrValue.getSales()-storeProductStockRequest.getNum()); + storeProductAttrValueService.updateById(attrValue); + } + return true; + } + + /** + * 获取复制商品配置 + * @return copyType 复制类型:1:一号通 + * copyNum 复制条数(一号通类型下有值) + */ + @Override + public MyRecord copyConfig() { + String copyType = systemConfigService.getValueByKey("system_product_copy_type"); + if (StrUtil.isBlank(copyType)) { + throw new CrmebException("请先进行采集商品配置"); + } + int copyNum = 0; + if ("1".equals(copyType)) {// 一号通 + JSONObject info = onePassService.info(); + copyNum = Optional.ofNullable(info.getJSONObject("copy").getInteger("num")).orElse(0); + } + MyRecord record = new MyRecord(); + record.set("copyType", copyType); + record.set("copyNum", copyNum); + return record; + } + + /** + * 复制平台商品 + * @param url 商品链接 + * @return MyRecord + */ + @Override + public MyRecord copyProduct(String url) { + JSONObject jsonObject = onePassService.copyGoods(url); + StoreProductRequest storeProductRequest = ProductUtils.onePassCopyTransition(jsonObject); + MyRecord record = new MyRecord(); + return record.set("info", storeProductRequest); + } + + /** + * 添加/扣减库存 + * @param id 商品id + * @param num 数量 + * @param type 类型:add—添加,sub—扣减 + */ + @Override + public Boolean operationStock(Integer id, Integer num, String type) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + if ("add".equals(type)) { + updateWrapper.setSql(StrUtil.format("stock = stock + {}", num)); + updateWrapper.setSql(StrUtil.format("sales = sales - {}", num)); + } + if ("sub".equals(type)) { + updateWrapper.setSql(StrUtil.format("stock = stock - {}", num)); + updateWrapper.setSql(StrUtil.format("sales = sales + {}", num)); + // 扣减时加乐观锁保证库存不为负 + updateWrapper.last(StrUtil.format(" and (stock - {} >= 0)", num)); + } + updateWrapper.eq("id", id); + boolean update = update(updateWrapper); + if (!update) { + throw new CrmebException("更新普通商品库存失败,商品id = " + id); + } + return update; + } + + /** + * 下架 + * @param id 商品id + */ + @Override + public Boolean offShelf(Integer id) { + StoreProduct storeProduct = getById(id); + if (ObjectUtil.isNull(storeProduct)) { + throw new CrmebException("商品不存在"); + } + if (!storeProduct.getIsShow()) { + return true; + } + + storeProduct.setIsShow(false); + Boolean execute = transactionTemplate.execute(e -> { + dao.updateById(storeProduct); + storeCartService.productStatusNotEnable(id); + // 商品下架时,清除用户收藏 + storeProductRelationService.deleteByProId(storeProduct.getId()); + return Boolean.TRUE; + }); + + return execute; + } + + /** + * 上架 + * @param id 商品id + * @return Boolean + */ + @Override + public Boolean putOnShelf(Integer id) { + StoreProduct storeProduct = getById(id); + if (ObjectUtil.isNull(storeProduct)) { + throw new CrmebException("商品不存在"); + } + if (storeProduct.getIsShow()) { + return true; + } + + // 获取商品skuid + StoreProductAttrValue tempSku = new StoreProductAttrValue(); + tempSku.setProductId(id); + tempSku.setType(Constants.PRODUCT_TYPE_NORMAL); + List skuList = storeProductAttrValueService.getByEntity(tempSku); + List skuIdList = skuList.stream().map(StoreProductAttrValue::getId).collect(Collectors.toList()); + + storeProduct.setIsShow(true); + Boolean execute = transactionTemplate.execute(e -> { + dao.updateById(storeProduct); + storeCartService.productStatusNoEnable(skuIdList); + return Boolean.TRUE; + }); + return execute; + } + + /** + * 首页商品列表 + * @param type 类型 【1 精品推荐 2 热门榜单 3首发新品 4促销单品】 + * @param pageParamRequest 分页参数 + * @return CommonPage + */ + @Override + public List getIndexProduct(Integer type, PageParamRequest pageParamRequest) { + PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(); + lambdaQueryWrapper.select(StoreProduct::getId, StoreProduct::getImage, StoreProduct::getStoreName, + StoreProduct::getPrice, StoreProduct::getOtPrice, StoreProduct::getActivity); + switch (type) { + case Constants.INDEX_RECOMMEND_BANNER: //精品推荐 + lambdaQueryWrapper.eq(StoreProduct::getIsBest, true); + break; + case Constants.INDEX_HOT_BANNER: //热门榜单 + lambdaQueryWrapper.eq(StoreProduct::getIsHot, true); + break; + case Constants.INDEX_NEW_BANNER: //首发新品 + lambdaQueryWrapper.eq(StoreProduct::getIsNew, true); + break; + case Constants.INDEX_BENEFIT_BANNER: //促销单品 + lambdaQueryWrapper.eq(StoreProduct::getIsBenefit, true); + break; + case Constants.INDEX_GOOD_BANNER: // 优选推荐 + lambdaQueryWrapper.eq(StoreProduct::getIsGood, true); + break; + } + + lambdaQueryWrapper.eq(StoreProduct::getIsDel, false); + lambdaQueryWrapper.eq(StoreProduct::getIsRecycle, false); + lambdaQueryWrapper.gt(StoreProduct::getStock, 0); + lambdaQueryWrapper.eq(StoreProduct::getIsShow, true); + + lambdaQueryWrapper.orderByDesc(StoreProduct::getSort); + lambdaQueryWrapper.orderByDesc(StoreProduct::getId); + return dao.selectList(lambdaQueryWrapper); + } + + /** + * 获取商品移动端列表 + * @param request 筛选参数 + * @param pageRequest 分页参数 + * @return List + */ + @Override + public List findH5List(ProductRequest request, PageParamRequest pageRequest) { + + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + // id、名称、图片、价格、销量、活动 + lqw.select(StoreProduct::getId, StoreProduct::getStoreName, StoreProduct::getImage, StoreProduct::getPrice, + StoreProduct::getActivity, StoreProduct::getSales, StoreProduct::getFicti, StoreProduct::getUnitName, + StoreProduct::getFlatPattern, StoreProduct::getStock); + + lqw.eq(StoreProduct::getIsRecycle, false); + lqw.eq(StoreProduct::getIsDel, false); + lqw.eq(StoreProduct::getMerId, false); + lqw.gt(StoreProduct::getStock, 0); + lqw.eq(StoreProduct::getIsShow, true); + + if (ObjectUtil.isNotNull(request.getCid()) && request.getCid() > 0) { + //查找当前类下的所有子类 + List childVoListByPid = categoryService.getChildVoListByPid(request.getCid()); + List categoryIdList = childVoListByPid.stream().map(Category::getId).collect(Collectors.toList()); + categoryIdList.add(request.getCid()); + lqw.apply(CrmebUtil.getFindInSetSql("cate_id", (ArrayList) categoryIdList)); + } + + if (StrUtil.isNotBlank(request.getKeyword())) { + if (CrmebUtil.isString2Num(request.getKeyword())) { + Integer productId = Integer.valueOf(request.getKeyword()); + lqw.like(StoreProduct::getId, productId); + } else { + lqw.like(StoreProduct::getStoreName, request.getKeyword()); + } + } + + // 排序部分 + if (StrUtil.isNotBlank(request.getSalesOrder())) { + if (request.getSalesOrder().equals(Constants.SORT_DESC)) { + lqw.last(" order by (sales + ficti) desc, sort desc, id desc"); + } else { + lqw.last(" order by (sales + ficti) asc, sort asc, id asc"); + } + } else { + if (StrUtil.isNotBlank(request.getPriceOrder())) { + if (request.getPriceOrder().equals(Constants.SORT_DESC)) { + lqw.orderByDesc(StoreProduct::getPrice); + } else { + lqw.orderByAsc(StoreProduct::getPrice); + } + } + + lqw.orderByDesc(StoreProduct::getSort); + lqw.orderByDesc(StoreProduct::getId); + } + PageHelper.startPage(pageRequest.getPage(), pageRequest.getLimit()); + return dao.selectList(lqw); + } + + /** + * 获取移动端商品详情 + * @param id 商品id + * @return StoreProduct + */ + @Override + public StoreProduct getH5Detail(Integer id) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.select(StoreProduct::getId, StoreProduct::getImage, StoreProduct::getStoreName, StoreProduct::getSliderImage, + StoreProduct::getOtPrice, StoreProduct::getStock, StoreProduct::getSales, StoreProduct::getPrice, StoreProduct::getActivity, + StoreProduct::getFicti, StoreProduct::getIsSub, StoreProduct::getStoreInfo, StoreProduct::getBrowse, StoreProduct::getUnitName); + lqw.eq(StoreProduct::getId, id); + lqw.eq(StoreProduct::getIsRecycle, false); + lqw.eq(StoreProduct::getIsDel, false); + lqw.eq(StoreProduct::getIsShow, true); + StoreProduct storeProduct = dao.selectOne(lqw); + if (ObjectUtil.isNull(storeProduct)) { + throw new CrmebException(StrUtil.format("未找到编号为{}的商品", id)); + } + + StoreProductDescription sd = storeProductDescriptionService.getOne( + new LambdaQueryWrapper() + .eq(StoreProductDescription::getProductId, storeProduct.getId()) + .eq(StoreProductDescription::getType, Constants.PRODUCT_TYPE_NORMAL)); + if (ObjectUtil.isNotNull(sd)) { + storeProduct.setContent(StrUtil.isBlank(sd.getDescription()) ? "" : sd.getDescription()); + } + return storeProduct; + } + + /** + * 获取购物车商品信息 + * @param productId 商品编号 + * @return StoreProduct + */ + @Override + public StoreProduct getCartByProId(Integer productId) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.select(StoreProduct::getId, StoreProduct::getImage, StoreProduct::getStoreName); + lqw.eq(StoreProduct::getId, productId); + return dao.selectOne(lqw); + } + + /** + * 根据日期获取新增商品数量 + * @param date 日期,yyyy-MM-dd格式 + * @return Integer + */ + @Override + public Integer getNewProductByDate(String date) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.select(StoreProduct::getId); + lqw.eq(StoreProduct::getIsDel, 0); + lqw.apply("date_format(add_time, '%Y-%m-%d') = {0}", date); + return dao.selectCount(lqw); + } + + /** + * 获取所有未删除的商品 + * @return List + */ + @Override + public List findAllProductByNotDelte() { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.select(StoreProduct::getId); + lqw.eq(StoreProduct::getIsDel, 0); + return dao.selectList(lqw); + } + + /** + * 模糊搜索商品名称 + * @param productName 商品名称 + * @return List + */ + @Override + public List likeProductName(String productName) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.select(StoreProduct::getId); + lqw.like(StoreProduct::getStoreName, productName); + lqw.eq(StoreProduct::getIsDel, 0); + return dao.selectList(lqw); + } + + /** + * 警戒库存数量 + * @return Integer + */ + @Override + public Integer getVigilanceInventoryNum() { + Integer stock = Integer.parseInt(systemConfigService.getValueByKey("store_stock")); + LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(); + lambdaQueryWrapper.le(StoreProduct::getStock, stock); + lambdaQueryWrapper.eq(StoreProduct::getIsRecycle, false); + lambdaQueryWrapper.eq(StoreProduct::getIsDel, false); + return dao.selectCount(lambdaQueryWrapper); + } + + /** + * 销售中(上架)商品数量 + * @return Integer + */ + @Override + public Integer getOnSaleNum() { + LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(); + lambdaQueryWrapper.eq(StoreProduct::getIsShow, true); + lambdaQueryWrapper.eq(StoreProduct::getIsRecycle, false); + lambdaQueryWrapper.eq(StoreProduct::getIsDel, false); + return dao.selectCount(lambdaQueryWrapper); + } + + /** + * 未销售(仓库)商品数量 + * @return Integer + */ + @Override + public Integer getNotSaleNum() { + LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(); + lambdaQueryWrapper.eq(StoreProduct::getIsShow, false); + lambdaQueryWrapper.eq(StoreProduct::getIsRecycle, false); + lambdaQueryWrapper.eq(StoreProduct::getIsDel, false); + return dao.selectCount(lambdaQueryWrapper); + } + + /** + * 获取商品排行榜 + * 1. 3个商品以内不返回数据 + * 2. TOP10 + * @return List + */ + @Override + public List getLeaderboard() { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("is_show", true); + queryWrapper.eq("is_recycle", false); + queryWrapper.eq("is_del", false); + queryWrapper.last("limit 10"); + Integer count = dao.selectCount(queryWrapper); + if (count < 4) { + return CollUtil.newArrayList(); + } + queryWrapper.select("id", "store_name", "image", "price", "ot_price", "(sales + ficti) as sales"); + queryWrapper.orderByDesc("sales"); + return dao.selectList(queryWrapper); + } + +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreSeckillMangerServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreSeckillMangerServiceImpl.java new file mode 100644 index 0000000..6779696 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreSeckillMangerServiceImpl.java @@ -0,0 +1,298 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.request.StoreSeckillMangerRequest; +import com.zbkj.common.request.StoreSeckillMangerSearchRequest; +import com.zbkj.common.response.StoreSeckillManagerResponse; +import com.github.pagehelper.PageHelper; +import com.zbkj.common.utils.DateUtil; +import com.zbkj.common.model.seckill.StoreSeckillManger; +import com.zbkj.service.dao.StoreSeckillMangerDao; +import com.zbkj.service.service.StoreSeckillMangerService; +import com.zbkj.service.service.SystemAttachmentService; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RequestBody; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * StoreSeckillMangerServiceImpl 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class StoreSeckillMangerServiceImpl extends ServiceImpl + implements StoreSeckillMangerService { + + @Resource + private StoreSeckillMangerDao dao; + + @Autowired + private SystemAttachmentService systemAttachmentService; + /** + * 列表 + * @param request 请求参数 + * @param pageParamRequest 分页类参数 + * @return List + */ + @Override + public List getList(StoreSeckillMangerSearchRequest request, PageParamRequest pageParamRequest) { + PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + + //带 StoreSeckillManger 类的多条件查询 + LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(); + if(null != request.getName()) lambdaQueryWrapper.like(StoreSeckillManger::getName, request.getName()); + if(null != request.getStatus()) lambdaQueryWrapper.eq(StoreSeckillManger::getStatus, request.getStatus()); + + lambdaQueryWrapper.orderByAsc(StoreSeckillManger::getSort); + + // 处理数据time格式 适配前端 + List responses = new ArrayList<>(); + List storeSeckillMangers = dao.selectList(lambdaQueryWrapper); + convertTime(responses, storeSeckillMangers); + return responses; + } + + /** + * 删除秒杀配置 逻辑删除 + * + * @param id 待删除id + * @return 删除结果 + */ + @Override + public boolean deleteLogicById(int id) { + return dao.deleteById(id) > 0; + } + + /** + * 检查时间段是否已经存在 + * + * @param storeSeckillManger 查询秒杀配置 + * @return 查询结果 + */ + private List checkTimeRangeUnique(StoreSeckillManger storeSeckillManger) { + LambdaQueryWrapper lqTimeUnique = Wrappers.lambdaQuery(); + lqTimeUnique.ge(StoreSeckillManger::getStartTime, storeSeckillManger.getStartTime()); + lqTimeUnique.lt(StoreSeckillManger::getStartTime, storeSeckillManger.getEndTime()); + lqTimeUnique.or(); + lqTimeUnique.le(StoreSeckillManger::getStartTime, storeSeckillManger.getStartTime()); + lqTimeUnique.ge(StoreSeckillManger::getEndTime, storeSeckillManger.getEndTime()); + lqTimeUnique.or(); + lqTimeUnique.gt(StoreSeckillManger::getEndTime, storeSeckillManger.getStartTime()); + lqTimeUnique.le(StoreSeckillManger::getEndTime, storeSeckillManger.getEndTime()); + + return dao.selectList(lqTimeUnique); + } + + /** + * 更新秒杀配置 + * + * @param storeSeckillManger 待更新秒杀配置 + * @return 更新结果 + */ + private boolean updateByCondition(StoreSeckillManger storeSeckillManger) { + StoreSeckillManger ssm = new StoreSeckillManger(); + ssm.setId(storeSeckillManger.getId()); + if(StrUtil.isNotBlank(storeSeckillManger.getName())) ssm.setName(storeSeckillManger.getName()); + if(StrUtil.isNotBlank(storeSeckillManger.getImg())) + ssm.setImg(systemAttachmentService.clearPrefix(storeSeckillManger.getImg())); + if(StrUtil.isNotBlank(storeSeckillManger.getSilderImgs())) + ssm.setSilderImgs(systemAttachmentService.clearPrefix(storeSeckillManger.getSilderImgs())); + if(null != storeSeckillManger.getStatus()) ssm.setStatus(storeSeckillManger.getStatus()); + if(null != storeSeckillManger.getStartTime()) ssm.setStartTime(storeSeckillManger.getStartTime()); + if(null != storeSeckillManger.getEndTime()) ssm.setEndTime(storeSeckillManger.getEndTime()); + return dao.updateById(ssm) > 0; + } + + /** + * 详情 + * + * @param id 配置id + * @return 查询到的结果 + */ + @Override + public StoreSeckillManagerResponse detail(int id) { + StoreSeckillManger storeSeckillManger = dao.selectById(id); + StoreSeckillManagerResponse response = new StoreSeckillManagerResponse(); + BeanUtils.copyProperties(storeSeckillManger,response); + cTime(storeSeckillManger, response); + return response; + } + + /** + * 获取正在秒杀的时间段 + * + * @return 正在秒杀的时间段 + */ + @Override + public List getCurrentSeckillManager() { + int currentHour = DateUtil.getCurrentHour(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.le(StoreSeckillManger::getStartTime,currentHour).gt(StoreSeckillManger::getEndTime,currentHour); + return dao.selectList(lqw); + } + + /** + * 更新秒杀配置状态 + * + * @param id id + * @param status 待更新状态 + * @return 结果 + */ + @Override + public Boolean updateStatus(Integer id, Boolean status) { + StoreSeckillManger ssm = new StoreSeckillManger().setId(id).setStatus(status ? 1 : 0); + return dao.updateById(ssm) > 0; + } + + /** + * 更新秒杀配置 + * @param id id + * @param storeSeckillMangerRequest 秒杀配置 + * @return 结果 + */ + @Override + public Boolean update(Integer id, StoreSeckillMangerRequest storeSeckillMangerRequest) { + StoreSeckillManger storeSeckillManger = new StoreSeckillManger(); + BeanUtils.copyProperties(storeSeckillMangerRequest, storeSeckillManger); + storeSeckillManger.setId(id); + // 对request中的time做分割后赋值给mode中的start和end属性 + setTimeRangeFromRequest(storeSeckillMangerRequest, storeSeckillManger); + List existTimes = checkTimeRangeUnique(storeSeckillManger); + if(existTimes.size() > 1){ + throw new CrmebException("当前时间段的秒杀配置已存在"); + }else if(existTimes.size() == 1) { + // 判断开始时间 结束时间 是否被包涵 + LambdaQueryWrapper startAndEndExcuseQuery = Wrappers.lambdaQuery(); + startAndEndExcuseQuery.ge(StoreSeckillManger::getStartTime,storeSeckillManger.getStartTime()) + .le(StoreSeckillManger::getEndTime,storeSeckillManger.getEndTime()); + List storeSeckillMangers = dao.selectList(startAndEndExcuseQuery); + // 时间区间改大 不存在的情况 + if(CollUtil.isEmpty(storeSeckillMangers) && storeSeckillMangers.size() == 0){ + return updateByCondition(storeSeckillManger); + // 时间区间改小 id一样且仅仅存在一条 + }else if(storeSeckillMangers.size() == 1 && storeSeckillMangers.get(0).getId().equals(id)){ + return updateByCondition(storeSeckillManger); + }else{ + throw new CrmebException("当前时间段的秒杀配置已存在"); + } + }else { + return updateByCondition(storeSeckillManger); + } + } + + /////////////////////////////////////////////////// 自定义方法 + + // 列表用 格式化time 对前端输出一致 + private void convertTime(List responses, List storeSeckillMangers) { + storeSeckillMangers.forEach(e -> { + StoreSeckillManagerResponse r = new StoreSeckillManagerResponse(); + BeanUtils.copyProperties(e, r); + cTime(e, r); + responses.add(r); + }); + } + // 详情用 格式化time 对前端输出一致 + private void cTime(StoreSeckillManger e, StoreSeckillManagerResponse r) { + String pStartTime = e.getStartTime().toString(); + String pEndTime = e.getEndTime().toString(); + String startTime = pStartTime.length() == 1 ? "0" + pStartTime : pStartTime; + String endTime = pEndTime.length() == 1 ? "0" + pEndTime : pEndTime; + r.setTime(startTime + ":00," + endTime + ":00"); + } + + /** + * 兼容时间参数 request中String格式 mode中Integer + * @param storeSeckillMangerRequest request参数 + * @param storeSeckillManger 秒杀配置实体 + */ + private void setTimeRangeFromRequest(@Validated @RequestBody StoreSeckillMangerRequest storeSeckillMangerRequest, StoreSeckillManger storeSeckillManger) { + if(!storeSeckillMangerRequest.getTime().contains(",")){ + throw new CrmebException("时间参数不正确 例如:01:00,02:00"); + } + String[] timeRage = storeSeckillMangerRequest.getTime().split(","); + Integer startTime = Integer.parseInt(timeRage[0].split(":")[0]); + Integer endTime = Integer.parseInt(timeRage[1].split(":")[0]); + storeSeckillManger.setStartTime(startTime); + storeSeckillManger.setEndTime(endTime); + } + + /** + * 获取移动端列表 (正在进行和马上开始的秒杀) + * @return List + */ + @Override + public List getH5List() { + LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(); + lambdaQueryWrapper.eq(StoreSeckillManger::getIsDel, false); + lambdaQueryWrapper.eq(StoreSeckillManger::getStatus, 1); + // 获取当前小时 + int currentHour = DateUtil.getCurrentHour(); + lambdaQueryWrapper.gt(StoreSeckillManger::getEndTime, currentHour); + lambdaQueryWrapper.orderByAsc(StoreSeckillManger::getStartTime); + List storeSeckillMangers = dao.selectList(lambdaQueryWrapper); + if (CollUtil.isEmpty(storeSeckillMangers)) { + return CollUtil.newArrayList(); + } + // 处理数据time格式 适配前端 + List responses = new ArrayList<>(); + convertTime(responses, storeSeckillMangers); + return responses; + } + + /** + * 获取所有秒杀配置 + * @return List + */ + @Override + public List getAllList() { + LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(); + lambdaQueryWrapper.orderByAsc(StoreSeckillManger::getSort); + // 处理数据time格式 适配前端 + List storeSeckillMangers = dao.selectList(lambdaQueryWrapper); + if (CollUtil.isEmpty(storeSeckillMangers)) { + return CollUtil.newArrayList(); + } + List responses = new ArrayList<>(); + convertTime(responses, storeSeckillMangers); + return responses; + } + + /** + * 添加秒杀配置 + * @param storeSeckillMangerRequest 配置参数 + */ + @Override + public Boolean saveManger(StoreSeckillMangerRequest storeSeckillMangerRequest) { + StoreSeckillManger storeSeckillManger = new StoreSeckillManger(); + BeanUtils.copyProperties(storeSeckillMangerRequest, storeSeckillManger); + // 对request中的time做分割后赋值给mode中的start和end属性 + setTimeRangeFromRequest(storeSeckillMangerRequest, storeSeckillManger); + List storeSeckillMangers = checkTimeRangeUnique(storeSeckillManger); + if (storeSeckillMangers.size() > 0) { + throw new CrmebException("当前时间段的秒杀配置已存在"); + } + storeSeckillManger.setImg(systemAttachmentService.clearPrefix(storeSeckillManger.getImg())); + storeSeckillManger.setSilderImgs(systemAttachmentService.clearPrefix(storeSeckillManger.getSilderImgs())); + return save(storeSeckillManger); + } +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreSeckillServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreSeckillServiceImpl.java new file mode 100644 index 0000000..dc92e53 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreSeckillServiceImpl.java @@ -0,0 +1,954 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.model.product.StoreProduct; +import com.zbkj.common.model.product.StoreProductAttr; +import com.zbkj.common.model.product.StoreProductAttrValue; +import com.zbkj.common.model.product.StoreProductDescription; +import com.zbkj.common.model.record.UserVisitRecord; +import com.zbkj.common.model.seckill.StoreSeckill; +import com.zbkj.common.model.seckill.StoreSeckillManger; +import com.zbkj.common.model.user.User; +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.request.*; +import com.zbkj.common.response.*; +import com.zbkj.common.utils.CrmebUtil; +import com.zbkj.common.utils.DateUtil; +import com.zbkj.common.utils.RedisUtil; +import com.github.pagehelper.Page; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.zbkj.service.dao.StoreSeckillDao; +import com.zbkj.service.service.*; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.support.TransactionTemplate; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +/** + * StoreSeckillService 实现类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class StoreSeckillServiceImpl extends ServiceImpl + implements StoreSeckillService { + + private static final Logger logger = LoggerFactory.getLogger(StoreSeckillServiceImpl.class); + + @Resource + private StoreSeckillDao dao; + + @Autowired + private SystemAttachmentService systemAttachmentService; + + @Autowired + private StoreProductDescriptionService storeProductDescriptionService; + + @Autowired + private StoreSeckillMangerService storeSeckillMangerService; + + @Autowired + private UserService userService; + + @Autowired + private StoreProductRelationService storeProductRelationService; + + @Autowired + private StoreProductService storeProductService; + + @Autowired + private StoreProductAttrService attrService; + + @Autowired + private StoreProductAttrValueService storeProductAttrValueService; + + @Autowired + private StoreProductAttrResultService storeProductAttrResultService; + + @Autowired + private RedisUtil redisUtil; + + @Autowired + private TransactionTemplate transactionTemplate; + + @Autowired + private UserVisitRecordService userVisitRecordService; + + /** + * 列表 + * @param request 请求参数 + * @param pageParamRequest 分页类参数 + * @return List + */ + @Override + public PageInfo getList(StoreSeckillSearchRequest request, PageParamRequest pageParamRequest) { + //带 StoreSeckill 类的多条件查询 + Page storeSeckillProductPage = PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + + LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(); + StoreSeckill model = new StoreSeckill(); + BeanUtils.copyProperties(request, model); + if (null != request.getStatus()) { + lambdaQueryWrapper.eq(StoreSeckill::getStatus,request.getStatus()); + } + if (StringUtils.isNotBlank(request.getKeywords())) { + lambdaQueryWrapper.like(StoreSeckill::getTitle,request.getKeywords()) + .or().like(StoreSeckill::getId,request.getKeywords()); + } + if (null != request.getTimeId()) { + lambdaQueryWrapper.eq(StoreSeckill::getTimeId,request.getTimeId()); + } + lambdaQueryWrapper.eq(StoreSeckill::getIsDel,false); + lambdaQueryWrapper.orderByDesc(StoreSeckill::getSort).orderByDesc(StoreSeckill::getId); + List storeProducts = dao.selectList(lambdaQueryWrapper); + List storeProductResponses = new ArrayList<>(); + + // 当前正在秒杀的timeId 正确的数据这里应该只会获得一条数据 + List currentSeckillManager = storeSeckillMangerService.getCurrentSeckillManager(); + Integer currentSkillTimeId = 0; +// String currentSkillTime = null; + if (null != currentSeckillManager && currentSeckillManager.size() > 0) { + currentSkillTimeId = currentSeckillManager.get(0).getId(); + } + + // 查询所有秒杀配置后根据关系添加到秒杀商品列表中 + List storeSeckillMangerServiceList = storeSeckillMangerService.getAllList(); + for (StoreSeckill product : storeProducts) { + StoreSeckillResponse storeProductResponse = new StoreSeckillResponse(); + BeanUtils.copyProperties(product, storeProductResponse); + storeProductResponse.setStatusName(getStatusName(product, currentSkillTimeId)); + storeProductResponse.setImages(CrmebUtil.stringToArrayStr(product.getImages())); + + StoreProductAttr storeProductAttrPram = new StoreProductAttr(); + storeProductAttrPram.setProductId(product.getId()).setType(Constants.PRODUCT_TYPE_SECKILL); + List attrs = attrService.getByEntity(storeProductAttrPram); + + if (attrs.size() > 0) { + storeProductResponse.setAttr(attrs); + } + // 处理富文本 + StoreProductDescription sd = storeProductDescriptionService.getOne( + new LambdaQueryWrapper() + .eq(StoreProductDescription::getProductId, product.getId()) + .eq(StoreProductDescription::getType, Constants.PRODUCT_TYPE_SECKILL)); + if (null != sd) { + storeProductResponse.setContent(null == sd.getDescription()?"":sd.getDescription()); + } + // 添加秒杀配置关系 + List hasTimeIds = storeSeckillMangerServiceList.stream() + .filter(e -> e.getId().equals(storeProductResponse.getTimeId())).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(hasTimeIds)) { + storeProductResponse.setStoreSeckillManagerResponse(hasTimeIds.get(0)); + storeProductResponse.setCurrentTimeId(currentSkillTimeId); + storeProductResponse.setCurrentTime(hasTimeIds.get(0).getTime()); + } + storeProductResponses.add(storeProductResponse); + } + // 多条sql查询处理分页正确 + return CommonPage.copyPageInfo(storeSeckillProductPage, storeProductResponses); + } + + /** + * 获取秒杀状态描述 + * @param seckill 秒杀商品 + * @param currentSkillTimeId 当前时间秒杀时间端id + * @return 秒杀状态描述 + */ + private String getStatusName(StoreSeckill seckill, Integer currentSkillTimeId) { + if (seckill.getStatus().equals(0)) { + return "已关闭"; + } + + // 获取当前时间 + DateTime dateTime = cn.hutool.core.date.DateUtil.date(); + // 开始、结束时间 + String startTimeStr = cn.hutool.core.date.DateUtil.date(seckill.getStartTime()).toString(Constants.DATE_FORMAT_DATE); + String stopTimeStr = cn.hutool.core.date.DateUtil.date(seckill.getStopTime()).toString(Constants.DATE_FORMAT_DATE); + DateTime startDate = cn.hutool.core.date.DateUtil.parseDate(startTimeStr + " 00:00:00"); + DateTime stopDate = cn.hutool.core.date.DateUtil.parse(stopTimeStr + " 23:59:59"); + + // 比较开始时间(日期) + if (dateTime.compareTo(startDate) < 0) {// 当前时间 < 开始时间 + return "未开始"; + } + if (dateTime.compareTo(startDate) >= 0 && dateTime.compareTo(stopDate) <= 0) { + // 开始时间 <= 当前时间 <= 结束时间 + if (seckill.getTimeId().equals(currentSkillTimeId)) { + return "进行中"; + } + return "未开始"; + } + // 当前时间 > 结束时间 + return "已结束"; + } + + /** + * 逻辑删除 + * + * @param id 秒杀id + * @return 删除结果 + */ + @Override + public Boolean deleteById(Integer id) { + StoreSeckill skill = new StoreSeckill().setId(id).setIsDel(true); + return dao.updateById(skill) > 0; + } + + /** + * 新增秒杀商品 + * + * @param request 待新增秒杀商品 + * @return 新增结果 + */ + @Override + public Boolean saveSeckill(StoreSeckillAddRequest request) { + request.getAttrValue().forEach(e -> { + if ((ObjectUtil.isNull(e.getQuota()) || e.getQuota() <= 0)) { + throw new CrmebException("请正确输入限量"); + } + }); + + if (isExistTile(request.getTitle())) { + throw new CrmebException("活动标题已经存在"); + } + + StoreSeckill storeSeckill = new StoreSeckill(); + BeanUtils.copyProperties(request, storeSeckill); + // 主图 + storeSeckill.setImage(systemAttachmentService.clearPrefix(storeSeckill.getImage())); + // 轮播图 + storeSeckill.setImages(systemAttachmentService.clearPrefix(storeSeckill.getImages())); + // 设置秒杀开始时间和结束时间 + storeSeckill.setStartTime(DateUtil.strToDate(request.getStartTime(), Constants.DATE_FORMAT_DATE)); + storeSeckill.setStopTime(DateUtil.strToDate(request.getStopTime(), Constants.DATE_FORMAT_DATE)); + + //计算价格 + List attrValueAddRequestList = request.getAttrValue(); + //计算价格 + StoreProductAttrValueAddRequest minAttrValue = attrValueAddRequestList.stream().min(Comparator.comparing(StoreProductAttrValueAddRequest::getPrice)).get(); + storeSeckill.setPrice(minAttrValue.getPrice()); + storeSeckill.setOtPrice(minAttrValue.getOtPrice()); + storeSeckill.setCost(minAttrValue.getCost()); + int quota = attrValueAddRequestList.stream().mapToInt(StoreProductAttrValueAddRequest::getQuota).sum(); + storeSeckill.setStock(quota); + storeSeckill.setQuota(quota); + storeSeckill.setQuotaShow(quota); + storeSeckill.setSort(0); + if (ObjectUtil.isNotNull(request.getSort())) { + storeSeckill.setSort(request.getSort()); + } + + List addRequestList = request.getAttr(); + List attrList = addRequestList.stream().map(e -> { + StoreProductAttr attr = new StoreProductAttr(); + BeanUtils.copyProperties(e, attr); + attr.setType(Constants.PRODUCT_TYPE_SECKILL); + return attr; + }).collect(Collectors.toList()); + + List attrValueList = attrValueAddRequestList.stream().map(e -> { + StoreProductAttrValue attrValue = new StoreProductAttrValue(); + BeanUtils.copyProperties(e, attrValue); + attrValue.setId(null); + attrValue.setSuk(e.getSuk()); + attrValue.setQuota(e.getQuota()); + attrValue.setQuotaShow(e.getQuota()); + attrValue.setType(Constants.PRODUCT_TYPE_SECKILL); + attrValue.setImage(systemAttachmentService.clearPrefix(e.getImage())); + return attrValue; + }).collect(Collectors.toList()); + + // 处理富文本 + StoreProductDescription spd = new StoreProductDescription(); + spd.setDescription(request.getContent().length() > 0 ? systemAttachmentService.clearPrefix(request.getContent()) : ""); + spd.setType(Constants.PRODUCT_TYPE_SECKILL); + + Boolean execute = transactionTemplate.execute(e -> { + save(storeSeckill); + + attrList.forEach(attr -> attr.setProductId(storeSeckill.getId())); + attrValueList.forEach(value -> value.setProductId(storeSeckill.getId())); + attrService.saveBatch(attrList); + storeProductAttrValueService.saveBatch(attrValueList); + + spd.setProductId(storeSeckill.getId()); + storeProductDescriptionService.deleteByProductId(storeSeckill.getId(), Constants.PRODUCT_TYPE_SECKILL); + storeProductDescriptionService.save(spd); + return Boolean.TRUE; + }); + + return execute; + } + + // 是否存在秒杀活动标题查找 + private Boolean isExistTile(String title) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.select(StoreSeckill::getId); + lqw.eq(StoreSeckill::getTitle, title); + lqw.eq(StoreSeckill::getIsDel, false); + StoreSeckill storeSeckill = dao.selectOne(lqw); + return ObjectUtil.isNotNull(storeSeckill); + } + + /** + * 更新秒杀商品 + * + * @param request 待更新秒杀商品 + * @return 更新结果 + */ + @Override + public Boolean updateSeckill(StoreSeckillAddRequest request) { + + StoreSeckill storeSeckill = getById(request.getId()); + if (ObjectUtil.isNull(storeSeckill) || storeSeckill.getIsDel()) { + throw new CrmebException("秒杀商品不存在"); + } + + if (storeSeckill.getStatus().equals(1)) { + throw new CrmebException("请先关闭秒杀商品,再修改商品信息"); + } + + + StoreSeckill seckill = new StoreSeckill(); + BeanUtils.copyProperties(request, seckill); + seckill.setStartTime(DateUtil.strToDate(request.getStartTime(),Constants.DATE_FORMAT_DATE)); + seckill.setStopTime(DateUtil.strToDate(request.getStopTime(),Constants.DATE_FORMAT_DATE)); + + //主图 + seckill.setImage(systemAttachmentService.clearPrefix(seckill.getImage())); + + //轮播图 + seckill.setImages(systemAttachmentService.clearPrefix(seckill.getImages())); + + //计算价格 + List attrValueAddRequestList = request.getAttrValue(); + StoreProductAttrValueAddRequest minAttrValue = attrValueAddRequestList.stream().min(Comparator.comparing(StoreProductAttrValueAddRequest::getPrice)).get(); + seckill.setPrice(minAttrValue.getPrice()); + seckill.setOtPrice(minAttrValue.getOtPrice()); + seckill.setCost(minAttrValue.getCost()); + int quota = attrValueAddRequestList.stream().mapToInt(StoreProductAttrValueAddRequest::getQuota).sum(); + seckill.setStock(quota); + seckill.setQuota(quota); + seckill.setQuotaShow(quota); + + List addRequestList = request.getAttr(); + List attrAddList = CollUtil.newArrayList(); + List attrUpdateList = CollUtil.newArrayList(); + addRequestList.forEach(e -> { + StoreProductAttr attr = new StoreProductAttr(); + BeanUtils.copyProperties(e, attr); + if (ObjectUtil.isNull(attr.getId())) { + attr.setProductId(seckill.getId()); + attr.setType(Constants.PRODUCT_TYPE_SECKILL); + attrAddList.add(attr); + } else { + attr.setProductId(seckill.getId()); + attr.setIsDel(false); + attrUpdateList.add(attr); + } + }); + + // attrValue部分 + List attrValueAddList = CollUtil.newArrayList(); + List attrValueUpdateList = CollUtil.newArrayList(); + attrValueAddRequestList.forEach(e -> { + StoreProductAttrValue attrValue = new StoreProductAttrValue(); + BeanUtils.copyProperties(e, attrValue); + attrValue.setSuk(e.getSuk()); + attrValue.setImage(systemAttachmentService.clearPrefix(e.getImage())); + if (ObjectUtil.isNull(attrValue.getId())) { + attrValue.setProductId(seckill.getId()); + attrValue.setQuota(e.getQuota()); + attrValue.setQuotaShow(e.getQuota()); + attrValue.setType(Constants.PRODUCT_TYPE_SECKILL); + attrValueAddList.add(attrValue); + } else { + attrValue.setProductId(seckill.getId()); + attrValue.setIsDel(false); + attrValueUpdateList.add(attrValue); + } + }); + + // 处理富文本 + StoreProductDescription spd = new StoreProductDescription(); + spd.setDescription(request.getContent().length() > 0 ? systemAttachmentService.clearPrefix(request.getContent()) : ""); + spd.setType(Constants.PRODUCT_TYPE_SECKILL); + spd.setProductId(seckill.getId()); + + Boolean execute = transactionTemplate.execute(e -> { + dao.updateById(seckill); + + // 先删除原用attr+value + attrService.deleteByProductIdAndType(seckill.getId(), Constants.PRODUCT_TYPE_SECKILL); + storeProductAttrValueService.deleteByProductIdAndType(seckill.getId(), Constants.PRODUCT_TYPE_SECKILL); + + if (CollUtil.isNotEmpty(attrAddList)) { + attrService.saveBatch(attrAddList); + } + if (CollUtil.isNotEmpty(attrUpdateList)) { + attrService.saveOrUpdateBatch(attrUpdateList); + } + + if (CollUtil.isNotEmpty(attrValueAddList)) { + storeProductAttrValueService.saveBatch(attrValueAddList); + } + if (CollUtil.isNotEmpty(attrValueUpdateList)) { + storeProductAttrValueService.saveOrUpdateBatch(attrValueUpdateList); + } + + storeProductDescriptionService.deleteByProductId(seckill.getId(), Constants.PRODUCT_TYPE_SECKILL); + storeProductDescriptionService.save(spd); + + return Boolean.TRUE; + }); + return execute; + } + + /** + * 更新秒杀状态 + * + * @param secKillId 秒杀id + * @param status 秒杀状态 + * @return 更新结果 + */ + @Override + public Boolean updateSecKillStatus(int secKillId, boolean status) { + StoreSeckill seckill = getById(secKillId); + if (ObjectUtil.isNull(seckill) || seckill.getIsDel()) { + throw new CrmebException("秒杀商品不存在"); + } + if (status) { + // 判断商品是否存在 + StoreProduct product = storeProductService.getById(seckill.getProductId()); + if (ObjectUtil.isNull(product)) { + throw new CrmebException("关联的商品已删除,无法开启活动"); + } + } + + StoreSeckill storeSeckill = new StoreSeckill().setId(secKillId).setStatus(status?1:0); + return dao.updateById(storeSeckill) > 0; + } + + /** + * 秒杀商品详情 + * + * @param skillId 秒杀商品id + * @return 详情 + */ + @Override + public StoreSeckillDetailResponse getDetailH5(Integer skillId) { + // 获取秒杀商品信息 + StoreSeckill storeSeckill = dao.selectById(skillId); + if (ObjectUtil.isNull(storeSeckill) || storeSeckill.getIsDel()) { + throw new CrmebException("未找到对应秒杀商品信息"); + } + if (storeSeckill.getStatus().equals(0)) { + throw new CrmebException("秒杀商品已下架"); + } + StoreSeckillDetailResponse productDetailResponse = new StoreSeckillDetailResponse(); + + SecKillDetailH5Response detailH5Response = new SecKillDetailH5Response(); + BeanUtils.copyProperties(storeSeckill, detailH5Response); + detailH5Response.setStoreName(storeSeckill.getTitle()); + detailH5Response.setSliderImage(storeSeckill.getImages()); + detailH5Response.setStoreInfo(storeSeckill.getInfo()); + // 详情 + StoreProductDescription sd = storeProductDescriptionService.getOne( + new LambdaQueryWrapper() + .eq(StoreProductDescription::getProductId, skillId) + .eq(StoreProductDescription::getType, Constants.PRODUCT_TYPE_SECKILL)); + if (ObjectUtil.isNotNull(sd)) { + detailH5Response.setContent(ObjectUtil.isNull(sd.getDescription()) ? "" : sd.getDescription()); + } + // 获取主商品信息 + StoreProduct storeProduct = storeProductService.getById(storeSeckill.getProductId()); + // 主商品状态 + if (storeProduct.getIsDel()) { + productDetailResponse.setMasterStatus("delete"); + } else if (!storeProduct.getIsShow()) { + productDetailResponse.setMasterStatus("soldOut"); + } else if (storeProduct.getStock() <= 0) { + productDetailResponse.setMasterStatus("sellOut"); + } else { + productDetailResponse.setMasterStatus("normal"); + } + + // 秒杀销量 = 原商品销量(包含虚拟销量) + detailH5Response.setSales(storeProduct.getSales()); + detailH5Response.setFicti(storeProduct.getFicti()); + + StoreSeckillManger seckillManger = storeSeckillMangerService.getById(storeSeckill.getTimeId()); + if (ObjectUtil.isNotNull(seckillManger)) { + int secKillEndSecondTimestamp = DateUtil.getSecondTimestamp(DateUtil.nowDateTime("yyyy-MM-dd " + seckillManger.getEndTime() + ":00:00")); + detailH5Response.setTimeSwap(secKillEndSecondTimestamp + ""); + } + Integer seckillStatus = getSeckillStatus(storeSeckill, seckillManger); + detailH5Response.setSeckillStatus(seckillStatus); + productDetailResponse.setStoreSeckill(detailH5Response); + + // 获取秒杀商品规格 + List attrList = attrService.getListByProductIdAndType(skillId, Constants.PRODUCT_TYPE_SECKILL); + // 根据制式设置attr属性 + productDetailResponse.setProductAttr(attrList); + + // 根据制式设置sku属性 + HashMap skuMap = CollUtil.newHashMap(); + // 获取主商品sku + List storeProductAttrValues = storeProductAttrValueService.getListByProductIdAndType(storeSeckill.getProductId(), Constants.PRODUCT_TYPE_NORMAL); + // 获取秒杀商品sku + List seckillAttrValues = storeProductAttrValueService.getListByProductIdAndType(storeSeckill.getId(), Constants.PRODUCT_TYPE_SECKILL); + + for (int i = 0; i < storeProductAttrValues.size(); i++) { + StoreProductAttrValueResponse atr = new StoreProductAttrValueResponse(); + StoreProductAttrValue productAttrValue = storeProductAttrValues.get(i); + List valueList = seckillAttrValues.stream().filter(e -> productAttrValue.getSuk().equals(e.getSuk())).collect(Collectors.toList()); + if (CollUtil.isEmpty(valueList)) { + BeanUtils.copyProperties(productAttrValue, atr); + } else { + BeanUtils.copyProperties(valueList.get(0), atr); + } + skuMap.put(atr.getSuk(), atr); + } + productDetailResponse.setProductValue(skuMap); + + // 设置点赞和收藏 + User user = userService.getInfo(); + if (ObjectUtil.isNotNull(user)) { + productDetailResponse.setUserCollect(storeProductRelationService.getLikeOrCollectByUser(user.getUid(), detailH5Response.getProductId(),false).size() > 0); + } else { + productDetailResponse.setUserCollect(false); + } + + // 保存用户访问记录 + UserVisitRecord visitRecord = new UserVisitRecord(); + visitRecord.setDate(cn.hutool.core.date.DateUtil.date().toString("yyyy-MM-dd")); + visitRecord.setUid(userService.getUserId()); + visitRecord.setVisitType(3); + userVisitRecordService.save(visitRecord); + return productDetailResponse; + } + + /** + * 获取秒杀状态 + * @param storeSeckill 秒杀商品 + * @return 秒杀状态 + */ + private Integer getSeckillStatus(StoreSeckill storeSeckill, StoreSeckillManger seckillManger) { + if (storeSeckill.getStatus() == 0) { + // 关闭 + return 0; + } + if (storeSeckill.getStatus() == 1) { + String ymdStart = cn.hutool.core.date.DateUtil.date(storeSeckill.getStartTime()).toString(Constants.DATE_FORMAT_DATE); + String startTimeStr = seckillManger.getStartTime() < 10 ? "0" + seckillManger.getStartTime() : seckillManger.getStartTime().toString(); + DateTime startTime = cn.hutool.core.date.DateUtil.parse(ymdStart + " " + startTimeStr + ":00:00"); + Date nowDateTime = DateUtil.nowDateTime(); + if (nowDateTime.compareTo(startTime) <= 0) { + // 即将开始 + return 1; + } + String ymdEnd = cn.hutool.core.date.DateUtil.date(storeSeckill.getStopTime()).toString(Constants.DATE_FORMAT_DATE); + String endTimeStr = seckillManger.getStartTime() < 10 ? "0" + seckillManger.getEndTime() : seckillManger.getEndTime().toString(); + DateTime stopTime = cn.hutool.core.date.DateUtil.parse(ymdEnd + " " + endTimeStr + ":00:00"); + if (nowDateTime.compareTo(stopTime) >= 0) { + // 已结束 + return -1; + } + if (nowDateTime.compareTo(startTime) > 0 && nowDateTime.compareTo(stopTime) < 0) { + // 进行中 + return 2; + } + } + + return -2; + } + + /** + * 秒杀商品详情 管理端 + * + * @param skillId 秒杀id + * @return 详情数据 + */ + @Override + public StoreProductInfoResponse getDetailAdmin(Integer skillId) { + StoreSeckill storeSeckill = dao.selectById(skillId); + if (ObjectUtil.isNull(storeSeckill) || storeSeckill.getIsDel()) { + throw new CrmebException("未找到对应商品信息"); + } + StoreProductInfoResponse infoResponse = new StoreProductInfoResponse(); + BeanUtils.copyProperties(storeSeckill, infoResponse); + + infoResponse.setStoreName(storeSeckill.getTitle()); + infoResponse.setStoreInfo(storeSeckill.getInfo()); + infoResponse.setSliderImage(String.join(",",storeSeckill.getImages())); + infoResponse.setStartTimeStr(cn.hutool.core.date.DateUtil.format(storeSeckill.getStartTime(), Constants.DATE_FORMAT_DATE)); + infoResponse.setStopTimeStr(cn.hutool.core.date.DateUtil.format(storeSeckill.getStopTime(), Constants.DATE_FORMAT_DATE)); + infoResponse.setProductId(storeSeckill.getProductId()); + + // 查询attr + List attrList = attrService.getListByProductIdAndType(skillId, Constants.PRODUCT_TYPE_SECKILL); + infoResponse.setAttr(attrList); + + // 注意:数据瓶装步骤:分别查询秒杀和商品本山信息组装sku信息之后,再对比sku属性是否相等来赋值是否秒杀sku信息 + List seckillAttrValueList = storeProductAttrValueService.getListByProductIdAndType(skillId, Constants.PRODUCT_TYPE_SECKILL); + // 查询主商品sku + List attrValueList = storeProductAttrValueService.getListByProductIdAndType(storeSeckill.getProductId(), Constants.PRODUCT_TYPE_NORMAL); + + List valueResponseList = attrValueList.stream().map(e -> { + AttrValueResponse valueResponse = new AttrValueResponse(); + Integer id = 0; + for (StoreProductAttrValue value : seckillAttrValueList) { + if (value.getSuk().equals(e.getSuk())) { + id = value.getId(); + BeanUtils.copyProperties(value, valueResponse); + break; + } + } + if (id.equals(0)) { + BeanUtils.copyProperties(e, valueResponse); + valueResponse.setId(null); + } else { + valueResponse.setId(id); + } + return valueResponse; + }).collect(Collectors.toList()); + infoResponse.setAttrValue(valueResponseList); + + StoreProductDescription sd = storeProductDescriptionService.getByProductIdAndType(skillId, Constants.PRODUCT_TYPE_SECKILL); + if (ObjectUtil.isNotNull(sd)) { + infoResponse.setContent(ObjectUtil.isNull(sd.getDescription()) ? "" : sd.getDescription()); + } + return infoResponse; + } + + /** + * 移动端 获取秒杀配置 + * 获取当前时间段 + 下边的6个商品 + * @return 秒杀配置 + */ + @Override + public List getForH5Index() { + List response = new ArrayList<>(); + int currentHour = DateUtil.getCurrentHour(); + // 获取所有的秒杀配置 + List skillManagerList = storeSeckillMangerService.getH5List(); + // 根据当前时间过滤 仅处理正在进行和马上开始的秒杀 + skillManagerList.forEach(e->{ + // 根据当前秒杀配置id查询是否有商品正在参与次时间段 + Integer proNum = getCountByTimeId(e.getId()); + if (proNum > 0) { + int secKillEndSecondTimestamp = DateUtil.getSecondTimestamp(DateUtil.nowDateTime("yyyy-MM-dd " + e.getEndTime() + ":00:00")); + SecKillResponse r = new SecKillResponse(e.getId(),e.getSilderImgs(),e.getStatusName(), + e.getTime(),e.getKillStatus(),secKillEndSecondTimestamp+""); + if (e.getStartTime() <= currentHour && currentHour < e.getEndTime()) { + r.setIsCheck(true); + } + response.add(r); + } + }); + + return response; + } + + /** + * 获取秒杀时段商品数量 + * @param timeId 秒杀时段id + * @return Integer + */ + private Integer getCountByTimeId(Integer timeId) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StoreSeckill::getStatus,1); + lqw.eq(StoreSeckill::getIsDel,false); + lqw.eq(StoreSeckill::getIsShow,true); + lqw.eq(StoreSeckill::getTimeId,timeId); + String currentDate = DateUtil.nowDate(Constants.DATE_FORMAT_DATE); + lqw.le(StoreSeckill::getStartTime, currentDate); + lqw.ge(StoreSeckill::getStopTime, currentDate); + lqw.orderByDesc(StoreSeckill::getId); + return dao.selectCount(lqw); + } + + /** + * 根据秒杀时间段查询已配置的秒杀商品 + * + * @param timeId 秒杀id + * @return 秒杀中的商品 + */ + @Override + public List getKillListByTimeId(String timeId, PageParamRequest pageParamRequest) { + PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + String currentDate = DateUtil.nowDate(Constants.DATE_FORMAT_DATE); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StoreSeckill::getStatus,1); + lqw.eq(StoreSeckill::getIsDel,false); + lqw.eq(StoreSeckill::getIsShow,true); + lqw.eq(StoreSeckill::getTimeId,timeId); + lqw.le(StoreSeckill::getStartTime, currentDate); + lqw.ge(StoreSeckill::getStopTime,currentDate); + lqw.orderByDesc(StoreSeckill::getId); + List storeSeckills = dao.selectList(lqw); + if (CollUtil.isEmpty(storeSeckills)) { + return CollUtil.newArrayList(); + } + List responses = new ArrayList<>(); + storeSeckills.forEach(e->{ + StoreSecKillH5Response response = new StoreSecKillH5Response(); + BeanUtils.copyProperties(e, response); + response.setPercent(CrmebUtil.percentInstanceIntVal(e.getQuotaShow() - e.getQuota(), e.getQuotaShow())); + responses.add(response); + }); + return responses; + } + + /** + * 根据商品id查询正在秒杀的商品信息 + * + * @param productId 商品id + * @return 正在参与的秒杀信息 + */ + @Override + public List getCurrentSecKillByProductId(Integer productId) { + List result = new ArrayList<>(); + // 获取当前时间段的秒杀 + PageParamRequest pageParamRequest = new PageParamRequest(); + pageParamRequest.setLimit(20); + List storeSeckillManagerResponses = storeSeckillMangerService.getAllList(); + List currentSsmr = + storeSeckillManagerResponses.stream().filter(e -> e.getKillStatus() == 2).collect(Collectors.toList()); + if (currentSsmr.size() == 0) { + return result; + } + List skillManagerIds = currentSsmr.stream().map(StoreSeckillManagerResponse::getId).collect(Collectors.toList()); + // 获取正在秒杀的商品信息 + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StoreSeckill::getProductId,productId); + lqw.eq(StoreSeckill::getIsDel,false); + lqw.eq(StoreSeckill::getStatus, 1); + lqw.in(StoreSeckill::getTimeId, skillManagerIds); + result = dao.selectList(lqw); + return result; + } + + /** + * 后台任务批量操作库存 + */ + @Override + public void consumeProductStock() { + String redisKey = Constants.PRODUCT_SECKILL_STOCK_UPDATE; + Long size = redisUtil.getListSize(redisKey); + logger.info("StoreProductServiceImpl.doProductStock | size:" + size); + if (size < 1) { + return; + } + for (int i = 0; i < size; i++) { + //如果10秒钟拿不到一个数据,那么退出循环 + Object data = redisUtil.getRightPop(redisKey, 10L); + if (null == data) { + continue; + } + try{ + StoreProductStockRequest storeProductStockRequest = + com.alibaba.fastjson.JSONObject.toJavaObject(com.alibaba.fastjson.JSONObject.parseObject(data.toString()), StoreProductStockRequest.class); + boolean result = doProductStock(storeProductStockRequest); + if (!result) { + redisUtil.lPush(redisKey, data); + } + }catch (Exception e) { + redisUtil.lPush(redisKey, data); + } + } + } + + /** + * 商品是否存在秒杀活动 + * @param productId 商品编号 + * @return Boolean + */ + @Override + public Boolean isExistActivity(Integer productId) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StoreSeckill::getProductId, productId); + lqw.eq(StoreSeckill::getIsDel, false); + List seckillList = dao.selectList(lqw); + if (CollUtil.isEmpty(seckillList)) { + return false; + } + // 判断关联的商品是否处于活动开启状态 + List list = seckillList.stream().filter(i -> i.getStatus().equals(1)).collect(Collectors.toList()); + return CollUtil.isNotEmpty(list); + } + + /** + * 查询带异常 + * @param id 秒杀商品id + * @return StoreSeckill + */ + @Override + public StoreSeckill getByIdException(Integer id) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StoreSeckill::getId, id); + lqw.eq(StoreSeckill::getIsDel, false); + lqw.eq(StoreSeckill::getIsShow, true); + StoreSeckill storeSeckill = dao.selectOne(lqw); + if (ObjectUtil.isNull(storeSeckill) || storeSeckill.getIsDel()) throw new CrmebException("秒杀商品不存在或以删除"); + return storeSeckill; + } + + /** + * 添加(退货)/扣减库存 + * @param id 秒杀商品id + * @param num 数量 + * @param type 类型:add—添加,sub—扣减 + * @return Boolean + */ + @Override + public Boolean operationStock(Integer id, Integer num, String type) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + if ("add".equals(type)) { + updateWrapper.setSql(StrUtil.format("stock = stock + {}", num)); + updateWrapper.setSql(StrUtil.format("sales = sales - {}", num)); + updateWrapper.setSql(StrUtil.format("quota = quota + {}", num)); + } + if ("sub".equals(type)) { + updateWrapper.setSql(StrUtil.format("stock = stock - {}", num)); + updateWrapper.setSql(StrUtil.format("sales = sales + {}", num)); + updateWrapper.setSql(StrUtil.format("quota = quota - {}", num)); + // 扣减时加乐观锁保证库存不为负 + updateWrapper.last(StrUtil.format(" and (quota - {} >= 0)", num)); + } + updateWrapper.eq("id", id); + boolean update = update(updateWrapper); + if (!update) { + throw new CrmebException("更新商品库存失败!商品id = " + id); + } + return update; + } + + /** + * 获取秒杀首页信息 + * 当前时段秒杀信息 + 当前时段秒杀商品6条 + * @return SeckillIndexResponse + */ + @Override + public SeckillIndexResponse getIndexInfo() { + StoreSeckillManger storeSeckillManger = new StoreSeckillManger(); + storeSeckillManger.setIsDel(false); + // 根据当前时间过滤 仅处理正在进行的秒杀 + List currentSeckillManagerList = storeSeckillMangerService.getCurrentSeckillManager(); + if (CollUtil.isEmpty(currentSeckillManagerList)) { + return null; + } + StoreSeckillManger seckillManger = currentSeckillManagerList.get(0); + + // 查询当前时段秒杀商品 + String currentDate = DateUtil.nowDate(Constants.DATE_FORMAT_DATE); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.select(StoreSeckill::getId, StoreSeckill::getProductId, StoreSeckill::getImage, StoreSeckill::getTitle, StoreSeckill::getPrice, StoreSeckill::getOtPrice); + lqw.eq(StoreSeckill::getStatus,1); + lqw.eq(StoreSeckill::getIsDel,false); + lqw.eq(StoreSeckill::getIsShow,true); + lqw.eq(StoreSeckill::getTimeId, seckillManger.getId()); + lqw.le(StoreSeckill::getStartTime, currentDate); + lqw.ge(StoreSeckill::getStopTime,currentDate); + lqw.orderByDesc(StoreSeckill::getId); + lqw.last(" limit 6"); + List seckillList = dao.selectList(lqw); + if (CollUtil.isEmpty(seckillList)) { + // 如果没有秒杀商品也不展示 + return null; + } + + SeckillIndexResponse response = new SeckillIndexResponse(); + // 处理秒杀时段信息 + StoreSeckillManagerResponse managerResponse = new StoreSeckillManagerResponse(); + BeanUtils.copyProperties(seckillManger, managerResponse); + String pStartTime = seckillManger.getStartTime().toString(); + String pEndTime = seckillManger.getEndTime().toString(); + String startTime = pStartTime.length() == 1 ? "0" + pStartTime:pStartTime; + String endTime = pEndTime.length() == 1 ? "0" + pEndTime : pEndTime; + managerResponse.setTime(startTime + ":00," + endTime + ":00"); + int secKillEndSecondTimestamp = DateUtil.getSecondTimestamp(DateUtil.nowDateTime("yyyy-MM-dd " + seckillManger.getEndTime() + ":00:00")); + SecKillResponse secKillResponse = new SecKillResponse(seckillManger.getId(),seckillManger.getSilderImgs(),managerResponse.getStatusName(), + managerResponse.getTime(),managerResponse.getKillStatus(),secKillEndSecondTimestamp+""); + response.setSecKillResponse(secKillResponse); + response.setProductList(seckillList); + return response; + } + /////////////////////////////////////////////////////////////////// 自定义方法 + + // 秒杀操作库存 + private boolean doProductStock(StoreProductStockRequest storeProductStockRequest) { + // 秒杀商品信息回滚 + StoreSeckill existProduct = getById(storeProductStockRequest.getSeckillId()); + List existAttr = + storeProductAttrValueService.getListByProductIdAndAttrId( + storeProductStockRequest.getSeckillId(), + storeProductStockRequest.getAttrId().toString(), + storeProductStockRequest.getType()); + if (null == existProduct || null == existAttr) { // 未找到商品 + logger.info("库存修改任务未获取到商品信息"+JSON.toJSONString(storeProductStockRequest)); + return true; + } + + // 回滚商品库存/销量 并更新 + boolean isPlus = "add".equals(storeProductStockRequest.getOperationType()); + int productStock = isPlus ? existProduct.getStock() + storeProductStockRequest.getNum() : existProduct.getStock() - storeProductStockRequest.getNum(); + existProduct.setStock(productStock); + existProduct.setSales(existProduct.getSales() - storeProductStockRequest.getNum()); + existProduct.setQuota(existProduct.getQuota() + storeProductStockRequest.getNum()); + updateById(existProduct); + + // 回滚sku库存 + for (StoreProductAttrValue attrValue : existAttr) { + int productAttrStock = isPlus ? attrValue.getStock() + storeProductStockRequest.getNum() : attrValue.getStock() - storeProductStockRequest.getNum(); + attrValue.setStock(productAttrStock); + attrValue.setSales(attrValue.getSales()-storeProductStockRequest.getNum()); + attrValue.setQuota(attrValue.getQuota() + storeProductStockRequest.getNum()); + storeProductAttrValueService.updateById(attrValue); + } + + // 商品本身库存回滚 + // StoreProductStockRequest 创建次对象调用商品扣减库存实现扣减上本本身库存 + StoreProductResponse existProductLinkedSeckill = storeProductService.getByProductId(storeProductStockRequest.getProductId()); + for (StoreProductAttrValueResponse attrValueResponse : existProductLinkedSeckill.getAttrValue()) { + if (attrValueResponse.getSuk().equals(storeProductStockRequest.getSuk())) { + StoreProductStockRequest r = new StoreProductStockRequest() + .setAttrId(attrValueResponse.getId()) + .setNum(storeProductStockRequest.getNum()) + .setOperationType("add") + .setProductId(storeProductStockRequest.getProductId()) + .setType(Constants.PRODUCT_TYPE_NORMAL) + .setSuk(storeProductStockRequest.getSuk()); + storeProductService.doProductStock(r); + } + } + return true; + } + +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemAdminServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemAdminServiceImpl.java new file mode 100644 index 0000000..0d95ec9 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemAdminServiceImpl.java @@ -0,0 +1,274 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.model.system.SystemAdmin; +import com.zbkj.common.model.system.SystemRole; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.request.SystemAdminAddRequest; +import com.zbkj.common.request.SystemAdminRequest; +import com.zbkj.common.request.SystemAdminUpdateRequest; +import com.zbkj.common.response.SystemAdminResponse; +import com.zbkj.common.utils.CrmebUtil; +import com.zbkj.common.utils.ValidateFormUtil; +import com.github.pagehelper.PageHelper; +import com.zbkj.service.dao.SystemAdminDao; +import com.zbkj.service.service.SystemAdminService; +import com.zbkj.service.service.SystemRoleService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.stream.Collectors; + +/** + * SystemAdminServiceImpl 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class SystemAdminServiceImpl extends ServiceImpl implements SystemAdminService { + + @Resource + private SystemAdminDao dao; + + @Autowired + private SystemRoleService systemRoleService; + + /** + * 后台管理员列表 + * @param request 请求参数 + * @param pageParamRequest 分页参数 + * @return List + */ + @Override + public List getList(SystemAdminRequest request, PageParamRequest pageParamRequest) { + PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + + //带SystemAdminRequest类的多条件查询 + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + if (StrUtil.isNotBlank(request.getRoles())) { + lambdaQueryWrapper.eq(SystemAdmin::getRoles, request.getRoles()); + } + if (ObjectUtil.isNotNull(request.getStatus())) { + lambdaQueryWrapper.eq(SystemAdmin::getStatus, request.getStatus()); + } + if (StrUtil.isNotBlank(request.getRealName())) { + lambdaQueryWrapper.and(i -> i.like(SystemAdmin::getRealName, request.getRealName()) + .or().like(SystemAdmin::getAccount, request.getRealName())); + } + List systemAdmins = dao.selectList(lambdaQueryWrapper); + if (CollUtil.isEmpty(systemAdmins)) { + return CollUtil.newArrayList(); + } + List systemAdminResponses = new ArrayList<>(); + List roleList = systemRoleService.getAllList(); + for (SystemAdmin admin : systemAdmins) { + SystemAdminResponse sar = new SystemAdminResponse(); + BeanUtils.copyProperties(admin, sar); + sar.setLastTime(admin.getUpdateTime()); + if (StrUtil.isBlank(admin.getRoles())) continue; + List roleIds = CrmebUtil.stringToArrayInt(admin.getRoles()); + List roleNames = new ArrayList<>(); + for (Integer roleId : roleIds) { + List hasRoles = roleList.stream().filter(e -> e.getId().equals(roleId)).collect(Collectors.toList()); + if (hasRoles.size()> 0) { + roleNames.add(hasRoles.stream().map(SystemRole::getRoleName).collect(Collectors.joining(","))); + } + } + sar.setRoleNames(StringUtils.join(roleNames,",")); + systemAdminResponses.add(sar); + } + return systemAdminResponses; + } + + /** + * 新增管理员 + * @param systemAdminAddRequest 新增参数 + * @return Boolean + */ + @Override + public Boolean saveAdmin(SystemAdminAddRequest systemAdminAddRequest) { + // 管理员名称唯一校验 + Integer result = checkAccount(systemAdminAddRequest.getAccount()); + if (result > 0) { + throw new CrmebException("管理员已存在"); + } + // 如果有手机号,校验手机号 + if (StrUtil.isNotBlank(systemAdminAddRequest.getPhone())) { + ValidateFormUtil.isPhoneException(systemAdminAddRequest.getPhone()); + } + + SystemAdmin systemAdmin = new SystemAdmin(); + BeanUtils.copyProperties(systemAdminAddRequest, systemAdmin); + + String pwd = CrmebUtil.encryptPassword(systemAdmin.getPwd(), systemAdmin.getAccount()); + systemAdmin.setPwd(pwd); + return save(systemAdmin); + } + + /** + * 管理员名称唯一校验 + * @param account 管理员账号 + * @return Integer + */ + private Integer checkAccount(String account) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(SystemAdmin::getAccount, account); + return dao.selectCount(lambdaQueryWrapper); + + } + + /** + * 更新管理员 + */ + @Override + public Boolean updateAdmin(SystemAdminUpdateRequest systemAdminRequest) { + getDetail(systemAdminRequest.getId()); + verifyAccount(systemAdminRequest.getId(), systemAdminRequest.getAccount()); + // 如果有手机号,校验手机号 + if (StrUtil.isNotBlank(systemAdminRequest.getPhone())) { + ValidateFormUtil.isPhoneException(systemAdminRequest.getPhone()); + } + SystemAdmin systemAdmin = new SystemAdmin(); + BeanUtils.copyProperties(systemAdminRequest, systemAdmin); + systemAdmin.setPwd(null); + if (StrUtil.isNotBlank(systemAdminRequest.getPwd())) { + String pwd = CrmebUtil.encryptPassword(systemAdminRequest.getPwd(), systemAdminRequest.getAccount()); + systemAdmin.setPwd(pwd); + } + return updateById(systemAdmin); + } + + /** + * 校验账号唯一性(管理员更新时) + * @param id 管理员id + * @param account 管理员账号 + */ + private void verifyAccount(Integer id, String account) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.ne(SystemAdmin::getId, id); + lqw.eq(SystemAdmin::getAccount, account); + SystemAdmin systemAdmin = dao.selectOne(lqw); + if (ObjectUtil.isNotNull(systemAdmin)) { + throw new CrmebException("账号已存在"); + } + } + + /** + * 修改后台管理员状态 + * @param id 管理员id + * @param status 状态 + * @return Boolean + */ + @Override + public Boolean updateStatus(Integer id, Boolean status) { + SystemAdmin systemAdmin = getDetail(id); + if (systemAdmin.getStatus().equals(status)) { + return true; + } + systemAdmin.setStatus(status); + return updateById(systemAdmin); + } + + /** + * 根据idList获取Map + * @param adminIdList id数组 + * @return HashMap + */ + @Override + public HashMap getMapInId(List adminIdList) { + HashMap map = new HashMap<>(); + if (adminIdList.size() < 1) { + return map; + } + LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(); + lambdaQueryWrapper.in(SystemAdmin::getId, adminIdList); + List systemAdminList = dao.selectList(lambdaQueryWrapper); + if (systemAdminList.size() < 1) { + return map; + } + for (SystemAdmin systemAdmin : systemAdminList) { + map.put(systemAdmin.getId(), systemAdmin); + } + return map; + } + + /** + * 修改后台管理员是否接收状态 + * @param id 管理员id + * @return Boolean + */ + @Override + public Boolean updateIsSms(Integer id) { + SystemAdmin systemAdmin = getDetail(id); + if (StrUtil.isBlank(systemAdmin.getPhone())) { + throw new CrmebException("请先为管理员添加手机号!"); + } + systemAdmin.setIsSms(!systemAdmin.getIsSms()); + return updateById(systemAdmin); + } + + /** + * 获取可以接收短信的管理员 + * @return List + */ + @Override + public List findIsSmsList() { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(SystemAdmin::getStatus, true); + lqw.eq(SystemAdmin::getIsDel, false); + lqw.eq(SystemAdmin::getIsSms, true); + List list = dao.selectList(lqw); + if (CollUtil.isEmpty(list)) { + return list; + } + return list.stream().filter(i -> StrUtil.isNotBlank(i.getPhone())).collect(Collectors.toList()); + } + + /** + * 管理员详情 + * @param id 管理员id + * @return SystemAdmin + */ + @Override + public SystemAdmin getDetail(Integer id) { + SystemAdmin systemAdmin = getById(id); + if (ObjectUtil.isNull(systemAdmin) || systemAdmin.getIsDel()) { + throw new CrmebException("管理员不存在"); + } + return systemAdmin; + } + + /** + * 通过用户名获取用户 + * @param username 用户名 + * @return SystemAdmin + */ + @Override + public SystemAdmin selectUserByUserName(String username) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(SystemAdmin::getAccount, username); + lqw.eq(SystemAdmin::getIsDel, false); + return dao.selectOne(lqw); + } + +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemAttachmentServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemAttachmentServiceImpl.java new file mode 100644 index 0000000..7d6c0dc --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemAttachmentServiceImpl.java @@ -0,0 +1,180 @@ +package com.zbkj.service.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.request.SystemAttachmentMoveRequest; +import com.zbkj.common.request.SystemAttachmentRequest; +import com.github.pagehelper.PageHelper; +import com.zbkj.common.utils.CrmebUtil; +import com.zbkj.common.model.system.SystemAttachment; +import com.zbkj.service.dao.SystemAttachmentDao; +import com.zbkj.service.service.SystemAttachmentService; +import com.zbkj.service.service.SystemConfigService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * SystemAttachmentServiceImpl 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class SystemAttachmentServiceImpl extends ServiceImpl + implements SystemAttachmentService { + + @Resource + private SystemAttachmentDao dao; + + @Autowired + private SystemConfigService systemConfigService; + + /** + * 同步到云服务, 更新图片上传类型 + * @param attId Integer 主键id + * @param type int 图片上传类型 1本地 2七牛云 3OSS 4COS + */ + @Override + public void updateCloudType(Integer attId, int type) { + SystemAttachment systemAttachment = new SystemAttachment(); + systemAttachment.setAttId(attId); + systemAttachment.setImageType(type); + updateById(systemAttachment); + } + + /** + * 附件分页 + * @param pid Integer pid + * @param pageParamRequest PageParamRequest 分页参数 + * @return List + */ + @Override + public List getList(Integer pid, String attType, PageParamRequest pageParamRequest) { + PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(SystemAttachment::getPid, pid); + if(StringUtils.isNotEmpty(attType)){ + lambdaQueryWrapper.in(SystemAttachment::getAttType, StringUtils.split(attType,",")); + } + lambdaQueryWrapper.orderByDesc(SystemAttachment::getAttId); + return dao.selectList(lambdaQueryWrapper); + } + + /** + * 给图片加前缀 + * @param path String 路径 + * @return String + */ + @Override + public String prefixImage(String path) { + // 如果那些域名不需要加,则跳过 + return path.replace(Constants.UPLOAD_TYPE_IMAGE+"/", getCdnUrl() + "/"+ Constants.UPLOAD_TYPE_IMAGE+"/"); + } + + /** + * 给文件加前缀 + * @param path String 路径 + * @return String + */ + @Override + public String prefixFile(String path) { + if (path.contains("file/excel")) { + String cdnUrl = systemConfigService.getValueByKey("local" + "UploadUrl"); + return path.replace("file/", cdnUrl + "/file/"); + } + return path.replace("file/", getCdnUrl() + "/file/"); + } + + /** + * 获取cdn url + * @return String + */ + private String getCdnUrl() { +// return asyncService.getCurrentBaseUrl(); + String uploadType = systemConfigService.getValueByKeyException("uploadType"); + //获取配置信息 + int type = Integer.parseInt(uploadType); + String pre = "local"; + switch (type) { + case 2: + pre = "qn"; + break; + case 3: + pre = "al"; + break; + case 4: + pre = "tx"; + break; + default: + break; + } + return systemConfigService.getValueByKey(pre+"UploadUrl"); + } + + /** + * 清除 cdn url, 在保存数据的时候使用 + * @param path String 文件路径 + * @return String + */ + @Override + public String clearPrefix(String path) { + if(StringUtils.isBlank(path)){ + return path; + } + Constants.CND_URL = getCdnUrl(); + if(path.contains(getCdnUrl() + "/")){ + return path.replace(getCdnUrl() + "/", ""); + } + + return path; + } + + /** + * 新增附件 + * @param systemAttachmentRequest 新增参数 + */ + @Override + public Boolean add(SystemAttachmentRequest systemAttachmentRequest) { + SystemAttachment systemAttachment = new SystemAttachment(); + BeanUtils.copyProperties(systemAttachmentRequest, systemAttachment); + return save(systemAttachment); + } + + /** + * 编辑附件 + * @param systemAttachmentRequest 更新参数 + */ + @Override + public Boolean edit(SystemAttachmentRequest systemAttachmentRequest) { + SystemAttachment systemAttachment = new SystemAttachment(); + BeanUtils.copyProperties(systemAttachmentRequest, systemAttachment); + return updateById(systemAttachment); + } + + /** + * 更改图片目录 + * @param move 参数 + */ + @Override + public Boolean updateAttrId(SystemAttachmentMoveRequest move) { + LambdaUpdateWrapper lup = new LambdaUpdateWrapper<>(); + lup.in(SystemAttachment::getAttId, CrmebUtil.stringToArray(move.getAttrId())); + lup.set(SystemAttachment::getPid, move.getPid()); + return update(lup); + } +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemCityAsyncServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemCityAsyncServiceImpl.java new file mode 100644 index 0000000..7fb87ce --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemCityAsyncServiceImpl.java @@ -0,0 +1,106 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.utils.RedisUtil; +import com.zbkj.common.model.system.SystemCity; +import com.zbkj.common.vo.SystemCityTreeVo; +import com.zbkj.service.dao.SystemCityDao; +import com.zbkj.service.service.SystemCityAsyncService; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * SystemCityAsyncServiceImpl 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class SystemCityAsyncServiceImpl extends ServiceImpl implements SystemCityAsyncService { + + @Resource + private SystemCityDao dao; + + @Autowired + private RedisUtil redisUtil; + + /** + * 设置属性列表进入redis + */ + @Override + public void setListTree() { + //循环数据,把数据对象变成带list结构的vo + List treeList = new ArrayList<>(); + + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.select(SystemCity::getId, SystemCity::getCityId, SystemCity::getParentId, SystemCity::getName); + lambdaQueryWrapper.eq(SystemCity::getIsShow, true); + List allTree = dao.selectList(lambdaQueryWrapper); + if (CollUtil.isEmpty(allTree)) { + return; + } + + for (SystemCity systemCity : allTree) { + SystemCityTreeVo systemCityTreeVo = new SystemCityTreeVo(); + BeanUtils.copyProperties(systemCity, systemCityTreeVo); + treeList.add(systemCityTreeVo); + } + //返回 + Map map = new HashMap<>(); + //cityId 为 key 存储到map 中 + for (SystemCityTreeVo systemCityTreeVo1 : treeList) { + map.put(systemCityTreeVo1.getCityId(), systemCityTreeVo1); + } + List list = new ArrayList<>(); + for (SystemCityTreeVo tree : treeList) { + //子集ID返回对象,有则添加。 + SystemCityTreeVo tree1 = map.get(tree.getParentId()); + if (tree1 != null) { + tree1.getChild().add(tree); + } else { + list.add(tree); + } + } + redisUtil.set(Constants.CITY_LIST_TREE, list); + } + + /** + * 数据整体刷入redis + */ + private void asyncList(Integer pid) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(SystemCity::getParentId, pid); + lambdaQueryWrapper.in(SystemCity::getIsShow, true); + List systemCityList = dao.selectList(lambdaQueryWrapper); + if (systemCityList != null && systemCityList.size() > 0) { + redisUtil.hmSet(Constants.CITY_LIST, pid.toString(), systemCityList); + } + } + + /** + * 数据整体刷入redis + */ + @Async + public void async(Integer pid) { + asyncList(pid); + setListTree(); + } +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemCityServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemCityServiceImpl.java new file mode 100644 index 0000000..a64c3da --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemCityServiceImpl.java @@ -0,0 +1,183 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.model.system.SystemCity; +import com.zbkj.common.request.SystemCityRequest; +import com.zbkj.common.request.SystemCitySearchRequest; +import com.zbkj.common.utils.RedisUtil; +import com.zbkj.common.vo.SystemCityTreeVo; +import com.zbkj.service.dao.SystemCityDao; +import com.zbkj.service.service.SystemCityAsyncService; +import com.zbkj.service.service.SystemCityService; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +/** + * SystemCityServiceImpl 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class SystemCityServiceImpl extends ServiceImpl implements SystemCityService { + + @Resource + private SystemCityDao dao; + + @Autowired + private RedisUtil redisUtil; + + @Autowired + private SystemCityAsyncService systemCityAsyncService; + + /** + * 列表 + * @param request 请求参数 + * @return List + */ + @Override + public Object getList(SystemCitySearchRequest request) { + Object list = redisUtil.hmGet(Constants.CITY_LIST, request.getParentId().toString()); + if (ObjectUtil.isNull(list)) { + //城市数据,异步同步到redis,第一次拿不到数据,去数据库读取 + list = getList(request.getParentId()); + } + return list; + } + + /** + * 根据父级id获取数据 + * @param parentId integer parentId + * @author Mr.Zhang + * @since 2020-04-17 + * @return Object + */ + private Object getList(Integer parentId) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(SystemCity::getParentId, parentId); + lambdaQueryWrapper.in(SystemCity::getIsShow, true); + return dao.selectList(lambdaQueryWrapper); + } + /** + * 修改状态 + * @param id 城市id + * @param status 状态 + */ + @Override + public Boolean updateStatus(Integer id, Boolean status) { + SystemCity systemCity = getById(id); + systemCity.setId(id); + systemCity.setIsShow(status); + boolean result = updateById(systemCity); + if (result) { + asyncRedis(systemCity.getParentId()); + } + return result; + } + + /** + * 修改城市 + * @param id 城市id + * @param request 修改参数 + */ + @Override + public Boolean update(Integer id, SystemCityRequest request) { + SystemCity systemCity = new SystemCity(); + BeanUtils.copyProperties(request, systemCity); + systemCity.setId(id); + boolean result = updateById(systemCity); + if (result) { + asyncRedis(request.getParentId()); + } + return result; + } + /** + * 获取tree结构的列表 + * @return Object + */ + @Override + public List getListTree() { + List cityList = redisUtil.get(Constants.CITY_LIST_TREE); + if (CollUtil.isEmpty(cityList)) { + systemCityAsyncService.setListTree(); + } + return redisUtil.get(Constants.CITY_LIST_TREE); + } + + /** + * 获取所有城市cityId + * @return List + */ + @Override + public List getCityIdList() { + Object data = redisUtil.get(Constants.CITY_LIST_LEVEL_1); + List collect; + if (data == null || "".equals(data)) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.select(SystemCity::getCityId); + lambdaQueryWrapper.eq(SystemCity::getLevel, 1); + lambdaQueryWrapper.eq(SystemCity::getIsShow, true); + List systemCityList = dao.selectList(lambdaQueryWrapper); + collect = systemCityList.stream().map(SystemCity::getCityId).distinct().collect(Collectors.toList()); + redisUtil.set(Constants.CITY_LIST_LEVEL_1, collect, 10L, TimeUnit.MINUTES); + } else { + collect = (List) data; + } + + return collect; + } + + /** + * 根据city_id获取城市信息 + */ + @Override + public SystemCity getCityByCityId(Integer cityId) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(SystemCity::getCityId, cityId).eq(SystemCity::getIsShow, 1); + return getOne(lambdaQueryWrapper); + } + + + /** + * 数据整体刷入redis + * @author Mr.Zhang + * @since 2020-05-18 + */ + public void asyncRedis(Integer pid) { + systemCityAsyncService.async(pid); + } + + /** + * 根据城市名称获取城市详细数据 + * @author 大粽子 + * @param cityName 城市名称 + * @return 城市数据 + */ + @Override + public SystemCity getCityByCityName(String cityName) { + LambdaQueryWrapper systemCityLambdaQueryWrapper = Wrappers.lambdaQuery(); + systemCityLambdaQueryWrapper + .eq(SystemCity::getName,cityName) + .eq(SystemCity::getIsShow,1) + .eq(SystemCity::getLevel, 1); + return getOne(systemCityLambdaQueryWrapper); + } +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemConfigServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemConfigServiceImpl.java new file mode 100644 index 0000000..7a63b96 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemConfigServiceImpl.java @@ -0,0 +1,387 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.config.CrmebConfig; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.request.SystemConfigAdminRequest; +import com.zbkj.common.request.SystemFormCheckRequest; +import com.zbkj.common.request.SystemFormItemCheckRequest; +import com.zbkj.common.utils.RedisUtil; +import com.zbkj.common.vo.ExpressSheetVo; +import com.zbkj.common.model.system.SystemConfig; +import com.zbkj.service.dao.SystemConfigDao; +import com.zbkj.service.service.SystemAttachmentService; +import com.zbkj.service.service.SystemConfigService; +import com.zbkj.service.service.SystemFormTempService; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.stream.Collectors; + +/** + * SystemConfigServiceImpl 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class SystemConfigServiceImpl extends ServiceImpl implements SystemConfigService { + + @Resource + private SystemConfigDao dao; + + @Autowired + private SystemFormTempService systemFormTempService; + + @Autowired + private SystemAttachmentService systemAttachmentService; + + @Autowired + private RedisUtil redisUtil; + + @Autowired + CrmebConfig crmebConfig; + + private static final String redisKey = Constants.CONFIG_LIST; + + /** + * 根据menu name 获取 value + * @param name menu name + * @return String + */ + @Override + public String getValueByKey(String name) { + return get(name); + } + + + /** + * 同时获取多个配置 + * @param keys 多个配置key + * @return List + */ + @Override + public List getValuesByKes(List keys) { + List result = new ArrayList<>(); + for (String key : keys) { + result.add(getValueByKey(key)); + } + return result; + } + + /** + * 根据 name 获取 value 找不到抛异常 + * @param name menu name + * @return String + */ + @Override + public String getValueByKeyException(String name) { + String value = get(name); + if (null == value) { + throw new CrmebException("没有找到"+ name +"数据"); + } + + return value; + } + + /** + * 整体保存表单数据 + * @param systemFormCheckRequest SystemFormCheckRequest 数据保存 + * @return boolean + */ + @Override + public Boolean saveForm(SystemFormCheckRequest systemFormCheckRequest) { + //检测form表单,并且返回需要添加的数据 + systemFormTempService.checkForm(systemFormCheckRequest); + + List systemConfigList = new ArrayList<>(); + + //批量添加 + for (SystemFormItemCheckRequest systemFormItemCheckRequest : systemFormCheckRequest.getFields()) { + SystemConfig systemConfig = new SystemConfig(); + systemConfig.setName(systemFormItemCheckRequest.getName()); + String value = systemAttachmentService.clearPrefix(systemFormItemCheckRequest.getValue()); + if (StrUtil.isBlank(value)) { + //去掉图片域名之后没有数据则说明当前数据就是图片域名 + value = systemFormItemCheckRequest.getValue(); + } + systemConfig.setValue(value); + systemConfig.setFormId(systemFormCheckRequest.getId()); + systemConfig.setTitle(systemFormItemCheckRequest.getTitle()); + systemConfigList.add(systemConfig); + } + + //修改之前的数据 + updateStatusByFormId(systemFormCheckRequest.getId()); + + saveBatch(systemConfigList); + + //删除之前隐藏的数据 + deleteStatusByFormId(systemFormCheckRequest.getId()); + + List forAsyncPram = systemConfigList.stream().map(e -> { + e.setStatus(true); + return e; + }).collect(Collectors.toList()); + async(forAsyncPram); + + return true; + } + + + + /** + * updateStatusByGroupId + * @param formId Integer formId + */ + private void updateStatusByFormId(Integer formId) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(SystemConfig::getFormId, formId).eq(SystemConfig::getStatus, false); + + SystemConfig systemConfig = new SystemConfig(); + systemConfig.setStatus(true); + update(systemConfig, lambdaQueryWrapper); + + } + + /** + * deleteStatusByGroupId + * @param formId Integer formId + * @author Mr.Zhang + * @since 2020-04-16 + */ + private void deleteStatusByFormId(Integer formId) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + //删除已经隐藏的数据 + lambdaQueryWrapper.eq(SystemConfig::getFormId, formId).eq(SystemConfig::getStatus, true); + List systemConfigList = dao.selectList(lambdaQueryWrapper); + dao.delete(lambdaQueryWrapper); + async(systemConfigList); + } + + + /** + * 保存或更新配置数据 + * @param name 菜单名称 + * @param value 菜单值 + * @return boolean + */ + @Override + public Boolean updateOrSaveValueByName(String name, String value) { + value = systemAttachmentService.clearPrefix(value); + + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(SystemConfig::getName, name); + List systemConfigs = dao.selectList(lambdaQueryWrapper); + if (systemConfigs.size() >= 2) { + throw new CrmebException("配置名称存在多个请检查配置 eb_system_config 重复数据:"+name+"条数:"+systemConfigs.size()); + } else if (systemConfigs.size() == 1) { + systemConfigs.get(0).setValue(value); + updateById(systemConfigs.get(0)); + asyncRedis(name); + return true; + } else { + save(new SystemConfig().setName(name).setValue(value)); + asyncRedis(name); + return true; + } + } + + + /** + * 根据formId查询数据 + * @param formId Integer id + * @return HashMap + */ + @Override + public HashMap info(Integer formId) { + LambdaQueryWrapper lambdaQueryWrapper1 = new LambdaQueryWrapper<>(); + lambdaQueryWrapper1.eq(SystemConfig::getFormId, formId); + List systemConfigList = dao.selectList(lambdaQueryWrapper1); + if (ObjectUtil.isNull(systemConfigList)) { + return CollUtil.newHashMap(); + } + HashMap map = new HashMap<>(); + for (SystemConfig systemConfig : systemConfigList) { + map.put(systemConfig.getName(), systemConfig.getValue()); + } + map.put("id", formId.toString()); + return map; + } + + /** + * 根据name查询数据 + * @param name name + * @return boolean + */ + @Override + public Boolean checkName(String name) { + String value = get(name); + return StrUtil.isBlank(value); + } + + /** + * 根据key获取配置 + * @param key key + * @return List + */ + @Override + public List getListByKey(String key) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(SystemConfig::getName, key); + return dao.selectList(lqw); + } + + /** + * 获取面单默认配置信息 + * @return ExpressSheetVo + */ + @Override + public ExpressSheetVo getDeliveryInfo() { + String exportId = get("config_export_id"); + String exportTempId = get("config_export_temp_id"); + String exportCom = get("config_export_com"); + String exportToName = get("config_export_to_name"); + String exportToTel = get("config_export_to_tel"); + String exportToAddress = get("config_export_to_address"); + String exportSiid = get("config_export_siid"); + String exportOpen = get("config_export_open"); + return new ExpressSheetVo(Integer.valueOf(exportId), exportCom, exportTempId, exportToName, exportToTel, exportToAddress, exportSiid, Integer.valueOf(exportOpen)); + } + + /** + * 更新配置信息 + * @param requestList 请求数组 + * @return Boolean + */ + @Override + public Boolean updateByList(List requestList) { + List configList = requestList.stream().map(e -> { + SystemConfig systemConfig = new SystemConfig(); + BeanUtils.copyProperties(e, systemConfig); + return systemConfig; + }).collect(Collectors.toList()); + return updateBatchById(configList); + } + + /** + * 获取颜色配置 + * @return SystemConfig + */ + @Override + public SystemConfig getColorConfig() { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(SystemConfig::getName, "change_color_config"); + lqw.eq(SystemConfig::getStatus, 0); + return dao.selectOne(lqw); + } + + + /** + * 把数据同步到redis + * @param name name + * @author Mr.Zhang + * @since 2020-04-16 + */ + private void asyncRedis(String name) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(SystemConfig::getName, name); + List systemConfigList = dao.selectList(lambdaQueryWrapper); + if (systemConfigList.size() == 0) { + //说明数据已经被删除了 + deleteRedis(name); + return; + } + + async(systemConfigList); + } + + /** + * 把数据同步到redis + * @param systemConfigList List 需要同步的数据 + */ + private void async(List systemConfigList) { + if (!crmebConfig.isAsyncConfig()) { + //如果配置没有开启 + return; + } + for (SystemConfig systemConfig : systemConfigList) { + redisUtil.hmSet(redisKey, systemConfig.getName(), systemConfig.getValue()); + } + } + + /** + * 把数据同步到redis + * @param name String + * @author Mr.Zhang + * @since 2020-04-16 + */ + private void deleteRedis(String name) { + if (!crmebConfig.isAsyncConfig()) { + //如果配置没有开启 + return; + } + redisUtil.hmDelete(redisKey, name); + } + + /** + * 把数据同步到redis + * @param name String + * @return String + */ + private String get(String name) { + if (!crmebConfig.isAsyncConfig()) { + //如果配置没有开启 + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(SystemConfig::getStatus, false).eq(SystemConfig::getName, name); + SystemConfig systemConfig = dao.selectOne(lambdaQueryWrapper); + if (ObjectUtil.isNull(systemConfig) || StrUtil.isBlank(systemConfig.getValue())) { + return ""; + } + return systemConfig.getValue(); + } + setRedisByVoList(); + Object data = redisUtil.hmGet(redisKey, name); + if (ObjectUtil.isNull(data) || StrUtil.isBlank(data.toString())) { + //没有找到数据 + return ""; + } + //去数据库查找,然后写入redis + return data.toString(); + } + + /** + * 把数据同步到redis, 此方法适用于redis为空的时候进行一次批量输入 + */ + private void setRedisByVoList() { + //检测redis是否为空 + Long size = redisUtil.getHashSize(redisKey); + if (size > 0 || !crmebConfig.isAsyncConfig()) { + return; + } + + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(SystemConfig::getStatus, false); + List systemConfigList = dao.selectList(lambdaQueryWrapper); + async(systemConfigList); + } +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemFormTempServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemFormTempServiceImpl.java new file mode 100644 index 0000000..ee42a12 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemFormTempServiceImpl.java @@ -0,0 +1,153 @@ +package com.zbkj.service.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.request.*; +import com.zbkj.common.vo.SystemConfigFormItemConfigRegListVo; +import com.zbkj.common.vo.SystemConfigFormItemVo; +import com.zbkj.common.vo.SystemConfigFormVo; +import com.github.pagehelper.PageHelper; +import com.zbkj.common.utils.ValidateFormUtil; +import com.zbkj.common.model.system.SystemFormTemp; +import com.zbkj.service.dao.SystemFormTempDao; +import com.zbkj.service.service.SystemFormTempService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.List; + +/** + * SystemFormTempServiceImpl 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class SystemFormTempServiceImpl extends ServiceImpl implements SystemFormTempService { + + @Resource + private SystemFormTempDao dao; + + /** + * 列表 + * @param request 请求参数 + * @param pageParamRequest 分页类参数 + * @return List + */ + @Override + public List getList(SystemFormTempSearchRequest request, PageParamRequest pageParamRequest) { + PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + + //带 SystemFormTemp 类的多条件查询 + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + if(!StringUtils.isBlank(request.getKeywords())) { + lambdaQueryWrapper.eq(SystemFormTemp::getId, request.getKeywords()). + or().like(SystemFormTemp::getName, request.getKeywords()). + or().like(SystemFormTemp::getInfo, request.getKeywords()); + } + lambdaQueryWrapper.orderByDesc(SystemFormTemp::getId); + return dao.selectList(lambdaQueryWrapper); + } + + /** + * 验证item规则 + * @param systemFormCheckRequest SystemFormCheckRequest 表单数据提交 + */ + @Override + public void checkForm(SystemFormCheckRequest systemFormCheckRequest) { + //循环取出item数据, 组合成 key => val 的map格式 + HashMap map = new HashMap<>(); + for (SystemFormItemCheckRequest systemFormItemCheckRequest : systemFormCheckRequest.getFields()) { + map.put(systemFormItemCheckRequest.getName(), systemFormItemCheckRequest.getValue()); + } + + //取出表单模型的数据 + SystemFormTemp formTemp = getById(systemFormCheckRequest.getId()); + + //解析表单规则进行验证 + SystemConfigFormVo systemConfigFormVo; + try { + systemConfigFormVo = JSONObject.parseObject(formTemp.getContent(), SystemConfigFormVo.class); + } catch (Exception e) { + throw new CrmebException("模板表单 【" + formTemp.getName() + "】 的内容不是正确的JSON格式!"); + } + + SystemConfigFormItemVo systemConfigFormItemVo; + for (String item : systemConfigFormVo.getFields()) { + systemConfigFormItemVo = JSONObject.parseObject(item, SystemConfigFormItemVo.class); + String model = systemConfigFormItemVo.get__vModel__(); //字段 name + + if(systemConfigFormItemVo.get__config__().getRequired() && "".equals(map.get(model))) { + throw new CrmebException(systemConfigFormItemVo.get__config__().getLabel() + "不能为空!"); + } + //正则验证 + checkRule(systemConfigFormItemVo.get__config__().getRegList(), map.get(model), systemConfigFormItemVo.get__config__().getLabel()); + } + } + + /** + * 新增表单模板 + * @param systemFormTempRequest 新增参数 + */ + @Override + public Boolean add(SystemFormTempRequest systemFormTempRequest) { + try { + JSONObject.parseObject(systemFormTempRequest.getContent(), SystemConfigFormVo.class); + } catch (Exception e) { + throw new CrmebException("模板表单 【" + systemFormTempRequest.getName() + "】 的内容不是正确的JSON格式!"); + } + + SystemFormTemp systemFormTemp = new SystemFormTemp(); + BeanUtils.copyProperties(systemFormTempRequest, systemFormTemp); + return save(systemFormTemp); + } + + /** + * 修改表单模板 + * @param id integer id + * @param systemFormTempRequest 修改参数 + */ + @Override + public Boolean edit(Integer id, SystemFormTempRequest systemFormTempRequest) { + try { + JSONObject.parseObject(systemFormTempRequest.getContent(), SystemConfigFormVo.class); + } catch (Exception e) { + throw new CrmebException("模板表单 【" + systemFormTempRequest.getName() + "】 的内容不是正确的JSON格式!"); + } + + SystemFormTemp systemFormTemp = new SystemFormTemp(); + BeanUtils.copyProperties(systemFormTempRequest, systemFormTemp); + systemFormTemp.setId(id); + return updateById(systemFormTemp); + } + + /** + * 验证item规则 + * @param regList List regList, String value, String name) { + if(regList.size() > 0) { + for (SystemConfigFormItemConfigRegListVo systemConfigFormItemConfigRegListVo : regList) { + if(!ValidateFormUtil.regular(value, name, systemConfigFormItemConfigRegListVo.getPattern())) { + throw new CrmebException(systemConfigFormItemConfigRegListVo.getMessage()); + } + } + } + } +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemGroupDataServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemGroupDataServiceImpl.java new file mode 100644 index 0000000..811f8e8 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemGroupDataServiceImpl.java @@ -0,0 +1,258 @@ +package com.zbkj.service.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.constants.SysGroupDataConstants; +import com.zbkj.common.request.SystemFormItemCheckRequest; +import com.zbkj.common.request.SystemGroupDataRequest; +import com.zbkj.common.request.SystemGroupDataSearchRequest; +import com.github.pagehelper.PageHelper; +import com.zbkj.common.utils.CrmebUtil; +import com.zbkj.common.model.system.SystemGroupData; +import com.zbkj.service.dao.SystemGroupDataDao; +import com.zbkj.service.service.SystemAttachmentService; +import com.zbkj.service.service.SystemFormTempService; +import com.zbkj.service.service.SystemGroupDataService; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +/** + * SystemGroupDataServiceImpl 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class SystemGroupDataServiceImpl extends ServiceImpl implements SystemGroupDataService { + + @Resource + private SystemGroupDataDao dao; + + @Autowired + private SystemFormTempService systemFormTempService; + + @Autowired + private SystemAttachmentService systemAttachmentService; + + /** + * 列表 + * @param request 请求参数 + * @param pageParamRequest 分页类参数 + * @return List + */ + @Override + public List getList(SystemGroupDataSearchRequest request, PageParamRequest pageParamRequest) { + PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + + //带 SystemGroupData 类的多条件查询 + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + SystemGroupData model = new SystemGroupData(); + BeanUtils.copyProperties(request, model); + lambdaQueryWrapper.setEntity(model); + lambdaQueryWrapper.orderByAsc(SystemGroupData::getSort).orderByAsc(SystemGroupData::getId); + return dao.selectList(lambdaQueryWrapper); + } + + /** + * 保存数据 + * @param systemGroupDataRequest SystemGroupDataRequest 数据保存 + * @return Boolean + */ + @Override + public Boolean create(SystemGroupDataRequest systemGroupDataRequest) { + //检测form表单,并且返回需要添加的数据 + systemFormTempService.checkForm(systemGroupDataRequest.getForm()); + + SystemGroupData systemGroupData = new SystemGroupData(); + systemGroupData.setGid(systemGroupDataRequest.getGid()); + + String value = JSONObject.toJSONString(systemGroupDataRequest.getForm()); + value = systemAttachmentService.clearPrefix(value); + systemGroupData.setValue(value); + systemGroupData.setSort(systemGroupDataRequest.getForm().getSort()); + systemGroupData.setStatus(systemGroupDataRequest.getForm().getStatus()); + return save(systemGroupData); + } + + /** + * 修改组合数据详情表 + * @param id integer id + * @param request 修改参数 + * @return bool + */ + @Override + public Boolean update(Integer id, SystemGroupDataRequest request) { + //检测form表单,并且返回需要添加的数据 + systemFormTempService.checkForm(request.getForm()); + + SystemGroupData systemGroupData = new SystemGroupData(); + systemGroupData.setId(id); + systemGroupData.setGid(request.getGid()); + + String value = JSONObject.toJSONString(request.getForm()); + value = systemAttachmentService.clearPrefix(value); + systemGroupData.setValue(value); + systemGroupData.setSort(request.getForm().getSort()); + systemGroupData.setStatus(request.getForm().getStatus()); + return updateById(systemGroupData); + } + + /** + * 通过gid获取列表 推荐二开使用 + * @param gid Integer group id + * @return List + */ + @Override + public List getListByGid(Integer gid, Class cls) { + SystemGroupDataSearchRequest systemGroupDataSearchRequest = new SystemGroupDataSearchRequest(); + systemGroupDataSearchRequest.setGid(gid); + systemGroupDataSearchRequest.setStatus(true); + List list = getList(systemGroupDataSearchRequest, new PageParamRequest()); + + List arrayList = new ArrayList<>(); + if (list.size() < 1) { + return null; + } + + for (SystemGroupData systemGroupData : list) { + JSONObject jsonObject = JSONObject.parseObject(systemGroupData.getValue()); + List systemFormItemCheckRequestList = CrmebUtil.jsonToListClass(jsonObject.getString("fields"), SystemFormItemCheckRequest.class); + if (systemFormItemCheckRequestList.size() < 1) { + continue; + } + HashMap map = new HashMap<>(); + T t; + for (SystemFormItemCheckRequest systemFormItemCheckRequest : systemFormItemCheckRequestList) { + map.put(systemFormItemCheckRequest.getName(), systemFormItemCheckRequest.getValue()); + } + map.put("id", systemGroupData.getId()); + t = CrmebUtil.mapToObj(map, cls); + arrayList.add(t); + } + + return arrayList; + } + + /** + * 通过gid获取列表 + * @param gid Integer group id + * @author Mr.Zhang + * @since 2020-05-15 + * @return List> + */ + @Override + public List> getListMapByGid(Integer gid) { + SystemGroupDataSearchRequest systemGroupDataSearchRequest = new SystemGroupDataSearchRequest(); + systemGroupDataSearchRequest.setGid(gid); + systemGroupDataSearchRequest.setStatus(true); + List list = getList(systemGroupDataSearchRequest, new PageParamRequest()); + + List> arrayList = new ArrayList<>(); + if (list.size() < 1) { + return null; + } + + for (SystemGroupData systemGroupData : list) { + JSONObject jsonObject = JSONObject.parseObject(systemGroupData.getValue()); + List systemFormItemCheckRequestList = CrmebUtil.jsonToListClass(jsonObject.getString("fields"), SystemFormItemCheckRequest.class); + if (systemFormItemCheckRequestList.size() < 1) { + continue; + } + HashMap map = new HashMap<>(); + + for (SystemFormItemCheckRequest systemFormItemCheckRequest : systemFormItemCheckRequestList) { + map.put(systemFormItemCheckRequest.getName(), systemFormItemCheckRequest.getValue()); + } + map.put("id", systemGroupData.getId()); + arrayList.add(map); + } + + return arrayList; + } + + /** + * 通过gid获取列表 + * @param groupDataId Integer group id + * @return + */ + public T getNormalInfo(Integer groupDataId, Class cls) { + SystemGroupData systemGroupData = getById(groupDataId); + if (null == systemGroupData || !systemGroupData.getStatus()) { + return null; + } + + JSONObject jsonObject = JSONObject.parseObject(systemGroupData.getValue()); + List systemFormItemCheckRequestList = CrmebUtil.jsonToListClass(jsonObject.getString("fields"), SystemFormItemCheckRequest.class); + if (systemFormItemCheckRequestList.size() < 1) { + return null; + } + HashMap map = new HashMap<>(); + T t; + for (SystemFormItemCheckRequest systemFormItemCheckRequest : systemFormItemCheckRequestList) { + map.put(systemFormItemCheckRequest.getName(), systemFormItemCheckRequest.getValue()); + } + map.put("id", systemGroupData.getId()); + t = CrmebUtil.mapToObj(map, cls); + + return t; + } + + /** + * 获取个人中心菜单 + * @return HashMap + */ + @Override + public HashMap getMenuUser() { + HashMap map = new HashMap<>(); + map.put("routine_my_menus", getListMapByGid(SysGroupDataConstants.GROUP_DATA_ID_USER_CENTER_MENU)); + map.put("routine_my_banner", getListMapByGid(SysGroupDataConstants.GROUP_DATA_ID_USER_CENTER_BANNER)); + return map; + } + + /** + * 获取列表通过gid + * @param gid gid + * @return 列表 + */ + @Override + public List findListByGid(Integer gid) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(SystemGroupData::getGid, gid); + lqw.orderByAsc(SystemGroupData::getSort).orderByAsc(SystemGroupData::getId); + return dao.selectList(lqw); + } + + /** + * 删除通过gid + * @param gid gid + * @return Boolean + */ + @Override + public Boolean deleteByGid(Integer gid) { + LambdaUpdateWrapper luw = Wrappers.lambdaUpdate(); + luw.eq(SystemGroupData::getGid, gid); + int delete = dao.delete(luw); + if (delete > 0) { + return Boolean.TRUE; + } + return Boolean.FALSE; + } + +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemGroupServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemGroupServiceImpl.java new file mode 100644 index 0000000..e1e671d --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemGroupServiceImpl.java @@ -0,0 +1,100 @@ +package com.zbkj.service.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.request.SystemGroupRequest; +import com.zbkj.common.request.SystemGroupSearchRequest; +import com.github.pagehelper.PageHelper; +import com.zbkj.common.model.system.SystemGroup; +import com.zbkj.service.dao.SystemGroupDao; +import com.zbkj.service.service.SystemGroupService; +import com.zbkj.service.service.UserService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * SystemGroupServiceImpl 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class SystemGroupServiceImpl extends ServiceImpl implements SystemGroupService { + + @Resource + private SystemGroupDao dao; + + @Autowired + private UserService userService; + + /** + * 列表 + * @param request 请求参数 + * @param pageParamRequest 分页类参数 + * @return List + */ + @Override + public List getList(SystemGroupSearchRequest request, PageParamRequest pageParamRequest) { + PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + + //带 SystemGroup 类的多条件查询 + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + if(!StringUtils.isBlank(request.getKeywords())){ + lambdaQueryWrapper.like(SystemGroup::getName, request.getKeywords()); + } + lambdaQueryWrapper.orderByDesc(SystemGroup::getId); + return dao.selectList(lambdaQueryWrapper); + } + + /** + * 新增组合数据 + * @param systemGroupRequest 新增参数 + */ + @Override + public Boolean add(SystemGroupRequest systemGroupRequest) { + SystemGroup systemGroup = new SystemGroup(); + BeanUtils.copyProperties(systemGroupRequest, systemGroup); + return save(systemGroup); + } + + /** + * 删除组合数据表 + * @param id Integer + */ + @Override + public Boolean delete(Integer id) { + boolean remove = removeById(id); + if (remove) { + // 删除用户对应已经存在的分组标签 虽然数据库用的是String类型但逻辑仅仅只存储一个数据,这里直接删除对应的用户分组id即可 + userService.clearGroupByGroupId(id.toString()); + } + return remove; + } + + /** + * 修改组合数据表 + * @param id integer id + * @param systemGroupRequest 修改参数 + */ + @Override + public Boolean edit(Integer id, SystemGroupRequest systemGroupRequest) { + SystemGroup systemGroup = new SystemGroup(); + BeanUtils.copyProperties(systemGroupRequest, systemGroup); + systemGroup.setId(id); + return updateById(systemGroup); + } + +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemMenuServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemMenuServiceImpl.java new file mode 100644 index 0000000..ae455f8 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemMenuServiceImpl.java @@ -0,0 +1,291 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.model.system.SystemMenu; +import com.zbkj.common.request.SystemMenuRequest; +import com.zbkj.common.request.SystemMenuSearchRequest; +import com.zbkj.common.utils.RedisUtil; +import com.zbkj.common.vo.MenuCheckTree; +import com.zbkj.common.vo.MenuCheckVo; +import com.zbkj.service.dao.SystemMenuDao; +import com.zbkj.service.service.SystemMenuService; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; +import java.util.stream.Collectors; + +/** + * SystemMenuServiceImpl 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class SystemMenuServiceImpl extends ServiceImpl implements SystemMenuService { + + @Resource + private SystemMenuDao dao; + + @Autowired + private RedisUtil redisUtil; + + private static final String CACHE_LIST_KEY = "menuList"; + + /** + * 通过权限获取管理员可访问目录 + * @return List + */ + @Override + public List findCatalogueByPermission(List permissionsList) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(SystemMenu::getIsDelte, false); + lqw.eq(SystemMenu::getIsShow, true); + lqw.ne(SystemMenu::getMenuType, "A"); + lqw.in(SystemMenu::getPerms, permissionsList); + lqw.groupBy(SystemMenu::getId); + return dao.selectList(lqw); + } + + /** + * 获取所有菜单 + * @return List + */ + @Override + public List findAllCatalogue() { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(SystemMenu::getIsDelte, false); + lqw.eq(SystemMenu::getIsShow, true); + lqw.ne(SystemMenu::getMenuType, "A"); + return dao.selectList(lqw); + } + + /** + * 菜单列表 + * @param request 请求参数 + */ + @Override + public List getAdminList(SystemMenuSearchRequest request) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + if (StrUtil.isNotEmpty(request.getName())) { + lqw.like(SystemMenu::getName, request.getName()); + } + if (StrUtil.isNotEmpty(request.getMenuType())) { + lqw.eq(SystemMenu::getName, request.getMenuType()); + } + lqw.eq(SystemMenu::getIsDelte, false); + lqw.orderByDesc(SystemMenu::getSort); + lqw.orderByAsc(SystemMenu::getId); + return dao.selectList(lqw); + } + + /** + * 新增菜单 + * @param request 菜单参数 + * @return Boolean + */ + @Override + public Boolean add(SystemMenuRequest request) { + if ("C".equals(request.getMenuType()) && StrUtil.isEmpty(request.getComponent())) { + throw new CrmebException("菜单类型的组件路径不能为空"); + } + if ("A".equals(request.getMenuType()) && StrUtil.isEmpty(request.getPerms())) { + throw new CrmebException("按钮类型的权限表示不能为空"); + } + SystemMenu systemMenu = new SystemMenu(); + request.setId(null); + BeanUtils.copyProperties(request, systemMenu); + boolean save = save(systemMenu); + if (save) { + redisUtil.delete(CACHE_LIST_KEY); + } + return save; + } + + /** + * 根据id删除菜单 + * @param id 菜单id + * @return Boolean + */ + @Override + public Boolean deleteById(Integer id) { + SystemMenu systemMenu = getInfoById(id); + systemMenu.setIsDelte(true); + if ("A".equals(systemMenu.getMenuType())) { + boolean update = updateById(systemMenu); + if (update) { + redisUtil.delete(CACHE_LIST_KEY); + } + return update; + } + List childList = findAllChildListByPid(id); + if (CollUtil.isEmpty(childList)) { + boolean update = updateById(systemMenu); + if (update) { + redisUtil.delete(CACHE_LIST_KEY); + } + return update; + } + childList.forEach(e -> e.setIsDelte(true)); + childList.add(systemMenu); + boolean updateBatch = updateBatchById(childList); + if (updateBatch) { + redisUtil.delete(CACHE_LIST_KEY); + } + return updateBatch; + } + + /** + * 修改菜单 + * @param request 菜单参数 + * @return Boolean + */ + @Override + public Boolean edit(SystemMenuRequest request) { + if (ObjectUtil.isNull(request.getId())) { + throw new CrmebException("系统菜单id不能为空"); + } + if ("C".equals(request.getMenuType()) && StrUtil.isEmpty(request.getComponent())) { + throw new CrmebException("菜单类型的组件路径不能为空"); + } + if ("A".equals(request.getMenuType()) && StrUtil.isEmpty(request.getPerms())) { + throw new CrmebException("按钮类型的权限表示不能为空"); + } + SystemMenu systemMenu = new SystemMenu(); + BeanUtils.copyProperties(request, systemMenu); + boolean update = updateById(systemMenu); + if (update) { + redisUtil.delete(CACHE_LIST_KEY); + } + return update; + } + + /** + * 获取菜单详情 + * @param id 菜单id + * @return SystemMenu + */ + @Override + public SystemMenu getInfo(Integer id) { + SystemMenu systemMenu = getInfoById(id); + systemMenu.setIsDelte(null); + systemMenu.setCreateTime(null); + systemMenu.setUpdateTime(null); + return systemMenu; + } + + /** + * 修改菜单显示状态 + * @param id 菜单id + * @return Boolean + */ + @Override + public Boolean updateShowStatus(Integer id) { + SystemMenu systemMenu = getInfoById(id); + systemMenu.setIsShow(!systemMenu.getIsShow()); + boolean update = updateById(systemMenu); + if (update) { + redisUtil.delete(CACHE_LIST_KEY); + } + return update; + } + + /** + * 获取菜单缓存列表 + */ + @Override + public List getCacheList() { + if (redisUtil.exists(CACHE_LIST_KEY)) { + return redisUtil.get(CACHE_LIST_KEY); + } + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(SystemMenu::getIsDelte, false); + List systemMenuList = dao.selectList(lqw); + redisUtil.set(CACHE_LIST_KEY, systemMenuList); + return systemMenuList; + } + + /** + * 菜单缓存树 + * @return List + */ + @Override + public List getCacheTree() { + List menuList = getCacheList(); + List voList = menuList.stream().map(e -> { + MenuCheckVo menuCheckVo = new MenuCheckVo(); + BeanUtils.copyProperties(e, menuCheckVo); + return menuCheckVo; + }).collect(Collectors.toList()); + MenuCheckTree menuTree = new MenuCheckTree(voList); + return menuTree.buildTree(); + } + + @Override + public List getAllPermissions() { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(SystemMenu::getIsDelte, false); + lqw.ne(SystemMenu::getMenuType, "M"); + return dao.selectList(lqw); + } + + /** + * 通过用户id获取权限 + * @param userId 用户id + * @return List + */ + @Override + public List findPermissionByUserId(Integer userId) { + return dao.findPermissionByUserId(userId); + } + + /** + * 获取用户路由 + * @param userId 用户id + * @return List + */ + @Override + public List getMenusByUserId(Integer userId) { + return dao.getMenusByUserId(userId); + } + + /** + * 根据菜单id获取所有下级对象 + * @param pid 菜单id + * @return List + */ + private List findAllChildListByPid(Integer pid) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(SystemMenu::getPid, pid); + lqw.eq(SystemMenu::getIsDelte, false); + return dao.selectList(lqw); + } + + /** + * 获取详细信息 + * @param id 菜单id + * @return SystemMenu + */ + private SystemMenu getInfoById(Integer id) { + SystemMenu systemMenu = getById(id); + if (ObjectUtil.isNull(systemMenu) || systemMenu.getIsDelte()) { + throw new CrmebException("系统菜单不存在"); + } + return systemMenu; + } +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemNotificationServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemNotificationServiceImpl.java new file mode 100644 index 0000000..a6a1322 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemNotificationServiceImpl.java @@ -0,0 +1,309 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.constants.NotifyConstants; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.model.sms.SmsTemplate; +import com.zbkj.common.model.system.SystemNotification; +import com.zbkj.common.model.wechat.TemplateMessage; +import com.zbkj.common.request.NotificationInfoRequest; +import com.zbkj.common.request.NotificationSearchRequest; +import com.zbkj.common.request.NotificationUpdateRequest; +import com.zbkj.common.response.NotificationInfoResponse; +import com.zbkj.service.dao.SystemNotificationDao; +import com.zbkj.service.service.SmsTemplateService; +import com.zbkj.service.service.SystemNotificationService; +import com.zbkj.service.service.TemplateMessageService; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.support.TransactionTemplate; + +import javax.annotation.Resource; +import java.util.List; +import java.util.stream.Collectors; + +/** + * SystemNotificationServiceImpl 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class SystemNotificationServiceImpl extends ServiceImpl implements SystemNotificationService { + + @Resource + private SystemNotificationDao dao; + + @Autowired + private TemplateMessageService templateMessageService; + + @Autowired + private SmsTemplateService smsTemplateService; + + @Autowired + private TransactionTemplate transactionTemplate; + + /** + * 系统通知列表 + * @param request 查询对象 + * @return List + */ + @Override + public List getList(NotificationSearchRequest request) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + if (ObjectUtil.isNotNull(request.getSendType())) { + lqw.eq(SystemNotification::getSendType, request.getSendType()); + } + return dao.selectList(lqw); + } + + /** + * 公众号模板开关 + * @param id 通知id + * @return Boolean + */ + @Override + public Boolean wechatSwitch(Integer id) { + SystemNotification systemNotification = getByIdException(id); + if (systemNotification.getIsWechat().equals(0)) { + throw new CrmebException("通知没有配置公众号模板"); + } + LambdaUpdateWrapper luw = Wrappers.lambdaUpdate(); + luw.set(SystemNotification::getIsWechat, systemNotification.getIsWechat().equals(1) ? 2 : 1); + luw.eq(SystemNotification::getId, id); + return update(luw); + } + + /** + * 小程序订阅模板开关 + * @param id 通知id + * @return Boolean + */ + @Override + public Boolean routineSwitch(Integer id) { + SystemNotification systemNotification = getByIdException(id); + if (systemNotification.getIsRoutine().equals(0)) { + throw new CrmebException("通知没有配置小程序订阅模板"); + } + LambdaUpdateWrapper luw = Wrappers.lambdaUpdate(); + luw.set(SystemNotification::getIsRoutine, systemNotification.getIsRoutine().equals(1) ? 2 : 1); + luw.eq(SystemNotification::getId, id); + return update(luw); + } + + /** + * 发送短信开关 + * @param id 通知id + * @return Boolean + */ + @Override + public Boolean smsSwitch(Integer id) { + SystemNotification systemNotification = getByIdException(id); + if (systemNotification.getIsSms().equals(0)) { + throw new CrmebException("通知没有配置短信"); + } + LambdaUpdateWrapper luw = Wrappers.lambdaUpdate(); + luw.set(SystemNotification::getIsSms, systemNotification.getIsSms().equals(1) ? 2 : 1); + luw.eq(SystemNotification::getId, id); + return update(luw); + } + + /** + * 通知详情 + * @param request 详情请求参数 + * @return NotificationInfoResponse + */ + @Override + public NotificationInfoResponse getDetail(NotificationInfoRequest request) { + SystemNotification notification = getByIdException(request.getId()); + NotificationInfoResponse response = new NotificationInfoResponse(); + if ("wechat".equals(request.getDetailType())) { + if (notification.getIsWechat().equals(0)) { + throw new CrmebException("请先配置公众号模板消息"); + } + TemplateMessage templateMessage = templateMessageService.info(notification.getWechatId()); + BeanUtils.copyProperties(templateMessage, response); + response.setStatus(notification.getIsWechat()); + } + if ("routine".equals(request.getDetailType())) { + if (notification.getIsRoutine().equals(0)) { + throw new CrmebException("请先配置小程序订阅消息"); + } + TemplateMessage templateMessage = templateMessageService.info(notification.getRoutineId()); + BeanUtils.copyProperties(templateMessage, response); + response.setStatus(notification.getIsRoutine()); + } + if ("sms".equals(request.getDetailType())) { + if (notification.getIsSms().equals(0)) { + throw new CrmebException("请先配置短信模板"); + } + SmsTemplate smsTemplate = smsTemplateService.getDetail(notification.getSmsId()); + BeanUtils.copyProperties(smsTemplate, response); + response.setStatus(notification.getIsSms()); + } + return response; + } + + /** + * 根据标识查询信息 + * @param mark 标识 + * @return SystemNotification + */ + @Override + public SystemNotification getByMark(String mark) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(SystemNotification::getMark, mark); + return dao.selectOne(lqw); + } + + /** + * 获取微信相关列表 + * @param type routine-小程序,public-公众号 + */ + @Override + public List getListByWechat(String type) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + if ("routine".equals(type)) { + lqw.ne(SystemNotification::getIsRoutine, 0); + } + if ("public".equals(type)) { + lqw.ne(SystemNotification::getIsWechat, 0); + } + return dao.selectList(lqw); + } + + /** + * 修改通知 + * @param request 请求参数 + * @return Boolean + */ + @Override + public Boolean modify(NotificationUpdateRequest request) { + if (!"sms".equals(request.getDetailType()) && StrUtil.isEmpty(request.getTempId())) { + throw new CrmebException("模板id不能为空"); + } + SystemNotification notification = getByIdException(request.getId()); + if ("wechat".equals(request.getDetailType())) { + if (notification.getIsWechat().equals(0)) { + throw new CrmebException("请先为通知配置公众号模板"); + } + TemplateMessage templateMessage = templateMessageService.info(notification.getWechatId()); + if (templateMessage.getTempId().equals(request.getTempId()) && notification.getIsWechat().equals(request.getStatus())) { + return true; + } + return transactionTemplate.execute(e -> { + if (!templateMessage.getTempId().equals(request.getTempId())) { + templateMessage.setTempId(request.getTempId()); + templateMessageService.updateById(templateMessage); + } + if (!notification.getIsWechat().equals(request.getStatus())) { + notification.setIsWechat(request.getStatus()); + updateById(notification); + } + return Boolean.TRUE; + }); + } + if ("routine".equals(request.getDetailType())) { + if (notification.getIsRoutine().equals(0)) { + throw new CrmebException("请先为通知配置小程序订阅模板"); + } + TemplateMessage templateMessage = templateMessageService.info(notification.getRoutineId()); + if (templateMessage.getTempId().equals(request.getTempId()) && notification.getIsRoutine().equals(request.getStatus())) { + return true; + } + return transactionTemplate.execute(e -> { + if (!templateMessage.getTempId().equals(request.getTempId())) { + templateMessage.setTempId(request.getTempId()); + templateMessageService.updateById(templateMessage); + } + if (!notification.getIsRoutine().equals(request.getStatus())) { + notification.setIsRoutine(request.getStatus()); + updateById(notification); + } + return Boolean.TRUE; + }); + } + if ("sms".equals(request.getDetailType()) && !notification.getIsSms().equals(request.getStatus())) { + notification.setIsSms(request.getStatus()); + return updateById(notification); + } + return true; + } + + /** + * 获取小程序订阅模板编号(小程序端调用) + * @param type 场景类型 + * 支付之前:beforePay + * 支付成功通知 + * 支付成功:afterPay + * 发货、配送、收货 + * 申请退款:refundApply + * 退款成功、拒绝退款 + * 充值之前:beforeRecharge + * 充值成功通知 + * 创建砍价:createBargain + * 砍价成功、失败通知 + * 参与拼团:pink + * 拼团成功、失败通知 + * 取消拼团:cancelPink + * 退款成功、拒绝退款 + * @return List + */ + @Override + public List getMiniTempList(String type) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(SystemNotification::getIsRoutine, 1); + switch (type) { + case "beforePay":// 支付之前 + lqw.eq(SystemNotification::getMark, NotifyConstants.PAY_SUCCESS_MARK); + break; + case "afterPay":// 支付成功 + lqw.in(SystemNotification::getMark, NotifyConstants.DELIVER_GOODS_MARK, NotifyConstants.FULFILLMENT_ORDER_MARK, NotifyConstants.RECEIPT_GOODS_MARK); + break; + case "refundApply":// 申请退款 + lqw.eq(SystemNotification::getMark, "-1"); + break; + case "beforeRecharge":// 充值之前 + lqw.eq(SystemNotification::getMark, "-1"); + break; + case "createBargain":// 创建砍价 + lqw.in(SystemNotification::getMark, NotifyConstants.BARGAINING_SUCCESS_MARK); + break; + case "pink":// 参与拼团 + lqw.in(SystemNotification::getMark, NotifyConstants.GROUP_SUCCESS_MARK); + break; + case "cancelPink":// cancelPink + lqw.eq(SystemNotification::getMark, "-1"); + break; + } + List list = dao.selectList(lqw); + if (CollUtil.isEmpty(list)) { + return CollUtil.newArrayList(); + } + List tidList = list.stream().map(SystemNotification::getRoutineId).collect(Collectors.toList()); + return templateMessageService.getByIdList(tidList); + } + + private SystemNotification getByIdException(Integer id) { + SystemNotification notification = getById(id); + if (ObjectUtil.isNull(notification)) { + throw new CrmebException("系统通知不存在"); + } + return notification; + } +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemRoleMenuServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemRoleMenuServiceImpl.java new file mode 100644 index 0000000..e6b5842 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemRoleMenuServiceImpl.java @@ -0,0 +1,60 @@ +package com.zbkj.service.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.model.system.SystemRoleMenu; +import com.zbkj.service.dao.SystemRoleMenuDao; +import com.zbkj.service.service.SystemRoleMenuService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; +import java.util.stream.Collectors; + +/** + * SystemRoleMenuServiceImpl 接口实现 + * 角色菜单关联服务实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class SystemRoleMenuServiceImpl extends ServiceImpl implements SystemRoleMenuService { + + @Resource + private SystemRoleMenuDao dao; + + /** + * 通过角色id删除 + * @param rid 角色id + */ + @Override + public Boolean deleteByRid(Integer rid) { + LambdaUpdateWrapper luw = Wrappers.lambdaUpdate(); + luw.eq(SystemRoleMenu::getRid, rid); + return dao.delete(luw) > 0; + } + + /** + * 通过角色id获取菜单列表 + * @param rid 角色id + * @return List + */ + @Override + public List getMenuListByRid(Integer rid) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.select(SystemRoleMenu::getMenuId); + lqw.eq(SystemRoleMenu::getRid, rid); + List roleMenuList = dao.selectList(lqw); + return roleMenuList.stream().map(SystemRoleMenu::getMenuId).collect(Collectors.toList()); + } +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemRoleServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemRoleServiceImpl.java new file mode 100644 index 0000000..013c707 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemRoleServiceImpl.java @@ -0,0 +1,309 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.model.system.SystemAdmin; +import com.zbkj.common.model.system.SystemMenu; +import com.zbkj.common.model.system.SystemRole; +import com.zbkj.common.model.system.SystemRoleMenu; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.request.SystemRoleRequest; +import com.zbkj.common.request.SystemRoleSearchRequest; +import com.zbkj.common.response.RoleInfoResponse; +import com.zbkj.common.utils.CrmebUtil; +import com.zbkj.common.utils.SecurityUtil; +import com.zbkj.common.vo.CategoryTreeVo; +import com.zbkj.common.vo.LoginUserVo; +import com.zbkj.common.vo.MenuCheckTree; +import com.zbkj.common.vo.MenuCheckVo; +import com.github.pagehelper.PageHelper; +import com.zbkj.service.dao.SystemRoleDao; +import com.zbkj.service.service.CategoryService; +import com.zbkj.service.service.SystemMenuService; +import com.zbkj.service.service.SystemRoleMenuService; +import com.zbkj.service.service.SystemRoleService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.support.TransactionTemplate; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +/** + * SystemRoleServiceImpl 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class SystemRoleServiceImpl extends ServiceImpl implements SystemRoleService { + + @Resource + private SystemRoleDao dao; + + @Autowired + private CategoryService categoryService; + + @Autowired + private TransactionTemplate transactionTemplate; + + @Autowired + private SystemRoleMenuService systemRoleMenuService; + + @Autowired + private SystemMenuService systemMenuService; + + /** + * 获取所有角色 + * @return List + */ + @Override + public List getAllList() { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(SystemRole::getStatus, true); + lambdaQueryWrapper.orderByAsc(SystemRole::getId); + return dao.selectList(lambdaQueryWrapper); + } + + /** + * 列表 + * @param request 请求参数 + * @param pageParamRequest 分页类参数 + * @return List + */ + @Override + public List getList(SystemRoleSearchRequest request, PageParamRequest pageParamRequest) { + PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.select(SystemRole::getId, SystemRole::getRoleName, SystemRole::getStatus, + SystemRole::getCreateTime, SystemRole::getUpdateTime); + if (ObjectUtil.isNotNull(request.getStatus())) { + lambdaQueryWrapper.eq(SystemRole::getStatus, request.getStatus()); + } + if (ObjectUtil.isNotNull(request.getRoleName())) { + lambdaQueryWrapper.like(SystemRole::getRoleName, request.getRoleName()); + } + lambdaQueryWrapper.orderByAsc(SystemRole::getId); + return dao.selectList(lambdaQueryWrapper); + } + + /** + * 根据id集合获取对应权限列表 + * @param ids id集合 + * @return 对应的权限列表 + */ + @Override + public List getListInIds(List ids) { + return dao.selectBatchIds(ids); + } + + /** + * 带结构的无线级分类 + */ + @Override + public List menu() { + List categoryIdList = getRoleListInRoleId(); + System.out.println("权限列表:categoryIdList:"+ JSON.toJSONString(categoryIdList)); + return categoryService.getListTree(Constants.CATEGORY_TYPE_MENU, 1, categoryIdList); + } + + /** + * 修改身份状态 + */ + @Override + public Boolean updateStatus(Integer id, Boolean status) { + SystemRole role = getById(id); + if (ObjectUtil.isNull(role)) { + throw new CrmebException("身份不存在"); + } + if (role.getStatus().equals(status)) { + return true; + } + role.setStatus(status); + return updateById(role); + } + + /** + * 添加身份 + * @param systemRoleRequest 身份参数 + * @return Boolean + */ + @Override + public Boolean add(SystemRoleRequest systemRoleRequest) { + if (existName(systemRoleRequest.getRoleName(), null)) { + throw new CrmebException("角色名称重复"); + } + List ruleList = Stream.of(systemRoleRequest.getRules().split(",")).map(Integer::valueOf).distinct().collect(Collectors.toList()); + SystemRole systemRole = new SystemRole(); + BeanUtils.copyProperties(systemRoleRequest, systemRole); + systemRole.setId(null); + systemRole.setRules(""); + + return transactionTemplate.execute(e -> { + boolean save = save(systemRole); + if (!save) { + return Boolean.FALSE; + } + List roleMenuList = ruleList.stream().map(rule -> { + SystemRoleMenu roleMenu = new SystemRoleMenu(); + roleMenu.setRid(systemRole.getId()); + roleMenu.setMenuId(rule); + return roleMenu; + }).collect(Collectors.toList()); + systemRoleMenuService.saveBatch(roleMenuList, 100); + return Boolean.TRUE; + }); + } + + /** + * 判断角色名称是否存在 + * @param roleName 角色名称 + * @param id 角色id + * @return Boolean + */ + private Boolean existName(String roleName, Integer id) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(SystemRole::getRoleName, roleName); + if (ObjectUtil.isNotNull(id)) { + lqw.ne(SystemRole::getId, id); + } + lqw.last(" limit 1"); + Integer count = dao.selectCount(lqw); + return count > 0; + } + + /** + * 修改身份管理表 + * @param systemRoleRequest 修改参数 + */ + @Override + public Boolean edit(SystemRoleRequest systemRoleRequest) { + SystemRole role = getById(systemRoleRequest.getId()); + if (ObjectUtil.isNull(role)) { + throw new CrmebException("角色不存在"); + } + if (!role.getRoleName().equals(systemRoleRequest.getRoleName())) { + if (existName(systemRoleRequest.getRoleName(), systemRoleRequest.getId())) { + throw new CrmebException("角色名称重复"); + } + } + SystemRole systemRole = new SystemRole(); + BeanUtils.copyProperties(systemRoleRequest, systemRole); + systemRole.setRules(""); + List ruleList = Stream.of(systemRoleRequest.getRules().split(",")).map(Integer::valueOf).distinct().collect(Collectors.toList()); + List roleMenuList = ruleList.stream().map(rule -> { + SystemRoleMenu roleMenu = new SystemRoleMenu(); + roleMenu.setRid(systemRole.getId()); + roleMenu.setMenuId(rule); + return roleMenu; + }).collect(Collectors.toList()); + return transactionTemplate.execute(e -> { + updateById(systemRole); + systemRoleMenuService.deleteByRid(systemRole.getId()); + systemRoleMenuService.saveBatch(roleMenuList, 100); + return Boolean.TRUE; + }); + } + + /** + * 删除角色 + * @param id 角色id + * @return Boolean + */ + @Override + public Boolean delete(Integer id) { + SystemRole systemRole = getById(id); + if (ObjectUtil.isNull(systemRole)) { + throw new CrmebException("角色已删除"); + } + return transactionTemplate.execute(e -> { + dao.deleteById(id); + systemRoleMenuService.deleteByRid(id); + return Boolean.TRUE; + }); + } + + /** + * 获取角色详情 + * @param id 角色id + * @return RoleInfoResponse + */ + @Override + public RoleInfoResponse getInfo(Integer id) { + SystemRole systemRole = getById(id); + if (ObjectUtil.isNull(systemRole)) { + throw new CrmebException("角色不存在"); + } + // 查询角色对应的菜单(权限) + List menuList = systemMenuService.getCacheList(); + List menuIdList = systemRoleMenuService.getMenuListByRid(id); + + List menuCheckVoList = menuList.stream().map(menu -> { + MenuCheckVo menuCheckVo = new MenuCheckVo(); + BeanUtils.copyProperties(menu, menuCheckVo); + if (menuIdList.contains(menu.getId())) { + menuCheckVo.setChecked(true); + } else { + menuCheckVo.setChecked(false); + } + return menuCheckVo; + }).collect(Collectors.toList()); + + RoleInfoResponse response = new RoleInfoResponse(); + BeanUtils.copyProperties(systemRole, response); + response.setMenuList(new MenuCheckTree(menuCheckVoList).buildTree()); + return response; + } + + private List getRoleListInRoleId(){ + //获取当前用户的所有权限 +// SystemAdmin systemAdmin = systemAdminService.getInfo(); + LoginUserVo loginUserVo = SecurityUtil.getLoginUserVo(); + SystemAdmin systemAdmin = loginUserVo.getUser(); + if (null == systemAdmin || StringUtils.isBlank(systemAdmin.getRoles())){ + throw new CrmebException("没有权限访问!"); + } + + //获取用户权限组 + List systemRoleList = getVoListInId(systemAdmin.getRoles()); + if (systemRoleList.size() < 1){ + throw new CrmebException("没有权限访问!"); + } + + //获取用户权限规则 + List categoryIdList = new ArrayList<>(); + for (SystemRole systemRole : systemRoleList) { + if (StringUtils.isBlank(systemRole.getRules())){ + continue; + } + + categoryIdList.addAll(CrmebUtil.stringToArray(systemRole.getRules())); + } + + return categoryIdList; + } + + private List getVoListInId(String roles) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.in(SystemRole::getId, CrmebUtil.stringToArray(roles)); + return dao.selectList(lambdaQueryWrapper); + } + +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemStoreServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemStoreServiceImpl.java new file mode 100644 index 0000000..864ca4f --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemStoreServiceImpl.java @@ -0,0 +1,298 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.request.StoreNearRequest; +import com.zbkj.common.request.SystemStoreRequest; +import com.zbkj.common.response.StoreNearResponse; +import com.zbkj.common.vo.SystemStoreNearVo; +import com.github.pagehelper.PageHelper; +import com.zbkj.common.utils.CrmebUtil; +import com.zbkj.common.model.system.SystemStore; +import com.zbkj.service.dao.SystemStoreDao; +import com.zbkj.service.service.SystemAttachmentService; +import com.zbkj.service.service.SystemConfigService; +import com.zbkj.service.service.SystemStoreService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +/** + * SystemStoreServiceImpl 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class SystemStoreServiceImpl extends ServiceImpl implements SystemStoreService { + + @Resource + private SystemStoreDao dao; + + @Autowired + private SystemConfigService systemConfigService; + + @Autowired + private SystemAttachmentService systemAttachmentService; + + + /** + * 分页显示门店 + * @param keywords 搜索条件 + * @param pageParamRequest 分页参数 + */ + @Override + public List getList(String keywords, Integer status, PageParamRequest pageParamRequest) { + PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + if (status == 1) { // 显示中 + lambdaQueryWrapper.eq(SystemStore::getIsShow, true).eq(SystemStore::getIsDel, false); + }else if (status == 2) { // 回收站中 + lambdaQueryWrapper.eq(SystemStore::getIsDel, true); + } else { // 隐藏中的 + lambdaQueryWrapper.eq(SystemStore::getIsShow, false).eq(SystemStore::getIsDel, false); + } + if (!StringUtils.isBlank(keywords)) { + lambdaQueryWrapper.and(i -> i.or().like(SystemStore::getName, keywords) + .or().like(SystemStore::getPhone, keywords)); + } + lambdaQueryWrapper.orderByDesc(SystemStore::getUpdateTime).orderByDesc(SystemStore::getId); + return dao.selectList(lambdaQueryWrapper); + } + + /** + * 根据基本参数查询 + * @param systemStore 基本参数 + * @return 门店结果 + */ + @Override + public SystemStore getByCondition(SystemStore systemStore) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.setEntity(systemStore); + return dao.selectOne(lqw); + } + + /** + * 修改门店显示状态 + * @param id integer id + * @param status 状态 + * @return boolean + */ + @Override + public Boolean updateStatus(Integer id, Boolean status) { + SystemStore systemStore = getById(id); + if (ObjectUtil.isNull(systemStore)) { + throw new CrmebException("门店自提点不存在"); + } + if (systemStore.getIsShow().equals(status)) { + return true; + } + systemStore.setIsShow(status); + return updateById(systemStore); + } + + /** + * 删除门店自提 + * @param id Integer + * @return boolean + */ + @Override + public Boolean delete(Integer id) { + SystemStore systemStore = new SystemStore(); + systemStore.setId(id); + systemStore.setIsDel(true); + dao.updateById(systemStore); + return true; + } + + /** + * 数量 + * @return HashMap + */ + @Override + public HashMap getCount() { + HashMap map = new HashMap<>(); + map.put("show", getCountByStatus(1));// 显示中 + map.put("hide", getCountByStatus(0));// 隐藏 + map.put("recycle", getCountByStatus(2));// 回收站 + return map; + } + + /** + * 根据状态获取总数 + * @return HashMap + */ + private Integer getCountByStatus(Integer status) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + if (status == 2) { + lambdaQueryWrapper.eq(SystemStore::getIsDel, true); + } else { + lambdaQueryWrapper.eq(SystemStore::getIsShow, status).eq(SystemStore::getIsDel, false); + } + lambdaQueryWrapper.orderByDesc(SystemStore::getUpdateTime).orderByDesc(SystemStore::getId); + return dao.selectCount(lambdaQueryWrapper); + } + + /** + * 根据id集合查询数据,返回 map + * @param storeIdList List id集合 + * @return HashMap + */ + @Override + public HashMap getMapInId(List storeIdList) { + HashMap map = new HashMap<>(); + if (storeIdList.size() < 1) { + return map; + } + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.in(SystemStore::getId, storeIdList); + List systemStoreList = dao.selectList(lambdaQueryWrapper); + if (systemStoreList.size() < 1) { + return map; + } + for (SystemStore systemStore : systemStoreList) { + map.put(systemStore.getId(), systemStore); + } + return map; + } + + /** + * 附近的提货点 + * @param request StoreNearRequest 经纬度参数 + * @param pageParamRequest PageParamRequest 分页参数 + * @return StoreNearResponse + */ + @Override + public StoreNearResponse getNearList(StoreNearRequest request, PageParamRequest pageParamRequest) { + StoreNearResponse storeNearResponse = new StoreNearResponse(); + storeNearResponse.setTengXunMapKey(systemConfigService.getValueByKey(Constants.CONFIG_SITE_TENG_XUN_MAP_KEY)); + + PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + + List storeNearVoArrayList = new ArrayList<>(); + + if (StringUtils.isNotBlank(request.getLatitude()) && StringUtils.isNotBlank(request.getLongitude())) { + storeNearVoArrayList = dao.getNearList(request); + } else { + List list = getList(null, 1, pageParamRequest); + for (SystemStore systemStore : list) { + SystemStoreNearVo systemStoreNearVo = new SystemStoreNearVo(); + BeanUtils.copyProperties(systemStore, systemStoreNearVo); + storeNearVoArrayList.add(systemStoreNearVo); + } + } + + storeNearResponse.setList(storeNearVoArrayList); + return storeNearResponse; + } + + /** + * 新增门店自提 + * @param request SystemStoreRequest 新增参数 + * @return Boolean + */ + @Override + public Boolean create(SystemStoreRequest request) { + SystemStore systemStore = new SystemStore(); + BeanUtils.copyProperties(request, systemStore); + clearPrefix(systemStore); + splitLat(systemStore); + return save(systemStore); + } + + /** + * 修改门店自提 + * @param id integer id + * @param request 修改参数 + * @return Boolean + */ + @Override + public Boolean update(Integer id, SystemStoreRequest request) { + SystemStore systemStore = new SystemStore(); + BeanUtils.copyProperties(request, systemStore); + systemStore.setId(id); + splitLat(systemStore); + clearPrefix(systemStore); + return updateById(systemStore); + } + + /** + * 彻底删除 + * @param id 提货点编号 + * @return Boolean + */ + @Override + public Boolean completeLyDelete(Integer id) { + SystemStore systemStore = getById(id); + if (ObjectUtil.isNull(systemStore)) throw new CrmebException("提货点不存在!"); + int delete = dao.deleteById(id); + return delete > 0; + } + + /** + * 提货点恢复 + * @param id 提货点编号 + * @return Boolean + */ + @Override + public Boolean recovery(Integer id) { + SystemStore systemStore = getById(id); + if (ObjectUtil.isNull(systemStore)) throw new CrmebException("提货点不存在!"); + if (!systemStore.getIsDel()) return Boolean.TRUE; + systemStore.setIsDel(false); + return updateById(systemStore); + } + + /** + * 门店自提详情 + * @param id Integer + * @return SystemStore + */ + @Override + public SystemStore getInfo(Integer id) { + SystemStore systemStore = getById(id); + if (ObjectUtil.isNull(systemStore)) { + throw new CrmebException("门店自提点不存在"); + } + systemStore.setLatitude(systemStore.getLatitude() + "," + systemStore.getLongitude()); + return systemStore; + } + + /** + * 去掉图片前缀 + * @param systemStore SystemStore 新增参数 + */ + private void clearPrefix(SystemStore systemStore) { + systemStore.setImage(systemAttachmentService.clearPrefix(systemStore.getImage())); + } + + /** + * 分解经纬度 + * @param systemStore SystemStore 新增参数 + */ + private void splitLat(SystemStore systemStore) { + if (!StringUtils.isBlank(systemStore.getLatitude())) { + List list = CrmebUtil.stringToArrayStr(systemStore.getLatitude()); + systemStore.setLatitude(list.get(0)); + systemStore.setLongitude(list.get(1)); + } + } + +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemStoreStaffServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemStoreStaffServiceImpl.java new file mode 100644 index 0000000..36f9ad4 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemStoreStaffServiceImpl.java @@ -0,0 +1,164 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.request.SystemStoreStaffRequest; +import com.zbkj.common.response.SystemStoreStaffResponse; +import com.github.pagehelper.Page; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.zbkj.common.model.system.SystemStore; +import com.zbkj.common.model.system.SystemStoreStaff; +import com.zbkj.common.model.user.User; +import com.zbkj.service.dao.SystemStoreStaffDao; +import com.zbkj.service.service.SystemStoreService; +import com.zbkj.service.service.SystemStoreStaffService; +import com.zbkj.service.service.UserService; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.stream.Collectors; + +/** + * SystemStoreStaffServiceImpl 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class SystemStoreStaffServiceImpl extends ServiceImpl implements SystemStoreStaffService { + + @Resource + private SystemStoreStaffDao dao; + + @Autowired + private UserService userService; + + @Autowired + private SystemStoreService systemStoreService; + + /** + * 列表 + * @param storeId 门店id + * @param pageParamRequest 分页类参数 + * @return List + */ + @Override + public PageInfo getList(Integer storeId, PageParamRequest pageParamRequest) { + Page systemStorePage = PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + if (storeId > 0) { + lambdaQueryWrapper.eq(SystemStoreStaff::getStoreId, storeId); + } + ArrayList systemStoreStaffResponseArrayList = new ArrayList<>(); + List systemStoreStaffList = dao.selectList(lambdaQueryWrapper); + if (CollUtil.isEmpty(systemStoreStaffList)) { + return new PageInfo<>(); + } + + //用户信息 + List userIdList = systemStoreStaffList.stream().map(SystemStoreStaff::getUid).collect(Collectors.toList()); + HashMap userList = null; + if (userIdList.size() >= 1) { + userList = userService.getMapListInUid(userIdList); + } + //门店信息 + List storeIdList = systemStoreStaffList.stream().map(SystemStoreStaff::getStoreId).collect(Collectors.toList()); + HashMap storeList = null; + if (storeIdList.size() >= 1) { + storeList = systemStoreService.getMapInId(storeIdList); + } + for (SystemStoreStaff systemStoreStaff : systemStoreStaffList) { + SystemStoreStaffResponse systemStoreStaffResponse = new SystemStoreStaffResponse(); + BeanUtils.copyProperties(systemStoreStaff, systemStoreStaffResponse); + if (CollUtil.isNotEmpty(userList) && userList.containsKey(systemStoreStaff.getUid())) { + systemStoreStaffResponse.setUser(userList.get(systemStoreStaff.getUid())); + } + if (CollUtil.isNotEmpty(storeList) && storeList.containsKey(systemStoreStaff.getStoreId())) { + systemStoreStaffResponse.setSystemStore(storeList.get(systemStoreStaff.getStoreId())); + } + systemStoreStaffResponseArrayList.add(systemStoreStaffResponse); + } + return CommonPage.copyPageInfo(systemStorePage, systemStoreStaffResponseArrayList); + } + + /** + * 查询核销员列表 + * @param userIds uidList + * @return storeList + */ + private List getByAdminUserIds(List userIds) { + LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(); + lambdaQueryWrapper.in(SystemStoreStaff::getUid, userIds); + List existStaffs = dao.selectList(lambdaQueryWrapper); + return existStaffs.stream().distinct().collect(Collectors.toList()); + } + + /** + * 添加核销员 唯一验证 + * + * @param request 当前添加参数 + * @return 添加结果 + */ + @Override + public Boolean saveUnique(SystemStoreStaffRequest request) { + List userIds = new ArrayList<>(); + userIds.add(request.getUid()); + List existStaffs = getByAdminUserIds(userIds); + if (CollUtil.isNotEmpty(existStaffs) && existStaffs.size() > 0) throw new CrmebException(Constants.RESULT_VERIFICATION_USER_EXIST); + SystemStoreStaff systemStoreStaff = new SystemStoreStaff(); + BeanUtils.copyProperties(request, systemStoreStaff); + return dao.insert(systemStoreStaff) > 0; + } + + /** + * 更新核销员信息 + * @param id 核销员id + * @param systemStoreStaffRequest 更新参数 + */ + @Override + public Boolean edit(Integer id, SystemStoreStaffRequest systemStoreStaffRequest) { + SystemStoreStaff systemStoreStaff = new SystemStoreStaff(); + BeanUtils.copyProperties(systemStoreStaffRequest, systemStoreStaff); + systemStoreStaff.setId(id); + return updateById(systemStoreStaff); + } + + /** + * 修改核销员状态 + * @param id 核销员id + * @param status 状态 + * @return Boolean + */ + @Override + public Boolean updateStatus(Integer id, Integer status) { + SystemStoreStaff systemStoreStaff = getById(id); + if (ObjectUtil.isNull(systemStoreStaff)) { + throw new CrmebException("核销员不存在"); + } + if (systemStoreStaff.getStatus().equals(status)) { + return true; + } + systemStoreStaff.setStatus(status); + return updateById(systemStoreStaff); + } +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemUserLevelServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemUserLevelServiceImpl.java new file mode 100644 index 0000000..2a06bbf --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemUserLevelServiceImpl.java @@ -0,0 +1,252 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.model.system.SystemUserLevel; +import com.zbkj.common.request.SystemUserLevelRequest; +import com.zbkj.common.request.SystemUserLevelUpdateShowRequest; +import com.zbkj.service.dao.SystemUserLevelDao; +import com.zbkj.service.service.SystemAttachmentService; +import com.zbkj.service.service.SystemUserLevelService; +import com.zbkj.service.service.UserLevelService; +import com.zbkj.service.service.UserService; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.support.TransactionTemplate; + +import javax.annotation.Resource; +import java.util.List; + +/** + * SystemUserLevelServiceImpl 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class SystemUserLevelServiceImpl extends ServiceImpl implements SystemUserLevelService { + + @Resource + private SystemUserLevelDao dao; + + @Autowired + private SystemAttachmentService systemAttachmentService; + @Autowired + private UserLevelService userLevelService; + @Autowired + private UserService userService; + @Autowired + private TransactionTemplate transactionTemplate; + + + /** + * 分页显示设置用户等级表 + * @return List + */ + @Override + public List getList() { + LambdaQueryWrapper levelLambdaQueryWrapper = new LambdaQueryWrapper<>(); + levelLambdaQueryWrapper.eq(SystemUserLevel::getIsDel, false); + levelLambdaQueryWrapper.orderByAsc(SystemUserLevel::getGrade); + return dao.selectList(levelLambdaQueryWrapper); + } + + /** + * 新增设置用户等级表 + * @param request SystemUserLevelRequest 新增参数 + * @return boolean + * 等级名称不能重复 + * 等级级别不能重复 + */ + @Override + public Boolean create(SystemUserLevelRequest request) { + checkLevel(request); + SystemUserLevel systemUserLevel = new SystemUserLevel(); + BeanUtils.copyProperties(request, systemUserLevel); + systemUserLevel.setIcon(systemAttachmentService.clearPrefix(request.getIcon())); + return save(systemUserLevel); + } + + /** + * 添加、修改校验 + * @param request 用户等级参数 + * 等级名称不能重复 + * 等级级别不能重复 + */ + private void checkLevel(SystemUserLevelRequest request) { + SystemUserLevel temp; + // 校验名称 + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(SystemUserLevel::getName, request.getName()); + if (ObjectUtil.isNotNull(request.getId())) { + lqw.ne(SystemUserLevel::getId, request.getId()); + } + lqw.eq(SystemUserLevel::getIsDel, false); + temp = dao.selectOne(lqw); + if (ObjectUtil.isNotNull(temp)) { + throw new CrmebException("用户等级名称重复"); + } + // 校验等级级别 + lqw.clear(); + lqw.eq(SystemUserLevel::getGrade, request.getGrade()); + if (ObjectUtil.isNotNull(request.getId())) { + lqw.ne(SystemUserLevel::getId, request.getId()); + } + lqw.eq(SystemUserLevel::getIsDel, false); + temp = dao.selectOne(lqw); + if (ObjectUtil.isNotNull(temp)) { + throw new CrmebException("用户等级级别重复"); + } + // 校验等级经验不能比上一级别的低,不能比下一级别高 + if (request.getGrade() > 1) { + lqw.clear(); + lqw.lt(SystemUserLevel::getGrade, request.getGrade()); + if (ObjectUtil.isNotNull(request.getId())) { + lqw.ne(SystemUserLevel::getId, request.getId()); + } + lqw.eq(SystemUserLevel::getIsDel, false); + lqw.orderByDesc(SystemUserLevel::getGrade); + lqw.last(" limit 1"); + temp = dao.selectOne(lqw); + if (ObjectUtil.isNotNull(temp) && temp.getExperience() >= request.getExperience()) { + throw new CrmebException("当前等级的经验不能比上一级别的经验低"); + } + } + lqw.clear(); + lqw.gt(SystemUserLevel::getGrade, request.getGrade()); + if (ObjectUtil.isNotNull(request.getId())) { + lqw.ne(SystemUserLevel::getId, request.getId()); + } + lqw.eq(SystemUserLevel::getIsDel, false); + lqw.orderByAsc(SystemUserLevel::getGrade); + lqw.last(" limit 1"); + temp = dao.selectOne(lqw); + if (ObjectUtil.isNotNull(temp) && temp.getExperience() <= request.getExperience()) { + throw new CrmebException("当前等级的经验不能比下一级别的经验高"); + } + } + + + /** + * 系统等级更新 + * @param id 等级id + * @param request 等级数据 + * @return Boolean + */ + @Override + public Boolean update(Integer id, SystemUserLevelRequest request) { + SystemUserLevel level = getById(id); + if (ObjectUtil.isNull(level) || level.getIsDel()) { + throw new CrmebException("等级不存在"); + } + request.setId(id); + checkLevel(request); + SystemUserLevel systemUserLevel = new SystemUserLevel(); + BeanUtils.copyProperties(request, systemUserLevel); + systemUserLevel.setIcon(systemAttachmentService.clearPrefix(request.getIcon())); + systemUserLevel.setIsShow(level.getIsShow()); + return transactionTemplate.execute(e -> { + dao.updateById(systemUserLevel); + // 删除对应的用户等级数据 + userLevelService.deleteByLevelId(id); + // 清除对应的用户等级 + userService.removeLevelByLevelId(id); + return Boolean.TRUE; + }); + } + + @Override + public SystemUserLevel getByLevelId(Integer levelId) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(SystemUserLevel::getIsShow, 1); + lambdaQueryWrapper.eq(SystemUserLevel::getIsDel, 0); + lambdaQueryWrapper.eq(SystemUserLevel::getId, levelId); + return dao.selectOne(lambdaQueryWrapper); + } + + /** + * 获取系统等级列表(移动端) + */ + @Override + public List getH5LevelList() { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.select(SystemUserLevel::getId, SystemUserLevel::getName, SystemUserLevel::getIcon, SystemUserLevel::getExperience); + lqw.eq(SystemUserLevel::getIsShow, true); + lqw.eq(SystemUserLevel::getIsDel, false); + lqw.orderByAsc(SystemUserLevel::getGrade); + return dao.selectList(lqw); + } + + /** + * 删除系统等级 + * @param id 等级id + * @return Boolean + */ + @Override + public Boolean delete(Integer id) { + SystemUserLevel level = getById(id); + if (ObjectUtil.isNull(level) || level.getIsDel()) { + throw new CrmebException("系统等级不存在"); + } + level.setIsDel(true); + return transactionTemplate.execute(e -> { + dao.updateById(level); + // 删除对应的用户等级数据 + userLevelService.deleteByLevelId(id); + // 清除对应的用户等级 + userService.removeLevelByLevelId(id); + return Boolean.TRUE; + }); + } + + /** + * 使用/禁用 + * @param request request + */ + @Override + public Boolean updateShow(SystemUserLevelUpdateShowRequest request) { + SystemUserLevel level = getById(request.getId()); + if (ObjectUtil.isNull(level) || level.getIsDel()) { + throw new CrmebException("等级不存在"); + } + if (level.getIsShow().equals(request.getIsShow())) { + return Boolean.TRUE; + } + level.setIsShow(request.getIsShow()); + if (request.getIsShow()) {// 启用直接保存 + return dao.updateById(level) > 0 ? Boolean.TRUE : Boolean.FALSE; + } + return transactionTemplate.execute(e -> { + dao.updateById(level); + // 删除对应的用户等级数据 + userLevelService.deleteByLevelId(request.getId()); + // 清除对应的用户等级 + userService.removeLevelByLevelId(request.getId()); + return Boolean.TRUE; + }); + } + + /** + * 获取可用等级列表 + * @return List + */ + @Override + public List getUsableList() { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(SystemUserLevel::getIsShow, true); + lqw.eq(SystemUserLevel::getIsDel, false); + lqw.orderByAsc(SystemUserLevel::getGrade); + return dao.selectList(lqw); + } +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/TemplateMessageServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/TemplateMessageServiceImpl.java new file mode 100644 index 0000000..5749039 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/TemplateMessageServiceImpl.java @@ -0,0 +1,297 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.model.system.SystemNotification; +import com.zbkj.common.model.wechat.TemplateMessage; +import com.zbkj.common.utils.RedisUtil; +import com.zbkj.common.vo.*; +import com.zbkj.service.dao.TemplateMessageDao; +import com.zbkj.service.service.SystemNotificationService; +import com.zbkj.service.service.TemplateMessageService; +import com.zbkj.service.service.WechatNewService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +/** + * TemplateMessageServiceImpl 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class TemplateMessageServiceImpl extends ServiceImpl implements TemplateMessageService { + + private static final Logger logger = LoggerFactory.getLogger(TemplateMessageServiceImpl.class); + + @Resource + private TemplateMessageDao dao; + + @Autowired + private RedisUtil redisUtil; + + @Autowired + private WechatNewService wechatNewService; + + @Autowired + private SystemNotificationService systemNotificationService; + + /** + * 公众号消费队列消费 + */ + @Override + public void consumePublic() { + String redisKey = Constants.WE_CHAT_MESSAGE_KEY_PUBLIC; + Long size = redisUtil.getListSize(redisKey); + logger.info("TemplateMessageServiceImpl.consumePublic | size:" + size); + if(size < 1){ + return; + } + for (int i = 0; i < size; i++) { + //如果10秒钟拿不到一个数据,那么退出循环 + Object data = redisUtil.getRightPop(redisKey, 10L); + if(null == data){ + continue; + } + try{ + TemplateMessageVo templateMessage = JSONObject.toJavaObject(JSONObject.parseObject(data.toString()), TemplateMessageVo.class); + boolean result = wechatNewService.sendPublicTemplateMessage(templateMessage); +// boolean result = weChatService.sendPublicTempMessage(templateMessage); + if(!result){ + redisUtil.lPush(redisKey, data); + } + }catch (Exception e){ + redisUtil.lPush(redisKey, data); + } + } + } + + /** + * 小程序消费队列消费 + */ + @Override + public void consumeProgram() { + String redisKey = Constants.WE_CHAT_MESSAGE_KEY_PROGRAM; + Long size = redisUtil.getListSize(redisKey); + logger.info("TemplateMessageServiceImpl.consumeProgram | size:" + size); + if(size < 1){ + return; + } + for (int i = 0; i < size; i++) { + //如果10秒钟拿不到一个数据,那么退出循环 + Object data = redisUtil.getRightPop(redisKey, 10L); + if(null == data){ + continue; + } + try{ + TemplateMessageVo templateMessage = JSONObject.toJavaObject(JSONObject.parseObject(data.toString()), TemplateMessageVo.class); + boolean result = wechatNewService.sendMiniSubscribeMessage(templateMessage); + if(!result){ + redisUtil.lPush(redisKey, data); + } + }catch (Exception e){ + redisUtil.lPush(redisKey, data); + } + } + } + + /** + * 发送模板消息 + * @param templateId 模板消息编号 + * @param temMap 内容Map + * @param openId 微信用户openid + */ + @Override + public void pushTemplateMessage(Integer templateId, HashMap temMap, String openId) { + TemplateMessageVo templateMessageVo = new TemplateMessageVo(); + + TemplateMessage templateMessage = info(templateId); + if(ObjectUtil.isNull(templateMessage) || StrUtil.isBlank(templateMessage.getContent())){ + return; + } + templateMessageVo.setTemplate_id(templateMessage.getTempId()); + + HashMap hashMap = new HashMap<>(); + for (Map.Entry entry : temMap.entrySet()){ + hashMap.put(entry.getKey(), new SendTemplateMessageItemVo(entry.getValue())); + } + + templateMessageVo.setData(hashMap); + templateMessageVo.setTouser(openId); + redisUtil.lPush(Constants.WE_CHAT_MESSAGE_KEY_PUBLIC, JSONObject.toJSONString(templateMessageVo)); + } + + /** + * 发送小程序订阅消息 + * @param templateId 模板消息编号 + * @param temMap 内容Map + * @param openId 微信用户openId + */ + @Override + public void pushMiniTemplateMessage(Integer templateId, HashMap temMap, String openId) { + TemplateMessage templateMessage = info(templateId); + if(ObjectUtil.isNull(templateMessage) || StrUtil.isBlank(templateMessage.getContent())){ + return; + } + + ProgramTemplateMessageVo programTemplateMessageVo = new ProgramTemplateMessageVo(); + programTemplateMessageVo.setTemplate_id(templateMessage.getTempId()); + + //组装关键字数据 + HashMap hashMap = new HashMap<>(); + temMap.forEach((key, value) -> hashMap.put(key, new SendProgramTemplateMessageItemVo(value))); + + programTemplateMessageVo.setData(hashMap); + programTemplateMessageVo.setTouser(openId); + redisUtil.lPush(Constants.WE_CHAT_MESSAGE_KEY_PROGRAM, JSONObject.toJSONString(programTemplateMessageVo)); + } + + /** + * 修改模板状态 + * @param id 模板id + * @param status 状态 + */ + @Override + public Boolean updateStatus(Integer id, Integer status) { + TemplateMessage templateMessage = getById(id); + if (ObjectUtil.isNull(templateMessage)) { + throw new CrmebException("此模板" + id + " 不存在或者已删除"); + } + templateMessage.setStatus(status); + return updateById(templateMessage); + } + + /** + * 公众号模板消息同步 + * @return Boolean + */ + @Override + public Boolean whcbqhnSync() { + List notificationList = systemNotificationService.getListByWechat("public"); + List wechatIdList = notificationList.stream().map(SystemNotification::getWechatId).collect(Collectors.toList()); + List templateMessageList = getListByIdList(wechatIdList); + if (CollUtil.isEmpty(templateMessageList)) { + throw new CrmebException("请先添加公众号模板消息"); + } + + // 获取公众平台所有的微信模板,删除之 + List templateVoList = wechatNewService.getPublicMyTemplateList(); + templateVoList.forEach(e -> wechatNewService.delPublicMyTemplate(e.getTemplate_id())); + // 将现在的模板保存到公众平台 + templateMessageList.forEach(e -> { + String templateId = wechatNewService.apiAddPublicTemplate(e.getTempKey()); + e.setTempId(templateId); + }); + return updateBatchById(templateMessageList); + } + + /** + * 小程序订阅消息同步 + * @return Boolean + */ + @Override + public Boolean routineSync() { + List notificationList = systemNotificationService.getListByWechat("routine"); + List routineIdList = notificationList.stream().map(SystemNotification::getRoutineId).collect(Collectors.toList()); + List templateMessageList = getListByIdList(routineIdList); + if (CollUtil.isEmpty(templateMessageList)) { + throw new CrmebException("请先配置小程序订阅消息"); + } + // 获取当前帐号下的个人模板列表 + List templateVoList = wechatNewService.getRoutineMyTemplateList(); + // 删除原有模板 + templateVoList.forEach(e -> wechatNewService.delRoutineMyTemplate(e.getPriTmplId())); + // 将现在的模板保存到小程序平台 + templateMessageList.forEach(e -> { + // 获取小程序平台上的标准模板 + List templateKeyVoList = wechatNewService.getRoutineTemplateByWechat(e.getTempKey()); + List kidList = getRoutineKidList(e.getContent(), templateKeyVoList); + String priTmplId = wechatNewService.apiAddRoutineTemplate(e.getTempKey(), kidList); + e.setTempId(priTmplId); + }); + return updateBatchById(templateMessageList); + } + + /** + * 获取小程序订阅消息kidList + * @param content 本地保存的内容 + * @param templateKeyVoList 小程序模板key对象数组 + * @return List + */ + private List getRoutineKidList(String content, List templateKeyVoList) { + // 分解出本地的关键词内容数组 + String replace = content.replace("\r\n", ""); + String[] split = replace.split("}}"); + List collect = Stream.of(split).map(s -> { + s = s.substring(0, s.indexOf("{")); + return s; + }).collect(Collectors.toList()); + + Map map = new HashMap<>(); + templateKeyVoList.forEach(e -> map.put(e.getName(), e.getKid())); + + List kidList = new ArrayList<>(); + collect.forEach(e -> { + if (map.containsKey(e)) { + kidList.add(map.get(e)); + } + }); + return kidList; + } + + /** + * 通过模板编号获取列表 + * @param idList 模板编号列表 + * @return List + */ + private List getListByIdList(List idList) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.in(TemplateMessage::getId, idList); + return dao.selectList(lqw); + } + + /** + * 查询单条数据 + * @param id Integer id + */ + @Override + public TemplateMessage info(Integer id) { + return getById(id); + } + + /** + * 获取模板列表 + * @param tidList id数组 + * @return List + */ + @Override + public List getByIdList(List tidList) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.in(TemplateMessage::getId, tidList); + return dao.selectList(lambdaQueryWrapper); + } +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UploadServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UploadServiceImpl.java new file mode 100644 index 0000000..c28f528 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UploadServiceImpl.java @@ -0,0 +1,478 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.util.StrUtil; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.vo.CloudVo; +import com.zbkj.common.vo.FileResultVo; +import com.zbkj.common.vo.UploadCommonVo; +import com.qcloud.cos.COSClient; +import com.qcloud.cos.ClientConfig; +import com.qcloud.cos.auth.BasicCOSCredentials; +import com.qcloud.cos.auth.COSCredentials; +import com.qiniu.storage.Configuration; +import com.qiniu.storage.Region; +import com.qiniu.storage.UploadManager; +import com.qiniu.util.Auth; +import com.zbkj.common.utils.CrmebUtil; +import com.zbkj.common.utils.DateUtil; +import com.zbkj.common.utils.UploadUtil; +import com.zbkj.common.model.system.SystemAttachment; +import com.zbkj.common.config.CrmebConfig; +import com.zbkj.service.service.*; +import org.apache.commons.io.FilenameUtils; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import java.io.File; +import java.io.IOException; +import java.util.List; + + +/** + * UploadServiceImpl 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class UploadServiceImpl implements UploadService { + + private static final Logger logger = LoggerFactory.getLogger(UploadServiceImpl.class); + + @Autowired + private SystemConfigService systemConfigService; + + @Autowired + private SystemAttachmentService systemAttachmentService; + + @Autowired + private QiNiuService qiNiuService; + + @Autowired + private OssService ossService; + + @Autowired + private CosService cosService; + + @Autowired + CrmebConfig crmebConfig; + + /** + * 图片上传 + * @param multipartFile 文件 + * @param model 模块 用户user,商品product,微信wechat,news文章 + * @param pid 分类ID 0编辑器,1商品图片,2拼团图片,3砍价图片,4秒杀图片,5文章图片,6组合数据图,7前台用户,8微信系列 + * @return FileResultVo + */ + @Override + public FileResultVo imageUpload(MultipartFile multipartFile, String model, Integer pid) throws IOException { + if (null == multipartFile || multipartFile.isEmpty()) { + throw new CrmebException("上传的文件对象不存在..."); + } + +// String rootPath = (systemConfigService.getValueByKey(Constants.UPLOAD_ROOT_PATH_CONFIG_KEY) + "/").replace(" ", "").replace("//", "/"); + String rootPath = crmebConfig.getImagePath().replace(" ", "").replace("//", "/"); + UploadUtil.setModelPath(model); + String modelPath = "public/" + model + "/"; + String extStr = systemConfigService.getValueByKey(Constants.UPLOAD_IMAGE_EXT_STR_CONFIG_KEY); + int size = Integer.parseInt(systemConfigService.getValueByKey(Constants.UPLOAD_IMAGE_MAX_SIZE_CONFIG_KEY)); + String type = Constants.UPLOAD_TYPE_IMAGE + "/"; + + UploadCommonVo uploadCommonVo = new UploadCommonVo(); + uploadCommonVo.setRootPath(rootPath); + uploadCommonVo.setModelPath(modelPath); + uploadCommonVo.setExtStr(extStr); + uploadCommonVo.setSize(size); + uploadCommonVo.setType(type); + + // 文件名 + String fileName = multipartFile.getOriginalFilename(); + System.out.println("fileName = " + fileName); + // 文件后缀名 + String extName = FilenameUtils.getExtension(fileName); + if (StringUtils.isEmpty(extName)) { + throw new RuntimeException("文件类型未定义不能上传..."); + } + + if (fileName.length() > 99) { + fileName = StrUtil.subPre(fileName, 90).concat(".").concat(extName); + } + + // 文件大小验证 + // 文件分隔符转化为当前系统的格式 + float fileSize = (float)multipartFile.getSize() / 1024 / 1024; + String fs = String.format("%.2f", fileSize); + if( fileSize > uploadCommonVo.getSize()){ + throw new CrmebException("最大允许上传" + uploadCommonVo.getSize() + " MB的文件, 当前文件大小为 " + fs + " MB"); + } + + // 判断文件的后缀名是否符合规则 + if (StringUtils.isNotEmpty(uploadCommonVo.getExtStr())) { + // 切割文件扩展名 + List extensionList = CrmebUtil.stringToArrayStr(uploadCommonVo.getExtStr()); + if (extensionList.size() > 0) { + //判断 + if (!extensionList.contains(extName)) { + throw new CrmebException("上传文件的类型只能是:" + uploadCommonVo.getExtStr()); + } + } else { + throw new CrmebException("上传文件的类型只能是:" + uploadCommonVo.getExtStr()); + } + } + + // 变更文件名 + String newFileName = UploadUtil.fileName(extName); + // 创建目标文件的名称,规则: 子目录/年/月/日.后缀名 + // 文件分隔符转化为当前系统的格式 + // 文件分隔符转化为当前系统的格式 + String webPath = uploadCommonVo.getType() + uploadCommonVo.getModelPath() + DateUtil.nowDate(Constants.DATE_FORMAT_DATE).replace("-", "/") + "/"; + String destPath = FilenameUtils.separatorsToSystem(uploadCommonVo.getRootPath() + webPath) + newFileName; + // 创建文件 + File file = UploadUtil.createFile(destPath); + + // 拼装返回的数据 + FileResultVo resultFile = new FileResultVo(); + resultFile.setFileSize(multipartFile.getSize()); + resultFile.setFileName(fileName); + resultFile.setExtName(extName); +// resultFile.setServerPath(destPath); + resultFile.setUrl(webPath + newFileName); + resultFile.setType(multipartFile.getContentType()); + + //图片上传类型 1本地 2七牛云 3OSS 4COS, 默认本地 + String uploadType = systemConfigService.getValueByKeyException("uploadType"); + Integer uploadTypeInt = Integer.parseInt(uploadType); + String pre; + CloudVo cloudVo = new CloudVo(); + + resultFile.setType(resultFile.getType().replace("image/", "")); + SystemAttachment systemAttachment = new SystemAttachment(); + systemAttachment.setName(resultFile.getFileName()); +// systemAttachment.setAttDir(resultFile.getUrl()); + systemAttachment.setSattDir(resultFile.getUrl()); + systemAttachment.setAttSize(resultFile.getFileSize().toString()); + systemAttachment.setAttType(resultFile.getType()); + systemAttachment.setImageType(1); //图片上传类型 1本地 2七牛云 3OSS 4COS, 默认本地 +// systemAttachment.setAttDir(resultFile.getServerPath()); // 服务器上存储的绝对地址, 上传到云的时候使用 + systemAttachment.setPid(pid); + + if (uploadTypeInt.equals(1)) { + // 保存文件 + multipartFile.transferTo(file); + systemAttachmentService.save(systemAttachment); + return resultFile; + } + // 判断是否保存本地 + String fileIsSave = systemConfigService.getValueByKeyException("file_is_save"); + multipartFile.transferTo(file); + switch (uploadTypeInt) { + case 1: + // 保存文件 +// multipartFile.transferTo(file); + break; + case 2: + systemAttachment.setImageType(2); + pre = "qn"; + cloudVo.setDomain(systemConfigService.getValueByKeyException(pre+"UploadUrl")); + cloudVo.setAccessKey(systemConfigService.getValueByKeyException(pre+"AccessKey")); + cloudVo.setSecretKey(systemConfigService.getValueByKeyException(pre+"SecretKey")); + cloudVo.setBucketName(systemConfigService.getValueByKeyException(pre+"StorageName")); + cloudVo.setRegion(systemConfigService.getValueByKeyException(pre+"StorageRegion")); + + try{ + // 构造一个带指定Zone对象的配置类, 默认华东 + Configuration cfg = new Configuration(Region.huadong()); + if("huabei".equals(cloudVo.getRegion())){ + cfg = new Configuration(Region.huabei()); + } + if("huanan".equals(cloudVo.getRegion())){ + cfg = new Configuration(Region.huanan()); + } + if("beimei".equals(cloudVo.getRegion())){ + cfg = new Configuration(Region.beimei()); + } + if("dongnanya".equals(cloudVo.getRegion())){ + cfg = new Configuration(Region.xinjiapo()); + } + + // 其他参数参考类注释 + UploadManager uploadManager = new UploadManager(cfg); + // 生成上传凭证,然后准备上传 + Auth auth = Auth.create(cloudVo.getAccessKey(), cloudVo.getSecretKey()); + String upToken = auth.uploadToken(cloudVo.getBucketName()); + + String webPathQn = crmebConfig.getImagePath(); + logger.info("AsyncServiceImpl.qCloud.id " + systemAttachment.getAttId()); +// qiNiuService.uploadFile(uploadManager, cloudVo, upToken, +// systemAttachment.getSattDir(), webPathQn + "/" + systemAttachment.getSattDir(), systemAttachment.getAttId()); //异步处理 + qiNiuService.uploadFile(uploadManager, cloudVo, upToken, + systemAttachment.getSattDir(), webPathQn + "/" + systemAttachment.getSattDir(), file); //异步处理 + }catch (Exception e){ + logger.error("AsyncServiceImpl.qCloud.fail " + e.getMessage()); + } + break; + case 3: + systemAttachment.setImageType(3); + pre = "al"; + cloudVo.setDomain(systemConfigService.getValueByKeyException(pre+"UploadUrl")); + cloudVo.setAccessKey(systemConfigService.getValueByKeyException(pre+"AccessKey")); + cloudVo.setSecretKey(systemConfigService.getValueByKeyException(pre+"SecretKey")); + cloudVo.setBucketName(systemConfigService.getValueByKeyException(pre+"StorageName")); + cloudVo.setRegion(systemConfigService.getValueByKeyException(pre+"StorageRegion")); + try{ + String webPathAl = crmebConfig.getImagePath(); + logger.info("AsyncServiceImpl.oss.id " + systemAttachment.getAttId()); + ossService.upload(cloudVo, systemAttachment.getSattDir(), webPathAl + "/" + systemAttachment.getSattDir(), + file); + }catch (Exception e){ + logger.error("AsyncServiceImpl.oss fail " + e.getMessage()); + } + break; + case 4: + systemAttachment.setImageType(4); + pre = "tx"; + cloudVo.setDomain(systemConfigService.getValueByKeyException(pre+"UploadUrl")); + cloudVo.setAccessKey(systemConfigService.getValueByKeyException(pre+"AccessKey")); + cloudVo.setSecretKey(systemConfigService.getValueByKeyException(pre+"SecretKey")); + cloudVo.setBucketName(systemConfigService.getValueByKeyException(pre+"StorageName")); + cloudVo.setRegion(systemConfigService.getValueByKeyException(pre+"StorageRegion")); + // 1 初始化用户身份信息(secretId, secretKey) + COSCredentials cred = new BasicCOSCredentials(cloudVo.getAccessKey(), cloudVo.getSecretKey()); + // 2 设置bucket的区域, COS地域的简称请参照 https://cloud.tencent.com/document/product/436/6224 + ClientConfig clientConfig = new ClientConfig(new com.qcloud.cos.region.Region(cloudVo.getRegion())); + // 3 生成 cos 客户端。 + COSClient cosClient = new COSClient(cred, clientConfig); + + try{ + String webPathTx = crmebConfig.getImagePath(); + logger.info("AsyncServiceImpl.cos.id " + systemAttachment.getAttId()); + cosService.uploadFile(cloudVo, systemAttachment.getSattDir(), webPathTx + "/" + systemAttachment.getSattDir(), systemAttachment.getAttId(), cosClient); + }catch (Exception e){ + logger.error("AsyncServiceImpl.cos.fail " + e.getMessage()); + }finally { + cosClient.shutdown(); + } + break; + } + systemAttachmentService.save(systemAttachment); + if (!"1".equals(fileIsSave)) { + // 删除本地文件 + file.delete(); + } + return resultFile; + } + + /** + * 文件长传 + * @param multipartFile 文件 + * @param model 模块 用户user,商品product,微信wechat,news文章 + * @param pid 分类ID 0编辑器,1商品图片,2拼团图片,3砍价图片,4秒杀图片,5文章图片,6组合数据图,7前台用户,8微信系列 + * @return FileResultVo + * @throws IOException + */ + @Override + public FileResultVo fileUpload(MultipartFile multipartFile, String model, Integer pid) throws IOException { + String rootPath = (crmebConfig.getImagePath() + "/").replace(" ", "").replace("//", "/"); + UploadUtil.setModelPath(model); + String modelPath = "public/" + model + "/"; + String extStr = systemConfigService.getValueByKey(Constants.UPLOAD_FILE_EXT_STR_CONFIG_KEY); + int size = Integer.parseInt(systemConfigService.getValueByKey(Constants.UPLOAD_FILE_MAX_SIZE_CONFIG_KEY)); + String type = Constants.UPLOAD_TYPE_FILE + "/"; + + UploadCommonVo uploadCommonVo = new UploadCommonVo(); + uploadCommonVo.setRootPath(rootPath); + uploadCommonVo.setModelPath(modelPath); + uploadCommonVo.setExtStr(extStr); + uploadCommonVo.setSize(size); + uploadCommonVo.setType(type); + + if (null == multipartFile || multipartFile.isEmpty()) { + throw new CrmebException("上传的文件对象不存在..."); + } + // 文件名 + String fileName = multipartFile.getOriginalFilename(); + System.out.println("fileName = " + fileName); + // 文件后缀名 + String extName = FilenameUtils.getExtension(fileName); + if (StringUtils.isEmpty(extName)) { + throw new RuntimeException("文件类型未定义不能上传..."); + } + + if (fileName.length() > 99) { + fileName = StrUtil.subPre(fileName, 90).concat(".").concat(extName); + } + + //文件大小验证 + // 文件分隔符转化为当前系统的格式 + float fileSize = (float)multipartFile.getSize() / 1024 / 1024; + String fs = String.format("%.2f", fileSize); + if( fileSize > uploadCommonVo.getSize()){ + throw new CrmebException("最大允许上传" + uploadCommonVo.getSize() + " MB的文件, 当前文件大小为 " + fs + " MB"); + } + + // 判断文件的后缀名是否符合规则 +// isContains(extName); + if (StringUtils.isNotEmpty(uploadCommonVo.getExtStr())) { + // 切割文件扩展名 + List extensionList = CrmebUtil.stringToArrayStr(uploadCommonVo.getExtStr()); + + if (extensionList.size() > 0) { + //判断 + if (!extensionList.contains(extName)) { + throw new CrmebException("上传文件的类型只能是:" + uploadCommonVo.getExtStr()); + } + } else { + throw new CrmebException("上传文件的类型只能是:" + uploadCommonVo.getExtStr()); + } + } + + //文件名 + String newFileName = UploadUtil.fileName(extName); + // 创建目标文件的名称,规则请看destPath方法 + //规则: 子目录/年/月/日.后缀名 + // 文件分隔符转化为当前系统的格式 + // 文件分隔符转化为当前系统的格式 + String webPath = uploadCommonVo.getType() + uploadCommonVo.getModelPath() + DateUtil.nowDate(Constants.DATE_FORMAT_DATE).replace("-", "/") + "/"; + String destPath = FilenameUtils.separatorsToSystem(uploadCommonVo.getRootPath() + webPath) + newFileName; + // 创建文件 + File file = UploadUtil.createFile(destPath); + + // 拼装返回的数据 + FileResultVo resultFile = new FileResultVo(); + resultFile.setFileSize(multipartFile.getSize()); + resultFile.setFileName(fileName); + resultFile.setExtName(extName); +// resultFile.setServerPath(destPath); + resultFile.setUrl(webPath + newFileName); + resultFile.setType(multipartFile.getContentType()); + + //图片上传类型 1本地 2七牛云 3OSS 4COS, 默认本地 + String uploadType = systemConfigService.getValueByKeyException("uploadType"); + Integer uploadTypeInt = Integer.parseInt(uploadType); + String pre; + CloudVo cloudVo = new CloudVo(); + + resultFile.setType(resultFile.getType().replace("file/", "")); + SystemAttachment systemAttachment = new SystemAttachment(); + systemAttachment.setName(resultFile.getFileName()); + systemAttachment.setSattDir(resultFile.getUrl()); + systemAttachment.setAttSize(resultFile.getFileSize().toString()); + systemAttachment.setAttType(resultFile.getType()); + systemAttachment.setImageType(1); //图片上传类型 1本地 2七牛云 3OSS 4COS, 默认本地,任务轮询数据库放入云服务 + systemAttachment.setPid(pid); + + if (uploadTypeInt.equals(1)) { + // 保存文件 + multipartFile.transferTo(file); + systemAttachmentService.save(systemAttachment); + return resultFile; + } + // 判断是否保存本地 + String fileIsSave = systemConfigService.getValueByKeyException("file_is_save"); + if ("1".equals(fileIsSave)) { + multipartFile.transferTo(file); + } + + switch (uploadTypeInt) { + case 1: + // 保存文件 + multipartFile.transferTo(file); + break; + case 2: + systemAttachment.setImageType(2); + pre = "qn"; + cloudVo.setDomain(systemConfigService.getValueByKeyException(pre+"UploadUrl")); + cloudVo.setAccessKey(systemConfigService.getValueByKeyException(pre+"AccessKey")); + cloudVo.setSecretKey(systemConfigService.getValueByKeyException(pre+"SecretKey")); + cloudVo.setBucketName(systemConfigService.getValueByKeyException(pre+"StorageName")); + cloudVo.setRegion(systemConfigService.getValueByKeyException(pre+"StorageRegion")); + + try{ + // 构造一个带指定Zone对象的配置类, 默认华东 + Configuration cfg = new Configuration(Region.huadong()); + if("huabei".equals(cloudVo.getRegion())){ + cfg = new Configuration(Region.huabei()); + } + if("huanan".equals(cloudVo.getRegion())){ + cfg = new Configuration(Region.huanan()); + } + if("beimei".equals(cloudVo.getRegion())){ + cfg = new Configuration(Region.beimei()); + } + if("dongnanya".equals(cloudVo.getRegion())){ + cfg = new Configuration(Region.xinjiapo()); + } + + // 其他参数参考类注释 + UploadManager uploadManager = new UploadManager(cfg); + // 生成上传凭证,然后准备上传 + Auth auth = Auth.create(cloudVo.getAccessKey(), cloudVo.getSecretKey()); + String upToken = auth.uploadToken(cloudVo.getBucketName()); + + String webPathQn = crmebConfig.getImagePath(); + logger.info("AsyncServiceImpl.qCloud.id " + systemAttachment.getAttId()); + qiNiuService.uploadFile(uploadManager, cloudVo, upToken, + systemAttachment.getSattDir(), webPathQn + "/" + systemAttachment.getSattDir(), file); + }catch (Exception e){ + logger.error("AsyncServiceImpl.qCloud.fail " + e.getMessage()); + } + break; + case 3: + systemAttachment.setImageType(3); + pre = "al"; + cloudVo.setDomain(systemConfigService.getValueByKeyException(pre+"UploadUrl")); + cloudVo.setAccessKey(systemConfigService.getValueByKeyException(pre+"AccessKey")); + cloudVo.setSecretKey(systemConfigService.getValueByKeyException(pre+"SecretKey")); + cloudVo.setBucketName(systemConfigService.getValueByKeyException(pre+"StorageName")); + cloudVo.setRegion(systemConfigService.getValueByKeyException(pre+"StorageRegion")); + try{ + String webPathAl = crmebConfig.getImagePath(); + logger.info("AsyncServiceImpl.oss.id " + systemAttachment.getAttId()); + ossService.upload(cloudVo, systemAttachment.getSattDir(), webPathAl + "/" + systemAttachment.getSattDir(), + file); + }catch (Exception e){ + logger.error("AsyncServiceImpl.oss fail " + e.getMessage()); + } + break; + case 4: + systemAttachment.setImageType(4); + pre = "tx"; + cloudVo.setDomain(systemConfigService.getValueByKeyException(pre+"UploadUrl")); + cloudVo.setAccessKey(systemConfigService.getValueByKeyException(pre+"AccessKey")); + cloudVo.setSecretKey(systemConfigService.getValueByKeyException(pre+"SecretKey")); + cloudVo.setBucketName(systemConfigService.getValueByKeyException(pre+"StorageName")); + cloudVo.setRegion(systemConfigService.getValueByKeyException(pre+"StorageRegion")); + // 1 初始化用户身份信息(secretId, secretKey) + COSCredentials cred = new BasicCOSCredentials(cloudVo.getAccessKey(), cloudVo.getSecretKey()); + // 2 设置bucket的区域, COS地域的简称请参照 https://cloud.tencent.com/document/product/436/6224 + ClientConfig clientConfig = new ClientConfig(new com.qcloud.cos.region.Region(cloudVo.getRegion())); + // 3 生成 cos 客户端。 + COSClient cosClient = new COSClient(cred, clientConfig); + + try{ + String webPathTx = crmebConfig.getImagePath(); + logger.info("AsyncServiceImpl.cos.id " + systemAttachment.getAttId()); + cosService.uploadFile(cloudVo, systemAttachment.getSattDir(), webPathTx + "/" + systemAttachment.getSattDir(), file, cosClient); + }catch (Exception e){ + logger.error("AsyncServiceImpl.cos.fail " + e.getMessage()); + }finally { + cosClient.shutdown(); + } + break; + } + systemAttachmentService.save(systemAttachment); + return resultFile; + } +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserAddressServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserAddressServiceImpl.java new file mode 100644 index 0000000..d0fd61d --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserAddressServiceImpl.java @@ -0,0 +1,211 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.request.UserAddressRequest; +import com.github.pagehelper.PageHelper; +import com.zbkj.common.model.system.SystemCity; +import com.zbkj.common.model.user.UserAddress; +import com.zbkj.service.dao.UserAddressDao; +import com.zbkj.service.service.SystemCityService; +import com.zbkj.service.service.UserAddressService; +import com.zbkj.service.service.UserService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * UserAddressServiceImpl 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class UserAddressServiceImpl extends ServiceImpl implements UserAddressService { + + @Resource + private UserAddressDao dao; + + @Autowired + private SystemCityService systemCityService; + + @Autowired + private UserService userService; + + /** + * 列表 + * @return List + */ + @Override + public List getList(PageParamRequest pageParamRequest) { + Integer UserId = userService.getUserIdException(); + PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.select(UserAddress::getId, UserAddress::getRealName, UserAddress::getPhone, UserAddress::getProvince, + UserAddress::getCity, UserAddress::getDistrict, UserAddress::getDetail, UserAddress::getIsDefault); + lqw.eq(UserAddress::getUid, UserId); + lqw.eq(UserAddress::getIsDel, false); + lqw.orderByDesc(UserAddress::getIsDefault); + lqw.orderByDesc(UserAddress::getId); + return dao.selectList(lqw); + } + + /** + * 创建地址 + * @param request UserAddressRequest 参数 + * @return List + */ + @Override + public UserAddress create(UserAddressRequest request) { + UserAddress userAddress = new UserAddress(); + BeanUtils.copyProperties(request, userAddress); + userAddress.setCity(request.getAddress().getCity()); + userAddress.setCityId(request.getAddress().getCityId()); + userAddress.setDistrict(request.getAddress().getDistrict()); + userAddress.setProvince(request.getAddress().getProvince()); + + // 添加地址时cityId和城市名称不能同时为空,如果id为空,必须用城市名称自查后set CityId + if (request.getAddress().getCityId() == 0 && StringUtils.isBlank(request.getAddress().getCity())) { + throw new CrmebException("请选择正确城市数据"); + } + if (StringUtils.isNotBlank(request.getAddress().getCity()) && request.getAddress().getCityId() == 0) { + SystemCity currentCity = systemCityService.getCityByCityName(request.getAddress().getCity()); + if (ObjectUtil.isNull(currentCity)) throw new CrmebException("当前城市未找到!"); + + userAddress.setCityId(currentCity.getCityId()); + } + + if (request.getAddress().getCityId() > 0 && StringUtils.isNotBlank(request.getAddress().getCity())) { + checkCity(userAddress.getCityId()); + } + userAddress.setUid(userService.getUserIdException()); + if (userAddress.getIsDefault()) { + //把当前用户其他默认地址取消 + cancelDefault(userAddress.getUid()); + } + saveOrUpdate(userAddress); + return userAddress; + } + + /** + * 设置默认 + * @param id Integer id + * @return UserAddress + */ + @Override + public Boolean def(Integer id) { + //把当前用户其他默认地址取消 + cancelDefault(userService.getUserIdException()); + UserAddress userAddress = new UserAddress(); + userAddress.setId(id); + userAddress.setUid(userService.getUserIdException()); + userAddress.setIsDefault(true); + return updateById(userAddress); + } + + /** + * 删除 + * @param id Integer id + * @return UserAddress + */ + @Override + public Boolean delete(Integer id) { + //把当前用户其他默认地址取消 + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(UserAddress::getId, id); + lambdaQueryWrapper.eq(UserAddress::getUid, userService.getUserIdException()); + dao.delete(lambdaQueryWrapper); + return true; + } + + /** + * 获取默认地址 + * @return UserAddress + */ + @Override + public UserAddress getDefault() { + //把当前用户其他默认地址取消 + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(UserAddress::getIsDefault, true); + lambdaQueryWrapper.eq(UserAddress::getUid, userService.getUserId()); + return dao.selectOne(lambdaQueryWrapper); + } + + @Override + public UserAddress getById(Integer addressId) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(UserAddress::getId, addressId); + lambdaQueryWrapper.eq(UserAddress::getIsDel, false); + return dao.selectOne(lambdaQueryWrapper); + } + + /** + * 获取地址详情 + * @param id 地址id + * @return UserAddress + */ + @Override + public UserAddress getDetail(Integer id) { + Integer UserId = userService.getUserIdException(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.select(UserAddress::getId, UserAddress::getRealName, UserAddress::getPhone, UserAddress::getProvince, + UserAddress::getCity, UserAddress::getDistrict, UserAddress::getDetail, UserAddress::getIsDefault); + lqw.eq(UserAddress::getId, id); + lqw.eq(UserAddress::getUid, UserId); + lqw.eq(UserAddress::getIsDel, false); + return dao.selectOne(lqw); + } + + /** + * 获取默认地址 + * @return UserAddress + */ + @Override + public UserAddress getDefaultByUid(Integer uid) { + LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(); + lambdaQueryWrapper.eq(UserAddress::getIsDefault, true); + lambdaQueryWrapper.eq(UserAddress::getUid, uid); + return dao.selectOne(lambdaQueryWrapper); + } + + /** + * 检测城市id是否合法 + * @param cityId Integer 城市id + */ + private void checkCity(Integer cityId) { + //检测城市Id是否存在 + SystemCity systemCity = systemCityService.getCityByCityId(cityId); + if (ObjectUtil.isNull(systemCity)) { + throw new CrmebException("请选择正确的城市"); + } + } + + /** + * 取消默认地址 + * @param userId Integer 城市id + */ + private void cancelDefault(Integer userId) { + //检测城市Id是否存在 + UserAddress userAddress = new UserAddress(); + userAddress.setIsDefault(false); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(UserAddress::getUid, userId); + update(userAddress, lambdaQueryWrapper); + } + +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserBillServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserBillServiceImpl.java new file mode 100644 index 0000000..b6c0729 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserBillServiceImpl.java @@ -0,0 +1,283 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.response.UserBillResponse; +import com.github.pagehelper.Page; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.zbkj.common.utils.DateUtil; +import com.zbkj.common.vo.dateLimitUtilVo; +import com.zbkj.common.request.FundsMonitorRequest; +import com.zbkj.common.request.FundsMonitorSearchRequest; +import com.zbkj.common.response.MonitorResponse; +import com.zbkj.common.request.StoreOrderRefundRequest; +import com.zbkj.common.model.user.User; +import com.zbkj.common.model.user.UserBill; +import com.zbkj.service.dao.UserBillDao; +import com.zbkj.service.service.UserBillService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * UserBillServiceImpl 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class UserBillServiceImpl extends ServiceImpl implements UserBillService { + + @Resource + private UserBillDao dao; + + /** + * 列表 + * @param request 请求参数 + * @param pageParamRequest 分页类参数 + * @return List + */ + @Override + public List getList(FundsMonitorSearchRequest request, PageParamRequest pageParamRequest) { + PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + QueryWrapper queryWrapper = new QueryWrapper<>(); + getMonthSql(request, queryWrapper); + + //排序 + if (request.getSort() == null) { + queryWrapper.orderByDesc("create_time"); + }else{ + if ("asc".equals(request.getSort())) { + queryWrapper.orderByAsc("number"); + }else{ + queryWrapper.orderByDesc("number"); + } + } + + // 查询类型 + if (StringUtils.isNotBlank(request.getCategory())) { + queryWrapper.eq("category", request.getCategory()); + } + if (ObjectUtil.isNotNull(request.getPm())) { + queryWrapper.eq("pm", request.getPm()); + } + + return dao.selectList(queryWrapper); + } + + private void getMonthSql(FundsMonitorSearchRequest request, QueryWrapper queryWrapper) { + queryWrapper.gt("status", 0); // -1无效 + if (!StringUtils.isBlank(request.getKeywords())) { + queryWrapper.and(i -> i. + or().eq("id", request.getKeywords()). //用户账单id + or().eq("uid", request.getKeywords()). //用户uid + or().eq("link_id", request.getKeywords()). //关联id + or().like("title", request.getKeywords()) //账单标题 + ); + } + + //时间范围 + if (StringUtils.isNotBlank(request.getDateLimit())) { + dateLimitUtilVo dateLimit = DateUtil.getDateLimit(request.getDateLimit()); + //判断时间 + int compareDateResult = DateUtil.compareDate(dateLimit.getEndTime(), dateLimit.getStartTime(), Constants.DATE_FORMAT); + if (compareDateResult == -1) { + throw new CrmebException("开始时间不能大于结束时间!"); + } + + queryWrapper.between("create_time", dateLimit.getStartTime(), dateLimit.getEndTime()); + + //资金范围 + if (request.getMax() != null && request.getMin() != null) { + //判断时间 + if (request.getMax().compareTo(request.getMin()) < 0) { + throw new CrmebException("最大金额不能小于最小金额!"); + } + queryWrapper.between("number", request.getMin(), request.getMax()); + } + } + + + //关联id + if (StringUtils.isNotBlank(request.getLinkId())) { + if ("gt".equals(request.getLinkId())) { + queryWrapper.ne("link_id", 0); + }else{ + queryWrapper.eq("link_id", request.getLinkId()); + } + } + + //用户id集合 + if (null != request.getUserIdList() && request.getUserIdList().size() > 0) { + queryWrapper.in("uid", request.getUserIdList()); + } else if (ObjectUtil.isNotNull(request.getUid())) { + queryWrapper.eq("uid", request.getUid()); + } + + + + if (StringUtils.isNotBlank(request.getCategory())) { + queryWrapper.eq("category", request.getCategory()); + } + + if (StringUtils.isNotBlank(request.getType())) { + queryWrapper.eq("type", request.getType()); + } + } + + /** + * 新增/消耗 总金额 + * @param pm Integer 0 = 支出 1 = 获得 + * @param userId Integer 用户uid + * @param category String 类型 + * @param date String 时间范围 + * @param type String 小类型 + * @return UserBill + */ + @Override + public BigDecimal getSumBigDecimal(Integer pm, Integer userId, String category, String date, String type) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("category", category). + eq("status", 1); + if (ObjectUtil.isNotNull(userId)) { + queryWrapper.eq("uid", userId); + } + if (null != pm) { + queryWrapper.eq("pm", pm); + } + if (null != type) { + queryWrapper.eq("type", type); + } + if (null != date) { + dateLimitUtilVo dateLimit = DateUtil.getDateLimit(date); + queryWrapper.between("create_time", dateLimit.getStartTime(), dateLimit.getEndTime()); + } + List userBills = dao.selectList(queryWrapper); + if (CollUtil.isEmpty(userBills)) { + return BigDecimal.ZERO; + } + return userBills.stream().map(UserBill::getNumber).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, BigDecimal.ROUND_DOWN); + } + + /** + * 保存退款日志 + * @return boolean + */ + @Override + public Boolean saveRefundBill(StoreOrderRefundRequest request, User user) { + UserBill userBill = new UserBill(); + userBill.setTitle("商品退款"); + userBill.setUid(user.getUid()); + userBill.setCategory(Constants.USER_BILL_CATEGORY_MONEY); + userBill.setType(Constants.USER_BILL_TYPE_PAY_PRODUCT_REFUND); + userBill.setNumber(request.getAmount()); + userBill.setLinkId(request.getOrderId().toString()); + userBill.setBalance(user.getNowMoney().add(request.getAmount())); + userBill.setMark("订单退款到余额" + request.getAmount() + "元"); + userBill.setPm(1); + return save(userBill); + } + + /** + * 资金监控 + * @param request 查询参数 + * @param pageParamRequest 分页参数 + * @return PageInfo + */ + @Override + public PageInfo fundMonitoring(FundsMonitorRequest request, PageParamRequest pageParamRequest) { + Page billPage = PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + Map map = new HashMap<>(); + if (StrUtil.isNotBlank(request.getKeywords())) { + map.put("keywords", StrUtil.format("%{}%", request.getKeywords())); + } + //时间范围 + if (StrUtil.isNotBlank(request.getDateLimit())) { + dateLimitUtilVo dateLimit = DateUtil.getDateLimit(request.getDateLimit()); + map.put("startTime", dateLimit.getStartTime()); + map.put("endTime", dateLimit.getEndTime()); + } + // 明细类型筛选 + if (StrUtil.isNotBlank(request.getTitle())) { + switch (request.getTitle()) { + case "recharge" : + map.put("title", "充值支付"); + break; + case "admin" : + map.put("title", "后台操作"); + break; + case "productRefund" : + map.put("title", "商品退款"); + break; + case "payProduct" : + map.put("title", "购买商品"); + break; + } + + } + List userBillResponses = dao.fundMonitoring(map); + if (CollUtil.isEmpty(userBillResponses)) { + return CommonPage.copyPageInfo(billPage, CollUtil.newArrayList()); + } + List responseList = userBillResponses.stream().map(e -> { + MonitorResponse monitorResponse = new MonitorResponse(); + BeanUtils.copyProperties(e, monitorResponse); + return monitorResponse; + }).collect(Collectors.toList()); + return CommonPage.copyPageInfo(billPage, responseList); + } + + /** + * 用户账单记录(现金) + * @param uid 用户uid + * @param type 记录类型:all-全部,expenditure-支出,income-收入 + * @return PageInfo + */ + @Override + public PageInfo nowMoneyBillRecord(Integer uid, String type, PageParamRequest pageRequest) { + Page billPage = PageHelper.startPage(pageRequest.getPage(), pageRequest.getLimit()); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.select(UserBill::getTitle, UserBill::getNumber, UserBill::getBalance, UserBill::getMark, UserBill::getCreateTime, UserBill::getPm); + lqw.eq(UserBill::getUid, uid); + lqw.eq(UserBill::getCategory, Constants.USER_BILL_CATEGORY_MONEY); + switch (type) { + case "all": + break; + case "expenditure": + lqw.eq(UserBill::getPm, 0); + break; + case "income": + lqw.eq(UserBill::getPm, 1); + break; + } + lqw.eq(UserBill::getStatus, 1); + lqw.orderByDesc(UserBill::getId); + List billList = dao.selectList(lqw); + return CommonPage.copyPageInfo(billPage, billList); + } + +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserBrokerageRecordServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserBrokerageRecordServiceImpl.java new file mode 100644 index 0000000..1c03bb1 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserBrokerageRecordServiceImpl.java @@ -0,0 +1,472 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.constants.BrokerageRecordConstants; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.response.SpreadCommissionDetailResponse; +import com.github.pagehelper.Page; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.zbkj.common.utils.ArrayUtil; +import com.zbkj.common.utils.DateUtil; +import com.zbkj.common.vo.dateLimitUtilVo; +import com.zbkj.common.request.BrokerageRecordRequest; +import com.zbkj.common.request.RetailShopStairUserRequest; +import com.zbkj.common.model.user.User; +import com.zbkj.common.model.user.UserBrokerageRecord; +import com.zbkj.service.dao.UserBrokerageRecordDao; +import com.zbkj.service.service.UserBrokerageRecordService; +import com.zbkj.service.service.UserService; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.support.TransactionTemplate; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.List; +import java.util.Map; + +/** + * 用户佣金记录服务接口实现类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class UserBrokerageRecordServiceImpl extends ServiceImpl implements UserBrokerageRecordService { + + private static final Logger logger = LoggerFactory.getLogger(UserBrokerageRecordServiceImpl.class); + + @Resource + private UserBrokerageRecordDao dao; + + @Autowired + private UserService userService; + + @Autowired + private TransactionTemplate transactionTemplate; + + /** + * 根据订单编号获取记录列表 + * @param linkId 关联id + * @param linkType 关联类型 + * @return 记录列表 + */ + @Override + public List findListByLinkIdAndLinkType(String linkId, String linkType) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(UserBrokerageRecord::getLinkId, linkId); + lqw.eq(UserBrokerageRecord::getLinkType, linkType); + return dao.selectList(lqw); + } + + /** + * 获取记录(订单不可用此方法) + * @param linkId 关联id + * @param linkType 关联类型 + * @return 记录列表 + */ + @Override + public UserBrokerageRecord getByLinkIdAndLinkType(String linkId, String linkType) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(UserBrokerageRecord::getLinkId, linkId); + lqw.eq(UserBrokerageRecord::getLinkType, linkType); + lqw.last(" limit 1"); + return dao.selectOne(lqw); + } + + /** + * 佣金解冻 + */ + @Override + public void brokerageThaw() { + // 查询需要解冻的佣金 + List thawList = findThawList(); + if (CollUtil.isEmpty(thawList)) { + return; + } + for (UserBrokerageRecord record : thawList) { + // 查询对应的用户 + User user = userService.getById(record.getUid()); + if (ObjectUtil.isNull(user)) { + continue ; + } + record.setStatus(BrokerageRecordConstants.BROKERAGE_RECORD_STATUS_COMPLETE); + // 计算佣金余额 + BigDecimal balance = user.getBrokeragePrice().add(record.getPrice()); + record.setBalance(balance); + record.setUpdateTime(cn.hutool.core.date.DateUtil.date()); + + // 分佣 + Boolean execute = transactionTemplate.execute(e -> { + updateById(record); + userService.operationBrokerage(record.getUid(), record.getPrice(), user.getBrokeragePrice(), "add"); + return Boolean.TRUE; + }); + if (!execute) { + logger.error(StrUtil.format("佣金解冻处理—分佣出错,记录id = {}", record.getId())); + } + } + + } + + /** + * 昨天得佣金 + * @param uid 用户uid + * @return BigDecimal + */ + @Override + public BigDecimal getYesterdayIncomes(Integer uid) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.select(UserBrokerageRecord::getPrice); + lqw.eq(UserBrokerageRecord::getUid, uid); + dateLimitUtilVo dateLimit = DateUtil.getDateLimit(Constants.SEARCH_DATE_YESTERDAY); + lqw.between(UserBrokerageRecord::getUpdateTime, dateLimit.getStartTime(), dateLimit.getEndTime()); + lqw.eq(UserBrokerageRecord::getType, 1); + lqw.eq(UserBrokerageRecord::getLinkType, "order"); + lqw.eq(UserBrokerageRecord::getStatus, 3); + List recordList = dao.selectList(lqw); + if (CollUtil.isEmpty(recordList)) { + return BigDecimal.ZERO; + } + return recordList.stream().map(UserBrokerageRecord::getPrice).reduce(BigDecimal.ZERO, BigDecimal::add); + } + + /** + * 获取佣金明细列表根据uid + * @param uid uid + * @param pageParamRequest 分页参数 + */ + @Override + public PageInfo findDetailListByUid(Integer uid, PageParamRequest pageParamRequest) { + Page recordPage = PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("uid", uid); + queryWrapper.in("status", BrokerageRecordConstants.BROKERAGE_RECORD_STATUS_COMPLETE + , BrokerageRecordConstants.BROKERAGE_RECORD_STATUS_WITHDRAW); + queryWrapper.groupBy("left(update_time, 7)"); + queryWrapper.orderByDesc("left(update_time, 7)"); + List list = dao.selectList(queryWrapper); + if (CollUtil.isEmpty(list)) { + return new PageInfo<>(); + } + + List responseList = CollUtil.newArrayList(); + for (UserBrokerageRecord record : list) { + String month = DateUtil.dateToStr(record.getUpdateTime(), Constants.DATE_FORMAT_MONTH); + responseList.add(new SpreadCommissionDetailResponse(month, getListByUidAndMonth(uid, month))); + } + return CommonPage.copyPageInfo(recordPage, responseList); + } + + /** + * 获取累计推广条数 + * @param uid 用户uid + * @return Integer + */ + @Override + public Integer getSpreadCountByUid(Integer uid) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.select(UserBrokerageRecord::getId); + lqw.eq(UserBrokerageRecord::getUid, uid); + lqw.eq(UserBrokerageRecord::getLinkType, BrokerageRecordConstants.BROKERAGE_RECORD_LINK_TYPE_ORDER); + lqw.eq(UserBrokerageRecord::getStatus, BrokerageRecordConstants.BROKERAGE_RECORD_STATUS_COMPLETE); + return dao.selectCount(lqw); + } + + /** + * 获取推广记录列表 + * @param uid 用户uid + * @param pageParamRequest 分页参数 + * @return List + */ + @Override + public List findSpreadListByUid(Integer uid, PageParamRequest pageParamRequest) { + PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(UserBrokerageRecord::getUid, uid); + lqw.eq(UserBrokerageRecord::getLinkType, BrokerageRecordConstants.BROKERAGE_RECORD_LINK_TYPE_ORDER); + lqw.eq(UserBrokerageRecord::getStatus, BrokerageRecordConstants.BROKERAGE_RECORD_STATUS_COMPLETE); + lqw.orderByDesc(UserBrokerageRecord::getUpdateTime); + return dao.selectList(lqw); + } + + /** + * 获取推广记录列表 + * @param request 用户uid + * @param pageParamRequest 分页参数 + * @return PageInfo + */ + @Override + public PageInfo findAdminSpreadListByUid(RetailShopStairUserRequest request, PageParamRequest pageParamRequest) { + Page page = PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(UserBrokerageRecord::getUid, request.getUid()); + lqw.eq(UserBrokerageRecord::getLinkType, BrokerageRecordConstants.BROKERAGE_RECORD_LINK_TYPE_ORDER); + lqw.eq(UserBrokerageRecord::getStatus, BrokerageRecordConstants.BROKERAGE_RECORD_STATUS_COMPLETE); + if (request.getType().equals(1)) { + lqw.eq(UserBrokerageRecord::getBrokerageLevel, 1); + } + if (request.getType().equals(2)) { + lqw.eq(UserBrokerageRecord::getBrokerageLevel, 2); + } + if (StrUtil.isNotBlank(request.getNickName())) { + lqw.like(UserBrokerageRecord::getLinkId, request.getNickName()); + } + if (StrUtil.isNotBlank(request.getDateLimit())) { + dateLimitUtilVo dateLimit = DateUtil.getDateLimit(request.getDateLimit()); + lqw.between(UserBrokerageRecord::getUpdateTime, dateLimit.getStartTime(), dateLimit.getEndTime()); + } + + lqw.orderByDesc(UserBrokerageRecord::getUpdateTime); + return CommonPage.copyPageInfo(page, dao.selectList(lqw)); + } + + /** + * 获取月份对应的推广订单数 + * @param uid 用户uid + * @param monthList 月份列表 + * @return Map + */ + @Override + public Map getSpreadCountByUidAndMonth(Integer uid, List monthList) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.select("count(id) as uid, update_time"); + queryWrapper.eq("uid", uid); + queryWrapper.eq("link_type", BrokerageRecordConstants.BROKERAGE_RECORD_LINK_TYPE_ORDER); + queryWrapper.eq("status", BrokerageRecordConstants.BROKERAGE_RECORD_STATUS_COMPLETE); + queryWrapper.apply(StrUtil.format("left(update_time, 7) in ({})", ArrayUtil.strListToSqlJoin(monthList))); + queryWrapper.groupBy("left(update_time, 7)"); + List list = dao.selectList(queryWrapper); + Map map = CollUtil.newHashMap(); + if (CollUtil.isEmpty(list)) { + return map; + } + list.forEach(record -> { + map.put(DateUtil.dateToStr(record.getUpdateTime(), Constants.DATE_FORMAT_MONTH), record.getUid()); + }); + return map; + } + + /** + * 获取佣金排行榜(周、月) + * @param type week、month + * @return List + */ + @Override + public List getBrokerageTopByDate(String type) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.select("uid", "sum(price) AS price"); + queryWrapper.eq("link_type", BrokerageRecordConstants.BROKERAGE_RECORD_LINK_TYPE_ORDER); + queryWrapper.eq("status", BrokerageRecordConstants.BROKERAGE_RECORD_STATUS_COMPLETE); + dateLimitUtilVo dateLimit = DateUtil.getDateLimit(type); + if(!StringUtils.isBlank(dateLimit.getStartTime())){ + queryWrapper.between("update_time", dateLimit.getStartTime(), dateLimit.getEndTime()); + } + queryWrapper.groupBy("uid"); + queryWrapper.orderByDesc("price"); + return dao.selectList(queryWrapper); + } + + /** + * 根据Uid获取分佣记录列表 + * @param uid 用户uid + * @return List + */ + @Override + public List getSpreadListByUid(Integer uid) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(UserBrokerageRecord::getUid, uid); + lqw.eq(UserBrokerageRecord::getLinkType, BrokerageRecordConstants.BROKERAGE_RECORD_LINK_TYPE_ORDER); + lqw.eq(UserBrokerageRecord::getType, BrokerageRecordConstants.BROKERAGE_RECORD_TYPE_ADD); + lqw.eq(UserBrokerageRecord::getStatus, BrokerageRecordConstants.BROKERAGE_RECORD_STATUS_COMPLETE); + return dao.selectList(lqw); + } + + /** + * 佣金总金额(单位时间) + * @param dateLimit 时间参数 + * @return BigDecimal + */ + @Override + public BigDecimal getTotalSpreadPriceBydateLimit(String dateLimit) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.select(UserBrokerageRecord::getPrice); + lqw.eq(UserBrokerageRecord::getLinkType, BrokerageRecordConstants.BROKERAGE_RECORD_LINK_TYPE_ORDER); + lqw.eq(UserBrokerageRecord::getType, BrokerageRecordConstants.BROKERAGE_RECORD_TYPE_ADD); + lqw.eq(UserBrokerageRecord::getStatus, BrokerageRecordConstants.BROKERAGE_RECORD_STATUS_COMPLETE); + if (StrUtil.isNotBlank(dateLimit)) { + dateLimitUtilVo dateLimitVo = DateUtil.getDateLimit(dateLimit); + lqw.between(UserBrokerageRecord::getUpdateTime, dateLimitVo.getStartTime(), dateLimitVo.getEndTime()); + } + List list = dao.selectList(lqw); + if (CollUtil.isEmpty(list)) { + return BigDecimal.ZERO; + } + return list.stream().map(UserBrokerageRecord::getPrice).reduce(BigDecimal.ZERO, BigDecimal::add); + } + + /** + * 单位时间消耗的佣金 + * @param dateLimit 时间参数 + * @return + */ + @Override + public BigDecimal getSubSpreadPriceByDateLimit(String dateLimit) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.select(UserBrokerageRecord::getPrice); + lqw.eq(UserBrokerageRecord::getType, BrokerageRecordConstants.BROKERAGE_RECORD_TYPE_SUB); + lqw.eq(UserBrokerageRecord::getStatus, BrokerageRecordConstants.BROKERAGE_RECORD_STATUS_COMPLETE); + if (StrUtil.isNotBlank(dateLimit)) { + dateLimitUtilVo dateLimitVo = DateUtil.getDateLimit(dateLimit); + lqw.between(UserBrokerageRecord::getUpdateTime, dateLimitVo.getStartTime(), dateLimitVo.getEndTime()); + } + List list = dao.selectList(lqw); + if (CollUtil.isEmpty(list)) { + return BigDecimal.ZERO; + } + return list.stream().map(UserBrokerageRecord::getPrice).reduce(BigDecimal.ZERO, BigDecimal::add); + } + + /** + * 获取冻结期佣金 + * @param uid uid + * @return BigDecimal + */ + @Override + public BigDecimal getFreezePrice(Integer uid) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.select(UserBrokerageRecord::getPrice); + lqw.eq(UserBrokerageRecord::getUid, uid); + lqw.eq(UserBrokerageRecord::getLinkType, BrokerageRecordConstants.BROKERAGE_RECORD_LINK_TYPE_ORDER); + lqw.eq(UserBrokerageRecord::getStatus, BrokerageRecordConstants.BROKERAGE_RECORD_STATUS_FROZEN); + List list = dao.selectList(lqw); + if (CollUtil.isEmpty(list)) { + return BigDecimal.ZERO; + } + return list.stream().map(UserBrokerageRecord::getPrice).reduce(BigDecimal.ZERO, BigDecimal::add); + } + + /** + * 佣金记录列表 + * @param request 筛选条件 + * @param pageParamRequest 分页参数 + * @return PageInfo + */ + @Override + public PageInfo getAdminList(BrokerageRecordRequest request, PageParamRequest pageParamRequest) { + Page page = PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + if (ObjectUtil.isNotNull(request.getType())) { + switch (request.getType()) { + case 1:// 订单返佣 + lqw.eq(UserBrokerageRecord::getLinkType, BrokerageRecordConstants.BROKERAGE_RECORD_LINK_TYPE_ORDER); + lqw.eq(UserBrokerageRecord::getStatus, BrokerageRecordConstants.BROKERAGE_RECORD_STATUS_COMPLETE); + lqw.eq(UserBrokerageRecord::getType, BrokerageRecordConstants.BROKERAGE_RECORD_TYPE_ADD); + break; + case 2:// 申请提现 + lqw.eq(UserBrokerageRecord::getLinkType, BrokerageRecordConstants.BROKERAGE_RECORD_LINK_TYPE_WITHDRAW); + lqw.eq(UserBrokerageRecord::getStatus, BrokerageRecordConstants.BROKERAGE_RECORD_STATUS_WITHDRAW); + lqw.eq(UserBrokerageRecord::getType, BrokerageRecordConstants.BROKERAGE_RECORD_TYPE_SUB); + break; + case 3:// 提现失败 + lqw.eq(UserBrokerageRecord::getLinkType, BrokerageRecordConstants.BROKERAGE_RECORD_LINK_TYPE_WITHDRAW); + lqw.eq(UserBrokerageRecord::getStatus, BrokerageRecordConstants.BROKERAGE_RECORD_STATUS_COMPLETE); + lqw.eq(UserBrokerageRecord::getType, BrokerageRecordConstants.BROKERAGE_RECORD_TYPE_ADD); + break; + case 4:// 提现成功 + lqw.eq(UserBrokerageRecord::getLinkType, BrokerageRecordConstants.BROKERAGE_RECORD_LINK_TYPE_WITHDRAW); + lqw.eq(UserBrokerageRecord::getStatus, BrokerageRecordConstants.BROKERAGE_RECORD_STATUS_COMPLETE); + lqw.eq(UserBrokerageRecord::getType, BrokerageRecordConstants.BROKERAGE_RECORD_TYPE_SUB); + break; + case 5:// 佣金转余额 + lqw.eq(UserBrokerageRecord::getLinkType, BrokerageRecordConstants.BROKERAGE_RECORD_LINK_TYPE_YUE); + lqw.eq(UserBrokerageRecord::getStatus, BrokerageRecordConstants.BROKERAGE_RECORD_STATUS_COMPLETE); + lqw.eq(UserBrokerageRecord::getType, BrokerageRecordConstants.BROKERAGE_RECORD_TYPE_SUB); + break; + } + } else { + lqw.in(UserBrokerageRecord::getStatus, BrokerageRecordConstants.BROKERAGE_RECORD_STATUS_COMPLETE, BrokerageRecordConstants.BROKERAGE_RECORD_STATUS_WITHDRAW); + } + lqw.orderByDesc(UserBrokerageRecord::getUpdateTime, UserBrokerageRecord::getId); + List list = dao.selectList(lqw); + return CommonPage.copyPageInfo(page, list); + } + + /** + * 根据日期获取支付佣金金额(确认到账佣金) + * @param date 日期,yyyy-MM-dd格式 + * @return BigDecimal + */ + @Override + public BigDecimal getBrokerageAmountByDate(String date) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.select("IFNULL(sum(price), 0) as price"); + queryWrapper.eq("link_type", "order"); + queryWrapper.eq("type", 1); + queryWrapper.eq("status", 3); + queryWrapper.apply("date_format(create_time, '%Y-%m-%d') = {0}", date); + return dao.selectOne(queryWrapper).getPrice(); + } + + /** + * 获取累计佣金转余额金额 + * @return BigDecimal + */ + @Override + public BigDecimal getTotalYuePrice() { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.select("IFNULL(sum(price), 0) as price"); + queryWrapper.eq("link_type", "yue"); + queryWrapper.eq("type", 2); + queryWrapper.eq("status", 3); + return dao.selectOne(queryWrapper).getPrice(); + } + + /** + * 根据月份获取佣金明细 + * @param uid uid + * @param month 月份 + * @return + */ + private List getListByUidAndMonth(Integer uid, String month) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.select("id", "title", "price", "update_time", "type", "status"); + queryWrapper.eq("uid", uid); + queryWrapper.in("status", BrokerageRecordConstants.BROKERAGE_RECORD_STATUS_COMPLETE + , BrokerageRecordConstants.BROKERAGE_RECORD_STATUS_WITHDRAW); + queryWrapper.eq("left(update_time, 7)", month); + queryWrapper.orderByDesc("update_time"); + return dao.selectList(queryWrapper); + } + + /** + * 获取需要解冻的记录列表 + * @return 记录列表 + */ + private List findThawList() { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.le(UserBrokerageRecord::getThawTime, System.currentTimeMillis()); + lqw.eq(UserBrokerageRecord::getLinkType, BrokerageRecordConstants.BROKERAGE_RECORD_LINK_TYPE_ORDER); + lqw.eq(UserBrokerageRecord::getType, BrokerageRecordConstants.BROKERAGE_RECORD_TYPE_ADD); + lqw.eq(UserBrokerageRecord::getStatus, BrokerageRecordConstants.BROKERAGE_RECORD_STATUS_FROZEN); + return dao.selectList(lqw); + } +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserDetailServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserDetailServiceImpl.java new file mode 100644 index 0000000..3c1323c --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserDetailServiceImpl.java @@ -0,0 +1,74 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.zbkj.common.model.system.SystemAdmin; +import com.zbkj.common.model.system.SystemMenu; +import com.zbkj.common.model.system.SystemPermissions; +import com.zbkj.common.vo.LoginUserVo; +import com.zbkj.service.service.SystemAdminService; +import com.zbkj.service.service.SystemMenuService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +/** + * 用户验证处理 + */ +@Service +public class UserDetailServiceImpl implements UserDetailsService { + + private static final Logger log = LoggerFactory.getLogger(UserDetailServiceImpl.class); + + @Autowired + private SystemAdminService systemAdminService; + + @Autowired + private SystemMenuService systemMenuService; + + @Override + public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { + SystemAdmin user = systemAdminService.selectUserByUserName(username); + if (ObjectUtil.isNull(user)) { + log.info("登录用户:{} 不存在.", username); + throw new UsernameNotFoundException("登录用户:" + username + " 不存在"); + } else if (!user.getStatus()) { + log.info("登录用户:{} 已被停用.", username); + throw new UsernameNotFoundException("对不起,您的账号:" + username + " 已停用"); + } + + return createLoginUser(user); + } + + public UserDetails createLoginUser(SystemAdmin user) { + List roles = Stream.of(user.getRoles().split(",")).map(Integer::valueOf).collect(Collectors.toList()); + List menuList; + if (roles.contains(1)) {// 超级管理员 + // 获取全部权限 + menuList = systemMenuService.getAllPermissions(); + } else { + menuList = systemMenuService.findPermissionByUserId(user.getId()); + } + menuList = menuList.stream().filter(e -> StrUtil.isNotEmpty(e.getPerms())).collect(Collectors.toList()); + List permissionsList = menuList.stream().map(e -> { + SystemPermissions permissions = new SystemPermissions(); + permissions.setId(e.getId()); + permissions.setPid(e.getPid()); + permissions.setName(e.getName()); + permissions.setPath(e.getPerms()); + permissions.setSort(e.getSort()); + return permissions; + }).collect(Collectors.toList()); + return new LoginUserVo(user, permissionsList); + } + + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserExperienceRecordServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserExperienceRecordServiceImpl.java new file mode 100644 index 0000000..50fc471 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserExperienceRecordServiceImpl.java @@ -0,0 +1,66 @@ +package com.zbkj.service.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.constants.ExperienceRecordConstants; +import com.github.pagehelper.PageHelper; +import com.zbkj.common.model.user.UserExperienceRecord; +import com.zbkj.service.dao.UserExperienceRecordDao; +import com.zbkj.service.service.UserExperienceRecordService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 用户经验记录服务接口实现类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class UserExperienceRecordServiceImpl extends ServiceImpl implements UserExperienceRecordService { + + @Resource + private UserExperienceRecordDao dao; + + /** + * 获取用户经验列表(移动端) + * @param userId 用户id + * @param pageParamRequest 分页参数 + * @return List + */ + @Override + public List getH5List(Integer userId, PageParamRequest pageParamRequest) { + PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.select(UserExperienceRecord::getId, UserExperienceRecord::getTitle, UserExperienceRecord::getType, UserExperienceRecord::getExperience, UserExperienceRecord::getCreateTime); + lqw.eq(UserExperienceRecord::getUid, userId); + lqw.orderByDesc(UserExperienceRecord::getId); + return dao.selectList(lqw); + } + + /** + * 通过订单编号获取记录 + * @param orderNo 订单编号 + * @param uid uid + * @return UserExperienceRecord + */ + @Override + public UserExperienceRecord getByOrderNoAndUid(String orderNo, Integer uid) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(UserExperienceRecord::getLinkId, orderNo); + lqw.eq(UserExperienceRecord::getLinkType, ExperienceRecordConstants.EXPERIENCE_RECORD_LINK_TYPE_ORDER); + lqw.eq(UserExperienceRecord::getUid, uid); + return dao.selectOne(lqw); + } +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserExtractServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserExtractServiceImpl.java new file mode 100644 index 0000000..69deb4e --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserExtractServiceImpl.java @@ -0,0 +1,445 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.constants.BrokerageRecordConstants; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.response.UserExtractRecordResponse; +import com.github.pagehelper.Page; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.zbkj.common.utils.DateUtil; +import com.zbkj.common.vo.dateLimitUtilVo; +import com.zbkj.common.model.finance.UserExtract; +import com.zbkj.common.request.UserExtractRequest; +import com.zbkj.common.request.UserExtractSearchRequest; +import com.zbkj.common.response.BalanceResponse; +import com.zbkj.common.response.UserExtractResponse; +import com.zbkj.common.model.user.User; +import com.zbkj.common.model.user.UserBrokerageRecord; +import com.zbkj.service.dao.UserExtractDao; +import com.zbkj.service.service.*; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.support.TransactionTemplate; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; + +import static java.math.BigDecimal.ZERO; + +/** +* UserExtractServiceImpl 接口实现 +* +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- +*/ +@Service +public class UserExtractServiceImpl extends ServiceImpl implements UserExtractService { + + @Resource + private UserExtractDao dao; + + @Autowired + private UserService userService; + + @Autowired + private SystemConfigService systemConfigService; + + @Autowired + private SystemAttachmentService systemAttachmentService; + + @Autowired + private TransactionTemplate transactionTemplate; + + @Autowired + private UserBrokerageRecordService userBrokerageRecordService; + + + /** + * 列表 + * @param request 请求参数 + * @param pageParamRequest 分页类参数 + * @author Mr.Zhang + * @since 2020-05-11 + * @return List + */ + @Override + public List getList(UserExtractSearchRequest request, PageParamRequest pageParamRequest) { + PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + + //带 UserExtract 类的多条件查询 + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + if (!StringUtils.isBlank(request.getKeywords())) { + lambdaQueryWrapper.and(i -> i. + or().like(UserExtract::getWechat, request.getKeywords()). //微信号 + or().like(UserExtract::getRealName, request.getKeywords()). //名称 + or().like(UserExtract::getBankCode, request.getKeywords()). //银行卡 + or().like(UserExtract::getBankAddress, request.getKeywords()). //开户行 + or().like(UserExtract::getAlipayCode, request.getKeywords()). //支付宝 + or().like(UserExtract::getFailMsg, request.getKeywords()) //失败原因 + ); + } + + //提现状态 + if (request.getStatus() != null) { + lambdaQueryWrapper.eq(UserExtract::getStatus, request.getStatus()); + } + + //提现方式 + if (!StringUtils.isBlank(request.getExtractType())) { + lambdaQueryWrapper.eq(UserExtract::getExtractType, request.getExtractType()); + } + + //时间范围 + if (StringUtils.isNotBlank(request.getDateLimit())) { + dateLimitUtilVo dateLimit = DateUtil.getDateLimit(request.getDateLimit()); + lambdaQueryWrapper.between(UserExtract::getCreateTime, dateLimit.getStartTime(), dateLimit.getEndTime()); + } + + //按创建时间降序排列 + lambdaQueryWrapper.orderByDesc(UserExtract::getCreateTime, UserExtract::getId); + + List extractList = dao.selectList(lambdaQueryWrapper); + if (CollUtil.isEmpty(extractList)) { + return extractList; + } + List uidList = extractList.stream().map(o -> o.getUid()).distinct().collect(Collectors.toList()); + HashMap userMap = userService.getMapListInUid(uidList); + for (UserExtract userExtract : extractList) { + userExtract.setNickName(Optional.ofNullable(userMap.get(userExtract.getUid()).getNickname()).orElse("")); + } + return extractList; + } + + /** + * 提现总金额 + * 总佣金 = 已提现佣金 + 未提现佣金 + * 已提现佣金 = 用户成功提现的金额 + * 未提现佣金 = 用户未提现的佣金 = 可提现佣金 + 冻结佣金 = 用户佣金 + * 可提现佣金 = 包括解冻佣金、提现未通过的佣金 = 用户佣金 - 冻结期佣金 + * 待提现佣金 = 待审核状态的佣金 + * 冻结佣金 = 用户在冻结期的佣金,不包括退回佣金 + * 退回佣金 = 因退款导致的冻结佣金退回 + */ + @Override + public BalanceResponse getBalance(String dateLimit) { + String startTime = ""; + String endTime = ""; + if (StringUtils.isNotBlank(dateLimit)) { + dateLimitUtilVo dateRage = DateUtil.getDateLimit(dateLimit); + startTime = dateRage.getStartTime(); + endTime = dateRage.getEndTime(); + } + + // 已提现 + BigDecimal withdrawn = getWithdrawn(startTime, endTime); + // 待提现(审核中) + BigDecimal toBeWithdrawn = getWithdrawning(startTime, endTime); + + // 佣金总金额(单位时间) + BigDecimal commissionTotal = userBrokerageRecordService.getTotalSpreadPriceBydateLimit(dateLimit); + // 单位时间消耗的佣金 + BigDecimal subWithdarw = userBrokerageRecordService.getSubSpreadPriceByDateLimit(dateLimit); + // 未提现 + BigDecimal unDrawn = commissionTotal.subtract(subWithdarw); + return new BalanceResponse(withdrawn, unDrawn, commissionTotal, toBeWithdrawn); + } + + + /** + * 提现总金额 + * @author Mr.Zhang + * @since 2020-05-11 + * @return BalanceResponse + */ + @Override + public BigDecimal getWithdrawn(String startTime, String endTime) { + return getSum(null, 1, startTime, endTime); + } + + /** + * 审核中总金额 + * @author Mr.Zhang + * @since 2020-05-11 + * @return BalanceResponse + */ + private BigDecimal getWithdrawning(String startTime, String endTime) { + return getSum(null, 0, startTime, endTime); + } + + /** + * 根据状态获取总额 + * @return BigDecimal + */ + private BigDecimal getSum(Integer userId, int status, String startTime, String endTime) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + if (null != userId) { + lqw.eq(UserExtract::getUid,userId); + } + lqw.eq(UserExtract::getStatus,status); + if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)) { + lqw.between(UserExtract::getCreateTime, startTime, endTime); + } + List userExtracts = dao.selectList(lqw); + BigDecimal sum = ZERO; + if (CollUtil.isNotEmpty(userExtracts)) { + sum = userExtracts.stream().map(UserExtract::getExtractPrice).reduce(ZERO, BigDecimal::add); + } + return sum; + } + + /** + * 获取用户对应的提现数据 + * @param userId 用户id + * @return 提现数据 + */ + @Override + public UserExtractResponse getUserExtractByUserId(Integer userId) { + QueryWrapper qw = new QueryWrapper<>(); + qw.select("SUM(extract_price) as extract_price,count(id) as id, uid"); + qw.ge("status", 1); + qw.eq("uid",userId); + qw.groupBy("uid"); + UserExtract ux = dao.selectOne(qw); + UserExtractResponse uexr = new UserExtractResponse(); +// uexr.setEuid(ux.getUid()); + if (null != ux) { + uexr.setExtractCountNum(ux.getId()); // 这里的id其实是数量,借变量传递 + uexr.setExtractCountPrice(ux.getExtractPrice()); + }else{ + uexr.setExtractCountNum(0); // 这里的id其实是数量,借变量传递 + uexr.setExtractCountPrice(ZERO); + } + + return uexr; + } + + /** + * 提现审核 + * + * @param id 提现申请id + * @param status 审核状态 -1 未通过 0 审核中 1 已提现 + * @param backMessage 驳回原因 + * @return 审核结果 + */ + @Override + public Boolean updateStatus(Integer id, Integer status, String backMessage) { + if (status == -1 && StringUtils.isBlank(backMessage)) + throw new CrmebException("驳回时请填写驳回原因"); + + UserExtract userExtract = getById(id); + if (ObjectUtil.isNull(userExtract)) { + throw new CrmebException("提现申请记录不存在"); + } + if (userExtract.getStatus() != 0) { + throw new CrmebException("提现申请已处理过"); + } + userExtract.setStatus(status); + + User user = userService.getById(userExtract.getUid()); + if (ObjectUtil.isNull(user)) { + throw new CrmebException("提现用户数据异常"); + } + + Boolean execute = false; + + userExtract.setUpdateTime(cn.hutool.core.date.DateUtil.date()); + // 拒绝 + if (status == -1) {//未通过时恢复用户总金额 + userExtract.setFailMsg(backMessage); + // 添加提现申请拒绝佣金记录 + UserBrokerageRecord brokerageRecord = new UserBrokerageRecord(); + brokerageRecord.setUid(user.getUid()); + brokerageRecord.setLinkId(userExtract.getId().toString()); + brokerageRecord.setLinkType(BrokerageRecordConstants.BROKERAGE_RECORD_LINK_TYPE_WITHDRAW); + brokerageRecord.setType(BrokerageRecordConstants.BROKERAGE_RECORD_TYPE_ADD); + brokerageRecord.setTitle(BrokerageRecordConstants.BROKERAGE_RECORD_TITLE_WITHDRAW_FAIL); + brokerageRecord.setPrice(userExtract.getExtractPrice()); + brokerageRecord.setBalance(user.getBrokeragePrice().add(userExtract.getExtractPrice())); + brokerageRecord.setMark(StrUtil.format("提现申请拒绝返还佣金{}", userExtract.getExtractPrice())); + brokerageRecord.setStatus(BrokerageRecordConstants.BROKERAGE_RECORD_STATUS_COMPLETE); + brokerageRecord.setCreateTime(DateUtil.nowDateTime()); + + execute = transactionTemplate.execute(e -> { + // 返还佣金 + userService.operationBrokerage(userExtract.getUid(), userExtract.getExtractPrice(), user.getBrokeragePrice(), "add"); + updateById(userExtract); + userBrokerageRecordService.save(brokerageRecord); + return Boolean.TRUE; + }); + } + + // 同意 + if (status == 1) { + // 获取佣金提现记录 + UserBrokerageRecord brokerageRecord = userBrokerageRecordService.getByLinkIdAndLinkType(userExtract.getId().toString(), BrokerageRecordConstants.BROKERAGE_RECORD_LINK_TYPE_WITHDRAW); + if (ObjectUtil.isNull(brokerageRecord)) { + throw new CrmebException("对应的佣金记录不存在"); + } + execute = transactionTemplate.execute(e -> { + updateById(userExtract); + brokerageRecord.setStatus(BrokerageRecordConstants.BROKERAGE_RECORD_STATUS_COMPLETE); + userBrokerageRecordService.updateById(brokerageRecord); + return Boolean.TRUE; + }); + } + return execute; + } + + /** + * 获取提现记录列表 + * @param userId 用户uid + * @param pageParamRequest 分页参数 + * @return PageInfo + */ + @Override + public PageInfo getExtractRecord(Integer userId, PageParamRequest pageParamRequest) { + Page userExtractPage = PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("uid", userId); + + queryWrapper.groupBy("left(create_time, 7)"); + queryWrapper.orderByDesc("left(create_time, 7)"); + List list = dao.selectList(queryWrapper); + if (CollUtil.isEmpty(list)) { + return new PageInfo<>(); + } + ArrayList userExtractRecordResponseList = CollectionUtil.newArrayList(); + for (UserExtract userExtract : list) { + String date = DateUtil.dateToStr(userExtract.getCreateTime(), Constants.DATE_FORMAT_MONTH); + userExtractRecordResponseList.add(new UserExtractRecordResponse(date, getListByMonth(userId, date))); + } + + return CommonPage.copyPageInfo(userExtractPage, userExtractRecordResponseList); + } + + private List getListByMonth(Integer userId, String date) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.select("id", "extract_price", "status", "create_time", "update_time"); + queryWrapper.eq("uid", userId); + queryWrapper.apply(StrUtil.format(" left(create_time, 7) = '{}'", date)); + queryWrapper.orderByDesc("create_time"); + return dao.selectList(queryWrapper); + } + + /** + * 获取用户提现总金额 + * @param userId 用户uid + * @return BigDecimal + */ + @Override + public BigDecimal getExtractTotalMoney(Integer userId) { + return getSum(userId, 1, null, null); + } + + + /** + * 提现申请 + * @return Boolean + */ + @Override + public Boolean extractApply(UserExtractRequest request) { + //添加判断,提现金额不能后台配置金额 + String value = systemConfigService.getValueByKeyException(Constants.CONFIG_EXTRACT_MIN_PRICE); + BigDecimal ten = new BigDecimal(value); + if (request.getExtractPrice().compareTo(ten) < 0) { + throw new CrmebException(StrUtil.format("最低提现金额{}元", ten)); + } + + User user = userService.getInfo(); + if (ObjectUtil.isNull(user)) { + throw new CrmebException("提现用户信息异常"); + } + BigDecimal money = user.getBrokeragePrice();//可提现总金额 + if (money.compareTo(ZERO) < 1) { + throw new CrmebException("您当前没有金额可以提现"); + } + + if (money.compareTo(request.getExtractPrice()) < 0) { + throw new CrmebException("你当前最多可提现 " + money + "元"); + } + + UserExtract userExtract = new UserExtract(); + BeanUtils.copyProperties(request, userExtract); + userExtract.setUid(user.getUid()); + userExtract.setBalance(money.subtract(request.getExtractPrice())); + //存入银行名称 + if (StrUtil.isNotBlank(userExtract.getQrcodeUrl())) { + userExtract.setQrcodeUrl(systemAttachmentService.clearPrefix(userExtract.getQrcodeUrl())); + } + + // 添加佣金记录 + UserBrokerageRecord brokerageRecord = new UserBrokerageRecord(); + brokerageRecord.setUid(user.getUid()); + brokerageRecord.setLinkType(BrokerageRecordConstants.BROKERAGE_RECORD_LINK_TYPE_WITHDRAW); + brokerageRecord.setType(BrokerageRecordConstants.BROKERAGE_RECORD_TYPE_SUB); + brokerageRecord.setTitle(BrokerageRecordConstants.BROKERAGE_RECORD_TITLE_WITHDRAW_APPLY); + brokerageRecord.setPrice(userExtract.getExtractPrice()); + brokerageRecord.setBalance(money.subtract(userExtract.getExtractPrice())); + brokerageRecord.setMark(StrUtil.format("提现申请扣除佣金{}", userExtract.getExtractPrice())); + brokerageRecord.setStatus(BrokerageRecordConstants.BROKERAGE_RECORD_STATUS_WITHDRAW); + brokerageRecord.setCreateTime(DateUtil.nowDateTime()); + + Boolean execute = transactionTemplate.execute(e -> { + // 保存提现记录 + save(userExtract); + // 修改用户佣金 + userService.operationBrokerage(user.getUid(), userExtract.getExtractPrice(), money, "sub"); + // 添加佣金记录 + brokerageRecord.setLinkId(userExtract.getId().toString()); + userBrokerageRecordService.save(brokerageRecord); + return Boolean.TRUE; + }); + // 此处可添加提现申请通知 + + return execute; + } + + /** + * 修改提现申请 + * @param id 申请id + * @param userExtractRequest 具体参数 + */ + @Override + public Boolean updateExtract(Integer id, UserExtractRequest userExtractRequest) { + UserExtract userExtract = new UserExtract(); + BeanUtils.copyProperties(userExtractRequest, userExtract); + userExtract.setId(id); + return updateById(userExtract); + } + + /** + * 提现申请待审核数量 + * @return Integer + */ + @Override + public Integer getNotAuditNum() { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(UserExtract::getStatus, 0); + return dao.selectCount(lqw); + } +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserFundsMonitorServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserFundsMonitorServiceImpl.java new file mode 100644 index 0000000..74fba5c --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserFundsMonitorServiceImpl.java @@ -0,0 +1,83 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.constants.BrokerageRecordConstants; +import com.zbkj.common.vo.UserFundsMonitor; +import com.github.pagehelper.PageInfo; +import com.zbkj.common.request.BrokerageRecordRequest; +import com.zbkj.common.model.user.User; +import com.zbkj.common.model.user.UserBrokerageRecord; +import com.zbkj.service.dao.UserFundsMonitorDao; +import com.zbkj.service.service.UserBrokerageRecordService; +import com.zbkj.service.service.UserFundsMonitorService; +import com.zbkj.service.service.UserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.List; +import java.util.stream.Collectors; + +/** +* UserRechargeServiceImpl 接口实现 +* +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- +*/ +@Service +public class UserFundsMonitorServiceImpl extends ServiceImpl implements UserFundsMonitorService { + + @Resource + private UserFundsMonitorDao dao; + + @Autowired + private UserBrokerageRecordService userBrokerageRecordService; + + @Autowired + private UserService userService; + + /** + * 佣金记录 + * @param request 筛选条件 + * @param pageParamRequest 分页参数 + * @return PageInfo + */ + @Override + public PageInfo getBrokerageRecord(BrokerageRecordRequest request, PageParamRequest pageParamRequest) { + PageInfo pageInfo = userBrokerageRecordService.getAdminList(request, pageParamRequest); + List list = pageInfo.getList(); + if (CollUtil.isEmpty(list)) { + pageInfo.setList(list); + return pageInfo; + } + List uidList = list.stream().map(e -> e.getUid()).distinct().collect(Collectors.toList()); + HashMap userMap = userService.getMapListInUid(uidList); + list.forEach(e -> { + if (e.getLinkType().equals(BrokerageRecordConstants.BROKERAGE_RECORD_LINK_TYPE_WITHDRAW) + && e.getStatus().equals(BrokerageRecordConstants.BROKERAGE_RECORD_STATUS_COMPLETE) + && e.getType().equals(BrokerageRecordConstants.BROKERAGE_RECORD_TYPE_SUB)) { + e.setTitle("提现成功"); + } + String name = "-"; + if(ObjectUtil.isNotNull(userMap.get(e.getUid()))){ + name = userMap.get(e.getUid()).getNickname(); + } + e.setUserName(name); + }); + pageInfo.setList(list); + return pageInfo; + } + + +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserGroupServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserGroupServiceImpl.java new file mode 100644 index 0000000..fcfc6a2 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserGroupServiceImpl.java @@ -0,0 +1,90 @@ +package com.zbkj.service.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.request.UserGroupRequest; +import com.github.pagehelper.PageHelper; +import com.zbkj.common.utils.CrmebUtil; +import com.zbkj.common.model.user.UserGroup; +import com.zbkj.service.dao.UserGroupDao; +import com.zbkj.service.service.UserGroupService; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; +import java.util.stream.Collectors; + +/** + * UserGroupServiceImpl 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class UserGroupServiceImpl extends ServiceImpl implements UserGroupService { + + @Resource + private UserGroupDao dao; + + /** + * 列表 + * @param pageParamRequest 分页类参数 + * @return List + */ + @Override + public List getList(PageParamRequest pageParamRequest) { + PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + return dao.selectList(null); + } + + /** + * 根据id in,返回字符串拼接 + * @param groupIdValue String 分组id + * @return List + */ + @Override + public String getGroupNameInId(String groupIdValue) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.in(UserGroup::getId, CrmebUtil.stringToArray(groupIdValue)).orderByDesc(UserGroup::getId); + List userTags = dao.selectList(lambdaQueryWrapper); + if(null == userTags){ + return "无"; + } + + return userTags.stream().map(UserGroup::getGroupName).distinct().collect(Collectors.joining(",")); + } + + /** + * 新增用户分组 + * @param userGroupRequest 分组参数 + */ + @Override + public Boolean create(UserGroupRequest userGroupRequest) { + UserGroup userGroup = new UserGroup(); + BeanUtils.copyProperties(userGroupRequest, userGroup); + return save(userGroup); + } + + /** + * 修改用户分组 + * @param id 分组id + * @param userGroupRequest 修改参数 + */ + @Override + public Boolean edit(Integer id, UserGroupRequest userGroupRequest) { + UserGroup userGroup = new UserGroup(); + BeanUtils.copyProperties(userGroupRequest, userGroup); + userGroup.setId(id); + return updateById(userGroup); + } + +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserIntegralRecordServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserIntegralRecordServiceImpl.java new file mode 100644 index 0000000..0e90588 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserIntegralRecordServiceImpl.java @@ -0,0 +1,261 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.request.AdminIntegralSearchRequest; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.constants.IntegralRecordConstants; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.response.UserIntegralRecordResponse; +import com.github.pagehelper.Page; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.zbkj.common.utils.DateUtil; +import com.zbkj.common.vo.dateLimitUtilVo; +import com.zbkj.common.model.user.User; +import com.zbkj.common.model.user.UserIntegralRecord; +import com.zbkj.service.dao.UserIntegralRecordDao; +import com.zbkj.service.service.UserIntegralRecordService; +import com.zbkj.service.service.UserService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.support.TransactionTemplate; + +import javax.annotation.Resource; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 用户积分记录Service实现类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class UserIntegralRecordServiceImpl extends ServiceImpl implements UserIntegralRecordService { + + private static final Logger logger = LoggerFactory.getLogger(UserIntegralRecordServiceImpl.class); + + @Resource + private UserIntegralRecordDao dao; + + @Autowired + private UserService userService; + + @Autowired + private TransactionTemplate transactionTemplate; + + /** + * 根据订单编号、uid获取记录列表 + * @param orderNo 订单编号 + * @param uid 用户uid + * @return 记录列表 + */ + @Override + public List findListByOrderIdAndUid(String orderNo, Integer uid) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(UserIntegralRecord::getUid, uid); + lqw.eq(UserIntegralRecord::getLinkId, orderNo); + lqw.in(UserIntegralRecord::getStatus, IntegralRecordConstants.INTEGRAL_RECORD_STATUS_CREATE, IntegralRecordConstants.INTEGRAL_RECORD_STATUS_FROZEN, IntegralRecordConstants.INTEGRAL_RECORD_STATUS_COMPLETE); + List recordList = dao.selectList(lqw); + if (CollUtil.isEmpty(recordList)) { + return recordList; + } + for (int i = 0; i < recordList.size();) { + UserIntegralRecord record = recordList.get(i); + if (record.getType().equals(IntegralRecordConstants.INTEGRAL_RECORD_TYPE_ADD)) { + if (record.getStatus().equals(IntegralRecordConstants.INTEGRAL_RECORD_STATUS_COMPLETE)) { + recordList.remove(i); + continue; + } + } + i++; + } + return recordList; + } + + /** + * 积分解冻 + */ + @Override + public void integralThaw() { + // 查询需要解冻的积分 + List thawList = findThawList(); + if (CollUtil.isEmpty(thawList)) { + return; + } + for (UserIntegralRecord record : thawList) { + // 查询对应的用户 + User user = userService.getById(record.getUid()); + if (ObjectUtil.isNull(user)) { + continue ; + } + record.setStatus(IntegralRecordConstants.INTEGRAL_RECORD_STATUS_COMPLETE); + // 计算积分余额 + Integer balance = user.getIntegral() + record.getIntegral(); + record.setBalance(balance); + record.setUpdateTime(cn.hutool.core.date.DateUtil.date()); + + // 解冻 + Boolean execute = transactionTemplate.execute(e -> { + updateById(record); + userService.operationIntegral(record.getUid(), record.getIntegral(), user.getIntegral(), "add"); + return Boolean.TRUE; + }); + if (!execute) { + logger.error(StrUtil.format("积分解冻处理—解冻出错,记录id = {}", record.getId())); + } + } + } + + /** + * PC后台列表 + * @param request 搜索条件 + * @param pageParamRequest 分页参数 + * @return 记录列表 + */ + @Override + public PageInfo findAdminList(AdminIntegralSearchRequest request, PageParamRequest pageParamRequest) { + Page page = PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.select(UserIntegralRecord::getId, UserIntegralRecord::getTitle, UserIntegralRecord::getBalance, UserIntegralRecord::getIntegral, + UserIntegralRecord::getMark, UserIntegralRecord::getUid, UserIntegralRecord::getUpdateTime); + lqw.eq(UserIntegralRecord::getStatus, IntegralRecordConstants.INTEGRAL_RECORD_STATUS_COMPLETE); + if (ObjectUtil.isNotNull(request.getUid())) { + lqw.eq(UserIntegralRecord::getUid, request.getUid()); + } + if (StrUtil.isNotBlank(request.getKeywords())) { + List idList = userService.findIdListLikeName(request.getKeywords()); + if (CollUtil.isNotEmpty(idList)) { + lqw.in(UserIntegralRecord::getUid, idList); + } else { + return CommonPage.copyPageInfo(page, CollUtil.newArrayList()); + } + } + //时间范围 + if (StrUtil.isNotBlank(request.getDateLimit())) { + dateLimitUtilVo dateLimit = DateUtil.getDateLimit(request.getDateLimit()); + //判断时间 + int compareDateResult = DateUtil.compareDate(dateLimit.getEndTime(), dateLimit.getStartTime(), Constants.DATE_FORMAT); + if (compareDateResult == -1) { + throw new CrmebException("开始时间不能大于结束时间!"); + } + + lqw.between(UserIntegralRecord::getUpdateTime, dateLimit.getStartTime(), dateLimit.getEndTime()); + } + lqw.orderByDesc(UserIntegralRecord::getUpdateTime); + List list = dao.selectList(lqw); + if (CollUtil.isEmpty(list)) { + return CommonPage.copyPageInfo(page, CollUtil.newArrayList()); + } + List responseList = list.stream().map(i -> { + UserIntegralRecordResponse response = new UserIntegralRecordResponse(); + BeanUtils.copyProperties(i, response); + // 获取用户昵称 + User user = userService.getById(i.getUid()); + if (ObjectUtil.isNotNull(user)) { + response.setNickName(user.getNickname()); + } else { + response.setNickName(""); + } + return response; + }).collect(Collectors.toList()); + return CommonPage.copyPageInfo(page, responseList); + } + + /** + * 根据类型条件计算积分总数 + * @param uid 用户uid + * @param type 类型:1-增加,2-扣减 + * @param date 日期 + * @param linkType 关联类型 + * @return 积分总数 + */ + @Override + public Integer getSumIntegral(Integer uid, Integer type, String date, String linkType) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.select("sum(integral) as integral"); + queryWrapper.eq("uid", uid); + queryWrapper.eq("type", type); + if (StrUtil.isNotBlank(linkType)) { + queryWrapper.eq("link_type", linkType); + } + queryWrapper.eq("status", IntegralRecordConstants.INTEGRAL_RECORD_STATUS_COMPLETE); + if (StrUtil.isNotBlank(date)) { + dateLimitUtilVo dateLimit = DateUtil.getDateLimit(date); + queryWrapper.between("update_time", dateLimit.getStartTime(), dateLimit.getEndTime()); + } + UserIntegralRecord integralRecord = dao.selectOne(queryWrapper); + if (ObjectUtil.isNull(integralRecord) || ObjectUtil.isNull(integralRecord.getIntegral())) { + return 0; + } + return integralRecord.getIntegral(); + } + + /** + * H5用户积分列表 + * @param uid 用户uid + * @param pageParamRequest 分页参数 + * @return 记录列表 + */ + @Override + public List findUserIntegralRecordList(Integer uid, PageParamRequest pageParamRequest) { + PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.select(UserIntegralRecord::getId, UserIntegralRecord::getTitle, UserIntegralRecord::getType, UserIntegralRecord::getIntegral, UserIntegralRecord::getUpdateTime); + lqw.eq(UserIntegralRecord::getUid, uid); + lqw.eq(UserIntegralRecord::getStatus, IntegralRecordConstants.INTEGRAL_RECORD_STATUS_COMPLETE); + lqw.orderByDesc(UserIntegralRecord::getUpdateTime); + return dao.selectList(lqw); + } + + /** + * 获取用户冻结的积分 + * @param uid 用户uid + * @return 积分数量 + */ + @Override + public Integer getFrozenIntegralByUid(Integer uid) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.select("sum(integral) as integral"); + queryWrapper.eq("uid", uid); + queryWrapper.eq("type", IntegralRecordConstants.INTEGRAL_RECORD_TYPE_ADD); + queryWrapper.eq("link_type", IntegralRecordConstants.INTEGRAL_RECORD_LINK_TYPE_ORDER); + queryWrapper.eq("status", IntegralRecordConstants.INTEGRAL_RECORD_STATUS_FROZEN); + UserIntegralRecord integralRecord = dao.selectOne(queryWrapper); + if (ObjectUtil.isNull(integralRecord) || ObjectUtil.isNull(integralRecord.getIntegral())) { + return 0; + } + return integralRecord.getIntegral(); + } + + /** + * 获取需要解冻的记录列表 + * @return 记录列表 + */ + private List findThawList() { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.le(UserIntegralRecord::getThawTime, System.currentTimeMillis()); + lqw.eq(UserIntegralRecord::getLinkType, IntegralRecordConstants.INTEGRAL_RECORD_LINK_TYPE_ORDER); + lqw.eq(UserIntegralRecord::getType, IntegralRecordConstants.INTEGRAL_RECORD_TYPE_ADD); + lqw.eq(UserIntegralRecord::getStatus, IntegralRecordConstants.INTEGRAL_RECORD_STATUS_FROZEN); + return dao.selectList(lqw); + } +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserLevelServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserLevelServiceImpl.java new file mode 100644 index 0000000..ef1d03e --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserLevelServiceImpl.java @@ -0,0 +1,200 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.constants.Constants; +import com.github.pagehelper.PageHelper; +import com.zbkj.common.utils.DateUtil; +import com.zbkj.common.model.system.SystemUserLevel; +import com.zbkj.common.model.user.User; +import com.zbkj.common.model.user.UserLevel; +import com.zbkj.service.dao.UserLevelDao; +import com.zbkj.service.service.SystemUserLevelService; +import com.zbkj.service.service.UserLevelService; +import com.zbkj.service.service.UserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.support.TransactionTemplate; + +import javax.annotation.Resource; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** + * UserLevelServiceImpl 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class UserLevelServiceImpl extends ServiceImpl implements UserLevelService { + + @Resource + private UserLevelDao dao; + + @Autowired + private SystemUserLevelService systemUserLevelService; + + @Autowired + private UserService userService; + + @Autowired + private TransactionTemplate transactionTemplate; + + + /** + * 列表 + * @param pageParamRequest 分页类参数 + * @return List + */ + @Override + public List getList(PageParamRequest pageParamRequest) { + PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + return dao.selectList(null); + } + + /** + * 用户升级 + * @param user 用户数据 + * @return Boolean + */ + @Override + public Boolean upLevel(User user) { + //确定当前经验所达到的等级 + List list = systemUserLevelService.getUsableList(); + if (CollUtil.isEmpty(list)) { + log.error("系统会员等级未配置,请配置对应数据"); + return Boolean.TRUE; + } + + SystemUserLevel userLevelConfig = null; + for (SystemUserLevel systemUserLevel : list) { + if(user.getExperience() > systemUserLevel.getExperience()){ + userLevelConfig = systemUserLevel; + continue; + } + break; + } + + if(ObjectUtil.isNull(userLevelConfig)) { + log.warn("未找到用户对应的会员等级,uid = " + user.getUid()); + return Boolean.TRUE; + } + + // 判断用户是否还在原等级 + if (user.getLevel().equals(userLevelConfig.getId())) { + return Boolean.TRUE; + } + + // 判断用户等级经过向上调整 + List collect = list.stream().filter(e -> e.getId().equals(user.getLevel())).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(collect)) { + if (collect.get(0).getGrade() > userLevelConfig.getGrade()) { + return Boolean.TRUE; + } + } + UserLevel newLevel = new UserLevel(); + newLevel.setStatus(true); + newLevel.setIsDel(false); + newLevel.setGrade(userLevelConfig.getGrade()); + newLevel.setUid(user.getUid()); + newLevel.setLevelId(userLevelConfig.getId()); + newLevel.setDiscount(userLevelConfig.getDiscount()); + + Date date = DateUtil.nowDateTimeReturnDate(Constants.DATE_FORMAT); + String mark = Constants.USER_LEVEL_UP_LOG_MARK.replace("【{$userName}】", user.getNickname()). + replace("{$date}", DateUtil.dateToStr(date, Constants.DATE_FORMAT)). + replace("{$levelName}", userLevelConfig.getName()); + newLevel.setMark(mark); + + //更新会员等级 + user.setLevel(userLevelConfig.getId()); + return transactionTemplate.execute(e -> { + save(newLevel); + userService.updateById(user); + return Boolean.TRUE; + }); + } + + /** + * 经验降级 + * @param user 用户 + * @return Boolean + */ + @Override + public Boolean downLevel(User user) { + //确定当前经验所达到的等级 + List list = systemUserLevelService.getUsableList(); + if (CollUtil.isEmpty(list)) { + log.error("系统会员等级未配置,请配置对应数据"); + return Boolean.TRUE; + } + + SystemUserLevel userLevelConfig = null; + for (SystemUserLevel systemUserLevel : list) { + if(user.getExperience() > systemUserLevel.getExperience()){ + userLevelConfig = systemUserLevel; + continue; + } + break; + } + + if(ObjectUtil.isNull(userLevelConfig)) { + log.warn("未找到用户对应的会员等级,uid = " + user.getUid()); + return Boolean.TRUE; + } + + // 判断用户是否还在原等级 + if (user.getLevel().equals(userLevelConfig.getId())) { + return Boolean.TRUE; + } + + UserLevel newLevel = new UserLevel(); + newLevel.setStatus(true); + newLevel.setIsDel(false); + newLevel.setGrade(userLevelConfig.getGrade()); + newLevel.setUid(user.getUid()); + newLevel.setLevelId(userLevelConfig.getId()); + newLevel.setDiscount(userLevelConfig.getDiscount()); + + Date date = DateUtil.nowDateTimeReturnDate(Constants.DATE_FORMAT); + String mark = Constants.USER_LEVEL_OPERATE_LOG_MARK.replace("【{$userName}】", user.getNickname()). + replace("{$date}", DateUtil.dateToStr(date, Constants.DATE_FORMAT)). + replace("{$levelName}", userLevelConfig.getName()); + newLevel.setMark(mark); + + //更新会员等级 + user.setLevel(userLevelConfig.getId()); + return transactionTemplate.execute(e -> { + save(newLevel); + userService.updateById(user); + return Boolean.TRUE; + }); + } + + /** + * 删除(通过系统等级id) + * @param levelId 系统等级id + * @return Boolean + */ + @Override + public Boolean deleteByLevelId(Integer levelId) { + LambdaUpdateWrapper luw = Wrappers.lambdaUpdate(); + luw.set(UserLevel::getIsDel, true); + luw.eq(UserLevel::getLevelId, levelId); + luw.eq(UserLevel::getIsDel, false); + return update(luw); + } +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserRechargeServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserRechargeServiceImpl.java new file mode 100644 index 0000000..c830a04 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserRechargeServiceImpl.java @@ -0,0 +1,250 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.exception.CrmebException; +import com.github.pagehelper.Page; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.zbkj.common.utils.DateUtil; +import com.zbkj.common.vo.dateLimitUtilVo; +import com.zbkj.common.model.finance.UserRecharge; +import com.zbkj.common.request.UserRechargeSearchRequest; +import com.zbkj.common.response.UserRechargeResponse; +import com.zbkj.common.model.user.User; +import com.zbkj.service.dao.UserRechargeDao; +import com.zbkj.service.service.UserRechargeService; +import com.zbkj.service.service.UserService; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.HashMap; +import java.util.List; +import java.util.stream.Collectors; + +/** +* UserRechargeServiceImpl 接口实现 +* +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- +*/ +@Service +public class UserRechargeServiceImpl extends ServiceImpl implements UserRechargeService { + + @Resource + private UserRechargeDao dao; + + @Autowired + private UserService userService; + + + /** + * 列表 + * @param request 请求参数 + * @param pageParamRequest 分页类参数 + * @return List + */ + @Override + public PageInfo getList(UserRechargeSearchRequest request, PageParamRequest pageParamRequest) { + Page userRechargesList = PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + + dateLimitUtilVo dateLimit = DateUtil.getDateLimit(request.getDateLimit()); + //带 UserExtract 类的多条件查询 + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + if (ObjectUtil.isNotNull(request.getUid()) && request.getUid() > 0) { + lambdaQueryWrapper.eq(UserRecharge::getUid, request.getUid()); + } + if (StrUtil.isNotBlank(request.getKeywords())) { + lambdaQueryWrapper.like(UserRecharge::getOrderId, request.getKeywords()); //订单号 + } + //是否充值 + lambdaQueryWrapper.eq(UserRecharge::getPaid, true); + + //时间范围 + if (StrUtil.isNotBlank(dateLimit.getStartTime()) && StrUtil.isNotBlank(dateLimit.getEndTime())) { + //判断时间 + int compareDateResult = DateUtil.compareDate(dateLimit.getEndTime(), dateLimit.getStartTime(), Constants.DATE_FORMAT); + if(compareDateResult == -1){ + throw new CrmebException("开始时间不能大于结束时间!"); + } + + lambdaQueryWrapper.between(UserRecharge::getCreateTime, dateLimit.getStartTime(), dateLimit.getEndTime()); + } + lambdaQueryWrapper.orderByDesc(UserRecharge::getId); + List userRecharges = dao.selectList(lambdaQueryWrapper); + if (CollUtil.isEmpty(userRecharges)) { + return CommonPage.copyPageInfo(userRechargesList, CollUtil.newArrayList()); + } + + List userIds = userRecharges.stream().map(UserRecharge::getUid).collect(Collectors.toList()); + HashMap userHashMap = userService.getMapListInUid(userIds); + List responseList = userRecharges.stream().map(e -> { + User user = userHashMap.get(e.getUid()); + UserRechargeResponse r = new UserRechargeResponse(); + BeanUtils.copyProperties(e, r); + if (null != user) { + r.setAvatar(user.getAvatar()); + r.setNickname(user.getNickname()); + } + return r; + }).collect(Collectors.toList()); + return CommonPage.copyPageInfo(userRechargesList, responseList); + } + + /** + * 充值总金额 + * @return HashMap + */ + @Override + public HashMap getBalanceList() { + HashMap map = new HashMap<>(); + + BigDecimal routine = dao.getSumByType("routine"); + if(null == routine) routine = BigDecimal.ZERO; + map.put("routine", routine); //小程序充值 + +// BigDecimal weChat = dao.getSumByType("weixin"); + BigDecimal weChat = dao.getSumByType("public"); + if(null == weChat) weChat = BigDecimal.ZERO; + map.put("weChat", weChat); //公众号充值 + + BigDecimal total = dao.getSumByType(""); + if(null == total) total = BigDecimal.ZERO; + map.put("total", total); //总金额 + + BigDecimal refund = dao.getSumByRefund(); + if(null == refund) refund = BigDecimal.ZERO; + map.put("refund", refund); + + map.put("other", total.subtract(routine).subtract(weChat)); //其他金额 + + return map; + } + + /** + * 根据对象查询订单 + * @author Mr.Zhang + * @since 2020-05-11 + * @return UserRecharge + */ + @Override + public UserRecharge getInfoByEntity(UserRecharge userRecharge) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.setEntity(userRecharge); + return dao.selectOne(lambdaQueryWrapper); + } + + /** + * 根据日期获取充值订单数量 + * @param date 日期,yyyy-MM-dd格式 + * @return Integer + */ + @Override + public Integer getRechargeOrderNumByDate(String date) { + QueryWrapper wrapper = Wrappers.query(); + wrapper.select("id"); + wrapper.eq("paid", 1); + wrapper.apply("date_format(create_time, '%Y-%m-%d') = {0}", date); + return dao.selectCount(wrapper); + } + + /** + * 根据日期获取充值订单金额 + * @param date 日期,yyyy-MM-dd格式 + * @return BigDecimal + */ + @Override + public BigDecimal getRechargeOrderAmountByDate(String date) { + QueryWrapper wrapper = Wrappers.query(); + wrapper.select("IFNULL(sum(price), 0) as price"); + wrapper.eq("paid", 1); + wrapper.apply("date_format(create_time, '%Y-%m-%d') = {0}", date); + return dao.selectOne(wrapper).getPrice(); + } + + /** + * 获取总人数 + * @return Integer + */ + @Override + public Integer getTotalPeople() { + QueryWrapper wrapper = Wrappers.query(); + wrapper.select("id"); + wrapper.eq("paid", 1); + wrapper.groupBy("uid"); + List list = dao.selectList(wrapper); + if (CollUtil.isEmpty(list)) { + return 0; + } + return list.size(); + } + + /** + * 获取总金额 + * @return BigDecimal + */ + @Override + public BigDecimal getTotalPrice() { + QueryWrapper wrapper = Wrappers.query(); + wrapper.select("IFNULL(sum(price), 0) as price"); + wrapper.eq("paid", 1); + return dao.selectOne(wrapper).getPrice(); + } + + /** + * 根据时间获取充值用户数量 + * @param date 日期 + * @return Integer + */ + @Override + public Integer getRechargeUserNumByDate(String date) { + QueryWrapper wrapper = Wrappers.query(); + wrapper.select("id"); + wrapper.eq("paid", 1); + wrapper.apply("date_format(create_time, '%Y-%m-%d') = {0}", date); + wrapper.groupBy("uid"); + List list = dao.selectList(wrapper); + if (CollUtil.isEmpty(list)) { + return 0; + } + return list.size(); + } + + /** + * 根据时间获取充值用户数量 + * @param startDate 日期 + * @param endDate 日期 + * @return Integer + */ + @Override + public Integer getRechargeUserNumByPeriod(String startDate, String endDate) { + QueryWrapper wrapper = Wrappers.query(); + wrapper.select("id"); + wrapper.eq("paid", 1); + wrapper.apply("date_format(create_time, '%Y-%m-%d') between {0} and {1}", startDate, endDate); + wrapper.groupBy("uid"); + List list = dao.selectList(wrapper); + if (CollUtil.isEmpty(list)) { + return 0; + } + return list.size(); + } +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserServiceImpl.java new file mode 100644 index 0000000..8685414 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserServiceImpl.java @@ -0,0 +1,1776 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.ReUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.Page; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.zbkj.common.constants.*; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.model.coupon.StoreCoupon; +import com.zbkj.common.model.coupon.StoreCouponUser; +import com.zbkj.common.model.order.StoreOrder; +import com.zbkj.common.model.record.UserVisitRecord; +import com.zbkj.common.model.system.SystemUserLevel; +import com.zbkj.common.model.user.*; +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.request.*; +import com.zbkj.common.response.*; +import com.zbkj.common.token.FrontTokenComponent; +import com.zbkj.common.utils.CommonUtil; +import com.zbkj.common.utils.CrmebUtil; +import com.zbkj.common.utils.DateUtil; +import com.zbkj.common.utils.RedisUtil; +import com.zbkj.common.vo.dateLimitUtilVo; +import com.zbkj.service.dao.UserDao; +import com.zbkj.service.service.*; +import org.apache.commons.codec.digest.DigestUtils; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.support.TransactionTemplate; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; + +/** + * 用户表 服务实现类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class UserServiceImpl extends ServiceImpl implements UserService { + + private Logger logger = LoggerFactory.getLogger(UserServiceImpl.class); + + @Resource + private UserDao userDao; + + @Autowired + private UserBillService userBillService; + + @Autowired + private RedisUtil redisUtil; + + @Autowired + private FrontTokenComponent tokenComponet; + + @Autowired + private SystemConfigService systemConfigService; + + @Autowired + private SystemUserLevelService systemUserLevelService; + + @Autowired + private UserLevelService userLevelService; + + @Autowired + private UserTagService userTagService; + + @Autowired + private UserGroupService userGroupService; + + @Autowired + private StoreOrderService storeOrderService; + + @Autowired + private UserSignService userSignService; + + @Autowired + private StoreCouponUserService storeCouponUserService; + + @Autowired + private StoreCouponService storeCouponService; + + @Autowired + private TransactionTemplate transactionTemplate; + + @Autowired + private UserIntegralRecordService userIntegralRecordService; + + @Autowired + private UserBrokerageRecordService userBrokerageRecordService; + + @Autowired + private StoreProductRelationService storeProductRelationService; + + @Autowired + private UserExperienceRecordService experienceRecordService; + + @Autowired + private UserVisitRecordService userVisitRecordService; + + @Autowired + private SystemAttachmentService systemAttachmentService; + + /** + * 分页显示用户表 + * + * @param request 搜索条件 + * @param pageParamRequest 分页参数 + */ + @Override + public PageInfo getList(UserSearchRequest request, PageParamRequest pageParamRequest) { + Page pageUser = PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + Map map = CollUtil.newHashMap(); + + if (request.getIsPromoter() != null) { + map.put("isPromoter", request.getIsPromoter() ? 1 : 0); + } + + if (!StringUtils.isBlank(request.getGroupId())) { + map.put("groupId", request.getGroupId()); + } + + if (!StringUtils.isBlank(request.getLabelId())) { + String tagIdSql = CrmebUtil.getFindInSetSql("u.tag_id", request.getLabelId()); + map.put("tagIdSql", tagIdSql); + } + + if (!StringUtils.isBlank(request.getLevel())) { + map.put("level", request.getLevel()); + } + + if (StringUtils.isNotBlank(request.getUserType())) { + map.put("userType", request.getUserType()); + } + + if (StringUtils.isNotBlank(request.getSex())) { + lambdaQueryWrapper.eq(User::getSex, request.getSex()); + map.put("sex", Integer.valueOf(request.getSex())); + } + + if (StringUtils.isNotBlank(request.getCountry())) { + map.put("country", request.getCountry()); + // 根据省市查询 + if (StrUtil.isNotBlank(request.getCity())) { + request.setProvince(request.getProvince().replace("省", "")); + request.setCity(request.getCity().replace("市", "")); + map.put("addres", request.getProvince() + "," + request.getCity()); + } + } + + if (StrUtil.isNotBlank(request.getPayCount())) { + map.put("payCount", Integer.valueOf(request.getPayCount())); + } + + if (request.getStatus() != null) { + map.put("status", request.getStatus() ? 1 : 0); + } + + dateLimitUtilVo dateLimit = DateUtil.getDateLimit(request.getDateLimit()); + + if (!StringUtils.isBlank(dateLimit.getStartTime())) { + map.put("startTime", dateLimit.getStartTime()); + map.put("endTime", dateLimit.getEndTime()); + map.put("accessType", request.getAccessType()); + } + if (request.getKeywords() != null) { + map.put("keywords", request.getKeywords()); + } + List userList = userDao.findAdminList(map); + List userResponses = new ArrayList<>(); + for (User user : userList) { + UserResponse userResponse = new UserResponse(); + BeanUtils.copyProperties(user, userResponse); + // 获取分组信息 + if (!StringUtils.isBlank(user.getGroupId())) { + userResponse.setGroupName(userGroupService.getGroupNameInId(user.getGroupId())); + userResponse.setGroupId(user.getGroupId()); + } + + // 获取标签信息 + if (!StringUtils.isBlank(user.getTagId())) { + userResponse.setTagName(userTagService.getGroupNameInId(user.getTagId())); + userResponse.setTagId(user.getTagId()); + } + + //获取推广人信息 + if (null == user.getSpreadUid() || user.getSpreadUid() == 0) { + userResponse.setSpreadNickname("无"); + } else { + userResponse.setSpreadNickname(userDao.selectById(user.getSpreadUid()).getNickname()); + } + userResponse.setPhone(CrmebUtil.maskMobile(userResponse.getPhone())); + userResponses.add(userResponse); + } + return CommonPage.copyPageInfo(pageUser, userResponses); + } + + /** + * 操作积分、余额 + */ + @Override + public Boolean updateIntegralMoney(UserOperateIntegralMoneyRequest request) { + if (ObjectUtil.isNull(request.getMoneyValue()) || ObjectUtil.isNull(request.getIntegralValue())) { + throw new CrmebException("至少输入一个金额"); + } + if (request.getMoneyValue().compareTo(BigDecimal.ZERO) < 1 && request.getIntegralValue() <= 0) { + throw new CrmebException("修改值不能等小于等于0"); + } + + User user = getById(request.getUid()); + if (ObjectUtil.isNull(user)) { + throw new CrmebException("用户不存在"); + } + // 减少时要判断小于0的情况,添加时判断是否超过数据限制 + if (request.getMoneyType().equals(2) && request.getMoneyValue().compareTo(BigDecimal.ZERO) != 0) { + if (user.getNowMoney().subtract(request.getMoneyValue()).compareTo(BigDecimal.ZERO) < 0) { + throw new CrmebException("余额扣减后不能小于0"); + } + } + if (request.getMoneyType().equals(1) && request.getMoneyValue().compareTo(BigDecimal.ZERO) != 0) { + if (user.getNowMoney().add(request.getMoneyValue()).compareTo(new BigDecimal("99999999.99")) > 0) { + throw new CrmebException("余额添加后后不能大于99999999.99"); + } + } + + if (request.getIntegralType().equals(2) && request.getIntegralValue() != 0) { + if (user.getIntegral() - request.getIntegralValue() < 0) { + throw new CrmebException("积分扣减后不能小于0"); + } + } + if (request.getIntegralType().equals(1) && request.getIntegralValue() != 0) { + if ((user.getIntegral() + request.getIntegralValue()) > 99999999) { + throw new CrmebException("积分添加后不能大于99999999"); + } + } + + Boolean execute = transactionTemplate.execute(e -> { + // 处理余额 + if (request.getMoneyValue().compareTo(BigDecimal.ZERO) > 0) { + // 生成UserBill + UserBill userBill = new UserBill(); + userBill.setUid(user.getUid()); + userBill.setLinkId("0"); + userBill.setTitle("后台操作"); + userBill.setCategory(Constants.USER_BILL_CATEGORY_MONEY); + userBill.setNumber(request.getMoneyValue()); + userBill.setStatus(1); + userBill.setCreateTime(DateUtil.nowDateTime()); + + if (request.getMoneyType() == 1) {// 增加 + userBill.setPm(1); + userBill.setType(Constants.USER_BILL_TYPE_SYSTEM_ADD); + userBill.setBalance(user.getNowMoney().add(request.getMoneyValue())); + userBill.setMark(StrUtil.format("后台操作增加了{}余额", request.getMoneyValue())); + + userBillService.save(userBill); + operationNowMoney(user.getUid(), request.getMoneyValue(), user.getNowMoney(), "add"); + } else { + userBill.setPm(0); + userBill.setType(Constants.USER_BILL_TYPE_SYSTEM_SUB); + userBill.setBalance(user.getNowMoney().subtract(request.getMoneyValue())); + userBill.setMark(StrUtil.format("后台操作减少了{}余额", request.getMoneyValue())); + + userBillService.save(userBill); + operationNowMoney(user.getUid(), request.getMoneyValue(), user.getNowMoney(), "sub"); + } + } + + // 处理积分 + if (request.getIntegralValue() > 0) { + // 生成记录 + UserIntegralRecord integralRecord = new UserIntegralRecord(); + integralRecord.setUid(user.getUid()); + integralRecord.setLinkType(IntegralRecordConstants.INTEGRAL_RECORD_LINK_TYPE_SIGN); + integralRecord.setTitle(IntegralRecordConstants.BROKERAGE_RECORD_TITLE_SYSTEM); + integralRecord.setIntegral(request.getIntegralValue()); + integralRecord.setStatus(IntegralRecordConstants.INTEGRAL_RECORD_STATUS_COMPLETE); + if (request.getIntegralType() == 1) {// 增加 + integralRecord.setType(IntegralRecordConstants.INTEGRAL_RECORD_TYPE_ADD); + integralRecord.setBalance(user.getIntegral() + request.getIntegralValue()); + integralRecord.setMark(StrUtil.format("后台操作增加了{}积分", request.getIntegralValue())); + + operationIntegral(user.getUid(), request.getIntegralValue(), user.getIntegral(), "add"); + } else { + integralRecord.setType(IntegralRecordConstants.INTEGRAL_RECORD_TYPE_SUB); + integralRecord.setBalance(user.getIntegral() - request.getIntegralValue()); + integralRecord.setMark(StrUtil.format("后台操作减少了{}积分", request.getIntegralValue())); + operationIntegral(user.getUid(), request.getIntegralValue(), user.getIntegral(), "sub"); + } + userIntegralRecordService.save(integralRecord); + } + return Boolean.TRUE; + }); + + if (!execute) { + throw new CrmebException("修改积分/余额失败"); + } + return execute; + } + + /** + * 更新用户金额 + * + * @param user 用户 + * @param price 金额 + * @param type 增加add、扣减sub + * @return 更新后的用户对象 + */ + @Override + public Boolean updateNowMoney(User user, BigDecimal price, String type) { + LambdaUpdateWrapper lambdaUpdateWrapper = Wrappers.lambdaUpdate(); + if (type.equals("add")) { + lambdaUpdateWrapper.set(User::getNowMoney, user.getNowMoney().add(price)); + } else { + lambdaUpdateWrapper.set(User::getNowMoney, user.getNowMoney().subtract(price)); + } + lambdaUpdateWrapper.eq(User::getUid, user.getUid()); + if (type.equals("sub")) { + lambdaUpdateWrapper.apply(StrUtil.format(" now_money - {} >= 0", price)); + } + return update(lambdaUpdateWrapper); + } + + /** + * 会员分组 + * + * @param id String id + * @param groupIdValue Integer 分组Id + */ + @Override + public Boolean group(String id, String groupIdValue) { + if (StrUtil.isBlank(id)) throw new CrmebException("会员编号不能为空"); + if (StrUtil.isBlank(groupIdValue)) throw new CrmebException("分组id不能为空"); + + //循环id处理 + List idList = CrmebUtil.stringToArray(id); + idList = idList.stream().distinct().collect(Collectors.toList()); + List list = getListInUid(idList); + if (CollUtil.isEmpty(list)) throw new CrmebException("没有找到用户信息"); + if (list.size() < idList.size()) { + throw new CrmebException("没有找到用户信息"); + } + for (User user : list) { + user.setGroupId(groupIdValue); + } + return updateBatchById(list); + } + + /** + * 用户id in list + * + * @param uidList List id + * @author Mr.Zhang + * @since 2020-04-28 + */ + private List getListInUid(List uidList) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.in(User::getUid, uidList); + return userDao.selectList(lambdaQueryWrapper); + } + + /** + * 修改密码 + * + * @param request PasswordRequest 密码 + * @return boolean + */ + @Override + public Boolean password(PasswordRequest request) { + //检测验证码 + checkValidateCode(request.getPhone(), request.getValidateCode()); + + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(User::getAccount, request.getPhone()); + User user = userDao.selectOne(lambdaQueryWrapper); + + //密码 + user.setPwd(CrmebUtil.encryptPassword(request.getPassword(), user.getAccount())); + return update(user, lambdaQueryWrapper); + } + + /** + * 获取个人资料 + * + * @return User + * @author Mr.Zhang + * @since 2020-04-28 + */ + @Override + public User getInfo() { + if (getUserId() == 0) { + return null; + } + return getById(getUserId()); + } + + /** + * 获取个人资料 + * + * @return User + * @author Mr.Zhang + * @since 2020-04-28 + */ + @Override + public User getInfoException() { + User user = getInfo(); + if (user == null) { + throw new CrmebException("用户信息不存在!"); + } + + if (!user.getStatus()) { + throw new CrmebException("用户已经被禁用!"); + } + return user; + } + + /** + * 获取当前用户id + * + * @return Integer + */ + @Override + public Integer getUserIdException() { + Integer id = tokenComponet.getUserId(); + if (null == id) { + throw new CrmebException("登录信息已过期,请重新登录!"); + } + return id; + } + + /** + * 获取当前用户id + * + * @return Integer + * @author Mr.Zhang + * @since 2020-04-28 + */ + @Override + public Integer getUserId() { + Integer id = tokenComponet.getUserId(); + if (null == id) { + return 0; + } + return id; + } + + + /** + * 按开始结束时间查询每日新增用户数量 + * + * @param date String 时间范围 + * @return HashMap + */ + @Override + public Map getAddUserCountGroupDate(String date) { + Map map = new HashMap<>(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.select("count(uid) as uid", "left(create_time, 10) as create_time"); + if (StringUtils.isNotBlank(date)) { + dateLimitUtilVo dateLimit = DateUtil.getDateLimit(date); + queryWrapper.between("create_time", dateLimit.getStartTime(), dateLimit.getEndTime()); + } + queryWrapper.groupBy("left(create_time, 10)").orderByAsc("create_time"); + List list = userDao.selectList(queryWrapper); + if (list.size() < 1) { + return map; + } + + for (User user : list) { + map.put(DateUtil.dateToStr(user.getCreateTime(), Constants.DATE_FORMAT_DATE), user.getUid()); + } + return map; + } + + /** + * 换绑手机号校验 + */ + @Override + public Boolean updatePhoneVerify(UserBindingPhoneUpdateRequest request) { + //检测验证码 + checkValidateCode(request.getPhone(), request.getCaptcha()); + + //删除验证码 + redisUtil.delete(getValidateCodeRedisKey(request.getPhone())); + + User user = getInfoException(); + + if (!user.getPhone().equals(request.getPhone())) { + throw new CrmebException("手机号不是当前用户手机号"); + } + + return Boolean.TRUE; + } + + /** + * 换绑手机号 + */ + @Override + public Boolean updatePhone(UserBindingPhoneUpdateRequest request) { + //检测验证码 + checkValidateCode(request.getPhone(), request.getCaptcha()); + + //删除验证码 + redisUtil.delete(getValidateCodeRedisKey(request.getPhone())); + + //检测当前手机号是否已经是账号 + User user = getByPhone(request.getPhone()); + if (null != user) { + throw new CrmebException("此手机号码已被注册"); + } + + //查询手机号信息 + User bindUser = getInfoException(); + bindUser.setAccount(request.getPhone()); + bindUser.setPhone(request.getPhone()); + return updateById(bindUser); + } + + /** + * 用户中心 + * @return UserCenterResponse + */ + @Override + public UserCenterResponse getUserCenter() { + User currentUser = getInfo(); + if (ObjectUtil.isNull(currentUser)) { + throw new CrmebException("您的登录已过期,请先登录"); + } + UserCenterResponse userCenterResponse = new UserCenterResponse(); + BeanUtils.copyProperties(currentUser, userCenterResponse); + // 优惠券数量 + userCenterResponse.setCouponCount(storeCouponUserService.getUseCount(currentUser.getUid())); + // 收藏数量 + userCenterResponse.setCollectCount(storeProductRelationService.getCollectCountByUid(currentUser.getUid())); + + userCenterResponse.setVip(false); + if (userCenterResponse.getLevel() > 0) { + SystemUserLevel systemUserLevel = systemUserLevelService.getByLevelId(currentUser.getLevel()); + if (ObjectUtil.isNotNull(systemUserLevel)) { + userCenterResponse.setVip(true); + userCenterResponse.setVipIcon(systemUserLevel.getIcon()); + userCenterResponse.setVipName(systemUserLevel.getName()); + } + } + // 充值开关 + String rechargeSwitch = systemConfigService.getValueByKey(SysConfigConstants.CONFIG_KEY_RECHARGE_SWITCH); + if (StrUtil.isNotBlank(rechargeSwitch)) { + userCenterResponse.setRechargeSwitch(Boolean.valueOf(rechargeSwitch)); + } + + // 判断是否展示我的推广,1.分销模式是否开启 + String funcStatus = systemConfigService.getValueByKey(SysConfigConstants.CONFIG_KEY_BROKERAGE_FUNC_STATUS); + if (!funcStatus.equals("1")) { + userCenterResponse.setIsPromoter(false); + } + + // 保存用户访问记录 + UserVisitRecord visitRecord = new UserVisitRecord(); + visitRecord.setDate(cn.hutool.core.date.DateUtil.date().toString("yyyy-MM-dd")); + visitRecord.setUid(getUserId()); + visitRecord.setVisitType(4); + userVisitRecordService.save(visitRecord); + return userCenterResponse; + } + + /** + * 根据用户id获取用户列表 map模式 + * + * @return HashMap + */ + @Override + public HashMap getMapListInUid(List uidList) { + List userList = getListInUid(uidList); + return getMapByList(userList); + } + + /** + * 根据用户id获取用户列表 map模式 + * + * @return HashMap + * @author Mr.Zhang + * @since 2020-04-28 + */ + private HashMap getMapByList(List list) { + HashMap map = new HashMap<>(); + if (null == list || list.size() < 1) { + return map; + } + + for (User user : list) { + map.put(user.getUid(), user); + } + + return map; + } + + /** + * 重置连续签到天数 + * + * @param userId Integer 用户id + * @author Mr.Zhang + * @since 2020-04-28 + */ + @Override + public void repeatSignNum(Integer userId) { + User user = new User(); + user.setUid(userId); + user.setSignNum(0); + updateById(user); + } + + /** + * 会员标签 + * + * @param id String id + * @param tagIdValue Integer 标签Id + */ + @Override + public Boolean tag(String id, String tagIdValue) { + if (StrUtil.isBlank(id)) throw new CrmebException("会员编号不能为空"); + if (StrUtil.isBlank(tagIdValue)) throw new CrmebException("标签id不能为空"); + + //循环id处理 + List idList = CrmebUtil.stringToArray(id); + idList = idList.stream().distinct().collect(Collectors.toList()); + List list = getListInUid(idList); + if (CollUtil.isEmpty(list)) throw new CrmebException("没有找到用户信息"); + if (list.size() < 1) { + throw new CrmebException("没有找到用户信息"); + } + for (User user : list) { + user.setTagId(tagIdValue); + } + return updateBatchById(list); + } + + /** + * 根据用户id获取自己本身的推广用户 + * + * @param userIdList List 用户id集合 + * @return List + */ + @Override + public List getSpreadPeopleIdList(List userIdList) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.select(User::getUid); //查询用户id + lambdaQueryWrapper.in(User::getSpreadUid, userIdList); //xx的下线集合 + List list = userDao.selectList(lambdaQueryWrapper); + + if (null == list || list.size() < 1) { + return new ArrayList<>(); + } + return list.stream().map(User::getUid).distinct().collect(Collectors.toList()); + } + + /** + * 根据用户id获取自己本身的推广用户 + */ + @Override + public List getSpreadPeopleList( + List userIdList, String keywords, String sortKey, String isAsc, PageParamRequest pageParamRequest) { + + PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + + Map map = new HashMap<>(); + map.put("userIdList", userIdList.stream().map(String::valueOf).distinct().collect(Collectors.joining(","))); + if (StringUtils.isNotBlank(keywords)) { + map.put("keywords", "%" + keywords + "%"); + } + map.put("sortKey", "create_time"); + if (StringUtils.isNotBlank(sortKey)) { + map.put("sortKey", sortKey); + } + map.put("sortValue", Constants.SORT_DESC); + if (isAsc.toLowerCase().equals(Constants.SORT_ASC)) { + map.put("sortValue", Constants.SORT_ASC); + } + + return userDao.getSpreadPeopleList(map); + } + + /** + * 检测手机验证码 + */ + private void checkValidateCode(String phone, String value) { + Object validateCode = redisUtil.get(getValidateCodeRedisKey(phone)); + if (validateCode == null) { + throw new CrmebException("验证码已过期"); + } + + if (!validateCode.toString().equals(value)) { + throw new CrmebException("验证码错误"); + } + } + + /** + * 检测手机验证码key + * + * @param phone String 手机号 + * @return String + */ + @Override + public String getValidateCodeRedisKey(String phone) { + return SmsConstants.SMS_VALIDATE_PHONE + phone; + } + + /** + * 手机号注册用户 + * + * @param phone 手机号 + * @param spreadUid 推广人编号 + * @return User + */ + @Override + public User registerPhone(String phone, Integer spreadUid) { + User user = new User(); + user.setAccount(phone); + user.setPwd(CommonUtil.createPwd(phone)); + user.setPhone(phone); + user.setUserType(Constants.USER_LOGIN_TYPE_H5); + user.setNickname(CommonUtil.createNickName(phone)); + user.setAvatar(systemConfigService.getValueByKey(Constants.USER_DEFAULT_AVATAR_CONFIG_KEY)); + Date nowDate = DateUtil.nowDateTime(); + user.setCreateTime(nowDate); + user.setLastLoginTime(nowDate); + + // 推广人 + user.setSpreadUid(0); + Boolean check = checkBingSpread(user, spreadUid, "new"); + if (check) { + user.setSpreadUid(spreadUid); + user.setSpreadTime(nowDate); + } + + // 查询是否有新人注册赠送优惠券 + List couponUserList = CollUtil.newArrayList(); + List couponList = storeCouponService.findRegisterList(); + if (CollUtil.isNotEmpty(couponList)) { + couponList.forEach(storeCoupon -> { + //是否有固定的使用时间 + if (!storeCoupon.getIsFixedTime()) { + String endTime = DateUtil.addDay(DateUtil.nowDate(Constants.DATE_FORMAT), storeCoupon.getDay(), Constants.DATE_FORMAT); + storeCoupon.setUseEndTime(DateUtil.strToDate(endTime, Constants.DATE_FORMAT)); + storeCoupon.setUseStartTime(DateUtil.nowDateTimeReturnDate(Constants.DATE_FORMAT)); + } + + StoreCouponUser storeCouponUser = new StoreCouponUser(); + storeCouponUser.setCouponId(storeCoupon.getId()); + storeCouponUser.setName(storeCoupon.getName()); + storeCouponUser.setMoney(storeCoupon.getMoney()); + storeCouponUser.setMinPrice(storeCoupon.getMinPrice()); + storeCouponUser.setStartTime(storeCoupon.getUseStartTime()); + storeCouponUser.setEndTime(storeCoupon.getUseEndTime()); + storeCouponUser.setUseType(storeCoupon.getUseType()); + storeCouponUser.setType(CouponConstants.STORE_COUPON_USER_TYPE_REGISTER); + if (storeCoupon.getUseType() > 1) { + storeCouponUser.setPrimaryKey(storeCoupon.getPrimaryKey()); + } + couponUserList.add(storeCouponUser); + }); + } + + Boolean execute = transactionTemplate.execute(e -> { + save(user); + // 推广人处理 + if (check) { + updateSpreadCountByUid(spreadUid, "add"); + } + // 赠送客户优惠券 + if (CollUtil.isNotEmpty(couponUserList)) { + couponUserList.forEach(couponUser -> couponUser.setUid(user.getUid())); + storeCouponUserService.saveBatch(couponUserList); + couponList.forEach(coupon -> storeCouponService.deduction(coupon.getId(), 1, coupon.getIsLimited())); + } + return Boolean.TRUE; + }); + if (!execute) { + throw new CrmebException("创建用户失败!"); + } + return user; + } + + /** + * 更新推广员推广数 + * + * @param uid uid + * @param type add or sub + */ + public Boolean updateSpreadCountByUid(Integer uid, String type) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + if (type.equals("add")) { + updateWrapper.setSql("spread_count = spread_count + 1"); + } else { + updateWrapper.setSql("spread_count = spread_count - 1"); + } + updateWrapper.eq("uid", uid); + return update(updateWrapper); + } + + /** + * 添加/扣减佣金 + * + * @param uid 用户id + * @param price 金额 + * @param brokeragePrice 历史金额 + * @param type 类型:add—添加,sub—扣减 + * @return Boolean + */ + @Override + public Boolean operationBrokerage(Integer uid, BigDecimal price, BigDecimal brokeragePrice, String type) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + if (type.equals("add")) { + updateWrapper.setSql(StrUtil.format("brokerage_price = brokerage_price + {}", price)); + } else { + updateWrapper.setSql(StrUtil.format("brokerage_price = brokerage_price - {}", price)); + updateWrapper.last(StrUtil.format(" and (brokerage_price - {} >= 0)", price)); + } + updateWrapper.eq("uid", uid); + updateWrapper.eq("brokerage_price", brokeragePrice); + return update(updateWrapper); + } + + /** + * 添加/扣减余额 + * + * @param uid 用户id + * @param price 金额 + * @param nowMoney 历史金额 + * @param type 类型:add—添加,sub—扣减 + */ + @Override + public Boolean operationNowMoney(Integer uid, BigDecimal price, BigDecimal nowMoney, String type) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + if (type.equals("add")) { + updateWrapper.setSql(StrUtil.format("now_money = now_money + {}", price)); + } else { + updateWrapper.setSql(StrUtil.format("now_money = now_money - {}", price)); + updateWrapper.last(StrUtil.format(" and (now_money - {} >= 0)", price)); + } + updateWrapper.eq("uid", uid); + updateWrapper.eq("now_money", nowMoney); + return update(updateWrapper); + } + + /** + * 添加/扣减积分 + * + * @param uid 用户id + * @param integral 积分 + * @param nowIntegral 历史积分 + * @param type 类型:add—添加,sub—扣减 + * @return Boolean + */ + @Override + public Boolean operationIntegral(Integer uid, Integer integral, Integer nowIntegral, String type) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + if (type.equals("add")) { + updateWrapper.setSql(StrUtil.format("integral = integral + {}", integral)); + } else { + updateWrapper.setSql(StrUtil.format("integral = integral - {}", integral)); + updateWrapper.last(StrUtil.format(" and (integral - {} >= 0)", integral)); + } + updateWrapper.eq("uid", uid); + updateWrapper.eq("integral", nowIntegral); + return update(updateWrapper); + } + + /** + * PC后台分销员列表 + * + * @param keywords 搜索参数 + * @param dateLimit 时间参数 + * @param pageRequest 分页参数 + * @return PageInfo + */ + @Override + public PageInfo getAdminSpreadPeopleList(String keywords, String dateLimit, PageParamRequest pageRequest) { + Page pageUser = PageHelper.startPage(pageRequest.getPage(), pageRequest.getLimit()); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + // id,头像,昵称,姓名,电话,推广用户数,推广订单数,推广订单额,佣金总金额,已提现金额,提现次数,未提现金额,上级推广人 + lqw.select(User::getUid, User::getNickname, User::getRealName, User::getPhone, User::getAvatar, + User::getSpreadCount, User::getBrokeragePrice, User::getSpreadUid, User::getPromoterTime); + lqw.eq(User::getIsPromoter, true); + if (StrUtil.isNotBlank(keywords)) { + lqw.and(i -> i.eq(User::getUid, keywords) //用户账号 + .or().like(User::getNickname, keywords) //昵称 + .or().like(User::getPhone, keywords)); //手机号码 + } + if (StrUtil.isNotBlank(dateLimit)) { + dateLimitUtilVo dateLimitUtilVo = DateUtil.getDateLimit(dateLimit); + lqw.between(User::getPromoterTime, dateLimitUtilVo.getStartTime(), dateLimitUtilVo.getEndTime()); + } + lqw.orderByDesc(User::getUid); + List userList = userDao.selectList(lqw); + return CommonPage.copyPageInfo(pageUser, userList); + } + + /** + * 检测能否绑定关系 + * + * @param user 当前用户 + * @param spreadUid 推广员Uid + * @param type 用户类型:new-新用户,old—老用户 + * @return Boolean + * 1.判断分销功能是否启用 + * 2.判断分销模式 + * 3.根据不同的分销模式校验 + * 4.指定分销,只有分销员才可以分销,需要spreadUid是推广员才可以绑定 + * 5.人人分销,可以直接绑定 + * *推广关系绑定,下级不能绑定自己的上级为下级,A->B->A(❌) + */ + public Boolean checkBingSpread(User user, Integer spreadUid, String type) { + if (ObjectUtil.isNull(spreadUid)) { + return false; + } + if (spreadUid <= 0 || user.getSpreadUid() > 0) { + return false; + } + if (ObjectUtil.isNotNull(user.getUid()) && user.getUid().equals(spreadUid)) { + return false; + } + // 判断分销功能是否启用 + String isOpen = systemConfigService.getValueByKey(Constants.CONFIG_KEY_STORE_BROKERAGE_IS_OPEN); + if (StrUtil.isBlank(isOpen) || isOpen.equals("0")) { + return false; + } + if (type.equals("old")) { + // 判断分销关系绑定类型(所有、新用户) + String bindType = systemConfigService.getValueByKey(Constants.CONFIG_KEY_DISTRIBUTION_TYPE); + if (StrUtil.isBlank(bindType) || bindType.equals("1")) { + return false; + } + if (user.getSpreadUid().equals(spreadUid)) { + return false; + } + } + // 查询推广员 + User spreadUser = getById(spreadUid); + if (ObjectUtil.isNull(spreadUser) || !spreadUser.getStatus()) { + return false; + } + // 指定分销不是推广员不绑定 + if (!spreadUser.getIsPromoter()) { + return false; + } + // 下级不能绑定自己的上级为自己的下级 + if (ObjectUtil.isNotNull(user.getUid()) && spreadUser.getSpreadUid().equals(user.getUid())) { + return false; + } + return true; + } + + /** + * 获取用户好友关系,spread_uid往下两级的用户信息 + * + * @return List + */ + private List getUserRelation(Integer userId) { + List userList = new ArrayList<>(); + User currUser = userDao.selectById(userId); + if (currUser.getSpreadUid() > 0) { + User spUser1 = userDao.selectById(currUser.getSpreadUid()); + if (null != spUser1) { + userList.add(spUser1); + if (spUser1.getSpreadUid() > 0) { + User spUser2 = userDao.selectById(spUser1.getSpreadUid()); + if (null != spUser2) { + userList.add(spUser2); + } + } + } + } + return userList; + } + + /** + * 根据条件获取会员对应信息列表 + * + * @param userId 用户id + * @param type 0=消费记录,1=积分明细,2=签到记录,3=持有优惠券,4=余额变动,5=好友关系 + * @param pageParamRequest 分页参数 + * @return Object + */ + @Override + public Object getInfoByCondition(Integer userId, Integer type, PageParamRequest pageParamRequest) { + switch (type) { + case 0: + return storeOrderService.findPaidListByUid(userId, pageParamRequest); + case 1: + AdminIntegralSearchRequest fmsq = new AdminIntegralSearchRequest(); + fmsq.setUid(userId); + return userIntegralRecordService.findAdminList(fmsq, pageParamRequest); + case 2: + UserSign userSign = new UserSign(); + userSign.setUid(userId); + return userSignService.getListByCondition(userSign, pageParamRequest); + case 3: + StoreCouponUserSearchRequest scur = new StoreCouponUserSearchRequest(); + scur.setUid(userId); + return storeCouponUserService.findListByUid(userId, pageParamRequest); + case 4: + FundsMonitorSearchRequest fmsqq = new FundsMonitorSearchRequest(); + fmsqq.setUid(userId); + fmsqq.setCategory(Constants.USER_BILL_CATEGORY_MONEY); + return userBillService.getList(fmsqq, pageParamRequest); + case 5: + return getUserRelation(userId); + } + + return new ArrayList<>(); + } + + /** + * 会员详情顶部数据 + * + * @param userId Integer 用户id + * @return Object + */ + @Override + public TopDetail getTopDetail(Integer userId) { + TopDetail topDetail = new TopDetail(); + User currentUser = userDao.selectById(userId); + topDetail.setUser(currentUser); + topDetail.setBalance(currentUser.getNowMoney()); + topDetail.setIntegralCount(currentUser.getIntegral()); + topDetail.setMothConsumeCount(storeOrderService.getSumPayPriceByUidAndDate(userId, Constants.SEARCH_DATE_MONTH)); + topDetail.setAllConsumeCount(storeOrderService.getSumPayPriceByUid(userId)); + topDetail.setMothOrderCount(storeOrderService.getOrderCountByUidAndDate(userId, Constants.SEARCH_DATE_MONTH)); + topDetail.setAllOrderCount(storeOrderService.getOrderCountByUid(userId)); + return topDetail; + } + + /** + * 通过微信信息注册用户 + * + * @param thirdUserRequest RegisterThirdUser 三方用户登录注册信息 + * @return User + */ + @Override + public User registerByThird(RegisterThirdUserRequest thirdUserRequest) { + User user = new User(); + user.setAccount(DigestUtils.md5Hex(CrmebUtil.getUuid() + DateUtil.getNowTime())); + user.setUserType(thirdUserRequest.getType()); + user.setNickname(thirdUserRequest.getNickName()); + String avatar = null; + switch (thirdUserRequest.getType()) { + case Constants.USER_LOGIN_TYPE_PUBLIC: + avatar = thirdUserRequest.getHeadimgurl(); + break; + case Constants.USER_LOGIN_TYPE_PROGRAM: + case Constants.USER_LOGIN_TYPE_H5: + case Constants.USER_LOGIN_TYPE_IOS_WX: + case Constants.USER_LOGIN_TYPE_ANDROID_WX: + avatar = thirdUserRequest.getAvatar(); + break; + } + user.setAvatar(avatar); + user.setSpreadTime(DateUtil.nowDateTime()); + user.setSex(Integer.parseInt(thirdUserRequest.getSex())); + user.setAddres(thirdUserRequest.getCountry() + "," + thirdUserRequest.getProvince() + "," + thirdUserRequest.getCity()); + return user; + } + + /** + * 根据推广级别和其他参数当前用户下的推广列表 + * + * @param request 推广列表参数 + * @return 当前用户的推广人列表 + */ + @Override + public PageInfo getUserListBySpreadLevel(RetailShopStairUserRequest request, PageParamRequest pageParamRequest) { + if (request.getType().equals(1)) {// 一级推广人 + return getFirstSpreadUserListPage(request, pageParamRequest); + } + if (request.getType().equals(2)) {// 二级推广人 + return getSecondSpreadUserListPage(request, pageParamRequest); + } + return getAllSpreadUserListPage(request, pageParamRequest); + } + + // 分页获取一级推广员 + private PageInfo getFirstSpreadUserListPage(RetailShopStairUserRequest request, PageParamRequest pageParamRequest) { + Page userPage = PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.select(User::getUid, User::getAvatar, User::getNickname, User::getIsPromoter, User::getSpreadCount, User::getPayCount); + queryWrapper.eq(User::getSpreadUid, request.getUid()); + if (StrUtil.isNotBlank(request.getNickName())) { + queryWrapper.and(e -> e.like(User::getNickname, request.getNickName()).or().eq(User::getUid, request.getNickName()) + .or().eq(User::getPhone, request.getNickName())); + } + List userList = userDao.selectList(queryWrapper); + return CommonPage.copyPageInfo(userPage, userList); + } + + // 分页获取二级推广员 + private PageInfo getSecondSpreadUserListPage(RetailShopStairUserRequest request, PageParamRequest pageParamRequest) { + // 先获取一级推广员 + List firstUserList = getSpreadListBySpreadIdAndType(request.getUid(), 1); + if (CollUtil.isEmpty(firstUserList)) { + return new PageInfo<>(CollUtil.newArrayList()); + } + List userIds = firstUserList.stream().map(User::getUid).distinct().collect(Collectors.toList()); + Page userPage = PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.select(User::getUid, User::getAvatar, User::getNickname, User::getIsPromoter, User::getSpreadCount, User::getPayCount); + queryWrapper.in(User::getSpreadUid, userIds); + if (StrUtil.isNotBlank(request.getNickName())) { + queryWrapper.and(e -> e.like(User::getNickname, request.getNickName()).or().eq(User::getUid, request.getNickName()) + .or().eq(User::getPhone, request.getNickName())); + } + List userList = userDao.selectList(queryWrapper); + return CommonPage.copyPageInfo(userPage, userList); + } + + // 分页获取所有推广员 + private PageInfo getAllSpreadUserListPage(RetailShopStairUserRequest request, PageParamRequest pageParamRequest) { + // 先所有一级推广员 + List firstUserList = getSpreadListBySpreadIdAndType(request.getUid(), 0); + if (CollUtil.isEmpty(firstUserList)) { + return new PageInfo<>(CollUtil.newArrayList()); + } + List userIds = firstUserList.stream().map(User::getUid).distinct().collect(Collectors.toList()); + Page userPage = PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.select(User::getUid, User::getAvatar, User::getNickname, User::getIsPromoter, User::getSpreadCount, User::getPayCount); + queryWrapper.in(User::getUid, userIds); + if (StrUtil.isNotBlank(request.getNickName())) { + queryWrapper.and(e -> e.like(User::getNickname, request.getNickName()).or().eq(User::getUid, request.getNickName()) + .or().eq(User::getPhone, request.getNickName())); + } + List userList = userDao.selectList(queryWrapper); + return CommonPage.copyPageInfo(userPage, userList); + } + + /** + * 根据推广级别和其他参数获取推广列表 + * + * @param request 推广层级和推广时间参数 + * @return 推广订单列表 + */ + @Override + public PageInfo getOrderListBySpreadLevel(RetailShopStairUserRequest request, PageParamRequest pageParamRequest) { + // 获取推广人列表 + if (ObjectUtil.isNull(request.getType())) { + request.setType(0); + } + PageInfo recordPageInfo = userBrokerageRecordService.findAdminSpreadListByUid(request, pageParamRequest); + List responseList = recordPageInfo.getList().stream().map(e -> { + SpreadOrderResponse response = new SpreadOrderResponse(); + StoreOrder storeOrder = storeOrderService.getByOderId(e.getLinkId()); + response.setId(storeOrder.getId()); + response.setOrderId(storeOrder.getOrderId()); + response.setRealName(storeOrder.getRealName()); + response.setUserPhone(storeOrder.getUserPhone()); + response.setPrice(e.getPrice()); + response.setUpdateTime(e.getUpdateTime()); + return response; + }).collect(Collectors.toList()); + + return CommonPage.copyPageInfo(recordPageInfo, responseList); + } + +// /** +// * 根据推广级别和其他参数获取推广列表 +// * +// * @param request 推广层级和推广时间参数 +// * @return 推广订单列表 +// */ +// @Override +// public PageInfo getOrderListBySpreadLevel(RetailShopStairUserRequest request, PageParamRequest pageParamRequest) { +// // 获取推广人列表 +// if (ObjectUtil.isNull(request.getType())) { +// request.setType(0); +// } +// List userList = getSpreadListBySpreadIdAndType(request.getUid(), request.getType()); +// if (CollUtil.isEmpty(userList)) { +// return new PageInfo<>(); +// } +// +// List userIds = userList.stream().map(User::getUid).distinct().collect(Collectors.toList()); +// // 获取推广人订单号集合 +// List orderList = storeOrderService.getOrderListStrByUids(userIds, request); +// if (CollUtil.isEmpty(orderList)) { +// return new PageInfo<>(); +// } +// List orderNoList = CollUtil.newArrayList(); +// Map orderMap = CollUtil.newHashMap(); +// orderList.forEach(e -> { +// orderNoList.add(e.getOrderId()); +// orderMap.put(e.getOrderId(), e); +// }); +// // 获取用户佣金记录 +// PageInfo recordPageInfo = userBrokerageRecordService.findListByLinkIdsAndLinkTypeAndUid(orderNoList, BrokerageRecordConstants.BROKERAGE_RECORD_LINK_TYPE_ORDER, request.getUid(), pageParamRequest); +// List responseList = recordPageInfo.getList().stream().map(e -> { +// SpreadOrderResponse response = new SpreadOrderResponse(); +// StoreOrder storeOrder = orderMap.get(e.getLinkId()); +// response.setId(storeOrder.getId()); +// response.setOrderId(storeOrder.getOrderId()); +// response.setRealName(storeOrder.getRealName()); +// response.setUserPhone(storeOrder.getUserPhone()); +// response.setPrice(e.getPrice()); +// response.setUpdateTime(e.getUpdateTime()); +// return response; +// }).collect(Collectors.toList()); +// +// return CommonPage.copyPageInfo(recordPageInfo, responseList); +// } + + /** + * 获取推广人列表 + * + * @param spreadUid 父Uid + * @param type 类型 0 = 全部 1=一级推广人 2=二级推广人 + */ + private List getSpreadListBySpreadIdAndType(Integer spreadUid, Integer type) { + // 获取一级推广人 + List userList = getSpreadListBySpreadId(spreadUid); + if (CollUtil.isEmpty(userList)) return userList; + if (type.equals(1)) return userList; + // 获取二级推广人 + List userSecondList = CollUtil.newArrayList(); + userList.forEach(user -> { + List childUserList = getSpreadListBySpreadId(user.getUid()); + if (CollUtil.isNotEmpty(childUserList)) { + userSecondList.addAll(childUserList); + } + }); + if (type.equals(2)) { + return userSecondList; + } + userList.addAll(userSecondList); + return userList; + } + + /** + * 获取推广人列表 + * + * @param spreadUid 父Uid + */ + private List getSpreadListBySpreadId(Integer spreadUid) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(User::getSpreadUid, spreadUid); + return userDao.selectList(queryWrapper); + } + + /** + * 根据用户id清除用户当前推广人 + * + * @param userId 当前推广人id + * @return 清除推广结果 + */ + @Override + public boolean clearSpread(Integer userId) { + User teamUser = getById(userId); + User user = new User(); + user.setUid(userId); + user.setPath("/0/"); + user.setSpreadUid(0); + user.setSpreadTime(null); + Boolean execute = transactionTemplate.execute(e -> { + userDao.updateById(user); + if (teamUser.getSpreadUid() > 0) { + updateSpreadCountByUid(teamUser.getSpreadUid(), "sub"); + } + return Boolean.TRUE; + }); + return execute; + } + + /** + * 推广人排行 + * + * @param type String 类型 + * @param pageParamRequest PageParamRequest 分页 + * @return List + */ + @Override + public List getTopSpreadPeopleListByDate(String type, PageParamRequest pageParamRequest) { + PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.select("count(spread_count) as spread_count, spread_uid") + .gt("spread_uid", 0) + .eq("status", true); + if (StrUtil.isNotBlank(type)) { + dateLimitUtilVo dateLimit = DateUtil.getDateLimit(type); + queryWrapper.between("spread_time", dateLimit.getStartTime(), dateLimit.getEndTime()); + } + queryWrapper.groupBy("spread_uid").orderByDesc("spread_count"); + List spreadVoList = userDao.selectList(queryWrapper); + if (spreadVoList.size() < 1) { + return null; + } + + List spreadIdList = spreadVoList.stream().map(User::getSpreadUid).collect(Collectors.toList()); + if (spreadIdList.size() < 1) { + return null; + } + + ArrayList userList = new ArrayList<>(); + //查询用户 + HashMap userVoList = getMapListInUid(spreadIdList); + + //解决排序问题 + for (User spreadVo : spreadVoList) { + User user = new User(); + User userVo = userVoList.get(spreadVo.getSpreadUid()); + user.setUid(spreadVo.getSpreadUid()); + user.setAvatar(userVo.getAvatar()); + user.setSpreadCount(spreadVo.getSpreadCount()); + if (StringUtils.isBlank(userVo.getNickname())) { + user.setNickname(userVo.getPhone().substring(0, 2) + "****" + userVo.getPhone().substring(7)); + } else { + user.setNickname(userVo.getNickname()); + } + userList.add(user); + } + + return userList; + } + + /** + * 推广人排行 + * + * @param minPayCount int 最小消费次数 + * @param maxPayCount int 最大消费次数 + * @return Integer + */ + @Override + public Integer getCountByPayCount(int minPayCount, int maxPayCount) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.between(User::getPayCount, minPayCount, maxPayCount); + return userDao.selectCount(lambdaQueryWrapper); + } + + /** + * 绑定推广关系(登录状态) + * @param spreadUid 推广人id + */ + @Override + public void bindSpread(Integer spreadUid) { + //新用户会在注册的时候单独绑定,此处只处理登录用户 + if (ObjectUtil.isNull(spreadUid) || spreadUid == 0) { + return; + } + User user = getInfo(); + if (ObjectUtil.isNull(user)) { + throw new CrmebException("当前用户未登录,请先登录"); + } + + bindSpread(user, spreadUid); + } + + private Boolean bindSpread(User user, Integer spreadUid) { + + Boolean checkBingSpread = checkBingSpread(user, spreadUid, "old"); + if (!checkBingSpread) return false; + + user.setSpreadUid(spreadUid); + user.setSpreadTime(DateUtil.nowDateTime()); + + Boolean execute = transactionTemplate.execute(e -> { + updateById(user); + updateSpreadCountByUid(spreadUid, "add"); + return Boolean.TRUE; + }); + if (!execute) { + logger.error(StrUtil.format("绑定推广人时出错,userUid = {}, spreadUid = {}", user.getUid(), spreadUid)); + } + return execute; + + } + + /** + * 更新推广人 + * + * @param request 请求参数 + * @return Boolean + */ + @Override + public Boolean editSpread(UserUpdateSpreadRequest request) { + Integer userId = request.getUserId(); + Integer spreadUid = request.getSpreadUid(); + if (userId.equals(spreadUid)) { + throw new CrmebException("上级推广人不能为自己"); + } + User user = getById(userId); + if (ObjectUtil.isNull(user)) { + throw new CrmebException("用户不存在"); + } + if (user.getSpreadUid().equals(spreadUid)) { + throw new CrmebException("当前推广人已经是所选人"); + } + Integer oldSprUid = user.getSpreadUid(); + + User spreadUser = getById(spreadUid); + if (ObjectUtil.isNull(spreadUser)) { + throw new CrmebException("上级用户不存在"); + } + if (spreadUser.getSpreadUid().equals(userId)) { + throw new CrmebException("当前用户已是推广人的上级"); + } + + User tempUser = new User(); + tempUser.setUid(userId); + tempUser.setSpreadUid(spreadUid); + tempUser.setSpreadTime(DateUtil.nowDateTime()); + Boolean execute = transactionTemplate.execute(e -> { + updateById(tempUser); + updateSpreadCountByUid(spreadUid, "add"); + if (oldSprUid > 0) { + updateSpreadCountByUid(oldSprUid, "sub"); + } + return Boolean.TRUE; + }); + return execute; + } + + /** + * 更新用户积分 + * + * @param user 用户 + * @param integral 积分 + * @param type 增加add、扣减sub + * @return 更新后的用户对象 + */ + @Override + public Boolean updateIntegral(User user, Integer integral, String type) { + LambdaUpdateWrapper lambdaUpdateWrapper = Wrappers.lambdaUpdate(); + if (type.equals("add")) { + lambdaUpdateWrapper.set(User::getIntegral, user.getIntegral() + integral); + } else { + lambdaUpdateWrapper.set(User::getIntegral, user.getIntegral() - integral); + } + lambdaUpdateWrapper.eq(User::getUid, user.getUid()); + if (type.equals("sub")) { + lambdaUpdateWrapper.apply(StrUtil.format(" integral - {} >= 0", integral)); + } + return update(lambdaUpdateWrapper); + } + + /** + * 清除User Group id + * + * @param groupId 待清除的GroupId + */ + @Override + public void clearGroupByGroupId(String groupId) { + LambdaUpdateWrapper upw = Wrappers.lambdaUpdate(); + upw.set(User::getGroupId, "").eq(User::getGroupId, groupId); + update(upw); + } + + /** + * 更新用户 + * + * @param userRequest 用户参数 + * @return Boolean + */ + @Override + public Boolean updateUser(UserUpdateRequest userRequest) { + User tempUser = getById(userRequest.getUid()); + User user = new User(); + BeanUtils.copyProperties(userRequest, user); + if (!tempUser.getIsPromoter() && user.getIsPromoter()) { + user.setPromoterTime(cn.hutool.core.date.DateUtil.date()); + } + return updateById(user); + } + + /** + * 根据手机号查询用户 + * @param phone 用户手机号 + * @return 用户信息 + */ + @Override + public User getByPhone(String phone) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(User::getPhone, phone); + return userDao.selectOne(lqw); + } + + /** + * 后台修改用户手机号 + * @param id 用户uid + * @param phone 手机号 + * @return Boolean + */ + @Override + public Boolean updateUserPhone(Integer id, String phone) { + boolean matchPhone = ReUtil.isMatch(RegularConstants.PHONE_TWO, phone); + if (!matchPhone) { + throw new CrmebException("手机号格式错误,请输入正确得手机号"); + } + User user = getById(id); + if (ObjectUtil.isNull(user)) { + throw new CrmebException("对应用户不存在"); + } + if (phone.equals(user.getPhone())) { + throw new CrmebException("手机号与之前一致"); + } + + //检测当前手机号是否已经是账号 + User tempUser = getByPhone(phone); + if (ObjectUtil.isNotNull(tempUser)) { + throw new CrmebException("此手机号码已被注册"); + } + + User newUser = new User(); + newUser.setUid(id); + newUser.setPhone(phone); + newUser.setAccount(phone); + return userDao.updateById(newUser) > 0; + } + + /** + * 根据昵称匹配用户,返回id集合 + * @param nikeName 需要匹配得昵称 + * @return List + */ + @Override + public List findIdListLikeName(String nikeName) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.select(User::getUid); + lqw.like(User::getNickname, nikeName); + List userList = userDao.selectList(lqw); + if (CollUtil.isEmpty(userList)) { + return new ArrayList<>(); + } + return userList.stream().map(User::getUid).collect(Collectors.toList()); + } + + /** + * 清除对应的用户等级 + * @param levelId 等级id + */ + @Override + public Boolean removeLevelByLevelId(Integer levelId) { + LambdaUpdateWrapper luw = Wrappers.lambdaUpdate(); + luw.set(User::getLevel, 0); + luw.eq(User::getLevel, levelId); + return update(luw); + } + + /** + * 更新用户会员等级 + * @param request request + * @return Boolean + */ + @Override + public Boolean updateUserLevel(UpdateUserLevelRequest request) { + User user = getById(request.getUid()); + if (ObjectUtil.isNull(user)) { + throw new CrmebException("用户不存在"); + } + if (user.getLevel().equals(request.getLevelId())) { + throw new CrmebException("用户等级与修改前相同"); + } + + SystemUserLevel systemUserLevel = systemUserLevelService.getByLevelId(request.getLevelId()); + if (ObjectUtil.isNull(systemUserLevel)) { + throw new CrmebException("系统会员等级不存在,请先配置"); + } + SystemUserLevel userLevel = new SystemUserLevel(); + if (ObjectUtil.isNull(user.getLevel()) || user.getLevel().equals(0)) { + userLevel.setGrade(0); + } else { + userLevel = systemUserLevelService.getByLevelId(user.getLevel()); + } + if (ObjectUtil.isNull(userLevel)) { + throw new CrmebException("用户会员等级不存在,请检查用户数据"); + } + if (userLevel.getGrade() > systemUserLevel.getGrade()) { + if (ObjectUtil.isNull(request.getIsSub())) { + throw new CrmebException("降低用户等级时,请选择是否扣除用户经验值"); + } + } + + // 升级 + if (userLevel.getGrade() < systemUserLevel.getGrade()) { + // 创建用户会员等级记录 + UserLevel newLevel = new UserLevel(); + newLevel.setUid(user.getUid()); + newLevel.setLevelId(systemUserLevel.getId()); + newLevel.setGrade(systemUserLevel.getGrade()); + newLevel.setStatus(true); + newLevel.setMark(StrUtil.format("尊敬的用户 {},在{}管理员调整会员等级成为{}", user.getNickname(), DateUtil.nowDateTimeStr(), systemUserLevel.getName())); + newLevel.setDiscount(systemUserLevel.getDiscount()); + newLevel.setCreateTime(DateUtil.nowDateTime()); + return transactionTemplate.execute(e -> { + updateLevel(user.getUid(), request.getLevelId()); + userLevelService.save(newLevel); + return Boolean.TRUE; + }); + } + // 降级 + if (!request.getIsSub()) {// 不扣经验 + // 创建用户会员等级记录 + UserLevel newLevel = new UserLevel(); + newLevel.setUid(user.getUid()); + newLevel.setLevelId(systemUserLevel.getId()); + newLevel.setGrade(systemUserLevel.getGrade()); + newLevel.setStatus(true); + newLevel.setMark(StrUtil.format("尊敬的用户 {},在{}管理员调整会员等级成为{},不扣除经验", user.getNickname(), DateUtil.nowDateTimeStr(), systemUserLevel.getName())); + newLevel.setDiscount(systemUserLevel.getDiscount()); + newLevel.setCreateTime(DateUtil.nowDateTime()); + return transactionTemplate.execute(e -> { + updateLevel(user.getUid(), request.getLevelId()); + userLevelService.save(newLevel); + return Boolean.TRUE; + }); + } + // 扣除经验 + Integer deductionExp = user.getExperience() - systemUserLevel.getExperience(); + user.setExperience(systemUserLevel.getExperience()); + user.setLevel(systemUserLevel.getId()); + // 创建用户经验记录 + UserExperienceRecord experienceRecord = new UserExperienceRecord(); + experienceRecord.setUid(user.getUid()); + experienceRecord.setLinkType(ExperienceRecordConstants.EXPERIENCE_RECORD_LINK_TYPE_SYSTEM); + experienceRecord.setType(ExperienceRecordConstants.EXPERIENCE_RECORD_TYPE_SUB); + experienceRecord.setTitle(ExperienceRecordConstants.EXPERIENCE_RECORD_TITLE_ADMIN); + experienceRecord.setExperience(deductionExp); + experienceRecord.setBalance(user.getExperience()); + experienceRecord.setMark(StrUtil.format("管理员降级扣减了{}经验", deductionExp)); + experienceRecord.setStatus(ExperienceRecordConstants.EXPERIENCE_RECORD_STATUS_CREATE); + + // 创建用户会员等级记录 + UserLevel newLevel = new UserLevel(); + newLevel.setUid(user.getUid()); + newLevel.setLevelId(systemUserLevel.getId()); + newLevel.setGrade(systemUserLevel.getGrade()); + newLevel.setStatus(true); + newLevel.setMark(StrUtil.format("尊敬的用户 {},在{}管理员调整会员等级成为{},扣除经验{}", user.getNickname(), DateUtil.nowDateTimeStr(), systemUserLevel.getName(), deductionExp)); + newLevel.setDiscount(systemUserLevel.getDiscount()); + newLevel.setCreateTime(DateUtil.nowDateTime()); + return transactionTemplate.execute(e -> { + updateById(user); + userLevelService.save(newLevel); + experienceRecordService.save(experienceRecord); + return Boolean.TRUE; + }); + } + + /** + * 获取用户总人数 + */ + @Override + public Integer getTotalNum() { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.select(User::getUid); + return userDao.selectCount(lqw); + } + + /** + * 根据日期段获取注册用户数量 + * @param startDate 日期 + * @param endDate 日期 + * @return UserOverviewResponse + */ + @Override + public Integer getRegisterNumByPeriod(String startDate, String endDate) { + QueryWrapper wrapper = Wrappers.query(); + wrapper.select("uid"); + wrapper.apply("date_format(create_time, '%Y-%m-%d') between {0} and {1}", startDate, endDate); + return userDao.selectCount(wrapper); + } + + /** + * 获取用户性别数据 + * @return List + */ + @Override + public List getSexData() { + QueryWrapper wrapper = Wrappers.query(); + wrapper.select("sex", "count(uid) as pay_count"); + wrapper.groupBy("sex"); + return userDao.selectList(wrapper); + } + + /** + * 获取用户渠道数据 + * @return List + */ + @Override + public List getChannelData() { + QueryWrapper wrapper = Wrappers.query(); + wrapper.select("user_type", "count(uid) as pay_count"); + wrapper.groupBy("user_type"); + return userDao.selectList(wrapper); + } + + /** + * 获取所有用户的id跟地址 + * @return List + */ + @Override + public List findIdAndAddresList() { + QueryWrapper wrapper = Wrappers.query(); + wrapper.select("uid", "addres"); + return userDao.selectList(wrapper); + } + + /** + * 修改个人资料 + * @param request 修改信息 + */ + @Override + public Boolean editUser(UserEditRequest request) { + User user = getInfo(); + user.setAvatar(systemAttachmentService.clearPrefix(request.getAvatar())); + user.setNickname(request.getNickname()); + return updateById(user); + } + + /** + * 获取用户详情 + * @param id 用户uid + */ + @Override + public User getInfoByUid(Integer id) { + User user = getById(id); + if (ObjectUtil.isNull(user)) { + throw new CrmebException("用户不存在"); + } + return user; + } + + /** + * 根据日期获取注册用户数量 + * @param date 日期 + * @return Integer + */ + @Override + public Integer getRegisterNumByDate(String date) { + QueryWrapper wrapper = Wrappers.query(); + wrapper.select("uid"); + wrapper.apply("date_format(create_time, '%Y-%m-%d') = {0}", date); + return userDao.selectCount(wrapper); + } + + /** + * 更新用户等级 + * @param uid 用户id + * @param levelId 会员等级id + * @return Boolean + */ + private Boolean updateLevel(Integer uid, Integer levelId) { + LambdaUpdateWrapper luw = Wrappers.lambdaUpdate(); + luw.set(User::getLevel, levelId); + luw.eq(User::getUid, uid); + return update(luw); + } +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserSignServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserSignServiceImpl.java new file mode 100644 index 0000000..238e807 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserSignServiceImpl.java @@ -0,0 +1,418 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.model.user.User; +import com.zbkj.common.model.user.UserExperienceRecord; +import com.zbkj.common.model.user.UserIntegralRecord; +import com.zbkj.common.model.user.UserSign; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.constants.ExperienceRecordConstants; +import com.zbkj.common.constants.IntegralRecordConstants; +import com.zbkj.common.constants.SysGroupDataConstants; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.response.UserSignInfoResponse; +import com.zbkj.common.vo.UserSignMonthVo; +import com.zbkj.common.vo.UserSignVo; +import com.github.pagehelper.PageHelper; +import com.zbkj.common.utils.DateUtil; +import com.zbkj.common.vo.SystemGroupDataSignConfigVo; +import com.zbkj.service.dao.UserSignDao; +import com.zbkj.service.service.*; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.support.TransactionTemplate; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +/** + * UserSignServiceImpl 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class UserSignServiceImpl extends ServiceImpl implements UserSignService { + + @Resource + private UserSignDao dao; + + @Autowired + private UserService userService; + + @Autowired + private SystemGroupDataService systemGroupDataService; + + @Autowired + private TransactionTemplate transactionTemplate; + + @Autowired + private UserIntegralRecordService userIntegralRecordService; + + @Autowired + private UserLevelService userLevelService; + + @Autowired + private UserExperienceRecordService userExperienceRecordService; + + /** + * 用户积分列表 + * + * @param pageParamRequest 分页类参数 + * @return List + */ + @Override + public List getList(PageParamRequest pageParamRequest) { + PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(UserSign::getType, 1); + lambdaQueryWrapper.eq(UserSign::getUid, userService.getUserIdException()); + lambdaQueryWrapper.orderByDesc(UserSign::getId); + List userSignList = dao.selectList(lambdaQueryWrapper); + + ArrayList userSignVoList = new ArrayList<>(); + if (userSignList.size() < 1) { + return userSignVoList; + } + for (UserSign userSign : userSignList) { + userSignVoList.add(new UserSignVo(userSign.getTitle(), userSign.getNumber(), userSign.getCreateDay())); + } + return userSignVoList; + } + + /** + * 签到 + */ + @Override + public SystemGroupDataSignConfigVo sign() { + User user = userService.getInfoException(); + + // 获取最后一次签到记录 + UserSign lastUserSign = getLastDayByUid(user.getUid()); + if (ObjectUtil.isNull(lastUserSign)) { + // 没有签到过,重置签到次数 + user.setSignNum(0); + } else { + // 判断是否重复签到 + String lastDate = DateUtil.dateToStr(lastUserSign.getCreateDay(), Constants.DATE_FORMAT_DATE); + String nowDate = DateUtil.nowDate(Constants.DATE_FORMAT_DATE); + //对比今天数据 + if (DateUtil.compareDate(lastDate, nowDate, Constants.DATE_FORMAT_DATE) == 0) { + throw new CrmebException("今日已签到。不可重复签到"); + } + String nextDate = DateUtil.addDay(lastUserSign.getCreateDay(), 1, Constants.DATE_FORMAT_DATE); + int compareDate = DateUtil.compareDate(nextDate, nowDate, Constants.DATE_FORMAT_DATE); + if (compareDate != 0) { + //不相等,所以不是连续签到,重置签到次数 + user.setSignNum(0); + } + } + + //获取签到数据 + List config = getSignConfig(); + if (CollUtil.isEmpty(config)) { + throw new CrmebException("签到配置不存在,请在管理端配置签到数据"); + } + + //如果已经签到一个周期,那么再次签到的时候直接从第一天重新开始 + if (user.getSignNum().equals(config.size())) { + user.setSignNum(0); + } + + user.setSignNum(user.getSignNum() + 1); + SystemGroupDataSignConfigVo configVo = null; + for (SystemGroupDataSignConfigVo systemSignConfigVo : config) { + if (user.getSignNum().equals(systemSignConfigVo.getDay())) { + configVo = systemSignConfigVo; + break ; + } + } + if (ObjectUtil.isNull(configVo)) { + throw new CrmebException("请先配置签到天数!"); + } + + //保存签到数据 + UserSign userSign = new UserSign(); + userSign.setUid(user.getUid()); + userSign.setTitle(Constants.SIGN_TYPE_INTEGRAL_TITLE); + userSign.setNumber(configVo.getIntegral()); + userSign.setType(Constants.SIGN_TYPE_INTEGRAL); + userSign.setBalance(user.getIntegral() + configVo.getIntegral()); + userSign.setCreateDay(DateUtil.strToDate(DateUtil.nowDate(Constants.DATE_FORMAT_DATE), Constants.DATE_FORMAT_DATE)); + + // 生成用户积分记录 + UserIntegralRecord integralRecord = new UserIntegralRecord(); + integralRecord.setUid(user.getUid()); + integralRecord.setLinkType(IntegralRecordConstants.INTEGRAL_RECORD_LINK_TYPE_SIGN); + integralRecord.setType(IntegralRecordConstants.INTEGRAL_RECORD_TYPE_ADD); + integralRecord.setTitle(IntegralRecordConstants.BROKERAGE_RECORD_TITLE_SIGN); + integralRecord.setIntegral(configVo.getIntegral()); + integralRecord.setBalance(user.getIntegral() + configVo.getIntegral()); + integralRecord.setMark(StrUtil.format("签到积分奖励增加了{}积分", configVo.getIntegral())); + integralRecord.setStatus(IntegralRecordConstants.INTEGRAL_RECORD_STATUS_COMPLETE); + + //更新用户经验信息 + UserExperienceRecord experienceRecord = new UserExperienceRecord(); + experienceRecord.setUid(user.getUid()); + experienceRecord.setLinkType(ExperienceRecordConstants.EXPERIENCE_RECORD_LINK_TYPE_SIGN); + experienceRecord.setType(ExperienceRecordConstants.EXPERIENCE_RECORD_TYPE_ADD); + experienceRecord.setTitle(ExperienceRecordConstants.EXPERIENCE_RECORD_TITLE_SIGN); + experienceRecord.setExperience(configVo.getExperience()); + experienceRecord.setBalance(user.getExperience() + configVo.getExperience()); + experienceRecord.setMark(StrUtil.format("签到经验奖励增加了{}经验", configVo.getExperience())); + experienceRecord.setStatus(ExperienceRecordConstants.EXPERIENCE_RECORD_STATUS_CREATE); + + // 更新用户积分 + user.setIntegral(user.getIntegral() + configVo.getIntegral()); + // 更新用户经验 + user.setExperience(user.getExperience() + configVo.getExperience()); + + Boolean execute = transactionTemplate.execute(e -> { + //保存签到数据 + save(userSign); + // 更新用户积分记录 + userIntegralRecordService.save(integralRecord); + //更新用户经验信息 + userExperienceRecordService.save(experienceRecord); + //更新用户 签到天数、积分、经验 + userService.updateById(user); + // 用户升级 + userLevelService.upLevel(user); + return Boolean.TRUE; + }); + + if (!execute) { + throw new CrmebException("修改用户签到信息失败!"); + } + + return configVo; + } + + + /** + * 今日记录详情 + */ + @Override + public HashMap get() { + HashMap map = new HashMap<>(); + //当前积分 + User info = userService.getInfo(); + map.put("integral", info.getIntegral()); + //总计签到天数 + map.put("count", signCount(info.getUid())); + //连续签到数据 + + //今日是否已经签到 + map.put("today", false); + return map; + } + + /** + * 签到配置 + * + * @return List + */ + @Override + public List getSignConfig() { + //获取配置数据 + return systemGroupDataService.getListByGid(SysGroupDataConstants.GROUP_DATA_ID_SIGN, SystemGroupDataSignConfigVo.class); + } + + /** + * 列表年月 + * + * @param pageParamRequest 分页类参数 + * @return List + */ + @Override + public List getListGroupMonth(PageParamRequest pageParamRequest) { + PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(UserSign::getType, 1); + lambdaQueryWrapper.eq(UserSign::getUid, userService.getUserIdException()); + lambdaQueryWrapper.orderByDesc(UserSign::getCreateDay); + List userSignList = dao.selectList(lambdaQueryWrapper); + + ArrayList signMonthVoArrayList = new ArrayList<>(); + if (userSignList.size() < 1) { + return signMonthVoArrayList; + } + + for (UserSign userSign : userSignList) { + String date = DateUtil.dateToStr(userSign.getCreateDay(), Constants.DATE_FORMAT_MONTH); + UserSignVo userSignVo = new UserSignVo(userSign.getTitle(), userSign.getNumber(), userSign.getCreateDay()); + boolean findResult = false; + if (signMonthVoArrayList.size() > 0) { + //有数据之后则 判断是否已存在,存在则更新 + for (UserSignMonthVo userSignMonthVo : signMonthVoArrayList) { + if (userSignMonthVo.getMonth().equals(date)) { + userSignMonthVo.getList().add(userSignVo); + findResult = true; + break; + } + } + } + + //不存在则创建 + if (!findResult) { + //如果没有找到则需要单独添加 + ArrayList userSignVoArrayList = new ArrayList<>(); + userSignVoArrayList.add(userSignVo); + signMonthVoArrayList.add(new UserSignMonthVo(date, userSignVoArrayList)); + } + } + return signMonthVoArrayList; + } + + /** + * 获取用户签到信息 + * @return UserSignInfoResponse + */ + @Override + public UserSignInfoResponse getUserSignInfo() { + User user = userService.getInfoException(); + UserSignInfoResponse userSignInfoResponse = new UserSignInfoResponse(); + BeanUtils.copyProperties(user, userSignInfoResponse); + + // 签到总次数 + userSignInfoResponse.setSumSignDay(getCount(user.getUid())); + // 今天是否签到 + Boolean isCheckNowDaySign = checkDaySign(user.getUid()); + userSignInfoResponse.setIsDaySign(isCheckNowDaySign); + // 昨天是否签到 + Boolean isYesterdaySign = checkYesterdaySign(user.getUid()); + userSignInfoResponse.setIsYesterdaySign(isYesterdaySign); + if (!isYesterdaySign) { + // 今天是否签到 + if (!isCheckNowDaySign) { + userSignInfoResponse.setSignNum(0); + } + } + + // 连续签到天数:当前用户已经签到完一个周期,那么重置 + if (userSignInfoResponse.getSignNum() > 0 && userSignInfoResponse.getSignNum().equals(getSignConfig().size())) { + userSignInfoResponse.setSignNum(0); + userService.repeatSignNum(user.getUid()); + } + + userSignInfoResponse.setIntegral(user.getIntegral()); + return userSignInfoResponse; + } + + /** + * 检测今天是否签到 + * + * @param userId Integer 用户id + * @return UserSignInfoResponse + * @author Mr.Zhang + * @since 2020-05-29 + */ + private Boolean checkDaySign(Integer userId) { + List userSignList = getInfoByDay(userId, DateUtil.nowDate(Constants.DATE_FORMAT_DATE)); + return userSignList.size() != 0; + } + + /** + * 检测昨天天是否签到 + * + * @param userId Integer 用户id + * @return UserSignInfoResponse + * @author Mr.Zhang + * @since 2020-05-29 + */ + private Boolean checkYesterdaySign(Integer userId) { + String day = DateUtil.nowDate(Constants.DATE_FORMAT_DATE); + String yesterday = DateUtil.addDay(day, -1, Constants.DATE_FORMAT_DATE); + List userSignList = getInfoByDay(userId, yesterday); + return userSignList.size() != 0; + } + + /** + * 根据日期查询数据 + * + * @param userId Integer 用户id + * @param date Date 日期 + * @return UserSignInfoResponse + * @author Mr.Zhang + * @since 2020-05-29 + */ + private List getInfoByDay(Integer userId, String date) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(UserSign::getUid, userId).eq(UserSign::getType, 1).eq(UserSign::getCreateDay, date); + return dao.selectList(lambdaQueryWrapper); + } + + /** + * 累计签到次数 + * + * @param userId Integer 用户id + * @return UserSignInfoResponse + * @author Mr.Zhang + * @since 2020-05-29 + */ + private Integer getCount(Integer userId) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(UserSign::getUid, userId).eq(UserSign::getType, 1); + return dao.selectCount(lambdaQueryWrapper); + } + + /** + * 获取签到的最后一条记录 + * @param uid 用户id + * @return UserSign + */ + private UserSign getLastDayByUid(Integer uid) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.select(UserSign::getCreateDay); + lqw.eq(UserSign::getUid, uid); + lqw.orderByDesc(UserSign::getCreateDay); + lqw.last(" limit 1"); + return dao.selectOne(lqw); + } + + /** + * 累计签到天数 + * + * @param userId Integer 用户id + * @return Integer + * @author Mr.Zhang + * @since 2020-04-30 + */ + private Integer signCount(Integer userId) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(UserSign::getUid, userId); + return dao.selectCount(lambdaQueryWrapper); + } + + /** + * 条件获取列表 + * + * @param sign sign + * @param pageParamRequest 分页参数 + * @return List + */ + @Override + public List getListByCondition(UserSign sign, PageParamRequest pageParamRequest) { + PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.setEntity(sign); + lqw.orderByDesc(UserSign::getCreateTime); + return dao.selectList(lqw); + } +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserTagServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserTagServiceImpl.java new file mode 100644 index 0000000..2c67477 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserTagServiceImpl.java @@ -0,0 +1,108 @@ +package com.zbkj.service.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.request.UserTagRequest; +import com.github.pagehelper.PageHelper; +import com.zbkj.common.utils.CrmebUtil; +import com.zbkj.common.model.user.UserTag; +import com.zbkj.service.dao.UserTagDao; +import com.zbkj.service.service.UserService; +import com.zbkj.service.service.UserTagService; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; +import java.util.stream.Collectors; + +/** + * UserTagServiceImpl 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class UserTagServiceImpl extends ServiceImpl implements UserTagService { + + @Resource + private UserTagDao dao; + + @Autowired + private UserService userService; + + /** + * 列表 + * @param pageParamRequest 分页类参数 + * @return List + */ + @Override + public List getList(PageParamRequest pageParamRequest) { + PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + return dao.selectList(null); + } + + /** + * 根据id in 返回name字符串 + * @param tagIdValue String 标签id + * @return List + */ + @Override + public String getGroupNameInId(String tagIdValue) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.in(UserTag::getId, CrmebUtil.stringToArray(tagIdValue)).orderByDesc(UserTag::getId); + List userTags = dao.selectList(lambdaQueryWrapper); + if (null == userTags){ + return "无"; + } + + return userTags.stream().map(UserTag::getName).distinct().collect(Collectors.joining(",")); + } + + /** + * 新增用户标签 + * @param userTagRequest 标签参数 + */ + @Override + public Boolean create(UserTagRequest userTagRequest) { + UserTag userTag = new UserTag(); + BeanUtils.copyProperties(userTagRequest, userTag); + return save(userTag); + } + + /** + * 删除用户标签 + * @param id 标签id + */ + @Override + public Boolean delete(Integer id) { + boolean remove = removeById(id); + if (remove) { + userService.clearGroupByGroupId(id+""); + } + return remove; + } + + /** + * 修改用户标签 + * @param id 标签id + * @param userTagRequest 标签参数 + */ + @Override + public Boolean updateTag(Integer id, UserTagRequest userTagRequest) { + UserTag userTag = new UserTag(); + BeanUtils.copyProperties(userTagRequest, userTag); + userTag.setId(id); + return updateById(userTag); + } + +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserTokenServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserTokenServiceImpl.java new file mode 100644 index 0000000..6b2d03e --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserTokenServiceImpl.java @@ -0,0 +1,66 @@ +package com.zbkj.service.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.model.user.UserToken; +import com.zbkj.service.dao.UserTokenDao; +import com.zbkj.service.service.UserTokenService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * UserTokenServiceImpl 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class UserTokenServiceImpl extends ServiceImpl implements UserTokenService { + + @Resource + private UserTokenDao dao; + + /** + * 检测token是否存在 + * @param token String openId + * @param type int 类型 + * @return UserToken + */ + @Override + public UserToken getByOpenidAndType(String token, int type) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(UserToken::getType, type).eq(UserToken::getToken, token); + return dao.selectOne(lambdaQueryWrapper); + } + + /** + * 绑定token关系 + * @param token String token + * @param type int 类型 + * @author Mr.Zhang + * @since 2020-05-25 + */ + @Override + public void bind(String token, int type, Integer userId) { + UserToken userToken = new UserToken(); + userToken.setToken(token); + userToken.setType(type); + userToken.setUid(userId); + save(userToken); + } + + @Override + public UserToken getTokenByUserId(Integer userId, int type) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(UserToken::getUid, userId).eq(UserToken::getType, type); + return dao.selectOne(lambdaQueryWrapper); + } +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserVisitRecordServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserVisitRecordServiceImpl.java new file mode 100644 index 0000000..e32ef39 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserVisitRecordServiceImpl.java @@ -0,0 +1,78 @@ +package com.zbkj.service.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.model.record.UserVisitRecord; +import com.zbkj.service.dao.UserVisitRecordDao; +import com.zbkj.service.service.UserVisitRecordService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * UserVisitRecordServiceImpl 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class UserVisitRecordServiceImpl extends ServiceImpl implements UserVisitRecordService { + + @Resource + private UserVisitRecordDao dao; + + /** + * 通过日期获取浏览量 + * @param date 日期 + * @return Integer + */ + @Override + public Integer getPageviewsByDate(String date) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.select("id"); + wrapper.eq("date", date); + return dao.selectCount(wrapper); + } + + /** + * 通过时间段获取浏览量 + * @param startDate 日期 + * @param endDate 日期 + * @return Integer + */ + @Override + public Integer getPageviewsByPeriod(String startDate, String endDate) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.select("id"); + wrapper.between("date", startDate, endDate); + return dao.selectCount(wrapper); + } + + /** + * 通过日期获取活跃用户数 + * @param date 日期 + * @return Integer + */ + @Override + public Integer getActiveUserNumByDate(String date) { + return dao.getActiveUserNumByDate(date); + } + + /** + * 通过时间段获取活跃用户数 + * @param startDate 日期 + * @param endDate 日期 + * @return Integer + */ + @Override + public Integer getActiveUserNumByPeriod(String startDate, String endDate) { + return dao.getActiveUserNumByPeriod(startDate, endDate); + } +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/WeChatPayServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/WeChatPayServiceImpl.java new file mode 100644 index 0000000..2869211 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/WeChatPayServiceImpl.java @@ -0,0 +1,442 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.constants.PayConstants; +import com.zbkj.common.constants.TaskConstants; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.model.combination.StoreCombination; +import com.zbkj.common.model.combination.StorePink; +import com.zbkj.common.model.finance.UserRecharge; +import com.zbkj.common.model.order.StoreOrder; +import com.zbkj.common.model.user.User; +import com.zbkj.common.model.user.UserToken; +import com.zbkj.common.model.wechat.WechatPayInfo; +import com.zbkj.common.utils.*; +import com.zbkj.common.vo.*; +import com.zbkj.service.service.*; +import lombok.Data; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.support.TransactionTemplate; + +import java.math.BigDecimal; +import java.util.HashMap; +import java.util.Map; + + +/** + * 微信支付 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Data +@Service +public class WeChatPayServiceImpl implements WeChatPayService { + private static final Logger logger = LoggerFactory.getLogger(WeChatPayServiceImpl.class); + + @Autowired + private RestTemplateUtil restTemplateUtil; + + @Autowired + private UserTokenService userTokenService; + + @Autowired + private StoreOrderService storeOrderService; + + @Autowired + private StoreOrderInfoService storeOrderInfoService; + + @Autowired + private SystemConfigService systemConfigService; + + private String signKey; + + private CreateOrderRequestVo createOrderRequestVo; + + private CreateOrderResponseVo createOrderResponseVo = null; + + @Autowired + private RedisUtil redisUtil; + + @Autowired + private TransactionTemplate transactionTemplate; + + @Autowired + private UserService userService; + + @Autowired + private UserRechargeService userRechargeService; + + @Autowired + private RechargePayService rechargePayService; + + @Autowired + private StoreCombinationService storeCombinationService; + + @Autowired + private StorePinkService storePinkService; + + @Autowired + private WechatNewService wechatNewService; + + @Autowired + private WechatPayInfoService wechatPayInfoService; + + /** + * 查询支付结果 + * @param orderNo 订单编号 + * @return + */ + @Override + public Boolean queryPayResult(String orderNo) { + if (StrUtil.isBlank(orderNo)) { + throw new CrmebException("订单编号不能为空"); + } + // 切割字符串,判断是支付订单还是充值订单 + String pre = StrUtil.subPre(orderNo, 5); + if ("order".equals(pre)) {// 支付订单 + StoreOrder storeOrder = storeOrderService.getByOderId(orderNo); + if (ObjectUtil.isNull(storeOrder)) { + throw new CrmebException("订单不存在"); + } + if (storeOrder.getIsDel()) { + throw new CrmebException("订单已被删除"); + } + if (!storeOrder.getPayType().equals(PayConstants.PAY_TYPE_WE_CHAT)) { + throw new CrmebException("不是微信支付类型订单,请重新选择支付方式"); + } + + if (storeOrder.getPaid()) { + return Boolean.TRUE; + } + + WechatPayInfo wechatPayInfo = wechatPayInfoService.getByNo(storeOrder.getOutTradeNo()); + if (ObjectUtil.isNull(wechatPayInfo)) { + throw new CrmebException("未找到对应微信订单"); + } + + User user = userService.getById(storeOrder.getUid()); + if (ObjectUtil.isNull(user)) throw new CrmebException("用户不存在"); + + + // 获取appid、mch_id + // 微信签名key + String appId = ""; + String mchId = ""; + String signKey = ""; + if (storeOrder.getIsChannel() == 0) {// 公众号 + appId = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_WE_CHAT_APP_ID); + mchId = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_WE_CHAT_MCH_ID); + signKey = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_WE_CHAT_APP_KEY); + } + if (storeOrder.getIsChannel() == 1) {// 小程序 + appId = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_ROUTINE_APP_ID); + mchId = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_ROUTINE_MCH_ID); + signKey = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_ROUTINE_APP_KEY); + } + if (storeOrder.getIsChannel() == 2) {// H5 + appId = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_WE_CHAT_APP_ID); + mchId = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_WE_CHAT_MCH_ID); + signKey = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_WE_CHAT_APP_KEY); + } + + // 生成查询订单对象 + Map payVo = getWxChantQueryPayVo(wechatPayInfo.getOutTradeNo(), appId, mchId, signKey); + // 查询订单信息 + MyRecord record = wechatNewService.payOrderQuery(payVo); + + wechatPayInfo.setIsSubscribe(record.getStr("is_subscribe")); + wechatPayInfo.setTradeState(record.getStr("trade_state")); + wechatPayInfo.setBankType(record.getStr("bank_type")); + wechatPayInfo.setCashFee(record.getInt("cash_fee")); + wechatPayInfo.setCouponFee(record.getInt("coupon_fee")); + wechatPayInfo.setTransactionId(record.getStr("transaction_id")); + wechatPayInfo.setTimeEnd(record.getStr("time_end")); + wechatPayInfo.setTradeStateDesc(record.getStr("trade_state_desc")); + + Boolean updatePaid = transactionTemplate.execute(e -> { + storeOrderService.updatePaid(orderNo); + wechatPayInfoService.updateById(wechatPayInfo); + if (storeOrder.getUseIntegral() > 0) { + userService.updateIntegral(user, storeOrder.getUseIntegral(), "sub"); + } + // 处理拼团 + if (storeOrder.getCombinationId() > 0) { + // 判断拼团团长是否存在 + StorePink headPink = new StorePink(); + Integer pinkId = storeOrder.getPinkId(); + if (pinkId > 0) { + headPink = storePinkService.getById(pinkId); + if (ObjectUtil.isNull(headPink) || headPink.getIsRefund().equals(true) || headPink.getStatus() == 3) { + pinkId = 0; + } + } + StoreCombination storeCombination = storeCombinationService.getById(storeOrder.getCombinationId()); + // 如果拼团人数已满,重新开团 + if (pinkId > 0) { + Integer count = storePinkService.getCountByKid(pinkId); + if (count >= storeCombination.getPeople()) { + pinkId = 0; + } + } + // 生成拼团表数据 + StorePink storePink = new StorePink(); + storePink.setUid(user.getUid()); + storePink.setAvatar(user.getAvatar()); + storePink.setNickname(user.getNickname()); + storePink.setOrderId(storeOrder.getOrderId()); + storePink.setOrderIdKey(storeOrder.getId()); + storePink.setTotalNum(storeOrder.getTotalNum()); + storePink.setTotalPrice(storeOrder.getTotalPrice()); + storePink.setCid(storeCombination.getId()); + storePink.setPid(storeCombination.getProductId()); + storePink.setPeople(storeCombination.getPeople()); + storePink.setPrice(storeCombination.getPrice()); + Integer effectiveTime = storeCombination.getEffectiveTime();// 有效小时数 + DateTime dateTime = cn.hutool.core.date.DateUtil.date(); + storePink.setAddTime(dateTime.getTime()); + if (pinkId > 0) { + storePink.setStopTime(headPink.getStopTime()); + } else { + DateTime hourTime = cn.hutool.core.date.DateUtil.offsetHour(dateTime, effectiveTime); + long stopTime = hourTime.getTime(); + if (stopTime > storeCombination.getStopTime()) { + stopTime = storeCombination.getStopTime(); + } + storePink.setStopTime(stopTime); + } + storePink.setKId(pinkId); + storePink.setIsTpl(false); + storePink.setIsRefund(false); + storePink.setStatus(1); + storePinkService.save(storePink); + // 如果是开团,需要更新订单数据 + storeOrder.setPinkId(storePink.getId()); + storeOrderService.updateById(storeOrder); + } + return Boolean.TRUE; + }); + if (!updatePaid) { + throw new CrmebException("支付成功更新订单失败"); + } + // 添加支付成功task + redisUtil.lPush(TaskConstants.ORDER_TASK_PAY_SUCCESS_AFTER, orderNo); + return Boolean.TRUE; + } + // 充值订单 + UserRecharge userRecharge = new UserRecharge(); + userRecharge.setOrderId(orderNo); + userRecharge = userRechargeService.getInfoByEntity(userRecharge); + if (ObjectUtil.isNull(userRecharge)) { + throw new CrmebException("没有找到订单信息"); + } + if (userRecharge.getPaid()) { + return Boolean.TRUE; + } + // 查询订单 + // 获取appid、mch_id + // 微信签名key + String appId = ""; + String mchId = ""; + String signKey = ""; + if ("public".equals(userRecharge.getRechargeType())) {// 公众号 + appId = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_WE_CHAT_APP_ID); + mchId = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_WE_CHAT_MCH_ID); + signKey = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_WE_CHAT_APP_KEY); + } + if ("routine".equals(userRecharge.getRechargeType())) {// 小程序 + appId = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_ROUTINE_APP_ID); + mchId = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_ROUTINE_MCH_ID); + signKey = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_ROUTINE_APP_KEY); + } + // 生成查询订单对象 + Map payVo = getWxChantQueryPayVo(orderNo, appId, mchId, signKey); + // 查询订单信息 + MyRecord record = wechatNewService.payOrderQuery(payVo); + // 支付成功处理 + Boolean rechargePayAfter = rechargePayService.paySuccess(userRecharge); + if (!rechargePayAfter) { + throw new CrmebException("wechat pay error : 数据保存失败==》" + orderNo); + } + return rechargePayAfter; + } + + /** + * 微信充值预下单接口 + * @param userRecharge 充值订单 + * @param clientIp ip + * @return + */ + @Override + public Map unifiedRecharge(UserRecharge userRecharge, String clientIp) { + if (ObjectUtil.isNull(userRecharge)) { + throw new CrmebException("订单不存在"); + } + // 获取用户openId + // 根据订单支付类型来判断获取公众号openId还是小程序openId + UserToken userToken = new UserToken(); + if (userRecharge.getRechargeType().equals(PayConstants.PAY_CHANNEL_WE_CHAT_PUBLIC)) {// 公众号 + userToken = userTokenService.getTokenByUserId(userRecharge.getUid(), 1); + } + if (userRecharge.getRechargeType().equals(PayConstants.PAY_CHANNEL_WE_CHAT_PROGRAM)) {// 小程序 + userToken = userTokenService.getTokenByUserId(userRecharge.getUid(), 2); + } + if (userRecharge.getRechargeType().equals(PayConstants.PAY_CHANNEL_WE_CHAT_H5)) {// H5 + userToken.setToken(""); + } + + if (ObjectUtil.isNull(userToken)) { + throw new CrmebException("该用户没有openId"); + } + + // 获取appid、mch_id + // 微信签名key + String appId = ""; + String mchId = ""; + String signKey = ""; + if (userRecharge.getRechargeType().equals(PayConstants.PAY_CHANNEL_WE_CHAT_PUBLIC)) {// 公众号 + appId = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_WE_CHAT_APP_ID); + mchId = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_WE_CHAT_MCH_ID); + signKey = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_WE_CHAT_APP_KEY); + } + if (userRecharge.getRechargeType().equals(PayConstants.PAY_CHANNEL_WE_CHAT_PROGRAM)) {// 小程序 + appId = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_ROUTINE_APP_ID); + mchId = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_ROUTINE_MCH_ID); + signKey = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_ROUTINE_APP_KEY); + } + if (userRecharge.getRechargeType().equals(PayConstants.PAY_CHANNEL_WE_CHAT_H5)) {// H5,使用公众号的 + appId = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_WE_CHAT_APP_ID); + mchId = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_WE_CHAT_MCH_ID); + signKey = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_WE_CHAT_APP_KEY); + } + + // 获取微信预下单对象 + CreateOrderRequestVo unifiedorderVo = getUnifiedorderVo(userRecharge, userToken.getToken(), clientIp, appId, mchId, signKey); + // 预下单 + CreateOrderResponseVo responseVo = unifiedOrder(unifiedorderVo); + + // 组装前端预下单参数 + Map map = new HashMap<>(); + map.put("appId", unifiedorderVo.getAppid()); + map.put("nonceStr", unifiedorderVo.getNonce_str()); + map.put("package", "prepay_id=".concat(responseVo.getPrepayId())); + map.put("signType", unifiedorderVo.getSign_type()); + Long currentTimestamp = WxPayUtil.getCurrentTimestamp(); + map.put("timeStamp", Long.toString(currentTimestamp)); + String paySign = WxPayUtil.getSign(map, signKey); + map.put("paySign", paySign); + if (userRecharge.getRechargeType().equals(PayConstants.PAY_CHANNEL_WE_CHAT_H5)) { + map.put("mweb_url", responseVo.getMWebUrl()); + } + return map; + } + + /** + * 生成微信查询订单对象 + * @return + */ + private Map getWxChantQueryPayVo(String orderNo, String appId, String mchId, String signKey) { + Map map = CollUtil.newHashMap(); + map.put("appid", appId); + map.put("mch_id", mchId); + map.put("out_trade_no", orderNo); + map.put("nonce_str", WxPayUtil.getNonceStr()); + map.put("sign_type", PayConstants.WX_PAY_SIGN_TYPE_MD5); + map.put("sign", WxPayUtil.getSign(map, signKey)); + return map; + } + + /** + * 获取微信预下单对象 + * @return + */ + private CreateOrderRequestVo getUnifiedorderVo(UserRecharge userRecharge, String openid, String ip, String appId, String mchId, String signKey) { + + // 获取域名 + String domain = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_SITE_URL); + String apiDomain = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_API_URL); + + AttachVo attachVo = new AttachVo(Constants.SERVICE_PAY_TYPE_RECHARGE, userRecharge.getUid()); + CreateOrderRequestVo vo = new CreateOrderRequestVo(); + + vo.setAppid(appId); + vo.setMch_id(mchId); + vo.setNonce_str(WxPayUtil.getNonceStr()); + vo.setSign_type(PayConstants.WX_PAY_SIGN_TYPE_MD5); + vo.setBody(PayConstants.PAY_BODY); + vo.setAttach(JSONObject.toJSONString(attachVo)); + vo.setOut_trade_no(userRecharge.getOrderId()); + // 订单中使用的是BigDecimal,这里要转为Integer类型 + vo.setTotal_fee(userRecharge.getPrice().multiply(BigDecimal.TEN).multiply(BigDecimal.TEN).intValue()); + vo.setSpbill_create_ip(ip); + vo.setNotify_url(apiDomain + PayConstants.WX_PAY_NOTIFY_API_URI); + vo.setTrade_type(PayConstants.WX_PAY_TRADE_TYPE_JS); + vo.setOpenid(openid); + if (userRecharge.getRechargeType().equals(PayConstants.PAY_CHANNEL_WE_CHAT_H5)) {// H5 + vo.setTrade_type(PayConstants.WX_PAY_TRADE_TYPE_H5); + vo.setOpenid(null); + } + if (userRecharge.getRechargeType().equals(PayConstants.PAY_CHANNEL_WE_CHAT_APP_IOS) || userRecharge.getRechargeType().equals(PayConstants.PAY_CHANNEL_WE_CHAT_APP_ANDROID)) { + vo.setTrade_type("APP"); + vo.setOpenid(null); + } + CreateOrderH5SceneInfoVo createOrderH5SceneInfoVo = new CreateOrderH5SceneInfoVo( + new CreateOrderH5SceneInfoDetailVo( + domain, + systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_SITE_NAME) + ) + ); + vo.setScene_info(JSONObject.toJSONString(createOrderH5SceneInfoVo)); + String sign = WxPayUtil.getSign(vo, signKey); + vo.setSign(sign); + return vo; + } + + /** + * 作用:统一下单
+ * 场景:公共号支付、扫码支付、APP支付 + * + * @param vo 向wxpay post的请求数据 + * @return API返回数据 + */ + private CreateOrderResponseVo unifiedOrder(CreateOrderRequestVo vo) { + try { + String url = PayConstants.WX_PAY_API_URL + PayConstants.WX_PAY_API_URI; + String request = XmlUtil.objectToXml(vo); + String xml = restTemplateUtil.postXml(url, request); + HashMap map = XmlUtil.xmlToMap(xml); + if (null == map) { + throw new CrmebException("微信下单失败!"); + } + CreateOrderResponseVo responseVo = CrmebUtil.mapToObj(map, CreateOrderResponseVo.class); + if ("FAIL".equals(responseVo.getReturnCode().toUpperCase())) { + throw new CrmebException("微信下单失败1!" + responseVo.getReturnMsg()); + } + + if ("FAIL".equals(responseVo.getResultCode().toUpperCase())) { + throw new CrmebException("微信下单失败2!" + responseVo.getErrCodeDes()); + } + + responseVo.setExtra(vo.getScene_info()); + return responseVo; + } catch (Exception e) { + e.printStackTrace(); + throw new CrmebException(e.getMessage()); + } + } + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/WechatCallbackServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/WechatCallbackServiceImpl.java new file mode 100644 index 0000000..3446d5c --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/WechatCallbackServiceImpl.java @@ -0,0 +1,59 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.model.wechat.WechatCallback; +import com.zbkj.service.dao.WechatCallbackDao; +import com.zbkj.service.service.WechatCallbackService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * 微信小程序回调Service + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class WechatCallbackServiceImpl extends ServiceImpl implements WechatCallbackService { + + private static final Logger logger = LoggerFactory.getLogger(WechatCallbackServiceImpl.class); + + @Resource + private WechatCallbackDao dao; + + /** + * 微信回调 + * @param request request + * @return String + */ + @Override + public String callback(String request) { + System.out.println("微信小程序回调:" + request); + JSONObject jsonObject = JSONObject.parseObject(request); + System.out.println("微信小程序回调jsonObject:" + jsonObject); + WechatCallback wechatCallback = new WechatCallback(); + wechatCallback.setToUserName(jsonObject.getString("ToUserName")); + wechatCallback.setFromUserName(jsonObject.getString("FromUserName")); + wechatCallback.setCreateTime(jsonObject.getLong("CreateTime")); + wechatCallback.setMsgType(jsonObject.getString("MsgType")); + wechatCallback.setEvent(jsonObject.getString("Event")); + wechatCallback.setAddTime(DateUtil.date()); + wechatCallback.setContent(request); + save(wechatCallback); + switch (wechatCallback.getEvent()) { + } + return "success"; + } +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/WechatExceptionsServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/WechatExceptionsServiceImpl.java new file mode 100644 index 0000000..314239e --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/WechatExceptionsServiceImpl.java @@ -0,0 +1,47 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.model.wechat.WechatExceptions; +import com.zbkj.service.dao.WechatExceptionsDao; +import com.zbkj.service.service.WechatExceptionsService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Date; + +/** + * 微信异常服务实现类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class WechatExceptionsServiceImpl extends ServiceImpl implements WechatExceptionsService { + + @Resource + private WechatExceptionsDao dao; + + /** + * 删除历史日志 + */ + @Override + public void autoDeleteLog() { + String beforeDate = DateUtil.offsetDay(new Date(), -9).toString(Constants.DATE_FORMAT_DATE); + UpdateWrapper wrapper = Wrappers.update(); + wrapper.lt("create_time", beforeDate); + dao.delete(wrapper); + } +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/WechatMediaServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/WechatMediaServiceImpl.java new file mode 100644 index 0000000..73a6284 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/WechatMediaServiceImpl.java @@ -0,0 +1,104 @@ +package com.zbkj.service.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.utils.CrmebUtil; +import com.zbkj.common.utils.UploadWeChatMediaUtil; +import com.zbkj.service.service.WechatMediaService; +import com.zbkj.service.service.WechatNewService; +import lombok.Data; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +@Data +@Service +public class WechatMediaServiceImpl implements WechatMediaService { + + @Autowired + private WechatNewService wechatNewService; + + private static final long maxSizeImage = 1024 * 1024 * 10; + + private static final String suffixNameImage = "bmp,png,jpeg,jpg,gif"; + + private static final long maxSizeVoice = 1024 * 1024 * 2; + + private static final String suffixNameVoice = "mp3,wma,wav,amr"; + + + + /** + * 上传素材到微信素材库 + * @param file MultipartFile 上传文件 + * @param type String 类型 媒体文件类型,分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb) + * @return String + */ + public Map upload(MultipartFile file, String type) { + try{ + String[] split = Objects.requireNonNull(file.getOriginalFilename()).split("\\."); + String suffixName = split[split.length-1]; + isValidPic(file.getSize(), suffixName, type); + + // 需要注意:这个是微信2016年的企业号上传素材接口,企业号在微信的最后维护时间在2016-07-19 + String url = wechatNewService.qyapiAddMaterialUrl(type); + JSONObject response = UploadWeChatMediaUtil.uploadFile(url, file.getResource().getInputStream(), file.getOriginalFilename()); + if (null == response || !response.containsKey("media_id")) { + assert response != null; + throw new CrmebException("素材上传失败" + response.getString("errmsg")); + } + + Map map = new HashMap<>(); + map.put("mediaId", response.getString("media_id")); + map.put("url", response.getString("url")); + map.put("name", file.getOriginalFilename().replace(suffixName, "")); + + return map; + }catch (Exception e) { + throw new CrmebException(e.getMessage()); + } + + + } + + + /** + * 是否符合微信规范 + * @param size long 文件大小 + * @param suffixName String 后缀名 + */ + private void isValidPic(long size, String suffixName, String type) { + JSONObject config = getConfig(); + if (!config.containsKey(type)) { + throw new CrmebException("不支持此类型"); + } + + long supportSize = config.getJSONObject(type).getLong("size"); + if (supportSize < size) { + throw new CrmebException("文件大小不能超过" + supportSize); + } + String supportNameSuffix = config.getJSONObject(type).getString("suffix"); + List suffixNameList = CrmebUtil.stringToArrayStr(supportNameSuffix); + if (!suffixNameList.contains(suffixName)) { + throw new CrmebException("文件格式必须是" + supportSize); + } + } + + /** + * 参数配置 + * @author Mr.Zhang + */ + private JSONObject getConfig() { + String data = "{" + + "image:{size:\""+maxSizeImage+"\", suffix: \""+suffixNameImage+"\"}, " + + "voice:{size:\""+maxSizeVoice+"\", suffix: \""+suffixNameVoice+"\"}" + + "}"; + return JSONObject.parseObject(data); + } + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/WechatNewServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/WechatNewServiceImpl.java new file mode 100644 index 0000000..8ca9de8 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/WechatNewServiceImpl.java @@ -0,0 +1,895 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.crypto.SecureUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.zbkj.common.config.CrmebConfig; +import com.zbkj.common.constants.PayConstants; +import com.zbkj.common.constants.WeChatConstants; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.model.wechat.WechatExceptions; +import com.zbkj.common.model.wechat.WechatPayInfo; +import com.zbkj.common.response.WeChatJsSdkConfigResponse; +import com.zbkj.common.token.WeChatOauthToken; +import com.zbkj.common.utils.CrmebUtil; +import com.zbkj.common.utils.RedisUtil; +import com.zbkj.common.utils.RestTemplateUtil; +import com.zbkj.common.utils.XmlUtil; +import com.zbkj.common.vo.*; +import com.zbkj.service.service.SystemConfigService; +import com.zbkj.service.service.WechatExceptionsService; +import com.zbkj.service.service.WechatNewService; +import com.zbkj.service.service.WechatPayInfoService; +import org.apache.commons.codec.binary.Base64; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.TimeUnit; + +/** + * 微信公用服务实现类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class WechatNewServiceImpl implements WechatNewService { + private static final Logger logger = LoggerFactory.getLogger(WechatNewServiceImpl.class); + + @Autowired + private CrmebConfig crmebConfig; + + @Autowired + private RedisUtil redisUtil; + + @Autowired + private RestTemplateUtil restTemplateUtil; + + @Autowired + private SystemConfigService systemConfigService; + + @Autowired + private WechatExceptionsService wechatExceptionsService; + + @Autowired + private WechatPayInfoService wechatPayInfoService; + + /** + * 获取公众号accessToken + */ + @Override + public String getPublicAccessToken() { + boolean exists = redisUtil.exists(WeChatConstants.REDIS_WECAHT_PUBLIC_ACCESS_TOKEN_KEY); + if (exists) { + Object accessToken = redisUtil.get(WeChatConstants.REDIS_WECAHT_PUBLIC_ACCESS_TOKEN_KEY); + return accessToken.toString(); + } + String appId = systemConfigService.getValueByKey(WeChatConstants.WECHAT_PUBLIC_APPID); + if (StrUtil.isBlank(appId)) { + throw new CrmebException("微信公众号appId未设置"); + } + String secret = systemConfigService.getValueByKey(WeChatConstants.WECHAT_PUBLIC_APPSECRET); + if (StrUtil.isBlank(secret)) { + throw new CrmebException("微信公众号secret未设置"); + } + WeChatAccessTokenVo accessTokenVo = getAccessToken(appId, secret, "public"); + // 缓存accessToken + redisUtil.set(WeChatConstants.REDIS_WECAHT_PUBLIC_ACCESS_TOKEN_KEY, accessTokenVo.getAccessToken(), + accessTokenVo.getExpiresIn().longValue() - 1800L, TimeUnit.SECONDS); + return accessTokenVo.getAccessToken(); + } + + + /** + * 获取小程序accessToken + * @return accessToken + */ + @Override + public String getMiniAccessToken() { + boolean exists = redisUtil.exists(WeChatConstants.REDIS_WECAHT_MINI_ACCESS_TOKEN_KEY); + if (exists) { + Object accessToken = redisUtil.get(WeChatConstants.REDIS_WECAHT_MINI_ACCESS_TOKEN_KEY); + return accessToken.toString(); + } + String appId = systemConfigService.getValueByKey(WeChatConstants.WECHAT_MINI_APPID); + if (StrUtil.isBlank(appId)) { + throw new CrmebException("微信小程序appId未设置"); + } + String secret = systemConfigService.getValueByKey(WeChatConstants.WECHAT_MINI_APPSECRET); + if (StrUtil.isBlank(secret)) { + throw new CrmebException("微信小程序secret未设置"); + } + WeChatAccessTokenVo accessTokenVo = getAccessToken(appId, secret, "mini"); + // 缓存accessToken + redisUtil.set(WeChatConstants.REDIS_WECAHT_MINI_ACCESS_TOKEN_KEY, accessTokenVo.getAccessToken(), + accessTokenVo.getExpiresIn().longValue() - 1800L, TimeUnit.SECONDS); + return accessTokenVo.getAccessToken(); + } + + /** + * 获取开放平台access_token + * 通过 code 获取 + * 公众号使用 + * @return 开放平台accessToken对象 + */ + @Override + public WeChatOauthToken getOauth2AccessToken(String code) { + String appId = systemConfigService.getValueByKey(WeChatConstants.WECHAT_PUBLIC_APPID); + if (StrUtil.isBlank(appId)) { + throw new CrmebException("微信公众号appId未设置"); + } + String secret = systemConfigService.getValueByKey(WeChatConstants.WECHAT_PUBLIC_APPSECRET); + if (StrUtil.isBlank(secret)) { + throw new CrmebException("微信公众号secret未设置"); + } + String url = StrUtil.format(WeChatConstants.WECHAT_OAUTH2_ACCESS_TOKEN_URL, appId, secret, code); + JSONObject data = restTemplateUtil.getData(url); + if (ObjectUtil.isNull(data)) { + throw new CrmebException("微信平台接口异常,没任何数据返回!"); + } + if (data.containsKey("errcode") && !"0".equals(data.getString("errcode"))) { + if (data.containsKey("errmsg")) { + // 保存到微信异常表 + wxExceptionDispose(data, "微信获取开放平台access_token异常"); + throw new CrmebException("微信接口调用失败:" + data.getString("errcode") + data.getString("errmsg")); + } + } + return JSONObject.parseObject(data.toJSONString(), WeChatOauthToken.class); + } + + /** + * 获取开放平台用户信息 + * @param accessToken 调用凭证 + * @param openid 普通用户的标识,对当前开发者帐号唯一 + * 公众号使用 + * @return 开放平台用户信息对象 + */ + @Override + public WeChatAuthorizeLoginUserInfoVo getSnsUserInfo(String accessToken, String openid) { + String url = StrUtil.format(WeChatConstants.WECHAT_SNS_USERINFO_URL, accessToken, openid, "zh_CN"); + JSONObject data = restTemplateUtil.getData(url); + if (ObjectUtil.isNull(data)) { + throw new CrmebException("微信平台接口异常,没任何数据返回!"); + } + if (data.containsKey("errcode") && !"0".equals(data.getString("errcode"))) { + if (data.containsKey("errmsg")) { + // 保存到微信异常表 + wxExceptionDispose(data, "微信获取开放平台用户信息异常"); + throw new CrmebException("微信接口调用失败:" + data.getString("errcode") + data.getString("errmsg")); + } + } + return JSONObject.parseObject(data.toJSONString(), WeChatAuthorizeLoginUserInfoVo.class); + } + + /** + * 小程序登录凭证校验 + * @return 小程序登录校验对象 + */ + @Override + public WeChatMiniAuthorizeVo miniAuthCode(String code) { + String appId = systemConfigService.getValueByKey(WeChatConstants.WECHAT_MINI_APPID); + if (StrUtil.isBlank(appId)) { + throw new CrmebException("微信小程序appId未设置"); + } + String secret = systemConfigService.getValueByKey(WeChatConstants.WECHAT_MINI_APPSECRET); + if (StrUtil.isBlank(secret)) { + throw new CrmebException("微信小程序secret未设置"); + } + String url = StrUtil.format(WeChatConstants.WECHAT_MINI_SNS_AUTH_CODE2SESSION_URL, appId, secret, code); + JSONObject data = restTemplateUtil.getData(url); + if (ObjectUtil.isNull(data)) { + throw new CrmebException("微信平台接口异常,没任何数据返回!"); + } + if (data.containsKey("errcode") && !"0".equals(data.getString("errcode"))) { + if (data.containsKey("errmsg")) { + // 保存到微信异常表 + wxExceptionDispose(data, "微信小程序登录凭证校验异常"); + throw new CrmebException("微信接口调用失败:" + data.getString("errcode") + data.getString("errmsg")); + } + } + return JSONObject.parseObject(data.toJSONString(), WeChatMiniAuthorizeVo.class); + } + + /** + * 获取微信公众号js配置参数 + * @return WeChatJsSdkConfigResponse + */ + @Override + public WeChatJsSdkConfigResponse getJsSdkConfig(String url) { + try { + url = URLDecoder.decode(url, "UTF-8"); + } catch (UnsupportedEncodingException e) { + throw new CrmebException("url无法解析!"); + } + + String appId = systemConfigService.getValueByKey(WeChatConstants.WECHAT_PUBLIC_APPID); + if (StrUtil.isBlank(appId)) { + throw new CrmebException("微信公众号appId未设置"); + } + String ticket = getJsApiTicket(); + String nonceStr = CrmebUtil.getUuid(); + Long timestamp = DateUtil.currentSeconds(); + String signature = getJsSDKSignature(nonceStr, ticket, timestamp , url); + + WeChatJsSdkConfigResponse response = new WeChatJsSdkConfigResponse(); + response.setUrl(url); + response.setAppId(appId); + response.setNonceStr(nonceStr); + response.setTimestamp(timestamp); + response.setSignature(signature); + response.setJsApiList(CrmebUtil.stringToArrayStr(WeChatConstants.PUBLIC_API_JS_API_SDK_LIST)); + response.setDebug(crmebConfig.isWechatJsApiDebug()); + return response; + } + + /** + * 生成小程序码 + * @param page 必须是已经发布的小程序存在的页面 + * @param scene 最大32个可见字符,只支持数字,大小写英文以及部分特殊字符:!#$&'()*+,/:;=?@-._~,其它字符请自行编码为合法字符 + * @return 小程序码 + */ + @Override + public String createQrCode(String page, String scene) { + String miniAccessToken = getMiniAccessToken(); + String url = StrUtil.format(WeChatConstants.WECHAT_MINI_QRCODE_UNLIMITED_URL, miniAccessToken); + HashMap map = new HashMap<>(); + map.put("scene", scene); + map.put("page", page); + map.put("width", 200); + byte[] bytes = restTemplateUtil.postJsonDataAndReturnBuffer(url, new JSONObject(map)); + String response = new String(bytes); + if (StringUtils.contains(response,"errcode")) { + logger.error("微信生成小程序码异常"+response); + JSONObject data = JSONObject.parseObject(response); + // 保存到微信异常表 + wxExceptionDispose(data, "微信小程序生成小程序码异常"); + if ("40001".equals(data.getString("errcode"))) { + redisUtil.delete(WeChatConstants.REDIS_WECAHT_MINI_ACCESS_TOKEN_KEY); + miniAccessToken = getMiniAccessToken(); + url = StrUtil.format(WeChatConstants.WECHAT_MINI_QRCODE_UNLIMITED_URL, miniAccessToken); + bytes = restTemplateUtil.postJsonDataAndReturnBuffer(url, new JSONObject(map)); + response = new String(bytes); + if (StringUtils.contains(response,"errcode")) { + logger.error("微信生成小程序码重试异常"+response); + JSONObject data2 = JSONObject.parseObject(response); + // 保存到微信异常表 + wxExceptionDispose(data2, "微信小程序重试生成小程序码异常"); + } else { + try { + return CrmebUtil.getBase64Image(Base64.encodeBase64String(bytes)); + } catch (Exception e) { + e.printStackTrace(); + throw new CrmebException("微信小程序码转换Base64异常"); + } + } + } + throw new CrmebException("微信生成二维码异常"); + } + try { + return CrmebUtil.getBase64Image(Base64.encodeBase64String(bytes)); + } catch (Exception e) { + e.printStackTrace(); + throw new CrmebException("微信小程序码转换Base64异常"); + } + } + + /** + * 微信预下单接口(统一下单) + * @param unifiedorderVo 预下单请求对象 + * @return 微信预下单返回对象 + */ + @Override + public CreateOrderResponseVo payUnifiedorder(CreateOrderRequestVo unifiedorderVo) { + try { + String url = PayConstants.WX_PAY_API_URL + PayConstants.WX_PAY_API_URI; + String request = XmlUtil.objectToXml(unifiedorderVo); + String xml = restTemplateUtil.postXml(url, request); + HashMap map = XmlUtil.xmlToMap(xml); + if (null == map) { + throw new CrmebException("微信下单失败!"); + } + // 保存微信预下单 + WechatPayInfo wechatPayInfo = createWechatPayInfo(unifiedorderVo); + + CreateOrderResponseVo responseVo = CrmebUtil.mapToObj(map, CreateOrderResponseVo.class); + if ("FAIL".equals(responseVo.getReturnCode().toUpperCase())) { + // 保存到微信异常表 + wxPayExceptionDispose(map, "微信支付预下单异常"); + wechatPayInfo.setErrCode(map.get("return_code").toString()); + wechatPayInfoService.save(wechatPayInfo); + throw new CrmebException("微信下单失败1!" + responseVo.getReturnMsg()); + } + + if ("FAIL".equals(responseVo.getResultCode().toUpperCase())) { + wxPayExceptionDispose(map, "微信支付预下单业务异常"); + wechatPayInfo.setErrCode(map.get("err_code").toString()); + wechatPayInfoService.save(wechatPayInfo); + throw new CrmebException("微信下单失败2!" + responseVo.getErrCodeDes()); + } + wechatPayInfo.setErrCode("200"); + wechatPayInfo.setPrepayId(responseVo.getPrepayId()); + wechatPayInfoService.save(wechatPayInfo); + responseVo.setExtra(unifiedorderVo.getScene_info()); + return responseVo; + } catch (Exception e) { + e.printStackTrace(); + throw new CrmebException(e.getMessage()); + } + } + + /** + * 生成微信订单表对象 + * @param vo 预下单数据 + * @return WechatPayInfo + */ + private WechatPayInfo createWechatPayInfo(CreateOrderRequestVo vo) { + WechatPayInfo payInfo = new WechatPayInfo(); + payInfo.setAppId(vo.getAppid()); + payInfo.setMchId(vo.getMch_id()); + payInfo.setDeviceInfo(vo.getDevice_info()); + payInfo.setOpenId(vo.getOpenid()); + payInfo.setNonceStr(vo.getNonce_str()); + payInfo.setSign(vo.getSign()); + payInfo.setSignType(vo.getSign_type()); + payInfo.setBody(vo.getBody()); + payInfo.setDetail(vo.getDetail()); + payInfo.setAttach(vo.getAttach()); + payInfo.setOutTradeNo(vo.getOut_trade_no()); + payInfo.setFeeType(vo.getFee_type()); + payInfo.setTotalFee(vo.getTotal_fee()); + payInfo.setSpbillCreateIp(vo.getSpbill_create_ip()); + payInfo.setTimeStart(vo.getTime_start()); + payInfo.setTimeExpire(vo.getTime_expire()); + payInfo.setNotifyUrl(vo.getNotify_url()); + payInfo.setTradeType(vo.getTrade_type()); + payInfo.setProductId(vo.getProduct_id()); + payInfo.setSceneInfo(vo.getScene_info()); + return payInfo; + } + + /** + * 微信支付查询订单 + * @return 支付订单查询结果 + */ + @Override + public MyRecord payOrderQuery(Map payVo) { + String url = PayConstants.WX_PAY_API_URL + PayConstants.WX_PAY_ORDER_QUERY_API_URI; + try { + String request = XmlUtil.mapToXml(payVo); + String xml = restTemplateUtil.postXml(url, request); + HashMap map = XmlUtil.xmlToMap(xml); + MyRecord record = new MyRecord(); + if (null == map) { + throw new CrmebException("微信订单查询失败!"); + } + record.setColums(map); + if ("FAIL".equals(record.getStr("return_code").toUpperCase())) { + wxPayQueryExceptionDispose(record, "微信支付查询订单通信异常"); + throw new CrmebException("微信订单查询失败1!" + record.getStr("return_msg")); + } + + if ("FAIL".equals(record.getStr("result_code").toUpperCase())) { + wxPayQueryExceptionDispose(record, "微信支付查询订单结果异常"); + throw new CrmebException("微信订单查询失败2!" + record.getStr("err_code") + record.getStr("err_code_des")); + } + if (!"SUCCESS".equals(record.getStr("trade_state").toUpperCase())) { + wxPayQueryExceptionDispose(record, "微信支付查询订单状态异常"); + throw new CrmebException("微信订单支付失败3!" + record.getStr("trade_state")); + } + + return record; + } catch (Exception e) { + e.printStackTrace(); + throw new CrmebException("查询微信订单mapToXml异常===》" + e.getMessage()); + } + } + + /** + * 微信公众号发送模板消息 + * @param templateMessage 模板消息对象 + * @return 是否发送成功 + */ + @Override + public Boolean sendPublicTemplateMessage(TemplateMessageVo templateMessage) { + String accessToken = getPublicAccessToken(); + String url = StrUtil.format(WeChatConstants.WECHAT_PUBLIC_SEND_TEMPLATE_URL, accessToken); + JSONObject jsonData = JSONObject.parseObject(JSONObject.toJSONString(templateMessage)); + String result = restTemplateUtil.postJsonData(url, jsonData); + JSONObject data = JSONObject.parseObject(result); + if (ObjectUtil.isNull(data)) { + throw new CrmebException("微信平台接口异常,没任何数据返回!"); + } + if (data.containsKey("errcode") && !"0".equals(data.getString("errcode"))) { + if (data.containsKey("errmsg")) { + wxExceptionDispose(data, "微信公众号发送模板消息异常"); + throw new CrmebException("微信接口调用失败:" + data.getString("errcode") + data.getString("errmsg")); + } + } + return Boolean.TRUE; + } + + /** + * 微信小程序发送订阅消息 + * @param templateMessage 消息对象 + * @return 是否发送成功 + */ + @Override + public Boolean sendMiniSubscribeMessage(TemplateMessageVo templateMessage) { + String accessToken = getMiniAccessToken(); + String url = StrUtil.format(WeChatConstants.WECHAT_MINI_SEND_SUBSCRIBE_URL, accessToken); + JSONObject messAge = JSONObject.parseObject(JSONObject.toJSONString(templateMessage)); + String result = restTemplateUtil.postJsonData(url, messAge); + JSONObject data = JSONObject.parseObject(result); + if (ObjectUtil.isNull(data)) { + throw new CrmebException("微信平台接口异常,没任何数据返回!"); + } + if (data.containsKey("errcode") && !"0".equals(data.getString("errcode"))) { + if ("40001".equals(data.getString("errcode"))) { + wxExceptionDispose(data, "微信小程序发送订阅消息异常"); + redisUtil.delete(WeChatConstants.REDIS_WECAHT_MINI_ACCESS_TOKEN_KEY); + accessToken = getMiniAccessToken(); + url = StrUtil.format(WeChatConstants.WECHAT_MINI_SEND_SUBSCRIBE_URL, accessToken); + result = restTemplateUtil.postJsonData(url, messAge); + JSONObject data2 = JSONObject.parseObject(result); + if (data2.containsKey("errcode") && !"0".equals(data2.getString("errcode"))) { + if (data2.containsKey("errmsg")) { + wxExceptionDispose(data2, "微信小程序发送订阅消息重试异常"); + throw new CrmebException("微信接口调用失败:" + data2.getString("errcode") + data2.getString("errmsg")); + } + } else { + return Boolean.TRUE; + } + } + if (data.containsKey("errmsg")) { + wxExceptionDispose(data, "微信小程序发送订阅消息异常"); + throw new CrmebException("微信接口调用失败:" + data.getString("errcode") + data.getString("errmsg")); + } + } + return Boolean.TRUE; + } + + /** + * 获取微信公众号自定义菜单配置 + * (使用本自定义菜单查询接口可以获取默认菜单和全部个性化菜单信息) + * @return 公众号自定义菜单 + */ + @Override + public JSONObject getPublicCustomMenu() { + String accessToken = getPublicAccessToken(); + String url = StrUtil.format(WeChatConstants.WECHAT_PUBLIC_MENU_GET_URL, accessToken); + JSONObject result = restTemplateUtil.getData(url); + if (ObjectUtil.isNull(result)) { + throw new CrmebException("微信平台接口异常,没任何数据返回!"); + } + if (result.containsKey("errcode") && "0".equals(result.getString("errcode"))) { + return result; + } + if (result.containsKey("errmsg")) { + wxExceptionDispose(result, "微信公众号获取自定义菜单配置异常"); + throw new CrmebException("微信接口调用失败:" + result.getString("errcode") + result.getString("errmsg")); + } + return result; + } + + /** + * 创建微信自定义菜单 + * @param data 菜单json字符串 + * @return 创建结果 + */ + @Override + public Boolean createPublicCustomMenu(String data) { + String accessToken = getPublicAccessToken(); + String url = StrUtil.format(WeChatConstants.WECHAT_PUBLIC_MENU_CREATE_URL, accessToken); + String result = restTemplateUtil.postJsonData(url, JSONObject.parseObject(data)); + logger.info("微信消息发送结果:" + result); + JSONObject jsonObject = JSONObject.parseObject(result); + if (ObjectUtil.isNull(jsonObject)) { + throw new CrmebException("微信平台接口异常,没任何数据返回!"); + } + if (jsonObject.containsKey("errcode") && "0".equals(jsonObject.getString("errcode"))) { + return Boolean.TRUE; + } + if (jsonObject.containsKey("errmsg")) { + wxExceptionDispose(jsonObject, "微信公众号创建自定义菜单异常"); + throw new CrmebException("微信接口调用失败:" + jsonObject.getString("errcode") + jsonObject.getString("errmsg")); + } + return Boolean.TRUE; + } + + /** + * 删除微信自定义菜单 + * @return 删除结果 + */ + @Override + public Boolean deletePublicCustomMenu() { + String accessToken = getPublicAccessToken(); + String url = StrUtil.format(WeChatConstants.WECHAT_PUBLIC_MENU_DELETE_URL, accessToken); + JSONObject result = restTemplateUtil.getData(url); + if (ObjectUtil.isNull(result)) { + throw new CrmebException("微信平台接口异常,没任何数据返回!"); + } + if (result.containsKey("errcode") && "0".equals(result.getString("errcode"))) { + return Boolean.TRUE; + } + if (result.containsKey("errmsg")) { + wxExceptionDispose(result, "微信公众号删除自定义菜单异常"); + throw new CrmebException("微信接口调用失败:" + result.getString("errcode") + result.getString("errmsg")); + } + return Boolean.TRUE; + } + + /** + * 企业号上传其他类型永久素材 + * 获取url + * @param type 素材类型:图片(image)、语音(voice)、视频(video),普通文件(file) + */ + @Override + public String qyapiAddMaterialUrl(String type) { + String accessToken = getPublicAccessToken(); + return StrUtil.format(WeChatConstants.WECHAT_PUBLIC_QYAPI_ADD_MATERIAL_URL, type, accessToken); + } + + /** + * 微信申请退款 + * @param wxRefundVo 微信申请退款对象 + * @param path 商户p12证书绝对路径 + * @return 申请退款结果对象 + */ + @Override + public WxRefundResponseVo payRefund(WxRefundVo wxRefundVo, String path) { + String xmlStr = XmlUtil.objectToXml(wxRefundVo); + String url = WeChatConstants.PAY_API_URL + WeChatConstants.PAY_REFUND_API_URI_WECHAT; + HashMap map = CollUtil.newHashMap(); + String xml = ""; + try { + xml = restTemplateUtil.postWXRefundXml(url, xmlStr, wxRefundVo.getMch_id(), path); + map = XmlUtil.xmlToMap(xml); + } catch (Exception e) { + e.printStackTrace(); + throw new CrmebException("xmlToMap错误,xml = " + xml); + } + if (null == map) { + throw new CrmebException("微信无信息返回,微信申请退款失败!"); + } + + WxRefundResponseVo responseVo = CrmebUtil.mapToObj(map, WxRefundResponseVo.class); + if ("FAIL".equals(responseVo.getReturnCode().toUpperCase())) { + wxPayExceptionDispose(map, "微信申请退款异常1"); + throw new CrmebException("微信申请退款失败1!" + responseVo.getReturnMsg()); + } + + if ("FAIL".equals(responseVo.getResultCode().toUpperCase())) { + wxPayExceptionDispose(map, "微信申请退款业务异常"); + throw new CrmebException("微信申请退款失败2!" + responseVo.getErrCodeDes()); + } + System.out.println("================微信申请退款结束========================="); + return responseVo; + } + + /** + * 获取我的公众号模板消息列表 + * @return List + */ + @Override + public List getPublicMyTemplateList() { + String accessToken = getPublicAccessToken(); + String url = StrUtil.format(WeChatConstants.WECHAT_PUBLIC_GET_ALL_PRIVATE_TEMPLATE_URL, accessToken); + JSONObject jsonObject = restTemplateUtil.getData(url); + if (ObjectUtil.isNull(jsonObject)) { + throw new CrmebException("微信平台接口异常,没任何数据返回!"); + } + if (jsonObject.containsKey("errcode") && !"0".equals(jsonObject.getString("errcode"))) { + if (jsonObject.containsKey("errmsg")) { + // 保存到微信异常表 + wxExceptionDispose(jsonObject, StrUtil.format("获取我的公众号模板消息列表异常")); + throw new CrmebException("微信接口调用失败:" + jsonObject.getString("errcode") + jsonObject.getString("errmsg")); + } + } + JSONArray templateList = jsonObject.getJSONArray("template_list"); + List voList = templateList.toJavaList(PublicMyTemplateVo.class); + return voList; + } + + /** + * 删除微信公众号模板消息 + * @param templateId 模板编号 + * @return Boolean + */ + @Override + public Boolean delPublicMyTemplate(String templateId) { + String accessToken = getPublicAccessToken(); + String url = StrUtil.format(WeChatConstants.WECHAT_PUBLIC_DEL_PRIVATE_TEMPLATE_URL, accessToken); + HashMap map = new HashMap<>(); + map.put("template_id", templateId); + JSONObject jsonData = JSONObject.parseObject(JSONObject.toJSONString(map)); + String result = restTemplateUtil.postJsonData(url, jsonData); + JSONObject data = JSONObject.parseObject(result); + if (ObjectUtil.isNull(data)) { + throw new CrmebException("微信平台接口异常,没任何数据返回!"); + } + if (data.containsKey("errcode") && !"0".equals(data.getString("errcode"))) { + if (data.containsKey("errmsg")) { + wxExceptionDispose(data, "删除微信公众号模板消息异常"); + throw new CrmebException("微信接口调用失败:" + data.getString("errcode") + data.getString("errmsg")); + } + } + return Boolean.TRUE; + } + + /** + * 添加公众号模板消息 + * @param templateIdShort 模板库中模板的编号,有“TM**”和“OPENTMTM**”等形式 + * @return 公众号模板编号(自己的) + */ + @Override + public String apiAddPublicTemplate(String templateIdShort) { + String accessToken = getPublicAccessToken(); + String url = StrUtil.format(WeChatConstants.WECHAT_PUBLIC_API_ADD_TEMPLATE_URL, accessToken); + HashMap map = new HashMap<>(); + map.put("template_id_short", templateIdShort); + JSONObject jsonData = JSONObject.parseObject(JSONObject.toJSONString(map)); + String result = restTemplateUtil.postJsonData(url, jsonData); + JSONObject data = JSONObject.parseObject(result); + if (ObjectUtil.isNull(data)) { + throw new CrmebException("微信平台接口异常,没任何数据返回!"); + } + if (data.containsKey("errcode") && !"0".equals(data.getString("errcode"))) { + if (data.containsKey("errmsg")) { + wxExceptionDispose(data, "添加公众号模板消息异常"); + throw new CrmebException("微信接口调用失败:" + data.getString("errcode") + data.getString("errmsg")); + } + } + return data.getString("template_id"); + } + + /** + * 获取当前帐号下的个人模板列表 + * @return List + */ + @Override + public List getRoutineMyTemplateList() { + String accessToken = getMiniAccessToken(); + String url = StrUtil.format(WeChatConstants.WECHAT_MINI_GET_ALL_PRIVATE_TEMPLATE_URL, accessToken); + JSONObject jsonObject = restTemplateUtil.getData(url); + if (ObjectUtil.isNull(jsonObject)) { + throw new CrmebException("微信平台接口异常,没任何数据返回!"); + } + if (jsonObject.containsKey("errcode") && !"0".equals(jsonObject.getString("errcode"))) { + if (jsonObject.containsKey("errmsg")) { + // 保存到微信异常表 + wxExceptionDispose(jsonObject, StrUtil.format("获取小程序当前帐号下的个人模板列表异常")); + throw new CrmebException("微信接口调用失败:" + jsonObject.getString("errcode") + jsonObject.getString("errmsg")); + } + } + JSONArray templateList = jsonObject.getJSONArray("data"); + List voList = templateList.toJavaList(RoutineMyTemplateVo.class); + return voList; + } + + /** + * 删除微信小程序订阅消息 + * @return Boolean + */ + @Override + public Boolean delRoutineMyTemplate(String priTmplId) { + String accessToken = getMiniAccessToken(); + String url = StrUtil.format(WeChatConstants.WECHAT_MINI_DEL_PRIVATE_TEMPLATE_URL, accessToken); + HashMap map = new HashMap<>(); + map.put("priTmplId", priTmplId); + JSONObject jsonData = JSONObject.parseObject(JSONObject.toJSONString(map)); + String result = restTemplateUtil.postJsonData(url, jsonData); + JSONObject data = JSONObject.parseObject(result); + if (ObjectUtil.isNull(data)) { + throw new CrmebException("微信平台接口异常,没任何数据返回!"); + } + if (data.containsKey("errcode") && !"0".equals(data.getString("errcode"))) { + if (data.containsKey("errmsg")) { + wxExceptionDispose(data, "删除微信小程序订阅消息异常"); + throw new CrmebException("微信接口调用失败:" + data.getString("errcode") + data.getString("errmsg")); + } + } + return Boolean.TRUE; + } + + /** + * 获取小程序平台上的标准模板 + * @param tempKey 模板编号 + * @return List + */ + @Override + public List getRoutineTemplateByWechat(String tempKey) { + String accessToken = getMiniAccessToken(); + String url = StrUtil.format(WeChatConstants.WECHAT_MINI_GET_TEMPLATE_URL, accessToken, tempKey); + JSONObject jsonObject = restTemplateUtil.getData(url); + if (ObjectUtil.isNull(jsonObject)) { + throw new CrmebException("微信平台接口异常,没任何数据返回!"); + } + if (jsonObject.containsKey("errcode") && !"0".equals(jsonObject.getString("errcode"))) { + if (jsonObject.containsKey("errmsg")) { + // 保存到微信异常表 + wxExceptionDispose(jsonObject, "获取小程序平台上的标准模板异常"); + throw new CrmebException("微信接口调用失败:" + jsonObject.getString("errcode") + jsonObject.getString("errmsg")); + } + } + JSONArray templateList = jsonObject.getJSONArray("data"); + List voList = templateList.toJavaList(RoutineTemplateKeyVo.class); + return voList; + } + + /** + * 添加小程序订阅消息 + * @param tempKey 模板编号 + * @param kidList 小程序订阅消息模板kid数组 + * @return 小程序订阅消息模板编号(自己的) + */ + @Override + public String apiAddRoutineTemplate(String tempKey, List kidList) { + String accessToken = getMiniAccessToken(); + String url = StrUtil.format(WeChatConstants.WECHAT_MINI_API_ADD_TEMPLATE_URL, accessToken); + HashMap map = new HashMap<>(); + map.put("tid", tempKey); + map.put("kidList", kidList); + map.put("sceneDesc", "接口添加"); + JSONObject jsonData = JSONObject.parseObject(JSONObject.toJSONString(map)); + String result = restTemplateUtil.postJsonData(url, jsonData); + JSONObject data = JSONObject.parseObject(result); + if (ObjectUtil.isNull(data)) { + throw new CrmebException("微信平台接口异常,没任何数据返回!"); + } + if (data.containsKey("errcode") && !"0".equals(data.getString("errcode"))) { + if (data.containsKey("errmsg")) { + wxExceptionDispose(data, "添加小程序订阅消息异常"); + throw new CrmebException("微信接口调用失败:" + data.getString("errcode") + data.getString("errmsg")); + } + } + return data.getString("priTmplId"); + } + + /** + * 获取JS-SDK的签名 + * @param nonceStr 随机字符串 + * @param ticket ticket + * @param timestamp 时间戳 + * @param url url + * @return 签名 + */ + private String getJsSDKSignature(String nonceStr, String ticket, Long timestamp, String url) { + //注意这里参数名必须全部小写,且必须有序 + String paramString = StrUtil.format("jsapi_ticket={}&noncestr={}×tamp={}&url={}", ticket, nonceStr, timestamp, url); + return SecureUtil.sha1(paramString); + } + + /** + * 获取JS-SDK的ticket + * 用于计算签名 + * @return ticket + */ + private String getJsApiTicket() { + boolean exists = redisUtil.exists(WeChatConstants.REDIS_PUBLIC_JS_API_TICKET); + if (exists) { + Object ticket = redisUtil.get(WeChatConstants.REDIS_PUBLIC_JS_API_TICKET); + return ticket.toString(); + } + String accessToken = getPublicAccessToken(); + String url = StrUtil.format(WeChatConstants.WECHAT_PUBLIC_JS_TICKET_URL, accessToken); + JSONObject data = restTemplateUtil.getData(url); + if (ObjectUtil.isNull(data)) { + throw new CrmebException("微信平台接口异常,没任何数据返回!"); + } + if (data.containsKey("errcode") && !"0".equals(data.getString("errcode"))) { + if (data.containsKey("errmsg")) { + // 保存到微信异常表 + wxExceptionDispose(data, "微信获取JS-SDK的ticket异常"); + throw new CrmebException("微信接口调用失败:" + data.getString("errcode") + data.getString("errmsg")); + } + } + String ticket = data.getString("ticket"); + redisUtil.set(WeChatConstants.REDIS_PUBLIC_JS_API_TICKET, ticket, WeChatConstants.REDIS_PUBLIC_JS_API_TICKET_EXPRESS, TimeUnit.SECONDS); + return ticket; + } + + /** + * 获取微信accessToken + * @param appId appId + * @param secret secret + * @param type mini-小程序,public-公众号,app-app + * @return WeChatAccessTokenVo + */ + private WeChatAccessTokenVo getAccessToken(String appId, String secret, String type) { + String url = StrUtil.format(WeChatConstants.WECHAT_ACCESS_TOKEN_URL, appId, secret); + JSONObject data = restTemplateUtil.getData(url); + if (ObjectUtil.isNull(data)) { + throw new CrmebException("微信平台接口异常,没任何数据返回!"); + } + if (data.containsKey("errcode") && !"0".equals(data.getString("errcode"))) { + if (data.containsKey("errmsg")) { + // 保存到微信异常表 + wxExceptionDispose(data, StrUtil.format("微信获取accessToken异常,{}端", type)); + throw new CrmebException("微信接口调用失败:" + data.getString("errcode") + data.getString("errmsg")); + } + } + return JSONObject.parseObject(data.toJSONString(), WeChatAccessTokenVo.class); + } + + /** + * 微信异常处理 + * @param jsonObject 微信返回数据 + * @param remark 备注 + */ + private void wxExceptionDispose(JSONObject jsonObject, String remark) { + WechatExceptions wechatExceptions = new WechatExceptions(); + wechatExceptions.setErrcode(jsonObject.getString("errcode")); + wechatExceptions.setErrmsg(StrUtil.isNotBlank(jsonObject.getString("errmsg")) ? jsonObject.getString("errmsg") : ""); + wechatExceptions.setData(jsonObject.toJSONString()); + wechatExceptions.setRemark(remark); + wechatExceptions.setCreateTime(DateUtil.date()); + wechatExceptions.setUpdateTime(DateUtil.date()); + wechatExceptionsService.save(wechatExceptions); + } + + /** + * 微信支付异常处理 + * @param map 微信返回数据 + * @param remark 备注 + */ + private void wxPayExceptionDispose(HashMap map, String remark) { + WechatExceptions wechatExceptions = new WechatExceptions(); + String returnCode = (String) map.get("return_code"); + if ("FAIL".equals(returnCode.toUpperCase())) { + wechatExceptions.setErrcode("-100"); + wechatExceptions.setErrmsg(map.get("return_msg").toString()); + } else { + wechatExceptions.setErrcode(map.get("err_code").toString()); + wechatExceptions.setErrmsg(map.get("err_code_des").toString()); + } + wechatExceptions.setData(JSONObject.toJSONString(map)); + wechatExceptions.setRemark(remark); + wechatExceptions.setCreateTime(DateUtil.date()); + wechatExceptions.setUpdateTime(DateUtil.date()); + wechatExceptionsService.save(wechatExceptions); + } + + /** + * 微信支付查询异常处理 + * @param record 微信返回数据 + * @param remark 备注 + */ + private void wxPayQueryExceptionDispose(MyRecord record, String remark) { + WechatExceptions wechatExceptions = new WechatExceptions(); + if ("FAIL".equals(record.getStr("return_code").toUpperCase())) { + wechatExceptions.setErrcode("-200"); + wechatExceptions.setErrmsg(record.getStr("return_msg")); + } else if ("FAIL".equals(record.getStr("result_code").toUpperCase())) { + wechatExceptions.setErrcode(record.getStr("err_code")); + wechatExceptions.setErrmsg(record.getStr("err_code_des")); + } else if (!"SUCCESS".equals(record.getStr("trade_state").toUpperCase())) { + wechatExceptions.setErrcode("-201"); + wechatExceptions.setErrmsg(record.getStr("trade_state")); + } + wechatExceptions.setData(JSONObject.toJSONString(record.getColumns())); + wechatExceptions.setRemark(remark); + wechatExceptions.setCreateTime(DateUtil.date()); + wechatExceptions.setUpdateTime(DateUtil.date()); + wechatExceptionsService.save(wechatExceptions); + } + +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/WechatPayInfoServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/WechatPayInfoServiceImpl.java new file mode 100644 index 0000000..5563c4b --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/WechatPayInfoServiceImpl.java @@ -0,0 +1,43 @@ +package com.zbkj.service.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.model.wechat.WechatPayInfo; +import com.zbkj.service.dao.WechatPayInfoDao; +import com.zbkj.service.service.WechatPayInfoService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * WechatPayInfoServiceImpl 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class WechatPayInfoServiceImpl extends ServiceImpl implements WechatPayInfoService { + + @Resource + private WechatPayInfoDao dao; + + /** + * 获取详情(商户订单号) + * @param outTradeNo 商户订单号 + * @return WechatPayInfo + */ + @Override + public WechatPayInfo getByNo(String outTradeNo) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(WechatPayInfo::getOutTradeNo, outTradeNo); + return dao.selectOne(lqw); + } +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/WechatPublicServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/WechatPublicServiceImpl.java new file mode 100644 index 0000000..51f7b7f --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/WechatPublicServiceImpl.java @@ -0,0 +1,82 @@ +package com.zbkj.service.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.zbkj.common.constants.WeChatConstants; +import com.zbkj.common.utils.RedisUtil; +import com.zbkj.service.service.WechatNewService; +import com.zbkj.service.service.WechatPublicService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * 微信公众号Service实现类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class WechatPublicServiceImpl implements WechatPublicService { + + @Autowired + private RedisUtil redisUtil; + + @Autowired + private WechatNewService wechatNewService; + + /** + * 获取公众号自定义菜单 + * @return Object + */ + @Override + public Object getCustomizeMenus() { + Object list = redisUtil.get(WeChatConstants.REDIS_PUBLIC_MENU_KEY); + if (list == null || "".equals(list)) { + //如果没有, 去读取 + JSONObject tagsList = wechatNewService.getPublicCustomMenu(); + redisUtil.set(WeChatConstants.REDIS_PUBLIC_MENU_KEY, tagsList); + list = tagsList; + } + return list; + } + + /** + * 保存自定义菜单 + * @param data 菜单json + * @return Boolean + */ + @Override + public Boolean createMenus(String data) { + Boolean create = wechatNewService.createPublicCustomMenu(data); + if (!create) { + return create; + } + // 清除历史缓存 + if (redisUtil.exists(WeChatConstants.REDIS_PUBLIC_MENU_KEY)) { + redisUtil.delete(WeChatConstants.REDIS_PUBLIC_MENU_KEY); + } + return create; + } + + /** + * 删除自定义菜单 + * @return Boolean + */ + @Override + public Boolean deleteMenus() { + Boolean delete = wechatNewService.deletePublicCustomMenu(); + if (!delete) { + return delete; + } + // 清除历史缓存 + if (redisUtil.exists(WeChatConstants.REDIS_PUBLIC_MENU_KEY)) { + redisUtil.delete(WeChatConstants.REDIS_PUBLIC_MENU_KEY); + } + return delete; + } +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/WechatReplyServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/WechatReplyServiceImpl.java new file mode 100644 index 0000000..6cc472a --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/WechatReplyServiceImpl.java @@ -0,0 +1,164 @@ +package com.zbkj.service.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.exception.CrmebException; +import com.github.pagehelper.PageHelper; +import com.zbkj.common.model.wechat.WechatReply; +import com.zbkj.common.request.WechatReplyRequest; +import com.zbkj.common.request.WechatReplySearchRequest; +import com.zbkj.service.dao.WechatReplyDao; +import com.zbkj.service.service.SystemAttachmentService; +import com.zbkj.service.service.WechatReplyService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * WechatReplyServiceImpl 接口实现 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class WechatReplyServiceImpl extends ServiceImpl implements WechatReplyService { + + @Resource + private WechatReplyDao dao; + + @Autowired + private SystemAttachmentService systemAttachmentService; + + + /** + * 列表 + * @param request 请求参数 + * @param pageParamRequest 分页类参数 + * @return List + */ + @Override + public List getList(WechatReplySearchRequest request, PageParamRequest pageParamRequest) { + PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + //类型 + if (StringUtils.isNotBlank(request.getType())) { + lambdaQueryWrapper.eq(WechatReply::getType, request.getType()); + } + //关键字 + if (StringUtils.isNotBlank(request.getKeywords())) { + lambdaQueryWrapper.eq(WechatReply::getKeywords, request.getKeywords()); + } + lambdaQueryWrapper.orderByDesc(WechatReply::getId); + return dao.selectList(lambdaQueryWrapper); + } + + /** + * 新增微信关键字回复表 + * @param wechatReply 新增参数 + */ + @Override + public Boolean create(WechatReply wechatReply) { + //检测重复 + WechatReply voByKeywords = getVoByKeywords(wechatReply.getKeywords()); + if (voByKeywords != null) { + throw new CrmebException(wechatReply.getKeywords() + "关键字已经存在"); + } + wechatReply.setData(systemAttachmentService.clearPrefix(wechatReply.getData())); + return save(wechatReply); + } + + /** + * 修改微信关键字回复表 + * @param wechatReply 修改参数 + */ + private Boolean updateVo(WechatReply wechatReply) { + //检测重复 + WechatReply voByKeywords = getVoByKeywords(wechatReply.getKeywords()); + + if (voByKeywords != null && !wechatReply.getId().equals(voByKeywords.getId())) { + throw new CrmebException(wechatReply.getKeywords() + "关键字已经存在"); + } + + wechatReply.setData(systemAttachmentService.clearPrefix(wechatReply.getData())); + return updateById(wechatReply); + } + + + /** + * 根据关键字查询数据 + * @param keywords 新增参数 + * @return WechatReply + */ + @Override + public WechatReply getVoByKeywords(String keywords) { + //检测重复 + LambdaQueryWrapper objectLambdaQueryWrapper = new LambdaQueryWrapper<>(); + objectLambdaQueryWrapper.eq(WechatReply::getKeywords, keywords); + return dao.selectOne(objectLambdaQueryWrapper); + } + + /** + * 根据关键字查询数据 + * @param id Integer id + * @return WechatReply + */ + private WechatReply getInfoException(Integer id, boolean isTrue) { + //检测重复 + WechatReply info = getInfo(id); + if (null == info) { + throw new CrmebException("没有找到相关数据"); + } + + if (!info.getStatus() && isTrue) { + throw new CrmebException("没有找到相关数据"); + } + + return info; + } + + /** + * 根据关键字查询数据 + * @param id Integer id + * @return WechatReply + */ + @Override + public WechatReply getInfo(Integer id) { + return getById(id); + } + + /** + * 修改微信关键字回复表 + * @param wechatReplyRequest 修改参数 + */ + @Override + public Boolean updateReply(WechatReplyRequest wechatReplyRequest) { + WechatReply wechatReply = getInfoException(wechatReplyRequest.getId(), false); + BeanUtils.copyProperties(wechatReplyRequest, wechatReply); + return updateVo(wechatReply); + } + + /** + * 修改状态 + * @param id integer id + * @param status boolean 状态 + */ + @Override + public Boolean updateStatus(Integer id, Boolean status) { + WechatReply wechatReply = getInfoException(id, false); + wechatReply.setStatus(status); + return updateVo(wechatReply); + } + +} + diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/WechatUserServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/WechatUserServiceImpl.java new file mode 100644 index 0000000..3e26a48 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/WechatUserServiceImpl.java @@ -0,0 +1,92 @@ +package com.zbkj.service.service.impl; + +import com.zbkj.service.service.ArticleService; +import com.zbkj.service.service.UserTokenService; +import com.zbkj.service.service.WechatUserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * 微信用户表 服务实现类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class WechatUserServiceImpl implements WechatUserService { + @Autowired + private ArticleService articleService; + +// @Lazy +// @Autowired +// private WeChatService weChatService; + + @Autowired + private UserTokenService userTokenService; + + +// /** +// * 消息推送 +// * @param userId 用户id +// * @param newsId 图文消息id +// * @author Mr.Zhang +// * @since 2020-04-11 +// * @return Boolean +// */ +// @Override +// public void push(String userId, Integer newsId) { +// //检查文章是否存在 +// Article article = articleService.getById(newsId); +// if(article == null){ +// throw new CrmebException("你选择的文章不存在!"); +// } +// +//// { +//// "touser":"od9iXwsAl3c0e3POY39awOq0nnJ4", +//// "msgtype":"news", +//// "news":{ +//// "articles": [ +//// { +//// "title":"Happy Day", +//// "description":"Is Really A Happy Day", +//// "url":"http://front.java.crmeb.net:20002/articleManager", +//// "picurl":"https://wuht-1300909283.cos.ap-chengdu.myqcloud.com/image/wechat/2020/06/16/003b595d6cc544dd981d3468d5caafa38p24bq7sa7.jpg" +//// } +//// ] +//// } +//// } +// List userIdList = CrmebUtil.stringToArray(userId); +// List userList = userTokenService.getList(userIdList); +// if(null == userList){ +// throw new CrmebException("没有用户关注微信号"); +// } +// +// HashMap map = new HashMap<>(); +// map.put("msgtype", "news"); +// +// HashMap articleInfo = new HashMap<>(); +// ArrayList articleList = new ArrayList<>(); +// +// HashMap articleInfoItem = new HashMap<>(); +// +// for (UserToken userToken : userList) { +// map.put("touser", userToken.getToken()); +// +// articleInfoItem.put("title", article.getTitle()); +// articleInfoItem.put("description", article.getSynopsis()); +// articleInfoItem.put("url", article.getUrl()); //前端地址或者三方地址 +// articleInfoItem.put("picurl", article.getImageInput()); +// articleList.add(articleInfoItem); +// articleInfo.put("articles", articleList); +// map.put("news", articleInfo); +// weChatService.pushKfMessage(map); +// } +// } + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/YlyPrintServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/YlyPrintServiceImpl.java new file mode 100644 index 0000000..676cfbd --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/YlyPrintServiceImpl.java @@ -0,0 +1,108 @@ +package com.zbkj.service.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONObject; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.model.order.StoreOrder; +import com.zbkj.common.request.YlyPrintRequest; +import com.zbkj.common.request.YlyPrintRequestGoods; +import com.zbkj.common.vo.StoreOrderInfoOldVo; +import com.zbkj.service.service.StoreOrderInfoService; +import com.zbkj.service.service.StoreOrderService; +import com.zbkj.service.service.SystemConfigService; +import com.zbkj.service.service.YlyPrintService; +import com.zbkj.service.util.YlyUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + * 易联云打印订单 service + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Service +public class YlyPrintServiceImpl implements YlyPrintService { + private static final Logger logger = LoggerFactory.getLogger(YlyPrintServiceImpl.class); + @Autowired + private StoreOrderService storeOrderService; + + @Autowired + private StoreOrderInfoService storeOrderInfoService; + + @Autowired + private SystemConfigService systemConfigService; + + @Autowired + private YlyUtil ylyUtil; + /** + * 易联云打印商品信息 + * + * @param orderId 订单id + * @param isAuto 是否自动打印 + */ + @Override + public void YlyPrint(String orderId,boolean isAuto) { + if(ylyUtil.checkYlyPrintStatus()){ + throw new CrmebException("易联云 未开启打印"); + } + // 判断是否开启自动打印 + if(isAuto && ylyUtil.checkYlyPrintAfterPaySuccess()){ + return; + } + StoreOrder exitOrder = storeOrderService.getByOderId(orderId); + if(ObjectUtil.isNull(exitOrder)){ + throw new CrmebException("易联云 打印时未找到 订单信息"); + } + if(!exitOrder.getPaid()){ + throw new CrmebException("易联云 打印时出错, 订单未支付"); + } + List exitOrderInfo = storeOrderInfoService.getOrderListByOrderId(exitOrder.getId()); + List goods = new ArrayList<>(); + for (StoreOrderInfoOldVo storeOrderInfo : exitOrderInfo) { + goods.add(new YlyPrintRequestGoods(storeOrderInfo.getInfo().getProductName() + ,storeOrderInfo.getInfo().getPrice().toString(), + storeOrderInfo.getInfo().getPayNum()+"", + exitOrder.getPayPrice().toString())); + } + + YlyPrintRequest ylyPrintRequest = new YlyPrintRequest(); + ylyPrintRequest.setBusinessName(systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_SITE_NAME)); + ylyPrintRequest.setOrderNo(exitOrder.getOrderId()); + ylyPrintRequest.setDate(DateUtil.format(exitOrder.getPayTime(), Constants.DATE_FORMAT)); + ylyPrintRequest.setName(exitOrder.getRealName()); + ylyPrintRequest.setPhone(exitOrder.getUserPhone()); + ylyPrintRequest.setAddress(exitOrder.getUserAddress()); + ylyPrintRequest.setNote(exitOrder.getMark()); + + ylyPrintRequest.setGoods(goods); + ylyPrintRequest.setAmount(exitOrder.getProTotalPrice().toString()); + ylyPrintRequest.setDiscount(exitOrder.getDeductionPrice().toString()); + ylyPrintRequest.setPostal(exitOrder.getPayPostage().toString()); + ylyPrintRequest.setDeduction(exitOrder.getCouponPrice().toString()); + ylyPrintRequest.setPayMoney(exitOrder.getPayPrice().toString()); + + try { + ylyUtil.ylyPrint(ylyPrintRequest); + logger.info("易联云打印小票成功" + JSONObject.toJSONString(ylyPrintRequest)); + } catch (Exception e) { + e.printStackTrace(); + logger.error("易联云打印小票失败 " + e.getMessage()); + } + } + + +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/util/OnePassUtil.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/util/OnePassUtil.java new file mode 100644 index 0000000..671b210 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/util/OnePassUtil.java @@ -0,0 +1,180 @@ +package com.zbkj.service.util; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.crypto.SecureUtil; +import com.alibaba.fastjson.JSONObject; +import com.zbkj.common.constants.OnePassConstants; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.utils.DateUtil; +import com.zbkj.common.utils.RedisUtil; +import com.zbkj.common.utils.RestTemplateUtil; +import com.zbkj.common.vo.OnePassLoginVo; +import com.zbkj.service.service.SystemConfigService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; + +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.TimeUnit; + +/** + * 一号通工具类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +@Component +public class OnePassUtil { + + @Autowired + private SystemConfigService systemConfigService; + @Autowired + private RestTemplateUtil restTemplateUtil; + @Autowired + private RedisUtil redisUtil; + + /** + * 获取一号通登录对象 + * + * @return + */ + public OnePassLoginVo getLoginVo() { + String account = systemConfigService.getValueByKey("sms_account");// 获取配置账号 + if (StrUtil.isBlank(account)) { + throw new CrmebException("请配置一号通账号!"); + } + String token = systemConfigService.getValueByKey("sms_token"); //获取配置密码 + if (StrUtil.isBlank(token)) { + throw new CrmebException("请配置一号通密码!"); + } + String secret = SecureUtil.md5(account + SecureUtil.md5(token)); + OnePassLoginVo loginVo = new OnePassLoginVo(); + loginVo.setAccount(account); + loginVo.setSecret(secret); + return loginVo; + } + + /** + * 获取一号通token + */ + public String getToken(OnePassLoginVo loginVo) { + boolean exists = redisUtil.exists(StrUtil.format(OnePassConstants.ONE_PASS_TOKEN_KEY_PREFIX, loginVo.getSecret())); + if (exists) { + Object token = redisUtil.get(StrUtil.format(OnePassConstants.ONE_PASS_TOKEN_KEY_PREFIX, loginVo.getSecret())); + return token.toString(); + } + // 缓存中不存在token,重新获取,存入缓存 + MultiValueMap map = new LinkedMultiValueMap<>(); + map.add("account", loginVo.getAccount()); + map.add("secret", loginVo.getSecret()); + JSONObject jsonObject = postFrom(OnePassConstants.ONE_PASS_API_URL + OnePassConstants.USER_LOGIN_URI, map, null); + String accessToken = ""; + Long expiresIn = 0L; + accessToken = OnePassConstants.ONE_PASS_USER_TOKEN_PREFIX.concat(jsonObject.getJSONObject("data").getString("access_token")); + expiresIn = jsonObject.getJSONObject("data").getLong("expires_in"); + expiresIn = expiresIn - DateUtil.getTime(); + redisUtil.set(StrUtil.format(OnePassConstants.ONE_PASS_TOKEN_KEY_PREFIX, loginVo.getSecret()), accessToken, expiresIn, TimeUnit.SECONDS); + return accessToken; + } + + /** + * 获取一号通token + * + * @return + */ + public String getToken() { + OnePassLoginVo loginVo = getLoginVo(); + boolean exists = redisUtil.exists(StrUtil.format(OnePassConstants.ONE_PASS_TOKEN_KEY_PREFIX, loginVo.getSecret())); + if (exists) { + Object token = redisUtil.get(StrUtil.format(OnePassConstants.ONE_PASS_TOKEN_KEY_PREFIX, loginVo.getSecret())); + return token.toString(); + } + // 缓存中不存在token,重新获取,存入缓存 + MultiValueMap map = new LinkedMultiValueMap<>(); + map.add("account", loginVo.getAccount()); + map.add("secret", loginVo.getSecret()); + JSONObject jsonObject = postFrom(OnePassConstants.ONE_PASS_API_URL + OnePassConstants.USER_LOGIN_URI, map, null); + String accessToken = ""; + Long expiresIn = 0L; + accessToken = OnePassConstants.ONE_PASS_USER_TOKEN_PREFIX.concat(jsonObject.getJSONObject("data").getString("access_token")); + expiresIn = jsonObject.getJSONObject("data").getLong("expires_in"); + expiresIn = expiresIn - DateUtil.getTime(); + redisUtil.set(StrUtil.format(OnePassConstants.ONE_PASS_TOKEN_KEY_PREFIX, loginVo.getSecret()), accessToken, expiresIn, TimeUnit.SECONDS); + return accessToken; + } + + /** + * 清除token + */ + public void removeToken(OnePassLoginVo loginVo) { + boolean exists = redisUtil.exists(StrUtil.format(OnePassConstants.ONE_PASS_TOKEN_KEY_PREFIX, loginVo.getSecret())); + if (exists) { + redisUtil.delete(StrUtil.format(OnePassConstants.ONE_PASS_TOKEN_KEY_PREFIX, loginVo.getSecret())); + } + } + + /** + * 清除token + */ + public void removeToken() { + OnePassLoginVo loginVo = getLoginVo(); + boolean exists = redisUtil.exists(StrUtil.format(OnePassConstants.ONE_PASS_TOKEN_KEY_PREFIX, loginVo.getSecret())); + if (exists) { + redisUtil.delete(StrUtil.format(OnePassConstants.ONE_PASS_TOKEN_KEY_PREFIX, loginVo.getSecret())); + } + } + + /** + * post请求from表单模式提交 + */ + public JSONObject postFrom(String url, MultiValueMap param, Map header) { + String result = restTemplateUtil.postFromUrlencoded(url, param, header); + return checkResult(result); + } + + /** + * 检测结构请求返回的数据 + * + * @param result 接口返回的结果 + * @return JSONObject + * @author Mr.Zhang + * @since 2020-04-16 + */ + private JSONObject checkResult(String result) { + if (StringUtils.isBlank(result)) { + throw new CrmebException("一号通平台接口异常,没任何数据返回!"); + } + JSONObject jsonObject = null; + try { + jsonObject = JSONObject.parseObject(result); + } catch (Exception e) { + throw new CrmebException("一号通平台接口异常!"); + } + if (OnePassConstants.ONE_PASS_ERROR_CODE.equals(jsonObject.getInteger("status"))) { + throw new CrmebException("一号通平台接口" + jsonObject.getString("msg")); + } + return jsonObject; + } + + /** + * 获取请求的headerMap + * + * @param accessToken + * @return + */ + public HashMap getCommonHeader(String accessToken) { + HashMap header = CollUtil.newHashMap(); + header.put("Authorization", accessToken); + return header; + } +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/util/YlyUtil.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/util/YlyUtil.java new file mode 100644 index 0000000..b12ecb2 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/util/YlyUtil.java @@ -0,0 +1,260 @@ +package com.zbkj.service.util; + + +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; +import com.zbkj.common.constants.YlyConstants; +import com.zbkj.common.exception.CrmebException; +import com.zbkj.common.request.YlyPrintRequest; +import com.zbkj.common.request.YlyPrintRequestGoods; +import com.zbkj.common.response.YlyAccessTokenResponse; +import com.zbkj.common.utils.RedisUtil; +import com.zbkj.service.service.SystemConfigService; +import com.zbkj.service.util.yly.RequestMethod; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.net.URLEncoder; +import java.util.List; +import java.util.concurrent.TimeUnit; + + +/** 易联云 工具类 + * +---------------------------------------------------------------------- + * * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * * +---------------------------------------------------------------------- + * * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * * +---------------------------------------------------------------------- + * * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * * +---------------------------------------------------------------------- + * * | Author: CRMEB Team + * * +---------------------------------------------------------------------- + **/ +@Component +public class YlyUtil { + private static final Logger logger = LoggerFactory.getLogger(YlyUtil.class); + + private YlyAccessTokenResponse ylyAccessTokenResponse; + + @Autowired + private SystemConfigService systemConfigService; + + @Autowired + private RedisUtil redisUtil; + + // 易联云颁发给开发者的应用ID + private static String client_id = ""; + // 易联云颁发给开发者的应用密钥 + private static String client_secret = ""; + // 易联云打印机设备唯一串码 + private static String machine_code = ""; + // 易联云打印机终端密钥 + private static String msign = ""; + // 是否开启打印 + private static String status = ""; + + /** + * 初始化易联云打印机并链接 + * 添加打印机 + * 参数:* @param machine_code 易联云打印机终端号 + * * @param msign 易联云打印机终端密钥 + * * @param access_token 授权的token 必要参数,有效时间35天 + */ + public void instant() { + if(ObjectUtil.isNotNull(ylyAccessTokenResponse) && StringUtils.isNotBlank(ylyAccessTokenResponse.getBody().getAccess_token())){ + return; + } + try { + client_id = systemConfigService.getValueByKey(YlyConstants.YLY_PRINT_APP_ID); + client_secret = systemConfigService.getValueByKey(YlyConstants.YLY_PRINT_APP_SECRET); + machine_code = systemConfigService.getValueByKey(YlyConstants.YLY_PRINT_APP_MACHINE_CODE); + msign = systemConfigService.getValueByKey(YlyConstants.YLY_PRINT_APP_MACHINE_MSIGN); + status = systemConfigService.getValueByKey(YlyConstants.YLY_PRINT_STATUS); + if(StringUtils.isBlank(client_id) || StringUtils.isBlank(client_secret) + || StringUtils.isBlank(machine_code) || StringUtils.isBlank(msign)){ + throw new CrmebException("易联云配置数据不完整"); + } + if(StringUtils.isBlank(status) || "false".equals(status)){ + return; + } + // 初始化易联云 + RequestMethod.init(client_id,client_secret); + // 获取Access Token + boolean exists = redisUtil.exists(YlyConstants.YLY_REDIS_TOKEN); + if(exists){ + Object o = redisUtil.get(YlyConstants.YLY_REDIS_TOKEN); + ylyAccessTokenResponse = JSON.parseObject(o.toString(),YlyAccessTokenResponse.class); + }else{ + ylyAccessTokenResponse = JSON.parseObject(RequestMethod.getAccessToken(),YlyAccessTokenResponse.class); + redisUtil.set(YlyConstants.YLY_REDIS_TOKEN,JSON.toJSONString(ylyAccessTokenResponse),30L, TimeUnit.DAYS); + } + + logger.info("获取的易联云AccessToken:"+JSON.toJSONString(ylyAccessTokenResponse)); + String addedPrint = RequestMethod.getInstance().addPrinter(machine_code, msign, ylyAccessTokenResponse.getBody().getAccess_token()); + logger.info("添加打印机结果:"+addedPrint); + }catch (Exception e){ + logger.error("添加易联云打印机失败"+e.getMessage()); + logger.error(String.format("易联云 配置参数 client_id=%s client_secret=%s machine_code=%s msign=%s",client_id,client_secret,machine_code,msign)); + } + + } + + /** + * 设置内置语音接口 设置了易联云也不会播放 暂时停用 + * 注意: 仅支持K4-WA、K4-GAD、K4-WGEAD、k6型号(除k6-wh外) + * RequestMethod.getInstance().printerSetVoice(String access_token,String machine_code,String content,String is_file,String aid,String origin_id) + * 参数:* @param access_token 授权的token 必要参数 + * * @param machine_code 易联云打印机终端号 + * * @param content 播报内容 , 音量(1~9) , 声音类型(0,1,3,4) 组成json ! 示例 ["测试",9,0] 或者是在线语音链接! 语音内容请小于24kb + * * @param is_file true or false , 判断content是否为在线语音链接,格式MP3 + * * @param aid 0~9 , 定义需设置的语音编号,若不提交,默认升序 + * * @param origin_id 商户系统内部订单号,要求32个字符内,只能是数字、大小写字母 ,且在同一个client_id下唯一。详见商户订单号 + */ + public void ylyVoice() throws Exception { + instant(); + RequestMethod.getInstance().printerSetVoice( + ylyAccessTokenResponse.getBody().getAccess_token(), + machine_code,"[\"CRMEB 来新单了\",9,0]","false", + "0","ORDER xxx"); + logger.info("设置语音成功"); + } + + /** + * 声音调节接口 + * RequestMethod.getInstance().printSetSound(String access_token,String machine_code,String response_type,String voice) + * 参数:* @param access_token 授权的token 必要参数 + * * @param machine_code 易联云打印机终端号 + * * @param response_type 蜂鸣器:buzzer,喇叭:horn + * * @param voice [0,1,2,3] 4种音量设置 + */ + public void ylySetSound(String responseType,String volume) throws Exception { + instant(); + RequestMethod.getInstance().printSetSound(ylyAccessTokenResponse.getBody().getAccess_token(), + machine_code,responseType,volume); + logger.info("设置音量成功"); + } + + /** + * 取消所有未打印订单 + * RequestMethod.getInstance().printCancelAll(String access_token,String machine_code) + * 参数:* @param access_token 授权的token 必要参数 + * * @param machine_code 易联云打印机终端号 + */ + public void ylyCancelAll() throws Exception { + instant(); + String cancelAllPrint = RequestMethod.getInstance().printCancelAll(ylyAccessTokenResponse.getBody().getAccess_token(), machine_code); + logger.info("取消掉所有打印订单"+cancelAllPrint); + } + + + /** + * 文本打印 + * 参数:* @param access_token 授权的token 必要参数 + * * @param machine_code 易联云打印机终端号 + * * @param content 打印内容(需要urlencode),排版指令详见打印机指令 + * * @param origin_id 商户系统内部订单号,要求32个字符内,只能是数字、大小写字母 ,且在同一个client_id下唯一。详见商户订单号 + * String printContent = "一段美好的文字"; + * @throws Exception 打印方式 + */ + public void ylyPrint(YlyPrintRequest ylyPrintRequest) throws Exception { + instant(); + String printSb = "
"+ylyPrintRequest.getBusinessName()+"
" + + "********************************" + + "订单编号:" + ylyPrintRequest.getOrderNo()+"\n"+ + "日 期:" + ylyPrintRequest.getDate()+"\n"+ + "姓 名:" + ylyPrintRequest.getName()+"\n"+ + "电 话:" + ylyPrintRequest.getPhone()+"\n"+ + "地 址:" + ylyPrintRequest.getAddress()+"\n"+ + "订单备注:"+ ylyPrintRequest.getNote()+"\n" + + "********************************\n" + + "" + + "商品名称 单价 数量 金额\n" + + "" + ylyPrintFormatGoodsList(ylyPrintRequest.getGoods())+ + "" + + "********************************\n" + + "" + + "合计:¥"+ ylyPrintRequest.getAmount()+"元,优惠:¥"+ylyPrintRequest.getDiscount()+"元" + + "邮费:¥"+ylyPrintRequest.getPostal()+"元,抵扣:¥"+ylyPrintRequest.getDeduction()+"元" + + "" + + "实际支付:¥"+ylyPrintRequest.getPayMoney()+"元" + + "
"; + RequestMethod.getInstance().printIndex(ylyAccessTokenResponse.getBody().getAccess_token(),machine_code, + URLEncoder.encode(printSb, "utf-8"),"order111"); + } + + /** + * 付款成后打印易联云订单 + */ + public boolean checkYlyPrintAfterPaySuccess(){ + String printAuto = systemConfigService.getValueByKey(YlyConstants.YLY_PRINT_AUTO_STATUS); + return !StringUtils.isBlank(printAuto) && "'0'".equals(printAuto); + } + + /** + * 检查是否开启打印 + */ + public boolean checkYlyPrintStatus(){ + String printAuto = systemConfigService.getValueByKey(YlyConstants.YLY_PRINT_STATUS); + return !StringUtils.isBlank(printAuto) && "'0'".equals(printAuto); + } + + /** + * 格式化商品详情打印格式 + * @param goods 待格式化的商品详情 + * @return 格式化后的商品详情 + */ + public String ylyPrintFormatGoodsList(List goods){ + StringBuilder printGoodsString = new StringBuilder(); + for (YlyPrintRequestGoods goood : goods) { + printGoodsString.append(goood.getGoodsName()); + printGoodsString.append(" ").append(goood.getUnitPrice()); + printGoodsString.append(" ").append(goood.getNum()); + printGoodsString.append(" ").append(goood.getMoney()).append("\n"); + } + return printGoodsString.toString(); + } + + public static void main(String[] args) throws Exception { + YlyUtil ylyUtil = new YlyUtil(); + ylyUtil.instant(); +// ylyUtil.ylyVoice(); + // 响应类型 蜂鸣器:buzzer,喇叭:horn + // 音量大小 【1234】 +// ylyUtil.ylySetSound(EnumYly.VOLUME_RESPONSE_TYPE_FENGMINGQI.getCode(), +// EnumYly.VOLUME_RESPONSE_VOICE3.getCode()); + ylyUtil.ylyVoice(); + + + // 根据商品对象打印商品信息 +// List goods = new ArrayList<>(); +// YlyPrintRequestGoods g1 = new YlyPrintRequestGoods("红轴的机械键盘","110","1","110"); +// YlyPrintRequestGoods g2 = new YlyPrintRequestGoods("新版的Iphone18 工程机 侧面带滑轮的那种","9999","1","9999"); +// goods.add(g1); +// goods.add(g2); +// YlyPrintRequest ylyPrintRequest = new YlyPrintRequest(); +// ylyPrintRequest.setBusinessName("CRMEB Java Order"); +// ylyPrintRequest.setOrderNo("Order110"); +// ylyPrintRequest.setDate("20211127"); +//// ylyPrintRequest.setTime("12:00:00"); +// ylyPrintRequest.setName("大粽子"); +// ylyPrintRequest.setPhone("18292417675"); +// ylyPrintRequest.setAddress("陕西省 西安市 雁塔区 春林东街"); +// ylyPrintRequest.setNote("死鬼 来的是否先打电话"); +// +// ylyPrintRequest.setGoods(goods); +// ylyPrintRequest.setAmount("10109"); +// ylyPrintRequest.setDiscount("100"); +// ylyPrintRequest.setPostal("0"); +// ylyPrintRequest.setDeduction("9"); +// ylyPrintRequest.setPayMoney("10000"); +// // 执行打印 +// ylyUtil.ylyPrint(ylyPrintRequest); + + // 取消多有待打印订单 根据需求调用 +// ylyUtil.ylyCancelAll(); + + } +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/util/yly/HttpRequest.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/util/yly/HttpRequest.java new file mode 100644 index 0000000..8eab172 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/util/yly/HttpRequest.java @@ -0,0 +1,93 @@ +package com.zbkj.service.util.yly; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.PrintWriter; +import java.net.URL; +import java.net.URLConnection; +import java.util.List; +import java.util.Map; + +class HttpRequest { + public static String sendGet(String url, Map paramMap) { + String param = forMap(paramMap); + String result = ""; + BufferedReader in = null; + try { + String urlNameString = url + "?" + param; + URLConnection connection = getUrlConnection(urlNameString); + connection.connect(); + Map> map = connection.getHeaderFields(); + for (String key : map.keySet()) + System.out.println(key + "--->" + map.get(key)); + in = new BufferedReader(new InputStreamReader(connection.getInputStream())); + String line; + while ((line = in.readLine()) != null) + result = result + line; + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + if (in != null) + in.close(); + } catch (Exception e2) { + e2.printStackTrace(); + } + } + return result; + } + + public static String sendPost(String url, Map paramMap) { + String param = forMap(paramMap); + PrintWriter out = null; + BufferedReader in = null; + StringBuilder result = new StringBuilder(); + try { + URLConnection conn = getUrlConnection(url); + conn.setDoOutput(true); + conn.setDoInput(true); + out = new PrintWriter(conn.getOutputStream()); + out.print(param); + out.flush(); + in = new BufferedReader(new InputStreamReader(conn.getInputStream())); + String line; + while ((line = in.readLine()) != null) + result.append(line); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + if (out != null) + out.close(); + if (in != null) + in.close(); + } catch (IOException ex) { + ex.printStackTrace(); + } + } + return result.toString(); + } + + private static URLConnection getUrlConnection(String url) throws IOException { + URL realUrl = new URL(url); + URLConnection conn = realUrl.openConnection(); + conn.setConnectTimeout(30000); + conn.setRequestProperty("accept", "*/*"); + conn.setRequestProperty("connection", "Keep-Alive"); + conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); + return conn; + } + + private static String forMap(Map paramMap) { + String reqStr = ""; + if (null != paramMap && !paramMap.isEmpty()) { + for (Map.Entry entry : paramMap.entrySet()) { + System.out.println("key = " + (String)entry.getKey() + ", value = " + (String)entry.getValue()); + reqStr = (String)entry.getKey() + "=" + (String)entry.getValue() + "&" + reqStr; + } + reqStr = reqStr.substring(0, reqStr.length() - 1); + } + return reqStr; + } +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/util/yly/RequestMethod.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/util/yly/RequestMethod.java new file mode 100644 index 0000000..c7d99ff --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/util/yly/RequestMethod.java @@ -0,0 +1,529 @@ +package com.zbkj.service.util.yly; + +import java.net.URLEncoder; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +public class RequestMethod { + private static String example = "{\"error\":\"20\",\"error_description\":\"success\",\"body\":\"\"}"; + + public static String ClientId; + + public static String ClientSecret; + + private static final RequestMethod singleton = new RequestMethod(); + + public static RequestMethod getInstance() { + return singleton; + } + + public static void init(String client_id, String client_secret) { + ClientId = client_id; + ClientSecret = client_secret; + } + + private static boolean CCIsNull(String client_id, String client_secret) { + if (ClientId != null && ClientSecret != null && !"".equals(ClientId) && !"".equals(ClientSecret)) + return true; + return false; + } + + public String getCodeOpen(String redirect_uri) { + if (ClientId != null && !"".equals(ClientId)) + return UtilUrl.openType + "?response_type=code&client_id=" + ClientId + "&redirect_uri=" + redirect_uri + "&state=1"; + return example; + } + + public String getOpenAccessToken(String code) throws Exception { + if (CCIsNull(ClientId, ClientSecret)) { + String timestamp = Utils.getTimestamp(); + String signMD5 = ClientId + timestamp + ClientSecret; + String sign = Utils.getMD5Str(signMD5); + Map paramMap = new HashMap<>(); + paramMap.put("client_id", ClientId); + paramMap.put("grant_type", "authorization_code"); + paramMap.put("sign", sign); + paramMap.put("code", code); + paramMap.put("scope", "all"); + paramMap.put("timestamp", timestamp); + paramMap.put("id", UUID.randomUUID().toString()); + return HttpRequest.sendPost(UtilUrl.freeType, paramMap); + } + return example; + } + + public static String getAccessToken() throws Exception { + if (CCIsNull(ClientId, ClientSecret)) { + String timestamp = Utils.getTimestamp(); + String signMD5 = ClientId + timestamp + ClientSecret; + String sign = Utils.getMD5Str(signMD5); + Map paramMap = new HashMap<>(); + paramMap.put("client_id", ClientId); + paramMap.put("grant_type", "client_credentials"); + paramMap.put("sign", sign); + paramMap.put("scope", "all"); + paramMap.put("timestamp", timestamp); + paramMap.put("id", UUID.randomUUID().toString()); + return HttpRequest.sendPost(UtilUrl.freeType, paramMap); + } + return example; + } + + public String getRefreshAccessToken(String refresh_token) throws Exception { + if (CCIsNull(ClientId, ClientSecret)) { + String timestamp = Utils.getTimestamp(); + String signMD5 = ClientId + timestamp + ClientSecret; + String sign = Utils.getMD5Str(signMD5); + Map paramMap = new HashMap<>(); + paramMap.put("refresh_token", refresh_token); + paramMap.put("grant_type", "refresh_token"); + paramMap.put("scope", "all"); + paramMap.put("client_id", ClientId); + paramMap.put("timestamp", timestamp); + paramMap.put("id", UUID.randomUUID().toString()); + paramMap.put("sign", sign); + return HttpRequest.sendPost(UtilUrl.freeType, paramMap); + } + return example; + } + + public String addPrinter(String machine_code, String msign, String access_token) throws Exception { + if (CCIsNull(ClientId, ClientSecret)) { + String timestamp = Utils.getTimestamp(); + String signMD5 = ClientId + timestamp + ClientSecret; + String sign = Utils.getMD5Str(signMD5); + Map paramMap = new HashMap<>(); + paramMap.put("machine_code", machine_code); + paramMap.put("msign", msign); + paramMap.put("access_token", access_token); + paramMap.put("client_id", ClientId); + paramMap.put("timestamp", timestamp); + paramMap.put("id", UUID.randomUUID().toString()); + paramMap.put("sign", sign); + return HttpRequest.sendPost(UtilUrl.addPrinter, paramMap); + } + return example; + } + + public String addPrinter(String machine_code, String msign, String access_token, String phone, String print_name) throws Exception { + if (CCIsNull(ClientId, ClientSecret)) { + String timestamp = Utils.getTimestamp(); + String signMD5 = ClientId + timestamp + ClientSecret; + String sign = Utils.getMD5Str(signMD5); + Map paramMap = new HashMap<>(); + paramMap.put("machine_code", machine_code); + paramMap.put("msign", msign); + paramMap.put("access_token", access_token); + paramMap.put("phone", phone); + paramMap.put("print_name", print_name); + paramMap.put("client_id", ClientId); + paramMap.put("timestamp", timestamp); + paramMap.put("id", UUID.randomUUID().toString()); + paramMap.put("sign", sign); + return HttpRequest.sendPost(UtilUrl.addPrinter, paramMap); + } + return example; + } + + public String scanCodeModel(String machine_code, String qr_key) throws Exception { + if (CCIsNull(ClientId, ClientSecret)) { + String timestamp = Utils.getTimestamp(); + String signMD5 = ClientId + timestamp + ClientSecret; + String sign = Utils.getMD5Str(signMD5); + Map paramMap = new HashMap<>(); + paramMap.put("machine_code", machine_code); + paramMap.put("qr_key", qr_key); + paramMap.put("scope", "all"); + paramMap.put("client_id", ClientId); + paramMap.put("timestamp", timestamp); + paramMap.put("id", UUID.randomUUID().toString()); + paramMap.put("sign", sign); + return HttpRequest.sendPost(UtilUrl.scanCodeModel, paramMap); + } + return example; + } + + public String printIndex(String access_token, String machine_code, String content, String origin_id) throws Exception { + if (CCIsNull(ClientId, ClientSecret)) { + String timestamp = Utils.getTimestamp(); + String signMD5 = ClientId + timestamp + ClientSecret; + String sign = Utils.getMD5Str(signMD5); + Map paramMap = new HashMap<>(); + paramMap.put("access_token", access_token); + paramMap.put("machine_code", machine_code); + paramMap.put("content", content); + paramMap.put("origin_id", origin_id); + paramMap.put("client_id", ClientId); + paramMap.put("timestamp", timestamp); + paramMap.put("id", UUID.randomUUID().toString()); + paramMap.put("sign", sign); + return HttpRequest.sendPost(UtilUrl.printIndex, paramMap); + } + return example; + } + + public static String picturePrintIndex(String access_token, String machine_code, String picture_url, String origin_id) throws Exception { + if (CCIsNull(ClientId, ClientSecret)) { + String timestamp = Utils.getTimestamp(); + String signMD5 = ClientId + timestamp + ClientSecret; + String sign = Utils.getMD5Str(signMD5); + Map paramMap = new HashMap<>(); + paramMap.put("access_token", access_token); + paramMap.put("machine_code", machine_code); + paramMap.put("picture_url", URLEncoder.encode(picture_url, "UTF-8")); + paramMap.put("origin_id", origin_id); + paramMap.put("client_id", ClientId); + paramMap.put("timestamp", timestamp); + paramMap.put("id", UUID.randomUUID().toString()); + paramMap.put("sign", sign); + return HttpRequest.sendPost(UtilUrl.picturePrintIndex, paramMap); + } + return example; + } + + public String expressPrintIndex(String access_token, String machine_code, String content, String origin_id) throws Exception { + if (CCIsNull(ClientId, ClientSecret)) { + String timestamp = Utils.getTimestamp(); + String signMD5 = ClientId + timestamp + ClientSecret; + String sign = Utils.getMD5Str(signMD5); + Map paramMap = new HashMap<>(); + paramMap.put("access_token", access_token); + paramMap.put("machine_code", machine_code); + paramMap.put("content", content); + paramMap.put("origin_id", origin_id); + paramMap.put("client_id", ClientId); + paramMap.put("timestamp", timestamp); + paramMap.put("id", UUID.randomUUID().toString()); + paramMap.put("sign", sign); + return HttpRequest.sendPost(UtilUrl.expressPrintIndex, paramMap); + } + return example; + } + + public String printerSetVoice(String access_token, String machine_code, String content, String is_file, String aid, String origin_id) throws Exception { + if (CCIsNull(ClientId, ClientSecret)) { + String timestamp = Utils.getTimestamp(); + String signMD5 = ClientId + timestamp + ClientSecret; + String sign = Utils.getMD5Str(signMD5); + Map paramMap = new HashMap<>(); + paramMap.put("access_token", access_token); + paramMap.put("machine_code", machine_code); + paramMap.put("content", content); + paramMap.put("is_file", is_file); + paramMap.put("aid", aid); + paramMap.put("origin_id", origin_id); + paramMap.put("client_id", ClientId); + paramMap.put("timestamp", timestamp); + paramMap.put("id", UUID.randomUUID().toString()); + paramMap.put("sign", sign); + return HttpRequest.sendPost(UtilUrl.printerSetVoice, paramMap); + } + return example; + } + + public String printerDeleteVoice(String access_token, String machine_code, String aid, String origin_id) throws Exception { + if (CCIsNull(ClientId, ClientSecret)) { + String timestamp = Utils.getTimestamp(); + String signMD5 = ClientId + timestamp + ClientSecret; + String sign = Utils.getMD5Str(signMD5); + Map paramMap = new HashMap<>(); + paramMap.put("access_token", access_token); + paramMap.put("machine_code", machine_code); + paramMap.put("aid", aid); + paramMap.put("origin_id", origin_id); + paramMap.put("client_id", ClientId); + paramMap.put("timestamp", timestamp); + paramMap.put("id", UUID.randomUUID().toString()); + paramMap.put("sign", sign); + return HttpRequest.sendPost(UtilUrl.printerDeleteVoice, paramMap); + } + return example; + } + + public String printerDeletePrinter(String access_token, String machine_code) throws Exception { + if (CCIsNull(ClientId, ClientSecret)) { + String timestamp = Utils.getTimestamp(); + String signMD5 = ClientId + timestamp + ClientSecret; + String sign = Utils.getMD5Str(signMD5); + Map paramMap = new HashMap<>(); + paramMap.put("access_token", access_token); + paramMap.put("machine_code", machine_code); + paramMap.put("client_id", ClientId); + paramMap.put("timestamp", timestamp); + paramMap.put("id", UUID.randomUUID().toString()); + paramMap.put("sign", sign); + return HttpRequest.sendPost(UtilUrl.printerDeletePrinter, paramMap); + } + return example; + } + + public String printMenuAddPrintMenu(String access_token, String machine_code, String content) throws Exception { + if (CCIsNull(ClientId, ClientSecret)) { + String timestamp = Utils.getTimestamp(); + String signMD5 = ClientId + timestamp + ClientSecret; + String sign = Utils.getMD5Str(signMD5); + Map paramMap = new HashMap<>(); + paramMap.put("access_token", access_token); + paramMap.put("machine_code", machine_code); + paramMap.put("content", content); + paramMap.put("client_id", ClientId); + paramMap.put("timestamp", timestamp); + paramMap.put("id", UUID.randomUUID().toString()); + paramMap.put("sign", sign); + return HttpRequest.sendPost(UtilUrl.printMenuAddPrintMenu, paramMap); + } + return example; + } + + public String printShutdownRestart(String access_token, String machine_code, String response_type) throws Exception { + if (CCIsNull(ClientId, ClientSecret)) { + String timestamp = Utils.getTimestamp(); + String signMD5 = ClientId + timestamp + ClientSecret; + String sign = Utils.getMD5Str(signMD5); + Map paramMap = new HashMap<>(); + paramMap.put("access_token", access_token); + paramMap.put("machine_code", machine_code); + paramMap.put("response_type", response_type); + paramMap.put("client_id", ClientId); + paramMap.put("timestamp", timestamp); + paramMap.put("id", UUID.randomUUID().toString()); + paramMap.put("sign", sign); + return HttpRequest.sendPost(UtilUrl.printShutdownRestart, paramMap); + } + return example; + } + + public String printSetSound(String access_token, String machine_code, String response_type, String voice) throws Exception { + if (CCIsNull(ClientId, ClientSecret)) { + String timestamp = Utils.getTimestamp(); + String signMD5 = ClientId + timestamp + ClientSecret; + String sign = Utils.getMD5Str(signMD5); + Map paramMap = new HashMap<>(); + paramMap.put("access_token", access_token); + paramMap.put("machine_code", machine_code); + paramMap.put("response_type", response_type); + paramMap.put("voice", voice); + paramMap.put("client_id", ClientId); + paramMap.put("timestamp", timestamp); + paramMap.put("id", UUID.randomUUID().toString()); + paramMap.put("sign", sign); + return HttpRequest.sendPost(UtilUrl.printSetSound, paramMap); + } + return example; + } + + public String printPrintInfo(String access_token, String machine_code) throws Exception { + if (CCIsNull(ClientId, ClientSecret)) { + String timestamp = Utils.getTimestamp(); + String signMD5 = ClientId + timestamp + ClientSecret; + String sign = Utils.getMD5Str(signMD5); + Map paramMap = new HashMap<>(); + paramMap.put("access_token", access_token); + paramMap.put("machine_code", machine_code); + paramMap.put("client_id", ClientId); + paramMap.put("timestamp", timestamp); + paramMap.put("id", UUID.randomUUID().toString()); + paramMap.put("sign", sign); + return HttpRequest.sendPost(UtilUrl.printPrintInfo, paramMap); + } + return example; + } + + public String printGetVersion(String access_token, String machine_code) throws Exception { + if (CCIsNull(ClientId, ClientSecret)) { + String timestamp = Utils.getTimestamp(); + String signMD5 = ClientId + timestamp + ClientSecret; + String sign = Utils.getMD5Str(signMD5); + Map paramMap = new HashMap<>(); + paramMap.put("access_token", access_token); + paramMap.put("machine_code", machine_code); + paramMap.put("client_id", ClientId); + paramMap.put("timestamp", timestamp); + paramMap.put("id", UUID.randomUUID().toString()); + paramMap.put("sign", sign); + return HttpRequest.sendPost(UtilUrl.printGetVersion, paramMap); + } + return example; + } + + public String printCancelAll(String access_token, String machine_code) throws Exception { + if (CCIsNull(ClientId, ClientSecret)) { + String timestamp = Utils.getTimestamp(); + String signMD5 = ClientId + timestamp + ClientSecret; + String sign = Utils.getMD5Str(signMD5); + Map paramMap = new HashMap<>(); + paramMap.put("access_token", access_token); + paramMap.put("machine_code", machine_code); + paramMap.put("client_id", ClientId); + paramMap.put("timestamp", timestamp); + paramMap.put("id", UUID.randomUUID().toString()); + paramMap.put("sign", sign); + return HttpRequest.sendPost(UtilUrl.printCancelAll, paramMap); + } + return example; + } + + public String printCancelOne(String access_token, String machine_code, String order_id) throws Exception { + if (CCIsNull(ClientId, ClientSecret)) { + String timestamp = Utils.getTimestamp(); + String signMD5 = ClientId + timestamp + ClientSecret; + String sign = Utils.getMD5Str(signMD5); + Map paramMap = new HashMap<>(); + paramMap.put("access_token", access_token); + paramMap.put("machine_code", machine_code); + paramMap.put("order_id", order_id); + paramMap.put("client_id", ClientId); + paramMap.put("timestamp", timestamp); + paramMap.put("id", UUID.randomUUID().toString()); + paramMap.put("sign", sign); + return HttpRequest.sendPost(UtilUrl.printCancelOne, paramMap); + } + return example; + } + + public String printSetIcon(String access_token, String machine_code, String img_url) throws Exception { + if (CCIsNull(ClientId, ClientSecret)) { + String timestamp = Utils.getTimestamp(); + String signMD5 = ClientId + timestamp + ClientSecret; + String sign = Utils.getMD5Str(signMD5); + Map paramMap = new HashMap<>(); + paramMap.put("access_token", access_token); + paramMap.put("machine_code", machine_code); + paramMap.put("img_url", img_url); + paramMap.put("client_id", ClientId); + paramMap.put("timestamp", timestamp); + paramMap.put("id", UUID.randomUUID().toString()); + paramMap.put("sign", sign); + return HttpRequest.sendPost(UtilUrl.printSetIcon, paramMap); + } + return example; + } + + public String printDeleteIcon(String access_token, String machine_code) throws Exception { + if (CCIsNull(ClientId, ClientSecret)) { + String timestamp = Utils.getTimestamp(); + String signMD5 = ClientId + timestamp + ClientSecret; + String sign = Utils.getMD5Str(signMD5); + Map paramMap = new HashMap<>(); + paramMap.put("access_token", access_token); + paramMap.put("machine_code", machine_code); + paramMap.put("client_id", ClientId); + paramMap.put("timestamp", timestamp); + paramMap.put("id", UUID.randomUUID().toString()); + paramMap.put("sign", sign); + return HttpRequest.sendPost(UtilUrl.printDeleteIcon, paramMap); + } + return example; + } + + public String printBtnPrint(String access_token, String machine_code, String response_type) throws Exception { + if (CCIsNull(ClientId, ClientSecret)) { + String timestamp = Utils.getTimestamp(); + String signMD5 = ClientId + timestamp + ClientSecret; + String sign = Utils.getMD5Str(signMD5); + Map paramMap = new HashMap<>(); + paramMap.put("access_token", access_token); + paramMap.put("machine_code", machine_code); + paramMap.put("response_type", response_type); + paramMap.put("client_id", ClientId); + paramMap.put("timestamp", timestamp); + paramMap.put("id", UUID.randomUUID().toString()); + paramMap.put("sign", sign); + return HttpRequest.sendPost(UtilUrl.printBtnPrint, paramMap); + } + return example; + } + + public String printGetOrder(String access_token, String machine_code, String response_type) throws Exception { + if (CCIsNull(ClientId, ClientSecret)) { + String timestamp = Utils.getTimestamp(); + String signMD5 = ClientId + timestamp + ClientSecret; + String sign = Utils.getMD5Str(signMD5); + Map paramMap = new HashMap<>(); + paramMap.put("access_token", access_token); + paramMap.put("machine_code", machine_code); + paramMap.put("response_type", response_type); + paramMap.put("client_id", ClientId); + paramMap.put("timestamp", timestamp); + paramMap.put("id", UUID.randomUUID().toString()); + paramMap.put("sign", sign); + return HttpRequest.sendPost(UtilUrl.printGetOrder, paramMap); + } + return example; + } + + public String oauthSetPushUrl(String access_token, String machine_code, String cmd, String url, String status) throws Exception { + if (CCIsNull(ClientId, ClientSecret)) { + String timestamp = Utils.getTimestamp(); + String signMD5 = ClientId + timestamp + ClientSecret; + String sign = Utils.getMD5Str(signMD5); + Map paramMap = new HashMap<>(); + paramMap.put("access_token", access_token); + paramMap.put("machine_code", machine_code); + paramMap.put("cmd", cmd); + paramMap.put("url", url); + paramMap.put("status", status); + paramMap.put("client_id", ClientId); + paramMap.put("timestamp", timestamp); + paramMap.put("id", UUID.randomUUID().toString()); + paramMap.put("sign", sign); + return HttpRequest.sendPost(UtilUrl.oauthSetPushUrl, paramMap); + } + return example; + } + + public String printerGetOrderStatus(String access_token, String machine_code, String order_id) throws Exception { + if (CCIsNull(ClientId, ClientSecret)) { + String timestamp = Utils.getTimestamp(); + String signMD5 = ClientId + timestamp + ClientSecret; + String sign = Utils.getMD5Str(signMD5); + Map paramMap = new HashMap<>(); + paramMap.put("access_token", access_token); + paramMap.put("machine_code", machine_code); + paramMap.put("order_id", order_id); + paramMap.put("client_id", ClientId); + paramMap.put("timestamp", timestamp); + paramMap.put("id", UUID.randomUUID().toString()); + paramMap.put("sign", sign); + return HttpRequest.sendPost(UtilUrl.printerGetOrderStatus, paramMap); + } + return example; + } + + public String printerGetOrderPagingList(String access_token, String machine_code, String page_index, String page_size) throws Exception { + if (CCIsNull(ClientId, ClientSecret)) { + String timestamp = Utils.getTimestamp(); + String signMD5 = ClientId + timestamp + ClientSecret; + String sign = Utils.getMD5Str(signMD5); + Map paramMap = new HashMap<>(); + paramMap.put("access_token", access_token); + paramMap.put("machine_code", machine_code); + paramMap.put("page_index", page_index); + paramMap.put("page_size", page_size); + paramMap.put("client_id", ClientId); + paramMap.put("timestamp", timestamp); + paramMap.put("id", UUID.randomUUID().toString()); + paramMap.put("sign", sign); + return HttpRequest.sendPost(UtilUrl.printerGetOrderPagingList, paramMap); + } + return example; + } + + public String printerGetPrintStatus(String access_token, String machine_code) throws Exception { + if (CCIsNull(ClientId, ClientSecret)) { + String timestamp = Utils.getTimestamp(); + String signMD5 = ClientId + timestamp + ClientSecret; + String sign = Utils.getMD5Str(signMD5); + Map paramMap = new HashMap<>(); + paramMap.put("access_token", access_token); + paramMap.put("machine_code", machine_code); + paramMap.put("client_id", ClientId); + paramMap.put("timestamp", timestamp); + paramMap.put("id", UUID.randomUUID().toString()); + paramMap.put("sign", sign); + return HttpRequest.sendPost(UtilUrl.printerGetPrintStatus, paramMap); + } + return example; + } +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/util/yly/UtilUrl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/util/yly/UtilUrl.java new file mode 100644 index 0000000..e9f43e9 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/util/yly/UtilUrl.java @@ -0,0 +1,55 @@ +package com.zbkj.service.util.yly; + +class UtilUrl { + public static String baseUrl = "https://open-api.10ss.net/"; + + public static String openType = baseUrl + "oauth/authorize"; + + public static String freeType = baseUrl + "oauth/oauth"; + + public static String addPrinter = baseUrl + "printer/addprinter"; + + public static String scanCodeModel = baseUrl + "oauth/scancodemodel"; + + public static String printIndex = baseUrl + "print/index"; + + public static String picturePrintIndex = baseUrl + "pictureprint/index"; + + public static String expressPrintIndex = baseUrl + "expressprint/index"; + + public static String printerSetVoice = baseUrl + "printer/setvoice"; + + public static String printerDeleteVoice = baseUrl + "printer/deletevoice"; + + public static String printerDeletePrinter = baseUrl + "printer/deleteprinter"; + + public static String printMenuAddPrintMenu = baseUrl + "printmenu/addprintmenu"; + + public static String printShutdownRestart = baseUrl + "printer/shutdownrestart"; + + public static String printSetSound = baseUrl + "printer/setsound"; + + public static String printPrintInfo = baseUrl + "printer/printinfo"; + + public static String printGetVersion = baseUrl + "printer/getversion"; + + public static String printCancelAll = baseUrl + "printer/cancelall"; + + public static String printCancelOne = baseUrl + "printer/cancelone"; + + public static String printSetIcon = baseUrl + "printer/seticon"; + + public static String printDeleteIcon = baseUrl + "printer/deleteicon"; + + public static String printBtnPrint = baseUrl + "printer/btnprint"; + + public static String printGetOrder = baseUrl + "printer/getorder"; + + public static String oauthSetPushUrl = baseUrl + "oauth/setpushurl"; + + public static String printerGetOrderStatus = baseUrl + "printer/getorderstatus"; + + public static String printerGetOrderPagingList = baseUrl + "printer/getorderpaginglist"; + + public static String printerGetPrintStatus = baseUrl + "printer/getprintstatus"; +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/util/yly/Utils.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/util/yly/Utils.java new file mode 100644 index 0000000..5878f46 --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/util/yly/Utils.java @@ -0,0 +1,40 @@ +package com.zbkj.service.util.yly; + +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; + +public class Utils { + public static String getMD5Str(String str) { + String re = null; + try { + byte[] tem = str.getBytes(); + MessageDigest md5 = MessageDigest.getInstance("md5"); + md5.reset(); + md5.update(tem); + byte[] encrypt = md5.digest(); + StringBuilder sb = new StringBuilder(); + for (byte t : encrypt) { + String s = Integer.toHexString(t & 0xFF); + if (s.length() == 1) + s = "0" + s; + sb.append(s); + } + re = sb.toString(); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } + if (re.length() == 31) + return "0" + re; + return re; + } + + public static boolean isNull(String content) { + if (content != null && !"".equals(content)) + return false; + return true; + } + + public static String getTimestamp() { + return String.valueOf(System.currentTimeMillis() / 1000L); + } +} diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/util/yly/ylyReade.md b/crmeb/crmeb-service/src/main/java/com/zbkj/service/util/yly/ylyReade.md new file mode 100644 index 0000000..e9f9bcc --- /dev/null +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/util/yly/ylyReade.md @@ -0,0 +1,170 @@ +下请求方法在子线程中执行 + +1. 下载下方的jar包,将jar导入项目中 + +2. 需要先对RequestMethod类进行init初始化设置,配置相关易联云信息 + RequestMethod.getInstance().init(client_id,client_secret); + 参数:* @param client_id 易联云颁发给开发者的应用ID + * @param client_secret 易联云颁发给开发者的应用密钥 + +3. 开放型应用方法实例 + + RequestMethod.getInstance().getCodeOpen(String redirect_uri); + 参数:redirect_uri 开发者自身的回调地址 (需要urlencode) + + RequestMethod.getInstance().getOpenAccessToken(String code); + 参数:* @param code 授权码code + + 极速授权 仅支持开放服务 + RequestMethod.getInstance().scanCodeModel(String machine_code,String qr_key); + 参数:* @param machine_code 易联云打印机终端号 + * @param qr_key 特殊密钥(有效期为300秒) + +自有型新应用 + +获取Access Token +RequestMethod.getInstance().getAccessToken(); + +Refresh token更新Access Token +RequestMethod.getInstance().getRefreshAccessToken(String refresh_token); +参数:* @param refresh_token 更新access_token所需,有效时间35天 + +添加打印机 +RequestMethod.getInstance().addPrinter( machine_code, msign, access_token); +参数:* @param machine_code 易联云打印机终端号 +* @param msign 易联云打印机终端密钥 +* @param access_token 授权的token 必要参数,有效时间35天 + +文本打印 +RequestMethod.getInstance().printIndex(String access_token,String machine_code,String content,String origin_id); +参数:* @param access_token 授权的token 必要参数 +* @param machine_code 易联云打印机终端号 +* @param content 打印内容(需要urlencode),排版指令详见打印机指令 +* @param origin_id 商户系统内部订单号,要求32个字符内,只能是数字、大小写字母 ,且在同一个client_id下唯一。详见商户订单号 + +图形打印 +RequestMethod.getInstance().picturePrintIndex(String access_token,String machine_code,String picture_url,String origin_id) +参数:* @param access_token 授权的token 必要参数 +* @param machine_code 易联云打印机终端号 +* @param picture_url 线上图片地址,格式为 jpg,jpeg,png , K4图片宽度不能超过384像素。理论上图片 (像素宽/8)*像素高 不能超过 100*1024。K5图片宽度不能超过108*8像素。理论上图片 (像素宽/8)*像素高 不能超过 200*1024。 +* @param origin_id 商户系统内部订单号,要求32个字符内,只能是数字、大小写字母 ,且在同一个client_id下唯一。详见商户订单号 + +面单打印 +RequestMethod.getInstance().expressPrintIndex(String access_token,String machine_code,String content,String origin_id); +参数:* @param access_token 授权的token 必要参数 +* @param machine_code 易联云打印机终端号 +* @param content Json字符串 +* @param origin_id 商户系统内部订单号,要求32个字符内,只能是数字、大小写字母 ,且在同一个client_id下唯一。详见商户订单号 + +设置内置语音接口 +注意: 仅支持K4-WA、K4-GAD、K4-WGEAD、k6型号(除k6-wh外) +RequestMethod.getInstance().printerSetVoice(String access_token,String machine_code,String content,String is_file,String aid,String origin_id) +参数:* @param access_token 授权的token 必要参数 +* @param machine_code 易联云打印机终端号 +* @param content 播报内容 , 音量(1~9) , 声音类型(0,1,3,4) 组成json ! 示例 ["测试",9,0] 或者是在线语音链接! 语音内容请小于24kb +* @param is_file true or false , 判断content是否为在线语音链接,格式MP3 +* @param aid 0~9 , 定义需设置的语音编号,若不提交,默认升序 +* @param origin_id 商户系统内部订单号,要求32个字符内,只能是数字、大小写字母 ,且在同一个client_id下唯一。详见商户订单号 + +删除内置语音接口 +注意: 仅支持K4-WA、K4-GAD、K4-WGEAD、k6型号(除k6-wh外) +RequestMethod.getInstance().printerDeleteVoice(String access_token,String machine_code,String aid,String origin_id) +参数:* @param access_token 授权的token 必要参数 +* @param machine_code 易联云打印机终端号 +* @param aid 0~9 , 定义需删除的语音编号 +* @param origin_id 商户系统内部订单号,要求32个字符内,只能是数字、大小写字母 ,且在同一个client_id下唯一。详见商户订单号 + +删除终端授权 +RequestMethod.getInstance().printerDeletePrinter(String access_token,String machine_code) +参数:* @param access_token 授权的token 必要参数 +* @param machine_code 易联云打印机终端号 + +添加应用菜单 +注意: 仅支持除k4-WA,k4-WH外的k4或w1机型.唤醒应用菜单请使用打印指令 +RequestMethod.getInstance().printMenuAddPrintMenu(String access_token,String machine_code,String content) +参数:* @param access_token 授权的token 必要参数 +* @param machine_code 易联云打印机终端号 +* @param content json格式的应用菜单(其中url和菜单名称需要urlencode) + +关机重启接口 +RequestMethod.getInstance().printShutdownRestart(String access_token,String machine_code,String response_type) +参数:* @param access_token 授权的token 必要参数 +* @param machine_code 易联云打印机终端号 +* @param response_type 重启:restart,关闭:shutdown + +声音调节接口 +RequestMethod.getInstance().printSetSound(String access_token,String machine_code,String response_type,String voice) +参数:* @param access_token 授权的token 必要参数 +* @param machine_code 易联云打印机终端号 +* @param response_type 蜂鸣器:buzzer,喇叭:horn +* @param voice [0,1,2,3] 4种音量设置 + +获取机型打印宽度接口 +RequestMethod.getInstance().printPrintInfo(String access_token,String machine_code) +参数:* @param access_token 授权的token 必要参数 +* @param machine_code 易联云打印机终端号 + +获取机型软硬件版本接口 +RequestMethod.getInstance().printGetVersion(String access_token,String machine_code) +参数:* @param access_token 授权的token 必要参数 +* @param machine_code 易联云打印机终端号 + +取消所有未打印订单 +RequestMethod.getInstance().printCancelAll(String access_token,String machine_code) +参数:* @param access_token 授权的token 必要参数 +* @param machine_code 易联云打印机终端号 + +取消单条未打印订单 +RequestMethod.getInstance().printCancelOne(String access_token,String machine_code,String order_id) +参数:* @param access_token 授权的token 必要参数 +* @param machine_code 易联云打印机终端号 +* @param order_id 通过打印接口返回的订单号 + +设置logo接口 +RequestMethod.getInstance().printSetIcon(String access_token,String machine_code,String img_url) +参数:* @param access_token 授权的token 必要参数 +* @param machine_code 易联云打印机终端号 +* @param img_url 图片地址,图片宽度最大为350px,文件大小不能超过40Kb + +取消logo接口 +RequestMethod.getInstance().printDeleteIcon(String access_token,String machine_code) +参数:* @param access_token 授权的token 必要参数 +* @param machine_code 易联云打印机终端号 + +打印方式接口 +RequestMethod.getInstance().printBtnPrint(String access_token,String machine_code,String response_type) +参数:* @param access_token 授权的token 必要参数 +* @param machine_code 易联云打印机终端号 +* @param response_type 开启:btnopen,关闭:btnclose; 按键打印 + +接单拒单设置接口 +RequestMethod.getInstance().printGetOrder(String access_token,String machine_code,String response_type) +参数;* @param access_token 授权的token 必要参数 +* @param machine_code 易联云打印机终端号 +* @param response_type 开启:open,关闭:close + +设置推送url接口 +RequestMethod.getInstance().oauthSetPushUrl(String access_token,String machine_code,String cmd,String url,String status) +参数:* @param access_token 授权的token 必要参数 +* @param machine_code 易联云打印机终端号 +* @param cmd 打印完成标识oauth_finish,接单拒单标识oauth_getOrder,终端状态标识oauth_printStatus, 按键请求标识oauth_request +* @param url 推送地址填写必须以http://或https://开头的地址。推送地址需要支持GET访问,当GET请求访问时,请直接返回{"data":"OK"},用于推送地址的可用性测试 +* @param status 开启open,关闭close + +获取订单状态接口 +RequestMethod.getInstance().printerGetOrderStatus(String access_token,String machine_code,String order_id) +参数:* @param access_token 授权的token 必要参数 +* @param machine_code 易联云打印机终端号 +* @param order_id 易联云订单id + +获取订单状态接口 +RequestMethod.getInstance().printerGetOrderPagingList(String access_token,String machine_code,String page_index,String page_size) +参数:* @param access_token 授权的token 必要参数 +* @param machine_code 易联云打印机终端号 +* @param page_index 查询条件—当前页码,暂只提供前3页数据 +* @param page_size 查询条件—每页显示条数,每页最大条数100 + +获取终端状态接口 +RequestMethod.getInstance().printerGetPrintStatus(String access_token,String machine_code) +参数:* @param access_token 授权的token 必要参数 +* @param machine_code 易联云打印机终端号 diff --git a/crmeb/crmeb-service/src/main/resources/mapper/article/ArticleMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/article/ArticleMapper.xml new file mode 100644 index 0000000..589e697 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/article/ArticleMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/category/CategoryMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/category/CategoryMapper.xml new file mode 100644 index 0000000..6f2773a --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/category/CategoryMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/express/ExpressMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/express/ExpressMapper.xml new file mode 100644 index 0000000..280e872 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/express/ExpressMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/express/ShippingTemplatesFreeMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/express/ShippingTemplatesFreeMapper.xml new file mode 100644 index 0000000..cfdb8ac --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/express/ShippingTemplatesFreeMapper.xml @@ -0,0 +1,8 @@ + + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/express/ShippingTemplatesMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/express/ShippingTemplatesMapper.xml new file mode 100644 index 0000000..e34f6a3 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/express/ShippingTemplatesMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/express/ShippingTemplatesRegionMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/express/ShippingTemplatesRegionMapper.xml new file mode 100644 index 0000000..4bd9064 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/express/ShippingTemplatesRegionMapper.xml @@ -0,0 +1,8 @@ + + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/finance/UserExtractMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/finance/UserExtractMapper.xml new file mode 100644 index 0000000..a1aca4e --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/finance/UserExtractMapper.xml @@ -0,0 +1,4 @@ + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/finance/UserFundsMonitorMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/finance/UserFundsMonitorMapper.xml new file mode 100644 index 0000000..318cb49 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/finance/UserFundsMonitorMapper.xml @@ -0,0 +1,25 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/finance/UserRechargeMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/finance/UserRechargeMapper.xml new file mode 100644 index 0000000..01b8e82 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/finance/UserRechargeMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/gencode/MySQLGeneratorMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/gencode/MySQLGeneratorMapper.xml new file mode 100644 index 0000000..00243ad --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/gencode/MySQLGeneratorMapper.xml @@ -0,0 +1,20 @@ + + + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/log/StoreProductLogMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/log/StoreProductLogMapper.xml new file mode 100644 index 0000000..9f987e2 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/log/StoreProductLogMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/marketing/StoreCouponMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/marketing/StoreCouponMapper.xml new file mode 100644 index 0000000..f8a06d8 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/marketing/StoreCouponMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/marketing/StoreCouponUserMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/marketing/StoreCouponUserMapper.xml new file mode 100644 index 0000000..e8bd9c6 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/marketing/StoreCouponUserMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/record/UserVisitRecordMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/record/UserVisitRecordMapper.xml new file mode 100644 index 0000000..e3b459c --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/record/UserVisitRecordMapper.xml @@ -0,0 +1,16 @@ + + + + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/sms/SmsRecordMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/sms/SmsRecordMapper.xml new file mode 100644 index 0000000..605540b --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/sms/SmsRecordMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/sms/SmsTemplateMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/sms/SmsTemplateMapper.xml new file mode 100644 index 0000000..b484ac1 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/sms/SmsTemplateMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/store/StoreBargainMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreBargainMapper.xml new file mode 100644 index 0000000..2c94961 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreBargainMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/store/StoreBargainUserHelpMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreBargainUserHelpMapper.xml new file mode 100644 index 0000000..ff31a1c --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreBargainUserHelpMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/store/StoreBargainUserMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreBargainUserMapper.xml new file mode 100644 index 0000000..2467b16 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreBargainUserMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/store/StoreCartMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreCartMapper.xml new file mode 100644 index 0000000..6c33411 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreCartMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/store/StoreCombinationMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreCombinationMapper.xml new file mode 100644 index 0000000..afd8837 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreCombinationMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/store/StoreOrderInfoMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreOrderInfoMapper.xml new file mode 100644 index 0000000..103aed2 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreOrderInfoMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/store/StoreOrderMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreOrderMapper.xml new file mode 100644 index 0000000..e41ee51 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreOrderMapper.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/store/StoreOrderStatusMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreOrderStatusMapper.xml new file mode 100644 index 0000000..0693883 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreOrderStatusMapper.xml @@ -0,0 +1,12 @@ + + + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/store/StorePinkMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/store/StorePinkMapper.xml new file mode 100644 index 0000000..bd1b605 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/store/StorePinkMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/store/StoreProductAttrMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreProductAttrMapper.xml new file mode 100644 index 0000000..2d2dfdb --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreProductAttrMapper.xml @@ -0,0 +1,13 @@ + + + + + update eb_store_product_attr + + attr_name = #{ attrName }, + attr_values = #{ attrValues }, + type = #{ type } + + where product_id = #{ productId, jdbcType=INTEGER} + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/store/StoreProductAttrResultMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreProductAttrResultMapper.xml new file mode 100644 index 0000000..ffc0bb9 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreProductAttrResultMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/store/StoreProductAttrValueMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreProductAttrValueMapper.xml new file mode 100644 index 0000000..1873233 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreProductAttrValueMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/store/StoreProductCateMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreProductCateMapper.xml new file mode 100644 index 0000000..8fcd006 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreProductCateMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/store/StoreProductCouponMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreProductCouponMapper.xml new file mode 100644 index 0000000..ca4ba17 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreProductCouponMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/store/StoreProductDescriptionMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreProductDescriptionMapper.xml new file mode 100644 index 0000000..9da5616 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreProductDescriptionMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/store/StoreProductMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreProductMapper.xml new file mode 100644 index 0000000..04cc031 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreProductMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/store/StoreProductRelationMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreProductRelationMapper.xml new file mode 100644 index 0000000..bd8bfad --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreProductRelationMapper.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/store/StoreProductReplyMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreProductReplyMapper.xml new file mode 100644 index 0000000..57d98fb --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreProductReplyMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/store/StoreProductRuleMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreProductRuleMapper.xml new file mode 100644 index 0000000..bc78382 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreProductRuleMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/store/StoreSeckillMangerMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreSeckillMangerMapper.xml new file mode 100644 index 0000000..8a9701b --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreSeckillMangerMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/store/StoreSeckillMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreSeckillMapper.xml new file mode 100644 index 0000000..9b09f1f --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreSeckillMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/system/SystemAdminMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/system/SystemAdminMapper.xml new file mode 100644 index 0000000..b2608a8 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/system/SystemAdminMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/system/SystemAttachmentMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/system/SystemAttachmentMapper.xml new file mode 100644 index 0000000..37eda09 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/system/SystemAttachmentMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/system/SystemCityMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/system/SystemCityMapper.xml new file mode 100644 index 0000000..4e81a63 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/system/SystemCityMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/system/SystemConfigMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/system/SystemConfigMapper.xml new file mode 100644 index 0000000..dc29a99 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/system/SystemConfigMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/system/SystemFormTempMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/system/SystemFormTempMapper.xml new file mode 100644 index 0000000..f875545 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/system/SystemFormTempMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/system/SystemGroupDataMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/system/SystemGroupDataMapper.xml new file mode 100644 index 0000000..5e2a741 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/system/SystemGroupDataMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/system/SystemGroupMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/system/SystemGroupMapper.xml new file mode 100644 index 0000000..4ab02d2 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/system/SystemGroupMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/system/SystemMenuMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/system/SystemMenuMapper.xml new file mode 100644 index 0000000..5a32de8 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/system/SystemMenuMapper.xml @@ -0,0 +1,25 @@ + + + + + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/system/SystemNotificationMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/system/SystemNotificationMapper.xml new file mode 100644 index 0000000..274a7ff --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/system/SystemNotificationMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/system/SystemPermissionsMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/system/SystemPermissionsMapper.xml new file mode 100644 index 0000000..fad69bd --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/system/SystemPermissionsMapper.xml @@ -0,0 +1,16 @@ + + + + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/system/SystemRoleMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/system/SystemRoleMapper.xml new file mode 100644 index 0000000..d85cf7a --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/system/SystemRoleMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/system/SystemRoleMenuMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/system/SystemRoleMenuMapper.xml new file mode 100644 index 0000000..39199ff --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/system/SystemRoleMenuMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/system/SystemRolePermissionsMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/system/SystemRolePermissionsMapper.xml new file mode 100644 index 0000000..e2216fb --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/system/SystemRolePermissionsMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/system/SystemStoreMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/system/SystemStoreMapper.xml new file mode 100644 index 0000000..6ee9e33 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/system/SystemStoreMapper.xml @@ -0,0 +1,10 @@ + + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/system/SystemStoreStaffMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/system/SystemStoreStaffMapper.xml new file mode 100644 index 0000000..c6b7053 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/system/SystemStoreStaffMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/system/SystemUserLevelMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/system/SystemUserLevelMapper.xml new file mode 100644 index 0000000..8900eb4 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/system/SystemUserLevelMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/user/UserAddressMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/user/UserAddressMapper.xml new file mode 100644 index 0000000..3313ed9 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/user/UserAddressMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/user/UserBillMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/user/UserBillMapper.xml new file mode 100644 index 0000000..71e9b22 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/user/UserBillMapper.xml @@ -0,0 +1,48 @@ + + + + + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/user/UserBrokerageRecordMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/user/UserBrokerageRecordMapper.xml new file mode 100644 index 0000000..6f9db33 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/user/UserBrokerageRecordMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/user/UserExperienceRecordMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/user/UserExperienceRecordMapper.xml new file mode 100644 index 0000000..385d01c --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/user/UserExperienceRecordMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/user/UserGroupMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/user/UserGroupMapper.xml new file mode 100644 index 0000000..352e5a0 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/user/UserGroupMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/user/UserIntegralRecordMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/user/UserIntegralRecordMapper.xml new file mode 100644 index 0000000..3b37f9a --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/user/UserIntegralRecordMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/user/UserLevelMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/user/UserLevelMapper.xml new file mode 100644 index 0000000..4287cd6 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/user/UserLevelMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/user/UserMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/user/UserMapper.xml new file mode 100644 index 0000000..0d4cfc1 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/user/UserMapper.xml @@ -0,0 +1,80 @@ + + + + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/user/UserSignMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/user/UserSignMapper.xml new file mode 100644 index 0000000..1d06271 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/user/UserSignMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/user/UserTagMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/user/UserTagMapper.xml new file mode 100644 index 0000000..5744604 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/user/UserTagMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/user/UserTokenMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/user/UserTokenMapper.xml new file mode 100644 index 0000000..f69dee5 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/user/UserTokenMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/wechat/TemplateMessageMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/wechat/TemplateMessageMapper.xml new file mode 100644 index 0000000..df92a13 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/wechat/TemplateMessageMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/wechat/WechatCallbackMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/wechat/WechatCallbackMapper.xml new file mode 100644 index 0000000..ae94167 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/wechat/WechatCallbackMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/wechat/WechatExceptionsMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/wechat/WechatExceptionsMapper.xml new file mode 100644 index 0000000..14f849b --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/wechat/WechatExceptionsMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/wechat/WechatPayInfoMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/wechat/WechatPayInfoMapper.xml new file mode 100644 index 0000000..57abf78 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/wechat/WechatPayInfoMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/wechat/WechatQrcodeMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/wechat/WechatQrcodeMapper.xml new file mode 100644 index 0000000..2cd318e --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/wechat/WechatQrcodeMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/mapper/wechat/WechatReplyMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/wechat/WechatReplyMapper.xml new file mode 100644 index 0000000..f99494c --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/wechat/WechatReplyMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/crmeb-service/src/main/resources/template/java/Controller.java.vm b/crmeb/crmeb-service/src/main/resources/template/java/Controller.java.vm new file mode 100644 index 0000000..5615872 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/template/java/Controller.java.vm @@ -0,0 +1,103 @@ +package ${package}.${moduleName}.controller; + +import java.util.Arrays; +import java.util.Map; + +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import ${package}.${moduleName}.entity.${className}Entity; +import ${package}.${moduleName}.service.${className}Service; +import ${mainPath}.common.utils.PageUtils; +import ${mainPath}.common.utils.R; + + + + +/** + * ${comments} 控制器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: ${author} + * +---------------------------------------------------------------------- + * | @date ${datetime} + * +---------------------------------------------------------------------- + * | @date ${email} + * +---------------------------------------------------------------------- + */ +@RestController +@RequestMapping("${moduleName}/${pathName}") +public class ${className}Controller { + @Autowired + private ${className}Service ${classname}Service; + + /** + * 列表信息 + */ + @RequestMapping("/list") + @PreAuthorize("${moduleName}:${pathName}:list") + public CommonResult> list(@RequestParam Map params){ + CommonPage<${classname}> page = CommonPage.restPag(${classname}Service.queryPage(params)); + + return CommonResult.success(page); + } + + + /** + * 详情数据 + */ + @RequestMapping("/info/{${pk.attrname}}") + @PreAuthorize("${moduleName}:${pathName}:info") + public CommonResult<${classname}> info(@PathVariable("${pk.attrname}") ${pk.attrType} ${pk.attrname}){ + ${className}Entity ${classname} = ${classname}Service.getById(${pk.attrname}); + + return CommonResult.success(${classname}); + } + + /** + * 新增数据 + */ + @RequestMapping("/save") + @PreAuthorize("${moduleName}:${pathName}:save") + public CommonResult save(@RequestBody ${className}Entity ${classname}){ + if (${classname}Service.save(${classname})) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 修改数据 + */ + @RequestMapping("/update") + @PreAuthorize("${moduleName}:${pathName}:update") + public CommonResult update(@RequestBody ${className}Entity ${classname}){ + if (${classname}Service.updateById(${classname})) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + + /** + * 删除:根据id集合 + */ + @RequestMapping("/delete") + @PreAuthorize("${moduleName}:${pathName}:delete") + public CommonResult delete(@RequestBody ${pk.attrType}[] ${pk.attrname}s){ + if (${classname}Service.removeByIds(Arrays.asList(${pk.attrname}))) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + +} diff --git a/crmeb/crmeb-service/src/main/resources/template/java/Dao.java.vm b/crmeb/crmeb-service/src/main/resources/template/java/Dao.java.vm new file mode 100644 index 0000000..56a70dc --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/template/java/Dao.java.vm @@ -0,0 +1,26 @@ +package ${package}.${moduleName}.dao; + +import ${package}.${moduleName}.entity.${className}Entity; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + * ${comments} DAO 映射层 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * @author: ${author} + * +---------------------------------------------------------------------- + * @date ${datetime} + * +---------------------------------------------------------------------- + * @email ${email} + * +---------------------------------------------------------------------- + */ +@Mapper +public interface ${className}Dao extends BaseMapper<${className}Entity> { + +} diff --git a/crmeb/crmeb-service/src/main/resources/template/java/Entity.java.vm b/crmeb/crmeb-service/src/main/resources/template/java/Entity.java.vm new file mode 100644 index 0000000..d48b625 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/template/java/Entity.java.vm @@ -0,0 +1,44 @@ +package ${package}.${moduleName}.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; + + #if(${hasBigDecimal}) + import java.math.BigDecimal; + #end +import java.io.Serializable; +import java.util.Date; +import lombok.Data; + +/** + * ${comments} Entity 实体类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * @author: ${author} + * +---------------------------------------------------------------------- + * @date ${datetime} + * +---------------------------------------------------------------------- + * @email ${email} + * +---------------------------------------------------------------------- + */ +@Data +@TableName("${tableName}") +public class ${className}Entity implements Serializable { + private static final long serialVersionUID = 1L; + + #foreach ($column in $columns) + /** + * $column.comments + */ + #if($column.columnName == $pk.columnName) + @TableId + #end + private $column.attrType $column.attrname; + #end + +} diff --git a/crmeb/crmeb-service/src/main/resources/template/java/Service.java.vm b/crmeb/crmeb-service/src/main/resources/template/java/Service.java.vm new file mode 100644 index 0000000..2244ed8 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/template/java/Service.java.vm @@ -0,0 +1,35 @@ +package ${package}.${moduleName}.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import ${mainPath}.common.utils.PageUtils; +import ${package}.${moduleName}.entity.${className}Entity; + +import java.util.Map; + +/** + * ${comments} 业务接口 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * @author: ${author} + * +---------------------------------------------------------------------- + * @date ${datetime} + * +---------------------------------------------------------------------- + * @email ${email} + * +---------------------------------------------------------------------- + */ +public interface ${className}Service extends IService<${className}Entity> { + + /** + * ${className} 列表查询 + * @param request 默认是是体类 根据自己需求修改或者创建自己的request + * @param pageParamRequest 分页参数对象 + * @return + */ + List<${className}> getList(${className}Entity request, PageParamRequest pageParamRequest) +} + diff --git a/crmeb/crmeb-service/src/main/resources/template/java/ServiceImpl.java.vm b/crmeb/crmeb-service/src/main/resources/template/java/ServiceImpl.java.vm new file mode 100644 index 0000000..f7f928b --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/template/java/ServiceImpl.java.vm @@ -0,0 +1,54 @@ +package ${package}.${moduleName}.service.impl; + +import org.springframework.stereotype.Service; +import java.util.Map; +import com.baomidou.mybatisplus.core.conditions.pageQueryUtils.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import ${mainPath}.common.utils.PageUtils; +import ${mainPath}.common.utils.Query; + +import ${package}.${moduleName}.dao.${className}Dao; +import ${package}.${moduleName}.entity.${className}Entity; +import ${package}.${moduleName}.service.${className}Service; + + +/** + * ${comments} 接口实现类 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * @author: ${author} + * +---------------------------------------------------------------------- + * @date ${datetime} + * +---------------------------------------------------------------------- + * @email ${email} + * +---------------------------------------------------------------------- + */ + +@Service("${classname}Service") +public class ${className}ServiceImpl extends ServiceImpl<${className}Dao, ${className}Entity> implements ${className}Service { + + /** + * ${className}列表查询 + * @param request 默认是是体类 根据自己需求修改或者创建自己的request + * @param pageParamRequest 分页参数对象 + * @return + */ + @Override + public PageUtils queryPage(${className}Entity request, PageParamRequest pageParamRequest) { + PageHelper.startPage(pageParamRequest.getPageNum(), pageParamRequest.getPageSize()); + + //列表查询 ${className} 类的多条件查询 + LambdaQueryWrapper<${className}> lambdaQueryWrapper = new LambdaQueryWrapper<>(); + ${className} model = new ${className}(); + BeanUtils.copyProperties(request, model); + lambdaQueryWrapper.setEntity(model); + return dao.selectList(lambdaQueryWrapper); + } + +} diff --git a/crmeb/crmeb-service/src/main/resources/template/sql/eb_system_menu.sql.vm b/crmeb/crmeb-service/src/main/resources/template/sql/eb_system_menu.sql.vm new file mode 100644 index 0000000..08e74a8 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/template/sql/eb_system_menu.sql.vm @@ -0,0 +1,11 @@ +-- 自动生成新增菜单SQL 这里仅仅是新增菜单数据,实际开发中需要分配对应权限才可以正常使用 +-- 菜单目录SQL menu_type = M-目录,C-菜单,A-按钮 + INSERT INTO `eb_system_menu` (`pid`, `name`,`perms`,`component`, `menu_type`) VALUES (0,'${moduleName}','${moduleName}:${pathName}','','C'); +-- 目录菜单id 用于按钮新增时作为父ID + set @parentId = @@identity; +-- 所在表的CRUD菜单 根据自己需求修改添加 + INSERT INTO `eb_system_menu` (`pid`, `name`,`perms`,`component`, `menu_type`) SELECT @parentId,'DATA_LIST','${moduleName}:${pathName}:list','${moduleName}/${pathName}/list','A'; + INSERT INTO `eb_system_menu` (`pid`, `name`,`perms`,`component`, `menu_type`) SELECT @parentId,'DATA_INFO','${moduleName}:${pathName}:info','${moduleName}:${pathName}/info','A'; + INSERT INTO `eb_system_menu` (`pid`, `name`,`perms`,`component`, `menu_type`) SELECT @parentId,'DATA_EDITE','${moduleName}:${pathName}:update','${moduleName}:${pathName}/info','A'; + INSERT INTO `eb_system_menu` (`pid`, `name`,`perms`,`component`, `menu_type`) SELECT @parentId,'DATA_SAVE','${moduleName}:${pathName}:save','','A'; + INSERT INTO `eb_system_menu` (`pid`, `name`,`perms`,`component`, `menu_type`) SELECT @parentId,'DATA_DELETE','${moduleName}:${pathName}:delete','','A'; diff --git a/crmeb/crmeb-service/src/main/resources/template/vue/add-and-update.vue.vm b/crmeb/crmeb-service/src/main/resources/template/vue/add-and-update.vue.vm new file mode 100644 index 0000000..bb80183 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/template/vue/add-and-update.vue.vm @@ -0,0 +1,77 @@ + + + diff --git a/crmeb/crmeb-service/src/main/resources/template/vue/api.js.vm b/crmeb/crmeb-service/src/main/resources/template/vue/api.js.vm new file mode 100644 index 0000000..f0d3d84 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/template/vue/api.js.vm @@ -0,0 +1,71 @@ +// +---------------------------------------------------------------------- +// | CRMEB [ CRMEB赋能开发者,助力企业发展 ] +// +---------------------------------------------------------------------- +// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved. +// +---------------------------------------------------------------------- +// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 +// +---------------------------------------------------------------------- +// | Author: CRMEB Team +// +---------------------------------------------------------------------- + +import request from '@/utils/request' + +/** + * 新增${className} + * @param pram + */ +export function ${className}CreateApi(data) { + return request({ + url: '${moduleName}/${pathName}/save', + method: 'POST', + data + }) +} + +/** + * ${pathName}更新 + * @param pram + */ +export function ${pathName}UpdateApi(data) { + return request({ + url: '${moduleName}/${pathName}/update', + method: 'POST', + data + }) +} + +/** + * ${pathName}详情 + * @param pram + */ +export function ${pathName}DetailApi(id) { + return request({ + url: `${moduleName}/${pathName}/info/${id}`, + method: 'GET' + }) +} + +/** + * ${pathName}删除 + * @param pram + */ +export function ${pathName}DeleteApi(id) { + return request({ + url: `${moduleName}/${pathName}/delete/${id}`, + method: 'get' + }) +} + + +/** + * ${pathName}列表 + * @param pram + */ +export function ${pathName}ListApi(params) { + return request({ + url: '${moduleName}/${pathName}/list', + method: 'GET', + params + }) +} + diff --git a/crmeb/crmeb-service/src/main/resources/template/vue/index.vue.vm b/crmeb/crmeb-service/src/main/resources/template/vue/index.vue.vm new file mode 100644 index 0000000..2529d39 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/template/vue/index.vue.vm @@ -0,0 +1,131 @@ + + + diff --git a/crmeb/crmeb-service/src/main/resources/template/xml/Dao.xml.vm b/crmeb/crmeb-service/src/main/resources/template/xml/Dao.xml.vm new file mode 100644 index 0000000..eba2268 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/template/xml/Dao.xml.vm @@ -0,0 +1,14 @@ + + + + + + + +#foreach($column in $columns) + +#end + + + + diff --git a/crmeb/crmebimage/crmebimage/change/bargain_header/bargain_header1.jpg b/crmeb/crmebimage/crmebimage/change/bargain_header/bargain_header1.jpg new file mode 100644 index 0000000..fb1fd03 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/change/bargain_header/bargain_header1.jpg differ diff --git a/crmeb/crmebimage/crmebimage/change/bargain_header/bargain_header2.jpg b/crmeb/crmebimage/crmebimage/change/bargain_header/bargain_header2.jpg new file mode 100644 index 0000000..ef4d3da Binary files /dev/null and b/crmeb/crmebimage/crmebimage/change/bargain_header/bargain_header2.jpg differ diff --git a/crmeb/crmebimage/crmebimage/change/bargain_header/bargain_header3.jpg b/crmeb/crmebimage/crmebimage/change/bargain_header/bargain_header3.jpg new file mode 100644 index 0000000..9a6ec06 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/change/bargain_header/bargain_header3.jpg differ diff --git a/crmeb/crmebimage/crmebimage/change/bargain_header/bargain_header4.jpg b/crmeb/crmebimage/crmebimage/change/bargain_header/bargain_header4.jpg new file mode 100644 index 0000000..9d90627 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/change/bargain_header/bargain_header4.jpg differ diff --git a/crmeb/crmebimage/crmebimage/change/bargain_header/bargain_header5.jpg b/crmeb/crmebimage/crmebimage/change/bargain_header/bargain_header5.jpg new file mode 100644 index 0000000..bd80f9f Binary files /dev/null and b/crmeb/crmebimage/crmebimage/change/bargain_header/bargain_header5.jpg differ diff --git a/crmeb/crmebimage/crmebimage/change/bargain_header_bg/bargain_header_bg1.jpg b/crmeb/crmebimage/crmebimage/change/bargain_header_bg/bargain_header_bg1.jpg new file mode 100644 index 0000000..049d912 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/change/bargain_header_bg/bargain_header_bg1.jpg differ diff --git a/crmeb/crmebimage/crmebimage/change/bargain_header_bg/bargain_header_bg2.jpg b/crmeb/crmebimage/crmebimage/change/bargain_header_bg/bargain_header_bg2.jpg new file mode 100644 index 0000000..243df76 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/change/bargain_header_bg/bargain_header_bg2.jpg differ diff --git a/crmeb/crmebimage/crmebimage/change/bargain_header_bg/bargain_header_bg3.jpg b/crmeb/crmebimage/crmebimage/change/bargain_header_bg/bargain_header_bg3.jpg new file mode 100644 index 0000000..d33fa0e Binary files /dev/null and b/crmeb/crmebimage/crmebimage/change/bargain_header_bg/bargain_header_bg3.jpg differ diff --git a/crmeb/crmebimage/crmebimage/change/bargain_header_bg/bargain_header_bg4.jpg b/crmeb/crmebimage/crmebimage/change/bargain_header_bg/bargain_header_bg4.jpg new file mode 100644 index 0000000..475c5d7 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/change/bargain_header_bg/bargain_header_bg4.jpg differ diff --git a/crmeb/crmebimage/crmebimage/change/bargain_header_bg/bargain_header_bg5.jpg b/crmeb/crmebimage/crmebimage/change/bargain_header_bg/bargain_header_bg5.jpg new file mode 100644 index 0000000..fea3f88 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/change/bargain_header_bg/bargain_header_bg5.jpg differ diff --git a/crmeb/crmebimage/crmebimage/change/bargain_post/bargain_post1.png b/crmeb/crmebimage/crmebimage/change/bargain_post/bargain_post1.png new file mode 100644 index 0000000..c53973a Binary files /dev/null and b/crmeb/crmebimage/crmebimage/change/bargain_post/bargain_post1.png differ diff --git a/crmeb/crmebimage/crmebimage/change/bargain_post/bargain_post2.png b/crmeb/crmebimage/crmebimage/change/bargain_post/bargain_post2.png new file mode 100644 index 0000000..4eb99dd Binary files /dev/null and b/crmeb/crmebimage/crmebimage/change/bargain_post/bargain_post2.png differ diff --git a/crmeb/crmebimage/crmebimage/change/bargain_post/bargain_post3.png b/crmeb/crmebimage/crmebimage/change/bargain_post/bargain_post3.png new file mode 100644 index 0000000..b9ebbae Binary files /dev/null and b/crmeb/crmebimage/crmebimage/change/bargain_post/bargain_post3.png differ diff --git a/crmeb/crmebimage/crmebimage/change/bargain_post/bargain_post4.png b/crmeb/crmebimage/crmebimage/change/bargain_post/bargain_post4.png new file mode 100644 index 0000000..5281b74 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/change/bargain_post/bargain_post4.png differ diff --git a/crmeb/crmebimage/crmebimage/change/bargain_post/bargain_post5.png b/crmeb/crmebimage/crmebimage/change/bargain_post/bargain_post5.png new file mode 100644 index 0000000..ae1a33c Binary files /dev/null and b/crmeb/crmebimage/crmebimage/change/bargain_post/bargain_post5.png differ diff --git a/crmeb/crmebimage/crmebimage/change/bargain_tip/bargain_tip1.png b/crmeb/crmebimage/crmebimage/change/bargain_tip/bargain_tip1.png new file mode 100644 index 0000000..3622757 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/change/bargain_tip/bargain_tip1.png differ diff --git a/crmeb/crmebimage/crmebimage/change/bargain_tip/bargain_tip2.png b/crmeb/crmebimage/crmebimage/change/bargain_tip/bargain_tip2.png new file mode 100644 index 0000000..5b7b4f4 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/change/bargain_tip/bargain_tip2.png differ diff --git a/crmeb/crmebimage/crmebimage/change/bargain_tip/bargain_tip3.png b/crmeb/crmebimage/crmebimage/change/bargain_tip/bargain_tip3.png new file mode 100644 index 0000000..769932f Binary files /dev/null and b/crmeb/crmebimage/crmebimage/change/bargain_tip/bargain_tip3.png differ diff --git a/crmeb/crmebimage/crmebimage/change/bargain_tip/bargain_tip4.png b/crmeb/crmebimage/crmebimage/change/bargain_tip/bargain_tip4.png new file mode 100644 index 0000000..0b56e05 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/change/bargain_tip/bargain_tip4.png differ diff --git a/crmeb/crmebimage/crmebimage/change/bargain_tip/bargain_tip5.png b/crmeb/crmebimage/crmebimage/change/bargain_tip/bargain_tip5.png new file mode 100644 index 0000000..2e8a040 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/change/bargain_tip/bargain_tip5.png differ diff --git a/crmeb/crmebimage/crmebimage/change/new_header/new_header1.png b/crmeb/crmebimage/crmebimage/change/new_header/new_header1.png new file mode 100644 index 0000000..04fa8f8 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/change/new_header/new_header1.png differ diff --git a/crmeb/crmebimage/crmebimage/change/new_header/new_header2.png b/crmeb/crmebimage/crmebimage/change/new_header/new_header2.png new file mode 100644 index 0000000..a3202ef Binary files /dev/null and b/crmeb/crmebimage/crmebimage/change/new_header/new_header2.png differ diff --git a/crmeb/crmebimage/crmebimage/change/new_header/new_header3.png b/crmeb/crmebimage/crmebimage/change/new_header/new_header3.png new file mode 100644 index 0000000..7e2abd5 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/change/new_header/new_header3.png differ diff --git a/crmeb/crmebimage/crmebimage/change/new_header/new_header4.png b/crmeb/crmebimage/crmebimage/change/new_header/new_header4.png new file mode 100644 index 0000000..1067ed9 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/change/new_header/new_header4.png differ diff --git a/crmeb/crmebimage/crmebimage/change/new_header/new_header5.png b/crmeb/crmebimage/crmebimage/change/new_header/new_header5.png new file mode 100644 index 0000000..9d53ae9 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/change/new_header/new_header5.png differ diff --git a/crmeb/crmebimage/crmebimage/change/share_tip/share_tip1.png b/crmeb/crmebimage/crmebimage/change/share_tip/share_tip1.png new file mode 100644 index 0000000..e04b65b Binary files /dev/null and b/crmeb/crmebimage/crmebimage/change/share_tip/share_tip1.png differ diff --git a/crmeb/crmebimage/crmebimage/change/share_tip/share_tip2.png b/crmeb/crmebimage/crmebimage/change/share_tip/share_tip2.png new file mode 100644 index 0000000..d21de92 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/change/share_tip/share_tip2.png differ diff --git a/crmeb/crmebimage/crmebimage/change/share_tip/share_tip3.png b/crmeb/crmebimage/crmebimage/change/share_tip/share_tip3.png new file mode 100644 index 0000000..1557628 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/change/share_tip/share_tip3.png differ diff --git a/crmeb/crmebimage/crmebimage/change/share_tip/share_tip4.png b/crmeb/crmebimage/crmebimage/change/share_tip/share_tip4.png new file mode 100644 index 0000000..23ac593 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/change/share_tip/share_tip4.png differ diff --git a/crmeb/crmebimage/crmebimage/change/share_tip/share_tip5.png b/crmeb/crmebimage/crmebimage/change/share_tip/share_tip5.png new file mode 100644 index 0000000..6baa268 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/change/share_tip/share_tip5.png differ diff --git a/crmeb/crmebimage/crmebimage/demoimage/001admin.jpg b/crmeb/crmebimage/crmebimage/demoimage/001admin.jpg new file mode 100644 index 0000000..64be707 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/demoimage/001admin.jpg differ diff --git a/crmeb/crmebimage/crmebimage/demoimage/001front.jpg b/crmeb/crmebimage/crmebimage/demoimage/001front.jpg new file mode 100644 index 0000000..26e052a Binary files /dev/null and b/crmeb/crmebimage/crmebimage/demoimage/001front.jpg differ diff --git a/crmeb/crmebimage/crmebimage/demoimage/01qiyejiangxiang.webp b/crmeb/crmebimage/crmebimage/demoimage/01qiyejiangxiang.webp new file mode 100644 index 0000000..cc14e29 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/demoimage/01qiyejiangxiang.webp differ diff --git a/crmeb/crmebimage/crmebimage/demoimage/02yulan.jpg b/crmeb/crmebimage/crmebimage/demoimage/02yulan.jpg new file mode 100644 index 0000000..7b143a1 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/demoimage/02yulan.jpg differ diff --git a/crmeb/crmebimage/crmebimage/demoimage/03-mobile-01.png b/crmeb/crmebimage/crmebimage/demoimage/03-mobile-01.png new file mode 100644 index 0000000..66c6fd0 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/demoimage/03-mobile-01.png differ diff --git a/crmeb/crmebimage/crmebimage/demoimage/04-mobile-02.png b/crmeb/crmebimage/crmebimage/demoimage/04-mobile-02.png new file mode 100644 index 0000000..a281c96 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/demoimage/04-mobile-02.png differ diff --git a/crmeb/crmebimage/crmebimage/demoimage/05-mobile-03.png b/crmeb/crmebimage/crmebimage/demoimage/05-mobile-03.png new file mode 100644 index 0000000..0409959 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/demoimage/05-mobile-03.png differ diff --git a/crmeb/crmebimage/crmebimage/demoimage/06-optionList.jpg b/crmeb/crmebimage/crmebimage/demoimage/06-optionList.jpg new file mode 100644 index 0000000..3644786 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/demoimage/06-optionList.jpg differ diff --git a/crmeb/crmebimage/crmebimage/demoimage/07-pc-01.png b/crmeb/crmebimage/crmebimage/demoimage/07-pc-01.png new file mode 100644 index 0000000..c378a38 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/demoimage/07-pc-01.png differ diff --git a/crmeb/crmebimage/crmebimage/demoimage/08-pc-02.png b/crmeb/crmebimage/crmebimage/demoimage/08-pc-02.png new file mode 100644 index 0000000..250978f Binary files /dev/null and b/crmeb/crmebimage/crmebimage/demoimage/08-pc-02.png differ diff --git a/crmeb/crmebimage/crmebimage/demoimage/09-pc-03.png b/crmeb/crmebimage/crmebimage/demoimage/09-pc-03.png new file mode 100644 index 0000000..842de36 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/demoimage/09-pc-03.png differ diff --git a/crmeb/crmebimage/crmebimage/demoimage/10-pc-04.png b/crmeb/crmebimage/crmebimage/demoimage/10-pc-04.png new file mode 100644 index 0000000..05f951c Binary files /dev/null and b/crmeb/crmebimage/crmebimage/demoimage/10-pc-04.png differ diff --git a/crmeb/crmebimage/crmebimage/demoimage/11-pc-05.png b/crmeb/crmebimage/crmebimage/demoimage/11-pc-05.png new file mode 100644 index 0000000..76e50fc Binary files /dev/null and b/crmeb/crmebimage/crmebimage/demoimage/11-pc-05.png differ diff --git a/crmeb/crmebimage/crmebimage/demoimage/12-pc-06.png b/crmeb/crmebimage/crmebimage/demoimage/12-pc-06.png new file mode 100644 index 0000000..3179677 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/demoimage/12-pc-06.png differ diff --git a/crmeb/crmebimage/crmebimage/demoimage/13yemiandesiner-min.gif b/crmeb/crmebimage/crmebimage/demoimage/13yemiandesiner-min.gif new file mode 100644 index 0000000..85608c1 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/demoimage/13yemiandesiner-min.gif differ diff --git a/crmeb/crmebimage/crmebimage/demoimage/13yemiandesiner.gif b/crmeb/crmebimage/crmebimage/demoimage/13yemiandesiner.gif new file mode 100644 index 0000000..30496ba Binary files /dev/null and b/crmeb/crmebimage/crmebimage/demoimage/13yemiandesiner.gif differ diff --git a/crmeb/crmebimage/crmebimage/demoimage/14yijianhuanse-min.gif b/crmeb/crmebimage/crmebimage/demoimage/14yijianhuanse-min.gif new file mode 100644 index 0000000..996b4b5 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/demoimage/14yijianhuanse-min.gif differ diff --git a/crmeb/crmebimage/crmebimage/demoimage/14yijianhuanse.gif b/crmeb/crmebimage/crmebimage/demoimage/14yijianhuanse.gif new file mode 100644 index 0000000..c31cf54 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/demoimage/14yijianhuanse.gif differ diff --git a/crmeb/crmebimage/crmebimage/demoimage/15webPCadmin-min.gif b/crmeb/crmebimage/crmebimage/demoimage/15webPCadmin-min.gif new file mode 100644 index 0000000..c89714c Binary files /dev/null and b/crmeb/crmebimage/crmebimage/demoimage/15webPCadmin-min.gif differ diff --git a/crmeb/crmebimage/crmebimage/demoimage/15webPCadmin.gif b/crmeb/crmebimage/crmebimage/demoimage/15webPCadmin.gif new file mode 100644 index 0000000..1634688 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/demoimage/15webPCadmin.gif differ diff --git a/crmeb/crmebimage/crmebimage/demoimage/17lianxikefu.png b/crmeb/crmebimage/crmebimage/demoimage/17lianxikefu.png new file mode 100644 index 0000000..2834869 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/demoimage/17lianxikefu.png differ diff --git a/crmeb/crmebimage/crmebimage/demoimage/c1.jpg b/crmeb/crmebimage/crmebimage/demoimage/c1.jpg new file mode 100644 index 0000000..adc017c Binary files /dev/null and b/crmeb/crmebimage/crmebimage/demoimage/c1.jpg differ diff --git a/crmeb/crmebimage/crmebimage/demoimage/c2.jpg b/crmeb/crmebimage/crmebimage/demoimage/c2.jpg new file mode 100644 index 0000000..306d448 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/demoimage/c2.jpg differ diff --git a/crmeb/crmebimage/crmebimage/demoimage/crmebdouyin.jpg b/crmeb/crmebimage/crmebimage/demoimage/crmebdouyin.jpg new file mode 100644 index 0000000..b97a716 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/demoimage/crmebdouyin.jpg differ diff --git a/crmeb/crmebimage/crmebimage/demoimage/cus01.jpg b/crmeb/crmebimage/crmebimage/demoimage/cus01.jpg new file mode 100644 index 0000000..676a6f1 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/demoimage/cus01.jpg differ diff --git a/crmeb/crmebimage/crmebimage/demoimage/danshanghu_kefu.jpg b/crmeb/crmebimage/crmebimage/demoimage/danshanghu_kefu.jpg new file mode 100644 index 0000000..92068e9 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/demoimage/danshanghu_kefu.jpg differ diff --git a/crmeb/crmebimage/crmebimage/demoimage/duoshanghu_kefu.jpg b/crmeb/crmebimage/crmebimage/demoimage/duoshanghu_kefu.jpg new file mode 100644 index 0000000..e071e00 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/demoimage/duoshanghu_kefu.jpg differ diff --git a/crmeb/crmebimage/crmebimage/demoimage/gitee-java.jpg b/crmeb/crmebimage/crmebimage/demoimage/gitee-java.jpg new file mode 100644 index 0000000..9f8bcac Binary files /dev/null and b/crmeb/crmebimage/crmebimage/demoimage/gitee-java.jpg differ diff --git a/crmeb/crmebimage/crmebimage/demoimage/gitee-广告_java多商户.jpg b/crmeb/crmebimage/crmebimage/demoimage/gitee-广告_java多商户.jpg new file mode 100644 index 0000000..d95c997 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/demoimage/gitee-广告_java多商户.jpg differ diff --git a/crmeb/crmebimage/crmebimage/demoimage/home2023618.jpg b/crmeb/crmebimage/crmebimage/demoimage/home2023618.jpg new file mode 100644 index 0000000..ae34d8c Binary files /dev/null and b/crmeb/crmebimage/crmebimage/demoimage/home2023618.jpg differ diff --git a/crmeb/crmebimage/crmebimage/demoimage/javaop2.jpg b/crmeb/crmebimage/crmebimage/demoimage/javaop2.jpg new file mode 100644 index 0000000..ee91dff Binary files /dev/null and b/crmeb/crmebimage/crmebimage/demoimage/javaop2.jpg differ diff --git a/crmeb/crmebimage/crmebimage/demoimage/kefu.jpg b/crmeb/crmebimage/crmebimage/demoimage/kefu.jpg new file mode 100644 index 0000000..c593687 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/demoimage/kefu.jpg differ diff --git a/crmeb/crmebimage/crmebimage/demoimage/qqcus.jpg b/crmeb/crmebimage/crmebimage/demoimage/qqcus.jpg new file mode 100644 index 0000000..da43f2d Binary files /dev/null and b/crmeb/crmebimage/crmebimage/demoimage/qqcus.jpg differ diff --git a/crmeb/crmebimage/crmebimage/demoimage/wellcomJavaGroup.jpg b/crmeb/crmebimage/crmebimage/demoimage/wellcomJavaGroup.jpg new file mode 100644 index 0000000..ce6424f Binary files /dev/null and b/crmeb/crmebimage/crmebimage/demoimage/wellcomJavaGroup.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/0016d1efa86d41e38e76801a7cd743c6wcupy21hvb.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/0016d1efa86d41e38e76801a7cd743c6wcupy21hvb.jpg new file mode 100644 index 0000000..3002585 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/0016d1efa86d41e38e76801a7cd743c6wcupy21hvb.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/010f3a33b48846a39c2c086b4a289fa1c0aply6wjn.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/010f3a33b48846a39c2c086b4a289fa1c0aply6wjn.png new file mode 100644 index 0000000..c045f8b Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/010f3a33b48846a39c2c086b4a289fa1c0aply6wjn.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/02805afbe2964016a7ec11dc723273634a65204z4d.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/02805afbe2964016a7ec11dc723273634a65204z4d.png new file mode 100644 index 0000000..afc8977 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/02805afbe2964016a7ec11dc723273634a65204z4d.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/0353c775de384b939cd994ac33b6c3f4m328kwji83.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/0353c775de384b939cd994ac33b6c3f4m328kwji83.png new file mode 100644 index 0000000..13b70ec Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/0353c775de384b939cd994ac33b6c3f4m328kwji83.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/03cc34d0bb3f4bbcafa751462a2783c35u00exmfji.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/03cc34d0bb3f4bbcafa751462a2783c35u00exmfji.jpg new file mode 100644 index 0000000..78add73 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/03cc34d0bb3f4bbcafa751462a2783c35u00exmfji.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/044cb00c43134dde88a76770a65c4b73aggk7cb6bo.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/044cb00c43134dde88a76770a65c4b73aggk7cb6bo.png new file mode 100644 index 0000000..6791c1e Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/044cb00c43134dde88a76770a65c4b73aggk7cb6bo.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/04fae7b9bc9a44e899ea8f6fbce1600aexehrjdj82.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/04fae7b9bc9a44e899ea8f6fbce1600aexehrjdj82.png new file mode 100644 index 0000000..883ba6a Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/04fae7b9bc9a44e899ea8f6fbce1600aexehrjdj82.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/0517e880a70b4c539ff9163c90ab21f9hz0bea05p7.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/0517e880a70b4c539ff9163c90ab21f9hz0bea05p7.png new file mode 100644 index 0000000..d4108a6 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/0517e880a70b4c539ff9163c90ab21f9hz0bea05p7.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/05896e9a492041e7b665596046b8b4fa8fxkw2x1k9.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/05896e9a492041e7b665596046b8b4fa8fxkw2x1k9.png new file mode 100644 index 0000000..02cfad5 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/05896e9a492041e7b665596046b8b4fa8fxkw2x1k9.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/058dd806ac3b49ddad1bcd610981bf85dixxzthr5d.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/058dd806ac3b49ddad1bcd610981bf85dixxzthr5d.png new file mode 100644 index 0000000..55bc6c0 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/058dd806ac3b49ddad1bcd610981bf85dixxzthr5d.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/05be58dd877f45d28d1af418614e8fa5mi3mwr9p5o.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/05be58dd877f45d28d1af418614e8fa5mi3mwr9p5o.png new file mode 100644 index 0000000..352856e Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/05be58dd877f45d28d1af418614e8fa5mi3mwr9p5o.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/0624fe22d770438891ad666ebef9e21e1rhiepyec1.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/0624fe22d770438891ad666ebef9e21e1rhiepyec1.png new file mode 100644 index 0000000..ca623a4 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/0624fe22d770438891ad666ebef9e21e1rhiepyec1.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/0c32e97956d34f6e8a8b67caacec685283ufh1vuoy.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/0c32e97956d34f6e8a8b67caacec685283ufh1vuoy.png new file mode 100644 index 0000000..4d9b887 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/0c32e97956d34f6e8a8b67caacec685283ufh1vuoy.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/0cd9800f27e9400c859859277baf469c28c7hjd64b.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/0cd9800f27e9400c859859277baf469c28c7hjd64b.png new file mode 100644 index 0000000..b0830a0 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/0cd9800f27e9400c859859277baf469c28c7hjd64b.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/0d82b367fcf34c90a328bc8800af7f05jrg0cg172i.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/0d82b367fcf34c90a328bc8800af7f05jrg0cg172i.jpg new file mode 100644 index 0000000..a8b0ad0 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/0d82b367fcf34c90a328bc8800af7f05jrg0cg172i.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/0e67de5c892047cf8788b9b51d1c4d5al5g2khm62q.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/0e67de5c892047cf8788b9b51d1c4d5al5g2khm62q.jpg new file mode 100644 index 0000000..cb71023 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/0e67de5c892047cf8788b9b51d1c4d5al5g2khm62q.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/0eabacb2ab774f54bddd9b2b0ff212a49e7etvhouq.gif b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/0eabacb2ab774f54bddd9b2b0ff212a49e7etvhouq.gif new file mode 100644 index 0000000..a841ac7 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/0eabacb2ab774f54bddd9b2b0ff212a49e7etvhouq.gif differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/11113e1876ac427bb3173086a3bd6c5bhyan1ea9pz.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/11113e1876ac427bb3173086a3bd6c5bhyan1ea9pz.png new file mode 100644 index 0000000..ec71be3 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/11113e1876ac427bb3173086a3bd6c5bhyan1ea9pz.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/1369d83740284b6aa0601a0bc0960a050wfmede2py.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/1369d83740284b6aa0601a0bc0960a050wfmede2py.png new file mode 100644 index 0000000..883548b Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/1369d83740284b6aa0601a0bc0960a050wfmede2py.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/14e4ecbdbfcb48909b4a7f93b2ce6a3e360qlj0rtb.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/14e4ecbdbfcb48909b4a7f93b2ce6a3e360qlj0rtb.png new file mode 100644 index 0000000..60e8422 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/14e4ecbdbfcb48909b4a7f93b2ce6a3e360qlj0rtb.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/1618a47e11e745ff90c70f752c204e17qi6vjngrcd.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/1618a47e11e745ff90c70f752c204e17qi6vjngrcd.jpg new file mode 100644 index 0000000..8246d72 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/1618a47e11e745ff90c70f752c204e17qi6vjngrcd.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/166caeeb0f234d5e93c4baebf533e3c6cpk8chqitx.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/166caeeb0f234d5e93c4baebf533e3c6cpk8chqitx.jpg new file mode 100644 index 0000000..039bb97 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/166caeeb0f234d5e93c4baebf533e3c6cpk8chqitx.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/19171c7360924d47a39f048414045e765k3rr7xwr2.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/19171c7360924d47a39f048414045e765k3rr7xwr2.png new file mode 100644 index 0000000..f278239 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/19171c7360924d47a39f048414045e765k3rr7xwr2.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/19242c389ab749d1b7dece74000b26204j7q3sirs1.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/19242c389ab749d1b7dece74000b26204j7q3sirs1.png new file mode 100644 index 0000000..b1964c8 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/19242c389ab749d1b7dece74000b26204j7q3sirs1.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/197b96e3a4d24728b4069b0c288326352gcds3duga.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/197b96e3a4d24728b4069b0c288326352gcds3duga.png new file mode 100644 index 0000000..728aa44 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/197b96e3a4d24728b4069b0c288326352gcds3duga.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/1aa14360c7264153acc50ff5c5af7451fejoxdb2bt.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/1aa14360c7264153acc50ff5c5af7451fejoxdb2bt.png new file mode 100644 index 0000000..3b1190b Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/1aa14360c7264153acc50ff5c5af7451fejoxdb2bt.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/1d14f2d2fa8f451a9d46fccacc3aa661tdwihn07he.gif b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/1d14f2d2fa8f451a9d46fccacc3aa661tdwihn07he.gif new file mode 100644 index 0000000..a841ac7 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/1d14f2d2fa8f451a9d46fccacc3aa661tdwihn07he.gif differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/1ec20d53b5fe4cea9b6b83dd90026d15qvui1h1cpp.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/1ec20d53b5fe4cea9b6b83dd90026d15qvui1h1cpp.png new file mode 100644 index 0000000..7d33c39 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/1ec20d53b5fe4cea9b6b83dd90026d15qvui1h1cpp.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/1f052138a6514e748137d863f54d719axyr6kovjd3.gif b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/1f052138a6514e748137d863f54d719axyr6kovjd3.gif new file mode 100644 index 0000000..9b3478d Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/1f052138a6514e748137d863f54d719axyr6kovjd3.gif differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/1fcc02fe479e493db9da240ee8e83675b3rprs95sz.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/1fcc02fe479e493db9da240ee8e83675b3rprs95sz.png new file mode 100644 index 0000000..095c6d4 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/1fcc02fe479e493db9da240ee8e83675b3rprs95sz.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/206799794c1b4602aa94340279bc36946x7jz72lzl.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/206799794c1b4602aa94340279bc36946x7jz72lzl.png new file mode 100644 index 0000000..40bf6b4 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/206799794c1b4602aa94340279bc36946x7jz72lzl.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/21c84909461c434a8ff39d467ba8d648prefpnpq15.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/21c84909461c434a8ff39d467ba8d648prefpnpq15.png new file mode 100644 index 0000000..b411f90 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/21c84909461c434a8ff39d467ba8d648prefpnpq15.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/22e7a94a8c7a48318e895aa3f23d24f1ecq3mqcdx8.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/22e7a94a8c7a48318e895aa3f23d24f1ecq3mqcdx8.jpg new file mode 100644 index 0000000..a6962eb Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/22e7a94a8c7a48318e895aa3f23d24f1ecq3mqcdx8.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/24fb34ad03244e1aa0899672f6450605x4g288iyus.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/24fb34ad03244e1aa0899672f6450605x4g288iyus.png new file mode 100644 index 0000000..ecc9d7c Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/24fb34ad03244e1aa0899672f6450605x4g288iyus.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/25077b4a4d654f9fa738b7433a118d4552177mpsc5.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/25077b4a4d654f9fa738b7433a118d4552177mpsc5.png new file mode 100644 index 0000000..55e06e4 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/25077b4a4d654f9fa738b7433a118d4552177mpsc5.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/2631ca1695464da982b202d239bdf717eunywwsimu.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/2631ca1695464da982b202d239bdf717eunywwsimu.jpg new file mode 100644 index 0000000..d06bfc5 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/2631ca1695464da982b202d239bdf717eunywwsimu.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/28d8c56d248948ddab759d1eb708ab1c2zquoclgbq.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/28d8c56d248948ddab759d1eb708ab1c2zquoclgbq.png new file mode 100644 index 0000000..f76ae4b Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/28d8c56d248948ddab759d1eb708ab1c2zquoclgbq.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/29a253f8752a46f4b2fb3b63767b4d89v1098p6yiv.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/29a253f8752a46f4b2fb3b63767b4d89v1098p6yiv.jpg new file mode 100644 index 0000000..25e4ee2 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/29a253f8752a46f4b2fb3b63767b4d89v1098p6yiv.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/2a104b07589e45998fe604f81e56c216ozicop5k74.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/2a104b07589e45998fe604f81e56c216ozicop5k74.jpg new file mode 100644 index 0000000..d2dc5ce Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/2a104b07589e45998fe604f81e56c216ozicop5k74.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/2a8554bcbf1b4396afef370f9255df19sacbmpcodn.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/2a8554bcbf1b4396afef370f9255df19sacbmpcodn.png new file mode 100644 index 0000000..70fc889 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/2a8554bcbf1b4396afef370f9255df19sacbmpcodn.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/2e47a337dbdf445d81b20c1b5aeedf01ybm0jmic0h.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/2e47a337dbdf445d81b20c1b5aeedf01ybm0jmic0h.png new file mode 100644 index 0000000..b05ff9c Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/2e47a337dbdf445d81b20c1b5aeedf01ybm0jmic0h.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/2eef89b403dd47619e349e3edb057ce4g2clr5d4xn.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/2eef89b403dd47619e349e3edb057ce4g2clr5d4xn.jpg new file mode 100644 index 0000000..32b63d1 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/2eef89b403dd47619e349e3edb057ce4g2clr5d4xn.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/31a9c9c08ae84c33879f8709a98877cb0tr5hsoh0p.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/31a9c9c08ae84c33879f8709a98877cb0tr5hsoh0p.png new file mode 100644 index 0000000..afef17b Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/31a9c9c08ae84c33879f8709a98877cb0tr5hsoh0p.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/3308f2d779874079b0e02ae206cf141bwb23ii2z52.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/3308f2d779874079b0e02ae206cf141bwb23ii2z52.png new file mode 100644 index 0000000..7ff068b Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/3308f2d779874079b0e02ae206cf141bwb23ii2z52.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/3316070ce6bb49aab05776cd21d91b21pra6fxiblz.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/3316070ce6bb49aab05776cd21d91b21pra6fxiblz.png new file mode 100644 index 0000000..124dd81 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/3316070ce6bb49aab05776cd21d91b21pra6fxiblz.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/33a35c7b85de4fec8ed148fc6f3e8e670itip8qtor.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/33a35c7b85de4fec8ed148fc6f3e8e670itip8qtor.png new file mode 100644 index 0000000..3a1088f Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/33a35c7b85de4fec8ed148fc6f3e8e670itip8qtor.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/33d6b8f635384c85abf8912771dd89c5gf0qu8zfk9.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/33d6b8f635384c85abf8912771dd89c5gf0qu8zfk9.png new file mode 100644 index 0000000..6e5fcc4 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/33d6b8f635384c85abf8912771dd89c5gf0qu8zfk9.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/354c461aab964049b3d276a8588977a8ugvejjqbox.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/354c461aab964049b3d276a8588977a8ugvejjqbox.png new file mode 100644 index 0000000..7d3c886 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/354c461aab964049b3d276a8588977a8ugvejjqbox.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/3598e8d0aa3f4bf1b61140daa0e36300k0te4s6z3j.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/3598e8d0aa3f4bf1b61140daa0e36300k0te4s6z3j.jpg new file mode 100644 index 0000000..979920e Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/3598e8d0aa3f4bf1b61140daa0e36300k0te4s6z3j.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/367026e6e99a4bd490b6a424e921b3d4ymiteod2gx.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/367026e6e99a4bd490b6a424e921b3d4ymiteod2gx.png new file mode 100644 index 0000000..7325d21 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/367026e6e99a4bd490b6a424e921b3d4ymiteod2gx.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/37382cca048b4011bdbacd3cbbe0814daw1o5x0tco.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/37382cca048b4011bdbacd3cbbe0814daw1o5x0tco.jpg new file mode 100644 index 0000000..18da489 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/37382cca048b4011bdbacd3cbbe0814daw1o5x0tco.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/37901b98fba74345ad0e8a575999ad09n9d3winw2c.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/37901b98fba74345ad0e8a575999ad09n9d3winw2c.jpg new file mode 100644 index 0000000..1720f02 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/37901b98fba74345ad0e8a575999ad09n9d3winw2c.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/3a21cc3f53444cd98078c5244a9472ac7r8mnpdj19.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/3a21cc3f53444cd98078c5244a9472ac7r8mnpdj19.png new file mode 100644 index 0000000..ede80a3 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/3a21cc3f53444cd98078c5244a9472ac7r8mnpdj19.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/3a395df3d79a40a08cbc938c35e2dc35b84sujo2yn.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/3a395df3d79a40a08cbc938c35e2dc35b84sujo2yn.png new file mode 100644 index 0000000..5eb3b11 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/3a395df3d79a40a08cbc938c35e2dc35b84sujo2yn.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/3ab2dae5527742319ae003c58cca264duewwp3esg8.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/3ab2dae5527742319ae003c58cca264duewwp3esg8.png new file mode 100644 index 0000000..bf67856 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/3ab2dae5527742319ae003c58cca264duewwp3esg8.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/3c31dd504b0e440f9f3dafd7b4fb660cu1i58m9n65.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/3c31dd504b0e440f9f3dafd7b4fb660cu1i58m9n65.png new file mode 100644 index 0000000..9b77128 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/3c31dd504b0e440f9f3dafd7b4fb660cu1i58m9n65.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/3dac9309ddfd46b08f67e4b1a2bf08d3bf2mp09gow.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/3dac9309ddfd46b08f67e4b1a2bf08d3bf2mp09gow.png new file mode 100644 index 0000000..e7f57e1 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/3dac9309ddfd46b08f67e4b1a2bf08d3bf2mp09gow.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/3eca7ab31b22479e80338e0a34cfaa3e5ikbs03gxz.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/3eca7ab31b22479e80338e0a34cfaa3e5ikbs03gxz.png new file mode 100644 index 0000000..2659e15 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/3eca7ab31b22479e80338e0a34cfaa3e5ikbs03gxz.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/3ed152917e3f4f7faa9414050b6cab49vuadulntb8.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/3ed152917e3f4f7faa9414050b6cab49vuadulntb8.jpg new file mode 100644 index 0000000..279623a Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/3ed152917e3f4f7faa9414050b6cab49vuadulntb8.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/40965a4dc1504b1fb360a942380996ee11bsimpqs3.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/40965a4dc1504b1fb360a942380996ee11bsimpqs3.png new file mode 100644 index 0000000..ff6469f Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/40965a4dc1504b1fb360a942380996ee11bsimpqs3.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/41622a74c8944f6cb7afac2e1d09da22wwjweacn72.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/41622a74c8944f6cb7afac2e1d09da22wwjweacn72.png new file mode 100644 index 0000000..fa980e3 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/41622a74c8944f6cb7afac2e1d09da22wwjweacn72.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/418c7649b2b646f4a13dd6f335ae927426354rq62r.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/418c7649b2b646f4a13dd6f335ae927426354rq62r.png new file mode 100644 index 0000000..1ba14c3 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/418c7649b2b646f4a13dd6f335ae927426354rq62r.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/432cb941d4f64f4c88d2d3a8b784f282kqlp2cu55l.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/432cb941d4f64f4c88d2d3a8b784f282kqlp2cu55l.jpg new file mode 100644 index 0000000..27c5a24 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/432cb941d4f64f4c88d2d3a8b784f282kqlp2cu55l.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/4336d25a226a4df1913369fd82ec8c53mre4nruc5s.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/4336d25a226a4df1913369fd82ec8c53mre4nruc5s.png new file mode 100644 index 0000000..9aa8d75 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/4336d25a226a4df1913369fd82ec8c53mre4nruc5s.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/4410717d904943c6833933be3631787a7rva238ji2.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/4410717d904943c6833933be3631787a7rva238ji2.png new file mode 100644 index 0000000..13a952c Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/4410717d904943c6833933be3631787a7rva238ji2.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/44bbd14303764d49a034ae51550a8452caek7lc1ch.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/44bbd14303764d49a034ae51550a8452caek7lc1ch.png new file mode 100644 index 0000000..2c8f826 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/44bbd14303764d49a034ae51550a8452caek7lc1ch.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/469a3189a95643a8851d4158eb7ff606vs6efrhkrc.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/469a3189a95643a8851d4158eb7ff606vs6efrhkrc.png new file mode 100644 index 0000000..e059695 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/469a3189a95643a8851d4158eb7ff606vs6efrhkrc.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/46d9b5a7e9e24fceb31c80eb6f31e2c7u4birl7vr1.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/46d9b5a7e9e24fceb31c80eb6f31e2c7u4birl7vr1.png new file mode 100644 index 0000000..7a669f1 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/46d9b5a7e9e24fceb31c80eb6f31e2c7u4birl7vr1.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/4811fe50a33f48309337e67c3d36318exseuh6qys6.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/4811fe50a33f48309337e67c3d36318exseuh6qys6.jpg new file mode 100644 index 0000000..838b68a Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/4811fe50a33f48309337e67c3d36318exseuh6qys6.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/488a6dd9c9954b5b995d96908ca5fdb9qw0hda3qr8.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/488a6dd9c9954b5b995d96908ca5fdb9qw0hda3qr8.jpg new file mode 100644 index 0000000..1b9ed72 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/488a6dd9c9954b5b995d96908ca5fdb9qw0hda3qr8.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/49ae68efce4848a185a8ddcb4e5c95a2zl2dlwi77v.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/49ae68efce4848a185a8ddcb4e5c95a2zl2dlwi77v.jpg new file mode 100644 index 0000000..3087c00 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/49ae68efce4848a185a8ddcb4e5c95a2zl2dlwi77v.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/4bdd334e3b084908ae56b7ce1e576204a43i68txom.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/4bdd334e3b084908ae56b7ce1e576204a43i68txom.jpg new file mode 100644 index 0000000..e2d2c1c Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/4bdd334e3b084908ae56b7ce1e576204a43i68txom.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/4bedfd95c947443685603bf08bae6947aw468cpz1y.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/4bedfd95c947443685603bf08bae6947aw468cpz1y.png new file mode 100644 index 0000000..dbd1198 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/4bedfd95c947443685603bf08bae6947aw468cpz1y.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/4d6a7711c889409c92eaf580f62b90ca0f92wo6cz2.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/4d6a7711c889409c92eaf580f62b90ca0f92wo6cz2.png new file mode 100644 index 0000000..1f1f36d Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/4d6a7711c889409c92eaf580f62b90ca0f92wo6cz2.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/50b4a853b4aa41a9bc8125ac2c2ae3e8in85dafiwk.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/50b4a853b4aa41a9bc8125ac2c2ae3e8in85dafiwk.png new file mode 100644 index 0000000..7595add Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/50b4a853b4aa41a9bc8125ac2c2ae3e8in85dafiwk.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/51c3c432ff5147fcb3b749af0404d7a783yc148lho.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/51c3c432ff5147fcb3b749af0404d7a783yc148lho.png new file mode 100644 index 0000000..e0fdd07 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/51c3c432ff5147fcb3b749af0404d7a783yc148lho.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/5267cf5c9aad49fa8b2699fe9c5344bbsw99nmba85.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/5267cf5c9aad49fa8b2699fe9c5344bbsw99nmba85.png new file mode 100644 index 0000000..dd982b3 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/5267cf5c9aad49fa8b2699fe9c5344bbsw99nmba85.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/5407cb9947bc4b5fbca0a51653bee42c1m8uj2y4zr.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/5407cb9947bc4b5fbca0a51653bee42c1m8uj2y4zr.png new file mode 100644 index 0000000..3d39b2d Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/5407cb9947bc4b5fbca0a51653bee42c1m8uj2y4zr.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/5409e5e504444752bb5c1076036ab7b44xcyhrtplk.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/5409e5e504444752bb5c1076036ab7b44xcyhrtplk.png new file mode 100644 index 0000000..0170fa7 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/5409e5e504444752bb5c1076036ab7b44xcyhrtplk.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/5486775d8cad4fd8adfc254d2e93857cn0wu5hq8f4.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/5486775d8cad4fd8adfc254d2e93857cn0wu5hq8f4.jpg new file mode 100644 index 0000000..663cd0a Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/5486775d8cad4fd8adfc254d2e93857cn0wu5hq8f4.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/54d7a09f1dee463fa12ec01c02294b31z66prnux9w.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/54d7a09f1dee463fa12ec01c02294b31z66prnux9w.png new file mode 100644 index 0000000..a38e099 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/54d7a09f1dee463fa12ec01c02294b31z66prnux9w.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/55014ffb17b74d039b5670298e1047fcyw64lmyzlj.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/55014ffb17b74d039b5670298e1047fcyw64lmyzlj.jpg new file mode 100644 index 0000000..d9a0e88 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/55014ffb17b74d039b5670298e1047fcyw64lmyzlj.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/568f2d58e43a4dd9bae304e2112025bben74m2lpt9.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/568f2d58e43a4dd9bae304e2112025bben74m2lpt9.png new file mode 100644 index 0000000..d070c92 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/568f2d58e43a4dd9bae304e2112025bben74m2lpt9.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/57a8dcf4457449dfb972b5beb015c053wxz70rjrsr.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/57a8dcf4457449dfb972b5beb015c053wxz70rjrsr.png new file mode 100644 index 0000000..8c86a15 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/57a8dcf4457449dfb972b5beb015c053wxz70rjrsr.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/58560559042841a498dc9a3ea975f3d2baabqbl1tp.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/58560559042841a498dc9a3ea975f3d2baabqbl1tp.png new file mode 100644 index 0000000..33342b9 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/58560559042841a498dc9a3ea975f3d2baabqbl1tp.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/5b40f7bd71f64931b30c38fa97631e7840rlio3vo2.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/5b40f7bd71f64931b30c38fa97631e7840rlio3vo2.jpg new file mode 100644 index 0000000..948eca7 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/5b40f7bd71f64931b30c38fa97631e7840rlio3vo2.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/5b4c2373aee143c79a2cda64c030e452vc2uhsxy3q.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/5b4c2373aee143c79a2cda64c030e452vc2uhsxy3q.png new file mode 100644 index 0000000..62fae53 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/5b4c2373aee143c79a2cda64c030e452vc2uhsxy3q.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/5d6617d3440c4d67802fdf064b77b471qzfen9343d.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/5d6617d3440c4d67802fdf064b77b471qzfen9343d.png new file mode 100644 index 0000000..e8eba44 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/5d6617d3440c4d67802fdf064b77b471qzfen9343d.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/5f08b84f574045da85e27548c5728ea3iwwv9b54dw.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/5f08b84f574045da85e27548c5728ea3iwwv9b54dw.png new file mode 100644 index 0000000..fb8cb51 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/5f08b84f574045da85e27548c5728ea3iwwv9b54dw.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/5f08bcbb6d1a47a0baa96abb9a3d32bbpyujua6ecm.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/5f08bcbb6d1a47a0baa96abb9a3d32bbpyujua6ecm.jpg new file mode 100644 index 0000000..8bf7b47 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/5f08bcbb6d1a47a0baa96abb9a3d32bbpyujua6ecm.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/6080162a7ef54ef2b9331c39f8f5d9d8wxskm48zy9.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/6080162a7ef54ef2b9331c39f8f5d9d8wxskm48zy9.png new file mode 100644 index 0000000..667ac7a Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/6080162a7ef54ef2b9331c39f8f5d9d8wxskm48zy9.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/60e1d297eb5a49bca13b92e2b0b411c2siripyrcu0.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/60e1d297eb5a49bca13b92e2b0b411c2siripyrcu0.jpg new file mode 100644 index 0000000..7f94b38 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/60e1d297eb5a49bca13b92e2b0b411c2siripyrcu0.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/62414c551db44169a6429c0dd3d162833o6e82okff.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/62414c551db44169a6429c0dd3d162833o6e82okff.jpg new file mode 100644 index 0000000..b98f2ba Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/62414c551db44169a6429c0dd3d162833o6e82okff.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/62afae7a0cea4401b2286715b2a5f69dsegpwwtsx2.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/62afae7a0cea4401b2286715b2a5f69dsegpwwtsx2.png new file mode 100644 index 0000000..6c01399 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/62afae7a0cea4401b2286715b2a5f69dsegpwwtsx2.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/63969148b6c4447d918124fd810c1da5m2h9aiylly.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/63969148b6c4447d918124fd810c1da5m2h9aiylly.jpg new file mode 100644 index 0000000..dce2e9c Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/63969148b6c4447d918124fd810c1da5m2h9aiylly.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/641eaebe810141229997b6a44670aa481xly87j88i.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/641eaebe810141229997b6a44670aa481xly87j88i.png new file mode 100644 index 0000000..8ad6a61 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/641eaebe810141229997b6a44670aa481xly87j88i.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/64f4f919b9f848aabfbcf56ed4c9dc5b0cvem1g2f8.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/64f4f919b9f848aabfbcf56ed4c9dc5b0cvem1g2f8.png new file mode 100644 index 0000000..a14c5cb Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/64f4f919b9f848aabfbcf56ed4c9dc5b0cvem1g2f8.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/6513e472eafe457c8613d0bb119d0c101elrmgn5tk.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/6513e472eafe457c8613d0bb119d0c101elrmgn5tk.png new file mode 100644 index 0000000..0bc61c2 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/6513e472eafe457c8613d0bb119d0c101elrmgn5tk.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/67b2961431ae473d8c24029b3d53d32a6xf1nljtw3.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/67b2961431ae473d8c24029b3d53d32a6xf1nljtw3.png new file mode 100644 index 0000000..3672014 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/67b2961431ae473d8c24029b3d53d32a6xf1nljtw3.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/67fdef82a1fe4262bfb20f593860c948kw3oz1i8oz.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/67fdef82a1fe4262bfb20f593860c948kw3oz1i8oz.png new file mode 100644 index 0000000..1e1fc96 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/67fdef82a1fe4262bfb20f593860c948kw3oz1i8oz.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/6927a786cace49d394334f2b6f2924d895tbhihuwr.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/6927a786cace49d394334f2b6f2924d895tbhihuwr.png new file mode 100644 index 0000000..9195550 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/6927a786cace49d394334f2b6f2924d895tbhihuwr.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/6ba5bf3b13c446cca8b703bf155ccc9362b0gvz1rc.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/6ba5bf3b13c446cca8b703bf155ccc9362b0gvz1rc.png new file mode 100644 index 0000000..47662c4 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/6ba5bf3b13c446cca8b703bf155ccc9362b0gvz1rc.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/6c266c40bd5e4ff8bb574fcecb2156feklz8uzymox.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/6c266c40bd5e4ff8bb574fcecb2156feklz8uzymox.png new file mode 100644 index 0000000..1ac64cb Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/6c266c40bd5e4ff8bb574fcecb2156feklz8uzymox.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/6e188941ad2b4c19a20b04316bb76c4636w09b1ghb.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/6e188941ad2b4c19a20b04316bb76c4636w09b1ghb.png new file mode 100644 index 0000000..e8d9400 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/6e188941ad2b4c19a20b04316bb76c4636w09b1ghb.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/6f599b7d21bf49dc9f93d6d1a1ef56e8hvyv1b4q5s.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/6f599b7d21bf49dc9f93d6d1a1ef56e8hvyv1b4q5s.png new file mode 100644 index 0000000..abf85df Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/6f599b7d21bf49dc9f93d6d1a1ef56e8hvyv1b4q5s.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/6f98afe5e63d4626a20ed710dc380d5bmc5a0w5phh.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/6f98afe5e63d4626a20ed710dc380d5bmc5a0w5phh.png new file mode 100644 index 0000000..6437de9 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/6f98afe5e63d4626a20ed710dc380d5bmc5a0w5phh.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/6fcb5bd8f5dd4ba3a485e572de6b22b6bnt364bw4z.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/6fcb5bd8f5dd4ba3a485e572de6b22b6bnt364bw4z.png new file mode 100644 index 0000000..074f079 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/6fcb5bd8f5dd4ba3a485e572de6b22b6bnt364bw4z.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/71b89c4f080948a981e06c6ba748c5e1x9mfhpzhfd.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/71b89c4f080948a981e06c6ba748c5e1x9mfhpzhfd.png new file mode 100644 index 0000000..af71142 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/71b89c4f080948a981e06c6ba748c5e1x9mfhpzhfd.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/723c114372764a8d8344ffaf1606eea19m9rxjx1vf.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/723c114372764a8d8344ffaf1606eea19m9rxjx1vf.png new file mode 100644 index 0000000..ac87689 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/723c114372764a8d8344ffaf1606eea19m9rxjx1vf.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/73f05211b4e74783892c868ea168e16drvd0kxau4h.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/73f05211b4e74783892c868ea168e16drvd0kxau4h.png new file mode 100644 index 0000000..19b3a3d Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/73f05211b4e74783892c868ea168e16drvd0kxau4h.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/73f9c6c1b14445b5bb477e8c05d8a2763sfij1gamk.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/73f9c6c1b14445b5bb477e8c05d8a2763sfij1gamk.jpg new file mode 100644 index 0000000..17a7f0e Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/73f9c6c1b14445b5bb477e8c05d8a2763sfij1gamk.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/7486f062431740098cb0923fec8d42f1pv9kxnbiag.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/7486f062431740098cb0923fec8d42f1pv9kxnbiag.png new file mode 100644 index 0000000..5b3f645 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/7486f062431740098cb0923fec8d42f1pv9kxnbiag.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/74e6bf23d0284c22ac1ca7837a3927ea5mej4ww8aa.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/74e6bf23d0284c22ac1ca7837a3927ea5mej4ww8aa.jpg new file mode 100644 index 0000000..edd19ec Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/74e6bf23d0284c22ac1ca7837a3927ea5mej4ww8aa.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/750c33dcdf134878ba1024c8828a191ardbxljb5qf.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/750c33dcdf134878ba1024c8828a191ardbxljb5qf.png new file mode 100644 index 0000000..c3d6cb6 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/750c33dcdf134878ba1024c8828a191ardbxljb5qf.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/77ac54ce5f514ebbb89854f927f2a891dzefr2qxmh.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/77ac54ce5f514ebbb89854f927f2a891dzefr2qxmh.png new file mode 100644 index 0000000..beacfa7 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/77ac54ce5f514ebbb89854f927f2a891dzefr2qxmh.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/7824e193be8b4b29a0d895b15ad429b1z5l6m2hkvv.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/7824e193be8b4b29a0d895b15ad429b1z5l6m2hkvv.png new file mode 100644 index 0000000..a2b15c8 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/7824e193be8b4b29a0d895b15ad429b1z5l6m2hkvv.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/78ab644d84bc4e858adf6b4f83774125p0uz4p70sb.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/78ab644d84bc4e858adf6b4f83774125p0uz4p70sb.png new file mode 100644 index 0000000..493ba04 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/78ab644d84bc4e858adf6b4f83774125p0uz4p70sb.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/7965c1d75e9d4a689f09ecb207468468icfybjk9g9.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/7965c1d75e9d4a689f09ecb207468468icfybjk9g9.png new file mode 100644 index 0000000..cf04f28 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/7965c1d75e9d4a689f09ecb207468468icfybjk9g9.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/7a0ce84c43fd470e8f960a6c463ffb98npn9grvkpb.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/7a0ce84c43fd470e8f960a6c463ffb98npn9grvkpb.png new file mode 100644 index 0000000..93c7e28 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/7a0ce84c43fd470e8f960a6c463ffb98npn9grvkpb.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/7a6475bba07c47bb98e5db0e0d21c8ebq5sw2kijlc.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/7a6475bba07c47bb98e5db0e0d21c8ebq5sw2kijlc.jpg new file mode 100644 index 0000000..82375b3 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/7a6475bba07c47bb98e5db0e0d21c8ebq5sw2kijlc.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/7b93fd438d974bf2a7b999e2e3a24880ggis08twkr.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/7b93fd438d974bf2a7b999e2e3a24880ggis08twkr.png new file mode 100644 index 0000000..cb81def Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/7b93fd438d974bf2a7b999e2e3a24880ggis08twkr.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/7beeefdecba6465d93fae9ec9ae952bde1fprb1tqi.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/7beeefdecba6465d93fae9ec9ae952bde1fprb1tqi.jpg new file mode 100644 index 0000000..41e65e8 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/7beeefdecba6465d93fae9ec9ae952bde1fprb1tqi.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/7ccf9f4158794bf997d97b4e871dd34b4qy58l2fyg.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/7ccf9f4158794bf997d97b4e871dd34b4qy58l2fyg.png new file mode 100644 index 0000000..09321c1 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/7ccf9f4158794bf997d97b4e871dd34b4qy58l2fyg.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/7de81090b87a4325a603e056a660c620q50t3etnee.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/7de81090b87a4325a603e056a660c620q50t3etnee.png new file mode 100644 index 0000000..9023cc3 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/7de81090b87a4325a603e056a660c620q50t3etnee.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/7e1777f0b47b4a14952891aa4f1b8458hiyqi9zu5t.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/7e1777f0b47b4a14952891aa4f1b8458hiyqi9zu5t.png new file mode 100644 index 0000000..1f0e8e5 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/7e1777f0b47b4a14952891aa4f1b8458hiyqi9zu5t.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/7ed93718dca04f9784517909f6bc4e2f8ee1idkw5m.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/7ed93718dca04f9784517909f6bc4e2f8ee1idkw5m.png new file mode 100644 index 0000000..1d018a8 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/7ed93718dca04f9784517909f6bc4e2f8ee1idkw5m.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/800915654d504c4a8da14ab4771b0411146f3w26cg.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/800915654d504c4a8da14ab4771b0411146f3w26cg.jpg new file mode 100644 index 0000000..9eb7176 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/800915654d504c4a8da14ab4771b0411146f3w26cg.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/80a11304bac14a44aa95b841e0f104cdg9e6zqrnxq.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/80a11304bac14a44aa95b841e0f104cdg9e6zqrnxq.png new file mode 100644 index 0000000..cc9c48b Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/80a11304bac14a44aa95b841e0f104cdg9e6zqrnxq.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/83dace527287474c890d2cfbc43119f0bneqqh8l21.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/83dace527287474c890d2cfbc43119f0bneqqh8l21.png new file mode 100644 index 0000000..61c0c6e Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/83dace527287474c890d2cfbc43119f0bneqqh8l21.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/84902bff7e5d4b09881b91b4a3d23b1bi0wwnljt9w.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/84902bff7e5d4b09881b91b4a3d23b1bi0wwnljt9w.png new file mode 100644 index 0000000..50771fb Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/84902bff7e5d4b09881b91b4a3d23b1bi0wwnljt9w.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/8492febd4a4f4fbca9278e177ad85976518hamump8.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/8492febd4a4f4fbca9278e177ad85976518hamump8.png new file mode 100644 index 0000000..9e3498c Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/8492febd4a4f4fbca9278e177ad85976518hamump8.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/84ed45fcdaf04ae3a53c9bc65f304fcepm3ioshj7j.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/84ed45fcdaf04ae3a53c9bc65f304fcepm3ioshj7j.png new file mode 100644 index 0000000..f274e7e Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/84ed45fcdaf04ae3a53c9bc65f304fcepm3ioshj7j.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/855c336f4cd84f3fb0bccae9d809365bpyfrc337l2.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/855c336f4cd84f3fb0bccae9d809365bpyfrc337l2.png new file mode 100644 index 0000000..3486cfe Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/855c336f4cd84f3fb0bccae9d809365bpyfrc337l2.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/85b457e6ed29491e98e1789a96a00353bs4cpvc7we.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/85b457e6ed29491e98e1789a96a00353bs4cpvc7we.png new file mode 100644 index 0000000..cdb5e26 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/85b457e6ed29491e98e1789a96a00353bs4cpvc7we.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/86f83bdc35534eeda2fb4daeb51dbb28pizkxqnzap.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/86f83bdc35534eeda2fb4daeb51dbb28pizkxqnzap.jpg new file mode 100644 index 0000000..69fc123 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/86f83bdc35534eeda2fb4daeb51dbb28pizkxqnzap.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/886e04146694474c966d346222fe2897ealwo6qycj.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/886e04146694474c966d346222fe2897ealwo6qycj.png new file mode 100644 index 0000000..dade5cd Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/886e04146694474c966d346222fe2897ealwo6qycj.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/88cea6884f5e4ae48b8e407266fc03dbnqk5y6cdcv.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/88cea6884f5e4ae48b8e407266fc03dbnqk5y6cdcv.jpg new file mode 100644 index 0000000..3767f56 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/88cea6884f5e4ae48b8e407266fc03dbnqk5y6cdcv.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/892a81babb06410389df6ca54da57390wfl75dlpx9.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/892a81babb06410389df6ca54da57390wfl75dlpx9.png new file mode 100644 index 0000000..7413a6e Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/892a81babb06410389df6ca54da57390wfl75dlpx9.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/8bb005bbf2fe4a168ed4c938063a1a6bgnj6w42pyb.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/8bb005bbf2fe4a168ed4c938063a1a6bgnj6w42pyb.png new file mode 100644 index 0000000..67c9c8a Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/8bb005bbf2fe4a168ed4c938063a1a6bgnj6w42pyb.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/8bf3c1a3c2284ef5b29ab6e320d2baf2lzw5pxuw1j.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/8bf3c1a3c2284ef5b29ab6e320d2baf2lzw5pxuw1j.png new file mode 100644 index 0000000..3691344 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/8bf3c1a3c2284ef5b29ab6e320d2baf2lzw5pxuw1j.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/8c9a5bfa049d4c56817318cd5ff405507t3jozdncn.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/8c9a5bfa049d4c56817318cd5ff405507t3jozdncn.png new file mode 100644 index 0000000..22618dd Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/8c9a5bfa049d4c56817318cd5ff405507t3jozdncn.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/8cf2817ac6ca4deb8ee956661e4ffd16m2u1lto2nu.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/8cf2817ac6ca4deb8ee956661e4ffd16m2u1lto2nu.png new file mode 100644 index 0000000..317699f Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/8cf2817ac6ca4deb8ee956661e4ffd16m2u1lto2nu.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/8cf6cd4fd29c4a59a094ba028c8f3f4czyd21fctzc.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/8cf6cd4fd29c4a59a094ba028c8f3f4czyd21fctzc.png new file mode 100644 index 0000000..9198d1a Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/8cf6cd4fd29c4a59a094ba028c8f3f4czyd21fctzc.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/8e03c0c2e4044c05a2c20e858945a2743nhibwclel.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/8e03c0c2e4044c05a2c20e858945a2743nhibwclel.png new file mode 100644 index 0000000..75427ee Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/8e03c0c2e4044c05a2c20e858945a2743nhibwclel.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/8e30a0b2fc0f4c19a14b5dea9d3f3e1ancrlbopakw.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/8e30a0b2fc0f4c19a14b5dea9d3f3e1ancrlbopakw.png new file mode 100644 index 0000000..1b80a4e Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/8e30a0b2fc0f4c19a14b5dea9d3f3e1ancrlbopakw.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/8f9eca84e2b14752ad4afb1ab8d06974xua9ambm9y.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/8f9eca84e2b14752ad4afb1ab8d06974xua9ambm9y.jpg new file mode 100644 index 0000000..6f4b264 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/8f9eca84e2b14752ad4afb1ab8d06974xua9ambm9y.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/907de1e2b8b048da9e75cfe48f27aaab42n9a7n2jr.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/907de1e2b8b048da9e75cfe48f27aaab42n9a7n2jr.png new file mode 100644 index 0000000..55a8b77 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/907de1e2b8b048da9e75cfe48f27aaab42n9a7n2jr.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/927222f030f146228d323c4af9d697c1ayirgv5ibc.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/927222f030f146228d323c4af9d697c1ayirgv5ibc.png new file mode 100644 index 0000000..c1e8c9e Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/927222f030f146228d323c4af9d697c1ayirgv5ibc.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/92f685f8a6044ec2a26a5901514fddb0qt5ygurp30.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/92f685f8a6044ec2a26a5901514fddb0qt5ygurp30.png new file mode 100644 index 0000000..f8815a5 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/92f685f8a6044ec2a26a5901514fddb0qt5ygurp30.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/956f4534d22343a88e860a1779c69afcboynkm8plz.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/956f4534d22343a88e860a1779c69afcboynkm8plz.png new file mode 100644 index 0000000..3c229e6 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/956f4534d22343a88e860a1779c69afcboynkm8plz.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/9612dab3a9ec44278dc5069c3d484f9388l25e3lxk.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/9612dab3a9ec44278dc5069c3d484f9388l25e3lxk.jpg new file mode 100644 index 0000000..57dcbe6 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/9612dab3a9ec44278dc5069c3d484f9388l25e3lxk.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/961eeb398bae4e60a520d5abf04f02335vlh98hjuc.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/961eeb398bae4e60a520d5abf04f02335vlh98hjuc.png new file mode 100644 index 0000000..ee53f82 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/961eeb398bae4e60a520d5abf04f02335vlh98hjuc.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/96cff8171dc8423ebd23559d0b14c8e8mv9d8a0iqw.gif b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/96cff8171dc8423ebd23559d0b14c8e8mv9d8a0iqw.gif new file mode 100644 index 0000000..e2d254a Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/96cff8171dc8423ebd23559d0b14c8e8mv9d8a0iqw.gif differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/980ef8cc00504f15af77712bf1cdde72yc273lnpt3.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/980ef8cc00504f15af77712bf1cdde72yc273lnpt3.jpg new file mode 100644 index 0000000..6d1ce5c Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/980ef8cc00504f15af77712bf1cdde72yc273lnpt3.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/9ac69cbe9da4459db264b1902ff6f693spomyy6lkw.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/9ac69cbe9da4459db264b1902ff6f693spomyy6lkw.png new file mode 100644 index 0000000..512a327 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/9ac69cbe9da4459db264b1902ff6f693spomyy6lkw.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/9b50f61c6ff748f0b491b971fe9b9d105p0d1echuu.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/9b50f61c6ff748f0b491b971fe9b9d105p0d1echuu.png new file mode 100644 index 0000000..bbc02f2 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/9b50f61c6ff748f0b491b971fe9b9d105p0d1echuu.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/9b7ccec87366454098153196b5ab091cqhibrmf8c5.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/9b7ccec87366454098153196b5ab091cqhibrmf8c5.png new file mode 100644 index 0000000..0223d14 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/9b7ccec87366454098153196b5ab091cqhibrmf8c5.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/9bd5d3800bc34ace8e980251dd40bbf2ma64ym9653.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/9bd5d3800bc34ace8e980251dd40bbf2ma64ym9653.png new file mode 100644 index 0000000..1f50e5a Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/9bd5d3800bc34ace8e980251dd40bbf2ma64ym9653.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/9d95f61a5db84591972fbc90f31c1fb21g5krqax8i.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/9d95f61a5db84591972fbc90f31c1fb21g5krqax8i.jpg new file mode 100644 index 0000000..58c0a89 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/9d95f61a5db84591972fbc90f31c1fb21g5krqax8i.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/9dcafbf40f4a43909ef991338583e633qh2zl6rdwi.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/9dcafbf40f4a43909ef991338583e633qh2zl6rdwi.jpg new file mode 100644 index 0000000..0698838 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/9dcafbf40f4a43909ef991338583e633qh2zl6rdwi.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/9deb872da95c42d2bf8c432075153b1egrrxlb666p.gif b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/9deb872da95c42d2bf8c432075153b1egrrxlb666p.gif new file mode 100644 index 0000000..d79f826 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/9deb872da95c42d2bf8c432075153b1egrrxlb666p.gif differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/9e97ddf78f804d50b985bdcf666478ebj76hbf3gpp.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/9e97ddf78f804d50b985bdcf666478ebj76hbf3gpp.jpg new file mode 100644 index 0000000..d26bb75 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/9e97ddf78f804d50b985bdcf666478ebj76hbf3gpp.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/9efdb0a56b6643b8b4a42f7586b5a731bv3ouokg2s.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/9efdb0a56b6643b8b4a42f7586b5a731bv3ouokg2s.png new file mode 100644 index 0000000..bb32092 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/9efdb0a56b6643b8b4a42f7586b5a731bv3ouokg2s.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/a1470da9ce7f44e3a0248f519b0b02844efygohg3b.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/a1470da9ce7f44e3a0248f519b0b02844efygohg3b.png new file mode 100644 index 0000000..4854eb7 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/a1470da9ce7f44e3a0248f519b0b02844efygohg3b.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/a17a7ac2e489478e95ba16e250e997ae0uq5mmtuud.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/a17a7ac2e489478e95ba16e250e997ae0uq5mmtuud.png new file mode 100644 index 0000000..2f3421e Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/a17a7ac2e489478e95ba16e250e997ae0uq5mmtuud.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/a1ec5b32c97143379648f46166547f092y57yxrs9l.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/a1ec5b32c97143379648f46166547f092y57yxrs9l.png new file mode 100644 index 0000000..ae3a59d Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/a1ec5b32c97143379648f46166547f092y57yxrs9l.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/a272fcefed804cf2b1e6785d5662c29ejqjxha0eow.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/a272fcefed804cf2b1e6785d5662c29ejqjxha0eow.jpg new file mode 100644 index 0000000..6b049a8 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/a272fcefed804cf2b1e6785d5662c29ejqjxha0eow.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/a2de0cb2c98e4c75be050949c4ffd602fvi2dw8tvl.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/a2de0cb2c98e4c75be050949c4ffd602fvi2dw8tvl.png new file mode 100644 index 0000000..03a6d90 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/a2de0cb2c98e4c75be050949c4ffd602fvi2dw8tvl.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/a498ea7fd9f74c4f812518c40c93fa79gtx5zeq28l.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/a498ea7fd9f74c4f812518c40c93fa79gtx5zeq28l.png new file mode 100644 index 0000000..fe8f353 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/a498ea7fd9f74c4f812518c40c93fa79gtx5zeq28l.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/a574f30b250941a7b3c0dd534e89df348n7shpz7t1.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/a574f30b250941a7b3c0dd534e89df348n7shpz7t1.png new file mode 100644 index 0000000..07fc01c Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/a574f30b250941a7b3c0dd534e89df348n7shpz7t1.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/aaaa1ea4a9f64baabc08b7a30205e720qazetub0ha.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/aaaa1ea4a9f64baabc08b7a30205e720qazetub0ha.png new file mode 100644 index 0000000..ae06b9e Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/aaaa1ea4a9f64baabc08b7a30205e720qazetub0ha.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/aaee8de98d1b4e62961cceb35f9ea627j69xdnj980.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/aaee8de98d1b4e62961cceb35f9ea627j69xdnj980.png new file mode 100644 index 0000000..a876c42 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/aaee8de98d1b4e62961cceb35f9ea627j69xdnj980.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/acbb97c8b30e4c63ae92a81f8679ab06uib5yau47a.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/acbb97c8b30e4c63ae92a81f8679ab06uib5yau47a.png new file mode 100644 index 0000000..02372ba Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/acbb97c8b30e4c63ae92a81f8679ab06uib5yau47a.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/ae020f17148b4cc19bcab221c0836dd1iy0vrck2jm.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/ae020f17148b4cc19bcab221c0836dd1iy0vrck2jm.png new file mode 100644 index 0000000..7602bdc Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/ae020f17148b4cc19bcab221c0836dd1iy0vrck2jm.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/aeb852fe04e946fbaf8f166234d2984blhbejw91jj.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/aeb852fe04e946fbaf8f166234d2984blhbejw91jj.png new file mode 100644 index 0000000..81ce2b2 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/aeb852fe04e946fbaf8f166234d2984blhbejw91jj.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/afd2e837f9fe40e8998a9f3c37fb4d9cvnz3qsdfl2.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/afd2e837f9fe40e8998a9f3c37fb4d9cvnz3qsdfl2.png new file mode 100644 index 0000000..0757f12 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/afd2e837f9fe40e8998a9f3c37fb4d9cvnz3qsdfl2.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/b4a1b5595add488db6a1a16c2dd45ec8lp8en2gask.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/b4a1b5595add488db6a1a16c2dd45ec8lp8en2gask.png new file mode 100644 index 0000000..3992dc2 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/b4a1b5595add488db6a1a16c2dd45ec8lp8en2gask.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/b531cf7e4c274afba6eac070c7bd6944jcc3suaufz.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/b531cf7e4c274afba6eac070c7bd6944jcc3suaufz.png new file mode 100644 index 0000000..a36e51f Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/b531cf7e4c274afba6eac070c7bd6944jcc3suaufz.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/b73c648fb7fd45cf8782e4ca0bc28a42s2a8dpad2x.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/b73c648fb7fd45cf8782e4ca0bc28a42s2a8dpad2x.png new file mode 100644 index 0000000..1942036 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/b73c648fb7fd45cf8782e4ca0bc28a42s2a8dpad2x.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/b7cc05160f3b4fa198a585042e7f3ac4yes1qlr9t8.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/b7cc05160f3b4fa198a585042e7f3ac4yes1qlr9t8.png new file mode 100644 index 0000000..0fe6016 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/b7cc05160f3b4fa198a585042e7f3ac4yes1qlr9t8.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/b96a241b6683440fb19d26ed90189273fyp23gsevb.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/b96a241b6683440fb19d26ed90189273fyp23gsevb.png new file mode 100644 index 0000000..da49e45 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/b96a241b6683440fb19d26ed90189273fyp23gsevb.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/b9f86161d09a44d29f7e5083d402245321764lzsus.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/b9f86161d09a44d29f7e5083d402245321764lzsus.jpg new file mode 100644 index 0000000..a73ed63 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/b9f86161d09a44d29f7e5083d402245321764lzsus.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/ba989d05b48445ad86a92e288b589cd8h4el74dhj0.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/ba989d05b48445ad86a92e288b589cd8h4el74dhj0.png new file mode 100644 index 0000000..883548b Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/ba989d05b48445ad86a92e288b589cd8h4el74dhj0.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/bafcd155124643c49fa9cc750d0190fa5iru6zsc8m.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/bafcd155124643c49fa9cc750d0190fa5iru6zsc8m.jpg new file mode 100644 index 0000000..a1ffa6d Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/bafcd155124643c49fa9cc750d0190fa5iru6zsc8m.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/bcc7fb293bfb471cbbebfadd8e6c150ey9n8o2vsnu.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/bcc7fb293bfb471cbbebfadd8e6c150ey9n8o2vsnu.png new file mode 100644 index 0000000..4716ed0 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/bcc7fb293bfb471cbbebfadd8e6c150ey9n8o2vsnu.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/bd0d22b653b247fa840542c7b7b79bdflj966ybw1e.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/bd0d22b653b247fa840542c7b7b79bdflj966ybw1e.png new file mode 100644 index 0000000..253aa52 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/bd0d22b653b247fa840542c7b7b79bdflj966ybw1e.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/bd7232963bec41da8f483289dde3fdf2whx5dk3owb.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/bd7232963bec41da8f483289dde3fdf2whx5dk3owb.jpg new file mode 100644 index 0000000..6aa28e3 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/bd7232963bec41da8f483289dde3fdf2whx5dk3owb.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/be891e57d9a74f8291d41a30b1e6f49che4zty98dx.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/be891e57d9a74f8291d41a30b1e6f49che4zty98dx.png new file mode 100644 index 0000000..db87431 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/be891e57d9a74f8291d41a30b1e6f49che4zty98dx.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/bf4e33ad4e994c3fbb48aba8e81b3be3zme09wjvqa.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/bf4e33ad4e994c3fbb48aba8e81b3be3zme09wjvqa.png new file mode 100644 index 0000000..50771fb Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/bf4e33ad4e994c3fbb48aba8e81b3be3zme09wjvqa.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/bfba48d86c4b49e19e01496ea3e24540chlmmft4o7.gif b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/bfba48d86c4b49e19e01496ea3e24540chlmmft4o7.gif new file mode 100644 index 0000000..9c4ab1c Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/bfba48d86c4b49e19e01496ea3e24540chlmmft4o7.gif differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/c0db7c50e7024a5aaeefdae3bc192c5eerx8f25qrb.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/c0db7c50e7024a5aaeefdae3bc192c5eerx8f25qrb.png new file mode 100644 index 0000000..e146b54 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/c0db7c50e7024a5aaeefdae3bc192c5eerx8f25qrb.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/c17d24b632b544828bd4c70744bc2931tmnu4ffkoj.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/c17d24b632b544828bd4c70744bc2931tmnu4ffkoj.png new file mode 100644 index 0000000..889dd6f Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/c17d24b632b544828bd4c70744bc2931tmnu4ffkoj.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/c71d6b74594e4f47a986abda5d5bf983o4drst1ojf.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/c71d6b74594e4f47a986abda5d5bf983o4drst1ojf.png new file mode 100644 index 0000000..fd1b11a Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/c71d6b74594e4f47a986abda5d5bf983o4drst1ojf.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/c818e9b4038642ea9702712af7d2c7c280tw4wj8yo.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/c818e9b4038642ea9702712af7d2c7c280tw4wj8yo.png new file mode 100644 index 0000000..7bf03ea Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/c818e9b4038642ea9702712af7d2c7c280tw4wj8yo.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/c959d47d07a64b14843ba67dfa5b3fe6j2c32uq6h0.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/c959d47d07a64b14843ba67dfa5b3fe6j2c32uq6h0.png new file mode 100644 index 0000000..e89d990 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/c959d47d07a64b14843ba67dfa5b3fe6j2c32uq6h0.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/c9b53340cfdc488f9d52bf121b715d45v9h0uswomi.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/c9b53340cfdc488f9d52bf121b715d45v9h0uswomi.png new file mode 100644 index 0000000..f278736 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/c9b53340cfdc488f9d52bf121b715d45v9h0uswomi.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/ca4e301ed76a44f8aa23e70b7df107b8v26l2p79u3.gif b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/ca4e301ed76a44f8aa23e70b7df107b8v26l2p79u3.gif new file mode 100644 index 0000000..4a4c5ea Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/ca4e301ed76a44f8aa23e70b7df107b8v26l2p79u3.gif differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/cc016fa7d56d498d8cd767e6d0e0c5e8l34nugsvmi.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/cc016fa7d56d498d8cd767e6d0e0c5e8l34nugsvmi.png new file mode 100644 index 0000000..ba2a71c Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/cc016fa7d56d498d8cd767e6d0e0c5e8l34nugsvmi.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/cdce16eb7eba4346acb59c6d642e088f5cbhgz2yw9.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/cdce16eb7eba4346acb59c6d642e088f5cbhgz2yw9.png new file mode 100644 index 0000000..8a21576 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/cdce16eb7eba4346acb59c6d642e088f5cbhgz2yw9.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/cf5a4a7e233c4fe2bb9a554f74439921jcfgsu0dgg.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/cf5a4a7e233c4fe2bb9a554f74439921jcfgsu0dgg.png new file mode 100644 index 0000000..f80e186 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/cf5a4a7e233c4fe2bb9a554f74439921jcfgsu0dgg.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/d1c992690cf040d7bf87d7767f12ec9cks6in93p21.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/d1c992690cf040d7bf87d7767f12ec9cks6in93p21.png new file mode 100644 index 0000000..0d07259 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/d1c992690cf040d7bf87d7767f12ec9cks6in93p21.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/d287ad96e12e40fcbdb8e8608f69b03ebyh731wk9j.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/d287ad96e12e40fcbdb8e8608f69b03ebyh731wk9j.png new file mode 100644 index 0000000..6ec803b Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/d287ad96e12e40fcbdb8e8608f69b03ebyh731wk9j.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/d2fff77310724a9999c1e0e97eac0b3830n6cpnhxp.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/d2fff77310724a9999c1e0e97eac0b3830n6cpnhxp.png new file mode 100644 index 0000000..dafdd17 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/d2fff77310724a9999c1e0e97eac0b3830n6cpnhxp.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/d4c7282740fb4e71bd2d7e80fad985d8o1wfu26pyd.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/d4c7282740fb4e71bd2d7e80fad985d8o1wfu26pyd.jpg new file mode 100644 index 0000000..bc3ce21 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/d4c7282740fb4e71bd2d7e80fad985d8o1wfu26pyd.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/d8490798c1e141348c1ba3c109c26e18of6rw66y1f.gif b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/d8490798c1e141348c1ba3c109c26e18of6rw66y1f.gif new file mode 100644 index 0000000..107af4e Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/d8490798c1e141348c1ba3c109c26e18of6rw66y1f.gif differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/d9253c01ace24140839435a81e045f1dko3od05i87.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/d9253c01ace24140839435a81e045f1dko3od05i87.png new file mode 100644 index 0000000..a4b96cb Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/d9253c01ace24140839435a81e045f1dko3od05i87.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/d9631b9c1b3641c4a0ab860a99e92d97nfwk9u6upj.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/d9631b9c1b3641c4a0ab860a99e92d97nfwk9u6upj.png new file mode 100644 index 0000000..25401f2 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/d9631b9c1b3641c4a0ab860a99e92d97nfwk9u6upj.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/d9dffd9eccbc40e0bc01553846c391b3vj8fuux52d.gif b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/d9dffd9eccbc40e0bc01553846c391b3vj8fuux52d.gif new file mode 100644 index 0000000..bfdf4d1 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/d9dffd9eccbc40e0bc01553846c391b3vj8fuux52d.gif differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/dc9a2481719445d49f045bc18c265dccqww5ieybh3.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/dc9a2481719445d49f045bc18c265dccqww5ieybh3.jpg new file mode 100644 index 0000000..89b292e Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/dc9a2481719445d49f045bc18c265dccqww5ieybh3.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/dd497d333f4541d7ae41b2c579706370jhp2x39yrg.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/dd497d333f4541d7ae41b2c579706370jhp2x39yrg.png new file mode 100644 index 0000000..819262e Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/dd497d333f4541d7ae41b2c579706370jhp2x39yrg.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/dfa88bc269de407f95febe418269b65dlp2boy3pkr.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/dfa88bc269de407f95febe418269b65dlp2boy3pkr.png new file mode 100644 index 0000000..016d6cc Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/dfa88bc269de407f95febe418269b65dlp2boy3pkr.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/e0203b58c997468f928031df28b6a27acns5riul2t.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/e0203b58c997468f928031df28b6a27acns5riul2t.png new file mode 100644 index 0000000..4ae92b2 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/e0203b58c997468f928031df28b6a27acns5riul2t.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/e07dda98525d4226818de310cb3c21ae6hg5f2sv5m.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/e07dda98525d4226818de310cb3c21ae6hg5f2sv5m.png new file mode 100644 index 0000000..14a9ec8 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/e07dda98525d4226818de310cb3c21ae6hg5f2sv5m.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/e14049cfd2a3435abb4cdb938a52a3fbtd8uoupja1.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/e14049cfd2a3435abb4cdb938a52a3fbtd8uoupja1.png new file mode 100644 index 0000000..ffe6502 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/e14049cfd2a3435abb4cdb938a52a3fbtd8uoupja1.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/e46b09e6dd2944328426b32b7dceff92bhe08w4td0.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/e46b09e6dd2944328426b32b7dceff92bhe08w4td0.png new file mode 100644 index 0000000..f1768a7 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/e46b09e6dd2944328426b32b7dceff92bhe08w4td0.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/e670a50e6c374f43abe6b61260ce0c33v1yf1aafwr.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/e670a50e6c374f43abe6b61260ce0c33v1yf1aafwr.png new file mode 100644 index 0000000..b26410a Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/e670a50e6c374f43abe6b61260ce0c33v1yf1aafwr.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/e739d5a88c2141a0b346e1bdb1d8e2dea6ktbegtad.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/e739d5a88c2141a0b346e1bdb1d8e2dea6ktbegtad.png new file mode 100644 index 0000000..24e19a5 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/e739d5a88c2141a0b346e1bdb1d8e2dea6ktbegtad.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/e759d63f04b94689aaa6838c424e419cgcsk0dsagu.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/e759d63f04b94689aaa6838c424e419cgcsk0dsagu.png new file mode 100644 index 0000000..5c71398 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/e759d63f04b94689aaa6838c424e419cgcsk0dsagu.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/e78b705b1b2644c7a346faee51fcdd08qgtywp55en.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/e78b705b1b2644c7a346faee51fcdd08qgtywp55en.png new file mode 100644 index 0000000..e345cf2 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/e78b705b1b2644c7a346faee51fcdd08qgtywp55en.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/e7e54160e9db4a9e814675763a80e58ce0j522s6ds.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/e7e54160e9db4a9e814675763a80e58ce0j522s6ds.png new file mode 100644 index 0000000..b2b9b3f Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/e7e54160e9db4a9e814675763a80e58ce0j522s6ds.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/e8737e822d1c47a698b9ed16e4cd627aodkc2o145w.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/e8737e822d1c47a698b9ed16e4cd627aodkc2o145w.png new file mode 100644 index 0000000..6c1c893 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/e8737e822d1c47a698b9ed16e4cd627aodkc2o145w.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/e8c8ea8102524b8a9277d3ee623ac29dmvg2gsudr6.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/e8c8ea8102524b8a9277d3ee623ac29dmvg2gsudr6.png new file mode 100644 index 0000000..1957aa5 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/e8c8ea8102524b8a9277d3ee623ac29dmvg2gsudr6.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/e91ccd7e37294221bfdb7b43a42d8ed5hghg7nw0qb.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/e91ccd7e37294221bfdb7b43a42d8ed5hghg7nw0qb.jpg new file mode 100644 index 0000000..ebd89c6 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/e91ccd7e37294221bfdb7b43a42d8ed5hghg7nw0qb.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/e97b753a3cf041169bae29045ff23d6a5g1vbrdgld.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/e97b753a3cf041169bae29045ff23d6a5g1vbrdgld.png new file mode 100644 index 0000000..10d8f99 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/e97b753a3cf041169bae29045ff23d6a5g1vbrdgld.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/e9b5981f0e82410da5dc83992b68289ekxngfwyuz0.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/e9b5981f0e82410da5dc83992b68289ekxngfwyuz0.png new file mode 100644 index 0000000..cdc4fda Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/e9b5981f0e82410da5dc83992b68289ekxngfwyuz0.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/e9d9bc38164f417b968d368d1158acf0sxq8tuqq5h.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/e9d9bc38164f417b968d368d1158acf0sxq8tuqq5h.png new file mode 100644 index 0000000..f9313ea Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/e9d9bc38164f417b968d368d1158acf0sxq8tuqq5h.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/ea6b31f1839c42238ea1c129c1b4d5eaup7j6zz0so.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/ea6b31f1839c42238ea1c129c1b4d5eaup7j6zz0so.png new file mode 100644 index 0000000..caa6e37 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/ea6b31f1839c42238ea1c129c1b4d5eaup7j6zz0so.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/ea80c26cfb3d441b9b6affd68c62acf5l3ncs7skt9.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/ea80c26cfb3d441b9b6affd68c62acf5l3ncs7skt9.jpg new file mode 100644 index 0000000..7ac40c2 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/ea80c26cfb3d441b9b6affd68c62acf5l3ncs7skt9.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/eaec5b3bf0a74de888cd55cfa3cb47ffa5y4mlsvzh.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/eaec5b3bf0a74de888cd55cfa3cb47ffa5y4mlsvzh.png new file mode 100644 index 0000000..75e52cb Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/eaec5b3bf0a74de888cd55cfa3cb47ffa5y4mlsvzh.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/eb26223281aa454389c735726790a415abrhvrtq4y.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/eb26223281aa454389c735726790a415abrhvrtq4y.png new file mode 100644 index 0000000..f93968a Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/eb26223281aa454389c735726790a415abrhvrtq4y.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/ebf72b915ecc4deab71c353b62ce7de9d0uv4lgzwz.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/ebf72b915ecc4deab71c353b62ce7de9d0uv4lgzwz.png new file mode 100644 index 0000000..e14d259 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/ebf72b915ecc4deab71c353b62ce7de9d0uv4lgzwz.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/ec49b431bee545e09abc3dc294d1e54669dtn9bvuy.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/ec49b431bee545e09abc3dc294d1e54669dtn9bvuy.png new file mode 100644 index 0000000..863159f Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/ec49b431bee545e09abc3dc294d1e54669dtn9bvuy.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/ec5fbe4271674fba8873a45d6f767c98ygzcuucjsl.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/ec5fbe4271674fba8873a45d6f767c98ygzcuucjsl.png new file mode 100644 index 0000000..6151c8d Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/ec5fbe4271674fba8873a45d6f767c98ygzcuucjsl.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/efbee20621ec424a983f45cfca57508bxitwgvu74n.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/efbee20621ec424a983f45cfca57508bxitwgvu74n.png new file mode 100644 index 0000000..7990611 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/efbee20621ec424a983f45cfca57508bxitwgvu74n.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/f16789d76eab430e90de8ddbbf26b8362xifqs055m.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/f16789d76eab430e90de8ddbbf26b8362xifqs055m.png new file mode 100644 index 0000000..4ae92b2 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/f16789d76eab430e90de8ddbbf26b8362xifqs055m.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/f65b4fa1948a4dabbfc60a02aa8ca942bmxlxykd9i.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/f65b4fa1948a4dabbfc60a02aa8ca942bmxlxykd9i.png new file mode 100644 index 0000000..a3f8718 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/f65b4fa1948a4dabbfc60a02aa8ca942bmxlxykd9i.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/f65ef5469f3a479497a710fb288d115cvl5imkvpo8.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/f65ef5469f3a479497a710fb288d115cvl5imkvpo8.jpg new file mode 100644 index 0000000..3194eed Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/f65ef5469f3a479497a710fb288d115cvl5imkvpo8.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/f71c687274cf42ed9757e5cf658cbfb9v1rgcok7j4.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/f71c687274cf42ed9757e5cf658cbfb9v1rgcok7j4.png new file mode 100644 index 0000000..a03b50f Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/f71c687274cf42ed9757e5cf658cbfb9v1rgcok7j4.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/f7d89b2f45d740e6b87cc0dc46356b21h0tn9ouid7.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/f7d89b2f45d740e6b87cc0dc46356b21h0tn9ouid7.png new file mode 100644 index 0000000..bf57546 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/f7d89b2f45d740e6b87cc0dc46356b21h0tn9ouid7.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/f8fa9ebb978f4564a1b6bdd145de5303fmswbc6mlr.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/f8fa9ebb978f4564a1b6bdd145de5303fmswbc6mlr.png new file mode 100644 index 0000000..ef4dbb2 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/f8fa9ebb978f4564a1b6bdd145de5303fmswbc6mlr.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/f9e0a4939cb3484b9babfe72dc70cd7cqqexhsbdpu.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/f9e0a4939cb3484b9babfe72dc70cd7cqqexhsbdpu.png new file mode 100644 index 0000000..3dbd221 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/f9e0a4939cb3484b9babfe72dc70cd7cqqexhsbdpu.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/f9ec9f03b8694a308b62f6158e5ccadb09fnoz19kc.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/f9ec9f03b8694a308b62f6158e5ccadb09fnoz19kc.png new file mode 100644 index 0000000..2351bbb Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/f9ec9f03b8694a308b62f6158e5ccadb09fnoz19kc.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/fb364676ea364297b7441638f9e0f557dckg4t2rds.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/fb364676ea364297b7441638f9e0f557dckg4t2rds.jpg new file mode 100644 index 0000000..96272ed Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/fb364676ea364297b7441638f9e0f557dckg4t2rds.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/fc4be55bf8c8420f89db87cbe8c2a95fkpar5lv6tw.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/fc4be55bf8c8420f89db87cbe8c2a95fkpar5lv6tw.jpg new file mode 100644 index 0000000..aae9de1 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/fc4be55bf8c8420f89db87cbe8c2a95fkpar5lv6tw.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/fef1aee22a04466d93693f5791d44bfd2rsm469mcr.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/fef1aee22a04466d93693f5791d44bfd2rsm469mcr.jpg new file mode 100644 index 0000000..936e3e8 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/fef1aee22a04466d93693f5791d44bfd2rsm469mcr.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/ff3283593f0444da9038f578fff96bcfguve7bk9pf.png b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/ff3283593f0444da9038f578fff96bcfguve7bk9pf.png new file mode 100644 index 0000000..73abadb Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2021/12/25/ff3283593f0444da9038f578fff96bcfguve7bk9pf.png differ diff --git a/crmeb/crmebimage/crmebimage/public/maintain/2023/02/23/1c0fa967eb764d918f064744cc51dc70a6f2bj3sha.jpg b/crmeb/crmebimage/crmebimage/public/maintain/2023/02/23/1c0fa967eb764d918f064744cc51dc70a6f2bj3sha.jpg new file mode 100644 index 0000000..00239a7 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/maintain/2023/02/23/1c0fa967eb764d918f064744cc51dc70a6f2bj3sha.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/operation/2021/12/25/0427b90c74b64a03ae3e7e5c628ef7d69038aimgou.jpg b/crmeb/crmebimage/crmebimage/public/operation/2021/12/25/0427b90c74b64a03ae3e7e5c628ef7d69038aimgou.jpg new file mode 100644 index 0000000..1d5c158 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/operation/2021/12/25/0427b90c74b64a03ae3e7e5c628ef7d69038aimgou.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/operation/2021/12/25/6d292f4a663a453e8bcc9410eda89db55z1vksp7fx.png b/crmeb/crmebimage/crmebimage/public/operation/2021/12/25/6d292f4a663a453e8bcc9410eda89db55z1vksp7fx.png new file mode 100644 index 0000000..e059695 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/operation/2021/12/25/6d292f4a663a453e8bcc9410eda89db55z1vksp7fx.png differ diff --git a/crmeb/crmebimage/crmebimage/public/store/2021/12/25/0705b0fad3884eddb31745e453de6503atuqud1tr3.png b/crmeb/crmebimage/crmebimage/public/store/2021/12/25/0705b0fad3884eddb31745e453de6503atuqud1tr3.png new file mode 100644 index 0000000..b63b9eb Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/store/2021/12/25/0705b0fad3884eddb31745e453de6503atuqud1tr3.png differ diff --git a/crmeb/crmebimage/crmebimage/public/store/2021/12/25/090f2f83e9b343c38c7c7b4ebc860a352r8u8adjsq.png b/crmeb/crmebimage/crmebimage/public/store/2021/12/25/090f2f83e9b343c38c7c7b4ebc860a352r8u8adjsq.png new file mode 100644 index 0000000..596cb57 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/store/2021/12/25/090f2f83e9b343c38c7c7b4ebc860a352r8u8adjsq.png differ diff --git a/crmeb/crmebimage/crmebimage/public/store/2021/12/25/0e13333fdf2841a2a886a9595bebc855q5jgkr8b66.png b/crmeb/crmebimage/crmebimage/public/store/2021/12/25/0e13333fdf2841a2a886a9595bebc855q5jgkr8b66.png new file mode 100644 index 0000000..2b86192 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/store/2021/12/25/0e13333fdf2841a2a886a9595bebc855q5jgkr8b66.png differ diff --git a/crmeb/crmebimage/crmebimage/public/store/2021/12/25/0f419f2a65844ae5a00c20e22dc9b92env32uvr4dy.png b/crmeb/crmebimage/crmebimage/public/store/2021/12/25/0f419f2a65844ae5a00c20e22dc9b92env32uvr4dy.png new file mode 100644 index 0000000..6cb7a24 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/store/2021/12/25/0f419f2a65844ae5a00c20e22dc9b92env32uvr4dy.png differ diff --git a/crmeb/crmebimage/crmebimage/public/store/2021/12/25/1ccac5f9f62646ba930000ad70f741efpfgagvhrzh.png b/crmeb/crmebimage/crmebimage/public/store/2021/12/25/1ccac5f9f62646ba930000ad70f741efpfgagvhrzh.png new file mode 100644 index 0000000..de36f6b Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/store/2021/12/25/1ccac5f9f62646ba930000ad70f741efpfgagvhrzh.png differ diff --git a/crmeb/crmebimage/crmebimage/public/store/2021/12/25/24119aa4d48e4c7a95b21ece82a41715uns67350bd.jpg b/crmeb/crmebimage/crmebimage/public/store/2021/12/25/24119aa4d48e4c7a95b21ece82a41715uns67350bd.jpg new file mode 100644 index 0000000..3087c00 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/store/2021/12/25/24119aa4d48e4c7a95b21ece82a41715uns67350bd.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/store/2021/12/25/476f2b8a50644f5f80124f831ac14aecct8ewiyvwf.png b/crmeb/crmebimage/crmebimage/public/store/2021/12/25/476f2b8a50644f5f80124f831ac14aecct8ewiyvwf.png new file mode 100644 index 0000000..50a1111 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/store/2021/12/25/476f2b8a50644f5f80124f831ac14aecct8ewiyvwf.png differ diff --git a/crmeb/crmebimage/crmebimage/public/store/2021/12/25/489bd8c24e904f6d93a827ee0d051a52m796u5yxlu.jpeg b/crmeb/crmebimage/crmebimage/public/store/2021/12/25/489bd8c24e904f6d93a827ee0d051a52m796u5yxlu.jpeg new file mode 100644 index 0000000..cb6d5c6 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/store/2021/12/25/489bd8c24e904f6d93a827ee0d051a52m796u5yxlu.jpeg differ diff --git a/crmeb/crmebimage/crmebimage/public/store/2021/12/25/61bf8228d96b4c8c9343bc13b4e6fc67c0jmc2y781.png b/crmeb/crmebimage/crmebimage/public/store/2021/12/25/61bf8228d96b4c8c9343bc13b4e6fc67c0jmc2y781.png new file mode 100644 index 0000000..4e3ffe7 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/store/2021/12/25/61bf8228d96b4c8c9343bc13b4e6fc67c0jmc2y781.png differ diff --git a/crmeb/crmebimage/crmebimage/public/store/2021/12/25/6246abff834b4d2fb1edad2a8927c8a3yes6irrqfw.png b/crmeb/crmebimage/crmebimage/public/store/2021/12/25/6246abff834b4d2fb1edad2a8927c8a3yes6irrqfw.png new file mode 100644 index 0000000..6902253 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/store/2021/12/25/6246abff834b4d2fb1edad2a8927c8a3yes6irrqfw.png differ diff --git a/crmeb/crmebimage/crmebimage/public/store/2021/12/25/7b4c8af47e414f62a5d7b26d95504cbafw13ela5i7.png b/crmeb/crmebimage/crmebimage/public/store/2021/12/25/7b4c8af47e414f62a5d7b26d95504cbafw13ela5i7.png new file mode 100644 index 0000000..46fab26 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/store/2021/12/25/7b4c8af47e414f62a5d7b26d95504cbafw13ela5i7.png differ diff --git a/crmeb/crmebimage/crmebimage/public/store/2021/12/25/8b665c20edef4d61a508de9395eb40c4ln34d0f3i5.png b/crmeb/crmebimage/crmebimage/public/store/2021/12/25/8b665c20edef4d61a508de9395eb40c4ln34d0f3i5.png new file mode 100644 index 0000000..6f51a5d Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/store/2021/12/25/8b665c20edef4d61a508de9395eb40c4ln34d0f3i5.png differ diff --git a/crmeb/crmebimage/crmebimage/public/store/2021/12/25/ae2a9db4d74a4a56bddb971d3df9e60fljwxe9z3lh.png b/crmeb/crmebimage/crmebimage/public/store/2021/12/25/ae2a9db4d74a4a56bddb971d3df9e60fljwxe9z3lh.png new file mode 100644 index 0000000..3cf5bf5 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/store/2021/12/25/ae2a9db4d74a4a56bddb971d3df9e60fljwxe9z3lh.png differ diff --git a/crmeb/crmebimage/crmebimage/public/store/2021/12/25/bf8bc87d525844b68ca17ca60c567233hkh2h9c2un.png b/crmeb/crmebimage/crmebimage/public/store/2021/12/25/bf8bc87d525844b68ca17ca60c567233hkh2h9c2un.png new file mode 100644 index 0000000..de1669c Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/store/2021/12/25/bf8bc87d525844b68ca17ca60c567233hkh2h9c2un.png differ diff --git a/crmeb/crmebimage/crmebimage/public/store/2021/12/25/d813cbdd98b148c99885652234ad43b1m1aewwn8wd.jpg b/crmeb/crmebimage/crmebimage/public/store/2021/12/25/d813cbdd98b148c99885652234ad43b1m1aewwn8wd.jpg new file mode 100644 index 0000000..830b4e0 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/store/2021/12/25/d813cbdd98b148c99885652234ad43b1m1aewwn8wd.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/store/2021/12/25/de35d545523448db9f3636e34ca085b29qw11rescg.png b/crmeb/crmebimage/crmebimage/public/store/2021/12/25/de35d545523448db9f3636e34ca085b29qw11rescg.png new file mode 100644 index 0000000..3c0698a Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/store/2021/12/25/de35d545523448db9f3636e34ca085b29qw11rescg.png differ diff --git a/crmeb/crmebimage/crmebimage/public/store/2021/12/25/e7e312556bcb4084acf708f3a5210da7krs1pwq84o.jpg b/crmeb/crmebimage/crmebimage/public/store/2021/12/25/e7e312556bcb4084acf708f3a5210da7krs1pwq84o.jpg new file mode 100644 index 0000000..34f37ef Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/store/2021/12/25/e7e312556bcb4084acf708f3a5210da7krs1pwq84o.jpg differ diff --git a/crmeb/crmebimage/crmebimage/public/store/2021/12/25/ee26a9207f404a47851538c7dfd777a7ltlxg7tkrm.jpeg b/crmeb/crmebimage/crmebimage/public/store/2021/12/25/ee26a9207f404a47851538c7dfd777a7ltlxg7tkrm.jpeg new file mode 100644 index 0000000..bada263 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/store/2021/12/25/ee26a9207f404a47851538c7dfd777a7ltlxg7tkrm.jpeg differ diff --git a/crmeb/crmebimage/crmebimage/public/store/2021/12/25/ef98f38ef1cd4083a91fb62b1dd8362cmran1psnmc.png b/crmeb/crmebimage/crmebimage/public/store/2021/12/25/ef98f38ef1cd4083a91fb62b1dd8362cmran1psnmc.png new file mode 100644 index 0000000..1a30429 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/store/2021/12/25/ef98f38ef1cd4083a91fb62b1dd8362cmran1psnmc.png differ diff --git a/crmeb/crmebimage/crmebimage/public/store/2021/12/25/f22830611d324e8fb10129e969f1ec661lcpu7346h.png b/crmeb/crmebimage/crmebimage/public/store/2021/12/25/f22830611d324e8fb10129e969f1ec661lcpu7346h.png new file mode 100644 index 0000000..96c3bbd Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/store/2021/12/25/f22830611d324e8fb10129e969f1ec661lcpu7346h.png differ diff --git a/crmeb/crmebimage/crmebimage/public/store/2021/12/25/fbc798bf3c91493f95c97be7d6cbaa5akhcpo5ent3.png b/crmeb/crmebimage/crmebimage/public/store/2021/12/25/fbc798bf3c91493f95c97be7d6cbaa5akhcpo5ent3.png new file mode 100644 index 0000000..bde6950 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/public/store/2021/12/25/fbc798bf3c91493f95c97be7d6cbaa5akhcpo5ent3.png differ diff --git a/crmeb/crmebimage/crmebimage/官方社区@2x.jpg b/crmeb/crmebimage/crmebimage/官方社区@2x.jpg new file mode 100644 index 0000000..8400843 Binary files /dev/null and b/crmeb/crmebimage/crmebimage/官方社区@2x.jpg differ diff --git a/crmeb/mvnw b/crmeb/mvnw new file mode 100644 index 0000000..a16b543 --- /dev/null +++ b/crmeb/mvnw @@ -0,0 +1,310 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + export JAVA_HOME="`/usr/libexec/java_home`" + else + export JAVA_HOME="/Library/Java/Home" + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +if [ -z "$M2_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`which java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=`cd "$wdir/.."; pwd` + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +BASE_DIR=`find_maven_basedir "$(pwd)"` +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found .mvn/wrapper/maven-wrapper.jar" + fi +else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." + fi + if [ -n "$MVNW_REPOURL" ]; then + jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + else + jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + fi + while IFS="=" read key value; do + case "$key" in (wrapperUrl) jarUrl="$value"; break ;; + esac + done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" + if [ "$MVNW_VERBOSE" = true ]; then + echo "Downloading from: $jarUrl" + fi + wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" + if $cygwin; then + wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"` + fi + + if command -v wget > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found wget ... using wget" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget "$jarUrl" -O "$wrapperJarPath" + else + wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" + fi + elif command -v curl > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found curl ... using curl" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl -o "$wrapperJarPath" "$jarUrl" -f + else + curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f + fi + + else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Falling back to using Java to download" + fi + javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaClass=`cygpath --path --windows "$javaClass"` + fi + if [ -e "$javaClass" ]; then + if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Compiling MavenWrapperDownloader.java ..." + fi + # Compiling the Java class + ("$JAVA_HOME/bin/javac" "$javaClass") + fi + if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + # Running the downloader + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Running MavenWrapperDownloader.java ..." + fi + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +if [ "$MVNW_VERBOSE" = true ]; then + echo $MAVEN_PROJECTBASEDIR +fi +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/crmeb/mvnw.cmd b/crmeb/mvnw.cmd new file mode 100644 index 0000000..c8d4337 --- /dev/null +++ b/crmeb/mvnw.cmd @@ -0,0 +1,182 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM https://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" +if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + +FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %DOWNLOAD_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" +if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%" == "on" pause + +if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% + +exit /B %ERROR_CODE% diff --git a/crmeb/pom.xml b/crmeb/pom.xml new file mode 100644 index 0000000..21f741f --- /dev/null +++ b/crmeb/pom.xml @@ -0,0 +1,336 @@ + + + 4.0.0 + pom + + crmeb-common + crmeb-service + crmeb-admin + crmeb-front + + + com.zbkj + crmeb + 0.0.1-SNAPSHOT + crmeb + Crmeb project for Spring Boot + + + 1.8 + 2.9.2 + 1.5.22 + 1.9.3 + + UTF-8 + + + + + + + org.springframework.boot + spring-boot-dependencies + 2.2.6.RELEASE + pom + import + + + + + com.alibaba + fastjson + 1.2.83 + + + + + com.alibaba + druid + 1.1.20 + + + + + + + mysql + mysql-connector-java + 5.1.24 + + + + + com.baomidou + mybatis-plus-boot-starter + 3.3.1 + + + + junit + junit + 4.12 + test + + + + org.springframework + spring-test + 5.2.5.RELEASE + compile + + + + com.baomidou + mybatis-plus + 3.3.1 + + + + + com.baomidou + mybatis-plus-generator + 3.3.1 + + + + io.swagger + swagger-annotations + 1.5.21 + + + + io.swagger + swagger-models + 1.5.21 + + + + + io.springfox + springfox-swagger2 + ${springfox.version} + + + io.swagger + swagger-models + + + + + + io.swagger + swagger-models + ${swagger-models.version} + + + + com.github.xiaoymin + swagger-bootstrap-ui + ${swagger-bootstrap-ui.version} + + + + net.logstash.logback + logstash-logback-encoder + 5.3 + + + + + org.springframework.boot + spring-boot-starter-data-redis + 2.2.0.RELEASE + + + + redis.clients + jedis + 3.1.0 + + + + + com.github.pagehelper + pagehelper-spring-boot-starter + 1.2.5 + + + + org.mybatis + mybatis + + + + + + javax.validation + validation-api + 1.1.0.Final + + + + cn.hutool + hutool-all + 4.5.7 + + + + + org.apache.httpcomponents + httpclient + 4.5.6 + + + + + org.apache.commons + commons-lang3 + 3.5 + + + + + org.apache.poi + poi + 3.17 + + + org.apache.poi + poi-ooxml + 3.17 + + + + + commons-fileupload + commons-fileupload + 1.3.3 + + + + commons-io + commons-io + 2.4 + + + + net.coobird + thumbnailator + 0.4.8 + + + + + com.aliyun.oss + aliyun-sdk-oss + 3.5.0 + + + + + com.qcloud + cos_api + 5.6.22 + + + + + com.qiniu + qiniu-java-sdk + 7.2.28 + + + + + dom4j + dom4j + 1.6.1 + + + + com.thoughtworks.xstream + xstream + 1.4.18 + + + + + org.mongodb + mongodb-driver-core + 3.8.2 + + + com.vaadin.external.google + android-json + 0.0.20131108.vaadin1 + compile + + + + org.apache.httpcomponents + httpmime + 4.5.2 + + + + + com.google.zxing + core + 3.3.3 + + + com.google.zxing + javase + 3.3.3 + + + + + com.belerweb + pinyin4j + 2.5.0 + + + + + io.jsonwebtoken + jjwt + 0.9.1 + + + com.auth0 + jwks-rsa + 0.9.0 + + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.6.1 + + 1.8 + 1.8 + UTF-8 + + -parameters + + + + + + + + + + diff --git a/crmeb/shell/startAdmin.sh b/crmeb/shell/startAdmin.sh new file mode 100644 index 0000000..d5ce12c --- /dev/null +++ b/crmeb/shell/startAdmin.sh @@ -0,0 +1,91 @@ +#!/bin/bash + +#开始时间 时间戳 +startTime=`date +'%Y-%m-%d %H:%M:%S'` + +#接口项目站点路径(目录按照各自配置) +APP_PATH=/www/wwwroot/api.java.crmeb.net + +#jar包文件名称 +APP_NAME=$APP_PATH/Crmeb-admin.jar + +#日志文件名称 +LOG_FILE=$APP_PATH/crmeb_out.log + +#启动环境 # 如果需要配置数据和redis,请在 application-prod.yml中修改, 用jar命令修改即可 +APP_YML=--spring.profiles.active=prod + + +#数据库配置 + +rm -rf $LOG_FILE + +echo "开始停止 Crmeb 项目进程" +#查询进程,并杀掉当前jar/java程序 + +pid=`ps -ef|grep $APP_NAME | grep -v grep | awk '{print $2}'` +if [ $pid ];then + echo "pid: $pid" + kill -9 $pid + echo "Crmeb 项目进程进程终止成功" +fi + +sleep 2 + +#判断jar包文件是否存在,如果存在启动jar包,并时时查看启动日志 + +if test -e $APP_NAME;then + echo '文件存在,开始启动此程序...' + +# 启动jar包,指向日志文件,2>&1 & 表示打开或指向同一个日志文件 --spring.profiles.active=prod 启动 prod环境 + + + nohup java -jar $APP_NAME $APP_YML > crmeb_out.log 2>&1 & + echo "正在发布中,请稍后......" + sleep 10s + + #通过检测日志来判断 + while [ -f $LOG_FILE ] + do + success=`grep "Started CrmebAdminApplication in " $LOG_FILE` + if [[ "$success" != "" ]] + then +# echo "Crmeb start ........." + break + else +# echo "Crmeb Running ......." + sleep 1s + fi + +# echo "开始检测启动失败标记" + fail=`grep "Fail" $LOG_FILE` + if [[ "$fail" != "" ]] + then + echo "项目启动失败" + tail -f $LOG_FILE + break + else +# echo "Crmeb Running ......." + sleep 1s + fi + + done + echo "Crmeb Started Success" + +endTime=`date +'%Y-%m-%d %H:%M:%S'` +startSecond=$(date --date="$startTime" +%s); +endSecond=$(date --date="$endTime" +%s); + +total=$((endSecond-startSecond)) +# shellcheck disable=SC2027 +echo "本次运行时间: "$total"s" +# shellcheck disable=SC2086 +echo "当前时间:"$endTime + + + +else + echo '$APP_NAME 文件不存在,请检查。' +fi + +#在 $APP_NAME 同级目录下运行 ./startAdmin.sh 命令即可启动项目。 diff --git a/crmeb/shell/startFront.sh b/crmeb/shell/startFront.sh new file mode 100644 index 0000000..b3fc0b2 --- /dev/null +++ b/crmeb/shell/startFront.sh @@ -0,0 +1,91 @@ +#!/bin/bash + +#开始时间 时间戳 +startTime=`date +'%Y-%m-%d %H:%M:%S'` + +#接口项目站点路径(目录按照各自配置) +APP_PATH=/www/wwwroot/api.java.crmeb.net + +#jar包文件名称 +APP_NAME=$APP_PATH/Crmeb-front.jar + +#日志文件名称 +LOG_FILE=$APP_PATH/crmeb_out.log + +#启动环境 # 如果需要配置数据和redis,请在 application-prod.yml中修改, 用jar命令修改即可 +APP_YML=--spring.profiles.active=prod + + +#数据库配置 + +rm -rf $LOG_FILE + +echo "开始停止 Crmeb 项目进程" +#查询进程,并杀掉当前jar/java程序 + +pid=`ps -ef|grep $APP_NAME | grep -v grep | awk '{print $2}'` +if [ $pid ];then + echo "pid: $pid" + kill -9 $pid + echo "Crmeb 项目进程进程终止成功" +fi + +sleep 2 + +#判断jar包文件是否存在,如果存在启动jar包,并时时查看启动日志 + +if test -e $APP_NAME;then + echo '文件存在,开始启动此程序...' + +# 启动jar包,指向日志文件,2>&1 & 表示打开或指向同一个日志文件 --spring.profiles.active=prod 启动 prod环境 + + + nohup java -jar $APP_NAME $APP_YML > crmeb_out.log 2>&1 & + echo "正在发布中,请稍后......" + sleep 10s + + #通过检测日志来判断 + while [ -f $LOG_FILE ] + do + success=`grep "Started CrmebFrontApplication in " $LOG_FILE` + if [[ "$success" != "" ]] + then +# echo "Crmeb start ........." + break + else +# echo "Crmeb Running ......." + sleep 1s + fi + +# echo "开始检测启动失败标记" + fail=`grep "Fail" $LOG_FILE` + if [[ "$fail" != "" ]] + then + echo "项目启动失败" + tail -f $LOG_FILE + break + else +# echo "Crmeb Running ......." + sleep 1s + fi + + done + echo "Crmeb Started Success" + +endTime=`date +'%Y-%m-%d %H:%M:%S'` +startSecond=$(date --date="$startTime" +%s); +endSecond=$(date --date="$endTime" +%s); + +total=$((endSecond-startSecond)) +# shellcheck disable=SC2027 +echo "本次运行时间: "$total"s" +# shellcheck disable=SC2086 +echo "当前时间:"$endTime + + + +else + echo '$APP_NAME 文件不存在,请检查。' +fi + +#在 $APP_NAME 同级目录下运行 ./startAdmin.sh 命令即可启动项目。 diff --git a/crmeb/shell/stopAdmin.sh b/crmeb/shell/stopAdmin.sh new file mode 100644 index 0000000..5af391f --- /dev/null +++ b/crmeb/shell/stopAdmin.sh @@ -0,0 +1,21 @@ + +#接口项目站点路径(目录按照各自配置) +APP_PATH=/www/wwwroot/api.java.crmeb.net/ + +#jar包文件名称 +APP_NAME=$APP_PATH/Crmeb-admin.jar + +echo "开始停止 Crmeb-admin 项目进程" +#查询进程,并杀掉当前jar/java程序 + +pid=`ps -ef|grep $APP_NAME | grep -v grep | awk '{print $2}'` + +echo "pid: $pid " + +if [ $pid ];then + echo "pid: $pid" + kill -9 $pid + echo "Crmeb-admin 项目进程进程终止成功" +else + echo "未找到对应服务" +fi diff --git a/crmeb/shell/stopFront.sh b/crmeb/shell/stopFront.sh new file mode 100644 index 0000000..d6ef2f1 --- /dev/null +++ b/crmeb/shell/stopFront.sh @@ -0,0 +1,21 @@ + +#接口项目站点路径(目录按照各自配置) +APP_PATH=/www/wwwroot/api.java.crmeb.net/ + +#jar包文件名称 +APP_NAME=$APP_PATH/Crmeb-front.jar + +echo "开始停止 Crmeb-admin 项目进程" +#查询进程,并杀掉当前jar/java程序 + +pid=`ps -ef|grep $APP_NAME | grep -v grep | awk '{print $2}'` + +echo "pid: $pid " + +if [ $pid ];then + echo "pid: $pid" + kill -9 $pid + echo "Crmeb-admin 项目进程进程终止成功" +else + echo "未找到对应服务" +fi diff --git a/crmeb/sql/Crmeb_1.3.4.sql b/crmeb/sql/Crmeb_1.3.4.sql new file mode 100644 index 0000000..f31f95d --- /dev/null +++ b/crmeb/sql/Crmeb_1.3.4.sql @@ -0,0 +1,9031 @@ +/** + 默认账号 + 管理端:admin / 123456 + 商城端:18292417675 / crmeb@123456 +*/ +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for eb_article +-- ---------------------------- +DROP TABLE IF EXISTS `eb_article`; +CREATE TABLE `eb_article` ( + `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '文章管理ID', + `cid` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '分类id', + `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '文章标题', + `author` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '文章作者', + `image_input` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '文章图片', + `synopsis` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '文章简介', + `share_title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '文章分享标题', + `share_synopsis` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '文章分享简介', + `visit` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '浏览次数', + `sort` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '排序', + `url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '原文链接', + `media_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '微信素材id', + `status` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '状态', + `hide` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '是否隐藏', + `admin_id` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '管理员id', + `mer_id` int(10) UNSIGNED NULL DEFAULT 0 COMMENT '商户id', + `product_id` int(10) NOT NULL DEFAULT 0 COMMENT '商品关联id', + `is_hot` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '是否热门(小程序)', + `is_banner` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '是否轮播图(小程序)', + `content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '文章内容', + `create_time` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '文章管理表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for eb_category +-- ---------------------------- +DROP TABLE IF EXISTS `eb_category`; +CREATE TABLE `eb_category` ( + `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, + `pid` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '父级ID', + `path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '/0/' COMMENT '路径', + `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '分类名称', + `type` smallint(2) NULL DEFAULT 1 COMMENT '类型,1 产品分类,2 附件分类,3 文章分类, 4 设置分类, 5 菜单分类,6 配置分类, 7 秒杀配置', + `url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '地址', + `extra` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '扩展字段 Jsos格式', + `status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '状态, 1正常,0失效', + `sort` int(5) NOT NULL DEFAULT 99999 COMMENT '排序', + `create_time` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE, + INDEX `status+pid`(`pid`, `status`) USING BTREE, + INDEX `id+status+url`(`path`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 742 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '分类表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of eb_category +-- ---------------------------- +INSERT INTO `eb_category` VALUES (42, 0, '/0/', '商品', 5, '/store', 's-goods', 1, 1, '2020-04-28 17:03:34', '2020-08-12 12:29:13'); +INSERT INTO `eb_category` VALUES (43, 42, '/0/42/', '商品管理', 5, '/store/index', NULL, 1, 1, '2020-04-28 17:04:20', '2020-08-12 12:29:13'); +INSERT INTO `eb_category` VALUES (44, 42, '/0/42/', '商品分类', 5, '/store/sort', NULL, 1, 1, '2020-04-28 17:04:40', '2020-08-12 12:29:13'); +INSERT INTO `eb_category` VALUES (45, 0, '/0/', '订单', 5, '/order', 's-order', 1, 1, '2020-04-28 17:04:56', '2020-08-12 12:29:13'); +INSERT INTO `eb_category` VALUES (46, 45, '/0/45/', '订单', 5, '/order/index', 's-order', 1, 1, '2020-04-28 17:05:17', '2021-02-04 10:12:41'); +INSERT INTO `eb_category` VALUES (47, 0, '/0/', '用户', 5, '/user', 'user-solid', 1, 1, '2020-04-28 17:05:53', '2020-08-12 12:29:13'); +INSERT INTO `eb_category` VALUES (48, 47, '/0/47/', '用户管理', 5, '/user/index', NULL, 1, 1, '2020-04-28 17:07:13', '2020-08-12 12:29:13'); +INSERT INTO `eb_category` VALUES (49, 47, '/0/47/', '用户标签', 5, '/user/label', NULL, 1, 1, '2020-04-28 17:42:21', '2020-08-12 12:29:13'); +INSERT INTO `eb_category` VALUES (51, 0, '/0/', '设置', 5, '/operation', 's-tools', 1, -9, '2020-05-06 09:40:14', '2020-08-12 12:29:13'); +INSERT INTO `eb_category` VALUES (52, 51, '/0/51/', '管理权限', 5, '/operation/roleManager', NULL, 1, 1, '2020-05-06 09:40:35', '2020-08-12 12:29:13'); +INSERT INTO `eb_category` VALUES (53, 52, '/0/51/52/', '身份管理', 5, '/operation//roleManager/identityManager', NULL, 1, 1, '2020-05-06 09:40:51', '2020-08-12 12:29:13'); +INSERT INTO `eb_category` VALUES (54, 52, '/0/51/52/', '管理员列表', 5, '/operation//roleManager/adminList', NULL, 1, 1, '2020-05-06 09:41:11', '2020-08-12 12:29:13'); +INSERT INTO `eb_category` VALUES (55, 52, '/0/51/52/', '权限规则', 5, '/operation//roleManager/promiseRules', NULL, 1, 1, '2020-05-06 09:41:46', '2020-08-12 12:29:13'); +INSERT INTO `eb_category` VALUES (56, 0, '/0/', '内容', 5, '/content', 's-management', 1, 1, '2020-05-07 12:00:33', '2020-08-12 12:29:13'); +INSERT INTO `eb_category` VALUES (57, 56, '/0/56/', '文章管理', 5, '/content/articleManager', NULL, 1, 1, '2020-05-07 12:02:39', '2020-08-12 12:29:13'); +INSERT INTO `eb_category` VALUES (58, 56, '/0/56/', '文章分类', 5, '/content/classifManager', NULL, 1, 1, '2020-05-07 12:02:46', '2020-08-12 12:29:13'); +INSERT INTO `eb_category` VALUES (66, 0, '/0/', '维护', 5, '/maintain', 's-open', 1, -10, '2020-05-09 16:02:05', '2020-08-12 12:29:13'); +INSERT INTO `eb_category` VALUES (67, 66, '/0/66/', '开发配置', 5, '/maintain//devconfiguration', NULL, 1, 0, '2020-05-09 16:06:46', '2020-08-12 12:29:13'); +INSERT INTO `eb_category` VALUES (68, 67, '/0/66/67/', '配置分类', 5, '/maintain/devconfiguration/configCategory', NULL, 1, 0, '2020-05-09 16:07:09', '2020-08-12 12:29:13'); +INSERT INTO `eb_category` VALUES (69, 67, '/0/66/67/', '组合数据', 5, '/maintain/devconfiguration/combineddata', NULL, 1, 0, '2020-05-09 16:08:00', '2020-08-12 12:29:13'); +INSERT INTO `eb_category` VALUES (80, 51, '/0/51/', '系统设置', 5, '/operation/setting', NULL, 1, 9, '2020-05-20 09:44:47', '2020-12-10 11:30:07'); +INSERT INTO `eb_category` VALUES (81, 0, '/0/', 'PC管理后台配置', 6, 'pcAdmin config', '64', 1, 1, '2020-05-20 10:02:57', '2021-08-16 10:05:08'); +INSERT INTO `eb_category` VALUES (93, 81, '/0/81/', '站点配置', 6, '站点配置', '64', 1, 1, '2020-05-21 11:04:20', '2020-08-12 12:29:13'); +INSERT INTO `eb_category` VALUES (94, 100, '/0/100/', '客服配置', 6, '云智服', '76', 1, 1, '2020-05-21 11:04:37', '2020-09-09 17:09:47'); +INSERT INTO `eb_category` VALUES (95, 0, '/0/', '商城配置', 6, '商城配置', '139', 1, 2, '2020-05-21 11:10:20', '2021-08-19 15:21:48'); +INSERT INTO `eb_category` VALUES (96, 95, '/0/95/', '商城基础配置', 6, '商城基础配置', '77', 1, 1, '2020-05-21 11:10:40', '2020-08-12 12:29:13'); +INSERT INTO `eb_category` VALUES (99, 95, '/0/95/', '充值配置', 6, '充值配置', '78', 1, 1, '2020-05-21 11:11:28', '2020-08-12 12:29:13'); +INSERT INTO `eb_category` VALUES (100, 0, '/0/', '应用配置', 6, '应用配置', NULL, 1, 1, '2020-05-21 12:31:49', '2020-08-12 12:29:13'); +INSERT INTO `eb_category` VALUES (101, 100, '/0/100/', '公众号配置', 6, '公众号配置', '65', 1, 1, '2020-05-21 12:32:07', '2020-08-12 12:29:13'); +INSERT INTO `eb_category` VALUES (102, 100, '/0/100/', '小程序配置', 6, '小程序配置', '66', 1, 1, '2020-05-21 12:32:18', '2020-08-12 12:29:13'); +INSERT INTO `eb_category` VALUES (103, 0, '/0/', '支付配置', 6, '支付配置', NULL, 1, 1, '2020-05-21 12:33:36', '2020-08-12 12:29:13'); +INSERT INTO `eb_category` VALUES (104, 103, '/0/103/', '公众号支付配置', 6, '公众号支付配置', '67', 1, 1, '2020-05-21 12:33:54', '2020-08-12 12:29:13'); +INSERT INTO `eb_category` VALUES (105, 103, '/0/103/', '小程序支付配置', 6, '小程序支付配置', '68', 1, 1, '2020-05-21 12:34:36', '2020-08-12 12:29:13'); +INSERT INTO `eb_category` VALUES (107, 103, '/0/103/', '余额支付', 6, '余额支付', '80', 1, 1, '2020-05-21 12:35:01', '2020-08-12 12:29:13'); +INSERT INTO `eb_category` VALUES (108, 0, '/0/', '文件上传配置', 6, '文件上传配置', NULL, 1, 1, '2020-05-21 12:35:16', '2020-08-12 12:29:13'); +INSERT INTO `eb_category` VALUES (109, 108, '/0/108/', '基础配置', 6, '基础配置', '108', 1, 1, '2020-05-21 12:35:28', '2020-09-14 10:33:54'); +INSERT INTO `eb_category` VALUES (110, 108, '/0/108/', '阿里云配置', 6, '阿里云配置', '81', 1, 1, '2020-05-21 12:36:01', '2020-08-12 12:29:13'); +INSERT INTO `eb_category` VALUES (111, 108, '/0/108/', '七牛云配置', 6, '七牛云配置', '82', 1, 1, '2020-05-21 12:36:12', '2020-08-12 12:29:13'); +INSERT INTO `eb_category` VALUES (112, 108, '/0/108/', '腾讯云配置', 6, '腾讯云配置', '83', 1, 1, '2020-05-21 12:36:22', '2020-08-12 12:29:13'); +INSERT INTO `eb_category` VALUES (113, 0, '/0/', '应用', 5, '/appSetting', 's-promotion', 1, 1, '2020-05-21 16:12:53', '2020-08-12 12:29:13'); +INSERT INTO `eb_category` VALUES (114, 113, '/0/113/', '公众号', 5, '/appSetting/publicAccount', NULL, 1, 1, '2020-05-21 16:13:18', '2020-08-12 12:29:13'); +INSERT INTO `eb_category` VALUES (115, 114, '/0/113/114/', '微信菜单', 5, '/appSetting//publicAccount/wxMenus', NULL, 1, 1, '2020-05-21 16:13:36', '2020-08-12 12:29:13'); +INSERT INTO `eb_category` VALUES (118, 0, '/0/', '营销', 5, '/marketing', 's-marketing', 1, 1, '2020-05-25 14:39:52', '2020-08-12 12:29:13'); +INSERT INTO `eb_category` VALUES (119, 118, '/0/118/', '优惠券', 5, '/marketing/coupon', NULL, 1, 1, '2020-05-25 14:40:13', '2020-08-12 12:29:13'); +INSERT INTO `eb_category` VALUES (123, 118, '/0/118/', '积分', 5, '/marketing/integral', NULL, 1, 1, '2020-05-25 14:41:33', '2020-08-12 12:29:13'); +INSERT INTO `eb_category` VALUES (127, 42, '/0/42/', '商品规格', 5, '/store/attr', NULL, 1, 1, '2020-05-25 18:12:11', '2020-08-12 12:29:13'); +INSERT INTO `eb_category` VALUES (128, 42, '/0/42/', '商品评论', 5, '/store/comment', NULL, 1, 1, '2020-05-27 10:16:30', '2020-08-12 12:29:13'); +INSERT INTO `eb_category` VALUES (139, 113, '/0/113/', '小程序', 5, '/appSetting/publicRoutine', NULL, 1, 1, '2020-06-05 09:56:17', '2020-08-12 12:29:13'); +INSERT INTO `eb_category` VALUES (140, 139, '/0/113/139/', '我的模板', 5, '/appSetting/publicRoutine/routineTemplate', NULL, 0, 1, '2020-06-05 09:56:58', '2021-03-05 16:07:42'); +INSERT INTO `eb_category` VALUES (141, 114, '/0/113/114/', '自动回复', 5, '/appSetting/publicAccount/wxReply', NULL, 1, 1, '2020-06-15 16:15:32', '2020-08-12 12:29:13'); +INSERT INTO `eb_category` VALUES (146, 0, '/0/', '分销', 5, '/distribution', 's-check', 1, 1, '2020-07-18 16:31:09', '2020-12-07 09:35:02'); +INSERT INTO `eb_category` VALUES (147, 146, '/0/146/', '分销员管理', 5, '/distribution/index', NULL, 1, 1, '2020-07-18 16:31:49', '2020-12-18 10:22:25'); +INSERT INTO `eb_category` VALUES (148, 146, '/0/146/', '分销配置', 5, '/distribution/distributionconfig', NULL, 1, 1, '2020-07-18 16:32:06', '2020-12-18 10:22:19'); +INSERT INTO `eb_category` VALUES (158, 119, '/0/118/119/', '优惠券', 5, '/marketing/coupon/list', NULL, 1, 1, '2020-07-24 16:13:10', '2020-08-29 10:15:34'); +INSERT INTO `eb_category` VALUES (159, 119, '/0/118/119/', '领取记录', 5, '/marketing/coupon/record', NULL, 1, 1, '2020-07-24 16:13:37', '2021-03-12 16:40:29'); +INSERT INTO `eb_category` VALUES (160, 123, '/0/118/123/', '积分配置', 5, '/marketing/integral/integralconfig', NULL, 1, 1, '2020-07-24 16:14:48', '2020-08-12 12:29:13'); +INSERT INTO `eb_category` VALUES (161, 123, '/0/118/123/', '积分日志', 5, '/marketing/integral/integrallog', NULL, 1, 1, '2020-07-24 16:15:11', '2020-08-12 12:29:13'); +INSERT INTO `eb_category` VALUES (162, 47, '/0/47/', '用户等级', 5, '/user/grade', NULL, 1, 1, '2020-07-24 16:21:48', '2020-08-12 12:29:13'); +INSERT INTO `eb_category` VALUES (164, 47, '/0/47/', '用户分组', 5, '/user/group', NULL, 1, 1, '2020-07-24 16:22:46', '2020-08-12 12:29:13'); +INSERT INTO `eb_category` VALUES (171, 141, '/0/113/114/141/', '微信关注回复', 5, '/appSetting/publicAccount/wxReply/follow', NULL, 1, 1, '2020-07-24 16:42:52', '2020-08-12 12:29:13'); +INSERT INTO `eb_category` VALUES (172, 141, '/0/113/114/141/', '关键字回复', 5, '/appSetting/publicAccount/wxReply/keyword', NULL, 1, 1, '2020-07-24 16:43:09', '2020-08-12 12:29:13'); +INSERT INTO `eb_category` VALUES (173, 141, '/0/113/114/141/', '无效关键词回复', 5, '/appSetting/publicAccount/wxReply/replyIndex', NULL, 1, 1, '2020-07-24 16:43:23', '2020-08-12 12:29:13'); +INSERT INTO `eb_category` VALUES (174, 114, '/0/113/114/', '微信模板', 5, '/appSetting//publicAccount/template/1', NULL, 1, 1, '2020-07-24 16:43:52', '2021-03-05 16:17:57'); +INSERT INTO `eb_category` VALUES (175, 43, '/0/42/43/', '商品添加', 5, 'api/admin/store/product/save', NULL, 0, 1, '2020-07-24 16:46:04', '2021-03-11 09:20:26'); +INSERT INTO `eb_category` VALUES (176, 43, '/0/42/43/', '商品修改', 5, 'api/admin/store/product/update', NULL, 0, 1, '2020-07-24 16:46:19', '2020-08-31 10:07:24'); +INSERT INTO `eb_category` VALUES (245, 0, '/0/272/', '热门推荐', 1, '', 'crmebimage/public/maintain/2021/12/25/3a395df3d79a40a08cbc938c35e2dc35b84sujo2yn.png', 1, 0, '2020-08-12 11:42:27', '2021-12-25 11:39:37'); +INSERT INTO `eb_category` VALUES (246, 245, '/0/272/245/', '新品上市', 1, 'www', 'crmebimage/public/maintain/2021/12/25/8f9eca84e2b14752ad4afb1ab8d06974xua9ambm9y.jpg', 1, 0, '2020-08-12 11:42:58', '2021-12-25 11:44:38'); +INSERT INTO `eb_category` VALUES (248, 245, '/0/272/245/', '热卖商品', 1, 'www', 'crmebimage/public/maintain/2021/12/25/1618a47e11e745ff90c70f752c204e17qi6vjngrcd.jpg', 1, 0, '2020-08-12 11:50:40', '2021-12-25 11:44:51'); +INSERT INTO `eb_category` VALUES (250, 67, '/0/66/67/', '表单配置', 5, '/maintain/devconfiguration/formConfig', NULL, 1, 0, '2020-08-12 12:09:56', '2020-08-12 12:29:13'); +INSERT INTO `eb_category` VALUES (258, 245, '/0/272/245/', '折扣专区', 1, 'www', 'crmebimage/public/maintain/2021/12/25/73f9c6c1b14445b5bb477e8c05d8a2763sfij1gamk.jpg', 1, 0, '2020-08-12 13:59:31', '2021-12-25 11:45:05'); +INSERT INTO `eb_category` VALUES (267, 0, '/0/', '控制台', 5, '/dashboard', 'menu', 1, 10, '2020-08-13 10:31:07', '2021-02-04 11:04:27'); +INSERT INTO `eb_category` VALUES (272, 0, '/0/', '家用电器', 1, '', 'crmebimage/public/maintain/2021/12/25/37901b98fba74345ad0e8a575999ad09n9d3winw2c.jpg', 1, 0, '2020-08-13 12:03:40', '2021-12-25 11:40:01'); +INSERT INTO `eb_category` VALUES (273, 272, '/0/272/', '电视', 1, '', 'crmebimage/public/maintain/2021/12/25/37901b98fba74345ad0e8a575999ad09n9d3winw2c.jpg', 1, 0, '2020-08-13 12:05:23', '2021-12-25 11:45:43'); +INSERT INTO `eb_category` VALUES (275, 272, '/0/272/', '洗衣机', 1, 'www', 'crmebimage/public/maintain/2021/12/25/62414c551db44169a6429c0dd3d162833o6e82okff.jpg', 1, 0, '2020-08-13 12:07:57', '2021-12-25 11:46:24'); +INSERT INTO `eb_category` VALUES (276, 272, '/0/272/', '生活电器', 1, '', 'crmebimage/public/maintain/2021/12/25/4811fe50a33f48309337e67c3d36318exseuh6qys6.jpg', 1, 0, '2020-08-13 12:11:36', '2021-12-25 11:46:46'); +INSERT INTO `eb_category` VALUES (277, 272, '/0/272/', '厨卫电器', 1, '', 'crmebimage/public/store/2021/12/25/476f2b8a50644f5f80124f831ac14aecct8ewiyvwf.png', 1, 0, '2020-08-13 12:12:38', '2021-12-25 11:49:53'); +INSERT INTO `eb_category` VALUES (279, 272, '/0/272/', '清凉一夏', 1, '', 'crmebimage/public/store/2021/12/25/f22830611d324e8fb10129e969f1ec661lcpu7346h.png', 1, 0, '2020-08-13 12:15:11', '2021-12-25 11:51:13'); +INSERT INTO `eb_category` VALUES (280, 0, '/0/', '家装家具', 1, '', 'crmebimage/public/maintain/2021/12/25/86f83bdc35534eeda2fb4daeb51dbb28pizkxqnzap.jpg', 1, 0, '2020-08-13 12:17:25', '2021-12-25 11:40:17'); +INSERT INTO `eb_category` VALUES (281, 0, '/0/', '户外出行', 1, '', 'crmebimage/public/maintain/2021/12/25/55014ffb17b74d039b5670298e1047fcyw64lmyzlj.jpg', 1, 0, '2020-08-13 12:17:54', '2021-12-25 11:40:54'); +INSERT INTO `eb_category` VALUES (282, 0, '/0/', '美妆个护', 1, '', 'crmebimage/public/maintain/2021/12/25/2eef89b403dd47619e349e3edb057ce4g2clr5d4xn.jpg', 1, 0, '2020-08-13 12:18:04', '2021-12-25 11:41:26'); +INSERT INTO `eb_category` VALUES (283, 0, '/0/', '3C数码', 1, '', 'crmebimage/public/maintain/2021/12/25/432cb941d4f64f4c88d2d3a8b784f282kqlp2cu55l.jpg', 1, 0, '2020-08-13 12:18:14', '2021-12-25 11:41:51'); +INSERT INTO `eb_category` VALUES (284, 0, '/0/283/', '日用文创', 1, '', 'crmebimage/public/store/2021/12/25/d813cbdd98b148c99885652234ad43b1m1aewwn8wd.jpg', 1, 0, '2020-08-13 12:18:30', '2021-12-25 12:11:39'); +INSERT INTO `eb_category` VALUES (285, 280, '/0/280/', '智能门锁', 1, '', 'crmebimage/public/store/2021/12/25/8b665c20edef4d61a508de9395eb40c4ln34d0f3i5.png', 1, 0, '2020-08-13 13:31:48', '2021-12-25 11:53:16'); +INSERT INTO `eb_category` VALUES (286, 280, '/0/280/', '居家照明', 1, '', 'crmebimage/public/store/2021/12/25/24119aa4d48e4c7a95b21ece82a41715uns67350bd.jpg', 1, 0, '2020-08-13 13:33:06', '2021-12-25 11:54:14'); +INSERT INTO `eb_category` VALUES (287, 280, '/0/280/', '家装建材', 1, '', 'crmebimage/public/store/2021/12/25/7b4c8af47e414f62a5d7b26d95504cbafw13ela5i7.png', 1, 0, '2020-08-13 13:34:22', '2021-12-25 11:55:49'); +INSERT INTO `eb_category` VALUES (288, 281, '/0/281/', '健身运动', 1, '', 'crmebimage/public/store/2021/12/25/0f419f2a65844ae5a00c20e22dc9b92env32uvr4dy.png', 1, 0, '2020-08-13 13:35:37', '2021-12-25 11:58:42'); +INSERT INTO `eb_category` VALUES (289, 281, '/0/281/', '户外装备', 1, '', 'crmebimage/public/store/2021/12/25/bf8bc87d525844b68ca17ca60c567233hkh2h9c2un.png', 1, 0, '2020-08-13 13:36:34', '2021-12-25 12:00:59'); +INSERT INTO `eb_category` VALUES (290, 281, '/0/281/', '骑行配件', 1, '', 'crmebimage/public/store/2021/12/25/ef98f38ef1cd4083a91fb62b1dd8362cmran1psnmc.png', 1, 0, '2020-08-13 13:37:23', '2021-12-25 12:02:43'); +INSERT INTO `eb_category` VALUES (291, 282, '/0/282/', '美妆工具', 1, '', 'crmebimage/public/store/2021/12/25/1ccac5f9f62646ba930000ad70f741efpfgagvhrzh.png', 1, 0, '2020-08-13 13:38:32', '2021-12-25 12:07:00'); +INSERT INTO `eb_category` VALUES (292, 282, '/0/282/', '口腔清洁', 1, '', 'crmebimage/public/store/2021/12/25/0705b0fad3884eddb31745e453de6503atuqud1tr3.png', 1, 0, '2020-08-13 13:39:33', '2021-12-25 12:07:10'); +INSERT INTO `eb_category` VALUES (293, 282, '/0/282/', '彩妆香氛', 1, '', 'crmebimage/public/store/2021/12/25/0e13333fdf2841a2a886a9595bebc855q5jgkr8b66.png', 1, 0, '2020-08-13 13:40:34', '2021-12-25 12:07:27'); +INSERT INTO `eb_category` VALUES (294, 282, '/0/282/', '面部护肤', 1, '', 'crmebimage/public/store/2021/12/25/6246abff834b4d2fb1edad2a8927c8a3yes6irrqfw.png', 1, 0, '2020-08-13 13:42:19', '2021-12-25 12:07:40'); +INSERT INTO `eb_category` VALUES (295, 282, '/0/282/', '身体护理', 1, '', 'crmebimage/public/store/2021/12/25/090f2f83e9b343c38c7c7b4ebc860a352r8u8adjsq.png', 1, 0, '2020-08-13 13:43:21', '2021-12-25 12:07:55'); +INSERT INTO `eb_category` VALUES (296, 282, '/0/282/', '其他工具', 1, '', 'crmebimage/public/store/2021/12/25/fbc798bf3c91493f95c97be7d6cbaa5akhcpo5ent3.png', 1, 0, '2020-08-13 13:44:15', '2021-12-25 12:08:10'); +INSERT INTO `eb_category` VALUES (297, 283, '/0/283/', '手机', 1, '', 'crmebimage/public/maintain/2021/12/25/73f9c6c1b14445b5bb477e8c05d8a2763sfij1gamk.jpg', 1, 0, '2020-08-13 13:45:52', '2021-12-25 12:12:07'); +INSERT INTO `eb_category` VALUES (298, 283, '/0/283/', '平板电脑', 1, '', 'crmebimage/public/maintain/2021/12/25/4811fe50a33f48309337e67c3d36318exseuh6qys6.jpg', 1, 0, '2020-08-13 13:46:22', '2021-12-25 12:12:32'); +INSERT INTO `eb_category` VALUES (300, 284, '/0/283/284/', '日用杂货', 1, '', 'crmebimage/public/store/2021/12/25/61bf8228d96b4c8c9343bc13b4e6fc67c0jmc2y781.png', 1, 0, '2020-08-13 13:48:30', '2021-12-25 12:16:19'); +INSERT INTO `eb_category` VALUES (301, 284, '/0/283/284/', '纸品湿巾', 1, '', 'crmebimage/public/store/2021/12/25/ae2a9db4d74a4a56bddb971d3df9e60fljwxe9z3lh.png', 1, 0, '2020-08-13 13:49:30', '2021-12-25 12:16:32'); +INSERT INTO `eb_category` VALUES (302, 284, '/0/283/284/', '办公文具', 1, '', 'crmebimage/public/store/2021/12/25/de35d545523448db9f3636e34ca085b29qw11rescg.png', 1, 0, '2020-08-13 13:50:39', '2021-12-25 12:16:41'); +INSERT INTO `eb_category` VALUES (316, 139, '/0/113/139/', '公共模板', 5, '/appSetting/publicRoutine/publicRoutineTemplate', NULL, 0, 1, '2020-08-27 14:15:41', '2021-03-05 16:07:41'); +INSERT INTO `eb_category` VALUES (317, 452, '/0/452/', '订单核销', 5, '/javaMobile/orderCancellation', NULL, 1, 0, '2020-08-27 14:51:47', '2020-09-12 15:19:51'); +INSERT INTO `eb_category` VALUES (318, 43, '/0/42/43/', '商品删除', 5, 'api/admin/store/product/delete', NULL, 0, 0, '2020-08-28 16:12:53', '2020-08-31 10:07:24'); +INSERT INTO `eb_category` VALUES (319, 43, '/0/42/43/', '商品上架', 5, 'api/admin/store/product/putOnShell', NULL, 0, 0, '2020-08-28 16:14:14', '2020-08-31 10:07:22'); +INSERT INTO `eb_category` VALUES (320, 43, '/0/42/43/', '商品下架', 5, 'api/admin/store/product/offShell', NULL, 0, 0, '2020-08-28 16:14:33', '2020-08-31 10:07:23'); +INSERT INTO `eb_category` VALUES (321, 43, '/0/42/43/', '库存变动', 5, 'api/admin/store/product/stock', NULL, 0, 0, '2020-08-28 16:15:07', '2020-08-31 10:07:21'); +INSERT INTO `eb_category` VALUES (322, 43, '/0/42/43/', '虚拟销量', 5, 'api/admin/store/product/ficti', NULL, 0, 0, '2020-08-28 16:15:59', '2020-08-31 10:07:21'); +INSERT INTO `eb_category` VALUES (323, 127, '/0/42/127/', '规格添加', 5, 'api/admin/store/product/rule/save', NULL, 0, 0, '2020-08-28 16:25:25', '2020-08-28 16:26:44'); +INSERT INTO `eb_category` VALUES (324, 127, '/0/42/127/', '规格修改', 5, 'api/admin/store/product/rule/update', NULL, 0, 0, '2020-08-28 16:25:40', '2021-02-04 12:16:35'); +INSERT INTO `eb_category` VALUES (325, 127, '/0/42/127/', '规格删除', 5, 'api/admin/store/product/rule/delete', NULL, 0, 0, '2020-08-28 16:26:01', '2021-02-04 15:19:41'); +INSERT INTO `eb_category` VALUES (328, 128, '/0/42/128/', '商品评论添加', 5, 'api/admin/store/product/reply/save', NULL, 0, 0, '2020-08-28 16:27:53', '2020-08-28 16:27:53'); +INSERT INTO `eb_category` VALUES (329, 128, '/0/42/128/', '商品评论修改', 5, 'api/admin/store/product/reply/update', NULL, 0, 0, '2020-08-28 16:28:18', '2020-08-28 16:28:18'); +INSERT INTO `eb_category` VALUES (331, 128, '/0/42/128/', '商品评论删除', 5, 'api/admin/store/product/reply/delete', NULL, 0, 0, '2020-08-28 16:29:57', '2020-08-28 16:30:02'); +INSERT INTO `eb_category` VALUES (333, 128, '/0/42/128/', '商品评论回复', 5, 'api/admin/store/product/reply/comment', NULL, 0, 0, '2020-08-28 16:30:38', '2020-08-28 16:30:38'); +INSERT INTO `eb_category` VALUES (335, 46, '/0/45/46/', '订单删除', 5, 'api/admin/store/order/delete', NULL, 0, 0, '2020-08-29 09:33:49', '2021-03-11 09:33:59'); +INSERT INTO `eb_category` VALUES (337, 46, '/0/45/46/', '订单标记', 5, 'api/admin/store/order/mark', NULL, 0, 0, '2020-08-29 09:34:25', '2020-08-29 09:34:25'); +INSERT INTO `eb_category` VALUES (338, 46, '/0/45/46/', '订单退款', 5, 'api/admin/store/order/refund', NULL, 0, 0, '2020-08-29 09:34:38', '2020-08-29 09:34:38'); +INSERT INTO `eb_category` VALUES (339, 46, '/0/45/46/', '订单拒绝退款', 5, 'api/admin/store/order/refund/refuse', NULL, 0, 0, '2020-08-29 09:35:08', '2020-08-29 09:35:08'); +INSERT INTO `eb_category` VALUES (340, 46, '/0/45/46/', '订单发货', 5, 'api/admin/store/order/send', NULL, 0, 0, '2020-08-29 09:35:33', '2021-03-11 09:34:07'); +INSERT INTO `eb_category` VALUES (341, 46, '/0/45/46/', '订单更新', 5, 'api/admin/store/order/update', NULL, 0, 0, '2020-08-29 09:35:44', '2020-08-29 09:35:44'); +INSERT INTO `eb_category` VALUES (345, 48, '/0/47/48/', '用户修改', 5, 'api/admin/user/update', NULL, 0, 0, '2020-08-29 09:39:12', '2020-08-29 09:39:12'); +INSERT INTO `eb_category` VALUES (346, 48, '/0/47/48/', '用户详情', 5, 'api/admin/user/infobycondition', NULL, 0, 0, '2020-08-29 09:39:22', '2020-08-29 09:41:16'); +INSERT INTO `eb_category` VALUES (347, 48, '/0/47/48/', '用户分组', 5, 'api/admin/user/group', NULL, 0, 0, '2020-08-29 09:39:31', '2020-08-29 09:39:31'); +INSERT INTO `eb_category` VALUES (348, 48, '/0/47/48/', '用户删除', 5, 'api/admin/user/delete', NULL, 0, 0, '2020-08-29 09:39:49', '2020-08-29 09:39:49'); +INSERT INTO `eb_category` VALUES (349, 48, '/0/47/48/', '用户打标签', 5, 'api/admin/user/tag', NULL, 0, 0, '2020-08-29 09:40:02', '2020-08-29 09:40:02'); +INSERT INTO `eb_category` VALUES (350, 48, '/0/47/48/', '修改积分余额', 5, 'api/admin/user/operate/founds', NULL, 0, 0, '2020-08-29 09:41:50', '2020-08-29 09:41:50'); +INSERT INTO `eb_category` VALUES (351, 162, '/0/47/162/', '用户等级添加', 5, 'api/admin/system/user/level/save', NULL, 0, 0, '2020-08-29 09:43:32', '2020-08-29 09:44:47'); +INSERT INTO `eb_category` VALUES (352, 162, '/0/47/162/', '用户等级修改', 5, 'api/admin/system/user/level/update', NULL, 0, 0, '2020-08-29 09:46:00', '2020-08-29 09:46:00'); +INSERT INTO `eb_category` VALUES (353, 162, '/0/47/162/', '用户等级删除', 5, 'api/admin/system/user/level/delete', NULL, 0, 0, '2020-08-29 09:46:13', '2020-08-29 09:46:13'); +INSERT INTO `eb_category` VALUES (356, 162, '/0/47/162/', '用户等级是否显示', 5, 'api/admin/system/user/level/use', NULL, 0, 0, '2020-08-29 09:47:41', '2020-08-29 09:47:41'); +INSERT INTO `eb_category` VALUES (357, 49, '/0/47/49/', '用户标签添加', 5, 'api/admin/user/tag/save', NULL, 0, 0, '2020-08-29 09:48:13', '2020-08-29 09:49:20'); +INSERT INTO `eb_category` VALUES (358, 49, '/0/47/49/', '用户标签修改', 5, 'api/admin/user/tag/update', NULL, 0, 0, '2020-08-29 09:48:26', '2020-08-29 09:49:27'); +INSERT INTO `eb_category` VALUES (363, 164, '/0/47/164/', '用户分组修改', 5, 'api/admin/user/group/update', NULL, 0, 0, '2020-08-29 09:52:23', '2020-08-29 09:52:23'); +INSERT INTO `eb_category` VALUES (364, 164, '/0/47/164/', '用户分组删除', 5, 'api/admin/user/group/delete', NULL, 0, 0, '2020-08-29 09:52:35', '2020-08-29 09:52:35'); +INSERT INTO `eb_category` VALUES (366, 164, '/0/47/164/', '用户分组列表', 5, 'api/admin/user/group/list', NULL, 0, 0, '2020-08-29 09:53:09', '2020-08-29 09:53:09'); +INSERT INTO `eb_category` VALUES (367, 57, '/0/56/57/', '文章添加', 5, 'api/admin/article/save', NULL, 0, 0, '2020-08-29 09:54:14', '2020-08-29 09:54:14'); +INSERT INTO `eb_category` VALUES (368, 57, '/0/56/57/', '文章删除', 5, 'api/admin/article/delete', NULL, 0, 0, '2020-08-29 09:55:05', '2020-08-29 09:55:05'); +INSERT INTO `eb_category` VALUES (369, 57, '/0/56/57/', '文章修改', 5, 'api/admin/article/update', NULL, 0, 0, '2020-08-29 09:55:15', '2020-08-29 09:55:15'); +INSERT INTO `eb_category` VALUES (372, 57, '/0/56/57/', '文章绑定产品', 5, 'api/admin/article/bind/product', NULL, 0, 0, '2020-08-29 09:56:40', '2020-08-29 09:56:40'); +INSERT INTO `eb_category` VALUES (373, 115, '/0/113/114/115/', '微信菜单保存', 5, 'api/admin/wechat/menu/public/create', NULL, 0, 0, '2020-08-29 09:59:41', '2020-08-29 09:59:41'); +INSERT INTO `eb_category` VALUES (374, 115, '/0/113/114/115/', '微信菜单删除', 5, 'api/admin/wechat/menu/public/delete', NULL, 0, 0, '2020-08-29 10:00:02', '2020-08-29 10:00:02'); +INSERT INTO `eb_category` VALUES (375, 172, '/0/113/114/141/172/', '关键字添加', 5, 'api/admin/wechat/keywords/reply/save', NULL, 0, 0, '2020-08-29 10:02:20', '2020-08-29 10:02:20'); +INSERT INTO `eb_category` VALUES (376, 172, '/0/113/114/141/172/', '关键字删除', 5, 'api/admin/wechat/keywords/reply/delete', NULL, 0, 0, '2020-08-29 10:02:48', '2020-08-29 10:02:48'); +INSERT INTO `eb_category` VALUES (377, 172, '/0/113/114/141/172/', '关键字修改', 5, 'api/admin/wechat/keywords/reply/update', NULL, 0, 0, '2020-08-29 10:03:00', '2020-08-29 10:03:00'); +INSERT INTO `eb_category` VALUES (381, 174, '/0/113/114/174/', '微信模板添加', 5, 'api/admin/wechat/template/save', NULL, 0, 0, '2020-08-29 10:05:03', '2020-08-29 10:06:14'); +INSERT INTO `eb_category` VALUES (382, 174, '/0/113/114/174/', '微信模板修改', 5, 'api/admin/wechat/template/update', NULL, 0, 0, '2020-08-29 10:05:35', '2020-08-29 10:06:19'); +INSERT INTO `eb_category` VALUES (383, 174, '/0/113/114/174/', '微信模板删除', 5, 'api/admin/wechat/template/delete', NULL, 0, 0, '2020-08-29 10:05:44', '2020-08-29 10:06:24'); +INSERT INTO `eb_category` VALUES (385, 174, '/0/113/114/174/', '微信模板状态更新', 5, 'api/admin/wechat/template/status', NULL, 0, 0, '2020-08-29 10:06:55', '2020-08-29 10:06:55'); +INSERT INTO `eb_category` VALUES (387, 174, '/0/113/114/174/', '微信模板行业信息', 5, 'api/admin/wechat/template/industry', NULL, 0, 0, '2020-08-29 10:07:32', '2020-08-29 10:07:32'); +INSERT INTO `eb_category` VALUES (389, 140, '/0/113/139/140/', '我的模板添加', 5, 'api/admin/wechat/program/my/temp/save', NULL, 0, 0, '2020-08-29 10:08:31', '2020-08-29 10:08:31'); +INSERT INTO `eb_category` VALUES (390, 140, '/0/113/139/140/', '我的模板修改', 5, 'api/admin/wechat/program/my/temp/update', NULL, 0, 0, '2020-08-29 10:08:41', '2020-08-29 10:08:41'); +INSERT INTO `eb_category` VALUES (392, 140, '/0/113/139/140/', '我的模板状态更新', 5, 'api/admin/wechat/program/my/temp/status', NULL, 0, 0, '2020-08-29 10:09:44', '2020-08-29 10:09:44'); +INSERT INTO `eb_category` VALUES (393, 316, '/0/113/139/316/', '公共模板行业信息', 5, 'api/admin/wechat/program/category', NULL, 0, 0, '2020-08-29 10:10:28', '2020-08-29 10:10:28'); +INSERT INTO `eb_category` VALUES (396, 140, '/0/113/139/140/', '根据公共模板获取关键词列表', 5, 'api/admin/wechat/program/getWeChatKeywordsByTid', NULL, 0, 0, '2020-08-29 10:11:56', '2020-08-29 10:11:56'); +INSERT INTO `eb_category` VALUES (397, 158, '/0/118/119/158/', '优惠券添加', 5, 'api/admin/marketing/coupon/save', NULL, 0, 0, '2020-08-29 10:12:37', '2020-08-29 10:16:13'); +INSERT INTO `eb_category` VALUES (398, 158, '/0/118/119/158/', '优惠券状态更新', 5, 'api/admin/marketing/coupon/update/status', NULL, 0, 0, '2020-08-29 10:13:10', '2020-08-29 10:16:20'); +INSERT INTO `eb_category` VALUES (402, 159, '/0/118/119/159/', '领取优惠券', 5, 'api/admin/marketing/coupon/user/receive', NULL, 0, 0, '2020-08-29 10:18:21', '2020-08-29 10:18:48'); +INSERT INTO `eb_category` VALUES (403, 54, '/0/51/52/54/', '管理员添加', 5, 'api/admin/system/admin/save', NULL, 0, 0, '2020-08-29 10:22:43', '2020-08-29 10:26:11'); +INSERT INTO `eb_category` VALUES (404, 54, '/0/51/52/54/', '管理员修改', 5, 'api/admin/system/admin/update', NULL, 0, 0, '2020-08-29 10:23:00', '2020-08-29 10:26:09'); +INSERT INTO `eb_category` VALUES (405, 54, '/0/51/52/54/', '管理员删除', 5, 'api/admin/system/admin/delete', NULL, 0, 0, '2020-08-29 10:23:11', '2020-08-29 10:26:06'); +INSERT INTO `eb_category` VALUES (408, 53, '/0/51/52/53/', '身份添加', 5, 'api/admin/system/role/save', NULL, 0, 0, '2020-08-29 10:26:52', '2020-08-29 10:26:52'); +INSERT INTO `eb_category` VALUES (409, 53, '/0/51/52/53/', '身份删除', 5, 'api/admin/system/role/delete', NULL, 0, 0, '2020-08-29 10:27:07', '2020-08-29 10:27:07'); +INSERT INTO `eb_category` VALUES (410, 53, '/0/51/52/53/', '身份修改', 5, 'api/admin/system/role/update', NULL, 0, 0, '2020-08-29 10:27:27', '2020-08-29 10:27:27'); +INSERT INTO `eb_category` VALUES (432, 69, '/0/66/67/69/', '数据组添加', 5, 'api/admin/system/group/save', NULL, 0, 0, '2020-08-29 10:41:33', '2020-08-29 10:41:33'); +INSERT INTO `eb_category` VALUES (433, 69, '/0/66/67/69/', '数据组修改', 5, 'api/admin/system/group/update', NULL, 0, 0, '2020-08-29 10:41:49', '2020-08-29 10:41:49'); +INSERT INTO `eb_category` VALUES (434, 69, '/0/66/67/69/', '数据组删除', 5, 'api/admin/system/group/delete', NULL, 0, 0, '2020-08-29 10:41:59', '2020-08-29 10:41:59'); +INSERT INTO `eb_category` VALUES (437, 69, '/0/66/67/69/', '组合数据添加', 5, 'api/admin/system/group/data/save', NULL, 0, 0, '2020-08-29 10:43:00', '2020-08-29 10:43:00'); +INSERT INTO `eb_category` VALUES (438, 69, '/0/66/67/69/', '组合数据修改', 5, 'api/admin/system/group/data/update', NULL, 0, 0, '2020-08-29 10:43:16', '2020-08-29 10:43:16'); +INSERT INTO `eb_category` VALUES (439, 69, '/0/66/67/69/', '组合数据删除', 5, 'api/admin/system/group/data/delete', NULL, 0, 0, '2020-08-29 10:43:41', '2020-08-29 10:43:41'); +INSERT INTO `eb_category` VALUES (442, 250, '/0/66/67/250/', '表单添加', 5, 'api/admin/system/form/temp/save', NULL, 0, 0, '2020-08-29 10:45:23', '2020-08-29 10:45:23'); +INSERT INTO `eb_category` VALUES (443, 250, '/0/66/67/250/', '表单删除', 5, 'api/admin/system/form/temp/delete', NULL, 0, 0, '2020-08-29 10:45:40', '2020-08-29 10:45:40'); +INSERT INTO `eb_category` VALUES (444, 250, '/0/66/67/250/', '表单修改', 5, 'api/admin/system/form/temp/update', NULL, 0, 0, '2020-08-29 10:46:06', '2020-08-29 10:46:06'); +INSERT INTO `eb_category` VALUES (450, 452, '/0/452/', '订单统计', 5, '/javaMobile/orderStatistics', NULL, 1, 0, '2020-09-03 10:27:31', '2020-09-12 15:20:13'); +INSERT INTO `eb_category` VALUES (452, 0, '/0/', '移动端管理', 5, '/javaMobile', 'mobile-phone', 1, 0, '2020-09-07 11:21:03', '2020-09-12 15:18:48'); +INSERT INTO `eb_category` VALUES (454, 100, '/0/100/', '99Api', 6, '99Api', '122', 1, 4, '2020-09-08 12:17:36', '2020-09-08 12:18:44'); +INSERT INTO `eb_category` VALUES (459, 118, '/0/118/', '秒杀管理', 5, '/marketing/seckill', NULL, 1, 0, '2020-09-17 10:02:39', '2020-09-17 10:02:39'); +INSERT INTO `eb_category` VALUES (460, 459, '/0/118/459/', '秒杀配置', 5, '/marketing/seckill/config', NULL, 1, 0, '2020-09-17 10:37:42', '2020-09-17 10:41:30'); +INSERT INTO `eb_category` VALUES (461, 459, '/0/118/459/', '秒杀商品', 5, '/marketing/seckill/list', NULL, 1, 0, '2020-09-17 10:38:27', '2020-09-17 10:41:40'); +INSERT INTO `eb_category` VALUES (464, 0, '/0/', '财务', 5, '/financial', 's-finance', 1, 1, '2020-09-17 14:34:44', '2020-09-17 14:34:44'); +INSERT INTO `eb_category` VALUES (465, 464, '/0/464/', '财务操作', 5, '/financial/commission', NULL, 1, 0, '2020-09-17 14:35:37', '2020-09-17 14:35:37'); +INSERT INTO `eb_category` VALUES (466, 465, '/0/464/465/', '申请提现', 5, '/financial/commission/template', NULL, 1, 0, '2020-09-17 14:36:04', '2020-09-17 14:36:04'); +INSERT INTO `eb_category` VALUES (467, 464, '/0/464/', '财务记录', 5, '/financial/record', NULL, 1, 0, '2020-09-17 14:36:40', '2020-09-17 14:36:40'); +INSERT INTO `eb_category` VALUES (468, 467, '/0/464/467/', '充值记录', 5, '/financial/record/charge', NULL, 1, 0, '2020-09-17 14:36:55', '2020-09-17 14:37:22'); +INSERT INTO `eb_category` VALUES (469, 467, '/0/464/467/', '资金监控', 5, '/financial/record/monitor', NULL, 1, 0, '2020-09-17 14:37:35', '2020-09-17 14:37:35'); +INSERT INTO `eb_category` VALUES (470, 464, '/0/464/', '佣金记录', 5, '/financial/brokerage', NULL, 1, 0, '2020-09-17 14:38:16', '2020-09-17 14:38:16'); +INSERT INTO `eb_category` VALUES (477, 477, '/0/477/', '22222', 1, '', 'crmebimage/content/2020/10/19/6c8ba5e093384f589d212ff77e898d39kpfzjv8h3c.png', 1, 999999999, '2020-10-20 14:44:07', '2021-01-25 10:02:25'); +INSERT INTO `eb_category` VALUES (488, 245, '/0/272/245/', '精品首发', 1, '', 'crmebimage/public/maintain/2021/12/25/9dcafbf40f4a43909ef991338583e633qh2zl6rdwi.jpg', 1, 0, '2020-10-21 10:19:17', '2021-12-25 11:45:21'); +INSERT INTO `eb_category` VALUES (492, 118, '/0/118/', '砍价管理', 5, '/marketing/bargain', NULL, 1, 0, '2020-11-16 12:29:25', '2020-11-16 12:29:25'); +INSERT INTO `eb_category` VALUES (493, 492, '/0/118/492/', '砍价商品', 5, '/marketing/bargain/bargainGoods', NULL, 1, 0, '2020-11-16 14:19:46', '2020-11-16 14:19:46'); +INSERT INTO `eb_category` VALUES (494, 492, '/0/118/492/', '砍价列表', 5, '/marketing/bargain/bargainList', NULL, 1, 0, '2020-11-16 14:38:57', '2020-11-16 14:38:57'); +INSERT INTO `eb_category` VALUES (495, 118, '/0/118/', '拼团管理', 5, '/marketing/groupBuy', NULL, 1, 0, '2020-11-19 14:06:51', '2020-11-19 14:06:51'); +INSERT INTO `eb_category` VALUES (496, 495, '/0/118/495/', '拼团商品', 5, '/marketing/groupBuy/groupGoods', NULL, 1, 0, '2020-11-19 14:07:32', '2020-11-19 14:07:32'); +INSERT INTO `eb_category` VALUES (497, 495, '/0/118/495/', '拼团列表', 5, '/marketing/groupBuy/groupList', NULL, 1, 0, '2020-11-19 14:07:57', '2020-11-19 14:07:57'); +INSERT INTO `eb_category` VALUES (500, 0, '/0/', '第三方接口设置', 6, 'short_letter_switch', NULL, 1, 1, '2020-12-10 10:58:25', '2020-12-10 10:59:39'); +INSERT INTO `eb_category` VALUES (501, 500, '/0/500/', '短信配置', 6, 'short_letter_switch', '111', 1, 1, '2020-12-10 10:59:08', '2020-12-10 12:05:54'); +INSERT INTO `eb_category` VALUES (502, 500, '/0/500/', '采集商品配置', 6, 'copy_product', '127', 1, 1, '2020-12-10 11:00:32', '2020-12-10 12:18:38'); +INSERT INTO `eb_category` VALUES (503, 500, '/0/500/', '物流查询', 6, 'logistics_select', '128', 1, 1, '2020-12-10 11:00:51', '2020-12-10 12:18:57'); +INSERT INTO `eb_category` VALUES (504, 500, '/0/500/', '电子面单', 6, 'electronic_sheet', '129', 1, 1, '2020-12-10 11:01:03', '2020-12-10 12:19:02'); +INSERT INTO `eb_category` VALUES (505, 51, '/0/51/', '一号通', 5, '/operation/onePass', NULL, 1, 8, '2020-12-10 11:06:44', '2020-12-10 11:07:46'); +INSERT INTO `eb_category` VALUES (515, 0, '/0/', '每日新品', 1, '', 'crmebimage/public/maintain/2021/12/25/a272fcefed804cf2b1e6785d5662c29ejqjxha0eow.jpg', 1, 10, '2020-12-22 09:16:27', '2021-12-25 11:39:01'); +INSERT INTO `eb_category` VALUES (528, 66, '/0/66/', '素材管理', 5, '/maintain/picture', NULL, 1, 1, '2021-01-23 11:28:28', '2021-01-23 11:29:19'); +INSERT INTO `eb_category` VALUES (534, 515, '/0/515/', '玩偶', 1, '', 'crmebimage/public/maintain/2021/12/25/fb364676ea364297b7441638f9e0f557dckg4t2rds.jpg', 1, 4, '2021-01-30 18:40:49', '2021-12-25 11:43:06'); +INSERT INTO `eb_category` VALUES (540, 54, '/0/51/52/54/', '管理员状态更新', 5, 'api/admin/system/admin/updateStatus', NULL, 0, 0, '2021-02-04 10:59:10', '2021-02-04 10:59:17'); +INSERT INTO `eb_category` VALUES (541, 55, '/0/51/52/55/', '权限列表', 5, 'api/admin/category/list', NULL, 0, 0, '2021-02-04 11:06:43', '2021-02-04 11:06:43'); +INSERT INTO `eb_category` VALUES (542, 55, '/0/51/52/55/', '权限新增', 5, 'api/admin/category/save', NULL, 0, 0, '2021-02-04 11:08:11', '2021-02-04 11:08:11'); +INSERT INTO `eb_category` VALUES (543, 55, '/0/51/52/55/', '权限删除', 5, 'api/admin/category/delete', NULL, 0, 0, '2021-02-04 11:11:16', '2021-02-04 11:11:16'); +INSERT INTO `eb_category` VALUES (544, 55, '/0/51/52/55/', '权限更新', 5, 'api/admin/category/update', NULL, 0, 0, '2021-02-04 11:11:49', '2021-02-04 11:11:49'); +INSERT INTO `eb_category` VALUES (546, 55, '/0/51/52/55/', '更新权限状态', 5, 'api/admin/category/updateStatus', NULL, 0, 0, '2021-02-04 11:14:19', '2021-02-04 11:14:19'); +INSERT INTO `eb_category` VALUES (547, 505, '/0/51/505/', '一号通登录', 5, 'api/admin/pass/login', NULL, 0, 0, '2021-02-04 11:27:13', '2021-02-04 11:27:13'); +INSERT INTO `eb_category` VALUES (548, 505, '/0/51/505/', '一号通注销', 5, 'api/admin/pass/logout', NULL, 0, 0, '2021-02-04 11:28:06', '2021-02-04 11:28:06'); +INSERT INTO `eb_category` VALUES (549, 505, '/0/51/505/', '一号通修改密码', 5, 'api/admin/pass/update/password', NULL, 0, 0, '2021-02-04 11:28:33', '2021-02-04 11:28:33'); +INSERT INTO `eb_category` VALUES (550, 505, '/0/51/505/', '一号通修改手机号码', 5, 'api/admin/pass/update/phone', NULL, 0, 0, '2021-02-04 11:29:02', '2021-02-04 11:29:02'); +INSERT INTO `eb_category` VALUES (551, 505, '/0/51/505/', '一号通获取验证码', 5, 'api/admin/pass/sendUserCode', NULL, 0, 0, '2021-02-04 11:30:38', '2021-02-04 11:30:38'); +INSERT INTO `eb_category` VALUES (552, 80, '/0/51/80/', '系统设置保存', 5, 'api/admin/system/config/save/form', NULL, 0, 0, '2021-02-04 11:37:51', '2021-02-04 11:37:51'); +INSERT INTO `eb_category` VALUES (553, 505, '/0/51/505/', '修改短信签名', 5, 'api/admin/sms/modify/sign', NULL, 0, 0, '2021-02-04 11:43:36', '2021-02-04 11:43:36'); +INSERT INTO `eb_category` VALUES (554, 505, '/0/51/505/', '短信模板', 5, 'api/admin/sms/temps', NULL, 0, 0, '2021-02-04 11:47:24', '2021-02-04 11:47:24'); +INSERT INTO `eb_category` VALUES (555, 505, '/0/51/505/', '申请短信模板', 5, 'api/admin/sms/temp/apply', NULL, 0, 0, '2021-02-04 11:47:52', '2021-02-04 11:47:52'); +INSERT INTO `eb_category` VALUES (556, 505, '/0/51/505/', '模板申请记录', 5, 'api/admin/sms/applys', NULL, 0, 0, '2021-02-04 11:48:41', '2021-02-04 11:48:41'); +INSERT INTO `eb_category` VALUES (559, 49, '/0/47/49/', '用户标签删除', 5, 'api/admin/user/tag/delete', NULL, 0, 0, '2021-02-04 15:37:48', '2021-02-04 15:37:48'); +INSERT INTO `eb_category` VALUES (561, 164, '/0/47/164/', '用户分组新增', 5, 'api/admin/user/group/save', NULL, 0, 0, '2021-02-04 16:16:35', '2021-02-04 16:16:35'); +INSERT INTO `eb_category` VALUES (562, 57, '/0/56/57/', '文章列表', 5, 'api/admin/article/list', NULL, 0, 0, '2021-02-04 16:27:49', '2021-02-04 16:27:49'); +INSERT INTO `eb_category` VALUES (563, 468, '/0/464/467/468/', '充值记录列表', 5, 'api/admin/user/topUpLog/list', NULL, 0, 0, '2021-02-04 17:02:14', '2021-02-04 17:02:14'); +INSERT INTO `eb_category` VALUES (564, 468, '/0/464/467/468/', '充值记录删除', 5, 'api/admin/user/topUpLog/delete', NULL, 0, 0, '2021-02-04 17:03:39', '2021-02-04 17:03:39'); +INSERT INTO `eb_category` VALUES (581, 528, '/0/66/528/', '删除素材', 5, 'api/admin/system/attachment/delete', NULL, 0, 0, '2021-02-04 17:34:29', '2021-02-04 17:35:23'); +INSERT INTO `eb_category` VALUES (582, 66, '/0/66/', '申请授权', 5, '/maintain/authCRMEB', NULL, 1, 0, '2021-02-25 19:04:23', '2021-02-25 19:11:20'); +INSERT INTO `eb_category` VALUES (583, 139, '/0/113/139/', '小程序订阅消息', 5, '/appSetting/publicRoutine/template/0', NULL, 1, 0, '2021-03-05 16:12:51', '2021-03-05 16:18:08'); +INSERT INTO `eb_category` VALUES (598, 118, '/0/118/', '视频号管理', 5, '/marketing/videoChannel', NULL, 1, 0, '2021-05-20 09:27:26', '2021-05-20 09:27:26'); +INSERT INTO `eb_category` VALUES (599, 598, '/0/118/598/', '商品列表', 5, '/marketing/videoChannel/list', NULL, 1, 0, '2021-05-20 09:43:23', '2021-05-21 14:53:08'); +INSERT INTO `eb_category` VALUES (600, 598, '/0/118/598/', '草稿列表', 5, '/marketing/videoChannel/draftList', NULL, 1, 0, '2021-05-21 14:54:28', '2021-05-21 14:54:28'); +INSERT INTO `eb_category` VALUES (601, 0, '/0/', '随笔...', 3, '', 'crmebimage/public/store/2021/12/25/489bd8c24e904f6d93a827ee0d051a52m796u5yxlu.jpeg', 1, 1, '2021-06-09 12:31:34', '2021-12-30 17:34:17'); +INSERT INTO `eb_category` VALUES (603, 51, '/0/51/', '页面管理', 5, '/operation/design', NULL, 1, 0, '2021-06-15 11:01:23', '2021-07-15 13:20:41'); +INSERT INTO `eb_category` VALUES (604, 603, '/0/51/603/', '页面设计', 5, '/operation/design/viewDesign', NULL, 1, 1, '2021-06-15 11:03:29', '2021-07-15 13:21:43'); +INSERT INTO `eb_category` VALUES (621, 603, '/0/51/603/', '一键换色', 5, '/operation/design/theme', '', 1, 2, '2021-07-15 12:00:07', '2021-07-20 11:24:25'); +INSERT INTO `eb_category` VALUES (624, 81, '/0/81/', '物流配置', 6, 'Logistics configuration', '74', 1, 1, '2021-08-13 18:37:38', '2021-08-14 10:09:03'); +INSERT INTO `eb_category` VALUES (625, 51, '/0/51/', '发货设置', 5, '/operation/deliverGoods', NULL, 1, 1, '2021-08-14 09:51:22', '2021-08-14 09:51:22'); +INSERT INTO `eb_category` VALUES (626, 625, '/0/51/625/', '提货设置', 5, '/operation/deliverGoods/takeGoods', NULL, 1, 0, '2021-08-14 09:56:59', '2021-08-14 09:56:59'); +INSERT INTO `eb_category` VALUES (627, 625, '/0/51/625/', '运费模板', 5, '/operation/deliverGoods/freightSet', NULL, 1, 0, '2021-08-14 10:01:23', '2021-08-14 10:59:21'); +INSERT INTO `eb_category` VALUES (628, 626, '/0/51/625/626/', '提货点', 5, '/operation/deliverGoods/takeGoods/deliveryAddress', NULL, 1, 0, '2021-08-14 10:42:16', '2021-08-14 10:57:45'); +INSERT INTO `eb_category` VALUES (629, 626, '/0/51/625/626/', '核销订单', 5, '/operation/deliverGoods/takeGoods/collateOrder', NULL, 1, 0, '2021-08-14 10:43:17', '2021-08-14 10:57:51'); +INSERT INTO `eb_category` VALUES (630, 626, '/0/51/625/626/', '核销员', 5, '/operation/deliverGoods/takeGoods/collateUser', NULL, 1, 0, '2021-08-14 10:43:48', '2021-08-14 10:57:59'); +INSERT INTO `eb_category` VALUES (631, 66, '/0/66/', '物流设置', 5, '/maintain/logistics', NULL, 1, 0, '2021-08-14 11:26:25', '2021-08-14 11:26:25'); +INSERT INTO `eb_category` VALUES (632, 631, '/0/66/631/', '城市数据', 5, '/maintain/logistics/cityList', NULL, 1, 0, '2021-08-14 11:27:10', '2021-08-14 11:30:48'); +INSERT INTO `eb_category` VALUES (633, 631, '/0/66/631/', '物流公司', 5, '/maintain/logistics/companyList', NULL, 1, 0, '2021-08-14 11:27:46', '2021-08-14 11:30:52'); +INSERT INTO `eb_category` VALUES (637, 0, '/0/', '统计管理', 5, '/statistic', 's-data', 1, 0, '2021-08-27 14:43:10', '2021-08-27 14:43:57'); +INSERT INTO `eb_category` VALUES (638, 637, '/0/637/', '商品统计', 5, '/statistic/product', NULL, 1, 0, '2021-08-27 14:44:27', '2021-08-27 14:44:27'); +INSERT INTO `eb_category` VALUES (639, 637, '/0/637/', '用户统计', 5, '/statistic/statuser', NULL, 1, 0, '2021-08-27 14:45:10', '2021-09-15 12:26:41'); +INSERT INTO `eb_category` VALUES (640, 637, '/0/637/', '交易统计', 5, '/statistic/transaction', NULL, 1, 0, '2021-08-27 14:45:45', '2021-08-27 14:45:45'); +INSERT INTO `eb_category` VALUES (641, 638, '/0/637/638/', '统计', 5, '/statistic/product/visualization', NULL, 1, 0, '2021-08-28 10:21:46', '2021-08-28 11:39:49'); +INSERT INTO `eb_category` VALUES (642, 638, '/0/637/638/', '商品排行', 5, '/statistic/product/tableData', NULL, 1, 0, '2021-08-28 10:22:40', '2021-08-28 11:40:00'); +INSERT INTO `eb_category` VALUES (664, 500, '/0/500/', '统计', 6, 'crmeb_tongji', '141', 1, 1, '2021-09-15 15:10:02', '2021-09-15 15:10:15'); +INSERT INTO `eb_category` VALUES (692, 0, '/0/', '散文', 3, '', 'crmebimage/public/store/2021/12/25/ee26a9207f404a47851538c7dfd777a7ltlxg7tkrm.jpeg', 1, 0, '2021-11-25 14:50:08', '2021-12-25 13:11:57'); +INSERT INTO `eb_category` VALUES (693, 500, '/0/500/', '小票打印(易联云)', 6, 'yilianyun', '143', 1, 1, '2021-11-27 16:10:47', '2021-11-27 16:11:09'); +INSERT INTO `eb_category` VALUES (694, 0, '/0/', '站点', 5, '/sites', NULL, 1, 0, '2021-11-29 16:01:24', '2021-11-29 16:01:24'); +INSERT INTO `eb_category` VALUES (695, 694, '/0/694/', '站点列表', 5, '/sites/index', NULL, 1, 0, '2021-11-29 16:01:47', '2021-11-29 16:01:47'); +INSERT INTO `eb_category` VALUES (696, 0, '/0/', ' 推广', 5, '/promotion', NULL, 1, 0, '2021-11-29 16:02:27', '2021-11-29 16:02:27'); +INSERT INTO `eb_category` VALUES (697, 696, '/0/696/', '推广管理', 5, '/promotion/manager', NULL, 1, 0, '2021-11-29 16:03:09', '2021-11-29 16:03:09'); +INSERT INTO `eb_category` VALUES (698, 696, '/0/696/', '推广记录', 5, '/promotion/record', NULL, 1, 0, '2021-11-29 16:03:24', '2021-11-29 16:03:24'); +INSERT INTO `eb_category` VALUES (718, 0, '/0/', '个人中心导航素材', 2, 'url', NULL, 0, 1, '2021-12-25 10:14:18', '2021-12-25 10:14:18'); +INSERT INTO `eb_category` VALUES (719, 0, '/0/', 'LOGO', 2, 'url', NULL, 0, 2, '2021-12-25 10:32:28', '2021-12-25 10:32:28'); +INSERT INTO `eb_category` VALUES (720, 0, '/0/', '金刚区', 2, 'url', NULL, 0, 3, '2021-12-25 10:33:41', '2021-12-25 10:33:47'); +INSERT INTO `eb_category` VALUES (721, 0, '/0/', '分类素材', 2, 'url', NULL, 0, 4, '2021-12-25 10:39:24', '2021-12-25 10:39:24'); +INSERT INTO `eb_category` VALUES (722, 0, '/0/', '五一素材', 2, 'url', NULL, 0, 1, '2021-12-25 10:44:48', '2021-12-25 10:44:48'); +INSERT INTO `eb_category` VALUES (723, 0, '/0/', '等级图标', 2, 'url', NULL, 0, 2, '2021-12-25 10:45:56', '2021-12-25 11:28:41'); +INSERT INTO `eb_category` VALUES (724, 0, '/0/', '国庆', 2, 'url', NULL, 0, 1, '2021-12-25 10:47:15', '2021-12-25 10:47:15'); +INSERT INTO `eb_category` VALUES (725, 724, '/0/724/', '国庆banner', 2, 'url', NULL, 0, 1, '2021-12-25 10:47:29', '2021-12-25 10:47:29'); +INSERT INTO `eb_category` VALUES (726, 724, '/0/724/', '国庆-tabber', 2, 'url', NULL, 0, 1, '2021-12-25 10:47:45', '2021-12-25 10:47:45'); +INSERT INTO `eb_category` VALUES (727, 724, '/0/724/', '国庆-nav', 2, 'url', NULL, 0, 1, '2021-12-25 10:48:02', '2021-12-25 10:48:02'); +INSERT INTO `eb_category` VALUES (728, 727, '/0/724/727/', '国庆-nav1', 2, 'url', NULL, 0, 1, '2021-12-25 10:48:26', '2021-12-25 10:48:26'); +INSERT INTO `eb_category` VALUES (729, 727, '/0/724/727/', '国庆nav2', 2, 'url', NULL, 0, 1, '2021-12-25 10:48:47', '2021-12-25 10:48:47'); +INSERT INTO `eb_category` VALUES (730, 0, '/0/', '双十一素材', 2, 'url', NULL, 0, 1, '2021-12-25 11:12:45', '2021-12-25 11:12:53'); +INSERT INTO `eb_category` VALUES (731, 0, '/0/', '设置素材', 2, 'url', NULL, 0, 2, '2021-12-25 11:28:24', '2021-12-25 11:28:34'); +INSERT INTO `eb_category` VALUES (732, 0, '/0/', 'Banner素材', 2, 'url', NULL, 0, 2, '2021-12-25 11:32:08', '2021-12-25 11:32:14'); +INSERT INTO `eb_category` VALUES (733, 0, '/0/', '教师节素材', 2, 'url', NULL, 0, 1, '2021-12-25 11:52:36', '2021-12-25 11:52:36'); +INSERT INTO `eb_category` VALUES (734, 0, '/0/', '中秋素材', 2, 'url', NULL, 0, 1, '2021-12-25 11:53:41', '2021-12-25 11:53:41'); +INSERT INTO `eb_category` VALUES (735, 0, '/0/', '儿童节素材', 2, 'url', NULL, 0, 1, '2021-12-25 12:00:56', '2021-12-25 12:00:56'); +INSERT INTO `eb_category` VALUES (736, 0, '/0/', '新年图标素材', 2, 'url', NULL, 0, 1, '2021-12-25 12:04:09', '2021-12-25 12:04:09'); +INSERT INTO `eb_category` VALUES (737, 0, '/0/', '商品主图', 2, 'url', NULL, 0, 1, '2021-12-25 12:48:03', '2021-12-25 12:48:03'); +INSERT INTO `eb_category` VALUES (738, 0, '/0/', '文章素材', 2, 'url', NULL, 0, 2, '2021-12-25 13:09:33', '2021-12-25 13:09:33'); +INSERT INTO `eb_category` VALUES (739, 0, '/0/', '推广海报', 2, 'url', NULL, 0, 1, '2021-12-25 13:18:13', '2021-12-25 13:18:13'); +INSERT INTO `eb_category` VALUES (740, 0, '/0/', '订单详情动图', 2, 'url', NULL, 0, 1, '2021-12-25 14:17:46', '2021-12-25 14:17:46'); + +-- ---------------------------- +-- Table structure for eb_express +-- ---------------------------- +DROP TABLE IF EXISTS `eb_express`; +CREATE TABLE `eb_express` ( + `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '快递公司id', + `code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '快递公司简称', + `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '快递公司全称', + `partner_id` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否需要月结账号', + `partner_key` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否需要月结密码', + `net` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否需要取件网店', + `account` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '账号', + `password` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '密码', + `net_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '网点名称', + `sort` int(11) NOT NULL DEFAULT 0 COMMENT '排序', + `is_show` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否显示', + `status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否可用', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `code`(`code`) USING BTREE, + INDEX `is_show`(`is_show`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1639 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '快递公司表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of eb_express +-- ---------------------------- +INSERT INTO `eb_express` VALUES (572, 'yunda', '韵达快递', 1, 1, 0, '1', '1', '', 0, 1, 0); +INSERT INTO `eb_express` VALUES (573, 'yuantong', '圆通速递', 1, 1, 0, '', '', '', 0, 1, 0); +INSERT INTO `eb_express` VALUES (574, 'zhongtong', '中通快递', 1, 1, 0, '', '', '', 0, 1, 0); +INSERT INTO `eb_express` VALUES (575, 'shentong', '申通快递', 1, 1, 1, '', '', '', 0, 1, 0); +INSERT INTO `eb_express` VALUES (576, 'huitongkuaidi', '百世快递', 1, 1, 0, '', '', '', 0, 1, 0); +INSERT INTO `eb_express` VALUES (577, 'jd', '京东物流', 1, 0, 0, '', '', '', 0, 1, 0); +INSERT INTO `eb_express` VALUES (578, 'jtexpress', '极兔速递', 1, 1, 0, '', '', '', 0, 1, 0); +INSERT INTO `eb_express` VALUES (579, 'tiantian', '天天快递', 1, 1, 1, '', '', '', 0, 1, 0); +INSERT INTO `eb_express` VALUES (580, 'debangwuliu', '德邦', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (581, 'debangkuaidi', '德邦快递', 1, 0, 0, '', '', '', 0, 1, 0); +INSERT INTO `eb_express` VALUES (582, 'zhongyouex', '众邮快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (583, 'youshuwuliu', '优速快递', 1, 1, 0, '', '', '', 0, 1, 0); +INSERT INTO `eb_express` VALUES (584, 'zhongtongkuaiyun', '中通快运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (585, 'zhaijisong', '宅急送', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (586, 'suning', '苏宁物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (587, 'baishiwuliu', '百世快运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (588, 'zhimakaimen', '芝麻开门', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (589, 'yundakuaiyun', '韵达快运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (590, 'annengwuliu', '安能快运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (591, 'lianhaowuliu', '联昊通', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (592, 'ubonex', '优邦速运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (593, 'kuayue', '跨越速运', 1, 1, 0, '', '', '', 0, 1, 0); +INSERT INTO `eb_express` VALUES (594, 'yuantongkuaiyun', '圆通快运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (595, 'zhongyouwuliu', '中邮物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (596, 'annto', '安得物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (597, 'danniao', '丹鸟', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (598, 'suer', '速尔快递', 1, 0, 1, '', '', '', 0, 1, 0); +INSERT INTO `eb_express` VALUES (599, 'chinaicip', '卓志速运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (600, 'zhonghuan', '中环快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (601, 'yimidida', '壹米滴答', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (602, 'shpost', '同城快寄', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (603, 'kuaijiesudi', '快捷速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (604, 'disifang', '递四方', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (605, 'lntjs', '特急送', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (606, 'rrs', '日日顺物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (607, 'sxjdfreight', '顺心捷达', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (608, 'idamalu', '大马鹿', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (609, 'xinfengwuliu', '信丰物流', 1, 1, 0, '', '', '', 0, 1, 0); +INSERT INTO `eb_express` VALUES (610, 'ztky', '中铁快运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (611, 'btexpress', '邦泰快运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (612, 'tiandihuayu', '天地华宇', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (613, 'lianbangkuaidi', '联邦快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (614, 'banma', '斑马物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (615, 'longbanwuliu', '龙邦速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (616, 'flyway', '程光快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (617, 'subida', '速必达', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (618, 'jinguangsudikuaijian', '京广速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (619, 'weitepai', '微特派', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (620, 'yuxinwuliu', '宇鑫物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (621, 'sdto', '速达通', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (622, 'huisenky', '汇森速运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (623, 'guotongkuaidi', '国通快递', 1, 1, 1, '', '', '', 0, 1, 0); +INSERT INTO `eb_express` VALUES (624, 'bsht', '百事亨通', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (625, 'jiuyescm', '九曳供应链', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (626, 'sunjex', '新杰物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (627, 'zhongtiewuliu', '中铁物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (628, 'adapost', '安达速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (629, 'wanjiawuliu', '万家物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (630, 'shenghuiwuliu', '盛辉物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (631, 'zhengyikuaidi', '鑫正一快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (632, 'savor', '海信物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (633, 'qexpress', '易达通快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (634, 'sanhuwuliu', '叁虎物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (635, 'polarexpress', '极地快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (636, 'rufengda', '如风达', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (637, 'wanxiangwuliu', '万象物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (638, 'zhongtongphone', '中通(带电话)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (639, 'lbex', '龙邦物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (640, 'jinan', '金岸物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (641, 'sxexpress', '三象速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (642, 'jiayunmeiwuliu', '加运美', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (643, 'hac56', '瀚朝物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (644, 'la911', '鼎润物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (645, 'mosuda', '魔速达', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (646, 'suteng', '广东速腾物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (647, 'feiyuanvipshop', '飞远配送', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (648, 'pingandatengfei', '平安达腾飞', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (649, 'guexp', '全联速运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (650, 'hengluwuliu', '恒路物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (651, 'wjkwl', '万家康物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (652, 'xdexpress', '迅达速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (653, 'yw56', '燕文物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (654, 'bflg', '上海缤纷物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (655, 'nebuex', '星云速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (656, 'unitedex', '联合速运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (657, 'jiajiwuliu', '佳吉快运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (658, 'beebird', '锋鸟物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (659, 'tzky', '铁中快运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (660, 'httx56', '汇通天下物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (661, 'jumstc', '聚盟共建', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (662, 'crazyexpress', '疯狂快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (663, 'sut56', '速通物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (664, 'zengyisudi', '增益速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (665, 'valueway', '美通', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (666, 'jssdt56', '时达通', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (667, 'yuanfeihangwuliu', '原飞航', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (668, 'zhongsukuaidi', '中速快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (669, 'ane66', '安能快递', 1, 0, 0, '', '', '', 0, 1, 0); +INSERT INTO `eb_express` VALUES (670, 'anxl', '安迅物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (671, 'fujisuyun', '富吉速运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (672, 'jiajikuaidi', '佳吉快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (673, 'ndwl', '南方传媒物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (674, 'huangmajia', '黄马甲', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (675, 'hnht56', '鸿泰物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (676, 'shangda', '上大物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (677, 'ytkd', '运通中港快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (678, 'dekuncn', '德坤物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (679, 'quansutong', '全速通', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (680, 'cccc58', '中集冷云', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (681, 'dfwl', '达发物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (682, 'quanfengkuaidi', '全峰快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (683, 'fastgoexpress', '速派快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (684, 'yujtong', '宇捷通', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (685, 'chuangyi', '创一快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (686, 'ganzhongnengda', '能达速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (687, 'yidatong', '易达通', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (688, 'oneexpress', '一速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (689, 'datianwuliu', '大田物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (690, 'quanyikuaidi', '全一快递', 1, 0, 0, '', '', '', 0, 1, 0); +INSERT INTO `eb_express` VALUES (691, 'pjbest', '品骏快递', 1, 1, 0, '', '', '', 0, 1, 0); +INSERT INTO `eb_express` VALUES (692, 'shangqiao56', '商桥物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (693, 'tianma', '天马迅达', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (694, 'yousutongda', '优速通达', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (695, 'yuananda', '源安达', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (696, 'astexpress', '安世通快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (697, 'exfresh', '安鲜达', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (698, 'jialidatong', '嘉里大通', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (699, 'nanjingshengbang', '晟邦物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (700, 'pfcexpress', '皇家物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (701, 'qinyuan', '秦远物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (702, 'runhengfeng', '全时速运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (703, 'dayangwuliu', '大洋物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (704, 'heimao56', '黑猫速运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (705, 'huaxiahuoyun', '华夏货运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (706, 'longfx', 'LUCFLOW EXPRESS', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (707, 'zjstky', '苏通快运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (708, 'zlink', '三真驿道', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (709, 'hd', '宏递快运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (710, 'hrex', '锦程快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (711, 'sfwl', '盛丰物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (712, 'yuanchengwuliu', '远成物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (713, 'eshunda', '俄顺达', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (714, 'est365', '东方汇', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (715, 'lijisong', '成都立即送', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (716, 'morelink56', 'MoreLink', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (717, 'topspeedex', '中运全速', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (718, 'yunfeng56', '韵丰物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (719, 'express7th', '7号速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (720, 'wherexpess', '威盛快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (721, 'yizhengdasuyun', '一正达速运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (722, 'youyou', '优优速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (723, 'ztong', '智通物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (724, 'chinapostcb', '中邮电商', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (725, 'hlyex', '好来运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (726, 'jgwl', '景光物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (727, 'jiujiuwl', '久久物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (728, 'minghangkuaidi', '民航快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (729, 'quansu', '全速物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (730, 'tywl99', '天翼物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (731, 'wondersyd', '中邮速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (732, 'yafengsudi', '亚风速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (733, 'ytchengnuoda', '承诺达', 1, 1, 0, '', '', '', 0, 1, 0); +INSERT INTO `eb_express` VALUES (734, 'anxindakuaixi', '安信达', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (735, 'chengtong', '城通物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (736, 'eupackage', '易优包裹', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (737, 'ftky365', '丰通快运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (738, 'gslhkd', '联合快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (739, 'jiayiwuliu', '佳怡物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (740, 'jieborne', '捷邦物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (741, 'jxfex', '集先锋快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (742, 'luben', '陆本速递 LUBEN EXPRESS', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (743, 'tykd', '天翼快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (744, 'baitengwuliu', '百腾物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (745, 'biaojikuaidi', '彪记快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (746, 'boyol', '贝业物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (747, 'exsuda', 'E速达', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (748, 'feikangda', '飞康达', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (749, 'jiacheng', '佳成快递 ', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (750, 'jingshun', '景顺物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (751, 'mingliangwuliu', '明亮物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (752, 'shunjiefengda', '顺捷丰达', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (753, 'sundarexpress', '顺达快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (754, 'yaofeikuaidi', '耀飞同城快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (755, '1ziton', '一智通', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (756, 'alog', '心怡物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (757, 'bdatong', '八达通', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (758, 'bosind', '堡昕德速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (759, 'buytong', '百通物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (760, 'changyuwuliu', '长宇物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (761, 'chuanxiwuliu', '传喜物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (762, 'chunghwa56', '中骅物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (763, 'cnspeedster', '速舟物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (764, 'didasuyun', '递达速运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (765, 'emswuliu', 'EMS物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (766, 'feibaokuaidi', '飞豹快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (767, 'gda', '安的快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (768, 'gdkjk56', '快捷快物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (769, 'guoeryue', '天天快物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (770, 'hotwms', '皇家云仓', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (771, 'ht22', '海淘物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (772, 'huaqikuaiyun', '华企快运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (773, 'jcsuda', '嘉诚速达', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (774, 'longcps', '加拿大龙行速运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (775, 'newsway', '家家通快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (776, 'qbexpress', '秦邦快运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (777, 'quanritongkuaidi', '全日通', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (778, 'sanshengco', '三盛快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (779, 'shangcheng', '尚橙物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (780, 'shunfenghk', '顺丰-繁体', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (781, 'spring56', '春风物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (782, 'sxhongmajia', '红马甲物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (783, 'szshihuatong56', '世华通物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (784, 'wto56kj', '臣邦同城', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (785, 'xiangteng', '翔腾物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (786, 'xunsuexpress', '迅速快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (787, 'yongchangwuliu', '永昌物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (788, 'yuanzhijiecheng', '元智捷诚', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (789, 'yuefengwuliu', '越丰物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (790, 'zhongjiwuliu', '中技物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (791, 'zlxdjwl', '中粮鲜到家物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (792, 'adaexpress', '明大快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (793, 'advancing', '安达信', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (794, 'agopost', '全程快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (795, 'ahdf', '德方物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (796, 'ahkbps', '卡邦配送', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (797, 'aliexpress', '无忧物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (798, 'anjiatongcheng', '安家同城快运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (799, 'anjie88', '安捷物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (800, 'anjiekuaidi', '青岛安捷快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (801, 'anlexpress', '新干线快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (802, 'apgecommerce', 'apgecommerce', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (803, 'ariesfar', '艾瑞斯远', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (804, 'ausbondexpress', '澳邦国际物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (805, 'auvanda', '中联速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (806, 'baishiyp', '百世云配', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (807, 'bangsongwuliu', '邦送物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (808, 'baotongkd', '宝通快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (809, 'baoxianda', '报通快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (810, 'bazirim', '皮牙子快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (811, 'beckygo', '佰麒快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (812, 'bee001', '蜜蜂速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (813, 'benteng', '奔腾物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (814, 'bjqywl', '青云物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (815, 'bjxsrd', '鑫锐达', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (816, 'bljt56', '佰乐捷通', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (817, 'bmlchina', '标杆物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (818, 'bqcwl', '百千诚物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (819, 'byht', '展勤快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (820, 'canhold', '能装能送', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (821, 'cbo56', '钏博物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (822, 'ccd', '河南次晨达', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (823, 'cdjx56', '捷祥物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (824, 'cdxinchen56', '鑫宸物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (825, 'cex', '城铁速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (826, 'cfss', '银雁专送', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (827, 'chengji', '城际快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (828, 'chengpei', '河北橙配', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (829, 'chinastarlogistics', '华欣物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (830, 'chinatzx', '同舟行物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (831, 'chllog', '嘉荣物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (832, 'cht361', '诚和通', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (833, 'city56', '城市映急', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (834, 'cjkoreaexpress', '大韩通运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (835, 'cneulogistics', '中欧物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (836, 'cpsair', '华中快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (837, 'cqxingcheng', '重庆星程快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (838, 'crossbox', '环旅快运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (839, 'csxss', '新时速物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (840, 'czwlyn', '云南诚中物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (841, 'dadaoex', '大道物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (842, 'dande56', '丹递56', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (843, 'dasu', '达速物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (844, 'dechuangwuliu', '深圳德创物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (845, 'decnlh', '德中快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (846, 'dfkuaidi', '东风快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (847, 'dfpost', '达方物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (848, 'di5pll', '递五方云仓', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (849, 'diantongkuaidi', '店通快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (850, 'dianyi', '云南滇驿物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (851, 'dingdong', '叮咚快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (852, 'djy56', '天翔东捷运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (853, 'donghanwl', '东瀚物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (854, 'donghong', '东红物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (855, 'dongjun', '成都东骏物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (856, 'duodao56', 'duodao56', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (857, 'edaeuexpress', '易达快运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (858, 'efspost', 'EFSPOST', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (859, 'el56', '易联通达', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (860, 'eusacn', '优莎速运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (861, 'excocotree', '可可树美中速运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (862, 'fanyukuaidi', '凡宇快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (863, 'fastzt', '正途供应链', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (864, 'fbkd', '飞邦快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (865, 'feihukuaidi', '飞狐快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (866, 'feikuaida', '飞快达', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (867, 'fenghuangkuaidi', '凤凰快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (868, 'fengyee', '丰羿', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (869, 'flysman', '飞力士物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (870, 'fsexp', '全速快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (871, 'ftlexpress', '法翔速运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (872, 'fyex', '飞云快递系统', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (873, 'gaotieex', '高铁快运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (874, 'gdct56', '广东诚通物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (875, 'gdqwwl', '全网物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (876, 'gdrz58', '容智快运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (877, 'gdxp', '新鹏快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (878, 'ghl', '环创物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (879, 'gjwl', '冠捷物流 ', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (880, 'gml', '英脉物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (881, 'goldjet', '高捷快运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (882, 'gongsuda', '共速达', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (883, 'gooday365', '日日顺智慧物联', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (884, 'gscq365', '哥士传奇速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (885, 'gswtkd', '万通快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (886, 'gtongsudi', '广通速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (887, 'gttexpress', 'GTT EXPRESS快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (888, 'guangdongtonglu', '广东通路', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (889, 'guosong', '国送快运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (890, 'gxwl', '光线速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (891, 'gzxingcheng', '贵州星程快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (892, 'haihongwangsong', '海红网送', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (893, 'haimengsudi', '海盟速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (894, 'haixingqiao', '海星桥快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (895, 'haizhongzhuanyun', '海中转运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (896, 'hanfengjl', '翰丰快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (897, 'hangrui', '上海航瑞货运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (898, 'hangyu', '航宇快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (899, 'haoyoukuai', '好又快物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (900, 'happylink', '开心快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (901, 'hdcexpress', '汇达物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (902, 'hengrui56', '恒瑞物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (903, 'hexinexpress', '合心速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (904, 'hgy56', '环国运物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (905, 'hhair56', '华瀚快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (906, 'hjs', '猴急送', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (907, 'hlkytj', '互联快运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (908, 'hlpgyl', '共联配', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (909, 'hltop', '海联快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (910, 'hmus', '华美快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (911, 'hnfy', '飞鹰物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (912, 'hnqst', '河南全速通', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (913, 'hnssd56', '顺时达物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (914, 'hnzqwl', '中强物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (915, 'homexpress', '居家通', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (916, 'hongbeixin', '红背心', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (917, 'hongpinwuliu', '宏品物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (918, 'hongywl', '红远物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (919, 'hrbzykd', '卓烨快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (920, 'hre', '高铁速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (921, 'hsgtsd', '海硕高铁速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (922, 'htongexpress', '华通快运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (923, 'htwd', '华通务达物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (924, 'huada', '华达快运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (925, 'huandonglg', '环东物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (926, 'huiqiangkuaidi', '汇强快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (927, 'huoban', '兰州伙伴物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (928, 'hutongwuliu', '户通物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (929, 'hyeship', '鸿远物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (930, 'hyytes', '恒宇运通', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (931, 'hzpl', '华航快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (932, 'idada', '大达物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (933, 'jdexpressusa', '骏达快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (934, 'jdpplus', '急递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (935, 'jiajiatong56', '佳家通货运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (936, 'jiajiawl', '加佳物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (937, 'jiazhoumao', '加州猫速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (938, 'jieanda', '捷安达', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (939, 'jinchengwuliu', '锦程物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (940, 'jindawuliu', '金大物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (941, 'jintongkd', '劲通快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (942, 'jinyuekuaidi', '晋越快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (943, 'jisu', '冀速物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (944, 'jiugong', '九宫物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (945, 'jiuyicn', '久易快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (946, 'jixianda', '急先达', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (947, 'jjx888', '佳捷翔物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (948, 'jsexpress', '骏绅物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (949, 'juding', '聚鼎物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (950, 'juwu', '聚物物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (951, 'juzhongda', '聚中大', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (952, 'kejie', '科捷物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (953, 'kerrytj', '嘉里大荣物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (954, 'kfwnet', '快服务', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (955, 'khzto', '柬埔寨中通', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (956, 'koalaexp', '考拉速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (957, 'ksudi', '快速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (958, 'kuai8', '快8速运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (959, 'kuaidawuliu', '快达物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (960, 'kuaitao', '快淘快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (961, 'kuaiyouda', '四川快优达速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (962, 'kxda', '凯信达', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (963, 'lanbiaokuaidi', '蓝镖快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (964, 'lanhukuaidi', '蓝弧快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (965, 'lasy56', '林安物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (966, 'lbbk', '立白宝凯物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (967, 'ledaowuliu', '楽道物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (968, 'ledii', '乐递供应链', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (969, 'letseml', '美联快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (970, 'lianbangkuaidien', '联邦快递-英文', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (971, 'lianyun', '联运快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (972, 'lishi', '丽狮物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (973, 'littlebearbear', '小熊物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (974, 'longlangkuaidi', '隆浪快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (975, 'longvast', '长风物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (976, 'lqht', '恒通快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (977, 'ltexp', '乐天速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (978, 'lutong', '鲁通快运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (979, 'mailikuaidi', '麦力快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (980, 'mailongdy', '迈隆递运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (981, 'mangguo', '芒果速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (982, 'mchy', '木春货运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (983, 'meidaexpress', '美达快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (984, 'meitai', '美泰物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (985, 'milkyway', '银河物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (986, 'minbangsudi', '民邦速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (987, 'mjexp', '美龙快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (988, 'mxe56', '中俄速通(淼信)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (989, 'nalexpress', '新亚物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (990, 'nedahm', '红马速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (991, 'nell', '尼尔快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (992, 'niuzaiexpress', '牛仔速运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (993, 'njhaobo', '浩博物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (994, 'nmhuahe', '华赫物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (995, 'nntengda', '腾达速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (996, 'onway', '昂威物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (997, 'overseaex', '波音速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (998, 'peex', '派尔快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (999, 'peisihuoyunkuaidi', '配思货运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1000, 'peixingwuliu', '陪行物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1001, 'pengcheng', '鹏程快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1002, 'pinsuxinda', '品速心达快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1003, 'pinxinkuaidi', '品信快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1004, 'pmt0704be', '龙行天下', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1005, 'polarisexpress', '北极星快运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1006, 'pzhjst', '急顺通', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1007, 'qhxykd', '雪域快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1008, 'qhxyyg', '雪域易购', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1009, 'qianli', '千里速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1010, 'qskdyxgs', '千顺快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1011, 'quanchuan56', '全川物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1012, 'quanjitong', '全际通', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1013, 'quantwl', '全通快运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1014, 'quanxintong', '全信通快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1015, 'qzx56', '全之鑫物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1016, 'rhtexpress', '睿和泰速运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1017, 'riyuwuliu', '日昱物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1018, 'rokin', '荣庆物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1019, 'rrskx', '日日顺快线', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1020, 'santaisudi', '三态速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1021, 'sccod', '丰程物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1022, 'scsujiada', '速佳达快运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1023, 'scxingcheng', '四川星程快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1024, 'sczpds', '速呈', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1025, 'sdsy888', '首达速运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1026, 'sfift', '十方通物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1027, 'sfjhd', '圣飞捷快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1028, 'shanda56', '衫达快运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1029, 'shanghaikuaitong', '上海快通', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1030, 'shangtuguoji', '尚途国际货运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1031, 'shaoke', '捎客物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1032, 'shd56', '商海德物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1033, 'shenganwuliu', '圣安物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1034, 'shengtongscm', '盛通快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1035, 'shenjun', '神骏物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1036, 'shenma', '神马快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1037, 'shiningexpress', '阳光快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1038, 'shipbyace', '王牌快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1039, 'shipsoho', '苏豪快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1040, 'shiyunkuaidi', '世运快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1041, 'shunfengtongcheng', '顺丰同城', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1042, 'shunjieda', '顺捷达', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1043, 'shunshid', '顺士达速运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1044, 'signedexpress', '签收快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1045, 'sihaiet', '四海快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1046, 'sihiexpress', '四海捷运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1047, 'sixroad', '易普递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1048, 'sofast56', '嗖一下同城快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1049, 'speeda', '行必达', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1050, 'speedoex', '申必达', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1051, 'staky', '首通快运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1052, 'starex', '星速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1053, 'staryvr', '星运快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1054, 'stkd', '顺通快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1055, 'subaoex', '速豹', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1056, 'sucheng', '速呈宅配', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1057, 'sucmj', '特急便物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1058, 'sufengkuaidi', '速风快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1059, 'suijiawuliu', '穗佳物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1060, 'sujievip', '郑州速捷', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1061, 'sunspeedy', '新速航', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1062, 'supinexpress', '速品快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1063, 'szuem', '联运通物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1064, 'taijin', '泰进物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1065, 'taimek', '天美快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1066, 'tianxiang', '天翔快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1067, 'tianzong', '天纵物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1068, 'timedg', '万家通快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1069, 'tlky', '天联快运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1070, 'tmg', '株式会社T.M.G', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1071, 'tongdaxing', '通达兴物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1072, 'tonghetianxia', '通和天下', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1073, 'ugoexpress', '邮鸽速运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1074, 'uluckex', '优联吉运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1075, 'vps', '维普恩物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1076, 'wanboex', '万博快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1077, 'wandougongzhu', '豌豆物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1078, 'wanjiatong', '宁夏万家通', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1079, 'wdm', '万达美', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1080, 'westwing', '西翼物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1081, 'wexpress', '威速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1082, 'winit', '万邑通', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1083, 'wlfast', '凡仕特物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1084, 'wowvip', '沃埃家', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1085, 'wtdchina', '威时沛运货运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1086, 'wuliuky', '五六快运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1087, 'wuyuansudi', '伍圆速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1088, 'xdshipping', '国晶物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1089, 'xflt56', '蓝天物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1090, 'xianchengliansudi', '西安城联速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1091, 'xiangdawuliu', '湘达物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1092, 'xianglongyuntong', '祥龙运通物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1093, 'xilaikd', '西安喜来快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1094, 'xingyuankuaidi', '新元快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1095, 'xinning', '新宁物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1096, 'xsrd', '鑫世锐达', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1097, 'xtb', '鑫通宝物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1098, 'xyd666', '鑫远东速运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1099, 'yatfai', '一辉物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1100, 'ycgky', '远成快运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1101, 'ydglobe', '云达通', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1102, 'ydhex', 'YDH', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1103, 'yhtlogistics', '宇航通物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1104, 'yibangwuliu', '一邦速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1105, 'yidihui', '驿递汇速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1106, 'yiex', '宜送物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1107, 'yifankd', '艺凡快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1108, 'yihangmall', '易航物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1109, 'yilingsuyun', '亿领速运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1110, 'yinjiesudi', '银捷速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1111, 'yiqisong', '一起送', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1112, 'yisong', '宜送', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1113, 'yitongda', '易通达', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1114, 'yiyou', '易邮速运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1115, 'yjhgo', '武汉优进汇', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1116, 'ynztsy', '纵通速运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1117, 'youjia', '友家速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1118, 'youlai', '邮来速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1119, 'ypsd', '壹品速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1120, 'ytky168', '运通快运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1121, 'yuandun', '远盾物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1122, 'yue777', '玥玛速运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1123, 'yufeng', '御风速运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1124, 'yujiawl', '宇佳物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1125, 'yuntong', '运通速运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1126, 'yuntongkuaidi', '运通中港', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1127, 'ywexpress', '远为快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1128, 'yyexp', '西安运逸快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1129, 'yyqc56', '一运全成物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1130, 'zf365', '珠峰速运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1131, 'zhdwl', '众辉达物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1132, 'zhitengwuliu', '志腾物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1133, 'zhongtianwanyun', '中天万运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1134, 'zhongxinda', '忠信达', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1135, 'zhpex', '众派速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1136, 'zhuoshikuaiyun', '卓实快运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1137, 'zjcy56', '创运物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1138, 'zsda56', '转瞬达集运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1139, 'zsky123', '准实快运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1140, 'zsmhwl', '明辉物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1141, 'zy100', '中远快运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1142, 'shunfeng', '顺丰速运', 1, 0, 0, '', '', '', 0, 1, 0); +INSERT INTO `eb_express` VALUES (1143, 'youzhengguonei', '邮政快递包裹', 1, 1, 0, '', '', '', 0, 1, 0); +INSERT INTO `eb_express` VALUES (1144, 'ems', 'EMS', 1, 1, 0, '', '', '', 0, 1, 0); +INSERT INTO `eb_express` VALUES (1145, 'youzhengbk', '邮政标准快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1146, 'youzhengguoji', '国际包裹', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1147, 'ups', 'UPS', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1148, 'dhlen', 'DHL-全球件', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1149, 'fedex', 'FedEx-国际件', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1150, 'ewe', 'EWE全球快递', 1, 1, 0, '', '', '', 0, 1, 0); +INSERT INTO `eb_express` VALUES (1151, 'zhongtongguoji', '中通国际', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1152, 'dhl', 'DHL-中国件', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1153, 'emsguoji', 'EMS-国际件', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1154, 'upsen', 'UPS-全球件', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1155, 'rlgaus', '澳洲飞跃物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1156, 'usps', 'USPS', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1157, 'auspost', '澳大利亚(Australia Post)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1158, 'arkexpress', '方舟速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1159, 'hkems', '云邮跨境快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1160, 'meiquick', '美快国际物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1161, 'auexpress', '澳邮中国快运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1162, 'yuantongguoji', '圆通国际', 1, 1, 0, '', '', '', 0, 1, 0); +INSERT INTO `eb_express` VALUES (1163, 'sendtochina', '速递中国', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1164, 'auod', '澳德物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1165, 'bpost', '比利时(Bpost)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1166, 'japanposten', '日本(Japan Post)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1167, 'dhlde', 'DHL-德国件(DHL Deutschland)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1168, 'guangdongyouzhengwuliu', '广东邮政', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1169, 'yangbaoguo', '洋包裹', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1170, 'superb', 'Superb Grace', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1171, 'aramex', 'Aramex', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1172, 'newzealand', '新西兰(New Zealand Post)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1173, 'zhuanyunsifang', '转运四方', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1174, 'austa', 'Austa国际速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1175, 'dpd', 'DPD', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1176, 'fedexcn', 'Fedex-国际件-中文', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1177, 'xlobo', 'Xlobo贝海国际', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1178, 'tntau', 'TNT Australia', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1179, 'uszcn', '转运中国', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1180, 'tnt', 'TNT', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1181, 'changjiang', '长江国际速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1182, 'dpex', 'DPEX', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1183, 'emsbg', 'EMS包裹', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1184, 'aae', 'AAE-中国件', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1185, 'stosolution', '申通国际', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1186, 'nsf', '新顺丰(NSF)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1187, 'epanex', '泛捷国际速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1188, 'ueq', 'UEQ快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1189, 'wlwex', '星空国际', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1190, 'ftd', '富腾达国际货运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1191, 'emsinten', 'EMS-国际件-英文', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1192, 'yuntrack', 'YUN TRACK', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1193, 'baifudongfang', '百福东方', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1194, 'chszhonghuanguoji', 'CHS中环国际快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1195, 'wotu', '渥途国际速运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1196, 'dsukuaidi', 'D速快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1197, 'aotsd', '澳天速运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1198, 'coe', 'COE', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1199, 'dpexen', 'Toll', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1200, 'ucs', '合众速递(UCS)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1201, 'haidaibao', '海带宝', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1202, 'ubuy', '德国优拜物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1203, 'onehcang', '一号仓', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1204, 'tstexp', 'TST速运通', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1205, 'chukou1', '出口易', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1206, 'chnexp', '中翼国际物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1207, 'hkpost', '中国香港(HongKong Post)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1208, 'canpar', 'Canpar', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1209, 'cnpex', 'CNPEX中邮快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1210, 'euasia', '欧亚专线', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1211, 'sagawa', '佐川急便', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1212, 'doortodoor', 'CJ物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1213, 'fedexus', 'FedEx-美国件', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1214, 'etong', 'E通速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1215, 'ocs', 'OCS', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1216, 'phlpost', '菲律宾(Philippine Postal)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1217, 'shlindao', '林道国际快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1218, 'tnten', 'TNT-全球件', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1219, 'bht', 'BHT', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1220, 'cnausu', '中澳速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1221, 'emsen', 'EMS-英文', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1222, 'deutschepost', '德国(Deutsche Post)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1223, 'huanqiu', '环球速运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1224, 'postnlcn', '荷兰邮政-中文(PostNL international reg', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1225, 'correosdees', '西班牙(Correos de Espa?a)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1226, 'myhermes', 'MyHermes', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1227, 'parcelforce', '英国大包、EMS(Parcel Force)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1228, 'canpost', '加拿大(Canada Post)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1229, 'taoplus', '淘布斯国际物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1230, 'farlogistis', '泛远国际物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1231, 'gsm', 'GSM', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1232, 'italiane', '意大利(Poste Italiane)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1233, 'tnjex', '明通国际快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1234, 'transrush', 'TransRush', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1235, 'zhongchuan', '众川国际', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1236, 'csuivi', '法国(La Poste)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1237, 'efs', 'EFS Post(平安快递)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1238, 'lfexpress', '龙枫国际快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1239, 'ajlogistics', '澳捷物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1240, 'colissimo', '法国小包(colissimo)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1241, 'gslexpress', '德尚国际速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1242, 'lineone', '一号线', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1243, 'postnlchina', '荷兰邮政-中国件', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1244, 'synship', 'SYNSHIP快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1245, 'youban', '邮邦国际', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1246, 'bjemstckj', '北京EMS', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1247, 'com1express', '商壹国际物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1248, 'ecmscn', '易客满', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1249, 'gts', 'GTS快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1250, 'meiguokuaidi', '美国快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1251, 'tcat', '黑猫宅急便', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1252, 'trakpak', 'TRAKPAK', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1253, 'wedepot', 'wedepot物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1254, 'zhaijibian', '宅急便', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1255, 'abf', 'ABF', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1256, 'anposten', '爱尔兰(An Post)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1257, 'bulgarian', '保加利亚(Bulgarian Posts)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1258, 'chronopostport', 'Chronopost Portugal', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1259, 'cnexps', 'CNE', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1260, 'dhlbenelux', 'DHL Benelux', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1261, 'dhlecommerce', 'dhl小包', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1262, 'jiachenexpress', '佳辰国际速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1263, 'lasership', 'LaserShip', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1264, 'skynetmalaysia', 'SkyNet Malaysia', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1265, 'swisspost', '瑞士(Swiss Post)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1266, 'trackparcel', 'track-parcel', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1267, 'uscbexpress', '易境达国际物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1268, 'xynyc', '新元国际', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1269, 'adp', 'ADP国际快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1270, 'asendiausa', 'Asendia USA', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1271, 'ausexpress', '澳世速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1272, 'cllexpress', '澳通华人物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1273, 'comexpress', '邦通国际', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1274, 'cosco', '中远e环球', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1275, 'gotoubi', 'UBI Australia', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1276, 'hermes', 'Hermes', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1277, 'ibuy8', '爱拜物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1278, 'japanpost', '日本郵便', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1279, 'kcs', 'KCS', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1280, 'lsexpress', '6LS EXPRESS', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1281, 'moldova', '摩尔多瓦(Posta Moldovei)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1282, 'pengyuanexpress', '鹏远国际速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1283, 'postdanmarken', '丹麦(Post Denmark)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1284, 'postnl', '荷兰邮政(PostNL international regist', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1285, 'postnlpacle', '荷兰包裹(PostNL International Parcel', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1286, 'postserv', '台湾(中华邮政)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1287, 'purolator', 'Purolator', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1288, 'saiaodi', '赛澳递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1289, 'shipgce', '飞洋快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1290, 'singpost', '新加坡小包(Singapore Post)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1291, 'slovenia', '斯洛文尼亚(Slovenia Post)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1292, 'stoexpress', '美国申通', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1293, 'tollpriority', 'Toll Priority(Toll Online)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1294, 'zhonghuanus', '中环转运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1295, 'a2u', 'A2U速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1296, 'abcglobal', '全球快运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1297, 'adiexpress', '安达易国际速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1298, 'adlerlogi', '德国雄鹰速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1299, 'afghan', '阿富汗(Afghan Post)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1300, 'afl', 'AFL', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1301, 'airgtc', '航空快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1302, 'airpak', 'airpak expresss', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1303, 'ajexpress', '捷记方舟', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1304, 'albania', '阿尔巴尼亚(Posta shqipatre)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1305, 'amazoncnorder', '亚马逊中国订单', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1306, 'amcnorder', 'amazon-国内订单', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1307, 'amusorder', 'amazon-国际订单', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1308, 'aolau', 'AOL澳通速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1309, 'aosu', '澳速物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1310, 'aplus100', '美国汉邦快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1311, 'aplusex', 'Aplus物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1312, 'aruba', '阿鲁巴[荷兰](Post Aruba)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1313, 'auex', '澳货通', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1314, 'austria', '奥地利(Austrian Post)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1315, 'auvexpress', 'AUV国际快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1316, 'axexpress', '澳新物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1317, 'azerbaijan', '阿塞拜疆EMS(EMS AzerExpressPost)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1318, 'bahrain', '巴林(Bahrain Post)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1319, 'bangbangpost', '帮帮发', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1320, 'bangladesh', '孟加拉国(EMS)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1321, 'barbados', '巴巴多斯(Barbados Post)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1322, 'bcwelt', 'BCWELT', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1323, 'belgiumpost', '比利时(Belgium Post)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1324, 'belize', '伯利兹(Belize Postal)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1325, 'belpost', '白俄罗斯(Belpochta)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1326, 'benniao', '笨鸟国际', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1327, 'bester', '飛斯特', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1328, 'bluedart', 'BlueDart', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1329, 'bohei', '波黑(JP BH Posta)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1330, 'bolivia', '玻利维亚', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1331, 'borderguru', 'BorderGuru', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1332, 'botspost', '博茨瓦纳', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1333, 'bphchina', '速方(Sufast)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1334, 'bpostinter', '比利时国际(Bpost international)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1335, 'brazilposten', '巴西(Brazil Post/Correios)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1336, 'brunei', '文莱(Brunei Postal)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1337, 'caledonia', '新喀里多尼亚[法国](New Caledonia)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1338, 'cambodia', '柬埔寨(Cambodia Post)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1339, 'camekong', '到了港', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1340, 'cameroon', '喀麦隆(CAMPOST)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1341, 'campbellsexpress', 'Campbell’s Express', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1342, 'canpostfr', '加拿大邮政', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1343, 'cargolux', '卢森堡航空', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1344, 'cces', 'CCES/国通快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1345, 'cdek', 'CDEK', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1346, 'ceskaposta', '捷克(?eská po?ta)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1347, 'cevalogistics', 'CEVA Logistic', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1348, 'changwooair', '昌宇国际', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1349, 'chengda', '成达国际速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1350, 'chile', '智利(Correos Chile)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1351, 'chinasqk', 'SQK国际速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1352, 'chronopostfra', '法国大包、EMS-法文(Chronopost France)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1353, 'chronopostfren', '法国大包、EMS-英文(Chronopost France)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1354, 'chunfai', '中国香港骏辉物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1355, 'citylink', 'City-Link', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1356, 'citysprint', 'citysprint', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1357, 'ckeex', '城晓国际快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1358, 'cloudexpress', 'CE易欧通国际速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1359, 'clsp', 'CL日中速运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1360, 'cnair', 'CNAIR', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1361, 'cncexp', 'C&C国际速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1362, 'cnup', 'CNUP 中联邮', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1363, 'cnws', '中国翼', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1364, 'colombia', '哥伦比亚(4-72 La Red Postal de Colom', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1365, 'correios', '莫桑比克(Correios de Moçambique)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1366, 'correo', '乌拉圭(Correo Uruguayo)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1367, 'correoargentino', '阿根廷(Correo Argentina)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1368, 'correos', '哥斯达黎加(Correos de Costa Rica)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1369, 'ctoexp', '泰国中通CTO', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1370, 'cypruspost', '塞浦路斯(Cyprus Post)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1371, 'dcs', 'DCS', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1372, 'deltec', 'Deltec Courier', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1373, 'desworks', '澳行快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1374, 'dhlhk', 'DHL HK', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1375, 'dhlnetherlands', 'DHL-荷兰(DHL Netherlands)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1376, 'dhlpoland', 'DHL-波兰(DHL Poland)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1377, 'dindon', '叮咚澳洲转运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1378, 'directlink', 'Direct Link', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1379, 'disifangau', '递四方澳洲', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1380, 'disifangus', '递四方美国', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1381, 'dpdgermany', 'DPD Germany', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1382, 'dpdpoland', 'DPD Poland', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1383, 'dpduk', 'DPD UK', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1384, 'dtdcindia', 'DTDC India', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1385, 'ealceair', '东方航空物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1386, 'easyexpress', 'EASY EXPRESS', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1387, 'ecallturn', 'E跨通', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1388, 'ecfirstclass', 'EC-Firstclass', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1389, 'ecmsglobal', 'ECMS Express', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1390, 'ecotransite', '东西E全运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1391, 'ecuador', '厄瓜多尔(Correos del Ecuador)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1392, 'edragon', '龙象国际物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1393, 'edtexpress', 'e直运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1394, 'egypt', '埃及(Egypt Post)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1395, 'eiffel', '艾菲尔国际速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1396, 'elta', '希腊包裹(ELTA Hellenic Post)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1397, 'eltahell', '希腊EMS(ELTA Courier)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1398, 'emirates', '阿联酋(Emirates Post)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1399, 'emms', '澳州顺风快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1400, 'emonitoring', '波兰小包(Poczta Polska)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1401, 'emssouthafrica', '南非EMS', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1402, 'emsukraine', '乌克兰EMS(EMS Ukraine)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1403, 'emsukrainecn', '乌克兰EMS-中文(EMS Ukraine)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1404, 'england', '英国(大包,EMS)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1405, 'epspost', '联众国际', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1406, 'esinotrans', '中外运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1407, 'estafeta', 'Estafeta', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1408, 'estes', 'Estes', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1409, 'eta100', '易达国际速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1410, 'ethiopia', '埃塞俄比亚(Ethiopian postal)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1411, 'eucnrail', '中欧国际物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1412, 'eucpost', '德国 EUC POST', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1413, 'euexpress', 'EU-EXPRESS', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1414, 'euguoji', '易邮国际', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1415, 'europe8', '败欧洲', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1416, 'europeanecom', 'europeanecom', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1417, 'expressplus', '澳洲新干线快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1418, 'ezhuanyuan', '易转运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1419, 'fandaguoji', '颿达国际快递-英文', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1420, 'fardarww', '颿达国际快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1421, 'fastontime', '加拿大联通快运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1422, 'fastway', 'Fastway Ireland', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1423, 'fedexuk', 'FedEx-英国件(FedEx UK)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1424, 'fedexukcn', 'FedEx-英国件', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1425, 'fedroad', 'FedRoad 联邦转运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1426, 'fiji', '斐济(Fiji Post)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1427, 'finland', '芬兰(Itella Posti Oy)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1428, 'flowerkd', '花瓣转运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1429, 'fourpxus', '四方格', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1430, 'fox', 'FOX国际快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1431, 'freakyquick', 'FQ狂派速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1432, 'gaticn', 'Gati-中文', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1433, 'gatien', 'Gati-英文', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1434, 'gatikwe', 'Gati-KWE', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1435, 'ge2d', 'GE2D跨境物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1436, 'georgianpost', '格鲁吉亚(Georgian Pos)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1437, 'ghtexpress', 'GHT物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1438, 'gibraltar', '直布罗陀[英国]( Royal Gibraltar Post)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1439, 'globaltracktrace', 'globaltracktrace', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1440, 'gls', 'GLS', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1441, 'greenland', '格陵兰[丹麦](TELE Greenland A/S)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1442, 'grivertek', '潍鸿', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1443, 'gtgogo', 'GT国际快运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1444, 'guanting', '冠庭国际物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1445, 'gvpexpress', '宏观国际快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1446, 'haihongmmb', '海红for买卖宝', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1447, 'haiwaihuanqiu', '海外环球', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1448, 'handboy', '汉邦国际速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1449, 'haypost', '亚美尼亚(Haypost-Armenian Postal)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1450, 'highsince', 'Highsince', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1451, 'hitaoe', 'Hi淘易快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1452, 'hkposten', '中国香港(HongKong Post)英文', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1453, 'homecourier', '如家国际快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1454, 'hongjie', '宏捷国际物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1455, 'hqtd', '环球通达 ', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1456, 'hrvatska', '克罗地亚(Hrvatska Posta)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1457, 'huanqiuabc', '中国香港环球快运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1458, 'humpline', '驼峰国际', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1459, 'hungary', '匈牙利(Magyar Posta)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1460, 'hyk', '上海昊宏国际货物', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1461, 'iceland', '冰岛(Iceland Post)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1462, 'iexpress', 'iExpress', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1463, 'ilogen', 'logen路坚', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1464, 'ilyang', 'ILYANG', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1465, 'imlb2c', '艾姆勒', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1466, 'india', '印度(India Post)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1467, 'indonesia', '印度尼西亚EMS(Pos Indonesia-EMS)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1468, 'inposdom', '多米尼加(INPOSDOM – Instituto Postal', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1469, 'interlink', 'Interlink Express', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1470, 'iparcel', 'UPS i-parcel', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1471, 'iran', '伊朗(Iran Post)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1472, 'israelpost', '以色列(Israel Post)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1473, 'italysad', 'Italy SDA', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1474, 'iyoungspeed', '驿扬国际速运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1475, 'jamaicapost', '牙买加(Jamaica Post)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1476, 'jcex', 'jcex', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1477, 'jdiex', 'JDIEX', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1478, 'jerseypost', '泽西岛', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1479, 'jetexpressgroup', '澳速通国际速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1480, 'jiguang', '极光转运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1481, 'jixiangyouau', '吉祥邮(澳洲)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1482, 'jordan', '约旦(Jordan Post)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1483, 'junfengguoji', '骏丰国际速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1484, 'kaolaexpress', '考拉国际速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1485, 'kazpost', '哈萨克斯坦(Kazpost)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1486, 'kenya', '肯尼亚(POSTA KENYA)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1487, 'keypon', '启邦国际物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1488, 'kingfreight', '货运皇', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1489, 'kjde', '跨境直邮通', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1490, 'koali', '番薯国际货运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1491, 'koreapost', '韩国(Korea Post)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1492, 'koreapostcn', '韩国邮政', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1493, 'koreapostkr', '韩国邮政韩文', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1494, 'krtao', '淘韩国际快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1495, 'kyrgyzpost', '吉尔吉斯斯坦(Kyrgyz Post)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1496, 'kyue', '跨跃国际', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1497, 'landmarkglobal', 'Landmark Global', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1498, 'lao', '老挝(Lao Express) ', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1499, 'laposte', '塞内加尔', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1500, 'latvia', '拉脱维亚(Latvijas Pasts)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1501, 'ldxpres', '林道国际快递-英文', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1502, 'leopard', '云豹国际货运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1503, 'lesotho', '莱索托(Lesotho Post)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1504, 'lgs', 'lazada', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1505, 'libanpost', '黎巴嫩(Liban Post)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1506, 'linex', 'Linex', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1507, 'lithuania', '立陶宛(Lietuvos pa?tas)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1508, 'lmfex', '良藤国际速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1509, 'logistics', '華信物流WTO', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1510, 'ltparcel', '联通快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1511, 'luckyfastex', '吉捷国际速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1512, 'lundao', '论道国际物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1513, 'luxembourg', '卢森堡(Luxembourg Post)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1514, 'lwe', 'LWE', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1515, 'macao', '中国澳门(Macau Post)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1516, 'macedonia', '马其顿(Macedonian Post)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1517, 'malaysiaems', '马来西亚大包、EMS(Malaysia Post(parcel,', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1518, 'malaysiapost', '马来西亚小包(Malaysia Post(Registered)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1519, 'maldives', '马尔代夫(Maldives Post)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1520, 'malta', '马耳他(Malta Post)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1521, 'mapleexpress', '今枫国际快运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1522, 'mauritius', '毛里求斯(Mauritius Post)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1523, 'maxeedexpress', '澳洲迈速快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1524, 'meibang', '美邦国际快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1525, 'meixi', '美西快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1526, 'mexico', '墨西哥(Correos de Mexico)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1527, 'mexicodenda', 'Mexico Senda Express', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1528, 'mmlogi', '猛犸速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1529, 'mongolpost', '蒙古国(Mongol Post) ', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1530, 'montenegro', '黑山(Posta Crne Gore)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1531, 'morocco', '摩洛哥 ( Morocco Post )', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1532, 'mrw', 'MRW', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1533, 'multipack', 'Mexico Multipack', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1534, 'namibia', '纳米比亚(NamPost)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1535, 'nederlandpost', '荷兰速递(Nederland Post)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1536, 'nepalpost', '尼泊尔(Nepal Postal Services)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1537, 'newgistics', 'Newgistics', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1538, 'nigerianpost', '尼日利亚(Nigerian Postal)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1539, 'nle', 'NLE', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1540, 'nlebv', '亚欧专线', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1541, 'novaposhta', 'Nova Poshta', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1542, 'nuoer', '诺尔国际物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1543, 'nuoyaao', '偌亚奥国际快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1544, 'nzzto', '新西兰中通', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1545, 'ocaargen', 'OCA Argentina', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1546, 'oman', '阿曼(Oman Post)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1547, 'omniva', '爱沙尼亚(Eesti Post)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1548, 'ontrac', 'OnTrac', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1549, 'opek', 'OPEK', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1550, 'pakistan', '巴基斯坦(Pakistan Post)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1551, 'paraguay', '巴拉圭(Correo Paraguayo)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1552, 'parcelchina', '诚一物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1553, 'parcelforcecn', '英国邮政大包EMS', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1554, 'pcaexpress', 'PCA Express', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1555, 'pdstow', '全球速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1556, 'peru', '秘鲁(SERPOST)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1557, 'pioneer', '先锋国际快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1558, 'pochta', '俄罗斯邮政(Russian Post)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1559, 'portugalctt', '葡萄牙(Portugal CTT)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1560, 'portugalseur', 'Portugal Seur', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1561, 'posta', '坦桑尼亚(Tanzania Posts Corporation)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1562, 'postelbe', 'PostElbe', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1563, 'postenab', 'PostNord(Posten AB)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1564, 'postennorge', '挪威(Posten Norge)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1565, 'postpng', '巴布亚新几内亚(PNG Post)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1566, 'ptt', '土耳其', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1567, 'qdants', 'ANTS EXPRESS', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1568, 'qesd', '7E速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1569, 'qichen', '启辰国际速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1570, 'qpost', '卡塔尔(Qatar Post)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1571, 'quantium', 'Quantium', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1572, 'redexpress', 'Red Express', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1573, 'republic', '叙利亚(Syrian Post)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1574, 'romanian', '罗马尼亚(Posta Romanian)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1575, 'rpx', 'rpx', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1576, 'rrthk', '日日通国际', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1577, 'ruidianyouzheng', '瑞典(Sweden Post)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1578, 'rwanda', '卢旺达(Rwanda i-posita)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1579, 's2c', 'S2C', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1580, 'safexpress', 'Safexpress', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1581, 'saiaodimmb', '赛澳递for买卖宝', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1582, 'samoa', '萨摩亚(Samoa Post)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1583, 'saudipost', '沙特阿拉伯(Saudi Post)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1584, 'scic', '中加国际快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1585, 'sd138', '泰国138国际物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1586, 'selektvracht', 'Selektvracht', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1587, 'serbia', '塞尔维亚(PE Post of Serbia)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1588, 'seur', 'International Seur', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1589, 'sfau', '澳丰速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1590, 'sfpost', '曹操到', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1591, 'shanghaiwujiangmmb', '上海无疆for买卖宝', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1592, 'shlexp', 'SHL畅灵国际物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1593, 'shpostwish', 'wish邮', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1594, 'shunbang', '顺邦国际物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1595, 'sinoairinex', '中外运空运', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1596, 'sinoex', '中外运速递-中文', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1597, 'siodemka', 'Siodemka', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1598, 'skynet', 'skynet', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1599, 'skynetworldwide', 'skynetworldwide', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1600, 'skypost', '荷兰Sky Post', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1601, 'slovak', '斯洛伐克(Slovenská Posta)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1602, 'slpost', '斯里兰卡(Sri Lanka Post)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1603, 'southafrican', '南非(South African Post Office)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1604, 'speedpost', '新加坡EMS、大包(Singapore Speedpost)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1605, 'sudapost', '苏丹(Sudapost)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1606, 'superoz', '速配欧翼', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1607, 'swisspostcn', '瑞士邮政', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1608, 'szdpex', '深圳DPEX', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1609, 'szyouzheng', '深圳邮政', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1610, 'tanzania', '坦桑尼亚(Tanzania Posts)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1611, 'tcixps', 'TCI XPS', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1612, 'tcxbthai', 'TCXB国际物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1613, 'tdcargo', 'TD Cargo', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1614, 'thailand', '泰国(Thailand Thai Post)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1615, 'thaizto', '泰国中通ZTO', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1616, 'thunderexpress', '加拿大雷霆快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1617, 'tmwexpress', '明达国际速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1618, 'tntitaly', 'TNT Italy', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1619, 'tntpostcn', 'TNT Post', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1620, 'tntuk', 'TNT UK', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1621, 'tny', 'TNY物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1622, 'topshey', '顶世国际物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1623, 'ttkeurope', '天天欧洲物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1624, 'tunisia', '突尼斯EMS(Rapid-Poste)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1625, 'turtle', '海龟国际快递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1626, 'uex', 'UEX国际物流', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1627, 'uexiex', '欧洲UEX', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1628, 'uganda', '乌干达(Posta Uganda)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1629, 'uhi', '优海国际速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1630, 'ukraine', '乌克兰小包、大包(UkrPoshta)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1631, 'ukrpost', '乌克兰小包、大包(UkrPost)', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1632, 'ukrpostcn', '乌克兰邮政包裹', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1633, 'upsfreight', 'UPS Freight', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1634, 'upsmailinno', 'UPS Mail Innovations', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1635, 'uschuaxia', '华夏国际速递', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1636, 'uspscn', 'USPSCN', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1637, 'utaoscm', 'UTAO优到', 0, 0, 0, '', '', '', 0, 1, 1); +INSERT INTO `eb_express` VALUES (1638, 'uzbekistan', '乌兹别克斯坦(Post of Uzbekistan)', 0, 0, 0, '', '', '', 0, 1, 0); + +-- ---------------------------- +-- Table structure for eb_shipping_templates +-- ---------------------------- +DROP TABLE IF EXISTS `eb_shipping_templates`; +CREATE TABLE `eb_shipping_templates` ( + `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '编号', + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '模板名称', + `type` tinyint(1) NOT NULL DEFAULT 1 COMMENT '计费方式', + `appoint` tinyint(1) NOT NULL DEFAULT 0 COMMENT '指定包邮', + `sort` int(11) NOT NULL DEFAULT 0 COMMENT '排序', + `create_time` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '运费模板' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of eb_shipping_templates +-- ---------------------------- +INSERT INTO `eb_shipping_templates` VALUES (1, '全国包邮', 1, 0, 99, '2021-03-08 11:06:55', '2021-12-25 12:16:22'); + +-- ---------------------------- +-- Table structure for eb_shipping_templates_free +-- ---------------------------- +DROP TABLE IF EXISTS `eb_shipping_templates_free`; +CREATE TABLE `eb_shipping_templates_free` ( + `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '编号', + `temp_id` int(11) NOT NULL DEFAULT 0 COMMENT '模板ID', + `city_id` int(11) NOT NULL DEFAULT 0 COMMENT '城市ID', + `title` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '描述', + `number` decimal(10, 2) NOT NULL DEFAULT 0.00 COMMENT '包邮件数', + `price` decimal(10, 2) NOT NULL DEFAULT 0.00 COMMENT '包邮金额', + `type` tinyint(1) NOT NULL DEFAULT 1 COMMENT '计费方式', + `uniqid` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '分组唯一值', + `status` tinyint(1) NULL DEFAULT 0 COMMENT '是否无效', + `create_time` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 131 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '运费模板包邮' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of eb_shipping_templates_free +-- ---------------------------- +INSERT INTO `eb_shipping_templates_free` VALUES (99, 1, 7363, '[[7362,7363,7364],[7362,7363,7434],[7362,7363,7607],[7362,7363,7763],[7362,7363,7954],[7362,7363,8079],[7362,7363,8298],[7362,7363,8563],[7362,7363,8835],[7362,7363,9102],[7362,7363,9378],[7362,7363,10143],[7362,7363,10983],[7362,7363,11454],[7362,7363,11795],[7362,7363,12251]]', 1.00, 1.00, 1, 'cd025ce4eefaa69c772e068d8b5f8866', 1, '2021-12-16 14:53:27', '2021-12-16 14:53:27'); +INSERT INTO `eb_shipping_templates_free` VALUES (100, 1, 7364, '[[7362,7363,7364],[7362,7363,7434],[7362,7363,7607],[7362,7363,7763],[7362,7363,7954],[7362,7363,8079],[7362,7363,8298],[7362,7363,8563],[7362,7363,8835],[7362,7363,9102],[7362,7363,9378],[7362,7363,10143],[7362,7363,10983],[7362,7363,11454],[7362,7363,11795],[7362,7363,12251]]', 1.00, 1.00, 1, 'cd025ce4eefaa69c772e068d8b5f8866', 1, '2021-12-16 14:53:27', '2021-12-16 14:53:27'); +INSERT INTO `eb_shipping_templates_free` VALUES (101, 1, 7363, '[[7362,7363,7364],[7362,7363,7434],[7362,7363,7607],[7362,7363,7763],[7362,7363,7954],[7362,7363,8079],[7362,7363,8298],[7362,7363,8563],[7362,7363,8835],[7362,7363,9102],[7362,7363,9378],[7362,7363,10143],[7362,7363,10983],[7362,7363,11454],[7362,7363,11795],[7362,7363,12251]]', 1.00, 1.00, 1, 'cd025ce4eefaa69c772e068d8b5f8866', 1, '2021-12-16 14:53:27', '2021-12-16 14:53:27'); +INSERT INTO `eb_shipping_templates_free` VALUES (102, 1, 7434, '[[7362,7363,7364],[7362,7363,7434],[7362,7363,7607],[7362,7363,7763],[7362,7363,7954],[7362,7363,8079],[7362,7363,8298],[7362,7363,8563],[7362,7363,8835],[7362,7363,9102],[7362,7363,9378],[7362,7363,10143],[7362,7363,10983],[7362,7363,11454],[7362,7363,11795],[7362,7363,12251]]', 1.00, 1.00, 1, 'cd025ce4eefaa69c772e068d8b5f8866', 1, '2021-12-16 14:53:27', '2021-12-16 14:53:27'); +INSERT INTO `eb_shipping_templates_free` VALUES (103, 1, 7363, '[[7362,7363,7364],[7362,7363,7434],[7362,7363,7607],[7362,7363,7763],[7362,7363,7954],[7362,7363,8079],[7362,7363,8298],[7362,7363,8563],[7362,7363,8835],[7362,7363,9102],[7362,7363,9378],[7362,7363,10143],[7362,7363,10983],[7362,7363,11454],[7362,7363,11795],[7362,7363,12251]]', 1.00, 1.00, 1, 'cd025ce4eefaa69c772e068d8b5f8866', 1, '2021-12-16 14:53:27', '2021-12-16 14:53:27'); +INSERT INTO `eb_shipping_templates_free` VALUES (104, 1, 7607, '[[7362,7363,7364],[7362,7363,7434],[7362,7363,7607],[7362,7363,7763],[7362,7363,7954],[7362,7363,8079],[7362,7363,8298],[7362,7363,8563],[7362,7363,8835],[7362,7363,9102],[7362,7363,9378],[7362,7363,10143],[7362,7363,10983],[7362,7363,11454],[7362,7363,11795],[7362,7363,12251]]', 1.00, 1.00, 1, 'cd025ce4eefaa69c772e068d8b5f8866', 1, '2021-12-16 14:53:27', '2021-12-16 14:53:27'); +INSERT INTO `eb_shipping_templates_free` VALUES (105, 1, 7363, '[[7362,7363,7364],[7362,7363,7434],[7362,7363,7607],[7362,7363,7763],[7362,7363,7954],[7362,7363,8079],[7362,7363,8298],[7362,7363,8563],[7362,7363,8835],[7362,7363,9102],[7362,7363,9378],[7362,7363,10143],[7362,7363,10983],[7362,7363,11454],[7362,7363,11795],[7362,7363,12251]]', 1.00, 1.00, 1, 'cd025ce4eefaa69c772e068d8b5f8866', 1, '2021-12-16 14:53:27', '2021-12-16 14:53:27'); +INSERT INTO `eb_shipping_templates_free` VALUES (106, 1, 7763, '[[7362,7363,7364],[7362,7363,7434],[7362,7363,7607],[7362,7363,7763],[7362,7363,7954],[7362,7363,8079],[7362,7363,8298],[7362,7363,8563],[7362,7363,8835],[7362,7363,9102],[7362,7363,9378],[7362,7363,10143],[7362,7363,10983],[7362,7363,11454],[7362,7363,11795],[7362,7363,12251]]', 1.00, 1.00, 1, 'cd025ce4eefaa69c772e068d8b5f8866', 1, '2021-12-16 14:53:27', '2021-12-16 14:53:27'); +INSERT INTO `eb_shipping_templates_free` VALUES (107, 1, 7363, '[[7362,7363,7364],[7362,7363,7434],[7362,7363,7607],[7362,7363,7763],[7362,7363,7954],[7362,7363,8079],[7362,7363,8298],[7362,7363,8563],[7362,7363,8835],[7362,7363,9102],[7362,7363,9378],[7362,7363,10143],[7362,7363,10983],[7362,7363,11454],[7362,7363,11795],[7362,7363,12251]]', 1.00, 1.00, 1, 'cd025ce4eefaa69c772e068d8b5f8866', 1, '2021-12-16 14:53:27', '2021-12-16 14:53:27'); +INSERT INTO `eb_shipping_templates_free` VALUES (108, 1, 7954, '[[7362,7363,7364],[7362,7363,7434],[7362,7363,7607],[7362,7363,7763],[7362,7363,7954],[7362,7363,8079],[7362,7363,8298],[7362,7363,8563],[7362,7363,8835],[7362,7363,9102],[7362,7363,9378],[7362,7363,10143],[7362,7363,10983],[7362,7363,11454],[7362,7363,11795],[7362,7363,12251]]', 1.00, 1.00, 1, 'cd025ce4eefaa69c772e068d8b5f8866', 1, '2021-12-16 14:53:27', '2021-12-16 14:53:27'); +INSERT INTO `eb_shipping_templates_free` VALUES (109, 1, 7363, '[[7362,7363,7364],[7362,7363,7434],[7362,7363,7607],[7362,7363,7763],[7362,7363,7954],[7362,7363,8079],[7362,7363,8298],[7362,7363,8563],[7362,7363,8835],[7362,7363,9102],[7362,7363,9378],[7362,7363,10143],[7362,7363,10983],[7362,7363,11454],[7362,7363,11795],[7362,7363,12251]]', 1.00, 1.00, 1, 'cd025ce4eefaa69c772e068d8b5f8866', 1, '2021-12-16 14:53:27', '2021-12-16 14:53:27'); +INSERT INTO `eb_shipping_templates_free` VALUES (110, 1, 8079, '[[7362,7363,7364],[7362,7363,7434],[7362,7363,7607],[7362,7363,7763],[7362,7363,7954],[7362,7363,8079],[7362,7363,8298],[7362,7363,8563],[7362,7363,8835],[7362,7363,9102],[7362,7363,9378],[7362,7363,10143],[7362,7363,10983],[7362,7363,11454],[7362,7363,11795],[7362,7363,12251]]', 1.00, 1.00, 1, 'cd025ce4eefaa69c772e068d8b5f8866', 1, '2021-12-16 14:53:27', '2021-12-16 14:53:27'); +INSERT INTO `eb_shipping_templates_free` VALUES (111, 1, 7363, '[[7362,7363,7364],[7362,7363,7434],[7362,7363,7607],[7362,7363,7763],[7362,7363,7954],[7362,7363,8079],[7362,7363,8298],[7362,7363,8563],[7362,7363,8835],[7362,7363,9102],[7362,7363,9378],[7362,7363,10143],[7362,7363,10983],[7362,7363,11454],[7362,7363,11795],[7362,7363,12251]]', 1.00, 1.00, 1, 'cd025ce4eefaa69c772e068d8b5f8866', 1, '2021-12-16 14:53:27', '2021-12-16 14:53:27'); +INSERT INTO `eb_shipping_templates_free` VALUES (112, 1, 8298, '[[7362,7363,7364],[7362,7363,7434],[7362,7363,7607],[7362,7363,7763],[7362,7363,7954],[7362,7363,8079],[7362,7363,8298],[7362,7363,8563],[7362,7363,8835],[7362,7363,9102],[7362,7363,9378],[7362,7363,10143],[7362,7363,10983],[7362,7363,11454],[7362,7363,11795],[7362,7363,12251]]', 1.00, 1.00, 1, 'cd025ce4eefaa69c772e068d8b5f8866', 1, '2021-12-16 14:53:27', '2021-12-16 14:53:27'); +INSERT INTO `eb_shipping_templates_free` VALUES (113, 1, 7363, '[[7362,7363,7364],[7362,7363,7434],[7362,7363,7607],[7362,7363,7763],[7362,7363,7954],[7362,7363,8079],[7362,7363,8298],[7362,7363,8563],[7362,7363,8835],[7362,7363,9102],[7362,7363,9378],[7362,7363,10143],[7362,7363,10983],[7362,7363,11454],[7362,7363,11795],[7362,7363,12251]]', 1.00, 1.00, 1, 'cd025ce4eefaa69c772e068d8b5f8866', 1, '2021-12-16 14:53:27', '2021-12-16 14:53:27'); +INSERT INTO `eb_shipping_templates_free` VALUES (114, 1, 8563, '[[7362,7363,7364],[7362,7363,7434],[7362,7363,7607],[7362,7363,7763],[7362,7363,7954],[7362,7363,8079],[7362,7363,8298],[7362,7363,8563],[7362,7363,8835],[7362,7363,9102],[7362,7363,9378],[7362,7363,10143],[7362,7363,10983],[7362,7363,11454],[7362,7363,11795],[7362,7363,12251]]', 1.00, 1.00, 1, 'cd025ce4eefaa69c772e068d8b5f8866', 1, '2021-12-16 14:53:27', '2021-12-16 14:53:27'); +INSERT INTO `eb_shipping_templates_free` VALUES (115, 1, 7363, '[[7362,7363,7364],[7362,7363,7434],[7362,7363,7607],[7362,7363,7763],[7362,7363,7954],[7362,7363,8079],[7362,7363,8298],[7362,7363,8563],[7362,7363,8835],[7362,7363,9102],[7362,7363,9378],[7362,7363,10143],[7362,7363,10983],[7362,7363,11454],[7362,7363,11795],[7362,7363,12251]]', 1.00, 1.00, 1, 'cd025ce4eefaa69c772e068d8b5f8866', 1, '2021-12-16 14:53:28', '2021-12-16 14:53:28'); +INSERT INTO `eb_shipping_templates_free` VALUES (116, 1, 8835, '[[7362,7363,7364],[7362,7363,7434],[7362,7363,7607],[7362,7363,7763],[7362,7363,7954],[7362,7363,8079],[7362,7363,8298],[7362,7363,8563],[7362,7363,8835],[7362,7363,9102],[7362,7363,9378],[7362,7363,10143],[7362,7363,10983],[7362,7363,11454],[7362,7363,11795],[7362,7363,12251]]', 1.00, 1.00, 1, 'cd025ce4eefaa69c772e068d8b5f8866', 1, '2021-12-16 14:53:28', '2021-12-16 14:53:28'); +INSERT INTO `eb_shipping_templates_free` VALUES (117, 1, 7363, '[[7362,7363,7364],[7362,7363,7434],[7362,7363,7607],[7362,7363,7763],[7362,7363,7954],[7362,7363,8079],[7362,7363,8298],[7362,7363,8563],[7362,7363,8835],[7362,7363,9102],[7362,7363,9378],[7362,7363,10143],[7362,7363,10983],[7362,7363,11454],[7362,7363,11795],[7362,7363,12251]]', 1.00, 1.00, 1, 'cd025ce4eefaa69c772e068d8b5f8866', 1, '2021-12-16 14:53:28', '2021-12-16 14:53:28'); +INSERT INTO `eb_shipping_templates_free` VALUES (118, 1, 9102, '[[7362,7363,7364],[7362,7363,7434],[7362,7363,7607],[7362,7363,7763],[7362,7363,7954],[7362,7363,8079],[7362,7363,8298],[7362,7363,8563],[7362,7363,8835],[7362,7363,9102],[7362,7363,9378],[7362,7363,10143],[7362,7363,10983],[7362,7363,11454],[7362,7363,11795],[7362,7363,12251]]', 1.00, 1.00, 1, 'cd025ce4eefaa69c772e068d8b5f8866', 1, '2021-12-16 14:53:28', '2021-12-16 14:53:28'); +INSERT INTO `eb_shipping_templates_free` VALUES (119, 1, 7363, '[[7362,7363,7364],[7362,7363,7434],[7362,7363,7607],[7362,7363,7763],[7362,7363,7954],[7362,7363,8079],[7362,7363,8298],[7362,7363,8563],[7362,7363,8835],[7362,7363,9102],[7362,7363,9378],[7362,7363,10143],[7362,7363,10983],[7362,7363,11454],[7362,7363,11795],[7362,7363,12251]]', 1.00, 1.00, 1, 'cd025ce4eefaa69c772e068d8b5f8866', 1, '2021-12-16 14:53:28', '2021-12-16 14:53:28'); +INSERT INTO `eb_shipping_templates_free` VALUES (120, 1, 9378, '[[7362,7363,7364],[7362,7363,7434],[7362,7363,7607],[7362,7363,7763],[7362,7363,7954],[7362,7363,8079],[7362,7363,8298],[7362,7363,8563],[7362,7363,8835],[7362,7363,9102],[7362,7363,9378],[7362,7363,10143],[7362,7363,10983],[7362,7363,11454],[7362,7363,11795],[7362,7363,12251]]', 1.00, 1.00, 1, 'cd025ce4eefaa69c772e068d8b5f8866', 1, '2021-12-16 14:53:28', '2021-12-16 14:53:28'); +INSERT INTO `eb_shipping_templates_free` VALUES (121, 1, 7363, '[[7362,7363,7364],[7362,7363,7434],[7362,7363,7607],[7362,7363,7763],[7362,7363,7954],[7362,7363,8079],[7362,7363,8298],[7362,7363,8563],[7362,7363,8835],[7362,7363,9102],[7362,7363,9378],[7362,7363,10143],[7362,7363,10983],[7362,7363,11454],[7362,7363,11795],[7362,7363,12251]]', 1.00, 1.00, 1, 'cd025ce4eefaa69c772e068d8b5f8866', 1, '2021-12-16 14:53:28', '2021-12-16 14:53:28'); +INSERT INTO `eb_shipping_templates_free` VALUES (122, 1, 10143, '[[7362,7363,7364],[7362,7363,7434],[7362,7363,7607],[7362,7363,7763],[7362,7363,7954],[7362,7363,8079],[7362,7363,8298],[7362,7363,8563],[7362,7363,8835],[7362,7363,9102],[7362,7363,9378],[7362,7363,10143],[7362,7363,10983],[7362,7363,11454],[7362,7363,11795],[7362,7363,12251]]', 1.00, 1.00, 1, 'cd025ce4eefaa69c772e068d8b5f8866', 1, '2021-12-16 14:53:28', '2021-12-16 14:53:28'); +INSERT INTO `eb_shipping_templates_free` VALUES (123, 1, 7363, '[[7362,7363,7364],[7362,7363,7434],[7362,7363,7607],[7362,7363,7763],[7362,7363,7954],[7362,7363,8079],[7362,7363,8298],[7362,7363,8563],[7362,7363,8835],[7362,7363,9102],[7362,7363,9378],[7362,7363,10143],[7362,7363,10983],[7362,7363,11454],[7362,7363,11795],[7362,7363,12251]]', 1.00, 1.00, 1, 'cd025ce4eefaa69c772e068d8b5f8866', 1, '2021-12-16 14:53:28', '2021-12-16 14:53:28'); +INSERT INTO `eb_shipping_templates_free` VALUES (124, 1, 10983, '[[7362,7363,7364],[7362,7363,7434],[7362,7363,7607],[7362,7363,7763],[7362,7363,7954],[7362,7363,8079],[7362,7363,8298],[7362,7363,8563],[7362,7363,8835],[7362,7363,9102],[7362,7363,9378],[7362,7363,10143],[7362,7363,10983],[7362,7363,11454],[7362,7363,11795],[7362,7363,12251]]', 1.00, 1.00, 1, 'cd025ce4eefaa69c772e068d8b5f8866', 1, '2021-12-16 14:53:28', '2021-12-16 14:53:28'); +INSERT INTO `eb_shipping_templates_free` VALUES (125, 1, 7363, '[[7362,7363,7364],[7362,7363,7434],[7362,7363,7607],[7362,7363,7763],[7362,7363,7954],[7362,7363,8079],[7362,7363,8298],[7362,7363,8563],[7362,7363,8835],[7362,7363,9102],[7362,7363,9378],[7362,7363,10143],[7362,7363,10983],[7362,7363,11454],[7362,7363,11795],[7362,7363,12251]]', 1.00, 1.00, 1, 'cd025ce4eefaa69c772e068d8b5f8866', 1, '2021-12-16 14:53:28', '2021-12-16 14:53:28'); +INSERT INTO `eb_shipping_templates_free` VALUES (126, 1, 11454, '[[7362,7363,7364],[7362,7363,7434],[7362,7363,7607],[7362,7363,7763],[7362,7363,7954],[7362,7363,8079],[7362,7363,8298],[7362,7363,8563],[7362,7363,8835],[7362,7363,9102],[7362,7363,9378],[7362,7363,10143],[7362,7363,10983],[7362,7363,11454],[7362,7363,11795],[7362,7363,12251]]', 1.00, 1.00, 1, 'cd025ce4eefaa69c772e068d8b5f8866', 1, '2021-12-16 14:53:28', '2021-12-16 14:53:28'); +INSERT INTO `eb_shipping_templates_free` VALUES (127, 1, 7363, '[[7362,7363,7364],[7362,7363,7434],[7362,7363,7607],[7362,7363,7763],[7362,7363,7954],[7362,7363,8079],[7362,7363,8298],[7362,7363,8563],[7362,7363,8835],[7362,7363,9102],[7362,7363,9378],[7362,7363,10143],[7362,7363,10983],[7362,7363,11454],[7362,7363,11795],[7362,7363,12251]]', 1.00, 1.00, 1, 'cd025ce4eefaa69c772e068d8b5f8866', 1, '2021-12-16 14:53:28', '2021-12-16 14:53:28'); +INSERT INTO `eb_shipping_templates_free` VALUES (128, 1, 11795, '[[7362,7363,7364],[7362,7363,7434],[7362,7363,7607],[7362,7363,7763],[7362,7363,7954],[7362,7363,8079],[7362,7363,8298],[7362,7363,8563],[7362,7363,8835],[7362,7363,9102],[7362,7363,9378],[7362,7363,10143],[7362,7363,10983],[7362,7363,11454],[7362,7363,11795],[7362,7363,12251]]', 1.00, 1.00, 1, 'cd025ce4eefaa69c772e068d8b5f8866', 1, '2021-12-16 14:53:28', '2021-12-16 14:53:28'); +INSERT INTO `eb_shipping_templates_free` VALUES (129, 1, 7363, '[[7362,7363,7364],[7362,7363,7434],[7362,7363,7607],[7362,7363,7763],[7362,7363,7954],[7362,7363,8079],[7362,7363,8298],[7362,7363,8563],[7362,7363,8835],[7362,7363,9102],[7362,7363,9378],[7362,7363,10143],[7362,7363,10983],[7362,7363,11454],[7362,7363,11795],[7362,7363,12251]]', 1.00, 1.00, 1, 'cd025ce4eefaa69c772e068d8b5f8866', 1, '2021-12-16 14:53:28', '2021-12-16 14:53:28'); +INSERT INTO `eb_shipping_templates_free` VALUES (130, 1, 12251, '[[7362,7363,7364],[7362,7363,7434],[7362,7363,7607],[7362,7363,7763],[7362,7363,7954],[7362,7363,8079],[7362,7363,8298],[7362,7363,8563],[7362,7363,8835],[7362,7363,9102],[7362,7363,9378],[7362,7363,10143],[7362,7363,10983],[7362,7363,11454],[7362,7363,11795],[7362,7363,12251]]', 1.00, 1.00, 1, 'cd025ce4eefaa69c772e068d8b5f8866', 1, '2021-12-16 14:53:28', '2021-12-16 14:53:28'); + +-- ---------------------------- +-- Table structure for eb_shipping_templates_region +-- ---------------------------- +DROP TABLE IF EXISTS `eb_shipping_templates_region`; +CREATE TABLE `eb_shipping_templates_region` ( + `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '编号', + `temp_id` int(11) NOT NULL DEFAULT 0 COMMENT '模板ID', + `city_id` int(11) NOT NULL DEFAULT 0 COMMENT '城市ID', + `title` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '描述', + `first` decimal(10, 2) NOT NULL DEFAULT 0.00 COMMENT '首件', + `first_price` decimal(10, 2) NOT NULL DEFAULT 0.00 COMMENT '首件运费', + `renewal` decimal(10, 2) NOT NULL DEFAULT 0.00 COMMENT '续件', + `renewal_price` decimal(10, 2) NOT NULL DEFAULT 0.00 COMMENT '续件运费', + `type` tinyint(1) NOT NULL DEFAULT 1 COMMENT '计费方式 1按件数 2按重量 3按体积', + `uniqid` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '分组唯一值', + `status` tinyint(1) NULL DEFAULT 0 COMMENT '是否无效', + `create_time` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 10954 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '运费模板指定区域费用' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of eb_shipping_templates_region +-- ---------------------------- +INSERT INTO `eb_shipping_templates_region` VALUES (10585, 1, 2, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:22', '2021-12-25 12:16:22'); +INSERT INTO `eb_shipping_templates_region` VALUES (10586, 1, 7363, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:22', '2021-12-25 12:16:22'); +INSERT INTO `eb_shipping_templates_region` VALUES (10587, 1, 13268, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:22', '2021-12-25 12:16:22'); +INSERT INTO `eb_shipping_templates_region` VALUES (10588, 1, 18128, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:22', '2021-12-25 12:16:22'); +INSERT INTO `eb_shipping_templates_region` VALUES (10589, 1, 24371, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:22', '2021-12-25 12:16:22'); +INSERT INTO `eb_shipping_templates_region` VALUES (10590, 1, 26779, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:22', '2021-12-25 12:16:22'); +INSERT INTO `eb_shipping_templates_region` VALUES (10591, 1, 32688, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:22', '2021-12-25 12:16:22'); +INSERT INTO `eb_shipping_templates_region` VALUES (10592, 1, 38160, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10593, 1, 44570, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10594, 1, 49190, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10595, 1, 52018, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10596, 1, 58247, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10597, 1, 61804, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10598, 1, 66813, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10599, 1, 67748, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10600, 1, 69390, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10601, 1, 71850, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10602, 1, 72975, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10603, 1, 76726, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10604, 1, 79163, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10605, 1, 81000, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10606, 1, 84092, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10607, 1, 87613, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10608, 1, 92738, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10609, 1, 96064, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10610, 1, 99538, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10611, 1, 100904, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10612, 1, 101772, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10613, 1, 101884, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10614, 1, 104457, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10615, 1, 107065, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10616, 1, 108166, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10617, 1, 109847, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10618, 1, 110889, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10619, 1, 112552, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10620, 1, 113777, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10621, 1, 114940, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10622, 1, 115225, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10623, 1, 117932, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10624, 1, 119789, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10625, 1, 121081, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10626, 1, 122142, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10627, 1, 122730, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10628, 1, 123698, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10629, 1, 125249, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10630, 1, 126156, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10631, 1, 127070, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10632, 1, 127834, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10633, 1, 128421, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10634, 1, 129977, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10635, 1, 131738, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10636, 1, 133209, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10637, 1, 135392, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10638, 1, 137206, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10639, 1, 138721, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10640, 1, 139340, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10641, 1, 140601, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10642, 1, 141361, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10643, 1, 142786, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10644, 1, 143990, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10645, 1, 145666, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10646, 1, 149079, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10647, 1, 150915, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10648, 1, 151830, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10649, 1, 152413, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10650, 1, 153313, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10651, 1, 154201, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10652, 1, 155076, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10653, 1, 156713, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10654, 1, 157130, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10655, 1, 158623, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10656, 1, 159769, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10657, 1, 161651, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10658, 1, 161793, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10659, 1, 167905, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10660, 1, 169375, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10661, 1, 170724, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10662, 1, 173635, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10663, 1, 174764, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10664, 1, 176920, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10665, 1, 178999, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10666, 1, 180743, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10667, 1, 182538, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10668, 1, 185201, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10669, 1, 186657, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10670, 1, 187441, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10671, 1, 189402, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10672, 1, 191020, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10673, 1, 194395, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10674, 1, 197850, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10675, 1, 203852, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10676, 1, 205101, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10677, 1, 206438, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10678, 1, 209250, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10679, 1, 214260, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10680, 1, 215955, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10681, 1, 216449, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:23', '2021-12-25 12:16:23'); +INSERT INTO `eb_shipping_templates_region` VALUES (10682, 1, 221610, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10683, 1, 224650, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10684, 1, 226469, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10685, 1, 227482, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10686, 1, 228630, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10687, 1, 229844, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10688, 1, 230476, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10689, 1, 230981, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10690, 1, 231499, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10691, 1, 233236, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10692, 1, 234109, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10693, 1, 235483, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10694, 1, 237607, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10695, 1, 239084, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10696, 1, 241180, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10697, 1, 242634, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10698, 1, 243399, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10699, 1, 244378, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10700, 1, 247478, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10701, 1, 248059, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10702, 1, 249098, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10703, 1, 251197, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10704, 1, 253905, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10705, 1, 256112, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10706, 1, 258160, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10707, 1, 260230, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10708, 1, 262699, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10709, 1, 264862, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10710, 1, 265677, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10711, 1, 266521, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10712, 1, 269107, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10713, 1, 269654, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10714, 1, 270222, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10715, 1, 274444, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10716, 1, 277615, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10717, 1, 280562, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10718, 1, 282841, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10719, 1, 285861, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10720, 1, 291235, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10721, 1, 298025, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10722, 1, 301711, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10723, 1, 304309, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10724, 1, 306339, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10725, 1, 313063, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10726, 1, 320179, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10727, 1, 326706, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10728, 1, 330547, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10729, 1, 333140, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10730, 1, 336050, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10731, 1, 337144, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10732, 1, 344133, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10733, 1, 349382, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10734, 1, 355972, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10735, 1, 361375, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10736, 1, 367396, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10737, 1, 370304, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10738, 1, 372971, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10739, 1, 376365, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10740, 1, 379245, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10741, 1, 382878, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10742, 1, 383890, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10743, 1, 387707, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10744, 1, 389719, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10745, 1, 392737, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10746, 1, 395254, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10747, 1, 396611, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10748, 1, 398169, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10749, 1, 403311, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10750, 1, 408287, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10751, 1, 411925, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10752, 1, 417174, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10753, 1, 420258, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10754, 1, 420825, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10755, 1, 424449, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10756, 1, 425508, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10757, 1, 427710, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10758, 1, 429501, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10759, 1, 432415, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10760, 1, 432829, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10761, 1, 434548, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10762, 1, 437779, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10763, 1, 440639, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10764, 1, 445040, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10765, 1, 446212, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10766, 1, 447268, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10767, 1, 449865, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10768, 1, 452124, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10769, 1, 453799, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10770, 1, 455283, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10771, 1, 456303, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10772, 1, 459251, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:24', '2021-12-25 12:16:24'); +INSERT INTO `eb_shipping_templates_region` VALUES (10773, 1, 463141, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10774, 1, 465105, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10775, 1, 467562, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10776, 1, 468660, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10777, 1, 470123, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10778, 1, 472709, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10779, 1, 476148, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10780, 1, 479103, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10781, 1, 481319, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10782, 1, 483251, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10783, 1, 486129, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10784, 1, 487721, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10785, 1, 488589, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10786, 1, 488954, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10787, 1, 490106, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10788, 1, 490919, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10789, 1, 492341, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10790, 1, 494394, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10791, 1, 496438, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10792, 1, 498104, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10793, 1, 499489, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10794, 1, 501867, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10795, 1, 502828, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10796, 1, 504366, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10797, 1, 505298, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10798, 1, 506616, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10799, 1, 507255, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10800, 1, 507557, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10801, 1, 508648, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10802, 1, 510408, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10803, 1, 511463, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10804, 1, 513434, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10805, 1, 514790, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10806, 1, 516858, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10807, 1, 517933, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10808, 1, 518407, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10809, 1, 518808, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10810, 1, 519929, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10811, 1, 521166, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10812, 1, 522786, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10813, 1, 524814, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10814, 1, 525638, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10815, 1, 527443, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10816, 1, 528339, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10817, 1, 529345, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10818, 1, 529878, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10819, 1, 530060, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10820, 1, 530070, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10821, 1, 530468, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10822, 1, 533329, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10823, 1, 540700, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10824, 1, 545533, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10825, 1, 550275, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10826, 1, 551809, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10827, 1, 552358, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10828, 1, 554142, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10829, 1, 556077, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10830, 1, 560191, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10831, 1, 563242, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10832, 1, 565735, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10833, 1, 568202, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10834, 1, 570733, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10835, 1, 576992, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10836, 1, 578485, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10837, 1, 581870, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10838, 1, 585049, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10839, 1, 588538, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10840, 1, 589779, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10841, 1, 592598, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10842, 1, 594864, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10843, 1, 596525, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10844, 1, 599659, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10845, 1, 604132, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10846, 1, 605834, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10847, 1, 607029, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10848, 1, 609309, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10849, 1, 610607, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10850, 1, 614530, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10851, 1, 617670, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10852, 1, 619017, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10853, 1, 622734, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10854, 1, 624373, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10855, 1, 626181, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10856, 1, 627981, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10857, 1, 628776, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10858, 1, 629781, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10859, 1, 631276, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10860, 1, 631811, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10861, 1, 632971, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10862, 1, 634006, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:25', '2021-12-25 12:16:25'); +INSERT INTO `eb_shipping_templates_region` VALUES (10863, 1, 635219, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10864, 1, 636688, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10865, 1, 637778, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10866, 1, 638092, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10867, 1, 639368, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10868, 1, 639802, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10869, 1, 640107, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10870, 1, 640333, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10871, 1, 640675, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10872, 1, 642571, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10873, 1, 643863, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10874, 1, 644423, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10875, 1, 645076, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10876, 1, 646392, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10877, 1, 646579, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10878, 1, 649979, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10879, 1, 650575, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10880, 1, 652581, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10881, 1, 655295, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10882, 1, 657848, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10883, 1, 660643, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10884, 1, 663046, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10885, 1, 667681, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10886, 1, 669707, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10887, 1, 671120, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10888, 1, 672330, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10889, 1, 672385, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10890, 1, 672577, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10891, 1, 673463, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10892, 1, 676215, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10893, 1, 677568, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10894, 1, 678560, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10895, 1, 680191, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10896, 1, 680815, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10897, 1, 682322, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10898, 1, 684415, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10899, 1, 687916, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10900, 1, 689265, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10901, 1, 690095, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10902, 1, 691278, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10903, 1, 693040, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10904, 1, 693342, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10905, 1, 693672, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10906, 1, 694220, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10907, 1, 694478, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10908, 1, 694846, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10909, 1, 695260, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10910, 1, 695883, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10911, 1, 696252, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10912, 1, 696928, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10913, 1, 697887, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10914, 1, 698441, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10915, 1, 699583, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10916, 1, 699773, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10917, 1, 700070, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10918, 1, 700489, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10919, 1, 701559, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10920, 1, 702104, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10921, 1, 703119, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10922, 1, 704779, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10923, 1, 705145, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10924, 1, 708117, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10925, 1, 709792, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10926, 1, 711218, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10927, 1, 712893, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10928, 1, 713697, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10929, 1, 714402, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10930, 1, 717531, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10931, 1, 719868, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10932, 1, 720118, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10933, 1, 722024, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10934, 1, 725488, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10935, 1, 727730, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10936, 1, 729928, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10937, 1, 730843, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10938, 1, 734179, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10939, 1, 736051, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10940, 1, 737856, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10941, 1, 737861, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10942, 1, 739957, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10943, 1, 740510, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10944, 1, 742126, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10945, 1, 742636, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10946, 1, 743938, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10947, 1, 745674, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10948, 1, 748553, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10949, 1, 749571, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10950, 1, 749930, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:26', '2021-12-25 12:16:26'); +INSERT INTO `eb_shipping_templates_region` VALUES (10951, 1, 749957, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:27', '2021-12-25 12:16:27'); +INSERT INTO `eb_shipping_templates_region` VALUES (10952, 1, 752150, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:27', '2021-12-25 12:16:27'); +INSERT INTO `eb_shipping_templates_region` VALUES (10953, 1, 752169, '[[0,0]]', 1.00, 0.00, 1.00, 0.00, 1, '0f6dc38b1e1261c3baf2831a4a36cf4e', 1, '2021-12-25 12:16:27', '2021-12-25 12:16:27'); + +-- ---------------------------- +-- Table structure for eb_sms_record +-- ---------------------------- +DROP TABLE IF EXISTS `eb_sms_record`; +CREATE TABLE `eb_sms_record` ( + `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '短信发送记录编号', + `uid` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '短信平台账号', + `phone` char(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '接受短信的手机号', + `content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '短信内容', + `add_ip` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '添加记录ip', + `create_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `template` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '短信模板ID', + `resultcode` int(6) UNSIGNED NULL DEFAULT NULL COMMENT '状态码 100=成功,130=失败,131=空号,132=停机,133=关机,134=无状态', + `record_id` int(11) UNSIGNED NULL DEFAULT NULL COMMENT '发送记录id', + `memo` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '短信平台返回信息', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '短信发送记录表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for eb_sms_template +-- ---------------------------- +DROP TABLE IF EXISTS `eb_sms_template`; +CREATE TABLE `eb_sms_template` ( + `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id', + `temp_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '0' COMMENT '短信模板id', + `temp_type` tinyint(2) NOT NULL DEFAULT 1 COMMENT '模板类型', + `title` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '模板说明', + `type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '类型', + `temp_key` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '模板编号', + `status` tinyint(2) NOT NULL DEFAULT 1 COMMENT '状态', + `content` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '短息内容', + `create_time` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '添加时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 573 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '短信模板表' ROW_FORMAT = Compact; + +-- ---------------------------- +-- Records of eb_sms_template +-- ---------------------------- +INSERT INTO `eb_sms_template` VALUES (559, '440396', 2, '订单支付成功', '通知', '', 1, '【CRMEB】您购买的商品已支付成功,支付金额{$pay_price}元,订单号{$order_id},感谢您的光临!', '2021-12-09 19:31:13'); +INSERT INTO `eb_sms_template` VALUES (561, '440405', 2, '管理员下单提醒', '通知', '', 1, '【CRMEB】{$admin_name}管理员,您有一笔已支付的订单待处理,订单号为{$order_id}!', '2021-12-09 20:49:44'); +INSERT INTO `eb_sms_template` VALUES (562, '440406', 2, '管理员支付成功通知', '通知', '', 1, '【CRMEB】{$admin_name}管理员,您有一笔支付成功的订单待处理,订单号{$order_id}!', '2021-12-09 19:33:38'); +INSERT INTO `eb_sms_template` VALUES (563, '440407', 2, '管理员退款通知', '通知', '', 1, '【CRMEB】{$admin_name}管理员,您有一笔退款订单待处理,订单号{$order_id}!', '2021-12-09 21:07:49'); +INSERT INTO `eb_sms_template` VALUES (564, '440408', 2, '管理员确认收货通知', '通知', '', 1, '【CRMEB】{$admin_name}管理员,您有一笔订单已经确认收货,订单号{$order_id}!', '2021-12-09 20:33:31'); +INSERT INTO `eb_sms_template` VALUES (566, '440410', 2, '订单改价提醒', '通知', '', 1, '【CRMEB】您的订单{$order_id},实际支付金额已被修改为{$pay_price}。', '2021-12-09 21:12:05'); +INSERT INTO `eb_sms_template` VALUES (572, '441596', 2, '订单发货通知', '通知', '', 1, '【CRMEB】亲爱的用户{$nickname}您的商品{$store_name},订单号{$order_id}已发货,请注意查收!', '2021-12-09 20:03:34'); + +-- ---------------------------- +-- Table structure for eb_store_bargain +-- ---------------------------- +DROP TABLE IF EXISTS `eb_store_bargain`; +CREATE TABLE `eb_store_bargain` ( + `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '砍价商品ID', + `product_id` int(11) UNSIGNED NOT NULL COMMENT '关联商品ID', + `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '砍价活动名称', + `image` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '砍价活动图片', + `unit_name` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '单位名称', + `stock` int(11) UNSIGNED NULL DEFAULT NULL COMMENT '库存', + `sales` int(11) UNSIGNED NULL DEFAULT NULL COMMENT '销量', + `images` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '砍价商品轮播图', + `start_time` bigint(14) UNSIGNED NOT NULL COMMENT '砍价开启时间', + `stop_time` bigint(14) UNSIGNED NOT NULL COMMENT '砍价结束时间', + `store_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '砍价商品名称', + `price` decimal(8, 2) UNSIGNED NULL DEFAULT NULL COMMENT '砍价金额', + `min_price` decimal(8, 2) UNSIGNED NULL DEFAULT NULL COMMENT '砍价商品最低价', + `num` int(11) UNSIGNED NULL DEFAULT NULL COMMENT '购买数量限制——单个活动每个用户发起砍价次数限制', + `bargain_max_price` decimal(8, 2) UNSIGNED NULL DEFAULT NULL COMMENT '用户每次砍价的最大金额', + `bargain_min_price` decimal(8, 2) UNSIGNED NULL DEFAULT NULL COMMENT '用户每次砍价的最小金额', + `bargain_num` int(11) UNSIGNED NOT NULL DEFAULT 1 COMMENT '帮砍次数——单个商品用户可以帮砍的次数', + `status` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '砍价状态 0(到砍价时间不自动开启) 1(到砍价时间自动开启时间)', + `give_integral` int(11) NULL DEFAULT 0 COMMENT '反多少积分', + `info` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '砍价活动简介', + `cost` decimal(8, 2) UNSIGNED NULL DEFAULT NULL COMMENT '成本价', + `sort` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '排序', + `is_hot` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '是否推荐0不推荐1推荐', + `is_del` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '是否删除 0未删除 1删除', + `add_time` bigint(14) UNSIGNED NULL DEFAULT NULL COMMENT '添加时间', + `is_postage` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '是否包邮 0不包邮 1包邮', + `postage` decimal(10, 2) UNSIGNED NULL DEFAULT NULL COMMENT '邮费', + `rule` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '砍价规则', + `look` int(11) UNSIGNED NULL DEFAULT 0 COMMENT '砍价商品浏览量', + `share` int(11) UNSIGNED NULL DEFAULT 0 COMMENT '砍价商品分享量', + `temp_id` int(11) NULL DEFAULT NULL COMMENT '运费模板ID', + `weight` decimal(8, 2) NULL DEFAULT 0.00 COMMENT '重量', + `volume` decimal(8, 2) NULL DEFAULT 0.00 COMMENT '体积', + `quota` int(10) NOT NULL DEFAULT 0 COMMENT '限购总数', + `quota_show` int(10) NOT NULL DEFAULT 0 COMMENT '限量总数显示', + `people_num` int(11) NULL DEFAULT NULL COMMENT '砍价人数——需要多少人砍价成功', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '砍价表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of eb_store_bargain +-- ---------------------------- +INSERT INTO `eb_store_bargain` VALUES (1, 3, '万事利秋冬新品时尚百搭经典真丝绒厚款围巾 格物致知蓝咖', 'crmebimage/public/maintain/2021/12/25/5486775d8cad4fd8adfc254d2e93857cn0wu5hq8f4.jpg', '件', 78, 0, '[\"crmebimage/public/maintain/2021/12/25/5486775d8cad4fd8adfc254d2e93857cn0wu5hq8f4.jpg\"]', 1640361600000, 1646063999999, '万事利秋冬新品时尚百搭经典真丝绒厚款围巾 格物致知蓝咖', 374.00, 324.00, 2, NULL, NULL, 2, 1, 0, NULL, 89.00, 0, 0, 0, 1640409149614, 1, NULL, NULL, 0, 0, 1, 0.00, 0.00, 66, 66, 2); +INSERT INTO `eb_store_bargain` VALUES (2, 1, 'LOFREE洛斐 奶茶无线蓝牙键鼠套装', 'crmebimage/public/maintain/2021/12/25/63969148b6c4447d918124fd810c1da5m2h9aiylly.jpg', '个', 345, 0, '[\"crmebimage/public/maintain/2021/12/25/63969148b6c4447d918124fd810c1da5m2h9aiylly.jpg\"]', 1640361600000, 1646063999999, 'LOFREE洛斐 奶茶无线蓝牙键鼠套装', 268.00, 226.00, 1, NULL, NULL, 2, 1, 0, NULL, 40.00, 0, 0, 0, 1640409242804, 1, NULL, NULL, 0, 0, 1, 0.00, 0.00, 69, 69, 2); + +-- ---------------------------- +-- Table structure for eb_store_bargain_user +-- ---------------------------- +DROP TABLE IF EXISTS `eb_store_bargain_user`; +CREATE TABLE `eb_store_bargain_user` ( + `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '用户参与砍价表ID', + `uid` int(11) UNSIGNED NULL DEFAULT NULL COMMENT '用户ID', + `bargain_id` int(11) UNSIGNED NULL DEFAULT NULL COMMENT '砍价商品id', + `bargain_price_min` decimal(8, 2) UNSIGNED NULL DEFAULT NULL COMMENT '砍价的最低价', + `bargain_price` decimal(8, 2) NULL DEFAULT NULL COMMENT '砍价金额', + `price` decimal(8, 2) UNSIGNED NULL DEFAULT NULL COMMENT '砍掉的价格', + `status` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '状态 1参与中 2 活动结束参与失败 3活动结束参与成功', + `add_time` bigint(14) UNSIGNED NULL DEFAULT NULL COMMENT '参与时间', + `is_del` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否取消', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户参与砍价表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for eb_store_bargain_user_help +-- ---------------------------- +DROP TABLE IF EXISTS `eb_store_bargain_user_help`; +CREATE TABLE `eb_store_bargain_user_help` ( + `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '砍价用户帮助表ID', + `uid` int(11) UNSIGNED NULL DEFAULT NULL COMMENT '帮助的用户id', + `bargain_id` int(11) UNSIGNED NULL DEFAULT NULL COMMENT '砍价商品ID', + `bargain_user_id` int(11) UNSIGNED NULL DEFAULT NULL COMMENT '用户参与砍价表id', + `price` decimal(8, 2) UNSIGNED NULL DEFAULT NULL COMMENT '帮助砍价多少金额', + `add_time` bigint(14) UNSIGNED NULL DEFAULT NULL COMMENT '添加时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '砍价用户帮助表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for eb_store_cart +-- ---------------------------- +DROP TABLE IF EXISTS `eb_store_cart`; +CREATE TABLE `eb_store_cart` ( + `id` bigint(8) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '购物车表ID', + `uid` int(10) UNSIGNED NOT NULL COMMENT '用户ID', + `type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '类型', + `product_id` int(10) UNSIGNED NOT NULL COMMENT '商品ID', + `product_attr_unique` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '商品属性', + `cart_num` smallint(5) UNSIGNED NOT NULL DEFAULT 0 COMMENT '商品数量', + `is_new` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否为立即购买', + `combination_id` int(11) UNSIGNED NULL DEFAULT 0 COMMENT '拼团id', + `seckill_id` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '秒杀商品ID', + `bargain_id` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '砍价id', + `create_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '添加时间', + `update_time` timestamp(0) NULL DEFAULT NULL COMMENT 'g', + `status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '购物车状态', + PRIMARY KEY (`id`) USING BTREE, + INDEX `user_id`(`uid`) USING BTREE, + INDEX `goods_id`(`product_id`) USING BTREE, + INDEX `uid`(`uid`) USING BTREE, + INDEX `uid_2`(`uid`) USING BTREE, + INDEX `uid_3`(`uid`, `is_new`) USING BTREE, + INDEX `type`(`type`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '购物车表' ROW_FORMAT = Compact; + +-- ---------------------------- +-- Table structure for eb_store_combination +-- ---------------------------- +DROP TABLE IF EXISTS `eb_store_combination`; +CREATE TABLE `eb_store_combination` ( + `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '拼团商品ID', + `product_id` int(10) UNSIGNED NOT NULL COMMENT '商品id', + `mer_id` int(10) UNSIGNED NULL DEFAULT 0 COMMENT '商户id', + `image` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '推荐图', + `images` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '轮播图', + `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '活动标题', + `attr` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '活动属性', + `people` int(2) UNSIGNED NOT NULL COMMENT '参团人数', + `info` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '简介', + `price` decimal(10, 2) UNSIGNED NOT NULL COMMENT '价格', + `sort` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '排序', + `sales` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '销量', + `stock` int(10) UNSIGNED NOT NULL COMMENT '库存', + `add_time` bigint(14) NOT NULL COMMENT '添加时间', + `is_host` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '推荐', + `is_show` tinyint(1) UNSIGNED NOT NULL COMMENT '商品状态', + `is_del` tinyint(1) UNSIGNED NOT NULL DEFAULT 0, + `combination` tinyint(1) UNSIGNED NULL DEFAULT 1, + `mer_use` tinyint(1) UNSIGNED NULL DEFAULT NULL COMMENT '商户是否可用1可用0不可用', + `is_postage` tinyint(1) UNSIGNED NULL DEFAULT NULL COMMENT '是否包邮1是0否', + `postage` decimal(10, 2) UNSIGNED NULL DEFAULT NULL COMMENT '邮费', + `start_time` bigint(14) UNSIGNED NOT NULL COMMENT '拼团开始时间', + `stop_time` bigint(14) UNSIGNED NOT NULL COMMENT '拼团结束时间', + `effective_time` int(11) NOT NULL DEFAULT 0 COMMENT '拼团订单有效时间(小时)', + `cost` decimal(10, 2) UNSIGNED NOT NULL DEFAULT 0.00 COMMENT '拼图商品成本', + `browse` int(11) NULL DEFAULT 0 COMMENT '浏览量', + `unit_name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '单位名', + `temp_id` int(11) NOT NULL COMMENT '运费模板ID', + `weight` decimal(8, 2) NULL DEFAULT 0.00 COMMENT '重量', + `volume` decimal(8, 2) NULL DEFAULT 0.00 COMMENT '体积', + `num` int(11) NULL DEFAULT NULL COMMENT '单次购买数量', + `quota` int(10) NOT NULL DEFAULT 0 COMMENT '限购总数', + `quota_show` int(10) NOT NULL DEFAULT 0 COMMENT '限量总数显示', + `ot_price` decimal(10, 2) NOT NULL COMMENT '原价', + `once_num` int(11) NOT NULL DEFAULT 0 COMMENT '每个订单可购买数量', + `virtual_ration` int(11) NOT NULL DEFAULT 100 COMMENT '虚拟成团百分比', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '拼团商品表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of eb_store_combination +-- ---------------------------- +INSERT INTO `eb_store_combination` VALUES (1, 7, 0, 'crmebimage/public/maintain/2021/12/25/37382cca048b4011bdbacd3cbbe0814daw1o5x0tco.jpg', '[\"crmebimage/public/maintain/2021/12/25/37382cca048b4011bdbacd3cbbe0814daw1o5x0tco.jpg\"]', '车载小鹿首饰架摆件鹿角树形耳钉首饰展示架耳环架手链饰品收纳首饰挂件 白色', NULL, 2, '车载小鹿首饰架摆件鹿角树形耳钉首饰展示架耳环架手链饰品收纳首饰挂件 白色', 13.00, 0, 0, 666, 1640409319713, 0, 0, 1, 1, NULL, NULL, NULL, 1640361600000, 1646063999999, 1, 5.00, 0, '个', 1, 0.00, 0.00, 2, 66, 66, 18.00, 1, 0); +INSERT INTO `eb_store_combination` VALUES (2, 6, 0, 'crmebimage/public/maintain/2021/12/25/fef1aee22a04466d93693f5791d44bfd2rsm469mcr.jpg', '[\"crmebimage/public/maintain/2021/12/25/fef1aee22a04466d93693f5791d44bfd2rsm469mcr.jpg\"]', '第一江南 西湖龙井茶叶礼盒 明前特级龙井绿茶【至臻献礼200g】礼盒装', NULL, 2, '第一江南 西湖龙井茶叶礼盒 明前特级龙井绿茶【至臻献礼200g】礼盒装', 1288.00, 0, 0, 999, 1640409356986, 0, 0, 1, 1, NULL, NULL, NULL, 1640361600000, 1646063999999, 1, 300.00, 0, '件', 1, 0.00, 0.00, 1, 99, 99, 1688.00, 1, 0); +INSERT INTO `eb_store_combination` VALUES (3, 7, 0, 'crmebimage/public/maintain/2021/12/25/37382cca048b4011bdbacd3cbbe0814daw1o5x0tco.jpg', '[\"crmebimage/public/maintain/2021/12/25/37382cca048b4011bdbacd3cbbe0814daw1o5x0tco.jpg\"]', '车载小鹿首饰架摆件鹿角树形耳钉首饰展示架耳环架手链饰品收纳首饰挂件 白色', NULL, 2, '车载小鹿首饰架摆件鹿角树形耳钉首饰展示架耳环架手链饰品收纳首饰挂件 白色', 8.00, 0, 0, 1533, 1640749674852, 0, 1, 0, 1, NULL, NULL, NULL, 1640707200000, 1643644799999, 1, 5.00, 0, '个', 1, 0.00, 0.00, 1, 151, 151, 18.00, 1, 0); +INSERT INTO `eb_store_combination` VALUES (4, 3, 0, 'crmebimage/public/maintain/2021/12/25/5486775d8cad4fd8adfc254d2e93857cn0wu5hq8f4.jpg', '[\"crmebimage/public/maintain/2021/12/25/5486775d8cad4fd8adfc254d2e93857cn0wu5hq8f4.jpg\"]', '万事利秋冬新品时尚百搭经典真丝绒厚款围巾 格物致知蓝咖', NULL, 2, '万事利秋冬新品时尚百搭经典真丝绒厚款围巾 格物致知蓝咖', 324.00, 0, 1, 1865, 1640749726595, 0, 1, 0, 1, NULL, NULL, NULL, 1640707200000, 1643644799999, 1, 100.00, 0, '件', 1, 0.00, 0.00, 1, 183, 184, 412.00, 1, 0); + +-- ---------------------------- +-- Table structure for eb_store_coupon +-- ---------------------------- +DROP TABLE IF EXISTS `eb_store_coupon`; +CREATE TABLE `eb_store_coupon` ( + `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '优惠券表ID', + `name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '优惠券名称', + `money` decimal(8, 2) UNSIGNED NOT NULL DEFAULT 0.00 COMMENT '兑换的优惠券面值', + `is_limited` tinyint(1) NULL DEFAULT 0 COMMENT '是否限量, 默认0 不限量, 1限量', + `total` int(11) NOT NULL DEFAULT 0 COMMENT '发放总数', + `last_total` int(11) NULL DEFAULT 0 COMMENT '剩余数量', + `use_type` tinyint(2) NOT NULL DEFAULT 1 COMMENT '使用类型 1 全场通用, 2 商品券, 3 品类券', + `primary_key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '所属商品id / 分类id', + `min_price` decimal(8, 2) UNSIGNED NOT NULL DEFAULT 0.00 COMMENT '最低消费,0代表不限制', + `receive_start_time` timestamp(0) NOT NULL COMMENT '可领取开始时间', + `receive_end_time` timestamp(0) NULL DEFAULT NULL COMMENT '可领取结束时间', + `is_fixed_time` tinyint(1) NULL DEFAULT 0 COMMENT '是否固定使用时间, 默认0 否, 1是', + `use_start_time` timestamp(0) NULL DEFAULT NULL COMMENT '可使用时间范围 开始时间', + `use_end_time` timestamp(0) NULL DEFAULT NULL COMMENT '可使用时间范围 结束时间', + `day` int(4) NULL DEFAULT 0 COMMENT '天数', + `type` tinyint(2) NOT NULL DEFAULT 1 COMMENT '优惠券类型 1 手动领取, 2 新人券, 3 赠送券', + `sort` int(11) UNSIGNED NOT NULL DEFAULT 1 COMMENT '排序', + `status` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '状态(0:关闭,1:开启)', + `is_del` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '是否删除 状态(0:否,1:是)', + `create_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE, + INDEX `state`(`status`) USING BTREE, + INDEX `is_del`(`is_del`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '优惠券表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of eb_store_coupon +-- ---------------------------- +INSERT INTO `eb_store_coupon` VALUES (1, '冬天快乐', 5.00, 1, 20, 16, 1, '', 0.00, '2021-12-25 00:00:00', '2022-01-07 00:00:00', 0, '2021-12-30 17:19:57', '2022-01-06 17:19:57', 7, 1, 0, 1, 0, '2021-12-25 14:35:42', '2021-12-25 14:35:42'); +INSERT INTO `eb_store_coupon` VALUES (2, '圣诞快乐', 10.00, 1, 30, 26, 1, '', 0.00, '2021-12-25 00:00:00', '2022-01-12 00:00:00', 0, '2021-12-30 17:19:44', '2022-01-19 17:19:44', 20, 1, 0, 1, 0, '2021-12-25 14:36:30', '2021-12-30 16:56:36'); + +-- ---------------------------- +-- Table structure for eb_store_coupon_user +-- ---------------------------- +DROP TABLE IF EXISTS `eb_store_coupon_user`; +CREATE TABLE `eb_store_coupon_user` ( + `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id', + `coupon_id` int(10) NOT NULL COMMENT '优惠券发布id', + `cid` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '兑换的项目id', + `uid` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '领取人id', + `name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '优惠券名称', + `money` decimal(8, 2) UNSIGNED NOT NULL DEFAULT 0.00 COMMENT '优惠券的面值', + `min_price` decimal(8, 2) UNSIGNED NOT NULL DEFAULT 0.00 COMMENT '最低消费多少金额可用优惠券', + `type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT 'send' COMMENT '获取方式,send后台发放, 用户领取 get', + `status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '状态(0:未使用,1:已使用, 2:已失效)', + `create_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间', + `start_time` timestamp(0) NULL DEFAULT NULL COMMENT '开始使用时间', + `end_time` timestamp(0) NULL DEFAULT NULL COMMENT '过期时间', + `use_time` timestamp(0) NULL DEFAULT NULL COMMENT '使用时间', + `use_type` tinyint(1) NULL DEFAULT 1 COMMENT '使用类型 1 全场通用, 2 商品券, 3 品类券', + `primary_key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '所属商品id / 分类id', + PRIMARY KEY (`id`) USING BTREE, + INDEX `cid`(`cid`) USING BTREE, + INDEX `uid`(`uid`) USING BTREE, + INDEX `end_time`(`end_time`) USING BTREE, + INDEX `status`(`status`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '优惠券记录表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for eb_store_order +-- ---------------------------- +DROP TABLE IF EXISTS `eb_store_order`; +CREATE TABLE `eb_store_order` ( + `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '订单ID', + `order_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '订单号', + `uid` int(11) UNSIGNED NOT NULL COMMENT '用户id', + `real_name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户姓名', + `user_phone` varchar(18) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户电话', + `user_address` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '详细地址', + `freight_price` decimal(8, 2) NOT NULL DEFAULT 0.00 COMMENT '运费金额', + `total_num` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '订单商品总数', + `total_price` decimal(8, 2) UNSIGNED NOT NULL DEFAULT 0.00 COMMENT '订单总价', + `total_postage` decimal(8, 2) UNSIGNED NOT NULL DEFAULT 0.00 COMMENT '邮费', + `pay_price` decimal(8, 2) UNSIGNED NOT NULL DEFAULT 0.00 COMMENT '实际支付金额', + `pay_postage` decimal(8, 2) UNSIGNED NOT NULL DEFAULT 0.00 COMMENT '支付邮费', + `deduction_price` decimal(8, 2) UNSIGNED NOT NULL DEFAULT 0.00 COMMENT '抵扣金额', + `coupon_id` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '优惠券id', + `coupon_price` decimal(8, 2) UNSIGNED NOT NULL DEFAULT 0.00 COMMENT '优惠券金额', + `paid` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '支付状态', + `pay_time` timestamp(0) NULL DEFAULT NULL COMMENT '支付时间', + `pay_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '支付方式', + `create_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '订单状态(0:待发货;1:待收货;2:已收货,待评价;3:已完成;)', + `refund_status` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '0 未退款 1 申请中 2 已退款 3 退款中', + `refund_reason_wap_img` varchar(5000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '退款图片', + `refund_reason_wap_explain` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '退款用户说明', + `refund_reason_wap` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '前台退款原因', + `refund_reason` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '不退款的理由', + `refund_reason_time` timestamp(0) NULL DEFAULT NULL COMMENT '退款时间', + `refund_price` decimal(8, 2) UNSIGNED NOT NULL DEFAULT 0.00 COMMENT '退款金额', + `delivery_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '快递名称/送货人姓名', + `delivery_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '发货类型', + `delivery_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '快递单号/手机号', + `gain_integral` int(11) NULL DEFAULT 0 COMMENT '消费赚取积分', + `use_integral` int(11) NULL DEFAULT 0 COMMENT '使用积分', + `back_integral` int(11) NULL DEFAULT 0 COMMENT '给用户退了多少积分', + `mark` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '备注', + `is_del` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '是否删除', + `remark` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '管理员备注', + `mer_id` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '商户ID', + `is_mer_check` tinyint(3) UNSIGNED NOT NULL DEFAULT 0, + `combination_id` int(11) UNSIGNED NULL DEFAULT 0 COMMENT '拼团商品id0一般商品', + `pink_id` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '拼团id 0没有拼团', + `cost` decimal(8, 2) UNSIGNED NOT NULL COMMENT '成本价', + `seckill_id` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '秒杀商品ID', + `bargain_id` int(11) UNSIGNED NULL DEFAULT 0 COMMENT '砍价id', + `verify_code` varchar(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '核销码', + `store_id` int(11) NOT NULL DEFAULT 0 COMMENT '门店id', + `shipping_type` tinyint(1) NOT NULL DEFAULT 1 COMMENT '配送方式 1=快递 ,2=门店自提', + `clerk_id` int(11) NOT NULL DEFAULT 0 COMMENT '店员id/核销员id', + `is_channel` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '支付渠道(0微信公众号1微信小程序2余额)', + `is_remind` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '消息提醒', + `is_system_del` tinyint(1) NULL DEFAULT 0 COMMENT '后台是否删除', + `update_time` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间', + `delivery_code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '快递公司简称', + `bargain_user_id` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '用户拼团活动id 0没有', + `type` int(3) NOT NULL DEFAULT 0 COMMENT '订单类型:0-普通订单,1-视频号订单', + `pro_total_price` decimal(8, 2) UNSIGNED NOT NULL DEFAULT 0.00 COMMENT '商品总价', + `before_pay_price` decimal(8, 2) UNSIGNED NOT NULL DEFAULT 0.00 COMMENT '改价前支付金额', + `is_alter_price` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否改价,0-否,1-是', + `out_trade_no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `order_id_2`(`order_id`, `uid`) USING BTREE, + INDEX `uid`(`uid`) USING BTREE, + INDEX `add_time`(`create_time`) USING BTREE, + INDEX `pay_price`(`pay_price`) USING BTREE, + INDEX `paid`(`paid`) USING BTREE, + INDEX `pay_time`(`pay_time`) USING BTREE, + INDEX `pay_type`(`pay_type`) USING BTREE, + INDEX `status`(`status`) USING BTREE, + INDEX `is_del`(`is_del`) USING BTREE, + INDEX `coupon_id`(`coupon_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '订单表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for eb_store_order_info +-- ---------------------------- +DROP TABLE IF EXISTS `eb_store_order_info`; +CREATE TABLE `eb_store_order_info` ( + `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', + `order_id` int(11) UNSIGNED NOT NULL COMMENT '订单id', + `product_id` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '商品ID', + `info` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '购买东西的详细信息', + `unique` char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '唯一id', + `create_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', + `order_no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '订单号', + `product_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '商品名称', + `attr_value_id` int(11) UNSIGNED NULL DEFAULT NULL COMMENT '规格属性值id', + `image` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '商品图片', + `sku` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '商品sku', + `price` decimal(8, 2) UNSIGNED NOT NULL COMMENT '商品价格', + `pay_num` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '购买数量', + `weight` decimal(8, 2) UNSIGNED NOT NULL COMMENT '重量', + `volume` decimal(8, 2) UNSIGNED NOT NULL COMMENT '体积', + `give_integral` int(11) UNSIGNED NOT NULL COMMENT '赠送积分', + `is_reply` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否评价,0-未评价,1-已评价', + `is_sub` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否单独分佣,0-否,1-是', + `vip_price` decimal(8, 2) UNSIGNED NOT NULL COMMENT '会员价', + `product_type` int(2) NOT NULL DEFAULT 0 COMMENT '商品类型:0-普通,1-秒杀,2-砍价,3-拼团,4-视频号', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `oid`(`order_id`, `unique`) USING BTREE, + INDEX `product_id`(`product_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '订单购物详情表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for eb_store_order_status +-- ---------------------------- +DROP TABLE IF EXISTS `eb_store_order_status`; +CREATE TABLE `eb_store_order_status` ( + `oid` int(10) UNSIGNED NOT NULL COMMENT '订单id', + `change_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '操作类型', + `change_message` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '操作备注', + `create_time` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '操作时间', + INDEX `oid`(`oid`) USING BTREE, + INDEX `change_type`(`change_type`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '订单操作记录表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for eb_store_pink +-- ---------------------------- +DROP TABLE IF EXISTS `eb_store_pink`; +CREATE TABLE `eb_store_pink` ( + `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '拼团ID', + `uid` int(10) UNSIGNED NOT NULL COMMENT '用户id', + `order_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '订单id 生成', + `order_id_key` int(10) UNSIGNED NOT NULL COMMENT '订单id 数据库', + `total_num` int(10) UNSIGNED NOT NULL COMMENT '购买商品个数', + `total_price` decimal(10, 2) UNSIGNED NOT NULL COMMENT '购买总金额', + `cid` int(10) UNSIGNED NOT NULL COMMENT '拼团商品id', + `pid` int(10) UNSIGNED NOT NULL COMMENT '商品id', + `people` int(10) UNSIGNED NOT NULL COMMENT '拼图总人数', + `price` decimal(10, 2) UNSIGNED NOT NULL COMMENT '拼团商品单价', + `add_time` bigint(14) NOT NULL COMMENT '开始时间', + `stop_time` bigint(14) NOT NULL COMMENT '结束时间', + `k_id` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '团长id 0为团长', + `is_tpl` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '是否发送模板消息0未发送1已发送', + `is_refund` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '是否退款 0未退款 1已退款', + `status` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '状态1进行中2已完成3未完成', + `is_virtual` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否虚拟拼团', + `nickname` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '用户昵称', + `avatar` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '用户头像', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '拼团表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for eb_store_product +-- ---------------------------- +DROP TABLE IF EXISTS `eb_store_product`; +CREATE TABLE `eb_store_product` ( + `id` mediumint(11) NOT NULL AUTO_INCREMENT COMMENT '商品id', + `mer_id` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '商户Id(0为总后台管理员创建,不为0的时候是商户后台创建)', + `image` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '商品图片', + `slider_image` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '轮播图', + `store_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '商品名称', + `store_info` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '商品简介', + `keyword` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '关键字', + `bar_code` varchar(15) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '商品条码(一维码)', + `cate_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '分类id', + `price` decimal(8, 2) UNSIGNED NOT NULL DEFAULT 0.00 COMMENT '商品价格', + `vip_price` decimal(8, 2) UNSIGNED NOT NULL DEFAULT 0.00 COMMENT '会员价格', + `ot_price` decimal(8, 2) UNSIGNED NOT NULL DEFAULT 0.00 COMMENT '市场价', + `postage` decimal(8, 2) UNSIGNED NOT NULL DEFAULT 0.00 COMMENT '邮费', + `unit_name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '单位名', + `sort` smallint(11) NOT NULL DEFAULT 0 COMMENT '排序', + `sales` mediumint(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '销量', + `stock` mediumint(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '库存', + `is_show` tinyint(1) NOT NULL DEFAULT 1 COMMENT '状态(0:未上架,1:上架)', + `is_hot` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否热卖', + `is_benefit` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否优惠', + `is_best` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否精品', + `is_new` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否新品', + `add_time` int(11) UNSIGNED NOT NULL COMMENT '添加时间', + `is_postage` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '是否包邮', + `is_del` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '是否删除', + `mer_use` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '商户是否代理 0不可代理1可代理', + `give_integral` int(11) NULL DEFAULT 0 COMMENT '获得积分', + `cost` decimal(8, 2) UNSIGNED NOT NULL DEFAULT 0.00 COMMENT '成本价', + `is_seckill` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '秒杀状态 0 未开启 1已开启', + `is_bargain` tinyint(1) UNSIGNED NULL DEFAULT NULL COMMENT '砍价状态 0未开启 1开启', + `is_good` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否优品推荐', + `is_sub` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否单独分佣', + `ficti` mediumint(11) NULL DEFAULT 100 COMMENT '虚拟销量', + `browse` int(11) NULL DEFAULT 0 COMMENT '浏览量', + `code_path` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '商品二维码地址(用户小程序海报)', + `soure_link` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '淘宝京东1688类型', + `video_link` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '主图视频链接', + `temp_id` int(11) NOT NULL DEFAULT 1 COMMENT '运费模板ID', + `spec_type` tinyint(1) NOT NULL DEFAULT 0 COMMENT '规格 0单 1多', + `activity` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '活动显示排序0=默认, 1=秒杀,2=砍价,3=拼团', + `flat_pattern` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '展示图', + `is_recycle` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否回收站', + PRIMARY KEY (`id`) USING BTREE, + INDEX `cate_id`(`cate_id`) USING BTREE, + INDEX `is_hot`(`is_hot`) USING BTREE, + INDEX `is_benefit`(`is_benefit`) USING BTREE, + INDEX `is_best`(`is_best`) USING BTREE, + INDEX `is_new`(`is_new`) USING BTREE, + INDEX `toggle_on_sale, is_del`(`is_del`) USING BTREE, + INDEX `price`(`price`) USING BTREE, + INDEX `is_show`(`is_show`) USING BTREE, + INDEX `sort`(`sort`) USING BTREE, + INDEX `sales`(`sales`) USING BTREE, + INDEX `add_time`(`add_time`) USING BTREE, + INDEX `is_postage`(`is_postage`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 9 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '商品表' ROW_FORMAT = Compact; + +-- ---------------------------- +-- Records of eb_store_product +-- ---------------------------- +INSERT INTO `eb_store_product` VALUES (1, 0, 'crmebimage/public/maintain/2021/12/25/63969148b6c4447d918124fd810c1da5m2h9aiylly.jpg', '[\"crmebimage/public/maintain/2021/12/25/63969148b6c4447d918124fd810c1da5m2h9aiylly.jpg\"]', 'LOFREE洛斐 奶茶无线蓝牙键鼠套装', 'LOFREE洛斐 奶茶无线蓝牙键鼠套装', '无线蓝牙 键鼠 套装', '', '246,248,258,488', 268.00, 0.00, 188.00, 0.00, '个', 0, 0, 345, 1, 1, 1, 1, 1, 1640407859, 0, 0, 0, 0, 40.00, 0, NULL, 0, 0, 66, 2, '', '', '', 1, 0, '0,1,2,3', '', 0); +INSERT INTO `eb_store_product` VALUES (2, 0, 'crmebimage/public/maintain/2021/12/25/49ae68efce4848a185a8ddcb4e5c95a2zl2dlwi77v.jpg', '[\"crmebimage/public/maintain/2021/12/25/49ae68efce4848a185a8ddcb4e5c95a2zl2dlwi77v.jpg\"]', '欧普照明(OPPLE)LED卧室床头壁灯 温馨浪漫美式风格墙壁灯', '欧普照明(OPPLE)LED卧室床头壁灯 温馨浪漫美式风格墙壁灯', '温馨浪漫美式风格墙壁灯', '', '276', 99.00, 0.00, 129.00, 0.00, '件', 0, 0, 88, 1, 0, 0, 1, 1, 1640408014, 0, 0, 0, 0, 20.00, 0, NULL, 0, 0, 88, 0, '', '', '', 1, 0, '0,1,2,3', '', 0); +INSERT INTO `eb_store_product` VALUES (3, 0, 'crmebimage/public/maintain/2021/12/25/5486775d8cad4fd8adfc254d2e93857cn0wu5hq8f4.jpg', '[\"crmebimage/public/maintain/2021/12/25/5486775d8cad4fd8adfc254d2e93857cn0wu5hq8f4.jpg\"]', '万事利秋冬新品时尚百搭经典真丝绒厚款围巾 格物致知蓝咖', '万事利秋冬新品时尚百搭经典真丝绒厚款围巾 格物致知蓝咖', '万事利秋冬新品时尚百搭经典真丝绒厚款围巾 格物致知蓝咖', '', '246,248,258,488,289', 374.00, 0.00, 412.00, 0.00, '件', 0, 1, 1865, 1, 1, 1, 1, 1, 1640408162, 0, 0, 0, 0, 100.00, 0, NULL, 0, 0, 68, 3, '', '', '', 1, 1, '0,1,2,3', '', 0); +INSERT INTO `eb_store_product` VALUES (4, 0, 'crmebimage/public/maintain/2021/12/25/3ed152917e3f4f7faa9414050b6cab49vuadulntb8.jpg', '[\"crmebimage/public/maintain/2021/12/25/3ed152917e3f4f7faa9414050b6cab49vuadulntb8.jpg\"]', 'CAMILA&KORALI品牌包包女包斜挎单肩小包女式', 'CAMILA&KORALI品牌包包女包斜挎单肩小包女式', 'CAMILA&KORALI品牌包包女包斜挎单肩小包女式', '', '534,289,290,300,302', 116.00, 0.00, 156.00, 0.00, '件', 0, 0, 289, 1, 1, 1, 1, 1, 1640408296, 0, 0, 0, 0, 26.00, 0, NULL, 0, 0, 86, 1, '', '', '', 1, 0, '0,1,2,3', '', 0); +INSERT INTO `eb_store_product` VALUES (5, 0, 'crmebimage/public/maintain/2021/12/25/f65ef5469f3a479497a710fb288d115cvl5imkvpo8.jpg', '[\"crmebimage/public/maintain/2021/12/25/f65ef5469f3a479497a710fb288d115cvl5imkvpo8.jpg\"]', 'LAORENTOU包包女包牛皮单肩女士包包奢侈品蓝色【礼盒装】', 'LAORENTOU包包女包牛皮单肩女士包包奢侈品蓝色【礼盒装】', 'LAORENTOU包包女包牛皮单肩女士包包奢侈品蓝色【礼盒装】', '', '246,248,258,488,288,289,300,302', 115.00, 0.00, 145.00, 0.00, '件', 0, 1, 998, 1, 1, 1, 1, 1, 1640408403, 0, 0, 0, 0, 15.00, 0, NULL, 0, 0, 99, 0, '', '', '', 1, 0, '0,1,2,3', '', 0); +INSERT INTO `eb_store_product` VALUES (6, 0, 'crmebimage/public/maintain/2021/12/25/fef1aee22a04466d93693f5791d44bfd2rsm469mcr.jpg', '[\"crmebimage/public/maintain/2021/12/25/fef1aee22a04466d93693f5791d44bfd2rsm469mcr.jpg\"]', '第一江南 西湖龙井茶叶礼盒 明前特级龙井绿茶【至臻献礼200g】礼盒装', '第一江南 西湖龙井茶叶礼盒 明前特级龙井绿茶【至臻献礼200g】礼盒装', '第一江南 西湖龙井茶叶礼盒 明前特级龙井绿茶【至臻献礼200g】礼盒装', '', '246,248,258,488', 1588.00, 0.00, 1688.00, 0.00, '件', 0, 0, 999, 1, 1, 1, 1, 1, 1640408500, 0, 0, 0, 0, 300.00, 0, NULL, 0, 0, 666, 15, '', '', '', 1, 0, '0,1,2,3', '', 0); +INSERT INTO `eb_store_product` VALUES (7, 0, 'crmebimage/public/maintain/2021/12/25/37382cca048b4011bdbacd3cbbe0814daw1o5x0tco.jpg', '[\"crmebimage/public/maintain/2021/12/25/37382cca048b4011bdbacd3cbbe0814daw1o5x0tco.jpg\"]', '车载小鹿首饰架摆件鹿角树形耳钉首饰展示架耳环架手链饰品收纳首饰挂件 白色', '车载小鹿首饰架摆件鹿角树形耳钉首饰展示架耳环架手链饰品收纳首饰挂件 白色', '车载小鹿首饰架摆件鹿角树形耳钉首饰展示架耳环架手链饰品收纳首饰挂件 白色', '', '534,290,300,302', 13.00, 0.00, 18.00, 0.00, '个', 0, 0, 1533, 1, 1, 1, 1, 1, 1640408617, 0, 0, 0, 0, 5.00, 0, NULL, 0, 0, 46, 22, '', '', '', 1, 1, '0,1,2,3', '', 0); +INSERT INTO `eb_store_product` VALUES (8, 0, 'crmebimage/public/maintain/2021/12/25/7a6475bba07c47bb98e5db0e0d21c8ebq5sw2kijlc.jpg', '[\"crmebimage/public/maintain/2021/12/25/7a6475bba07c47bb98e5db0e0d21c8ebq5sw2kijlc.jpg\"]', '兰蔻(LANCOME)口红196 全新菁纯丝绒雾面唇膏 化妆品礼盒', '兰蔻(LANCOME)口红196 全新菁纯丝绒雾面唇膏 化妆品礼盒', '兰蔻(LANCOME)口红196 全新菁纯丝绒雾面唇膏 化妆品礼盒', '', '246,248,258,488,291,292,293,294,295,296', 787.00, 0.00, 197.00, 0.00, '件', 0, 0, 689, 1, 1, 1, 1, 1, 1640408735, 0, 0, 0, 0, 212.00, 0, NULL, 0, 0, 66, 3, '', '', '', 1, 0, '0,1,2,3', '', 0); + +-- ---------------------------- +-- Table structure for eb_store_product_attr +-- ---------------------------- +DROP TABLE IF EXISTS `eb_store_product_attr`; +CREATE TABLE `eb_store_product_attr` ( + `id` mediumint(11) NOT NULL AUTO_INCREMENT COMMENT '主键', + `product_id` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '商品ID', + `attr_name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '属性名', + `attr_values` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '属性值', + `type` tinyint(1) NULL DEFAULT 0 COMMENT '活动类型 0=商品,1=秒杀,2=砍价,3=拼团', + `is_del` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除,0-否,1-是', + PRIMARY KEY (`id`) USING BTREE, + INDEX `store_id`(`product_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 25 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '商品属性表' ROW_FORMAT = Compact; + +-- ---------------------------- +-- Records of eb_store_product_attr +-- ---------------------------- +INSERT INTO `eb_store_product_attr` VALUES (1, 1, '规格', '默认', 0, 0); +INSERT INTO `eb_store_product_attr` VALUES (2, 2, '规格', '默认', 0, 0); +INSERT INTO `eb_store_product_attr` VALUES (3, 3, '规格', '默认', 0, 1); +INSERT INTO `eb_store_product_attr` VALUES (4, 4, '规格', '默认', 0, 0); +INSERT INTO `eb_store_product_attr` VALUES (5, 5, '规格', '默认', 0, 0); +INSERT INTO `eb_store_product_attr` VALUES (6, 6, '规格', '默认', 0, 0); +INSERT INTO `eb_store_product_attr` VALUES (7, 7, '规格', '默认', 0, 1); +INSERT INTO `eb_store_product_attr` VALUES (8, 8, '规格', '默认', 0, 0); +INSERT INTO `eb_store_product_attr` VALUES (9, 1, '规格', '默认', 1, 0); +INSERT INTO `eb_store_product_attr` VALUES (10, 2, '规格', '默认', 1, 0); +INSERT INTO `eb_store_product_attr` VALUES (11, 1, '规格', '默认', 2, 0); +INSERT INTO `eb_store_product_attr` VALUES (12, 2, '规格', '默认', 2, 0); +INSERT INTO `eb_store_product_attr` VALUES (13, 1, '规格', '默认', 3, 0); +INSERT INTO `eb_store_product_attr` VALUES (14, 2, '规格', '默认', 3, 0); +INSERT INTO `eb_store_product_attr` VALUES (15, 7, '颜色', '白色,黑色,粉色,红色', 0, 0); +INSERT INTO `eb_store_product_attr` VALUES (16, 3, '颜色', '格物致知蓝咖,格物致知红色', 0, 0); +INSERT INTO `eb_store_product_attr` VALUES (17, 3, '尺码', '200*27cm,240*30', 0, 0); +INSERT INTO `eb_store_product_attr` VALUES (18, 3, '颜色', '格物致知蓝咖,格物致知红色', 1, 0); +INSERT INTO `eb_store_product_attr` VALUES (19, 3, '尺码', '200*27cm,240*30', 1, 0); +INSERT INTO `eb_store_product_attr` VALUES (20, 4, '颜色', '格物致知蓝咖,格物致知红色', 1, 0); +INSERT INTO `eb_store_product_attr` VALUES (21, 4, '尺码', '200*27cm,240*30', 1, 0); +INSERT INTO `eb_store_product_attr` VALUES (22, 3, '颜色', '白色,黑色,粉色,红色', 3, 0); +INSERT INTO `eb_store_product_attr` VALUES (23, 4, '颜色', '格物致知蓝咖,格物致知红色', 3, 0); +INSERT INTO `eb_store_product_attr` VALUES (24, 4, '尺码', '200*27cm,240*30', 3, 0); + +-- ---------------------------- +-- Table structure for eb_store_product_attr_result +-- ---------------------------- +DROP TABLE IF EXISTS `eb_store_product_attr_result`; +CREATE TABLE `eb_store_product_attr_result` ( + `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键', + `product_id` int(10) UNSIGNED NOT NULL COMMENT '商品ID', + `result` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '商品属性参数', + `change_time` int(10) UNSIGNED NOT NULL COMMENT '上次修改时间', + `type` tinyint(1) NULL DEFAULT 0 COMMENT '活动类型 0=商品,1=秒杀,2=砍价,3=拼团', + PRIMARY KEY (`id`) USING BTREE, + INDEX `product_id`(`product_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '商品属性详情表' ROW_FORMAT = Compact; + +-- ---------------------------- +-- Table structure for eb_store_product_attr_value +-- ---------------------------- +DROP TABLE IF EXISTS `eb_store_product_attr_value`; +CREATE TABLE `eb_store_product_attr_value` ( + `id` mediumint(11) NOT NULL AUTO_INCREMENT COMMENT '主键', + `product_id` int(10) UNSIGNED NOT NULL COMMENT '商品ID', + `suk` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '商品属性索引值 (attr_value|attr_value[|....])', + `stock` int(10) UNSIGNED NOT NULL COMMENT '属性对应的库存', + `sales` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '销量', + `price` decimal(8, 2) UNSIGNED NOT NULL COMMENT '属性金额', + `image` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '图片', + `unique` char(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '唯一值', + `cost` decimal(8, 2) UNSIGNED NOT NULL DEFAULT 0.00 COMMENT '成本价', + `bar_code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '商品条码', + `ot_price` decimal(8, 2) NOT NULL DEFAULT 0.00 COMMENT '原价', + `weight` decimal(8, 2) NOT NULL DEFAULT 0.00 COMMENT '重量', + `volume` decimal(8, 2) NOT NULL DEFAULT 0.00 COMMENT '体积', + `brokerage` decimal(8, 2) NOT NULL DEFAULT 0.00 COMMENT '一级返佣', + `brokerage_two` decimal(8, 2) NOT NULL DEFAULT 0.00 COMMENT '二级返佣', + `type` tinyint(1) NULL DEFAULT 0 COMMENT '活动类型 0=商品,1=秒杀,2=砍价,3=拼团', + `quota` int(11) NULL DEFAULT NULL COMMENT '活动限购数量', + `quota_show` int(11) NULL DEFAULT NULL COMMENT '活动限购数量显示', + `attr_value` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT 'attr_values 创建更新时的属性对应', + `is_del` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除,0-否,1-是', + PRIMARY KEY (`id`) USING BTREE, + INDEX `unique`(`unique`, `suk`) USING BTREE, + INDEX `store_id`(`product_id`, `suk`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 39 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '商品属性值表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of eb_store_product_attr_value +-- ---------------------------- +INSERT INTO `eb_store_product_attr_value` VALUES (1, 1, '默认', 345, 0, 268.00, 'crmebimage/public/maintain/2021/12/25/63969148b6c4447d918124fd810c1da5m2h9aiylly.jpg', '', 40.00, '', 188.00, 1.00, 0.00, 0.00, 0.00, 0, 0, 0, '{\"规格\":\"默认\"}', 0); +INSERT INTO `eb_store_product_attr_value` VALUES (2, 2, '默认', 88, 0, 99.00, 'crmebimage/public/maintain/2021/12/25/49ae68efce4848a185a8ddcb4e5c95a2zl2dlwi77v.jpg', '', 20.00, '', 129.00, 2.00, 0.00, 0.00, 0.00, 0, 0, 0, '{\"规格\":\"默认\"}', 0); +INSERT INTO `eb_store_product_attr_value` VALUES (3, 3, '默认', 78, 0, 374.00, 'crmebimage/public/maintain/2021/12/25/5486775d8cad4fd8adfc254d2e93857cn0wu5hq8f4.jpg', '', 89.00, '', 394.00, 0.50, 0.00, 0.00, 0.00, 0, 0, 0, '{\"规格\":\"默认\"}', 1); +INSERT INTO `eb_store_product_attr_value` VALUES (4, 4, '默认', 289, 0, 116.00, 'crmebimage/public/maintain/2021/12/25/3ed152917e3f4f7faa9414050b6cab49vuadulntb8.jpg', '', 26.00, '', 156.00, 1.00, 0.00, 0.00, 0.00, 0, 0, 0, '{\"规格\":\"默认\"}', 0); +INSERT INTO `eb_store_product_attr_value` VALUES (5, 5, '默认', 998, 1, 115.00, 'crmebimage/public/maintain/2021/12/25/f65ef5469f3a479497a710fb288d115cvl5imkvpo8.jpg', '', 15.00, '', 145.00, 0.50, 0.00, 0.00, 0.00, 0, 0, 0, '{\"规格\":\"默认\"}', 0); +INSERT INTO `eb_store_product_attr_value` VALUES (6, 6, '默认', 999, 0, 1588.00, 'crmebimage/public/maintain/2021/12/25/fef1aee22a04466d93693f5791d44bfd2rsm469mcr.jpg', '', 300.00, '', 1688.00, 2.00, 0.00, 0.00, 0.00, 0, 0, 0, '{\"规格\":\"默认\"}', 0); +INSERT INTO `eb_store_product_attr_value` VALUES (7, 7, '默认', 666, 0, 13.00, 'crmebimage/public/maintain/2021/12/25/37382cca048b4011bdbacd3cbbe0814daw1o5x0tco.jpg', '', 5.00, '', 18.00, 0.50, 0.00, 0.00, 0.00, 0, 0, 0, '{\"规格\":\"默认\"}', 1); +INSERT INTO `eb_store_product_attr_value` VALUES (8, 8, '默认', 689, 0, 787.00, 'crmebimage/public/maintain/2021/12/25/7a6475bba07c47bb98e5db0e0d21c8ebq5sw2kijlc.jpg', '', 212.00, '', 197.00, 0.50, 0.00, 0.00, 0.00, 0, 0, 0, '{\"规格\":\"默认\"}', 0); +INSERT INTO `eb_store_product_attr_value` VALUES (9, 1, '默认', 689, 0, 720.00, 'crmebimage/public/maintain/2021/12/25/7a6475bba07c47bb98e5db0e0d21c8ebq5sw2kijlc.jpg', '', 212.00, '', 197.00, 0.50, 0.00, 0.00, 0.00, 1, 99, 99, '\"\\\"{\\\\\\\"规格\\\\\\\":\\\\\\\"默认\\\\\\\"}\\\"\"', 0); +INSERT INTO `eb_store_product_attr_value` VALUES (10, 2, '默认', 998, 1, 95.00, 'crmebimage/public/maintain/2021/12/25/f65ef5469f3a479497a710fb288d115cvl5imkvpo8.jpg', '', 15.00, '', 145.00, 0.50, 0.00, 0.00, 0.00, 1, 98, 99, '\"\\\"{\\\\\\\"规格\\\\\\\":\\\\\\\"默认\\\\\\\"}\\\"\"', 0); +INSERT INTO `eb_store_product_attr_value` VALUES (11, 1, '默认', 78, 0, 374.00, 'crmebimage/public/maintain/2021/12/25/5486775d8cad4fd8adfc254d2e93857cn0wu5hq8f4.jpg', '', 89.00, '', 394.00, 0.50, 0.00, 0.00, 0.00, 2, 66, 0, '{\"规格\":\"默认\"}', 0); +INSERT INTO `eb_store_product_attr_value` VALUES (12, 2, '默认', 345, 0, 268.00, 'crmebimage/public/maintain/2021/12/25/63969148b6c4447d918124fd810c1da5m2h9aiylly.jpg', '', 40.00, '', 188.00, 1.00, 0.00, 0.00, 0.00, 2, 69, 0, '{\"规格\":\"默认\"}', 0); +INSERT INTO `eb_store_product_attr_value` VALUES (13, 1, '默认', 666, 0, 13.00, 'crmebimage/public/maintain/2021/12/25/37382cca048b4011bdbacd3cbbe0814daw1o5x0tco.jpg', '', 5.00, '', 18.00, 0.50, 0.00, 0.00, 0.00, 3, 66, 66, '\"{\\\"规格\\\":\\\"默认\\\"}\"', 0); +INSERT INTO `eb_store_product_attr_value` VALUES (14, 2, '默认', 999, 0, 1288.00, 'crmebimage/public/maintain/2021/12/25/fef1aee22a04466d93693f5791d44bfd2rsm469mcr.jpg', '', 300.00, '', 1688.00, 2.00, 0.00, 0.00, 0.00, 3, 99, 99, '\"{\\\"规格\\\":\\\"默认\\\"}\"', 0); +INSERT INTO `eb_store_product_attr_value` VALUES (15, 7, '白色', 365, 0, 13.00, 'crmebimage/public/maintain/2021/12/25/37382cca048b4011bdbacd3cbbe0814daw1o5x0tco.jpg', '', 5.00, '', 18.00, 1.00, 0.00, 0.00, 0.00, 0, 0, 0, '{\"颜色\":\"白色\"}', 0); +INSERT INTO `eb_store_product_attr_value` VALUES (16, 7, '黑色', 211, 0, 13.00, 'crmebimage/public/maintain/2021/12/25/37382cca048b4011bdbacd3cbbe0814daw1o5x0tco.jpg', '', 5.00, '', 18.00, 1.00, 0.00, 0.00, 0.00, 0, 0, 0, '{\"颜色\":\"黑色\"}', 0); +INSERT INTO `eb_store_product_attr_value` VALUES (17, 7, '粉色', 568, 0, 13.00, 'crmebimage/public/maintain/2021/12/25/37382cca048b4011bdbacd3cbbe0814daw1o5x0tco.jpg', '', 5.00, '', 18.00, 1.00, 0.00, 0.00, 0.00, 0, 0, 0, '{\"颜色\":\"粉色\"}', 0); +INSERT INTO `eb_store_product_attr_value` VALUES (18, 7, '红色', 389, 0, 13.00, 'crmebimage/public/maintain/2021/12/25/37382cca048b4011bdbacd3cbbe0814daw1o5x0tco.jpg', '', 5.00, '', 18.00, 1.00, 0.00, 0.00, 0.00, 0, 0, 0, '{\"颜色\":\"红色\"}', 0); +INSERT INTO `eb_store_product_attr_value` VALUES (19, 3, '格物致知蓝咖,200*27cm', 698, 0, 374.00, 'crmebimage/public/maintain/2021/12/25/5486775d8cad4fd8adfc254d2e93857cn0wu5hq8f4.jpg', '', 100.00, '', 412.00, 0.50, 0.00, 0.00, 0.00, 0, 0, 0, '{\"颜色\":\"格物致知蓝咖\",\"尺码\":\"200*27cm\"}', 0); +INSERT INTO `eb_store_product_attr_value` VALUES (20, 3, '格物致知蓝咖,240*30', 366, 0, 374.00, 'crmebimage/public/maintain/2021/12/25/5486775d8cad4fd8adfc254d2e93857cn0wu5hq8f4.jpg', '', 100.00, '', 412.00, 0.50, 0.00, 0.00, 0.00, 0, 0, 0, '{\"颜色\":\"格物致知蓝咖\",\"尺码\":\"240*30\"}', 0); +INSERT INTO `eb_store_product_attr_value` VALUES (21, 3, '格物致知红色,200*27cm', 124, 0, 374.00, 'crmebimage/public/maintain/2021/12/25/5486775d8cad4fd8adfc254d2e93857cn0wu5hq8f4.jpg', '', 100.00, '', 412.00, 0.50, 0.00, 0.00, 0.00, 0, 0, 0, '{\"颜色\":\"格物致知红色\",\"尺码\":\"200*27cm\"}', 0); +INSERT INTO `eb_store_product_attr_value` VALUES (22, 3, '格物致知红色,240*30', 677, 1, 374.00, 'crmebimage/public/maintain/2021/12/25/5486775d8cad4fd8adfc254d2e93857cn0wu5hq8f4.jpg', '', 100.00, '', 412.00, 0.50, 0.00, 0.00, 0.00, 0, 0, 0, '{\"颜色\":\"格物致知红色\",\"尺码\":\"240*30\"}', 0); +INSERT INTO `eb_store_product_attr_value` VALUES (23, 3, '格物致知红色,200*27cm', 124, 0, 374.00, 'crmebimage/public/maintain/2021/12/25/5486775d8cad4fd8adfc254d2e93857cn0wu5hq8f4.jpg', '', 100.00, '', 412.00, 0.50, 0.00, 0.00, 0.00, 1, 124, 124, '{\"颜色\":\"格物致知红色\",\"尺码\":\"200*27cm\"}', 0); +INSERT INTO `eb_store_product_attr_value` VALUES (24, 3, '格物致知红色,240*30', 678, 0, 374.00, 'crmebimage/public/maintain/2021/12/25/5486775d8cad4fd8adfc254d2e93857cn0wu5hq8f4.jpg', '', 100.00, '', 412.00, 0.50, 0.00, 0.00, 0.00, 1, 678, 678, '{\"颜色\":\"格物致知红色\",\"尺码\":\"240*30\"}', 0); +INSERT INTO `eb_store_product_attr_value` VALUES (25, 3, '格物致知蓝咖,200*27cm', 698, 0, 374.00, 'crmebimage/public/maintain/2021/12/25/5486775d8cad4fd8adfc254d2e93857cn0wu5hq8f4.jpg', '', 100.00, '', 412.00, 0.50, 0.00, 0.00, 0.00, 1, 698, 698, '{\"颜色\":\"格物致知蓝咖\",\"尺码\":\"200*27cm\"}', 0); +INSERT INTO `eb_store_product_attr_value` VALUES (26, 3, '格物致知蓝咖,240*30', 366, 0, 374.00, 'crmebimage/public/maintain/2021/12/25/5486775d8cad4fd8adfc254d2e93857cn0wu5hq8f4.jpg', '', 100.00, '', 412.00, 0.50, 0.00, 0.00, 0.00, 1, 366, 366, '{\"颜色\":\"格物致知蓝咖\",\"尺码\":\"240*30\"}', 0); +INSERT INTO `eb_store_product_attr_value` VALUES (27, 4, '格物致知红色,200*27cm', 124, 0, 374.00, 'crmebimage/public/maintain/2021/12/25/5486775d8cad4fd8adfc254d2e93857cn0wu5hq8f4.jpg', '', 100.00, '', 412.00, 0.50, 0.00, 0.00, 0.00, 1, 124, 124, '\"{\\\"颜色\\\":\\\"格物致知红色\\\",\\\"尺码\\\":\\\"200*27cm\\\"}\"', 0); +INSERT INTO `eb_store_product_attr_value` VALUES (28, 4, '格物致知红色,240*30', 678, 0, 374.00, 'crmebimage/public/maintain/2021/12/25/5486775d8cad4fd8adfc254d2e93857cn0wu5hq8f4.jpg', '', 100.00, '', 412.00, 0.50, 0.00, 0.00, 0.00, 1, 678, 678, '\"{\\\"颜色\\\":\\\"格物致知红色\\\",\\\"尺码\\\":\\\"240*30\\\"}\"', 0); +INSERT INTO `eb_store_product_attr_value` VALUES (29, 4, '格物致知蓝咖,200*27cm', 698, 0, 374.00, 'crmebimage/public/maintain/2021/12/25/5486775d8cad4fd8adfc254d2e93857cn0wu5hq8f4.jpg', '', 100.00, '', 412.00, 0.50, 0.00, 0.00, 0.00, 1, 698, 698, '\"{\\\"颜色\\\":\\\"格物致知蓝咖\\\",\\\"尺码\\\":\\\"200*27cm\\\"}\"', 0); +INSERT INTO `eb_store_product_attr_value` VALUES (30, 4, '格物致知蓝咖,240*30', 366, 0, 374.00, 'crmebimage/public/maintain/2021/12/25/5486775d8cad4fd8adfc254d2e93857cn0wu5hq8f4.jpg', '', 100.00, '', 412.00, 0.50, 0.00, 0.00, 0.00, 1, 366, 366, '\"{\\\"颜色\\\":\\\"格物致知蓝咖\\\",\\\"尺码\\\":\\\"240*30\\\"}\"', 0); +INSERT INTO `eb_store_product_attr_value` VALUES (31, 3, '白色', 365, 0, 8.00, 'crmebimage/public/maintain/2021/12/25/37382cca048b4011bdbacd3cbbe0814daw1o5x0tco.jpg', '', 5.00, '', 18.00, 1.00, 0.00, 0.00, 0.00, 3, 36, 36, '{\"颜色\":\"白色\"}', 0); +INSERT INTO `eb_store_product_attr_value` VALUES (32, 3, '粉色', 568, 0, 8.00, 'crmebimage/public/maintain/2021/12/25/37382cca048b4011bdbacd3cbbe0814daw1o5x0tco.jpg', '', 5.00, '', 18.00, 1.00, 0.00, 0.00, 0.00, 3, 56, 56, '{\"颜色\":\"粉色\"}', 0); +INSERT INTO `eb_store_product_attr_value` VALUES (33, 3, '红色', 389, 0, 8.00, 'crmebimage/public/maintain/2021/12/25/37382cca048b4011bdbacd3cbbe0814daw1o5x0tco.jpg', '', 5.00, '', 18.00, 1.00, 0.00, 0.00, 0.00, 3, 38, 38, '{\"颜色\":\"红色\"}', 0); +INSERT INTO `eb_store_product_attr_value` VALUES (34, 3, '黑色', 211, 0, 8.00, 'crmebimage/public/maintain/2021/12/25/37382cca048b4011bdbacd3cbbe0814daw1o5x0tco.jpg', '', 5.00, '', 18.00, 1.00, 0.00, 0.00, 0.00, 3, 21, 21, '{\"颜色\":\"黑色\"}', 0); +INSERT INTO `eb_store_product_attr_value` VALUES (35, 4, '格物致知红色,200*27cm', 124, 0, 324.00, 'crmebimage/public/maintain/2021/12/25/5486775d8cad4fd8adfc254d2e93857cn0wu5hq8f4.jpg', '', 100.00, '', 412.00, 0.50, 0.00, 0.00, 0.00, 3, 12, 12, '{\"颜色\":\"格物致知红色\",\"尺码\":\"200*27cm\"}', 0); +INSERT INTO `eb_store_product_attr_value` VALUES (36, 4, '格物致知红色,240*30', 677, 1, 324.00, 'crmebimage/public/maintain/2021/12/25/5486775d8cad4fd8adfc254d2e93857cn0wu5hq8f4.jpg', '', 100.00, '', 412.00, 0.50, 0.00, 0.00, 0.00, 3, 66, 67, '{\"颜色\":\"格物致知红色\",\"尺码\":\"240*30\"}', 0); +INSERT INTO `eb_store_product_attr_value` VALUES (37, 4, '格物致知蓝咖,200*27cm', 698, 0, 324.00, 'crmebimage/public/maintain/2021/12/25/5486775d8cad4fd8adfc254d2e93857cn0wu5hq8f4.jpg', '', 100.00, '', 412.00, 0.50, 0.00, 0.00, 0.00, 3, 69, 69, '{\"颜色\":\"格物致知蓝咖\",\"尺码\":\"200*27cm\"}', 0); +INSERT INTO `eb_store_product_attr_value` VALUES (38, 4, '格物致知蓝咖,240*30', 366, 0, 324.00, 'crmebimage/public/maintain/2021/12/25/5486775d8cad4fd8adfc254d2e93857cn0wu5hq8f4.jpg', '', 100.00, '', 412.00, 0.50, 0.00, 0.00, 0.00, 3, 36, 36, '{\"颜色\":\"格物致知蓝咖\",\"尺码\":\"240*30\"}', 0); + +-- ---------------------------- +-- Table structure for eb_store_product_cate +-- ---------------------------- +DROP TABLE IF EXISTS `eb_store_product_cate`; +CREATE TABLE `eb_store_product_cate` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `product_id` int(11) NOT NULL DEFAULT 0 COMMENT '商品id', + `cate_id` int(11) NOT NULL DEFAULT 0 COMMENT '分类id', + `add_time` int(11) NOT NULL DEFAULT 0 COMMENT '添加时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '商品分类辅助表' ROW_FORMAT = Compact; + +-- ---------------------------- +-- Table structure for eb_store_product_coupon +-- ---------------------------- +DROP TABLE IF EXISTS `eb_store_product_coupon`; +CREATE TABLE `eb_store_product_coupon` ( + `id` int(10) NOT NULL AUTO_INCREMENT, + `product_id` int(10) NOT NULL DEFAULT 0 COMMENT '商品id', + `issue_coupon_id` int(10) NOT NULL DEFAULT 0 COMMENT '优惠劵id', + `add_time` int(10) NOT NULL DEFAULT 0 COMMENT '添加时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '商品优惠券表' ROW_FORMAT = Compact; + +-- ---------------------------- +-- Table structure for eb_store_product_description +-- ---------------------------- +DROP TABLE IF EXISTS `eb_store_product_description`; +CREATE TABLE `eb_store_product_description` ( + `product_id` int(11) NOT NULL DEFAULT 0 COMMENT '商品ID', + `description` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '商品详情', + `type` tinyint(1) NOT NULL DEFAULT 0 COMMENT '商品类型', + `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`id`) USING BTREE, + INDEX `product_id`(`product_id`, `type`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 24 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '商品描述表' ROW_FORMAT = Compact; + +-- ---------------------------- +-- Records of eb_store_product_description +-- ---------------------------- +INSERT INTO `eb_store_product_description` VALUES (1, '

', 0, 1); +INSERT INTO `eb_store_product_description` VALUES (2, '

', 0, 2); +INSERT INTO `eb_store_product_description` VALUES (4, '

', 0, 4); +INSERT INTO `eb_store_product_description` VALUES (5, '

', 0, 5); +INSERT INTO `eb_store_product_description` VALUES (6, '

', 0, 6); +INSERT INTO `eb_store_product_description` VALUES (8, '

', 0, 8); +INSERT INTO `eb_store_product_description` VALUES (1, '

', 1, 10); +INSERT INTO `eb_store_product_description` VALUES (2, '

', 1, 12); +INSERT INTO `eb_store_product_description` VALUES (1, '

', 2, 14); +INSERT INTO `eb_store_product_description` VALUES (2, '

', 2, 15); +INSERT INTO `eb_store_product_description` VALUES (1, '

', 3, 16); +INSERT INTO `eb_store_product_description` VALUES (2, '

', 3, 17); +INSERT INTO `eb_store_product_description` VALUES (7, '

', 0, 18); +INSERT INTO `eb_store_product_description` VALUES (3, '

', 0, 19); +INSERT INTO `eb_store_product_description` VALUES (3, '

', 1, 20); +INSERT INTO `eb_store_product_description` VALUES (4, '

', 1, 21); +INSERT INTO `eb_store_product_description` VALUES (3, '

', 3, 22); +INSERT INTO `eb_store_product_description` VALUES (4, '

', 3, 23); + +-- ---------------------------- +-- Table structure for eb_store_product_log +-- ---------------------------- +DROP TABLE IF EXISTS `eb_store_product_log`; +CREATE TABLE `eb_store_product_log` ( + `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '统计ID', + `type` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '类型visit,cart,order,pay,collect,refund', + `product_id` int(11) NOT NULL DEFAULT 0 COMMENT '商品ID', + `uid` int(11) NOT NULL DEFAULT 0 COMMENT '用户ID', + `visit_num` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否浏览', + `cart_num` int(11) NOT NULL DEFAULT 0 COMMENT '加入购物车数量', + `order_num` int(11) NOT NULL DEFAULT 0 COMMENT '下单数量', + `pay_num` int(11) NOT NULL DEFAULT 0 COMMENT '支付数量', + `pay_price` decimal(10, 2) NOT NULL DEFAULT 0.00 COMMENT '支付金额', + `cost_price` decimal(10, 2) NOT NULL DEFAULT 0.00 COMMENT '商品成本价', + `pay_uid` int(11) NOT NULL DEFAULT 0 COMMENT '支付用户ID', + `refund_num` int(11) NOT NULL DEFAULT 0 COMMENT '退款数量', + `refund_price` decimal(10, 2) NOT NULL DEFAULT 0.00 COMMENT '退款金额', + `collect_num` tinyint(1) NOT NULL DEFAULT 0 COMMENT '收藏', + `add_time` bigint(14) NOT NULL DEFAULT 0 COMMENT '添加时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '商品日志表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for eb_store_product_relation +-- ---------------------------- +DROP TABLE IF EXISTS `eb_store_product_relation`; +CREATE TABLE `eb_store_product_relation` ( + `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id', + `uid` int(10) UNSIGNED NOT NULL COMMENT '用户ID', + `product_id` int(10) UNSIGNED NOT NULL COMMENT '商品ID', + `type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '类型(收藏(collect)、点赞(like))', + `category` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '某种类型的商品(普通商品、秒杀商品)', + `create_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `uid`(`uid`, `product_id`, `type`, `category`) USING BTREE, + INDEX `type`(`type`) USING BTREE, + INDEX `category`(`category`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '商品点赞和收藏表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for eb_store_product_reply +-- ---------------------------- +DROP TABLE IF EXISTS `eb_store_product_reply`; +CREATE TABLE `eb_store_product_reply` ( + `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '评论ID', + `uid` int(11) NOT NULL DEFAULT 0 COMMENT '用户ID', + `oid` int(11) NOT NULL DEFAULT 0 COMMENT '订单ID', + `unique` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '商品唯一id', + `product_id` int(11) NOT NULL COMMENT '商品id', + `reply_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT 'product' COMMENT '某种商品类型(普通商品、秒杀商品)', + `product_score` tinyint(1) NOT NULL COMMENT '商品分数', + `service_score` tinyint(1) NOT NULL COMMENT '服务分数', + `comment` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '评论内容', + `pics` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '评论图片', + `merchant_reply_content` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '管理员回复内容', + `merchant_reply_time` int(11) NULL DEFAULT NULL COMMENT '管理员回复时间', + `is_del` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '0未删除1已删除', + `is_reply` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0未回复1已回复', + `nickname` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户名称', + `avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户头像', + `create_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间', + `sku` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '商品规格属性值,多个,号隔开', + PRIMARY KEY (`id`) USING BTREE, + INDEX `parent_id`(`reply_type`) USING BTREE, + INDEX `is_del`(`is_del`) USING BTREE, + INDEX `product_score`(`product_score`) USING BTREE, + INDEX `service_score`(`service_score`) USING BTREE, + INDEX `uid+oid`(`uid`, `oid`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '评论表' ROW_FORMAT = Compact; + +-- ---------------------------- +-- Table structure for eb_store_product_rule +-- ---------------------------- +DROP TABLE IF EXISTS `eb_store_product_rule`; +CREATE TABLE `eb_store_product_rule` ( + `id` int(10) NOT NULL AUTO_INCREMENT, + `rule_name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '规格名称', + `rule_value` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '规格值', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '商品规则值(规格)表' ROW_FORMAT = Compact; + +-- ---------------------------- +-- Records of eb_store_product_rule +-- ---------------------------- +INSERT INTO `eb_store_product_rule` VALUES (1, '颜色', '[{\"value\":\"颜色\",\"detail\":[\"白色\",\"黑色\",\"粉色\",\"红色\"],\"inputVisible\":false}]'); +INSERT INTO `eb_store_product_rule` VALUES (2, '围巾', '[{\"value\":\"颜色\",\"detail\":[\"格物致知蓝咖\",\"格物致知红色\"],\"inputVisible\":false},{\"value\":\"尺码\",\"detail\":[\"200*27cm\",\"240*30\"],\"inputVisible\":false}]'); + +-- ---------------------------- +-- Table structure for eb_store_seckill +-- ---------------------------- +DROP TABLE IF EXISTS `eb_store_seckill`; +CREATE TABLE `eb_store_seckill` ( + `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '商品秒杀产品表id', + `product_id` int(10) UNSIGNED NOT NULL COMMENT '商品id', + `image` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '推荐图', + `images` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '轮播图', + `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '活动标题', + `info` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '简介', + `price` decimal(10, 2) UNSIGNED NOT NULL COMMENT '价格', + `cost` decimal(8, 2) UNSIGNED NOT NULL DEFAULT 0.00 COMMENT '成本', + `ot_price` decimal(10, 2) UNSIGNED NOT NULL DEFAULT 0.00 COMMENT '原价', + `give_integral` decimal(10, 2) UNSIGNED NOT NULL DEFAULT 0.00 COMMENT '返多少积分', + `sort` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '排序', + `stock` int(10) UNSIGNED NOT NULL COMMENT '库存', + `sales` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '销量', + `unit_name` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '单位名', + `postage` decimal(8, 2) UNSIGNED NOT NULL DEFAULT 0.00 COMMENT '邮费', + `description` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '内容', + `start_time` datetime(0) NOT NULL COMMENT '开始时间', + `stop_time` datetime(0) NOT NULL COMMENT '结束时间', + `create_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '添加时间', + `status` tinyint(3) UNSIGNED NOT NULL COMMENT '秒杀状态 0=关闭 1=开启', + `is_postage` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '是否包邮', + `is_del` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '删除 0未删除1已删除', + `num` int(11) UNSIGNED NOT NULL COMMENT '当天参与活动次数', + `is_show` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '显示', + `time_id` int(11) NULL DEFAULT NULL COMMENT '时间段ID', + `temp_id` int(11) NOT NULL DEFAULT 0 COMMENT '运费模板ID', + `weight` decimal(8, 2) NOT NULL DEFAULT 0.00 COMMENT '重量', + `volume` decimal(8, 2) NOT NULL DEFAULT 0.00 COMMENT '体积', + `quota` int(10) NOT NULL DEFAULT 0 COMMENT '限购总数,随减', + `quota_show` int(10) NOT NULL DEFAULT 0 COMMENT '限购总数显示.不变', + `spec_type` tinyint(1) NOT NULL DEFAULT 0 COMMENT '规格 0=单 1=多', + PRIMARY KEY (`id`) USING BTREE, + INDEX `product_id`(`product_id`) USING BTREE, + INDEX `start_time`(`start_time`, `stop_time`) USING BTREE, + INDEX `is_del`(`is_del`) USING BTREE, + INDEX `is_show`(`status`) USING BTREE, + INDEX `add_time`(`create_time`) USING BTREE, + INDEX `sort`(`sort`) USING BTREE, + INDEX `is_postage`(`is_postage`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '商品秒杀产品表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of eb_store_seckill +-- ---------------------------- +INSERT INTO `eb_store_seckill` VALUES (1, 8, 'crmebimage/public/maintain/2021/12/25/7a6475bba07c47bb98e5db0e0d21c8ebq5sw2kijlc.jpg', '[\"crmebimage/public/maintain/2021/12/25/7a6475bba07c47bb98e5db0e0d21c8ebq5sw2kijlc.jpg\"]', '兰蔻(LANCOME)口红196 全新菁纯丝绒雾面唇膏 化妆品礼盒', '兰蔻(LANCOME)口红196 全新菁纯丝绒雾面唇膏 化妆品礼盒', 720.00, 212.00, 197.00, 0.00, 0, 99, 0, '件', 0.00, NULL, '2021-12-25 00:00:00', '2022-02-28 00:00:00', '2021-12-25 13:08:50', 1, 0, 0, 1, 1, 2, 1, 0.00, 0.00, 99, 99, 0); +INSERT INTO `eb_store_seckill` VALUES (2, 5, 'crmebimage/public/maintain/2021/12/25/f65ef5469f3a479497a710fb288d115cvl5imkvpo8.jpg', '[\"crmebimage/public/maintain/2021/12/25/f65ef5469f3a479497a710fb288d115cvl5imkvpo8.jpg\"]', 'LAORENTOU包包女包牛皮单肩女士包包奢侈品蓝色【礼盒装】', 'LAORENTOU包包女包牛皮单肩女士包包奢侈品蓝色【礼盒装】', 95.00, 15.00, 145.00, 0.00, 0, 98, 1, '件', 0.00, NULL, '2021-12-25 00:00:00', '2022-02-28 00:00:00', '2021-12-25 13:10:53', 1, 0, 0, 1, 1, 2, 1, 0.00, 0.00, 98, 99, 0); +INSERT INTO `eb_store_seckill` VALUES (3, 3, 'crmebimage/public/maintain/2021/12/25/5486775d8cad4fd8adfc254d2e93857cn0wu5hq8f4.jpg', '[\"crmebimage/public/maintain/2021/12/25/5486775d8cad4fd8adfc254d2e93857cn0wu5hq8f4.jpg\"]', '万事利秋冬新品时尚百搭经典真丝绒厚款围巾 格物致知蓝咖', '万事利秋冬新品时尚百搭经典真丝绒厚款围巾 格物致知蓝咖', 374.00, 100.00, 412.00, 0.00, 0, 1866, 0, '件', 0.00, NULL, '2021-12-29 00:00:00', '2022-01-31 00:00:00', '2021-12-29 11:46:20', 1, 0, 0, 1, 1, 1, 1, 0.00, 0.00, 1866, 1866, 1); +INSERT INTO `eb_store_seckill` VALUES (4, 3, 'crmebimage/public/maintain/2021/12/25/5486775d8cad4fd8adfc254d2e93857cn0wu5hq8f4.jpg', '[\"crmebimage/public/maintain/2021/12/25/5486775d8cad4fd8adfc254d2e93857cn0wu5hq8f4.jpg\"]', '万事利秋冬新品时尚百搭经典真丝绒厚款围巾', '万事利秋冬新品时尚百搭经典真丝绒厚款围巾 格物致知蓝咖', 374.00, 100.00, 412.00, 0.00, 0, 1866, 0, '件', 0.00, NULL, '2021-12-29 00:00:00', '2022-01-31 00:00:00', '2021-12-29 11:47:03', 1, 0, 0, 1, 1, 2, 1, 0.00, 0.00, 1866, 1866, 1); + +-- ---------------------------- +-- Table structure for eb_store_seckill_manger +-- ---------------------------- +DROP TABLE IF EXISTS `eb_store_seckill_manger`; +CREATE TABLE `eb_store_seckill_manger` ( + `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '秒杀名称', + `start_time` int(11) NULL DEFAULT NULL COMMENT '秒杀开始时间段', + `end_time` int(11) NULL DEFAULT NULL COMMENT '秒杀结束时间段', + `img` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '主图', + `silder_imgs` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '轮播图', + `sort` int(11) NULL DEFAULT NULL COMMENT '排序', + `status` int(11) NULL DEFAULT NULL COMMENT '状态 0=关闭 1=开启', + `create_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` datetime(0) NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间', + `is_del` int(11) NOT NULL DEFAULT 0 COMMENT '删除标记 0=为删除 1=删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of eb_store_seckill_manger +-- ---------------------------- +INSERT INTO `eb_store_seckill_manger` VALUES (1, '白领', 10, 13, NULL, '[{\"attId\":192,\"name\":\"eab9cdc74c4e4673acab70b801ee4612wnxgu98i0l.jpg\",\"attDir\":\"\",\"sattDir\":\"crmebimage/public/maintain/2021/12/25/e91ccd7e37294221bfdb7b43a42d8ed5hghg7nw0qb.jpg\",\"attSize\":\"118260\",\"attType\":\"jpeg\",\"pid\":0,\"imageType\":1,\"createTime\":\"2021-12-25 11:57:38\",\"updateTime\":\"2021-12-25 11:57:38\",\"isSelect\":true,\"num\":1}]', NULL, 1, '2021-06-03 10:48:58', '2021-12-25 13:07:21', 0); +INSERT INTO `eb_store_seckill_manger` VALUES (2, '夜猫子', 13, 18, NULL, '[{\"attId\":191,\"name\":\"2702ff9ddd4e40ee97c957f07e9417b10hrby3rl2i.jpg\",\"attDir\":\"\",\"sattDir\":\"crmebimage/public/maintain/2021/12/25/9e97ddf78f804d50b985bdcf666478ebj76hbf3gpp.jpg\",\"attSize\":\"117394\",\"attType\":\"jpeg\",\"pid\":0,\"imageType\":1,\"createTime\":\"2021-12-25 11:57:38\",\"updateTime\":\"2021-12-25 11:57:38\",\"isSelect\":true,\"num\":2}]', NULL, 1, '2021-06-03 14:12:45', '2021-12-29 13:58:14', 0); +INSERT INTO `eb_store_seckill_manger` VALUES (4, '下班拉', 18, 22, NULL, '[{\"attId\":193,\"name\":\"0638dad477de4f979f1d6f58aa960c41bvp53cy53v.jpg\",\"attDir\":\"\",\"sattDir\":\"crmebimage/public/maintain/2021/12/25/3598e8d0aa3f4bf1b61140daa0e36300k0te4s6z3j.jpg\",\"attSize\":\"149827\",\"attType\":\"jpeg\",\"pid\":0,\"imageType\":1,\"createTime\":\"2021-12-25 11:57:38\",\"updateTime\":\"2021-12-25 11:57:38\",\"localImg\":\"\",\"isSelect\":true,\"num\":1}]', NULL, 1, '2021-07-17 17:46:35', '2021-12-25 13:07:11', 0); + +-- ---------------------------- +-- Table structure for eb_system_admin +-- ---------------------------- +DROP TABLE IF EXISTS `eb_system_admin`; +CREATE TABLE `eb_system_admin` ( + `id` smallint(5) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '后台管理员表ID', + `account` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '后台管理员账号', + `pwd` char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '后台管理员密码', + `real_name` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '后台管理员姓名', + `roles` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '后台管理员权限(menus_id)', + `last_ip` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '后台管理员最后一次登录ip', + `update_time` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '后台管理员最后一次登录时间', + `create_time` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '后台管理员添加时间', + `login_count` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '登录次数', + `level` tinyint(3) UNSIGNED NOT NULL DEFAULT 1 COMMENT '后台管理员级别', + `status` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '后台管理员状态 1有效0无效', + `is_del` tinyint(1) UNSIGNED NOT NULL DEFAULT 0, + `phone` varchar(15) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '手机号码', + `is_sms` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '是否接收短信', + PRIMARY KEY (`id`) USING BTREE, + INDEX `account`(`account`) USING BTREE, + INDEX `status`(`status`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '后台管理员表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of eb_system_admin +-- ---------------------------- +INSERT INTO `eb_system_admin` VALUES (1, 'admin', 'L8qdg72wbeQ=', '超管', '1', '1.80.234.19', '2021-11-29 17:28:28', '2021-07-16 09:59:12', 505, 1, 1, 0, '11111111111', 0); +INSERT INTO `eb_system_admin` VALUES (2, 'demo', 'Rb/KmlSjAxI=', '演示账号', '5', '113.102.138.163', '2021-12-17 09:42:30', '2021-06-09 11:21:42', 346, 1, 1, 0, '18888888888', 0); + +-- ---------------------------- +-- Table structure for eb_system_attachment +-- ---------------------------- +DROP TABLE IF EXISTS `eb_system_attachment`; +CREATE TABLE `eb_system_attachment` ( + `att_id` int(10) NOT NULL AUTO_INCREMENT, + `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '附件名称', + `att_dir` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '附件路径', + `satt_dir` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '压缩图片路径', + `att_size` char(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '附件大小', + `att_type` char(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '附件类型', + `pid` int(10) NOT NULL DEFAULT 0 COMMENT '分类ID0编辑器,1商品图片,2拼团图片,3砍价图片,4秒杀图片,5文章图片,6组合数据图, 7前台用户', + `image_type` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '图片上传类型 1本地 2七牛云 3OSS 4COS ', + `create_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间', + PRIMARY KEY (`att_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 273 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '附件管理表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of eb_system_attachment +-- ---------------------------- +INSERT INTO `eb_system_attachment` VALUES (1, '510d9964f7434895a4d7681c05c0cbf48ramy247zo.png', '', 'crmebimage/public/maintain/2021/12/25/44bbd14303764d49a034ae51550a8452caek7lc1ch.png', '291502', 'png', 718, 1, '2021-12-25 10:17:14', '2021-12-25 10:17:14'); +INSERT INTO `eb_system_attachment` VALUES (2, 'db27bc64121740bd80401623288d17c2dg27m2fo9m.png', '', 'crmebimage/public/maintain/2021/12/25/ea6b31f1839c42238ea1c129c1b4d5eaup7j6zz0so.png', '5024', 'png', 718, 1, '2021-12-25 10:17:37', '2021-12-25 10:17:37'); +INSERT INTO `eb_system_attachment` VALUES (3, 'c96ecfc8c2ef42b6bbc3877eb68a00bco2mqhncbuk.png', '', 'crmebimage/public/maintain/2021/12/25/9b7ccec87366454098153196b5ab091cqhibrmf8c5.png', '5037', 'png', 718, 1, '2021-12-25 10:17:45', '2021-12-25 10:17:45'); +INSERT INTO `eb_system_attachment` VALUES (4, 'f371cfb0ad13433aa5e5b9300f6d42c5rtxnexv4p7.png', '', 'crmebimage/public/maintain/2021/12/25/05be58dd877f45d28d1af418614e8fa5mi3mwr9p5o.png', '4210', 'png', 718, 1, '2021-12-25 10:17:52', '2021-12-25 10:17:52'); +INSERT INTO `eb_system_attachment` VALUES (5, 'd869b609a65d41efbf59be207972c302mu2m328v2s.png', '', 'crmebimage/public/maintain/2021/12/25/ec5fbe4271674fba8873a45d6f767c98ygzcuucjsl.png', '4842', 'png', 718, 1, '2021-12-25 10:18:02', '2021-12-25 10:18:02'); +INSERT INTO `eb_system_attachment` VALUES (6, '11a6bb69a4094b2792709f952d60a869gu2vpjjueg.png', '', 'crmebimage/public/maintain/2021/12/25/6f599b7d21bf49dc9f93d6d1a1ef56e8hvyv1b4q5s.png', '8954', 'png', 720, 1, '2021-12-25 10:26:11', '2021-12-25 11:04:00'); +INSERT INTO `eb_system_attachment` VALUES (7, '088ff22c1f9946a58cd751dd68ee7949cc0to1jr80.png', '', 'crmebimage/public/maintain/2021/12/25/21c84909461c434a8ff39d467ba8d648prefpnpq15.png', '8748', 'png', 720, 1, '2021-12-25 10:26:25', '2021-12-25 11:04:00'); +INSERT INTO `eb_system_attachment` VALUES (8, '6eaf10e8e068450dbfaf27cf44cd0f5btjv2h03umq.png', '', 'crmebimage/public/maintain/2021/12/25/71b89c4f080948a981e06c6ba748c5e1x9mfhpzhfd.png', '7551', 'png', 720, 1, '2021-12-25 10:26:42', '2021-12-25 11:04:00'); +INSERT INTO `eb_system_attachment` VALUES (9, '0fafaa32b702483d8faaafa33e300189msytufgs4j.png', '', 'crmebimage/public/maintain/2021/12/25/3ab2dae5527742319ae003c58cca264duewwp3esg8.png', '7640', 'png', 720, 1, '2021-12-25 10:26:49', '2021-12-25 11:04:00'); +INSERT INTO `eb_system_attachment` VALUES (10, '05acef485dce4735ae7b984e54ad31e0v1aac7u2nt.png', '', 'crmebimage/public/maintain/2021/12/25/418c7649b2b646f4a13dd6f335ae927426354rq62r.png', '8292', 'png', 720, 1, '2021-12-25 10:27:00', '2021-12-25 11:04:00'); +INSERT INTO `eb_system_attachment` VALUES (11, '5bb57ed904e24e0ea4f80c87e0014e08r6wsq5uhkz.png', '', 'crmebimage/public/maintain/2021/12/25/ebf72b915ecc4deab71c353b62ce7de9d0uv4lgzwz.png', '8883', 'png', 720, 1, '2021-12-25 10:27:08', '2021-12-25 11:04:00'); +INSERT INTO `eb_system_attachment` VALUES (12, '28bbeae6892b42ce8838a0885e57bc506uw1xmsk67.png', '', 'crmebimage/public/maintain/2021/12/25/6ba5bf3b13c446cca8b703bf155ccc9362b0gvz1rc.png', '7932', 'png', 720, 1, '2021-12-25 10:27:13', '2021-12-25 11:04:00'); +INSERT INTO `eb_system_attachment` VALUES (13, '30e53adcdc204d79b3d613f013ca2a6d3jx323kyqm.png', '', 'crmebimage/public/maintain/2021/12/25/2e47a337dbdf445d81b20c1b5aeedf01ybm0jmic0h.png', '9382', 'png', 720, 1, '2021-12-25 10:27:24', '2021-12-25 11:04:00'); +INSERT INTO `eb_system_attachment` VALUES (14, '81d9d672b417406781f554d13980c7b890n0o9g4m7.png', '', 'crmebimage/public/maintain/2021/12/25/9ac69cbe9da4459db264b1902ff6f693spomyy6lkw.png', '10477', 'png', 720, 1, '2021-12-25 10:27:29', '2021-12-25 11:04:00'); +INSERT INTO `eb_system_attachment` VALUES (15, '0b07802a74574cae80d5f1b6ef43c08fusdil79x6c.png', '', 'crmebimage/public/maintain/2021/12/25/927222f030f146228d323c4af9d697c1ayirgv5ibc.png', '7454', 'png', 718, 1, '2021-12-25 10:27:52', '2021-12-25 10:27:52'); +INSERT INTO `eb_system_attachment` VALUES (16, '738371d9d0254c70b88db65fee0d21056ttdztgznp.png', '', 'crmebimage/public/maintain/2021/12/25/e7e54160e9db4a9e814675763a80e58ce0j522s6ds.png', '8846', 'png', 720, 1, '2021-12-25 10:28:12', '2021-12-25 11:04:00'); +INSERT INTO `eb_system_attachment` VALUES (17, '3d421f6e629a41fc9e1be98beb21993fao7uffqcgg.png', '', 'crmebimage/public/maintain/2021/12/25/19171c7360924d47a39f048414045e765k3rr7xwr2.png', '6819', 'png', 718, 1, '2021-12-25 10:28:21', '2021-12-25 10:28:21'); +INSERT INTO `eb_system_attachment` VALUES (18, 'fe4faf19b35c4dd0baea31f321a521ecpjud7ibsxl.png', '', 'crmebimage/public/maintain/2021/12/25/11113e1876ac427bb3173086a3bd6c5bhyan1ea9pz.png', '1859', 'png', 718, 1, '2021-12-25 10:29:10', '2021-12-25 10:29:10'); +INSERT INTO `eb_system_attachment` VALUES (19, 'b007ec2847d6418ba48c47c04780a972ramfbrjtzm.png', '', 'crmebimage/public/maintain/2021/12/25/c0db7c50e7024a5aaeefdae3bc192c5eerx8f25qrb.png', '4142', 'png', 718, 1, '2021-12-25 10:29:21', '2021-12-25 10:29:21'); +INSERT INTO `eb_system_attachment` VALUES (20, '91d0399d97524e919f75cb0264bd0a96uqm0rmjt0b.png', '', 'crmebimage/public/maintain/2021/12/25/dd497d333f4541d7ae41b2c579706370jhp2x39yrg.png', '2308', 'png', 718, 1, '2021-12-25 10:29:43', '2021-12-25 10:29:43'); +INSERT INTO `eb_system_attachment` VALUES (21, 'a2cfcc4ee73e4679a45e345655edd2ab752wdvzk6j.png', '', 'crmebimage/public/maintain/2021/12/25/77ac54ce5f514ebbb89854f927f2a891dzefr2qxmh.png', '2037', 'png', 718, 1, '2021-12-25 10:29:50', '2021-12-25 10:29:50'); +INSERT INTO `eb_system_attachment` VALUES (22, 'c15e71a4d96f46bb8795603c94d32b1cfb97p3nxnm.png', '', 'crmebimage/public/maintain/2021/12/25/eaec5b3bf0a74de888cd55cfa3cb47ffa5y4mlsvzh.png', '2239', 'png', 718, 1, '2021-12-25 10:29:56', '2021-12-25 10:29:56'); +INSERT INTO `eb_system_attachment` VALUES (23, 'a35edc82ffd840d09bf519d940cb7091enz3s3n683.png', '', 'crmebimage/public/maintain/2021/12/25/d9631b9c1b3641c4a0ab860a99e92d97nfwk9u6upj.png', '1811', 'png', 718, 1, '2021-12-25 10:30:05', '2021-12-25 10:30:05'); +INSERT INTO `eb_system_attachment` VALUES (24, '07850125979f416f97d0d853b942207c0979vj4gf5.png', '', 'crmebimage/public/maintain/2021/12/25/5d6617d3440c4d67802fdf064b77b471qzfen9343d.png', '1343', 'png', 718, 1, '2021-12-25 10:30:13', '2021-12-25 10:30:13'); +INSERT INTO `eb_system_attachment` VALUES (25, '9c9aafdb603e498b8a12226adee28321ywx46bntkt.png', '', 'crmebimage/public/maintain/2021/12/25/5b4c2373aee143c79a2cda64c030e452vc2uhsxy3q.png', '2237', 'png', 718, 1, '2021-12-25 10:30:27', '2021-12-25 10:30:27'); +INSERT INTO `eb_system_attachment` VALUES (26, 'c95d30fae48b459ab2ea2468298b45fdjgnfz6r6sv.png', '', 'crmebimage/public/maintain/2021/12/25/197b96e3a4d24728b4069b0c288326352gcds3duga.png', '2262', 'png', 718, 1, '2021-12-25 10:30:34', '2021-12-25 10:30:34'); +INSERT INTO `eb_system_attachment` VALUES (27, 'df9311e0c5bd4c81a94151cdd5771993p3fxs75e0t.png', '', 'crmebimage/public/maintain/2021/12/25/886e04146694474c966d346222fe2897ealwo6qycj.png', '2053', 'png', 718, 1, '2021-12-25 10:30:41', '2021-12-25 10:30:41'); +INSERT INTO `eb_system_attachment` VALUES (28, '69ab0bf7cf5f4926941d6d9f0c4bdeb8bvb90wktkd.png', '', 'crmebimage/public/maintain/2021/12/25/0624fe22d770438891ad666ebef9e21e1rhiepyec1.png', '2118', 'png', 718, 1, '2021-12-25 10:30:52', '2021-12-25 10:30:52'); +INSERT INTO `eb_system_attachment` VALUES (30, 'eea57fd717fa432786ffb7f10f6a2eb96p20ur1cil.png', '', 'crmebimage/public/maintain/2021/12/25/1369d83740284b6aa0601a0bc0960a050wfmede2py.png', '2932', 'png', 719, 1, '2021-12-25 10:35:44', '2021-12-25 10:35:44'); +INSERT INTO `eb_system_attachment` VALUES (31, 'a3c715971bd3463d90c7a636bc5d33a8r0oan2dt5s.png', '', 'crmebimage/public/maintain/2021/12/25/750c33dcdf134878ba1024c8828a191ardbxljb5qf.png', '12292', 'png', 718, 1, '2021-12-25 10:36:21', '2021-12-25 11:03:30'); +INSERT INTO `eb_system_attachment` VALUES (32, '5b1f0e525f134d77979707372c0380a6xednwualu2.png', '', 'crmebimage/public/maintain/2021/12/25/ff3283593f0444da9038f578fff96bcfguve7bk9pf.png', '10570', 'png', 718, 1, '2021-12-25 10:37:15', '2021-12-25 11:03:30'); +INSERT INTO `eb_system_attachment` VALUES (33, 'cdf7aa541f1c4d5f9a442947091fe3612d6e0rtzx9.jpg', '', 'crmebimage/public/maintain/2021/12/25/980ef8cc00504f15af77712bf1cdde72yc273lnpt3.jpg', '11046', 'jpeg', 721, 1, '2021-12-25 10:40:30', '2021-12-25 10:40:30'); +INSERT INTO `eb_system_attachment` VALUES (34, '35a505c2eee743cc9ac47f0ae61b9f54e5y2tg9js5.jpg', '', 'crmebimage/public/maintain/2021/12/25/22e7a94a8c7a48318e895aa3f23d24f1ecq3mqcdx8.jpg', '9660', 'jpeg', 721, 1, '2021-12-25 10:40:40', '2021-12-25 10:40:40'); +INSERT INTO `eb_system_attachment` VALUES (35, '099901633a374de8b93aa88d7273eb57u2z4naq5je.jpg', '', 'crmebimage/public/maintain/2021/12/25/55014ffb17b74d039b5670298e1047fcyw64lmyzlj.jpg', '7058', 'jpeg', 721, 1, '2021-12-25 10:40:47', '2021-12-25 10:40:47'); +INSERT INTO `eb_system_attachment` VALUES (36, '7442322de8b8466393c07b24812c7ceagayfi78ucc.jpg', '', 'crmebimage/public/maintain/2021/12/25/ea80c26cfb3d441b9b6affd68c62acf5l3ncs7skt9.jpg', '12654', 'jpeg', 721, 1, '2021-12-25 10:40:56', '2021-12-25 10:40:56'); +INSERT INTO `eb_system_attachment` VALUES (37, 'd165ef5cac704798b05e29de0c2f4e69boxn0l2n7f.jpg', '', 'crmebimage/public/maintain/2021/12/25/29a253f8752a46f4b2fb3b63767b4d89v1098p6yiv.jpg', '15042', 'jpeg', 721, 1, '2021-12-25 10:41:04', '2021-12-25 10:41:04'); +INSERT INTO `eb_system_attachment` VALUES (38, '4c901782d14a415d9c602cf95e470f5946ekev33o2.jpg', '', 'crmebimage/public/maintain/2021/12/25/fc4be55bf8c8420f89db87cbe8c2a95fkpar5lv6tw.jpg', '12347', 'jpeg', 721, 1, '2021-12-25 10:41:16', '2021-12-25 10:41:16'); +INSERT INTO `eb_system_attachment` VALUES (39, '3f149aa3119a4b92a45e3a7d648d87eajwc91bdzm8.jpg', '', 'crmebimage/public/maintain/2021/12/25/0e67de5c892047cf8788b9b51d1c4d5al5g2khm62q.jpg', '3725', 'jpeg', 721, 1, '2021-12-25 10:41:23', '2021-12-25 10:41:23'); +INSERT INTO `eb_system_attachment` VALUES (40, 'c0892f1ff9fa430286752b8a48dfe94agnowmoyu4z.jpg', '', 'crmebimage/public/maintain/2021/12/25/9612dab3a9ec44278dc5069c3d484f9388l25e3lxk.jpg', '24258', 'jpeg', 721, 1, '2021-12-25 10:41:31', '2021-12-25 10:41:31'); +INSERT INTO `eb_system_attachment` VALUES (41, '2f238a394bfd427d8d8aadee3ddb1248462zjvu3r7.jpg', '', 'crmebimage/public/maintain/2021/12/25/37901b98fba74345ad0e8a575999ad09n9d3winw2c.jpg', '12248', 'jpeg', 721, 1, '2021-12-25 10:41:39', '2021-12-25 10:41:39'); +INSERT INTO `eb_system_attachment` VALUES (42, 'fd69f8ffce614a46a3b92b976a99058a476sohn24w.jpg', '', 'crmebimage/public/maintain/2021/12/25/8f9eca84e2b14752ad4afb1ab8d06974xua9ambm9y.jpg', '8847', 'jpeg', 721, 1, '2021-12-25 10:41:50', '2021-12-25 10:41:50'); +INSERT INTO `eb_system_attachment` VALUES (43, '86df9901106a45c59d55215756e2d0e4yyp7kczp1i.jpg', '', 'crmebimage/public/maintain/2021/12/25/62414c551db44169a6429c0dd3d162833o6e82okff.jpg', '8426', 'jpeg', 721, 1, '2021-12-25 10:41:58', '2021-12-25 10:41:58'); +INSERT INTO `eb_system_attachment` VALUES (44, '450b5c828df24a20842ec77621a593bf5jaa85101m.jpg', '', 'crmebimage/public/maintain/2021/12/25/800915654d504c4a8da14ab4771b0411146f3w26cg.jpg', '11176', 'jpeg', 721, 1, '2021-12-25 10:42:04', '2021-12-25 10:42:04'); +INSERT INTO `eb_system_attachment` VALUES (45, 'a7fad9cea3f94dd5b3a34c9c05dbcbb6dhg8f9dmnb.jpg', '', 'crmebimage/public/maintain/2021/12/25/dc9a2481719445d49f045bc18c265dccqww5ieybh3.jpg', '11855', 'jpeg', 721, 1, '2021-12-25 10:42:17', '2021-12-25 10:42:17'); +INSERT INTO `eb_system_attachment` VALUES (46, 'afbfa9719ca648ca97d158c79e9cad793ln7e5a7jb.jpg', '', 'crmebimage/public/maintain/2021/12/25/2eef89b403dd47619e349e3edb057ce4g2clr5d4xn.jpg', '11582', 'jpeg', 721, 1, '2021-12-25 10:42:26', '2021-12-25 10:42:26'); +INSERT INTO `eb_system_attachment` VALUES (47, '4ef2bbb5067f4c838b2c1bc0d7d3cfbekromfdrf2l.png', '', 'crmebimage/public/maintain/2021/12/25/02805afbe2964016a7ec11dc723273634a65204z4d.png', '137246', 'png', 721, 1, '2021-12-25 10:42:33', '2021-12-25 10:42:33'); +INSERT INTO `eb_system_attachment` VALUES (48, '769d0166bbf1473e80122304d5ce8b21ue1eo7325t.jpg', '', 'crmebimage/public/maintain/2021/12/25/86f83bdc35534eeda2fb4daeb51dbb28pizkxqnzap.jpg', '11698', 'jpeg', 721, 1, '2021-12-25 10:42:41', '2021-12-25 10:42:41'); +INSERT INTO `eb_system_attachment` VALUES (49, 'e15f9a3d323243f09b794a9f3eb92e395b64y3y4zv.jpg', '', 'crmebimage/public/maintain/2021/12/25/432cb941d4f64f4c88d2d3a8b784f282kqlp2cu55l.jpg', '12104', 'jpeg', 721, 1, '2021-12-25 10:42:48', '2021-12-25 10:42:48'); +INSERT INTO `eb_system_attachment` VALUES (50, '0c26d73542594c24be0fc0f0c86df04en524w3tgh0.jpg', '', 'crmebimage/public/maintain/2021/12/25/4811fe50a33f48309337e67c3d36318exseuh6qys6.jpg', '13293', 'jpeg', 721, 1, '2021-12-25 10:42:55', '2021-12-25 10:42:55'); +INSERT INTO `eb_system_attachment` VALUES (51, '061463374f084111bd1ea7ff8efb9e6f9q6z7246xp.jpg', '', 'crmebimage/public/maintain/2021/12/25/73f9c6c1b14445b5bb477e8c05d8a2763sfij1gamk.jpg', '12894', 'jpeg', 721, 1, '2021-12-25 10:43:10', '2021-12-25 10:43:10'); +INSERT INTO `eb_system_attachment` VALUES (52, 'a6959d39961a4d7fa5c42f7479bfe853mf2j5y207g.jpg', '', 'crmebimage/public/maintain/2021/12/25/7beeefdecba6465d93fae9ec9ae952bde1fprb1tqi.jpg', '48892', 'jpeg', 721, 1, '2021-12-25 10:43:17', '2021-12-25 10:43:17'); +INSERT INTO `eb_system_attachment` VALUES (53, 'fc6bbd39a9c244a8b8697ec74b096258ltkiim3ias.png', '', 'crmebimage/public/maintain/2021/12/25/3a395df3d79a40a08cbc938c35e2dc35b84sujo2yn.png', '90279', 'png', 721, 1, '2021-12-25 10:43:29', '2021-12-25 10:43:29'); +INSERT INTO `eb_system_attachment` VALUES (54, '3ad1dd1e69a84dd3b2c6182198c7f5d0f3j4hxypxe.jpg', '', 'crmebimage/public/maintain/2021/12/25/a272fcefed804cf2b1e6785d5662c29ejqjxha0eow.jpg', '40991', 'jpeg', 721, 1, '2021-12-25 10:43:45', '2021-12-25 10:43:45'); +INSERT INTO `eb_system_attachment` VALUES (55, '81b545270bbf443c84a33e7dc0335224twn9esewp5.jpg', '', 'crmebimage/public/maintain/2021/12/25/03cc34d0bb3f4bbcafa751462a2783c35u00exmfji.jpg', '41951', 'jpeg', 721, 1, '2021-12-25 10:43:53', '2021-12-25 10:43:53'); +INSERT INTO `eb_system_attachment` VALUES (56, '1a6318ea870043eba1daec9bdcc2b998a5tuyn7gsj.jpg', '', 'crmebimage/public/maintain/2021/12/25/fb364676ea364297b7441638f9e0f557dckg4t2rds.jpg', '18503', 'jpeg', 721, 1, '2021-12-25 10:43:58', '2021-12-25 10:43:58'); +INSERT INTO `eb_system_attachment` VALUES (57, '2d1e3f9c640c42259988c1f2ba097cab1l9rwd6k8o.png', '', 'crmebimage/public/maintain/2021/12/25/a574f30b250941a7b3c0dd534e89df348n7shpz7t1.png', '10124', 'png', 722, 1, '2021-12-25 10:45:24', '2021-12-25 10:45:24'); +INSERT INTO `eb_system_attachment` VALUES (58, '48a2d36c676d4d64b0db145c5fd4cb0bnkbkwzx3u3.png', '', 'crmebimage/public/maintain/2021/12/25/f8fa9ebb978f4564a1b6bdd145de5303fmswbc6mlr.png', '9336', 'png', 722, 1, '2021-12-25 10:45:24', '2021-12-25 10:45:24'); +INSERT INTO `eb_system_attachment` VALUES (59, '10947a963ca04408a2e2c7ef730cf771kw84thv3zz.png', '', 'crmebimage/public/maintain/2021/12/25/e14049cfd2a3435abb4cdb938a52a3fbtd8uoupja1.png', '9910', 'png', 722, 1, '2021-12-25 10:45:24', '2021-12-25 10:45:24'); +INSERT INTO `eb_system_attachment` VALUES (60, '8f2609b341c547ad8cc1eb61f9f1ec55joy9yjqyad.png', '', 'crmebimage/public/maintain/2021/12/25/dfa88bc269de407f95febe418269b65dlp2boy3pkr.png', '11047', 'png', 722, 1, '2021-12-25 10:45:24', '2021-12-25 10:45:24'); +INSERT INTO `eb_system_attachment` VALUES (61, 'efbfa787584446e4b412d4c4ec1b8c46qcoju9m76v.png', '', 'crmebimage/public/maintain/2021/12/25/c959d47d07a64b14843ba67dfa5b3fe6j2c32uq6h0.png', '10085', 'png', 722, 1, '2021-12-25 10:45:24', '2021-12-25 10:45:24'); +INSERT INTO `eb_system_attachment` VALUES (62, 'a349b548ddf14a859b574a79617db141eno4knazt1.png', '', 'crmebimage/public/maintain/2021/12/25/b96a241b6683440fb19d26ed90189273fyp23gsevb.png', '10009', 'png', 722, 1, '2021-12-25 10:45:24', '2021-12-25 10:45:24'); +INSERT INTO `eb_system_attachment` VALUES (63, '87c89c4e6484495fbd769eb97759650ds27rsdn1qq.png', '', 'crmebimage/public/maintain/2021/12/25/0c32e97956d34f6e8a8b67caacec685283ufh1vuoy.png', '10428', 'png', 722, 1, '2021-12-25 10:45:24', '2021-12-25 10:45:24'); +INSERT INTO `eb_system_attachment` VALUES (64, '2755d049cda548729432d8a6dc5f3468spjlx65qm6.png', '', 'crmebimage/public/maintain/2021/12/25/e9d9bc38164f417b968d368d1158acf0sxq8tuqq5h.png', '10496', 'png', 722, 1, '2021-12-25 10:45:24', '2021-12-25 10:45:24'); +INSERT INTO `eb_system_attachment` VALUES (65, '1936d1a9c76249b7bc37461645f2e952uc0yw0bhq5.png', '', 'crmebimage/public/maintain/2021/12/25/7b93fd438d974bf2a7b999e2e3a24880ggis08twkr.png', '10560', 'png', 722, 1, '2021-12-25 10:45:24', '2021-12-25 10:45:24'); +INSERT INTO `eb_system_attachment` VALUES (66, '5223c2dd64ab4517bab59f9b9b473cd07t0sa4uksx.png', '', 'crmebimage/public/maintain/2021/12/25/e739d5a88c2141a0b346e1bdb1d8e2dea6ktbegtad.png', '10533', 'png', 722, 1, '2021-12-25 10:45:24', '2021-12-25 10:45:24'); +INSERT INTO `eb_system_attachment` VALUES (67, '9456b16028e941d48386e26a7b8b17e7un0n7uopr7.png', '', 'crmebimage/public/maintain/2021/12/25/568f2d58e43a4dd9bae304e2112025bben74m2lpt9.png', '10743', 'png', 722, 1, '2021-12-25 10:45:24', '2021-12-25 10:45:24'); +INSERT INTO `eb_system_attachment` VALUES (68, '29709488ba29464d948790fb23fecb53rqs8rwcbrf.png', '', 'crmebimage/public/maintain/2021/12/25/afd2e837f9fe40e8998a9f3c37fb4d9cvnz3qsdfl2.png', '10698', 'png', 722, 1, '2021-12-25 10:45:24', '2021-12-25 10:45:24'); +INSERT INTO `eb_system_attachment` VALUES (69, '6def899519f84f2b992492cbe267da141m7ugq21gr.png', '', 'crmebimage/public/maintain/2021/12/25/6f98afe5e63d4626a20ed710dc380d5bmc5a0w5phh.png', '3629', 'png', 723, 1, '2021-12-25 10:46:25', '2021-12-25 10:46:25'); +INSERT INTO `eb_system_attachment` VALUES (70, 'b2d091363fc34fdf8bc737c2f978bc090j7hxbnank.png', '', 'crmebimage/public/maintain/2021/12/25/c71d6b74594e4f47a986abda5d5bf983o4drst1ojf.png', '3894', 'png', 723, 1, '2021-12-25 10:46:25', '2021-12-25 10:46:25'); +INSERT INTO `eb_system_attachment` VALUES (71, 'ce34f7cf454846a28b152049ba5494417vok0wvl7l.png', '', 'crmebimage/public/maintain/2021/12/25/a1470da9ce7f44e3a0248f519b0b02844efygohg3b.png', '4248', 'png', 723, 1, '2021-12-25 10:46:25', '2021-12-25 10:46:25'); +INSERT INTO `eb_system_attachment` VALUES (72, '197514463aad4dbf88cd4266ad35254a18dwgv0dt8.png', '', 'crmebimage/public/maintain/2021/12/25/0353c775de384b939cd994ac33b6c3f4m328kwji83.png', '5110', 'png', 723, 1, '2021-12-25 10:46:25', '2021-12-25 10:46:25'); +INSERT INTO `eb_system_attachment` VALUES (73, '703948f0db5a453f8be387323fe82f80wyw14ya38y.png', '', 'crmebimage/public/maintain/2021/12/25/33a35c7b85de4fec8ed148fc6f3e8e670itip8qtor.png', '4699', 'png', 723, 1, '2021-12-25 10:46:25', '2021-12-25 10:46:25'); +INSERT INTO `eb_system_attachment` VALUES (74, '2fae2d2af91440c1ad338b2b23983dfa671mdk4l3t.jpg', '', 'crmebimage/public/maintain/2021/12/25/74e6bf23d0284c22ac1ca7837a3927ea5mej4ww8aa.jpg', '63753', 'jpeg', 725, 1, '2021-12-25 10:49:33', '2021-12-25 10:49:33'); +INSERT INTO `eb_system_attachment` VALUES (75, '25be80de52794dc09582ec299866afeejvtyjuzef5.png', '', 'crmebimage/public/maintain/2021/12/25/f7d89b2f45d740e6b87cc0dc46356b21h0tn9ouid7.png', '5585', 'png', 726, 1, '2021-12-25 10:51:14', '2021-12-25 10:51:14'); +INSERT INTO `eb_system_attachment` VALUES (76, 'fcd20673fac14df59f4dbec7318775832i1bp92r6f.png', '', 'crmebimage/public/maintain/2021/12/25/7486f062431740098cb0923fec8d42f1pv9kxnbiag.png', '5267', 'png', 726, 1, '2021-12-25 10:51:14', '2021-12-25 10:51:14'); +INSERT INTO `eb_system_attachment` VALUES (77, '7ee3cccb2a55477ca65f89b63bfb10a1a7scec02cg.png', '', 'crmebimage/public/maintain/2021/12/25/4bedfd95c947443685603bf08bae6947aw468cpz1y.png', '6113', 'png', 726, 1, '2021-12-25 10:51:14', '2021-12-25 10:51:14'); +INSERT INTO `eb_system_attachment` VALUES (78, '469e1c1992ef4131bfc06b74a2d1d4a6eon5l14smv.png', '', 'crmebimage/public/maintain/2021/12/25/206799794c1b4602aa94340279bc36946x7jz72lzl.png', '6414', 'png', 726, 1, '2021-12-25 10:51:14', '2021-12-25 10:51:14'); +INSERT INTO `eb_system_attachment` VALUES (79, '09b558899fca4a6daf0697865f976ebcwomw4hiucq.png', '', 'crmebimage/public/maintain/2021/12/25/41622a74c8944f6cb7afac2e1d09da22wwjweacn72.png', '7182', 'png', 726, 1, '2021-12-25 10:51:14', '2021-12-25 10:51:14'); +INSERT INTO `eb_system_attachment` VALUES (80, '500ba94e851f4859bd94f3233087bd27bn6fshafhn.png', '', 'crmebimage/public/maintain/2021/12/25/62afae7a0cea4401b2286715b2a5f69dsegpwwtsx2.png', '7407', 'png', 726, 1, '2021-12-25 10:51:14', '2021-12-25 10:51:14'); +INSERT INTO `eb_system_attachment` VALUES (81, '5fb47c83d82844f9ac66fd9c8c8bdece4sf74p74vy.png', '', 'crmebimage/public/maintain/2021/12/25/e78b705b1b2644c7a346faee51fcdd08qgtywp55en.png', '5122', 'png', 726, 1, '2021-12-25 10:51:14', '2021-12-25 10:51:14'); +INSERT INTO `eb_system_attachment` VALUES (82, 'da156b61398941aaa85b3b123eb06ed0skzo02qy47.png', '', 'crmebimage/public/maintain/2021/12/25/4410717d904943c6833933be3631787a7rva238ji2.png', '7119', 'png', 726, 1, '2021-12-25 10:51:27', '2021-12-25 10:51:27'); +INSERT INTO `eb_system_attachment` VALUES (83, '27124cbf8035454a88869fac73d28b13vw8ro086g9.png', '', 'crmebimage/public/maintain/2021/12/25/7824e193be8b4b29a0d895b15ad429b1z5l6m2hkvv.png', '5639', 'png', 728, 1, '2021-12-25 10:52:39', '2021-12-25 10:52:39'); +INSERT INTO `eb_system_attachment` VALUES (84, '10b75c511b574a4d8028af9786911862bqf19hm7zm.png', '', 'crmebimage/public/maintain/2021/12/25/84ed45fcdaf04ae3a53c9bc65f304fcepm3ioshj7j.png', '5160', 'png', 728, 1, '2021-12-25 10:52:46', '2021-12-25 10:52:46'); +INSERT INTO `eb_system_attachment` VALUES (85, '2609d7d2b928408b920f599ffa6a2dd8wrsb2xwpg8.png', '', 'crmebimage/public/maintain/2021/12/25/33d6b8f635384c85abf8912771dd89c5gf0qu8zfk9.png', '6250', 'png', 728, 1, '2021-12-25 10:52:53', '2021-12-25 10:52:53'); +INSERT INTO `eb_system_attachment` VALUES (86, '8b9058611ce44cfaab2e430a6416d475zpeb8b02ja.png', '', 'crmebimage/public/maintain/2021/12/25/e8737e822d1c47a698b9ed16e4cd627aodkc2o145w.png', '5676', 'png', 728, 1, '2021-12-25 10:53:01', '2021-12-25 10:53:01'); +INSERT INTO `eb_system_attachment` VALUES (87, '41259a2154bc416ab1a4388b0d67f6673u4zb33li0.png', '', 'crmebimage/public/maintain/2021/12/25/aaaa1ea4a9f64baabc08b7a30205e720qazetub0ha.png', '6624', 'png', 728, 1, '2021-12-25 10:53:08', '2021-12-25 10:53:08'); +INSERT INTO `eb_system_attachment` VALUES (88, '942645ac55da46b280c5e26bddb195f8c43wgzoc2m.png', '', 'crmebimage/public/maintain/2021/12/25/354c461aab964049b3d276a8588977a8ugvejjqbox.png', '6109', 'png', 728, 1, '2021-12-25 10:53:22', '2021-12-25 10:53:22'); +INSERT INTO `eb_system_attachment` VALUES (89, '91f697edfbc1422dbcef2a08e195d930zqntlbixi7.png', '', 'crmebimage/public/maintain/2021/12/25/8bb005bbf2fe4a168ed4c938063a1a6bgnj6w42pyb.png', '5898', 'png', 728, 1, '2021-12-25 10:53:31', '2021-12-25 10:53:31'); +INSERT INTO `eb_system_attachment` VALUES (90, 'b61f278230cc439aa0d2e5975fe6abfdo2hzq7eyje.png', '', 'crmebimage/public/maintain/2021/12/25/010f3a33b48846a39c2c086b4a289fa1c0aply6wjn.png', '5673', 'png', 728, 1, '2021-12-25 10:53:46', '2021-12-25 10:53:46'); +INSERT INTO `eb_system_attachment` VALUES (91, 'e6f0a3c07ec04a4c86101a184e6baf53ihsryirylp.png', '', 'crmebimage/public/maintain/2021/12/25/9b50f61c6ff748f0b491b971fe9b9d105p0d1echuu.png', '5707', 'png', 728, 1, '2021-12-25 10:54:02', '2021-12-25 10:54:02'); +INSERT INTO `eb_system_attachment` VALUES (92, 'cb2ddac8bffd4416a52da77e0318c2edgcpttd17tp.png', '', 'crmebimage/public/maintain/2021/12/25/31a9c9c08ae84c33879f8709a98877cb0tr5hsoh0p.png', '5768', 'png', 728, 1, '2021-12-25 10:54:17', '2021-12-25 10:54:17'); +INSERT INTO `eb_system_attachment` VALUES (93, 'e280c28aab694bfaad656fd1c3af2f2cljnh8kf4ef.png', '', 'crmebimage/public/maintain/2021/12/25/d2fff77310724a9999c1e0e97eac0b3830n6cpnhxp.png', '6086', 'png', 729, 1, '2021-12-25 10:54:46', '2021-12-25 10:54:46'); +INSERT INTO `eb_system_attachment` VALUES (94, 'd43066089b8348c68a9e3ef4e5d7419cgy5lc3ve12.png', '', 'crmebimage/public/maintain/2021/12/25/907de1e2b8b048da9e75cfe48f27aaab42n9a7n2jr.png', '5927', 'png', 729, 1, '2021-12-25 10:55:59', '2021-12-25 10:55:59'); +INSERT INTO `eb_system_attachment` VALUES (95, '2fdb834b2e4b4e61a16d26947b95de9886cgcd7azf.png', '', 'crmebimage/public/maintain/2021/12/25/3dac9309ddfd46b08f67e4b1a2bf08d3bf2mp09gow.png', '7004', 'png', 729, 1, '2021-12-25 10:56:33', '2021-12-25 10:56:33'); +INSERT INTO `eb_system_attachment` VALUES (96, '053f666cee0f438aa8047d7d8a6e0c61u8fuc1uy6v.png', '', 'crmebimage/public/maintain/2021/12/25/723c114372764a8d8344ffaf1606eea19m9rxjx1vf.png', '6278', 'png', 729, 1, '2021-12-25 10:56:33', '2021-12-25 10:56:33'); +INSERT INTO `eb_system_attachment` VALUES (97, '761d3f3ceb0c4c8f81dbd864553d791b9fgooi0vg9.png', '', 'crmebimage/public/maintain/2021/12/25/bcc7fb293bfb471cbbebfadd8e6c150ey9n8o2vsnu.png', '6935', 'png', 729, 1, '2021-12-25 10:56:33', '2021-12-25 10:56:33'); +INSERT INTO `eb_system_attachment` VALUES (98, 'c90839d3b1ae4df9b566ca486f345770u9kpbni7lc.png', '', 'crmebimage/public/maintain/2021/12/25/85b457e6ed29491e98e1789a96a00353bs4cpvc7we.png', '5974', 'png', 729, 1, '2021-12-25 10:56:33', '2021-12-25 10:56:33'); +INSERT INTO `eb_system_attachment` VALUES (99, '052d6efaba464e6c8c8b58cd52d43282m5juuomfaa.png', '', 'crmebimage/public/maintain/2021/12/25/19242c389ab749d1b7dece74000b26204j7q3sirs1.png', '7679', 'png', 729, 1, '2021-12-25 10:56:33', '2021-12-25 10:56:33'); +INSERT INTO `eb_system_attachment` VALUES (100, 'b6e6c55077964456bd6bcf285b118ebc02aeb11tlj.png', '', 'crmebimage/public/maintain/2021/12/25/f65b4fa1948a4dabbfc60a02aa8ca942bmxlxykd9i.png', '7626', 'png', 729, 1, '2021-12-25 10:56:33', '2021-12-25 10:56:33'); +INSERT INTO `eb_system_attachment` VALUES (101, 'bff7ac7aee374cb4a73d8234b2b918900u60xlqzmg.png', '', 'crmebimage/public/maintain/2021/12/25/f71c687274cf42ed9757e5cf658cbfb9v1rgcok7j4.png', '7520', 'png', 729, 1, '2021-12-25 10:56:33', '2021-12-25 10:56:33'); +INSERT INTO `eb_system_attachment` VALUES (102, 'd3dd74172f2c4887a291213012be5fb3tnw10pcczw.png', '', 'crmebimage/public/maintain/2021/12/25/14e4ecbdbfcb48909b4a7f93b2ce6a3e360qlj0rtb.png', '7976', 'png', 729, 1, '2021-12-25 10:56:33', '2021-12-25 10:56:33'); +INSERT INTO `eb_system_attachment` VALUES (103, '7a78ce5c771c47a286d3a7a2c549da004n1xcx46il.png', '', 'crmebimage/public/maintain/2021/12/25/aaee8de98d1b4e62961cceb35f9ea627j69xdnj980.png', '21401', 'png', 730, 1, '2021-12-25 11:13:13', '2021-12-25 11:13:13'); +INSERT INTO `eb_system_attachment` VALUES (104, '72bcc4cf344e43dc97ad2d16e6c59166niu9ag5mv1.png', '', 'crmebimage/public/maintain/2021/12/25/40965a4dc1504b1fb360a942380996ee11bsimpqs3.png', '21746', 'png', 730, 1, '2021-12-25 11:13:13', '2021-12-25 11:13:13'); +INSERT INTO `eb_system_attachment` VALUES (105, '3a8298dc352546bba3cc795ea572e160xp4quc3cgx.png', '', 'crmebimage/public/maintain/2021/12/25/cf5a4a7e233c4fe2bb9a554f74439921jcfgsu0dgg.png', '22311', 'png', 730, 1, '2021-12-25 11:13:13', '2021-12-25 11:13:13'); +INSERT INTO `eb_system_attachment` VALUES (106, 'b457858423d54a52bcbf9d2ea7fa6c69wr7yapx27t.png', '', 'crmebimage/public/maintain/2021/12/25/961eeb398bae4e60a520d5abf04f02335vlh98hjuc.png', '22198', 'png', 730, 1, '2021-12-25 11:13:13', '2021-12-25 11:13:13'); +INSERT INTO `eb_system_attachment` VALUES (107, '16f7c6ee0cca4f139a03beb27f45916bldcmu1y7h4.png', '', 'crmebimage/public/maintain/2021/12/25/5f08b84f574045da85e27548c5728ea3iwwv9b54dw.png', '22355', 'png', 730, 1, '2021-12-25 11:13:13', '2021-12-25 11:13:13'); +INSERT INTO `eb_system_attachment` VALUES (108, '73b69941ffea402782ee8bfdb003b5d9lrmjslzmgp.png', '', 'crmebimage/public/maintain/2021/12/25/a2de0cb2c98e4c75be050949c4ffd602fvi2dw8tvl.png', '22365', 'png', 730, 1, '2021-12-25 11:13:13', '2021-12-25 11:13:13'); +INSERT INTO `eb_system_attachment` VALUES (109, '1374d9f92a14488d8e72f4c544c0db42g1x8tfjln0.png', '', 'crmebimage/public/maintain/2021/12/25/8cf2817ac6ca4deb8ee956661e4ffd16m2u1lto2nu.png', '22663', 'png', 730, 1, '2021-12-25 11:13:13', '2021-12-25 11:13:13'); +INSERT INTO `eb_system_attachment` VALUES (110, '6630dc4064cb46ebbf06c5365f06958ek0wzveiqf1.png', '', 'crmebimage/public/maintain/2021/12/25/6fcb5bd8f5dd4ba3a485e572de6b22b6bnt364bw4z.png', '23172', 'png', 730, 1, '2021-12-25 11:13:13', '2021-12-25 11:13:13'); +INSERT INTO `eb_system_attachment` VALUES (111, 'bfa996bb9cc64dff963bf58c8a806191gswi5v3h7j.png', '', 'crmebimage/public/maintain/2021/12/25/be891e57d9a74f8291d41a30b1e6f49che4zty98dx.png', '23270', 'png', 730, 1, '2021-12-25 11:13:13', '2021-12-25 11:13:13'); +INSERT INTO `eb_system_attachment` VALUES (112, 'c8168b4a81b6440fa4a08b7c6a5aa1c9970wdw79l1.png', '', 'crmebimage/public/maintain/2021/12/25/25077b4a4d654f9fa738b7433a118d4552177mpsc5.png', '22612', 'png', 730, 1, '2021-12-25 11:13:13', '2021-12-25 11:13:13'); +INSERT INTO `eb_system_attachment` VALUES (113, '0ef43e03b2224bfe94890d0acdbba6ca8ljov1r5oh.png', '', 'crmebimage/public/maintain/2021/12/25/8c9a5bfa049d4c56817318cd5ff405507t3jozdncn.png', '1883', 'png', 0, 1, '2021-12-25 11:30:10', '2021-12-25 11:30:10'); +INSERT INTO `eb_system_attachment` VALUES (114, '1e59f1f7425947f395be89719c594a49vpg391j3tr.png', '', 'crmebimage/public/maintain/2021/12/25/04fae7b9bc9a44e899ea8f6fbce1600aexehrjdj82.png', '2234', 'png', 0, 1, '2021-12-25 11:30:10', '2021-12-25 11:30:10'); +INSERT INTO `eb_system_attachment` VALUES (115, '5e8a99746811433eb99d0adae52ef45dqhlu75hy1t.png', '', 'crmebimage/public/maintain/2021/12/25/78ab644d84bc4e858adf6b4f83774125p0uz4p70sb.png', '2642', 'png', 0, 1, '2021-12-25 11:30:10', '2021-12-25 11:30:10'); +INSERT INTO `eb_system_attachment` VALUES (116, '08b738e369e74dbcbc5716a70dd923e2x8cdi2pz4o.png', '', 'crmebimage/public/maintain/2021/12/25/aeb852fe04e946fbaf8f166234d2984blhbejw91jj.png', '1368', 'png', 0, 1, '2021-12-25 11:30:10', '2021-12-25 11:30:10'); +INSERT INTO `eb_system_attachment` VALUES (117, '07efcf22c61e45f3aea40e5a12aaa9faa1nnlfz7wa.png', '', 'crmebimage/public/maintain/2021/12/25/cdce16eb7eba4346acb59c6d642e088f5cbhgz2yw9.png', '1988', 'png', 0, 1, '2021-12-25 11:30:10', '2021-12-25 11:30:10'); +INSERT INTO `eb_system_attachment` VALUES (118, '36a12d4a8beb4c49be4ad7c1c95924422d7xx1iit7.png', '', 'crmebimage/public/maintain/2021/12/25/7a0ce84c43fd470e8f960a6c463ffb98npn9grvkpb.png', '1759', 'png', 0, 1, '2021-12-25 11:30:11', '2021-12-25 11:30:11'); +INSERT INTO `eb_system_attachment` VALUES (119, '54362ba5c45d4774bda6113abf746b39nhpqbam7c1.png', '', 'crmebimage/public/maintain/2021/12/25/0517e880a70b4c539ff9163c90ab21f9hz0bea05p7.png', '1043', 'png', 0, 1, '2021-12-25 11:30:11', '2021-12-25 11:30:11'); +INSERT INTO `eb_system_attachment` VALUES (120, '828f91bef4824ff5b26147b7b5cdf3acboqbcq6dob.png', '', 'crmebimage/public/maintain/2021/12/25/3a21cc3f53444cd98078c5244a9472ac7r8mnpdj19.png', '1810', 'png', 0, 1, '2021-12-25 11:30:11', '2021-12-25 11:30:11'); +INSERT INTO `eb_system_attachment` VALUES (121, '48448d523bb44b6bae7eef5c5859ae1eb2washh679.png', '', 'crmebimage/public/maintain/2021/12/25/b4a1b5595add488db6a1a16c2dd45ec8lp8en2gask.png', '1833', 'png', 0, 1, '2021-12-25 11:30:11', '2021-12-25 11:30:11'); +INSERT INTO `eb_system_attachment` VALUES (122, 'a8bbc0e442934be5aa894f057e06e7c0plwa7sdyp6.png', '', 'crmebimage/public/maintain/2021/12/25/4336d25a226a4df1913369fd82ec8c53mre4nruc5s.png', '2680', 'png', 0, 1, '2021-12-25 11:30:11', '2021-12-25 11:30:11'); +INSERT INTO `eb_system_attachment` VALUES (123, 'a8763beb17bb4173a93b4a7bd989e1753ortwzjf5m.png', '', 'crmebimage/public/maintain/2021/12/25/7e1777f0b47b4a14952891aa4f1b8458hiyqi9zu5t.png', '1867', 'png', 0, 1, '2021-12-25 11:30:11', '2021-12-25 11:30:11'); +INSERT INTO `eb_system_attachment` VALUES (124, 'd91b92c45c774189a3261e6909708fe5bjqdreuh8i.png', '', 'crmebimage/public/maintain/2021/12/25/2a8554bcbf1b4396afef370f9255df19sacbmpcodn.png', '2020', 'png', 0, 1, '2021-12-25 11:30:11', '2021-12-25 11:30:11'); +INSERT INTO `eb_system_attachment` VALUES (125, '93fab393506c42aebc5ee3e173ef5113udqa262mxb.png', '', 'crmebimage/public/maintain/2021/12/25/46d9b5a7e9e24fceb31c80eb6f31e2c7u4birl7vr1.png', '2429', 'png', 0, 1, '2021-12-25 11:30:11', '2021-12-25 11:30:11'); +INSERT INTO `eb_system_attachment` VALUES (126, 'fa4a3bb703b74f24bff8beb5043f5673ubh7c2p722.png', '', 'crmebimage/public/maintain/2021/12/25/3308f2d779874079b0e02ae206cf141bwb23ii2z52.png', '1781', 'png', 0, 1, '2021-12-25 11:30:11', '2021-12-25 11:30:11'); +INSERT INTO `eb_system_attachment` VALUES (127, '154cf15703fc46088c98bde59d1e2105ncndtqe9x6.png', '', 'crmebimage/public/maintain/2021/12/25/a498ea7fd9f74c4f812518c40c93fa79gtx5zeq28l.png', '2463', 'png', 0, 1, '2021-12-25 11:30:11', '2021-12-25 11:30:11'); +INSERT INTO `eb_system_attachment` VALUES (128, '769d80d3ee3f4e2caa5fd89ba72f8a94pczcozqyv7.png', '', 'crmebimage/public/maintain/2021/12/25/3316070ce6bb49aab05776cd21d91b21pra6fxiblz.png', '1582', 'png', 0, 1, '2021-12-25 11:30:11', '2021-12-25 11:30:11'); +INSERT INTO `eb_system_attachment` VALUES (129, 'd8f6833c996e463b8b9e45cce9806b17mu80wxr2qd.png', '', 'crmebimage/public/maintain/2021/12/25/b73c648fb7fd45cf8782e4ca0bc28a42s2a8dpad2x.png', '1784', 'png', 0, 1, '2021-12-25 11:30:11', '2021-12-25 11:30:11'); +INSERT INTO `eb_system_attachment` VALUES (130, '022cd7488e4943c9bc3486972333808ei8kfpmnprf.jpg', '', 'crmebimage/public/maintain/2021/12/25/1618a47e11e745ff90c70f752c204e17qi6vjngrcd.jpg', '13292', 'jpeg', 721, 1, '2021-12-25 11:31:24', '2021-12-25 11:31:24'); +INSERT INTO `eb_system_attachment` VALUES (131, 'bad2c470df6541c8b3ccca32f3fb016d3as9aofdsv.png', '', 'crmebimage/public/maintain/2021/12/25/5267cf5c9aad49fa8b2699fe9c5344bbsw99nmba85.png', '268610', 'png', 732, 1, '2021-12-25 11:32:34', '2021-12-25 11:32:34'); +INSERT INTO `eb_system_attachment` VALUES (132, '4ad73d4da5d941a59e3b02f9e817753d3adj4by4ij.png', '', 'crmebimage/public/maintain/2021/12/25/9efdb0a56b6643b8b4a42f7586b5a731bv3ouokg2s.png', '364279', 'png', 732, 1, '2021-12-25 11:32:35', '2021-12-25 11:32:35'); +INSERT INTO `eb_system_attachment` VALUES (133, '62616ba81c0f497aa428606a7b7975670pa8jtg0fy.jpg', '', 'crmebimage/public/maintain/2021/12/25/9dcafbf40f4a43909ef991338583e633qh2zl6rdwi.jpg', '43764', 'jpeg', 721, 1, '2021-12-25 11:36:37', '2021-12-25 11:36:37'); +INSERT INTO `eb_system_attachment` VALUES (134, 'a1776e227d664802988567151f48099dxcxp60f0as.jpg', '', 'crmebimage/public/maintain/2021/12/25/488a6dd9c9954b5b995d96908ca5fdb9qw0hda3qr8.jpg', '105365', 'jpeg', 721, 1, '2021-12-25 11:36:38', '2021-12-25 11:36:38'); +INSERT INTO `eb_system_attachment` VALUES (135, 'fc52645e75ee4891b999930220759260fy3tpdists.jpg', '', 'crmebimage/public/maintain/2021/12/25/bafcd155124643c49fa9cc750d0190fa5iru6zsc8m.jpg', '46365', 'jpeg', 732, 1, '2021-12-25 11:38:40', '2021-12-25 11:38:40'); +INSERT INTO `eb_system_attachment` VALUES (136, '279b12238a284b799b3b9cf04dce8300li0hm1ufvb.jpg', '', 'crmebimage/public/maintain/2021/12/25/5f08bcbb6d1a47a0baa96abb9a3d32bbpyujua6ecm.jpg', '121594', 'jpeg', 721, 1, '2021-12-25 11:42:49', '2021-12-25 11:42:49'); +INSERT INTO `eb_system_attachment` VALUES (137, '0ec1c8ee47a54a34848cff35d2b822e667jgcnk9wl.gif', '', 'crmebimage/public/maintain/2021/12/25/d9dffd9eccbc40e0bc01553846c391b3vj8fuux52d.gif', '58054', 'gif', 719, 1, '2021-12-25 11:44:41', '2021-12-25 11:44:41'); +INSERT INTO `eb_system_attachment` VALUES (138, '38d18454d2644385bec4d17bc2d47fcfa84a36ea6m.png', '', 'crmebimage/public/maintain/2021/12/25/8cf6cd4fd29c4a59a094ba028c8f3f4czyd21fctzc.png', '24056', 'png', 719, 1, '2021-12-25 11:45:11', '2021-12-25 11:45:11'); +INSERT INTO `eb_system_attachment` VALUES (139, 'aa6e46fd9fbd424e8cb636a34db50176nj0e4r0f6o.png', '', 'crmebimage/public/maintain/2021/12/25/7de81090b87a4325a603e056a660c620q50t3etnee.png', '2081', 'png', 719, 1, '2021-12-25 11:45:42', '2021-12-25 11:45:42'); +INSERT INTO `eb_system_attachment` VALUES (140, '5704ed07f0f14b04a48d67b22d1bf15cphquh484q8.png', '', 'crmebimage/public/maintain/2021/12/25/ae020f17148b4cc19bcab221c0836dd1iy0vrck2jm.png', '67820', 'png', 732, 1, '2021-12-25 11:46:35', '2021-12-25 11:46:35'); +INSERT INTO `eb_system_attachment` VALUES (141, 'ebb7dc10cd2c420ea4a844a3e5a8dcaaxiffsovm73.png', '', 'crmebimage/public/maintain/2021/12/25/e07dda98525d4226818de310cb3c21ae6hg5f2sv5m.png', '84701', 'png', 732, 1, '2021-12-25 11:46:43', '2021-12-25 11:46:43'); +INSERT INTO `eb_system_attachment` VALUES (142, 'e5b530d4a2e04f1fad1b9f78c654850auxf8xn6ait.png', '', 'crmebimage/public/maintain/2021/12/25/ec49b431bee545e09abc3dc294d1e54669dtn9bvuy.png', '138991', 'png', 732, 1, '2021-12-25 11:46:43', '2021-12-25 11:46:43'); +INSERT INTO `eb_system_attachment` VALUES (143, 'a231a2f3798247b091cb84e749c0e467y0fxu8om1b.png', '', 'crmebimage/public/maintain/2021/12/25/9bd5d3800bc34ace8e980251dd40bbf2ma64ym9653.png', '7899', 'png', 719, 1, '2021-12-25 11:48:45', '2021-12-25 11:48:45'); +INSERT INTO `eb_system_attachment` VALUES (144, '微信截图_20211225114911.png', '', 'crmebimage/public/store/2021/12/25/476f2b8a50644f5f80124f831ac14aecct8ewiyvwf.png', '777078', 'png', 721, 1, '2021-12-25 11:49:49', '2021-12-25 11:49:49'); +INSERT INTO `eb_system_attachment` VALUES (145, '微信截图_20211225115042.png', '', 'crmebimage/public/store/2021/12/25/f22830611d324e8fb10129e969f1ec661lcpu7346h.png', '1091423', 'png', 721, 1, '2021-12-25 11:51:09', '2021-12-25 11:51:09'); +INSERT INTO `eb_system_attachment` VALUES (146, '9b7a3ba4ae5b436fb3ae61a6550dc63dsgvday64fo.png', '', 'crmebimage/public/maintain/2021/12/25/eb26223281aa454389c735726790a415abrhvrtq4y.png', '22037', 'png', 732, 1, '2021-12-25 11:52:09', '2021-12-25 11:52:09'); +INSERT INTO `eb_system_attachment` VALUES (147, 'a3ea80be646647c49aff41d50f22d39445mdxlejxn.png', '', 'crmebimage/public/maintain/2021/12/25/3c31dd504b0e440f9f3dafd7b4fb660cu1i58m9n65.png', '25310', 'png', 732, 1, '2021-12-25 11:52:09', '2021-12-25 11:52:09'); +INSERT INTO `eb_system_attachment` VALUES (148, '微信截图_20211225115222.png', '', 'crmebimage/public/store/2021/12/25/8b665c20edef4d61a508de9395eb40c4ln34d0f3i5.png', '751271', 'png', 721, 1, '2021-12-25 11:53:04', '2021-12-25 11:53:04'); +INSERT INTO `eb_system_attachment` VALUES (149, '5f1a5aeab5c4430a8c992be00ca5435a9y1as92yny.png', '', 'crmebimage/public/maintain/2021/12/25/367026e6e99a4bd490b6a424e921b3d4ymiteod2gx.png', '3808', 'png', 733, 1, '2021-12-25 11:53:12', '2021-12-25 11:53:12'); +INSERT INTO `eb_system_attachment` VALUES (150, '1588573cc18841a997d32d8eb9a5bb4fzkts2x9z99.png', '', 'crmebimage/public/maintain/2021/12/25/92f685f8a6044ec2a26a5901514fddb0qt5ygurp30.png', '2810', 'png', 733, 1, '2021-12-25 11:53:13', '2021-12-25 11:53:13'); +INSERT INTO `eb_system_attachment` VALUES (151, '68a2ffdb12f14daab2d0aa726ae78ca6tmf8hddyrr.png', '', 'crmebimage/public/maintain/2021/12/25/d9253c01ace24140839435a81e045f1dko3od05i87.png', '4470', 'png', 733, 1, '2021-12-25 11:53:13', '2021-12-25 11:53:13'); +INSERT INTO `eb_system_attachment` VALUES (152, '8a85de49532341059364a8a14832e90db5p3vkc89q.png', '', 'crmebimage/public/maintain/2021/12/25/6927a786cace49d394334f2b6f2924d895tbhihuwr.png', '6489', 'png', 733, 1, '2021-12-25 11:53:13', '2021-12-25 11:53:13'); +INSERT INTO `eb_system_attachment` VALUES (153, 'ad5a573ac9b74fe29dcc04e8fb20d478zrtav8nodp.png', '', 'crmebimage/public/maintain/2021/12/25/f9ec9f03b8694a308b62f6158e5ccadb09fnoz19kc.png', '5290', 'png', 733, 1, '2021-12-25 11:53:13', '2021-12-25 11:53:13'); +INSERT INTO `eb_system_attachment` VALUES (154, 'b77034e6621c4a978a174825c473efc9juvvf9qlhw.png', '', 'crmebimage/public/maintain/2021/12/25/e670a50e6c374f43abe6b61260ce0c33v1yf1aafwr.png', '4628', 'png', 733, 1, '2021-12-25 11:53:13', '2021-12-25 11:53:13'); +INSERT INTO `eb_system_attachment` VALUES (155, 'd01cbb49ab2c4ab981e775b266e8296aoh14o5onz3.png', '', 'crmebimage/public/maintain/2021/12/25/67fdef82a1fe4262bfb20f593860c948kw3oz1i8oz.png', '5725', 'png', 733, 1, '2021-12-25 11:53:13', '2021-12-25 11:53:13'); +INSERT INTO `eb_system_attachment` VALUES (156, 'a36c669e923342f5abe888f31f8fe690urbbrhcdzs.png', '', 'crmebimage/public/maintain/2021/12/25/c9b53340cfdc488f9d52bf121b715d45v9h0uswomi.png', '7052', 'png', 733, 1, '2021-12-25 11:53:13', '2021-12-25 11:53:13'); +INSERT INTO `eb_system_attachment` VALUES (157, '18cab4ad83be47ea80adca47e882a687ofv4acbuot.png', '', 'crmebimage/public/maintain/2021/12/25/5409e5e504444752bb5c1076036ab7b44xcyhrtplk.png', '10027', 'png', 733, 1, '2021-12-25 11:53:13', '2021-12-25 11:53:13'); +INSERT INTO `eb_system_attachment` VALUES (158, '29d5534cd40b42748622679f2116c94euy5hwx1k43.png', '', 'crmebimage/public/maintain/2021/12/25/bd0d22b653b247fa840542c7b7b79bdflj966ybw1e.png', '10078', 'png', 733, 1, '2021-12-25 11:53:14', '2021-12-25 11:53:14'); +INSERT INTO `eb_system_attachment` VALUES (159, '045963abafd74b1cb10f71d67315b6a4xqww96eazc.png', '', 'crmebimage/public/maintain/2021/12/25/a1ec5b32c97143379648f46166547f092y57yxrs9l.png', '10162', 'png', 733, 1, '2021-12-25 11:53:14', '2021-12-25 11:53:14'); +INSERT INTO `eb_system_attachment` VALUES (160, 'fa882113aed2499e841a36e8ac906183e5qw66kus1.png', '', 'crmebimage/public/maintain/2021/12/25/28d8c56d248948ddab759d1eb708ab1c2zquoclgbq.png', '9923', 'png', 733, 1, '2021-12-25 11:53:14', '2021-12-25 11:53:14'); +INSERT INTO `eb_system_attachment` VALUES (161, '41ca774f13634398baa5a5e1acce48e8j6ji3z1uxm.png', '', 'crmebimage/public/maintain/2021/12/25/8492febd4a4f4fbca9278e177ad85976518hamump8.png', '10570', 'png', 733, 1, '2021-12-25 11:53:14', '2021-12-25 11:53:14'); +INSERT INTO `eb_system_attachment` VALUES (162, '493fd620c3de4e52a499a9a7474e1df3pnx5jv35qr.png', '', 'crmebimage/public/maintain/2021/12/25/8e03c0c2e4044c05a2c20e858945a2743nhibwclel.png', '11243', 'png', 733, 1, '2021-12-25 11:53:14', '2021-12-25 11:53:14'); +INSERT INTO `eb_system_attachment` VALUES (163, 'a42acc2b933249899dabd455e2664928a8ajny198c.png', '', 'crmebimage/public/maintain/2021/12/25/e46b09e6dd2944328426b32b7dceff92bhe08w4td0.png', '10803', 'png', 733, 1, '2021-12-25 11:53:14', '2021-12-25 11:53:14'); +INSERT INTO `eb_system_attachment` VALUES (164, 'b9e02099219848af834048bfc6449b5dii1y950tme.png', '', 'crmebimage/public/maintain/2021/12/25/7ed93718dca04f9784517909f6bc4e2f8ee1idkw5m.png', '10297', 'png', 733, 1, '2021-12-25 11:53:14', '2021-12-25 11:53:14'); +INSERT INTO `eb_system_attachment` VALUES (165, 'f589f28c2ef04da1a65e145d4ab510979l4la8e7b9.png', '', 'crmebimage/public/maintain/2021/12/25/3eca7ab31b22479e80338e0a34cfaa3e5ikbs03gxz.png', '10733', 'png', 733, 1, '2021-12-25 11:53:14', '2021-12-25 11:53:14'); +INSERT INTO `eb_system_attachment` VALUES (166, '798e3850713a453d85b7d8beb7d168b2m0q4jlgyfh.png', '', 'crmebimage/public/maintain/2021/12/25/cc016fa7d56d498d8cd767e6d0e0c5e8l34nugsvmi.png', '12164', 'png', 733, 1, '2021-12-25 11:53:14', '2021-12-25 11:53:14'); +INSERT INTO `eb_system_attachment` VALUES (167, 'e05323e9392341e9950fe7b05ae061b0kztoo2ufw3.jpg', '', 'crmebimage/public/maintain/2021/12/25/5b40f7bd71f64931b30c38fa97631e7840rlio3vo2.jpg', '75752', 'jpeg', 733, 1, '2021-12-25 11:53:15', '2021-12-25 11:53:15'); +INSERT INTO `eb_system_attachment` VALUES (168, '1c36153795f74634ab8f0ca2080ddc3d7sfsaoehbf.png', '', 'crmebimage/public/maintain/2021/12/25/05896e9a492041e7b665596046b8b4fa8fxkw2x1k9.png', '5101', 'png', 734, 1, '2021-12-25 11:53:56', '2021-12-25 11:53:56'); +INSERT INTO `eb_system_attachment` VALUES (169, '54626ba2bafc4003a004bf0ba9d6c0b3euhxv4w4x1.png', '', 'crmebimage/public/maintain/2021/12/25/e97b753a3cf041169bae29045ff23d6a5g1vbrdgld.png', '4960', 'png', 734, 1, '2021-12-25 11:53:56', '2021-12-25 11:53:56'); +INSERT INTO `eb_system_attachment` VALUES (170, 'c8ab78c6451844d292745d0cb6797a1coyhu4t1mew.png', '', 'crmebimage/public/maintain/2021/12/25/24fb34ad03244e1aa0899672f6450605x4g288iyus.png', '4671', 'png', 734, 1, '2021-12-25 11:53:57', '2021-12-25 11:53:57'); +INSERT INTO `eb_system_attachment` VALUES (171, 'e288469d8b6743cc94008b53f4d05f1acsev2dphb9.png', '', 'crmebimage/public/maintain/2021/12/25/83dace527287474c890d2cfbc43119f0bneqqh8l21.png', '5171', 'png', 734, 1, '2021-12-25 11:53:57', '2021-12-25 11:53:57'); +INSERT INTO `eb_system_attachment` VALUES (172, 'f2dc7079f4794fd39eaefa9479cba0f65bcwfgdqp3.png', '', 'crmebimage/public/maintain/2021/12/25/892a81babb06410389df6ca54da57390wfl75dlpx9.png', '7944', 'png', 734, 1, '2021-12-25 11:53:57', '2021-12-25 11:53:57'); +INSERT INTO `eb_system_attachment` VALUES (173, '32dea23e96f7485394f219ab2f1192d7x74cuno8i9.png', '', 'crmebimage/public/maintain/2021/12/25/57a8dcf4457449dfb972b5beb015c053wxz70rjrsr.png', '7587', 'png', 734, 1, '2021-12-25 11:53:57', '2021-12-25 11:53:57'); +INSERT INTO `eb_system_attachment` VALUES (174, 'a06beedf19d349da81dceca0b5074a7br5c8k7uwgo.png', '', 'crmebimage/public/maintain/2021/12/25/5407cb9947bc4b5fbca0a51653bee42c1m8uj2y4zr.png', '7306', 'png', 734, 1, '2021-12-25 11:53:57', '2021-12-25 11:53:57'); +INSERT INTO `eb_system_attachment` VALUES (175, 'd6fa010ef0e44ebf9782a54570619139769cq7g2dj.png', '', 'crmebimage/public/maintain/2021/12/25/6513e472eafe457c8613d0bb119d0c101elrmgn5tk.png', '7771', 'png', 734, 1, '2021-12-25 11:53:57', '2021-12-25 11:53:57'); +INSERT INTO `eb_system_attachment` VALUES (176, '47d8909ff61c449a98aa31fcb3be27346l0tp4c00v.png', '', 'crmebimage/public/maintain/2021/12/25/80a11304bac14a44aa95b841e0f104cdg9e6zqrnxq.png', '9490', 'png', 734, 1, '2021-12-25 11:53:57', '2021-12-25 11:53:57'); +INSERT INTO `eb_system_attachment` VALUES (177, '49658451b303433ea31895778b3ac28bm9jmpidtk6.png', '', 'crmebimage/public/maintain/2021/12/25/c818e9b4038642ea9702712af7d2c7c280tw4wj8yo.png', '8947', 'png', 734, 1, '2021-12-25 11:53:57', '2021-12-25 11:53:57'); +INSERT INTO `eb_system_attachment` VALUES (178, 'b7bb0f2dcab947558e9bb5a96c2e681co10yas7rim.png', '', 'crmebimage/public/maintain/2021/12/25/1ec20d53b5fe4cea9b6b83dd90026d15qvui1h1cpp.png', '9914', 'png', 734, 1, '2021-12-25 11:53:57', '2021-12-25 11:53:57'); +INSERT INTO `eb_system_attachment` VALUES (179, 'e8ef92e043ce48d18a1f53b001f77f32r6eohmfsxe.png', '', 'crmebimage/public/maintain/2021/12/25/64f4f919b9f848aabfbcf56ed4c9dc5b0cvem1g2f8.png', '9928', 'png', 734, 1, '2021-12-25 11:53:57', '2021-12-25 11:53:57'); +INSERT INTO `eb_system_attachment` VALUES (180, '1729154aea614fd28545bb033a14197axmohol4756.png', '', 'crmebimage/public/maintain/2021/12/25/f9e0a4939cb3484b9babfe72dc70cd7cqqexhsbdpu.png', '11013', 'png', 734, 1, '2021-12-25 11:53:57', '2021-12-25 11:53:57'); +INSERT INTO `eb_system_attachment` VALUES (181, 'e9cce38c87214648a5a3c53e2b0f535d9luu9k74ea.png', '', 'crmebimage/public/maintain/2021/12/25/e9b5981f0e82410da5dc83992b68289ekxngfwyuz0.png', '11758', 'png', 734, 1, '2021-12-25 11:53:57', '2021-12-25 11:53:57'); +INSERT INTO `eb_system_attachment` VALUES (182, '5ae26a89e27e42ffb2f32bf21ec41cf39ohbshdcrn.png', '', 'crmebimage/public/maintain/2021/12/25/54d7a09f1dee463fa12ec01c02294b31z66prnux9w.png', '12290', 'png', 734, 1, '2021-12-25 11:53:58', '2021-12-25 11:53:58'); +INSERT INTO `eb_system_attachment` VALUES (183, '712724d9662a4269abcce9e60a8ee5e6a1wo76pule.png', '', 'crmebimage/public/maintain/2021/12/25/641eaebe810141229997b6a44670aa481xly87j88i.png', '12371', 'png', 734, 1, '2021-12-25 11:53:58', '2021-12-25 11:53:58'); +INSERT INTO `eb_system_attachment` VALUES (184, 'bd6ccc4028eb4e7ba9edb8b32aef47eaflz1oojwyn.png', '', 'crmebimage/public/maintain/2021/12/25/51c3c432ff5147fcb3b749af0404d7a783yc148lho.png', '12514', 'png', 734, 1, '2021-12-25 11:53:58', '2021-12-25 11:53:58'); +INSERT INTO `eb_system_attachment` VALUES (185, 'e3828f65b2f74417abe87340a72de6c3gfod2knkc2.png', '', 'crmebimage/public/maintain/2021/12/25/6080162a7ef54ef2b9331c39f8f5d9d8wxskm48zy9.png', '13334', 'png', 734, 1, '2021-12-25 11:53:58', '2021-12-25 11:53:58'); +INSERT INTO `eb_system_attachment` VALUES (186, 'f4a33855413a47638d24a365afcc0670muvbd04p4c.jpg', '', 'crmebimage/public/maintain/2021/12/25/bd7232963bec41da8f483289dde3fdf2whx5dk3owb.jpg', '95777', 'jpeg', 734, 1, '2021-12-25 11:53:59', '2021-12-25 11:53:59'); +INSERT INTO `eb_system_attachment` VALUES (187, 'ccc58d3de5f34ede96cffede59557fc0ewrr7xtr9j.jpg', '', 'crmebimage/public/store/2021/12/25/24119aa4d48e4c7a95b21ece82a41715uns67350bd.jpg', '19611', 'jpeg', 721, 1, '2021-12-25 11:54:10', '2021-12-25 11:54:10'); +INSERT INTO `eb_system_attachment` VALUES (188, '微信截图_20211225115517.png', '', 'crmebimage/public/store/2021/12/25/7b4c8af47e414f62a5d7b26d95504cbafw13ela5i7.png', '735362', 'png', 721, 1, '2021-12-25 11:55:45', '2021-12-25 11:55:45'); +INSERT INTO `eb_system_attachment` VALUES (189, '8be5893c68a0426d8b9d950b18a0fa086nj33d96dj.png', '', 'crmebimage/public/maintain/2021/12/25/58560559042841a498dc9a3ea975f3d2baabqbl1tp.png', '182734', 'png', 0, 1, '2021-12-25 11:57:22', '2021-12-25 11:57:22'); +INSERT INTO `eb_system_attachment` VALUES (190, '904833ab88f245068bd8e0625fe8fbd14ofwkgtw7w.jpg', '', 'crmebimage/public/maintain/2021/12/25/b9f86161d09a44d29f7e5083d402245321764lzsus.jpg', '108219', 'jpeg', 0, 1, '2021-12-25 11:57:37', '2021-12-25 11:57:37'); +INSERT INTO `eb_system_attachment` VALUES (191, '2702ff9ddd4e40ee97c957f07e9417b10hrby3rl2i.jpg', '', 'crmebimage/public/maintain/2021/12/25/9e97ddf78f804d50b985bdcf666478ebj76hbf3gpp.jpg', '117394', 'jpeg', 0, 1, '2021-12-25 11:57:38', '2021-12-25 11:57:38'); +INSERT INTO `eb_system_attachment` VALUES (192, 'eab9cdc74c4e4673acab70b801ee4612wnxgu98i0l.jpg', '', 'crmebimage/public/maintain/2021/12/25/e91ccd7e37294221bfdb7b43a42d8ed5hghg7nw0qb.jpg', '118260', 'jpeg', 0, 1, '2021-12-25 11:57:38', '2021-12-25 11:57:38'); +INSERT INTO `eb_system_attachment` VALUES (193, '0638dad477de4f979f1d6f58aa960c41bvp53cy53v.jpg', '', 'crmebimage/public/maintain/2021/12/25/3598e8d0aa3f4bf1b61140daa0e36300k0te4s6z3j.jpg', '149827', 'jpeg', 0, 1, '2021-12-25 11:57:38', '2021-12-25 11:57:38'); +INSERT INTO `eb_system_attachment` VALUES (194, '微信截图_20211225115759.png', '', 'crmebimage/public/store/2021/12/25/0f419f2a65844ae5a00c20e22dc9b92env32uvr4dy.png', '365673', 'png', 721, 1, '2021-12-25 11:58:35', '2021-12-25 11:58:35'); +INSERT INTO `eb_system_attachment` VALUES (195, '8fef924851ff40ac96857ce70b1406a64fejl3g98z.png', '', 'crmebimage/public/maintain/2021/12/25/6c266c40bd5e4ff8bb574fcecb2156feklz8uzymox.png', '342021', 'png', 732, 1, '2021-12-25 11:59:33', '2021-12-25 11:59:33'); +INSERT INTO `eb_system_attachment` VALUES (196, 'be06cf0db56346efa94799d943b879182kqcaeh8sm.png', '', 'crmebimage/public/maintain/2021/12/25/c17d24b632b544828bd4c70744bc2931tmnu4ffkoj.png', '363824', 'png', 732, 1, '2021-12-25 11:59:34', '2021-12-25 11:59:34'); +INSERT INTO `eb_system_attachment` VALUES (197, '241e9f8065354fd295d3c626d9ccf492984lsgwqwh.png', '', 'crmebimage/public/maintain/2021/12/25/acbb97c8b30e4c63ae92a81f8679ab06uib5yau47a.png', '427586', 'png', 732, 1, '2021-12-25 11:59:35', '2021-12-25 11:59:35'); +INSERT INTO `eb_system_attachment` VALUES (198, '微信截图_20211225120008.png', '', 'crmebimage/public/store/2021/12/25/bf8bc87d525844b68ca17ca60c567233hkh2h9c2un.png', '677482', 'png', 721, 1, '2021-12-25 12:00:53', '2021-12-25 12:00:53'); +INSERT INTO `eb_system_attachment` VALUES (199, '0f11d9e5c3d14c0e941f677ea314c0d03kcpizxfvd.png', '', 'crmebimage/public/maintain/2021/12/25/8e30a0b2fc0f4c19a14b5dea9d3f3e1ancrlbopakw.png', '9768', 'png', 735, 1, '2021-12-25 12:01:17', '2021-12-25 12:01:17'); +INSERT INTO `eb_system_attachment` VALUES (200, 'f4b49cb361ac4a35ae92ad7ba4a2ec40sjx9dv25kg.png', '', 'crmebimage/public/maintain/2021/12/25/1aa14360c7264153acc50ff5c5af7451fejoxdb2bt.png', '9753', 'png', 735, 1, '2021-12-25 12:01:17', '2021-12-25 12:01:17'); +INSERT INTO `eb_system_attachment` VALUES (201, '1b1e7be581784b3da8fda546212138b6ylv2mgsgpz.png', '', 'crmebimage/public/maintain/2021/12/25/f16789d76eab430e90de8ddbbf26b8362xifqs055m.png', '10110', 'png', 735, 1, '2021-12-25 12:01:17', '2021-12-25 12:01:17'); +INSERT INTO `eb_system_attachment` VALUES (202, 'fd052649aa9f4a458d30c8ced95d6073i40zuxp47o.png', '', 'crmebimage/public/maintain/2021/12/25/84902bff7e5d4b09881b91b4a3d23b1bi0wwnljt9w.png', '9871', 'png', 735, 1, '2021-12-25 12:01:17', '2021-12-25 12:01:17'); +INSERT INTO `eb_system_attachment` VALUES (203, '1e0d3d636397479691a4b04e419b4d0bod1lw0hb5x.png', '', 'crmebimage/public/maintain/2021/12/25/956f4534d22343a88e860a1779c69afcboynkm8plz.png', '9418', 'png', 735, 1, '2021-12-25 12:01:18', '2021-12-25 12:01:18'); +INSERT INTO `eb_system_attachment` VALUES (204, '232d542d5d6a484fb67e9602d1b283c3ahvy4614ww.png', '', 'crmebimage/public/maintain/2021/12/25/d1c992690cf040d7bf87d7767f12ec9cks6in93p21.png', '9380', 'png', 735, 1, '2021-12-25 12:01:18', '2021-12-25 12:01:18'); +INSERT INTO `eb_system_attachment` VALUES (205, '30384d986ef847dcbf523b73e92f54d89ljwm3y9bz.png', '', 'crmebimage/public/maintain/2021/12/25/bf4e33ad4e994c3fbb48aba8e81b3be3zme09wjvqa.png', '9871', 'png', 735, 1, '2021-12-25 12:01:18', '2021-12-25 12:01:18'); +INSERT INTO `eb_system_attachment` VALUES (206, 'b5bbbb90562f426cbc4b16d624c4ca1dpunty6guca.png', '', 'crmebimage/public/maintain/2021/12/25/7965c1d75e9d4a689f09ecb207468468icfybjk9g9.png', '8849', 'png', 735, 1, '2021-12-25 12:01:18', '2021-12-25 12:01:18'); +INSERT INTO `eb_system_attachment` VALUES (207, 'b77dfb32d0c846a491ba85391bd949cdzbw20vwqz0.png', '', 'crmebimage/public/maintain/2021/12/25/e8c8ea8102524b8a9277d3ee623ac29dmvg2gsudr6.png', '9863', 'png', 735, 1, '2021-12-25 12:01:18', '2021-12-25 12:01:18'); +INSERT INTO `eb_system_attachment` VALUES (208, '3803485236224355a6630c519b3619788dssfxzwfo.png', '', 'crmebimage/public/maintain/2021/12/25/e759d63f04b94689aaa6838c424e419cgcsk0dsagu.png', '9956', 'png', 735, 1, '2021-12-25 12:01:18', '2021-12-25 12:01:18'); +INSERT INTO `eb_system_attachment` VALUES (209, '1319e0793e634a8aa9eb75662f4a156fwsh8jo81l0.png', '', 'crmebimage/public/maintain/2021/12/25/e0203b58c997468f928031df28b6a27acns5riul2t.png', '10110', 'png', 735, 1, '2021-12-25 12:01:18', '2021-12-25 12:01:18'); +INSERT INTO `eb_system_attachment` VALUES (210, 'e90db92b65154437bbef5715848482855x70rhndpv.png', '', 'crmebimage/public/maintain/2021/12/25/8bf3c1a3c2284ef5b29ab6e320d2baf2lzw5pxuw1j.png', '10605', 'png', 735, 1, '2021-12-25 12:01:18', '2021-12-25 12:01:18'); +INSERT INTO `eb_system_attachment` VALUES (211, '6fe40cb4f54e426c8acc52471bfa9ce1ez8b17ypyv.jpg', '', 'crmebimage/public/maintain/2021/12/25/4bdd334e3b084908ae56b7ce1e576204a43i68txom.jpg', '19973', 'jpeg', 732, 1, '2021-12-25 12:01:18', '2021-12-25 12:01:57'); +INSERT INTO `eb_system_attachment` VALUES (212, '41c125bd9bb446b9a19cd393585802e6y2g801z05j.jpg', '', 'crmebimage/public/maintain/2021/12/25/d4c7282740fb4e71bd2d7e80fad985d8o1wfu26pyd.jpg', '20103', 'jpeg', 732, 1, '2021-12-25 12:01:18', '2021-12-25 12:01:57'); +INSERT INTO `eb_system_attachment` VALUES (213, 'a55abb14526b408fb79ed8d78941b849fwvx34l42g.jpg', '', 'crmebimage/public/maintain/2021/12/25/60e1d297eb5a49bca13b92e2b0b411c2siripyrcu0.jpg', '26376', 'jpeg', 732, 1, '2021-12-25 12:01:19', '2021-12-25 12:01:57'); +INSERT INTO `eb_system_attachment` VALUES (215, '1b204215126846e6a29408af119c10d867550cp1qx.jpg', '', 'crmebimage/public/maintain/2021/12/25/9d95f61a5db84591972fbc90f31c1fb21g5krqax8i.jpg', '70122', 'jpeg', 732, 1, '2021-12-25 12:01:20', '2021-12-25 12:01:57'); +INSERT INTO `eb_system_attachment` VALUES (216, '微信截图_20211225120159.png', '', 'crmebimage/public/store/2021/12/25/ef98f38ef1cd4083a91fb62b1dd8362cmran1psnmc.png', '778394', 'png', 721, 1, '2021-12-25 12:02:40', '2021-12-25 12:02:40'); +INSERT INTO `eb_system_attachment` VALUES (217, '4fecdf20de674921a1e106fc2565614251dhtu43zb.png', '', 'crmebimage/public/maintain/2021/12/25/50b4a853b4aa41a9bc8125ac2c2ae3e8in85dafiwk.png', '4510', 'png', 736, 1, '2021-12-25 12:05:07', '2021-12-25 12:05:07'); +INSERT INTO `eb_system_attachment` VALUES (218, '8103314266b14cadb294e41bccba493dwwho3odoqa.png', '', 'crmebimage/public/maintain/2021/12/25/4d6a7711c889409c92eaf580f62b90ca0f92wo6cz2.png', '3834', 'png', 736, 1, '2021-12-25 12:05:07', '2021-12-25 12:05:07'); +INSERT INTO `eb_system_attachment` VALUES (219, '2e456e4e0cad4e15a6e578da2f5ecbe2jmiocsybon.png', '', 'crmebimage/public/maintain/2021/12/25/044cb00c43134dde88a76770a65c4b73aggk7cb6bo.png', '5891', 'png', 736, 1, '2021-12-25 12:05:07', '2021-12-25 12:05:07'); +INSERT INTO `eb_system_attachment` VALUES (220, '9c5c6c7822544013a2eba35312d08de7t46zoigy0z.png', '', 'crmebimage/public/maintain/2021/12/25/b7cc05160f3b4fa198a585042e7f3ac4yes1qlr9t8.png', '4882', 'png', 736, 1, '2021-12-25 12:05:07', '2021-12-25 12:05:07'); +INSERT INTO `eb_system_attachment` VALUES (221, '9764d308ef484594a5ea44c4fc99b58a4de4obbja1.png', '', 'crmebimage/public/maintain/2021/12/25/0cd9800f27e9400c859859277baf469c28c7hjd64b.png', '5201', 'png', 736, 1, '2021-12-25 12:05:07', '2021-12-25 12:05:07'); +INSERT INTO `eb_system_attachment` VALUES (222, '470800bb23f642028d3e12f8c662474b2bq2as9hxp.png', '', 'crmebimage/public/maintain/2021/12/25/1fcc02fe479e493db9da240ee8e83675b3rprs95sz.png', '6047', 'png', 736, 1, '2021-12-25 12:05:08', '2021-12-25 12:05:08'); +INSERT INTO `eb_system_attachment` VALUES (223, '1cb623a89fab475593ca6333b4272494p0q0qpojs9.png', '', 'crmebimage/public/maintain/2021/12/25/a17a7ac2e489478e95ba16e250e997ae0uq5mmtuud.png', '8868', 'png', 736, 1, '2021-12-25 12:05:08', '2021-12-25 12:05:08'); +INSERT INTO `eb_system_attachment` VALUES (224, '6bca0b4815d342458fc867137c77af305w3e9o3xap.png', '', 'crmebimage/public/maintain/2021/12/25/6e188941ad2b4c19a20b04316bb76c4636w09b1ghb.png', '8175', 'png', 736, 1, '2021-12-25 12:05:08', '2021-12-25 12:05:08'); +INSERT INTO `eb_system_attachment` VALUES (225, '7afd824b8e5e45f69097a3e704c6f484blo58jntja.png', '', 'crmebimage/public/maintain/2021/12/25/b531cf7e4c274afba6eac070c7bd6944jcc3suaufz.png', '8390', 'png', 736, 1, '2021-12-25 12:05:08', '2021-12-25 12:05:08'); +INSERT INTO `eb_system_attachment` VALUES (226, '9842bb4aa975495daca4998fcd2b9f1b7rgjc1shlh.png', '', 'crmebimage/public/maintain/2021/12/25/058dd806ac3b49ddad1bcd610981bf85dixxzthr5d.png', '7699', 'png', 736, 1, '2021-12-25 12:05:08', '2021-12-25 12:05:08'); +INSERT INTO `eb_system_attachment` VALUES (227, 'e4a64305496e4d51bd6fc262adb1cbf4sunnlskk21.png', '', 'crmebimage/public/maintain/2021/12/25/73f05211b4e74783892c868ea168e16drvd0kxau4h.png', '7657', 'png', 736, 1, '2021-12-25 12:05:08', '2021-12-25 12:05:08'); +INSERT INTO `eb_system_attachment` VALUES (228, 'cad7fb47b1ff4205be993e2f84c3fe09ia1zq04odl.png', '', 'crmebimage/public/maintain/2021/12/25/efbee20621ec424a983f45cfca57508bxitwgvu74n.png', '8430', 'png', 736, 1, '2021-12-25 12:05:08', '2021-12-25 12:05:08'); +INSERT INTO `eb_system_attachment` VALUES (229, '44d7924af0c941a6b7ab3211085540a79e6ba7kkvj.png', '', 'crmebimage/public/maintain/2021/12/25/855c336f4cd84f3fb0bccae9d809365bpyfrc337l2.png', '10266', 'png', 736, 1, '2021-12-25 12:05:08', '2021-12-25 12:05:08'); +INSERT INTO `eb_system_attachment` VALUES (230, '1886172884984f2fb5463d31ec68cfc6exwfjarlvf.png', '', 'crmebimage/public/maintain/2021/12/25/d287ad96e12e40fcbdb8e8608f69b03ebyh731wk9j.png', '9102', 'png', 736, 1, '2021-12-25 12:05:08', '2021-12-25 12:05:08'); +INSERT INTO `eb_system_attachment` VALUES (231, '04333c775c494a2f9f9135e6f0072985pihk9gou1y.gif', '', 'crmebimage/public/maintain/2021/12/25/d8490798c1e141348c1ba3c109c26e18of6rw66y1f.gif', '81071', 'gif', 736, 1, '2021-12-25 12:05:11', '2021-12-25 12:05:11'); +INSERT INTO `eb_system_attachment` VALUES (232, '3ed7630486a64d55b3e773d98e70bb7ehfmn5ve5su.gif', '', 'crmebimage/public/maintain/2021/12/25/1f052138a6514e748137d863f54d719axyr6kovjd3.gif', '161608', 'gif', 736, 1, '2021-12-25 12:05:12', '2021-12-25 12:05:12'); +INSERT INTO `eb_system_attachment` VALUES (233, '5f8ae8d4aad3481488861de022a27935j2baqqrcja.gif', '', 'crmebimage/public/maintain/2021/12/25/bfba48d86c4b49e19e01496ea3e24540chlmmft4o7.gif', '190111', 'gif', 736, 1, '2021-12-25 12:05:13', '2021-12-25 12:05:13'); +INSERT INTO `eb_system_attachment` VALUES (234, '5c9d8b4b4a2e4fc782558787fc941e24o6u5iv52dl.png', '', 'crmebimage/public/store/2021/12/25/fbc798bf3c91493f95c97be7d6cbaa5akhcpo5ent3.png', '101227', 'png', 721, 1, '2021-12-25 12:06:37', '2021-12-25 12:06:37'); +INSERT INTO `eb_system_attachment` VALUES (235, '59a066f8bb5145cbada4b7a08965cf15b26idurig9.png', '', 'crmebimage/public/store/2021/12/25/6246abff834b4d2fb1edad2a8927c8a3yes6irrqfw.png', '103216', 'png', 721, 1, '2021-12-25 12:06:37', '2021-12-25 12:06:37'); +INSERT INTO `eb_system_attachment` VALUES (236, '72f39322b33249e0b3441908e3b657b2rzf7g4x37c.png', '', 'crmebimage/public/store/2021/12/25/0705b0fad3884eddb31745e453de6503atuqud1tr3.png', '75992', 'png', 721, 1, '2021-12-25 12:06:37', '2021-12-25 12:06:37'); +INSERT INTO `eb_system_attachment` VALUES (237, '769f2ba251114a75bc3da94166770482zv3tb4ogjy.png', '', 'crmebimage/public/store/2021/12/25/090f2f83e9b343c38c7c7b4ebc860a352r8u8adjsq.png', '112263', 'png', 721, 1, '2021-12-25 12:06:37', '2021-12-25 12:06:37'); +INSERT INTO `eb_system_attachment` VALUES (238, '57f108bff43744c88323c666d77cac72g4p0a23tpo.png', '', 'crmebimage/public/store/2021/12/25/1ccac5f9f62646ba930000ad70f741efpfgagvhrzh.png', '160577', 'png', 721, 1, '2021-12-25 12:06:37', '2021-12-25 12:06:37'); +INSERT INTO `eb_system_attachment` VALUES (239, 'bf981c370d9d44f998803310fedb8af3yr9suwbwp1.png', '', 'crmebimage/public/store/2021/12/25/0e13333fdf2841a2a886a9595bebc855q5jgkr8b66.png', '269248', 'png', 721, 1, '2021-12-25 12:06:38', '2021-12-25 12:06:38'); +INSERT INTO `eb_system_attachment` VALUES (240, '343af3ecdc087f3e.jpg', '', 'crmebimage/public/store/2021/12/25/d813cbdd98b148c99885652234ad43b1m1aewwn8wd.jpg', '1519', 'jpeg', 721, 1, '2021-12-25 12:11:24', '2021-12-25 12:11:24'); +INSERT INTO `eb_system_attachment` VALUES (241, 'eb7a947539d94cd495ea6493e37a3e35lkqmcnnl9q.png', '', 'crmebimage/public/store/2021/12/25/ae2a9db4d74a4a56bddb971d3df9e60fljwxe9z3lh.png', '147901', 'png', 721, 1, '2021-12-25 12:16:12', '2021-12-25 12:16:12'); +INSERT INTO `eb_system_attachment` VALUES (242, 'a84efcfa299c4269af95d671e122d4770vrq87ttfz.png', '', 'crmebimage/public/store/2021/12/25/de35d545523448db9f3636e34ca085b29qw11rescg.png', '150018', 'png', 721, 1, '2021-12-25 12:16:12', '2021-12-25 12:16:12'); +INSERT INTO `eb_system_attachment` VALUES (243, 'ba82799518704655ab2fdc254336de08wtb2ofda96.png', '', 'crmebimage/public/store/2021/12/25/61bf8228d96b4c8c9343bc13b4e6fc67c0jmc2y781.png', '215666', 'png', 721, 1, '2021-12-25 12:16:12', '2021-12-25 12:16:12'); +INSERT INTO `eb_system_attachment` VALUES (244, 'dc0c960874b6408781d119e4c84768c03n91s62hyd.jpg', '', 'crmebimage/public/maintain/2021/12/25/0016d1efa86d41e38e76801a7cd743c6wcupy21hvb.jpg', '71811', 'jpeg', 731, 1, '2021-12-25 12:23:32', '2021-12-25 12:23:32'); +INSERT INTO `eb_system_attachment` VALUES (245, '123456.png', '', 'crmebimage/public/operation/2021/12/25/6d292f4a663a453e8bcc9410eda89db55z1vksp7fx.png', '9371', 'png', 719, 1, '2021-12-25 12:23:43', '2021-12-25 12:23:43'); +INSERT INTO `eb_system_attachment` VALUES (246, '275e60789951438c9cac5928bd2b0ec33brze97mkn.png', '', 'crmebimage/public/maintain/2021/12/25/67b2961431ae473d8c24029b3d53d32a6xf1nljtw3.png', '3428', 'png', 731, 1, '2021-12-25 12:24:03', '2021-12-25 12:24:03'); +INSERT INTO `eb_system_attachment` VALUES (247, '834580d86f1c43529247fedf3c4304a51twgcts5bs.png', '', 'crmebimage/public/maintain/2021/12/25/469a3189a95643a8851d4158eb7ff606vs6efrhkrc.png', '9371', 'png', 731, 1, '2021-12-25 12:24:24', '2021-12-25 12:24:24'); +INSERT INTO `eb_system_attachment` VALUES (248, '03d6b5c9c108421183e5d602271ee40fq02myezxqa.png', '', 'crmebimage/public/maintain/2021/12/25/7ccf9f4158794bf997d97b4e871dd34b4qy58l2fyg.png', '117604', 'png', 731, 1, '2021-12-25 12:25:58', '2021-12-25 12:25:58'); +INSERT INTO `eb_system_attachment` VALUES (249, '44456.jpg', '', 'crmebimage/public/operation/2021/12/25/0427b90c74b64a03ae3e7e5c628ef7d69038aimgou.jpg', '26852', 'jpeg', 721, 1, '2021-12-25 12:26:03', '2021-12-25 12:26:03'); +INSERT INTO `eb_system_attachment` VALUES (250, 'ccc58d3de5f34ede96cffede59557fc0ewrr7xtr9j.jpg', '', 'crmebimage/public/maintain/2021/12/25/49ae68efce4848a185a8ddcb4e5c95a2zl2dlwi77v.jpg', '19611', 'jpeg', 737, 1, '2021-12-25 12:48:21', '2021-12-25 12:48:21'); +INSERT INTO `eb_system_attachment` VALUES (251, '4ccb96471110987c.jpg', '', 'crmebimage/public/maintain/2021/12/25/fef1aee22a04466d93693f5791d44bfd2rsm469mcr.jpg', '80731', 'jpeg', 737, 1, '2021-12-25 12:48:22', '2021-12-25 12:48:22'); +INSERT INTO `eb_system_attachment` VALUES (252, '148fffc1ede348e389b3084c6886e006kvrdmkwo23.jpg', '', 'crmebimage/public/maintain/2021/12/25/63969148b6c4447d918124fd810c1da5m2h9aiylly.jpg', '41683', 'jpeg', 737, 1, '2021-12-25 12:48:22', '2021-12-25 12:48:22'); +INSERT INTO `eb_system_attachment` VALUES (253, '0e4236f72d684886afbaa633c0deced0om84pzuunn.jpg', '', 'crmebimage/public/maintain/2021/12/25/37382cca048b4011bdbacd3cbbe0814daw1o5x0tco.jpg', '109831', 'jpeg', 737, 1, '2021-12-25 12:48:22', '2021-12-25 12:48:22'); +INSERT INTO `eb_system_attachment` VALUES (254, 'c02cb52b0d44493199d179078698f1567zz3rxbdmc.jpg', '', 'crmebimage/public/maintain/2021/12/25/5486775d8cad4fd8adfc254d2e93857cn0wu5hq8f4.jpg', '65158', 'jpeg', 737, 1, '2021-12-25 12:48:22', '2021-12-25 12:48:22'); +INSERT INTO `eb_system_attachment` VALUES (255, '4b869e3bbd244ac28ba8523b4109a6570lumy6fnmo.jpg', '', 'crmebimage/public/maintain/2021/12/25/3ed152917e3f4f7faa9414050b6cab49vuadulntb8.jpg', '161671', 'jpeg', 737, 1, '2021-12-25 12:48:23', '2021-12-25 12:48:23'); +INSERT INTO `eb_system_attachment` VALUES (256, 'f3e2e78eb60092fb.jpg', '', 'crmebimage/public/maintain/2021/12/25/7a6475bba07c47bb98e5db0e0d21c8ebq5sw2kijlc.jpg', '120772', 'jpeg', 737, 1, '2021-12-25 12:48:23', '2021-12-25 12:48:23'); +INSERT INTO `eb_system_attachment` VALUES (257, 'ccf9090810934050a5b84f88b05678afay5uw5nj3d.jpg', '', 'crmebimage/public/maintain/2021/12/25/f65ef5469f3a479497a710fb288d115cvl5imkvpo8.jpg', '125421', 'jpeg', 737, 1, '2021-12-25 12:48:23', '2021-12-25 12:48:23'); +INSERT INTO `eb_system_attachment` VALUES (258, '0917635902ffe23fce240813503e45a5.jpg', '', 'crmebimage/public/store/2021/12/25/e7e312556bcb4084acf708f3a5210da7krs1pwq84o.jpg', '37172', 'jpeg', 738, 1, '2021-12-25 13:09:59', '2021-12-25 13:09:59'); +INSERT INTO `eb_system_attachment` VALUES (259, '1.jpeg', '', 'crmebimage/public/store/2021/12/25/ee26a9207f404a47851538c7dfd777a7ltlxg7tkrm.jpeg', '39695', 'jpeg', 738, 1, '2021-12-25 13:11:53', '2021-12-25 13:11:53'); +INSERT INTO `eb_system_attachment` VALUES (260, '2.jpeg', '', 'crmebimage/public/store/2021/12/25/489bd8c24e904f6d93a827ee0d051a52m796u5yxlu.jpeg', '41799', 'jpeg', 738, 1, '2021-12-25 13:12:32', '2021-12-25 13:12:32'); +INSERT INTO `eb_system_attachment` VALUES (261, '755bf516b1ca4b6db3bfeaa4dd5901cdh71kob20re.jpg', '', 'crmebimage/public/maintain/2021/12/25/2631ca1695464da982b202d239bdf717eunywwsimu.jpg', '129708', 'jpeg', 739, 1, '2021-12-25 14:17:15', '2021-12-25 14:17:15'); +INSERT INTO `eb_system_attachment` VALUES (262, '406d729b84ed4ec9a2171bfcf6fd0634ughzbz9kfi.jpg', '', 'crmebimage/public/maintain/2021/12/25/166caeeb0f234d5e93c4baebf533e3c6cpk8chqitx.jpg', '73725', 'jpeg', 739, 1, '2021-12-25 14:17:41', '2021-12-25 14:17:41'); +INSERT INTO `eb_system_attachment` VALUES (263, 'efb1e4e7fe604fe1988b4213ce08cb11tdsyijtd2r.jpg', '', 'crmebimage/public/maintain/2021/12/25/2a104b07589e45998fe604f81e56c216ozicop5k74.jpg', '80741', 'jpeg', 739, 1, '2021-12-25 14:17:41', '2021-12-25 14:17:41'); +INSERT INTO `eb_system_attachment` VALUES (264, '20210730115217.gif', '', 'crmebimage/public/maintain/2021/12/25/0eabacb2ab774f54bddd9b2b0ff212a49e7etvhouq.gif', '350370', 'gif', 740, 1, '2021-12-25 14:19:48', '2021-12-25 14:19:48'); +INSERT INTO `eb_system_attachment` VALUES (265, '20210730115217.gif', '', 'crmebimage/public/maintain/2021/12/25/1d14f2d2fa8f451a9d46fccacc3aa661tdwihn07he.gif', '350370', 'gif', 740, 1, '2021-12-25 14:21:30', '2021-12-25 14:21:30'); +INSERT INTO `eb_system_attachment` VALUES (266, '64edb94f67fd46dd9031995ef2be86fca3xpw8y5kz.jpg', '', 'crmebimage/public/maintain/2021/12/25/88cea6884f5e4ae48b8e407266fc03dbnqk5y6cdcv.jpg', '73292', 'jpeg', 732, 1, '2021-12-25 14:22:27', '2021-12-25 14:22:27'); +INSERT INTO `eb_system_attachment` VALUES (267, '20210730115215.gif', '', 'crmebimage/public/maintain/2021/12/25/9deb872da95c42d2bf8c432075153b1egrrxlb666p.gif', '410412', 'gif', 740, 1, '2021-12-25 14:23:16', '2021-12-25 14:23:16'); +INSERT INTO `eb_system_attachment` VALUES (268, '20210730115214.gif', '', 'crmebimage/public/maintain/2021/12/25/ca4e301ed76a44f8aa23e70b7df107b8v26l2p79u3.gif', '360926', 'gif', 740, 1, '2021-12-25 14:25:04', '2021-12-25 14:25:04'); +INSERT INTO `eb_system_attachment` VALUES (269, '20210730115213.gif', '', 'crmebimage/public/maintain/2021/12/25/96cff8171dc8423ebd23559d0b14c8e8mv9d8a0iqw.gif', '340527', 'gif', 740, 1, '2021-12-25 14:26:43', '2021-12-25 14:26:43'); +INSERT INTO `eb_system_attachment` VALUES (270, '微信图片_20211123105919.png', '', 'crmebimage/public/maintain/2021/12/30/6636e07d913c40638753f2141440b8667x3wjapar7.png', '372090', 'png', 0, 1, '2021-12-30 15:03:11', '2021-12-30 15:03:11'); +INSERT INTO `eb_system_attachment` VALUES (271, 'banner_.gif', '', 'crmebimage/public/maintain/2021/12/30/964c5c7f054341868eae1e897aeaeb79l1uwjxxw11.gif', '102097', 'gif', 0, 1, '2021-12-30 15:05:15', '2021-12-30 15:05:15'); +INSERT INTO `eb_system_attachment` VALUES (272, '微信图片_20211123105919.png', '', 'crmebimage/public/maintain/2021/12/30/a0015e0e7be446efb720879816e099d0qkmvy7t5bd.png', '372090', 'png', 0, 1, '2021-12-30 15:06:01', '2021-12-30 15:06:01'); + +-- ---------------------------- +-- Table structure for eb_system_city +-- ---------------------------- +DROP TABLE IF EXISTS `eb_system_city`; +CREATE TABLE `eb_system_city` ( + `id` int(11) NOT NULL, + `city_id` int(11) NOT NULL DEFAULT 0 COMMENT '城市id', + `level` int(11) NOT NULL DEFAULT 0 COMMENT '省市级别', + `parent_id` int(11) NOT NULL DEFAULT 0 COMMENT '父级id', + `area_code` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '区号', + `name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '名称', + `merger_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '合并名称', + `lng` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '经度', + `lat` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '纬度', + `is_show` tinyint(1) NOT NULL DEFAULT 1 COMMENT '是否展示', + `create_time` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '城市表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of eb_system_city +-- ---------------------------- +INSERT INTO `eb_system_city` VALUES (1, 1, 0, 0, '110000000000', '北京市', '北京', '116.407526', '39.904030', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2, 7362, 0, 0, '120000000000', '天津市', '天津', '117.200983', '39.084158', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3, 13267, 0, 0, '130000000000', '河北省', '河北', '114.468664', '38.037057', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (4, 67747, 0, 0, '140000000000', '山西省', '山西', '112.562398', '37.873531', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (5, 99537, 0, 0, '150000000000', '内蒙古自治区', '内蒙古', '111.765617', '40.817498', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (6, 115224, 0, 0, '210000000000', '辽宁省', '辽宁', '123.429440', '41.835441', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (7, 133208, 0, 0, '220000000000', '吉林省', '吉林', '125.325990', '43.896536', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (8, 145665, 0, 0, '230000000000', '黑龙江省', '黑龙江', '126.661669', '45.742347', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (9, 161792, 0, 0, '310000000000', '上海市', '上海', '121.473701', '31.230416', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (10, 167904, 0, 0, '320000000000', '江苏省', '江苏', '118.763232', '32.061707', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (11, 191019, 0, 0, '330000000000', '浙江省', '浙江', '120.152791', '30.267446', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (12, 224649, 0, 0, '340000000000', '安徽省', '安徽', '117.284922', '31.861184', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (13, 244377, 0, 0, '350000000000', '福建省', '福建', '119.295144', '26.100779', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (14, 262698, 0, 0, '360000000000', '江西省', '江西', '115.909228', '28.675696', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (15, 285860, 0, 0, '370000000000', '山东省', '山东', '117.020359', '36.668530', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (16, 367395, 0, 0, '410000000000', '河南省', '河南', '113.753602', '34.765515', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (17, 420824, 0, 0, '420000000000', '湖北省', '湖北', '114.341861', '30.546498', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (18, 452123, 0, 0, '430000000000', '湖南省', '湖南', '112.983810', '28.112444', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (19, 483250, 0, 0, '440000000000', '广东省', '广东', '113.266530', '23.132191', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (20, 511462, 0, 0, '450000000000', '广西壮族自治区', '广西', '108.327546', '22.815478', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (21, 529344, 0, 0, '460000000000', '海南省', '海南', '110.349228', '20.017377', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (22, 533328, 0, 0, '500000000000', '重庆市', '重庆', '106.551556', '29.563009', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (23, 545532, 0, 0, '510000000000', '四川省', '四川', '104.075931', '30.651651', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (24, 604131, 0, 0, '520000000000', '贵州省', '贵州', '106.707410', '26.598194', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (25, 624372, 0, 0, '530000000000', '云南省', '云南', '102.710002', '25.045806', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (26, 640332, 0, 0, '540000000000', '西藏自治区', '西藏', '91.117212', '29.646922', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (27, 646578, 0, 0, '610000000000', '陕西省', '陕西', '108.954239', '34.265472', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (28, 671119, 0, 0, '620000000000', '甘肃省', '甘肃', '103.826308', '36.059421', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (29, 690094, 0, 0, '630000000000', '青海省', '青海', '101.780199', '36.620901', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (30, 695259, 0, 0, '640000000000', '宁夏回族自治区', '宁夏', '106.258754', '38.471317', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (31, 698440, 0, 0, '650000000000', '新疆维吾尔自治区', '新疆', '87.627704', '43.793026', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (32, 714368, 0, 0, '0', '香港特别行政区', '香港', '114.173355', '22.320048', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (33, 714390, 0, 0, '0', '澳门特别行政区', '澳门', '113.549090', '22.198951', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (34, 714401, 0, 0, '0', '台湾', '台湾', '121.509062', '25.044332', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (35, 2, 1, 1, '110100000000', '北京市', '北京', '116.407526', '39.904030', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (36, 7363, 1, 7362, '120100000000', '天津市', '天津', '117.200983', '39.084158', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (37, 13268, 1, 13267, '130100000000', '石家庄市', '河北,石家庄', '114.514859', '38.042306', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (38, 18128, 1, 13267, '130200000000', '唐山市', '河北,唐山', '118.180193', '39.630867', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (39, 24371, 1, 13267, '130300000000', '秦皇岛市', '河北,秦皇岛', '119.600492', '39.935385', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (40, 26779, 1, 13267, '130400000000', '邯郸市', '河北,邯郸', '114.538961', '36.625657', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (41, 32688, 1, 13267, '130500000000', '邢台市', '河北,邢台', '114.504844', '37.070589', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (42, 38160, 1, 13267, '130600000000', '保定市', '河北,保定', '115.464806', '38.873891', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (43, 44570, 1, 13267, '130700000000', '张家口市', '河北,张家口', '114.887543', '40.824418', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (44, 49190, 1, 13267, '130800000000', '承德市', '河北,承德', '117.962410', '40.954071', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (45, 52018, 1, 13267, '130900000000', '沧州市', '河北,沧州', '116.838834', '38.304477', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (46, 58247, 1, 13267, '131000000000', '廊坊市', '河北,廊坊', '116.683752', '39.538047', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (47, 61804, 1, 13267, '131100000000', '衡水市', '河北,衡水', '115.670177', '37.738920', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (48, 66813, 1, 13267, '139000000000', '直辖县', '河北', '114.468664', '38.037057', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (49, 67748, 1, 67747, '140100000000', '太原市', '山西,太原', '112.548879', '37.870590', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (50, 69390, 1, 67747, '140200000000', '大同市', '山西,大同', '113.612440', '40.040295', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (51, 71850, 1, 67747, '140300000000', '阳泉市', '山西,阳泉', '113.580519', '37.856971', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (52, 72975, 1, 67747, '140400000000', '长治市', '山西,长治', '113.116255', '36.195386', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (53, 76726, 1, 67747, '140500000000', '晋城市', '山西,晋城', '112.851831', '35.490701', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (54, 79163, 1, 67747, '140600000000', '朔州市', '山西,朔州', '112.432825', '39.331595', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (55, 81000, 1, 67747, '140700000000', '晋中市', '山西,晋中', '112.752694', '37.687024', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (56, 84092, 1, 67747, '140800000000', '运城市', '山西,运城', '111.007528', '35.026412', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (57, 87613, 1, 67747, '140900000000', '忻州市', '山西,忻州', '112.734174', '38.416663', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (58, 92738, 1, 67747, '141000000000', '临汾市', '山西,临汾', '111.518976', '36.088005', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (59, 96064, 1, 67747, '141100000000', '吕梁市', '山西,吕梁', '111.144319', '37.518314', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (60, 99538, 1, 99537, '150100000000', '呼和浩特市', '内蒙古,呼和浩特', '111.749180', '40.842585', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (61, 100904, 1, 99537, '150200000000', '包头市', '内蒙古,包头', '109.840347', '40.657449', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (62, 101772, 1, 99537, '150300000000', '乌海市', '内蒙古,乌海', '106.794249', '39.655388', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (63, 101884, 1, 99537, '150400000000', '赤峰市', '内蒙古,赤峰', '118.886856', '42.257817', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (64, 104457, 1, 99537, '150500000000', '通辽市', '内蒙古,通辽', '122.243444', '43.652890', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (65, 107065, 1, 99537, '150600000000', '鄂尔多斯市', '内蒙古,鄂尔多斯', '109.781327', '39.608266', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (66, 108166, 1, 99537, '150700000000', '呼伦贝尔市', '内蒙古,呼伦贝尔', '119.765744', '49.211574', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (67, 109847, 1, 99537, '150800000000', '巴彦淖尔市', '内蒙古,巴彦淖尔', '107.387657', '40.743213', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (68, 110889, 1, 99537, '150900000000', '乌兰察布市', '内蒙古,乌兰察布', '113.132585', '40.994785', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (69, 112552, 1, 99537, '152200000000', '兴安盟', '内蒙古,兴安', '122.067042', '46.077561', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (70, 113777, 1, 99537, '152500000000', '锡林郭勒盟', '内蒙古,锡林郭勒', '116.048222', '43.933454', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (71, 114940, 1, 99537, '152900000000', '阿拉善盟', '内蒙古,阿拉善', '105.728969', '38.851892', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (72, 115225, 1, 115224, '210100000000', '沈阳市', '辽宁,沈阳', '123.431474', '41.805698', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (73, 117932, 1, 115224, '210200000000', '大连市', '辽宁,大连', '121.614682', '38.914003', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (74, 119789, 1, 115224, '210300000000', '鞍山市', '辽宁,鞍山', '122.994329', '41.108647', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (75, 121081, 1, 115224, '210400000000', '抚顺市', '辽宁,抚顺', '123.957208', '41.880872', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (76, 122142, 1, 115224, '210500000000', '本溪市', '辽宁,本溪', '123.766485', '41.294175', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (77, 122730, 1, 115224, '210600000000', '丹东市', '辽宁,丹东', '124.354706', '40.000499', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (78, 123698, 1, 115224, '210700000000', '锦州市', '辽宁,锦州', '121.127003', '41.095119', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (79, 125249, 1, 115224, '210800000000', '营口市', '辽宁,营口', '122.235417', '40.667012', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (80, 126156, 1, 115224, '210900000000', '阜新市', '辽宁,阜新', '121.670323', '42.021619', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (81, 127070, 1, 115224, '211000000000', '辽阳市', '辽宁,辽阳', '123.236944', '41.267244', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (82, 127834, 1, 115224, '211100000000', '盘锦市', '辽宁,盘锦', '122.070714', '41.119997', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (83, 128421, 1, 115224, '211200000000', '铁岭市', '辽宁,铁岭', '123.726166', '42.223769', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (84, 129977, 1, 115224, '211300000000', '朝阳市', '辽宁,朝阳', '120.389862', '41.497767', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (85, 131738, 1, 115224, '211400000000', '葫芦岛市', '辽宁,葫芦岛', '120.836932', '40.711052', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (86, 133209, 1, 133208, '220100000000', '长春市', '吉林,长春', '125.323544', '43.817071', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (87, 135392, 1, 133208, '220200000000', '吉林市', '吉林,吉林', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (88, 137206, 1, 133208, '220300000000', '四平市', '吉林,四平', '124.350398', '43.166419', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (89, 138721, 1, 133208, '220400000000', '辽源市', '吉林,辽源', '125.143532', '42.887918', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (90, 139340, 1, 133208, '220500000000', '通化市', '吉林,通化', '125.939697', '41.728401', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (91, 140601, 1, 133208, '220600000000', '白山市', '吉林,白山', '126.423587', '41.939994', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (92, 141361, 1, 133208, '220700000000', '松原市', '吉林,松原', '124.825117', '45.141789', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (93, 142786, 1, 133208, '220800000000', '白城市', '吉林,白城', '122.839024', '45.619641', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (94, 143990, 1, 133208, '222400000000', '延边朝鲜族自治州', '吉林,延边', '129.508946', '42.891253', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (95, 145666, 1, 145665, '230100000000', '哈尔滨市', '黑龙江,哈尔滨', '126.534967', '45.803775', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (96, 149079, 1, 145665, '230200000000', '齐齐哈尔市', '黑龙江,齐齐哈尔', '123.918186', '47.354348', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (97, 150915, 1, 145665, '230300000000', '鸡西市', '黑龙江,鸡西', '130.969333', '45.295075', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (98, 151830, 1, 145665, '230400000000', '鹤岗市', '黑龙江,鹤岗', '130.297964', '47.349916', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (99, 152413, 1, 145665, '230500000000', '双鸭山市', '黑龙江,双鸭山', '131.159133', '46.646508', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (100, 153313, 1, 145665, '230600000000', '大庆市', '黑龙江,大庆', '125.103784', '46.589309', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (101, 154201, 1, 145665, '230700000000', '伊春市', '黑龙江,伊春', '128.841147', '47.727536', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (102, 155076, 1, 145665, '230800000000', '佳木斯市', '黑龙江,佳木斯', '130.318917', '46.799922', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (103, 156713, 1, 145665, '230900000000', '七台河市', '黑龙江,七台河', '131.003138', '45.771726', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (104, 157130, 1, 145665, '231000000000', '牡丹江市', '黑龙江,牡丹江', '129.633168', '44.551653', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (105, 158623, 1, 145665, '231100000000', '黑河市', '黑龙江,黑河', '127.528560', '50.245329', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (106, 159769, 1, 145665, '231200000000', '绥化市', '黑龙江,绥化', '126.968887', '46.653845', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (107, 161651, 1, 145665, '232700000000', '大兴安岭地区', '黑龙江,大兴安岭', '124.711080', '52.335206', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (108, 161793, 1, 161792, '310100000000', '上海市', '上海', '121.473701', '31.230416', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (109, 167905, 1, 167904, '320100000000', '南京市', '江苏,南京', '118.796877', '32.060255', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (110, 169375, 1, 167904, '320200000000', '无锡市', '江苏,无锡', '120.311910', '31.491169', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (111, 170724, 1, 167904, '320300000000', '徐州市', '江苏,徐州', '117.284124', '34.205768', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (112, 173635, 1, 167904, '320400000000', '常州市', '江苏,常州', '119.973987', '31.810689', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (113, 174764, 1, 167904, '320500000000', '苏州市', '江苏,苏州', '120.585315', '31.298886', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (114, 176920, 1, 167904, '320600000000', '南通市', '江苏,南通', '120.894291', '31.980171', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (115, 178999, 1, 167904, '320700000000', '连云港市', '江苏,连云港', '119.221611', '34.596653', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (116, 180743, 1, 167904, '320800000000', '淮安市', '江苏,淮安', '119.015285', '33.610353', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (117, 182538, 1, 167904, '320900000000', '盐城市', '江苏,盐城', '120.163561', '33.347382', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (118, 185201, 1, 167904, '321000000000', '扬州市', '江苏,扬州', '119.412966', '32.394210', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (119, 186657, 1, 167904, '321100000000', '镇江市', '江苏,镇江', '119.425836', '32.187849', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (120, 187441, 1, 167904, '321200000000', '泰州市', '江苏,泰州', '119.923116', '32.455778', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (121, 189402, 1, 167904, '321300000000', '宿迁市', '江苏,宿迁', '118.275198', '33.963232', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (122, 191020, 1, 191019, '330100000000', '杭州市', '浙江,杭州', '120.155070', '30.274084', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (123, 194395, 1, 191019, '330200000000', '宁波市', '浙江,宁波', '121.550357', '29.874556', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (124, 197850, 1, 191019, '330300000000', '温州市', '浙江,温州', '120.699366', '27.994267', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (125, 203852, 1, 191019, '330400000000', '嘉兴市', '浙江,嘉兴', '120.755486', '30.746129', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (126, 205101, 1, 191019, '330500000000', '湖州市', '浙江,湖州', '120.086823', '30.894348', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (127, 206438, 1, 191019, '330600000000', '绍兴市', '浙江,绍兴', '120.580232', '30.029752', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (128, 209250, 1, 191019, '330700000000', '金华市', '浙江,金华', '119.647444', '29.079059', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (129, 214260, 1, 191019, '330800000000', '衢州市', '浙江,衢州', '118.859457', '28.970079', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (130, 215955, 1, 191019, '330900000000', '舟山市', '浙江,舟山', '122.207215', '29.985295', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (131, 216449, 1, 191019, '331000000000', '台州市', '浙江,台州', '121.420757', '28.656386', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (132, 221610, 1, 191019, '331100000000', '丽水市', '浙江,丽水', '119.922796', '28.467630', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (133, 224650, 1, 224649, '340100000000', '合肥市', '安徽,合肥', '117.227239', '31.820586', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (134, 226469, 1, 224649, '340200000000', '芜湖市', '安徽,芜湖', '118.432941', '31.352859', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (135, 227482, 1, 224649, '340300000000', '蚌埠市', '安徽,蚌埠', '117.389719', '32.916287', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (136, 228630, 1, 224649, '340400000000', '淮南市', '安徽,淮南', '116.999932', '32.625478', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (137, 229844, 1, 224649, '340500000000', '马鞍山市', '安徽,马鞍山', '118.506759', '31.670452', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (138, 230476, 1, 224649, '340600000000', '淮北市', '安徽,淮北', '116.798265', '33.955844', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (139, 230981, 1, 224649, '340700000000', '铜陵市', '安徽,铜陵', '117.812079', '30.945429', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (140, 231499, 1, 224649, '340800000000', '安庆市', '安徽,安庆', '117.063754', '30.543494', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (141, 233236, 1, 224649, '341000000000', '黄山市', '安徽,黄山', '118.337481', '29.714655', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (142, 234109, 1, 224649, '341100000000', '滁州市', '安徽,滁州', '118.317106', '32.301556', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (143, 235483, 1, 224649, '341200000000', '阜阳市', '安徽,阜阳', '115.814204', '32.890124', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (144, 237607, 1, 224649, '341300000000', '宿州市', '安徽,宿州', '116.964356', '33.646373', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (145, 239084, 1, 224649, '341500000000', '六安市', '安徽,六安', '116.521854', '31.733699', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (146, 241180, 1, 224649, '341600000000', '亳州市', '安徽,亳州', '115.778676', '33.844582', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (147, 242634, 1, 224649, '341700000000', '池州市', '安徽,池州', '117.491568', '30.664800', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (148, 243399, 1, 224649, '341800000000', '宣城市', '安徽,宣城', '118.758816', '30.940718', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (149, 244378, 1, 244377, '350100000000', '福州市', '福建,福州', '119.296494', '26.074507', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (150, 247478, 1, 244377, '350200000000', '厦门市', '福建,厦门', '118.089425', '24.479833', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (151, 248059, 1, 244377, '350300000000', '莆田市', '福建,莆田', '119.007777', '25.454084', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (152, 249098, 1, 244377, '350400000000', '三明市', '福建,三明', '117.638678', '26.263406', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (153, 251197, 1, 244377, '350500000000', '泉州市', '福建,泉州', '118.675675', '24.874132', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (154, 253905, 1, 244377, '350600000000', '漳州市', '福建,漳州', '117.647481', '24.512948', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (155, 256112, 1, 244377, '350700000000', '南平市', '福建,南平', '118.177708', '26.641768', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (156, 258160, 1, 244377, '350800000000', '龙岩市', '福建,龙岩', '117.017536', '25.075123', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (157, 260230, 1, 244377, '350900000000', '宁德市', '福建,宁德', '119.547932', '26.665617', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (158, 262699, 1, 262698, '360100000000', '南昌市', '江西,南昌', '115.858197', '28.682892', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (159, 264862, 1, 262698, '360200000000', '景德镇市', '江西,景德镇', '117.178419', '29.268835', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (160, 265677, 1, 262698, '360300000000', '萍乡市', '江西,萍乡', '113.854556', '27.622768', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (161, 266521, 1, 262698, '360400000000', '九江市', '江西,九江', '116.001930', '29.705077', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (162, 269107, 1, 262698, '360500000000', '新余市', '江西,新余', '114.917346', '27.817808', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (163, 269654, 1, 262698, '360600000000', '鹰潭市', '江西,鹰潭', '117.069202', '28.260189', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (164, 270222, 1, 262698, '360700000000', '赣州市', '江西,赣州', '114.935029', '25.831829', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (165, 274444, 1, 262698, '360800000000', '吉安市', '江西,吉安', '114.992509', '27.113443', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (166, 277615, 1, 262698, '360900000000', '宜春市', '江西,宜春', '114.416778', '27.815619', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (167, 280562, 1, 262698, '361000000000', '抚州市', '江西,抚州', '116.358181', '27.949217', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (168, 282841, 1, 262698, '361100000000', '上饶市', '江西,上饶', '117.943433', '28.454862', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (169, 285861, 1, 285860, '370100000000', '济南市', '山东,济南', '117.119999', '36.651216', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (170, 291235, 1, 285860, '370200000000', '青岛市', '山东,青岛', '120.382639', '36.067082', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (171, 298025, 1, 285860, '370300000000', '淄博市', '山东,淄博', '118.054927', '36.813487', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (172, 301711, 1, 285860, '370400000000', '枣庄市', '山东,枣庄', '117.323725', '34.810487', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (173, 304309, 1, 285860, '370500000000', '东营市', '山东,东营', '118.674767', '37.434751', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (174, 306339, 1, 285860, '370600000000', '烟台市', '山东,烟台', '121.447935', '37.463822', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (175, 313063, 1, 285860, '370700000000', '潍坊市', '山东,潍坊', '119.161755', '36.706774', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (176, 320179, 1, 285860, '370800000000', '济宁市', '山东,济宁', '116.587098', '35.414921', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (177, 326706, 1, 285860, '370900000000', '泰安市', '山东,泰安', '117.087614', '36.200252', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (178, 330547, 1, 285860, '371000000000', '威海市', '山东,威海', '122.120419', '37.513068', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (179, 333140, 1, 285860, '371100000000', '日照市', '山东,日照', '119.526888', '35.416377', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (180, 336050, 1, 285860, '371200000000', '莱芜市', '山东,莱芜', '117.676723', '36.213813', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (181, 337144, 1, 285860, '371300000000', '临沂市', '山东,临沂', '118.356448', '35.104672', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (182, 344133, 1, 285860, '371400000000', '德州市', '山东,德州', '116.357464', '37.434092', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (183, 349382, 1, 285860, '371500000000', '聊城市', '山东,聊城', '115.985371', '36.456703', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (184, 355972, 1, 285860, '371600000000', '滨州市', '山东,滨州', '117.970703', '37.381990', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (185, 361375, 1, 285860, '371700000000', '菏泽市', '山东,菏泽', '115.480656', '35.233750', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (186, 367396, 1, 367395, '410100000000', '郑州市', '河南,郑州', '113.625368', '34.746599', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (187, 370304, 1, 367395, '410200000000', '开封市', '河南,开封', '114.307581', '34.797239', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (188, 372971, 1, 367395, '410300000000', '洛阳市', '河南,洛阳', '112.454040', '34.619682', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (189, 376365, 1, 367395, '410400000000', '平顶山市', '河南,平顶山', '113.192661', '33.766169', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (190, 379245, 1, 367395, '410500000000', '安阳市', '河南,安阳', '114.392392', '36.097577', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (191, 382878, 1, 367395, '410600000000', '鹤壁市', '河南,鹤壁', '114.297272', '35.747225', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (192, 383890, 1, 367395, '410700000000', '新乡市', '河南,新乡', '113.926800', '35.303004', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (193, 387707, 1, 367395, '410800000000', '焦作市', '河南,焦作', '113.241823', '35.215892', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (194, 389719, 1, 367395, '410900000000', '濮阳市', '河南,濮阳', '115.029215', '35.761829', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (195, 392737, 1, 367395, '411000000000', '许昌市', '河南,许昌', '113.852640', '34.035506', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (196, 395254, 1, 367395, '411100000000', '漯河市', '河南,漯河', '114.016539', '33.581412', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (197, 396611, 1, 367395, '411200000000', '三门峡市', '河南,三门峡', '111.200135', '34.772493', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (198, 398169, 1, 367395, '411300000000', '南阳市', '河南,南阳', '112.528321', '32.990833', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (199, 403311, 1, 367395, '411400000000', '商丘市', '河南,商丘', '115.656370', '34.414172', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (200, 408287, 1, 367395, '411500000000', '信阳市', '河南,信阳', '114.091023', '32.146983', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (201, 411925, 1, 367395, '411600000000', '周口市', '河南,周口', '114.696951', '33.626149', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (202, 417174, 1, 367395, '411700000000', '驻马店市', '河南,驻马店', '114.022298', '33.011529', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (203, 420258, 1, 0, '419000000000', '直辖县', '河南', '113.753602', '34.765515', 1, '2021-07-16 11:33:35', '2021-08-16 11:51:05'); +INSERT INTO `eb_system_city` VALUES (204, 420825, 1, 420824, '420100000000', '武汉市', '湖北,武汉', '114.305392', '30.593098', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (205, 424449, 1, 420824, '420200000000', '黄石市', '湖北,黄石', '115.038520', '30.199652', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (206, 425508, 1, 420824, '420300000000', '十堰市', '湖北,十堰', '110.797990', '32.629397', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (207, 427710, 1, 420824, '420500000000', '宜昌市', '湖北,宜昌', '111.286471', '30.691967', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (208, 429501, 1, 420824, '420600000000', '襄阳市', '湖北,襄阳', '112.122414', '32.008986', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (209, 432415, 1, 420824, '420700000000', '鄂州市', '湖北,鄂州', '114.894843', '30.391940', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (210, 432829, 1, 420824, '420800000000', '荆门市', '湖北,荆门', '112.199265', '31.035423', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (211, 434548, 1, 420824, '420900000000', '孝感市', '湖北,孝感', '113.916902', '30.924568', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (212, 437779, 1, 420824, '421000000000', '荆州市', '湖北,荆州', '112.239741', '30.335165', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (213, 440639, 1, 420824, '421100000000', '黄冈市', '湖北,黄冈', '114.872316', '30.453905', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (214, 445040, 1, 420824, '421200000000', '咸宁市', '湖北,咸宁', '114.322492', '29.841443', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (215, 446212, 1, 420824, '421300000000', '随州市', '湖北,随州', '113.382458', '31.690215', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (216, 447268, 1, 420824, '422800000000', '恩施土家族苗族自治州', '湖北,恩施', '109.488172', '30.272156', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (217, 449865, 1, 420824, '429000000000', '直辖县', '湖北', '114.341861', '30.546498', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (218, 452124, 1, 452123, '430100000000', '长沙市', '湖南,长沙', '112.938814', '28.228209', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (219, 453799, 1, 452123, '430200000000', '株洲市', '湖南,株洲', '113.134002', '27.827550', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (220, 455283, 1, 452123, '430300000000', '湘潭市', '湖南,湘潭', '112.944049', '27.829738', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (221, 456303, 1, 452123, '430400000000', '衡阳市', '湖南,衡阳', '112.571997', '26.893230', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (222, 459251, 1, 452123, '430500000000', '邵阳市', '湖南,邵阳', '111.467791', '27.238892', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (223, 463141, 1, 452123, '430600000000', '岳阳市', '湖南,岳阳', '113.128958', '29.357104', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (224, 465105, 1, 452123, '430700000000', '常德市', '湖南,常德', '111.698497', '29.031673', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (225, 467562, 1, 452123, '430800000000', '张家界市', '湖南,张家界', '110.479191', '29.117096', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (226, 468660, 1, 452123, '430900000000', '益阳市', '湖南,益阳', '112.355180', '28.553860', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (227, 470123, 1, 452123, '431000000000', '郴州市', '湖南,郴州', '113.014717', '25.770509', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (228, 472709, 1, 452123, '431100000000', '永州市', '湖南,永州', '111.613445', '26.420394', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (229, 476148, 1, 452123, '431200000000', '怀化市', '湖南,怀化', '109.998488', '27.554978', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (230, 479103, 1, 452123, '431300000000', '娄底市', '湖南,娄底', '111.993497', '27.700062', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (231, 481319, 1, 452123, '433100000000', '湘西土家族苗族自治州', '湖南,湘西', '109.739172', '28.311947', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (232, 483251, 1, 483250, '440100000000', '广州市', '广东,广州', '113.264434', '23.129162', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (233, 486129, 1, 483250, '440200000000', '韶关市', '广东,韶关', '113.597522', '24.810403', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (234, 487721, 1, 483250, '440300000000', '深圳市', '广东,深圳', '114.057868', '22.543099', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (235, 488589, 1, 483250, '440400000000', '珠海市', '广东,珠海', '113.576726', '22.270715', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (236, 488954, 1, 483250, '440500000000', '汕头市', '广东,汕头', '116.681972', '23.354091', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (237, 490106, 1, 483250, '440600000000', '佛山市', '广东,佛山', '113.121416', '23.021548', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (238, 490919, 1, 483250, '440700000000', '江门市', '广东,江门', '113.081901', '22.578738', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (239, 492341, 1, 483250, '440800000000', '湛江市', '广东,湛江', '110.359377', '21.270707', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (240, 494394, 1, 483250, '440900000000', '茂名市', '广东,茂名', '110.925456', '21.662999', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (241, 496438, 1, 483250, '441200000000', '肇庆市', '广东,肇庆', '112.465091', '23.047191', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (242, 498104, 1, 483250, '441300000000', '惠州市', '广东,惠州', '114.416196', '23.111847', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (243, 499489, 1, 483250, '441400000000', '梅州市', '广东,梅州', '116.122238', '24.288615', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (244, 501867, 1, 483250, '441500000000', '汕尾市', '广东,汕尾', '115.375278', '22.786211', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (245, 502828, 1, 483250, '441600000000', '河源市', '广东,河源', '114.700447', '23.743538', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (246, 504366, 1, 483250, '441700000000', '阳江市', '广东,阳江', '111.982232', '21.857958', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (247, 505298, 1, 483250, '441800000000', '清远市', '广东,清远', '113.056031', '23.681763', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (248, 506616, 1, 483250, '441900000000', '东莞市', '广东,东莞', '113.751765', '23.020536', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (249, 507255, 1, 483250, '442000000000', '中山市', '广东,中山', '113.392782', '22.517645', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (250, 507557, 1, 483250, '445100000000', '潮州市', '广东,潮州', '116.622603', '23.656950', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (251, 508648, 1, 483250, '445200000000', '揭阳市', '广东,揭阳', '116.372831', '23.549993', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (252, 510408, 1, 483250, '445300000000', '云浮市', '广东,云浮', '112.044491', '22.915094', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (253, 511463, 1, 511462, '450100000000', '南宁市', '广西,南宁', '108.366543', '22.817002', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (254, 513434, 1, 511462, '450200000000', '柳州市', '广西,柳州', '109.415953', '24.325502', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (255, 514790, 1, 511462, '450300000000', '桂林市', '广西,桂林', '110.290194', '25.273566', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (256, 516858, 1, 511462, '450400000000', '梧州市', '广西,梧州', '111.279115', '23.476962', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (257, 517933, 1, 511462, '450500000000', '北海市', '广西,北海', '109.119927', '21.481254', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (258, 518407, 1, 511462, '450600000000', '防城港市', '广西,防城港', '108.353846', '21.686860', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (259, 518808, 1, 511462, '450700000000', '钦州市', '广西,钦州', '108.654146', '21.979933', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (260, 519929, 1, 511462, '450800000000', '贵港市', '广西,贵港', '109.598926', '23.111530', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (261, 521166, 1, 511462, '450900000000', '玉林市', '广西,玉林', '110.164756', '22.636379', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (262, 522786, 1, 511462, '451000000000', '百色市', '广西,百色', '106.618201', '23.902333', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (263, 524814, 1, 511462, '451100000000', '贺州市', '广西,贺州', '111.566694', '24.403582', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (264, 525638, 1, 511462, '451200000000', '河池市', '广西,河池', '108.085261', '24.692931', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (265, 527443, 1, 511462, '451300000000', '来宾市', '广西,来宾', '109.221465', '23.750306', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (266, 528339, 1, 511462, '451400000000', '崇左市', '广西,崇左', '107.364711', '22.376532', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (267, 529345, 1, 529344, '460100000000', '海口市', '海南,海口', '110.198293', '20.044001', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (268, 529878, 1, 529344, '460200000000', '三亚市', '海南,三亚', '109.511909', '18.252847', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (269, 530060, 1, 529344, '460300000000', '三沙市', '海南,三沙', '112.338695', '16.831839', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (270, 530070, 1, 529344, '460400000000', '儋州市', '海南,儋州', '110.349228', '20.017377', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (271, 530468, 1, 529344, '469000000000', '省直辖县级行政区域', '海南', '110.349228', '20.017377', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (272, 533329, 1, 533328, '500100000000', '重庆市', '重庆', '106.551556', '29.563009', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (273, 540700, 1, 533328, '500200000000', '县', '重庆', '106.551556', '29.563009', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (274, 545533, 1, 545532, '510100000000', '成都市', '四川,成都', '104.066541', '30.572269', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (275, 550275, 1, 545532, '510300000000', '自贡市', '四川,自贡', '104.778442', '29.339030', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (276, 551809, 1, 545532, '510400000000', '攀枝花市', '四川,攀枝花', '101.718637', '26.582347', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (277, 552358, 1, 545532, '510500000000', '泸州市', '四川,泸州', '105.442258', '28.871810', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (278, 554142, 1, 545532, '510600000000', '德阳市', '四川,德阳', '104.397894', '31.126855', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (279, 556077, 1, 545532, '510700000000', '绵阳市', '四川,绵阳', '104.679114', '31.467450', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (280, 560191, 1, 545532, '510800000000', '广元市', '四川,广元', '105.843357', '32.435435', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (281, 563242, 1, 545532, '510900000000', '遂宁市', '四川,遂宁', '105.592898', '30.532847', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (282, 565735, 1, 545532, '511000000000', '内江市', '四川,内江', '105.058433', '29.580228', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (283, 568202, 1, 545532, '511100000000', '乐山市', '四川,乐山', '103.765568', '29.552106', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (284, 570733, 1, 545532, '511300000000', '南充市', '四川,南充', '106.110698', '30.837793', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (285, 576992, 1, 545532, '511400000000', '眉山市', '四川,眉山', '103.848538', '30.075439', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (286, 578485, 1, 545532, '511500000000', '宜宾市', '四川,宜宾', '104.643215', '28.751768', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (287, 581870, 1, 545532, '511600000000', '广安市', '四川,广安', '106.633212', '30.455961', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (288, 585049, 1, 545532, '511700000000', '达州市', '四川,达州', '107.468023', '31.209571', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (289, 588538, 1, 545532, '511800000000', '雅安市', '四川,雅安', '103.013261', '29.980537', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (290, 589779, 1, 545532, '511900000000', '巴中市', '四川,巴中', '106.747477', '31.867903', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (291, 592598, 1, 545532, '512000000000', '资阳市', '四川,资阳', '104.627636', '30.128901', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (292, 594864, 1, 545532, '513200000000', '阿坝藏族羌族自治州', '四川,阿坝', '102.224653', '31.899413', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (293, 596525, 1, 545532, '513300000000', '甘孜藏族自治州', '四川,甘孜', '101.962310', '30.049520', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (294, 599659, 1, 545532, '513400000000', '凉山彝族自治州', '四川,凉山', '102.267335', '27.881610', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (295, 604132, 1, 604131, '520100000000', '贵阳市', '贵州,贵阳', '106.630153', '26.647661', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (296, 605834, 1, 604131, '520200000000', '六盘水市', '贵州,六盘水', '104.830359', '26.592666', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (297, 607029, 1, 604131, '520300000000', '遵义市', '贵州,遵义', '106.927389', '27.725654', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (298, 609309, 1, 604131, '520400000000', '安顺市', '贵州,安顺', '105.947593', '26.253072', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (299, 610607, 1, 604131, '520500000000', '毕节市', '贵州,毕节', '105.283992', '27.302589', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (300, 614530, 1, 604131, '520600000000', '铜仁市', '贵州,铜仁', '109.189598', '27.731514', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (301, 617670, 1, 604131, '522300000000', '黔西南布依族苗族自治州', '贵州,黔西南', '104.906396', '25.087825', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (302, 619017, 1, 604131, '522600000000', '黔东南苗族侗族自治州', '贵州,黔东南', '107.982859', '26.583442', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (303, 622734, 1, 604131, '522700000000', '黔南布依族苗族自治州', '贵州,黔南', '107.522097', '26.254092', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (304, 624373, 1, 624372, '530100000000', '昆明市', '云南,昆明', '102.832891', '24.880095', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (305, 626181, 1, 624372, '530300000000', '曲靖市', '云南,曲靖', '103.796167', '25.489999', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (306, 627981, 1, 624372, '530400000000', '玉溪市', '云南,玉溪', '102.546543', '24.352036', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (307, 628776, 1, 624372, '530500000000', '保山市', '云南,保山', '99.161761', '25.112046', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (308, 629781, 1, 624372, '530600000000', '昭通市', '云南,昭通', '103.717465', '27.338257', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (309, 631276, 1, 624372, '530700000000', '丽江市', '云南,丽江', '100.227750', '26.855047', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (310, 631811, 1, 624372, '530800000000', '普洱市', '云南,普洱', '100.966512', '22.825065', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (311, 632971, 1, 624372, '530900000000', '临沧市', '云南,临沧', '100.079583', '23.877573', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (312, 634006, 1, 624372, '532300000000', '楚雄彝族自治州', '云南,楚雄', '101.528069', '25.045532', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (313, 635219, 1, 624372, '532500000000', '红河哈尼族彝族自治州', '云南,红河', '103.374799', '23.363130', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (314, 636688, 1, 624372, '532600000000', '文山壮族苗族自治州', '云南,文山', '104.216248', '23.400734', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (315, 637778, 1, 624372, '532800000000', '西双版纳傣族自治州', '云南,西双版纳', '100.797777', '22.007351', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (316, 638092, 1, 624372, '532900000000', '大理白族自治州', '云南,大理', '100.267639', '25.606485', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (317, 639368, 1, 624372, '533100000000', '德宏傣族景颇族自治州', '云南,德宏', '98.584895', '24.433353', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (318, 639802, 1, 624372, '533300000000', '怒江傈僳族自治州', '云南,怒江', '98.853097', '25.852547', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (319, 640107, 1, 624372, '533400000000', '迪庆藏族自治州', '云南,迪庆', '99.702234', '27.818882', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (320, 640333, 1, 640332, '540100000000', '拉萨市', '西藏,拉萨', '91.140856', '29.645554', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (321, 640675, 1, 640332, '540200000000', '日喀则市', '西藏,日喀则', '88.880583', '29.266869', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (322, 642571, 1, 640332, '540300000000', '昌都市', '西藏,昌都', '97.172020', '31.140969', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (323, 643863, 1, 640332, '540400000000', '林芝市', '西藏,林芝', '94.361490', '29.649128', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (324, 644423, 1, 640332, '540500000000', '山南市', '西藏,山南', '91.117212', '29.646922', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (325, 645076, 1, 640332, '542400000000', '那曲地区', '西藏,那曲', '92.051239', '31.476202', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (326, 646392, 1, 640332, '542500000000', '阿里地区', '西藏,阿里', '80.105804', '32.501111', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (327, 646579, 1, 646578, '610100000000', '西安市', '陕西,西安', '108.940174', '34.341568', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (328, 649979, 1, 646578, '610200000000', '铜川市', '陕西,铜川', '108.945233', '34.896756', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (329, 650575, 1, 646578, '610300000000', '宝鸡市', '陕西,宝鸡', '107.237974', '34.361979', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (330, 652581, 1, 646578, '610400000000', '咸阳市', '陕西,咸阳', '108.708991', '34.329605', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (331, 655295, 1, 646578, '610500000000', '渭南市', '陕西,渭南', '109.509786', '34.499995', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (332, 657848, 1, 646578, '610600000000', '延安市', '陕西,延安', '109.489727', '36.585455', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (333, 660643, 1, 646578, '610700000000', '汉中市', '陕西,汉中', '107.023323', '33.067480', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (334, 663046, 1, 646578, '610800000000', '榆林市', '陕西,榆林', '109.734589', '38.285390', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (335, 667681, 1, 646578, '610900000000', '安康市', '陕西,安康', '109.029022', '32.684714', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (336, 669707, 1, 646578, '611000000000', '商洛市', '陕西,商洛', '109.940477', '33.870422', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (337, 671120, 1, 671119, '620100000000', '兰州市', '甘肃,兰州', '103.834303', '36.061089', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (338, 672330, 1, 671119, '620200000000', '嘉峪关市', '甘肃,嘉峪关', '98.289152', '39.773130', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (339, 672385, 1, 671119, '620300000000', '金昌市', '甘肃,金昌', '102.188043', '38.520089', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (340, 672577, 1, 671119, '620400000000', '白银市', '甘肃,白银', '104.138559', '36.544756', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (341, 673463, 1, 671119, '620500000000', '天水市', '甘肃,天水', '105.724947', '34.580863', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (342, 676215, 1, 671119, '620600000000', '武威市', '甘肃,武威', '102.638011', '37.928264', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (343, 677568, 1, 671119, '620700000000', '张掖市', '甘肃,张掖', '100.449818', '38.925875', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (344, 678560, 1, 671119, '620800000000', '平凉市', '甘肃,平凉', '106.665240', '35.543051', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (345, 680191, 1, 671119, '620900000000', '酒泉市', '甘肃,酒泉', '98.494483', '39.732410', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (346, 680815, 1, 671119, '621000000000', '庆阳市', '甘肃,庆阳', '107.643631', '35.709077', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (347, 682322, 1, 671119, '621100000000', '定西市', '甘肃,定西', '104.626282', '35.580662', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (348, 684415, 1, 671119, '621200000000', '陇南市', '甘肃,陇南', '104.921841', '33.400684', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (349, 687916, 1, 671119, '622900000000', '临夏回族自治州', '甘肃,临夏', '103.210538', '35.601182', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (350, 689265, 1, 671119, '623000000000', '甘南藏族自治州', '甘肃,甘南', '102.911027', '34.983385', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (351, 690095, 1, 690094, '630100000000', '西宁市', '青海,西宁', '101.778228', '36.617144', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (352, 691278, 1, 690094, '630200000000', '海东市', '青海,海东', '102.104287', '36.502039', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (353, 693040, 1, 690094, '632200000000', '海北藏族自治州', '青海,海北', '100.900997', '36.954413', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (354, 693342, 1, 690094, '632300000000', '黄南藏族自治州', '青海,黄南', '102.015248', '35.519548', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (355, 693672, 1, 690094, '632500000000', '海南藏族自治州', '青海,海南', '101.780199', '36.620901', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (356, 694220, 1, 690094, '632600000000', '果洛藏族自治州', '青海,果洛', '100.244808', '34.471431', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (357, 694478, 1, 690094, '632700000000', '玉树藏族自治州', '青海,玉树', '97.091934', '33.011674', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (358, 694846, 1, 690094, '632800000000', '海西蒙古族藏族自治州', '青海,海西', '97.369751', '37.377139', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (359, 695260, 1, 695259, '640100000000', '银川市', '宁夏,银川', '106.230909', '38.487193', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (360, 695883, 1, 695259, '640200000000', '石嘴山市', '宁夏,石嘴山', '106.383303', '38.983236', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (361, 696252, 1, 695259, '640300000000', '吴忠市', '宁夏,吴忠', '106.198393', '37.997460', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (362, 696928, 1, 695259, '640400000000', '固原市', '宁夏,固原', '106.242610', '36.015855', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (363, 697887, 1, 695259, '640500000000', '中卫市', '宁夏,中卫', '105.196902', '37.499972', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (364, 698441, 1, 698440, '650100000000', '乌鲁木齐市', '新疆,乌鲁木齐', '87.616848', '43.825592', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (365, 699583, 1, 698440, '650200000000', '克拉玛依市', '新疆,克拉玛依', '84.889207', '45.579888', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (366, 699773, 1, 698440, '650400000000', '吐鲁番市', '新疆,吐鲁番', '89.189655', '42.951384', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (367, 700070, 1, 698440, '650500000000', '哈密市', '新疆,哈密', '93.514916', '42.818501', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (368, 700489, 1, 698440, '652300000000', '昌吉回族自治州', '新疆,昌吉', '87.308224', '44.011182', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (369, 701559, 1, 698440, '652700000000', '博尔塔拉蒙古自治州', '新疆,博尔塔拉', '82.066159', '44.905588', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (370, 702104, 1, 698440, '652800000000', '巴音郭楞蒙古自治州', '新疆,巴音郭楞', '86.145298', '41.764115', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (371, 703119, 1, 698440, '652900000000', '阿克苏地区', '新疆,阿克苏', '80.260605', '41.168779', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (372, 704779, 1, 698440, '653000000000', '克孜勒苏柯尔克孜自治州', '新疆,克孜勒苏', '76.167819', '39.714526', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (373, 705145, 1, 698440, '653100000000', '喀什地区', '新疆,喀什', '75.989755', '39.470400', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (374, 708117, 1, 698440, '653200000000', '和田地区', '新疆,和田', '79.922211', '37.114157', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (375, 709792, 1, 698440, '654000000000', '伊犁哈萨克自治州', '新疆,伊犁', '81.324136', '43.916823', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (376, 711218, 1, 698440, '654200000000', '塔城地区', '新疆,塔城', '82.980316', '46.745364', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (377, 712893, 1, 698440, '654300000000', '阿勒泰地区', '新疆,阿勒泰', '88.141253', '47.844924', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (378, 713697, 1, 698440, '659000000000', '直辖县', '新疆', '87.627704', '43.793026', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (385, 714402, 1, 714401, '0', '彰化县', '台湾,彰化', '120.416000', '24.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (386, 717531, 1, 714401, '0', '新北市', '台湾,新北', '121.465746', '25.012366', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (387, 719868, 1, 714401, '0', '澎湖县', '台湾,澎湖', '119.566417', '23.569733', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (388, 720118, 1, 714401, '0', '屏东县', '台湾,屏东', '120.487928', '22.682802', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (389, 722024, 1, 714401, '0', '臺中市', '台湾,臺中', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (390, 725488, 1, 714401, '0', '臺南市', '台湾,臺南', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (391, 727730, 1, 714401, '0', '臺北市', '台湾,臺北', '121.517057', '25.048074', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (392, 729928, 1, 714401, '0', '臺东县', '台湾,臺东', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (393, 730843, 1, 714401, '0', '桃园市', '台湾,桃园', '121.083000', '25.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (394, 734179, 1, 714401, '0', '宜兰县', '台湾,宜兰', '121.500000', '24.600000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (395, 736051, 1, 714401, '0', '南投县', '台湾,南投', '120.830000', '23.830000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (396, 737856, 1, 714401, '0', '南海岛', '台湾,南海岛', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (397, 737861, 1, 714401, '0', '苗栗县', '台湾,苗栗', '120.818985', '24.561601', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (398, 739957, 1, 714401, '0', '嘉义市', '台湾,嘉义', '120.452538', '23.481568', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (399, 740510, 1, 714401, '0', '嘉义县', '台湾,嘉义', '120.452538', '23.481568', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (400, 742126, 1, 714401, '0', '新竹市', '台湾,新竹', '120.968798', '24.806738', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (401, 742636, 1, 714401, '0', '新竹县', '台湾,新竹', '120.968798', '24.806738', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (402, 743938, 1, 714401, '0', '花莲县', '台湾,花莲', '121.300000', '23.830000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (403, 745674, 1, 714401, '0', '高雄市', '台湾,高雄', '120.311922', '22.620856', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (404, 748553, 1, 714401, '0', '基隆市', '台湾,基隆', '121.746248', '25.130741', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (405, 749571, 1, 714401, '0', '金门县', '台湾,金门', '118.317089', '24.432706', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (406, 749930, 1, 714401, '0', '连江县', '台湾,连江', '119.539704', '26.197364', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (407, 749957, 1, 714401, '0', '云林县', '台湾,云林', '120.527173', '23.696887', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (408, 3, 2, 2, '110101000000', '东城区', '北京,东城', '116.416357', '39.928353', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (409, 203, 2, 2, '110102000000', '西城区', '北京,西城', '116.365868', '39.912289', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (410, 480, 2, 2, '110105000000', '朝阳区', '北京,朝阳', '116.443108', '39.921470', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (411, 1122, 2, 2, '110106000000', '丰台区', '北京,丰台', '116.287149', '39.858427', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (412, 1533, 2, 2, '110107000000', '石景山区', '北京,石景山', '116.222982', '39.906611', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (413, 1692, 2, 2, '110108000000', '海淀区', '北京,海淀', '116.298056', '39.959912', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (414, 2376, 2, 2, '110109000000', '门头沟区', '北京,门头沟', '116.102009', '39.940646', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (415, 2689, 2, 2, '110111000000', '房山区', '北京,房山', '116.143267', '39.749144', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (416, 3324, 2, 2, '110112000000', '通州区', '北京,通州', '116.656435', '39.909946', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (417, 3927, 2, 2, '110113000000', '顺义区', '北京,顺义', '116.654651', '40.130347', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (418, 4498, 2, 2, '110114000000', '昌平区', '北京,昌平', '116.231204', '40.220660', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (419, 5042, 2, 2, '110115000000', '大兴区', '北京,大兴', '116.341395', '39.726929', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (420, 5800, 2, 2, '110116000000', '怀柔区', '北京,怀柔', '116.642349', '40.315704', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (421, 6138, 2, 2, '110117000000', '平谷区', '北京,平谷', '117.121383', '40.140701', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (422, 6466, 2, 2, '110118000000', '密云区', '北京,密云', '116.843177', '40.376834', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (423, 6921, 2, 2, '110119000000', '延庆区', '北京,延庆', '115.974848', '40.456951', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (424, 7364, 2, 7363, '120101000000', '和平区', '天津,和平', '117.214510', '39.116949', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (425, 7434, 2, 7363, '120102000000', '河东区', '天津,河东', '117.251587', '39.128291', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (426, 7607, 2, 7363, '120103000000', '河西区', '天津,河西', '117.223372', '39.109563', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (427, 7763, 2, 7363, '120104000000', '南开区', '天津,南开', '117.150738', '39.138203', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (428, 7954, 2, 7363, '120105000000', '河北区', '天津,河北', '117.200983', '39.084158', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (429, 8079, 2, 7363, '120106000000', '红桥区', '天津,红桥', '117.151533', '39.167345', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (430, 8298, 2, 7363, '120110000000', '东丽区', '天津,东丽', '117.314324', '39.086569', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (431, 8563, 2, 7363, '120111000000', '西青区', '天津,西青', '117.008827', '39.141152', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (432, 8835, 2, 7363, '120112000000', '津南区', '天津,津南', '117.357260', '38.937928', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (433, 9102, 2, 7363, '120113000000', '北辰区', '天津,北辰', '117.135488', '39.224792', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (434, 9378, 2, 7363, '120114000000', '武清区', '天津,武清', '117.044388', '39.384119', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (435, 10143, 2, 7363, '120115000000', '宝坻区', '天津,宝坻', '117.309863', '39.717379', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (436, 10983, 2, 7363, '120116000000', '滨海新区', '天津,滨海', '117.517969', '38.719936', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (437, 11454, 2, 7363, '120117000000', '宁河区', '天津,宁河', '117.826625', '39.329858', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (438, 11795, 2, 7363, '120118000000', '静海区', '天津,静海', '116.974130', '38.947512', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (439, 12251, 2, 7363, '120119000000', '蓟州区', '天津,蓟州', '117.200983', '39.084158', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (440, 13269, 2, 13268, '130101000000', '市辖区', '河北,石家庄', '114.514859', '38.042306', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (441, 13270, 2, 0, '130102000000', '长安区', '河北,石家庄,长安', '114.539060', '38.036654', 1, '2021-07-16 11:33:35', '2021-08-16 11:50:45'); +INSERT INTO `eb_system_city` VALUES (442, 13444, 2, 13268, '130104000000', '桥西区', '河北,石家庄,桥西', '114.461154', '38.004043', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (443, 13601, 2, 13268, '130105000000', '新华区', '河北,石家庄,新华', '114.463347', '38.051060', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (444, 13728, 2, 13268, '130107000000', '井陉矿区', '河北,石家庄,井陉', '114.145240', '38.032148', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (445, 13788, 2, 13268, '130108000000', '裕华区', '河北,石家庄,裕华', '114.531362', '38.006453', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (446, 13895, 2, 13268, '130109000000', '藁城区', '河北,石家庄,藁城', '114.847075', '38.021567', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (447, 14142, 2, 13268, '130110000000', '鹿泉区', '河北,石家庄,鹿泉', '114.313724', '38.085958', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (448, 14377, 2, 13268, '130111000000', '栾城区', '河北,石家庄,栾城', '114.648318', '37.900200', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (449, 14562, 2, 13268, '130121000000', '井陉县', '河北,石家庄,井陉', '114.145240', '38.032148', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (450, 14902, 2, 13268, '130123000000', '正定县', '河北,石家庄,正定', '114.570941', '38.146445', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (451, 15100, 2, 13268, '130125000000', '行唐县', '河北,石家庄,行唐', '114.552692', '38.438411', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (452, 15447, 2, 13268, '130126000000', '灵寿县', '河北,石家庄,灵寿', '114.382645', '38.308628', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (453, 15747, 2, 13268, '130127000000', '高邑县', '河北,石家庄,高邑', '114.611433', '37.615159', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (454, 15860, 2, 13268, '130128000000', '深泽县', '河北,石家庄,深泽', '115.200910', '38.184072', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (455, 15993, 2, 13268, '130129000000', '赞皇县', '河北,石家庄,赞皇', '114.386155', '37.665576', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (456, 16218, 2, 13268, '130130000000', '无极县', '河北,石家庄,无极', '114.976337', '38.179141', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (457, 16447, 2, 13268, '130131000000', '平山县', '河北,石家庄,平山', '114.199134', '38.247144', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (458, 17188, 2, 13268, '130132000000', '元氏县', '河北,石家庄,元氏', '114.525580', '37.766651', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (459, 17417, 2, 13268, '130133000000', '赵县', '河北,石家庄,赵县', '114.776187', '37.756498', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (460, 17710, 2, 13268, '130183000000', '晋州市', '河北,石家庄,晋州', '115.044185', '38.033629', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (461, 17945, 2, 13268, '130184000000', '新乐市', '河北,石家庄,新乐', '114.684014', '38.343296', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (462, 18129, 2, 18128, '130201000000', '市辖区', '河北,唐山', '118.180193', '39.630867', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (463, 18130, 2, 18128, '130202000000', '路南区', '河北,唐山,路南', '118.154354', '39.625059', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (464, 18297, 2, 18128, '130203000000', '路北区', '河北,唐山,路北', '118.200692', '39.624437', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (465, 18542, 2, 18128, '130204000000', '古冶区', '河北,唐山,古冶', '118.447635', '39.733578', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (466, 18754, 2, 18128, '130205000000', '开平区', '河北,唐山,开平', '118.261842', '39.671001', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (467, 18938, 2, 18128, '130207000000', '丰南区', '河北,唐山,丰南', '118.085169', '39.576031', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (468, 19436, 2, 18128, '130208000000', '丰润区', '河北,唐山,丰润', '118.162216', '39.832582', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (469, 19987, 2, 18128, '130209000000', '曹妃甸区', '河北,唐山,曹妃甸', '118.460379', '39.273070', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (470, 20152, 2, 18128, '130223000000', '滦县', '河北,唐山,滦县', '118.703598', '39.740593', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (471, 20696, 2, 18128, '130224000000', '滦南县', '河北,唐山,滦南', '118.682379', '39.518997', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (472, 21321, 2, 18128, '130225000000', '乐亭县', '河北,唐山,乐亭', '118.912571', '39.425608', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (473, 21825, 2, 18128, '130227000000', '迁西县', '河北,唐山,迁西', '118.314715', '40.141500', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (474, 22273, 2, 18128, '130229000000', '玉田县', '河北,唐山,玉田', '117.738658', '39.900401', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (475, 23067, 2, 18128, '130281000000', '遵化市', '河北,唐山,遵化', '117.965892', '40.189202', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (476, 23787, 2, 18128, '130283000000', '迁安市', '河北,唐山,迁安', '118.701144', '39.999175', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (477, 24372, 2, 24371, '130301000000', '市辖区', '河北,秦皇岛', '119.600492', '39.935385', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (478, 24373, 2, 24371, '130302000000', '海港区', '河北,秦皇岛,海港', '119.564962', '39.947560', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (479, 24760, 2, 24371, '130303000000', '山海关区', '河北,秦皇岛,山海关', '119.775799', '39.978849', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (480, 24891, 2, 24371, '130304000000', '北戴河区', '河北,秦皇岛,北戴河', '119.488914', '39.834751', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (481, 24951, 2, 24371, '130306000000', '抚宁区', '河北,秦皇岛,抚宁', '119.244848', '39.876254', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (482, 25332, 2, 24371, '130321000000', '青龙满族自治县', '河北,秦皇岛,青龙', '118.949684', '40.407578', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (483, 25758, 2, 24371, '130322000000', '昌黎县', '河北,秦皇岛,昌黎', '119.162694', '39.712813', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (484, 26216, 2, 24371, '130324000000', '卢龙县', '河北,秦皇岛,卢龙', '118.892986', '39.891947', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (485, 26780, 2, 26779, '130401000000', '市辖区', '河北,邯郸', '114.538961', '36.625657', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (486, 26781, 2, 26779, '130402000000', '邯山区', '河北,邯郸,邯山', '114.490431', '36.580358', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (487, 26877, 2, 26779, '130403000000', '丛台区', '河北,邯郸,丛台', '114.492897', '36.636410', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (488, 27018, 2, 26779, '130404000000', '复兴区', '河北,邯郸,复兴', '114.462058', '36.639022', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (489, 27135, 2, 26779, '130406000000', '峰峰矿区', '河北,邯郸,峰峰', '114.214634', '36.472281', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (490, 27372, 2, 26779, '130421000000', '邯郸县', '河北,邯郸,邯郸', '114.530925', '36.593881', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (491, 27538, 2, 26779, '130423000000', '临漳县', '河北,邯郸,临漳', '114.619544', '36.335300', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (492, 27978, 2, 26779, '130424000000', '成安县', '河北,邯郸,成安', '114.670032', '36.444317', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (493, 28222, 2, 26779, '130425000000', '大名县', '河北,邯郸,大名', '115.147814', '36.285616', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (494, 28894, 2, 26779, '130426000000', '涉县', '河北,邯郸,涉县', '113.691401', '36.584995', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (495, 29226, 2, 26779, '130427000000', '磁县', '河北,邯郸,磁县', '114.373947', '36.374012', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (496, 29613, 2, 26779, '130428000000', '肥乡县', '河北,邯郸,肥乡', '114.800166', '36.548132', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (497, 29888, 2, 26779, '130429000000', '永年县', '河北,邯郸,永年', '114.543804', '36.744120', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (498, 30335, 2, 26779, '130430000000', '邱县', '河北,邯郸,邱县', '115.186792', '36.811133', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (499, 30568, 2, 26779, '130431000000', '鸡泽县', '河北,邯郸,鸡泽', '114.878299', '36.920350', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (500, 30747, 2, 26779, '130432000000', '广平县', '河北,邯郸,广平', '114.948607', '36.483484', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (501, 30924, 2, 26779, '130433000000', '馆陶县', '河北,邯郸,馆陶', '115.282468', '36.547557', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (502, 31210, 2, 26779, '130434000000', '魏县', '河北,邯郸,魏县', '114.938921', '36.359869', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (503, 31793, 2, 26779, '130435000000', '曲周县', '河北,邯郸,曲周', '114.945113', '36.780175', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (504, 32146, 2, 26779, '130481000000', '武安市', '河北,邯郸,武安', '114.203697', '36.696506', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (505, 32689, 2, 32688, '130501000000', '市辖区', '河北,邢台', '114.504844', '37.070589', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (506, 32690, 2, 32688, '130502000000', '桥东区', '河北,邢台,桥东', '114.507254', '37.068017', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (507, 32795, 2, 32688, '130503000000', '桥西区', '河北,邢台,桥西', '114.468435', '37.059882', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (508, 32922, 2, 32688, '130521000000', '邢台县', '河北,邢台,邢台', '114.561132', '37.050730', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (509, 33459, 2, 32688, '130522000000', '临城县', '河北,邢台,临城', '114.498762', '37.444499', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (510, 33688, 2, 32688, '130523000000', '内丘县', '河北,邢台,内丘', '114.512128', '37.286669', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (511, 34011, 2, 32688, '130524000000', '柏乡县', '河北,邢台,柏乡', '114.693426', '37.482423', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (512, 34139, 2, 32688, '130525000000', '隆尧县', '河北,邢台,隆尧', '114.770419', '37.350173', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (513, 34431, 2, 32688, '130526000000', '任县', '河北,邢台,任县', '114.671936', '37.120983', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (514, 34635, 2, 32688, '130527000000', '南和县', '河北,邢台,南和', '114.683762', '37.005041', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (515, 34866, 2, 32688, '130528000000', '宁晋县', '河北,邢台,宁晋', '114.919301', '37.619886', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (516, 35240, 2, 32688, '130529000000', '巨鹿县', '河北,邢台,巨鹿', '115.037478', '37.221112', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (517, 35542, 2, 32688, '130530000000', '新河县', '河北,邢台,新河', '115.242070', '37.528719', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (518, 35718, 2, 32688, '130531000000', '广宗县', '河北,邢台,广宗', '115.142607', '37.074660', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (519, 35940, 2, 32688, '130532000000', '平乡县', '河北,邢台,平乡', '115.030076', '37.063148', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (520, 36202, 2, 32688, '130533000000', '威县', '河北,邢台,威县', '115.266780', '36.975377', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (521, 36748, 2, 32688, '130534000000', '清河县', '河北,邢台,清河', '115.667576', '37.040087', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (522, 37086, 2, 32688, '130535000000', '临西县', '河北,邢台,临西', '115.501048', '36.870813', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (523, 37403, 2, 32688, '130581000000', '南宫市', '河北,邢台,南宫', '115.408748', '37.359264', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (524, 37883, 2, 32688, '130582000000', '沙河市', '河北,邢台,沙河', '114.503335', '36.854922', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (525, 38161, 2, 38160, '130601000000', '市辖区', '河北,保定', '115.464806', '38.873891', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (526, 38162, 2, 38160, '130602000000', '竞秀区', '河北,保定,竞秀', '115.458669', '38.877561', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (527, 38327, 2, 38160, '130606000000', '莲池区', '河北,保定,莲池', '115.497342', '38.883209', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (528, 38578, 2, 38160, '130607000000', '满城区', '河北,保定,满城', '115.322351', '38.948955', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (529, 38786, 2, 38160, '130608000000', '清苑区', '河北,保定,清苑', '115.489968', '38.765041', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (530, 39082, 2, 38160, '130609000000', '徐水区', '河北,保定,徐水', '115.655778', '39.018737', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (531, 39426, 2, 38160, '130623000000', '涞水县', '河北,保定,涞水', '115.713905', '39.394317', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (532, 39736, 2, 38160, '130624000000', '阜平县', '河北,保定,阜平', '114.195104', '38.849152', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (533, 39960, 2, 38160, '130626000000', '定兴县', '河北,保定,定兴', '115.808175', '39.263018', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (534, 40258, 2, 38160, '130627000000', '唐县', '河北,保定,唐县', '114.982972', '38.748204', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (535, 40632, 2, 38160, '130628000000', '高阳县', '河北,保定,高阳', '115.778965', '38.700088', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (536, 40825, 2, 38160, '130629000000', '容城县', '河北,保定,容城', '115.861657', '39.042784', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (537, 40961, 2, 38160, '130630000000', '涞源县', '河北,保定,涞源', '114.694284', '39.360247', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (538, 41272, 2, 38160, '130631000000', '望都县', '河北,保定,望都', '115.154511', '38.695736', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (539, 41433, 2, 38160, '130632000000', '安新县', '河北,保定,安新', '115.935603', '38.935369', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (540, 41658, 2, 38160, '130633000000', '易县', '河北,保定,易县', '115.497457', '39.349393', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (541, 42155, 2, 38160, '130634000000', '曲阳县', '河北,保定,曲阳', '114.744926', '38.622244', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (542, 42550, 2, 38160, '130635000000', '蠡县', '河北,保定,蠡县', '115.583855', '38.488056', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (543, 42802, 2, 38160, '130636000000', '顺平县', '河北,保定,顺平', '115.135470', '38.837487', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (544, 43054, 2, 38160, '130637000000', '博野县', '河北,保定,博野', '115.464380', '38.457364', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (545, 43196, 2, 38160, '130638000000', '雄县', '河北,保定,雄县', '116.108650', '38.994550', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (546, 43441, 2, 38160, '130681000000', '涿州市', '河北,保定,涿州', '115.974422', '39.485283', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (547, 43905, 2, 38160, '130683000000', '安国市', '河北,保定,安国', '115.326647', '38.418440', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (548, 44124, 2, 38160, '130684000000', '高碑店市', '河北,保定,高碑店', '115.873758', '39.326521', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (549, 44571, 2, 44570, '130701000000', '市辖区', '河北,张家口', '114.887543', '40.824418', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (550, 44572, 2, 44570, '130702000000', '桥东区', '河北,张家口,桥东', '114.894341', '40.788457', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (551, 44634, 2, 44570, '130703000000', '桥西区', '河北,张家口,桥西', '114.869407', '40.819564', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (552, 44704, 2, 44570, '130705000000', '宣化区', '河北,张家口,宣化', '115.099510', '40.608726', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (553, 45133, 2, 44570, '130706000000', '下花园区', '河北,张家口,下花园', '115.287352', '40.502652', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (554, 45197, 2, 44570, '130708000000', '万全区', '河北,张家口,万全', '114.740560', '40.766898', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (555, 45395, 2, 44570, '130709000000', '崇礼区', '河北,张家口,崇礼', '115.282669', '40.974676', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (556, 45623, 2, 44570, '130722000000', '张北县', '河北,张家口,张北', '114.720086', '41.158557', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (557, 46018, 2, 44570, '130723000000', '康保县', '河北,张家口,康保', '114.600404', '41.852368', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (558, 46371, 2, 44570, '130724000000', '沽源县', '河北,张家口,沽源', '115.688692', '41.669668', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (559, 46619, 2, 44570, '130725000000', '尚义县', '河北,张家口,尚义', '113.969619', '41.076227', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (560, 46812, 2, 44570, '130726000000', '蔚县', '河北,张家口,蔚县', '114.588903', '39.840843', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (561, 47396, 2, 44570, '130727000000', '阳原县', '河北,张家口,阳原', '114.150388', '40.103742', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (562, 47718, 2, 44570, '130728000000', '怀安县', '河北,张家口,怀安', '114.385791', '40.674193', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (563, 48013, 2, 44570, '130730000000', '怀来县', '河北,张家口,怀来', '115.517862', '40.415343', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (564, 48331, 2, 44570, '130731000000', '涿鹿县', '河北,张家口,涿鹿', '115.205345', '40.379563', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (565, 48731, 2, 44570, '130732000000', '赤城县', '河北,张家口,赤城', '115.831499', '40.912921', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (566, 49191, 2, 49190, '130801000000', '市辖区', '河北,承德', '117.962410', '40.954071', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (567, 49192, 2, 49190, '130802000000', '双桥区', '河北,承德,双桥', '117.943348', '40.974650', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (568, 49328, 2, 49190, '130803000000', '双滦区', '河北,承德,双滦', '117.799912', '40.959196', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (569, 49425, 2, 49190, '130804000000', '鹰手营子矿区', '河北,承德,鹰手营子', '117.663471', '40.546436', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (570, 49456, 2, 49190, '130821000000', '承德县', '河北,承德,承德', '118.173825', '40.768238', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (571, 49866, 2, 49190, '130822000000', '兴隆县', '河北,承德,兴隆', '117.500558', '40.417358', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (572, 50185, 2, 49190, '130823000000', '平泉县', '河北,承德,平泉', '118.701951', '41.018405', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (573, 50455, 2, 49190, '130824000000', '滦平县', '河北,承德,滦平', '117.332801', '40.941482', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (574, 50690, 2, 49190, '130825000000', '隆化县', '河北,承德,隆化', '117.738938', '41.313791', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (575, 51081, 2, 49190, '130826000000', '丰宁满族自治县', '河北,承德,丰宁', '117.962410', '40.954071', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (576, 51428, 2, 49190, '130827000000', '宽城满族自治县', '河北,承德,宽城', '118.485313', '40.611391', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (577, 51657, 2, 49190, '130828000000', '围场满族蒙古族自治县', '河北,承德,围场', '117.760159', '41.938529', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (578, 52019, 2, 52018, '130901000000', '市辖区', '河北,沧州', '116.838834', '38.304477', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (579, 52020, 2, 52018, '130902000000', '新华区', '河北,沧州,新华', '116.866284', '38.314416', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (580, 52086, 2, 52018, '130903000000', '运河区', '河北,沧州,运河', '116.832276', '38.310143', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (581, 52214, 2, 52018, '130921000000', '沧县', '河北,沧州,沧县', '117.007478', '38.219856', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (582, 52753, 2, 52018, '130922000000', '青县', '河北,沧州,青县', '116.804306', '38.583021', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (583, 53128, 2, 52018, '130923000000', '东光县', '河北,沧州,东光', '116.537067', '37.888248', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (584, 53595, 2, 52018, '130924000000', '海兴县', '河北,沧州,海兴', '117.496606', '38.141582', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (585, 53810, 2, 52018, '130925000000', '盐山县', '河北,沧州,盐山', '117.230603', '38.058088', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (586, 54277, 2, 52018, '130926000000', '肃宁县', '河北,沧州,肃宁', '115.829758', '38.422802', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (587, 54547, 2, 52018, '130927000000', '南皮县', '河北,沧州,南皮', '116.708104', '38.038584', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (588, 54875, 2, 52018, '130928000000', '吴桥县', '河北,沧州,吴桥', '116.391508', '37.627661', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (589, 55369, 2, 52018, '130929000000', '献县', '河北,沧州,献县', '116.122802', '38.190144', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (590, 55902, 2, 52018, '130930000000', '孟村回族自治县', '河北,沧州,孟村', '117.104298', '38.053409', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (591, 56037, 2, 52018, '130981000000', '泊头市', '河北,沧州,泊头', '116.578368', '38.083437', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (592, 56764, 2, 52018, '130982000000', '任丘市', '河北,沧州,任丘', '116.082918', '38.683592', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (593, 57238, 2, 52018, '130983000000', '黄骅市', '河北,沧州,黄骅', '117.330048', '38.371383', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (594, 57596, 2, 52018, '130984000000', '河间市', '河北,沧州,河间', '116.099518', '38.446624', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (595, 58248, 2, 58247, '131001000000', '市辖区', '河北,廊坊', '116.683752', '39.538047', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (596, 58249, 2, 58247, '131002000000', '安次区', '河北,廊坊,安次', '116.694544', '39.502569', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (597, 58567, 2, 58247, '131003000000', '广阳区', '河北,廊坊,广阳', '116.710690', '39.522786', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (598, 58789, 2, 58247, '131022000000', '固安县', '河北,廊坊,固安', '116.298657', '39.438214', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (599, 59228, 2, 58247, '131023000000', '永清县', '河北,廊坊,永清', '116.499028', '39.321794', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (600, 59639, 2, 58247, '131024000000', '香河县', '河北,廊坊,香河', '117.006093', '39.761424', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (601, 59963, 2, 58247, '131025000000', '大城县', '河北,廊坊,大城', '116.653794', '38.705449', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (602, 60378, 2, 58247, '131026000000', '文安县', '河北,廊坊,文安', '116.457858', '38.873281', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (603, 60784, 2, 58247, '131028000000', '大厂回族自治县', '河北,廊坊,大厂', '116.970154', '39.897785', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (604, 60904, 2, 58247, '131081000000', '霸州市', '河北,廊坊,霸州', '116.391386', '39.125898', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (605, 61311, 2, 58247, '131082000000', '三河市', '河北,廊坊,三河', '117.078295', '39.982718', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (606, 61805, 2, 61804, '131101000000', '市辖区', '河北,衡水', '115.670177', '37.738920', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (607, 61806, 2, 61804, '131102000000', '桃城区', '河北,衡水,桃城', '115.675422', '37.735369', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (608, 62086, 2, 61804, '131103000000', '冀州区', '河北,衡水,冀州', '115.670177', '37.738920', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (609, 62479, 2, 61804, '131121000000', '枣强县', '河北,衡水,枣强', '115.724260', '37.513417', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (610, 63050, 2, 61804, '131122000000', '武邑县', '河北,衡水,武邑', '115.887655', '37.801658', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (611, 63584, 2, 61804, '131123000000', '武强县', '河北,衡水,武强', '115.982461', '38.041368', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (612, 63832, 2, 61804, '131124000000', '饶阳县', '河北,衡水,饶阳', '115.725833', '38.235892', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (613, 64040, 2, 61804, '131125000000', '安平县', '河北,衡水,安平', '115.519216', '38.234510', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (614, 64281, 2, 61804, '131126000000', '故城县', '河北,衡水,故城', '115.965874', '37.347410', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (615, 64833, 2, 61804, '131127000000', '景县', '河北,衡水,景县', '116.270648', '37.692290', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (616, 65702, 2, 61804, '131128000000', '阜城县', '河北,衡水,阜城', '116.144418', '37.868872', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (617, 66323, 2, 61804, '131182000000', '深州市', '河北,衡水,深州', '115.559574', '38.001536', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (618, 66814, 2, 66813, '139001000000', '定州市', '河北,定州', '114.990159', '38.516174', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (619, 67371, 2, 66813, '139002000000', '辛集市', '河北,辛集', '115.218057', '37.943315', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (620, 67749, 2, 67748, '140101000000', '市辖区', '山西,太原', '112.548879', '37.870590', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (621, 67750, 2, 67748, '140105000000', '小店区', '山西,太原,小店', '112.565659', '37.736526', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (622, 67921, 2, 67748, '140106000000', '迎泽区', '山西,太原,迎泽', '112.563400', '37.863451', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (623, 68043, 2, 67748, '140107000000', '杏花岭区', '山西,太原,杏花岭', '112.570605', '37.893955', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (624, 68203, 2, 67748, '140108000000', '尖草坪区', '山西,太原,尖草坪', '112.486691', '37.940387', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (625, 68368, 2, 67748, '140109000000', '万柏林区', '山西,太原,万柏林', '112.515748', '37.859447', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (626, 68542, 2, 67748, '140110000000', '晋源区', '山西,太原,晋源', '112.477940', '37.715193', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (627, 68671, 2, 67748, '140121000000', '清徐县', '山西,太原,清徐', '112.358667', '37.607443', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (628, 68893, 2, 67748, '140122000000', '阳曲县', '山西,太原,阳曲', '112.672953', '38.058489', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (629, 69032, 2, 67748, '140123000000', '娄烦县', '山西,太原,娄烦', '111.797083', '38.067932', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (630, 69190, 2, 67748, '140181000000', '古交市', '山西,太原,古交', '112.175875', '37.907109', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (631, 69391, 2, 69390, '140201000000', '市辖区', '山西,大同', '113.612440', '40.040295', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (632, 69392, 2, 69390, '140202000000', '城区', '山西,大同,城区', '113.298027', '40.075667', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (633, 69546, 2, 69390, '140203000000', '矿区', '山西,大同,矿区', '113.612440', '40.040295', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (634, 69691, 2, 69390, '140211000000', '南郊区', '山西,大同,南郊', '113.149693', '40.005405', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (635, 69891, 2, 69390, '140212000000', '新荣区', '山西,大同,新荣', '113.140005', '40.255866', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (636, 70045, 2, 69390, '140221000000', '阳高县', '山西,大同,阳高', '113.748945', '40.361060', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (637, 70336, 2, 69390, '140222000000', '天镇县', '山西,大同,天镇', '114.090867', '40.420237', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (638, 70582, 2, 69390, '140223000000', '广灵县', '山西,大同,广灵', '114.282758', '39.760281', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (639, 70778, 2, 69390, '140224000000', '灵丘县', '山西,大同,灵丘', '114.234350', '39.442406', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (640, 71059, 2, 69390, '140225000000', '浑源县', '山西,大同,浑源', '113.699475', '39.693407', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (641, 71402, 2, 69390, '140226000000', '左云县', '山西,大同,左云', '112.703008', '40.013442', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (642, 71649, 2, 69390, '140227000000', '大同县', '山西,大同,大同', '113.397170', '40.067276', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (643, 71851, 2, 71850, '140301000000', '市辖区', '山西,阳泉', '113.580519', '37.856971', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (644, 71852, 2, 71850, '140302000000', '城区', '山西,阳泉,城区', '113.600670', '37.847437', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (645, 71905, 2, 71850, '140303000000', '矿区', '山西,阳泉,矿区', '113.580519', '37.856971', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (646, 71950, 2, 71850, '140311000000', '郊区', '山西,阳泉,郊区', '113.594164', '37.944679', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (647, 72145, 2, 71850, '140321000000', '平定县', '山西,阳泉,平定', '113.657841', '37.786653', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (648, 72497, 2, 71850, '140322000000', '盂县', '山西,阳泉,盂县', '113.412330', '38.085619', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (649, 72976, 2, 72975, '140401000000', '市辖区', '山西,长治', '113.116255', '36.195386', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (650, 72977, 2, 72975, '140402000000', '城区', '山西,长治,城区', '113.123085', '36.203519', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (651, 73071, 2, 72975, '140411000000', '郊区', '山西,长治,郊区', '113.101211', '36.218388', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (652, 73222, 2, 72975, '140421000000', '长治县', '山西,长治,长治', '113.051407', '36.052858', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (653, 73495, 2, 72975, '140423000000', '襄垣县', '山西,长治,襄垣', '113.051491', '36.535817', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (654, 73840, 2, 72975, '140424000000', '屯留县', '山西,长治,屯留', '112.892151', '36.315929', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (655, 74151, 2, 72975, '140425000000', '平顺县', '山西,长治,平顺', '113.435961', '36.200179', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (656, 74429, 2, 72975, '140426000000', '黎城县', '山西,长治,黎城', '113.387155', '36.502328', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (657, 74694, 2, 72975, '140427000000', '壶关县', '山西,长治,壶关', '113.207049', '36.115449', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (658, 75101, 2, 72975, '140428000000', '长子县', '山西,长治,长子', '112.877900', '36.122334', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (659, 75515, 2, 72975, '140429000000', '武乡县', '山西,长治,武乡', '112.864562', '36.837625', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (660, 75911, 2, 72975, '140430000000', '沁县', '山西,长治,沁县', '112.699226', '36.756064', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (661, 76237, 2, 72975, '140431000000', '沁源县', '山西,长治,沁源', '112.337446', '36.500200', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (662, 76512, 2, 72975, '140481000000', '潞城市', '山西,长治,潞城', '113.228852', '36.334104', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (663, 76727, 2, 76726, '140501000000', '市辖区', '山西,晋城', '112.851831', '35.490701', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (664, 76728, 2, 76726, '140502000000', '城区', '山西,晋城,城区', '112.853555', '35.501572', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (665, 76874, 2, 76726, '140521000000', '沁水县', '山西,晋城,沁水', '112.186739', '35.690141', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (666, 77140, 2, 76726, '140522000000', '阳城县', '山西,晋城,阳城', '112.414738', '35.486029', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (667, 77632, 2, 76726, '140524000000', '陵川县', '山西,晋城,陵川', '113.280688', '35.775685', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (668, 78024, 2, 76726, '140525000000', '泽州县', '山西,晋城,泽州', '112.899137', '35.617221', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (669, 78678, 2, 76726, '140581000000', '高平市', '山西,晋城,高平', '112.923920', '35.797997', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (670, 79164, 2, 79163, '140601000000', '市辖区', '山西,朔州', '112.432825', '39.331595', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (671, 79165, 2, 79163, '140602000000', '朔城区', '山西,朔州,朔城', '112.432250', '39.318940', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (672, 79533, 2, 79163, '140603000000', '平鲁区', '山西,朔州,平鲁', '112.288331', '39.512155', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (673, 79843, 2, 79163, '140621000000', '山阴县', '山西,朔州,山阴', '112.816600', '39.526227', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (674, 80134, 2, 79163, '140622000000', '应县', '山西,朔州,应县', '113.191099', '39.554247', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (675, 80454, 2, 79163, '140623000000', '右玉县', '山西,朔州,右玉', '112.466989', '39.989064', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (676, 80799, 2, 79163, '140624000000', '怀仁县', '山西,朔州,怀仁', '113.099958', '39.827916', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (677, 81001, 2, 81000, '140701000000', '市辖区', '山西,晋中', '112.752694', '37.687024', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (678, 81002, 2, 81000, '140702000000', '榆次区', '山西,晋中,榆次', '112.708241', '37.697792', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (679, 81361, 2, 81000, '140721000000', '榆社县', '山西,晋中,榆社', '112.975287', '37.070788', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (680, 81649, 2, 81000, '140722000000', '左权县', '山西,晋中,左权', '113.379372', '37.082681', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (681, 81872, 2, 81000, '140723000000', '和顺县', '山西,晋中,和顺', '113.570438', '37.329664', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (682, 82183, 2, 81000, '140724000000', '昔阳县', '山西,晋中,昔阳', '113.706875', '37.611210', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (683, 82535, 2, 81000, '140725000000', '寿阳县', '山西,晋中,寿阳', '113.176434', '37.895325', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (684, 82765, 2, 81000, '140726000000', '太谷县', '山西,晋中,太谷', '112.551357', '37.421308', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (685, 82986, 2, 81000, '140727000000', '祁县', '山西,晋中,祁县', '112.335297', '37.358317', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (686, 83165, 2, 81000, '140728000000', '平遥县', '山西,晋中,平遥', '112.176273', '37.189559', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (687, 83472, 2, 81000, '140729000000', '灵石县', '山西,晋中,灵石', '111.778685', '36.847860', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (688, 83810, 2, 81000, '140781000000', '介休市', '山西,晋中,介休', '111.916712', '37.026945', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (689, 84093, 2, 84092, '140801000000', '市辖区', '山西,运城', '111.007528', '35.026412', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (690, 84094, 2, 84092, '140802000000', '盐湖区', '山西,运城,盐湖', '111.007528', '35.026412', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (691, 84483, 2, 84092, '140821000000', '临猗县', '山西,运城,临猗', '110.774547', '35.144277', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (692, 84893, 2, 84092, '140822000000', '万荣县', '山西,运城,万荣', '110.838024', '35.415254', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (693, 85194, 2, 84092, '140823000000', '闻喜县', '山西,运城,闻喜', '111.224720', '35.356644', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (694, 85569, 2, 84092, '140824000000', '稷山县', '山西,运城,稷山', '110.983333', '35.604025', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (695, 85780, 2, 84092, '140825000000', '新绛县', '山西,运城,新绛', '111.224778', '35.616288', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (696, 86023, 2, 84092, '140826000000', '绛县', '山西,运城,绛县', '111.568236', '35.491190', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (697, 86238, 2, 84092, '140827000000', '垣曲县', '山西,运城,垣曲', '111.669917', '35.297620', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (698, 86448, 2, 84092, '140828000000', '夏县', '山西,运城,夏县', '111.220456', '35.141363', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (699, 86706, 2, 84092, '140829000000', '平陆县', '山西,运城,平陆', '111.194133', '34.829260', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (700, 86949, 2, 84092, '140830000000', '芮城县', '山西,运城,芮城', '110.694369', '34.693580', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (701, 87129, 2, 84092, '140881000000', '永济市', '山西,运城,永济', '110.447549', '34.867050', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (702, 87434, 2, 84092, '140882000000', '河津市', '山西,运城,河津', '110.712063', '35.596383', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (703, 87614, 2, 87613, '140901000000', '市辖区', '山西,忻州', '112.734174', '38.416663', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (704, 87615, 2, 87613, '140902000000', '忻府区', '山西,忻州,忻府', '112.746046', '38.404243', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (705, 88061, 2, 87613, '140921000000', '定襄县', '山西,忻州,定襄', '112.957215', '38.473548', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (706, 88227, 2, 87613, '140922000000', '五台县', '山西,忻州,五台', '113.255309', '38.728315', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (707, 88754, 2, 87613, '140923000000', '代县', '山西,忻州,代县', '112.960282', '39.066917', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (708, 89144, 2, 87613, '140924000000', '繁峙县', '山西,忻州,繁峙', '113.265564', '39.188811', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (709, 89570, 2, 87613, '140925000000', '宁武县', '山西,忻州,宁武', '112.304722', '39.001524', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (710, 90066, 2, 87613, '140926000000', '静乐县', '山西,忻州,静乐', '111.939440', '38.359036', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (711, 90462, 2, 87613, '140927000000', '神池县', '山西,忻州,神池', '112.211297', '39.090553', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (712, 90715, 2, 87613, '140928000000', '五寨县', '山西,忻州,五寨', '111.846905', '38.910726', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (713, 90978, 2, 87613, '140929000000', '岢岚县', '山西,忻州,岢岚', '111.572850', '38.704180', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (714, 91193, 2, 87613, '140930000000', '河曲县', '山西,忻州,河曲', '111.138472', '39.384482', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (715, 91548, 2, 87613, '140931000000', '保德县', '山西,忻州,保德', '111.086564', '39.022488', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (716, 91912, 2, 87613, '140932000000', '偏关县', '山西,忻州,偏关', '111.508831', '39.436306', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (717, 92172, 2, 87613, '140981000000', '原平市', '山西,忻州,原平', '112.711059', '38.731402', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (718, 92739, 2, 92738, '141001000000', '市辖区', '山西,临汾', '111.518976', '36.088005', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (719, 92740, 2, 92738, '141002000000', '尧都区', '山西,临汾,尧都', '111.579554', '36.078841', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (720, 93208, 2, 92738, '141021000000', '曲沃县', '山西,临汾,曲沃', '111.475861', '35.641087', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (721, 93375, 2, 92738, '141022000000', '翼城县', '山西,临汾,翼城', '111.718951', '35.738576', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (722, 93604, 2, 92738, '141023000000', '襄汾县', '山西,临汾,襄汾', '111.441725', '35.876293', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (723, 93972, 2, 92738, '141024000000', '洪洞县', '山西,临汾,洪洞', '111.674966', '36.253748', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (724, 94457, 2, 92738, '141025000000', '古县', '山西,临汾,古县', '111.920466', '36.266914', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (725, 94580, 2, 92738, '141026000000', '安泽县', '山西,临汾,安泽', '112.250144', '36.147787', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (726, 94696, 2, 92738, '141027000000', '浮山县', '山西,临汾,浮山', '111.848883', '35.968124', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (727, 94893, 2, 92738, '141028000000', '吉县', '山西,临汾,吉县', '110.681763', '36.098188', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (728, 94981, 2, 92738, '141029000000', '乡宁县', '山西,临汾,乡宁', '110.847021', '35.970389', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (729, 95181, 2, 92738, '141030000000', '大宁县', '山西,临汾,大宁', '110.752903', '36.465133', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (730, 95272, 2, 92738, '141031000000', '隰县', '山西,临汾,隰县', '110.940638', '36.693331', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (731, 95381, 2, 92738, '141032000000', '永和县', '山西,临汾,永和', '110.632007', '36.759507', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (732, 95472, 2, 92738, '141033000000', '蒲县', '山西,临汾,蒲县', '111.096439', '36.411827', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (733, 95579, 2, 92738, '141034000000', '汾西县', '山西,临汾,汾西', '111.563951', '36.652854', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (734, 95715, 2, 92738, '141081000000', '侯马市', '山西,临汾,侯马', '111.372002', '35.619105', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (735, 95828, 2, 92738, '141082000000', '霍州市', '山西,临汾,霍州', '111.755398', '36.568931', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (736, 96065, 2, 96064, '141101000000', '市辖区', '山西,吕梁', '111.144319', '37.518314', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (737, 96066, 2, 96064, '141102000000', '离石区', '山西,吕梁,离石', '111.150733', '37.517641', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (738, 96332, 2, 96064, '141121000000', '文水县', '山西,吕梁,文水', '112.028866', '37.438102', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (739, 96548, 2, 96064, '141122000000', '交城县', '山西,吕梁,交城', '112.155841', '37.551970', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (740, 96711, 2, 96064, '141123000000', '兴县', '山西,吕梁,兴县', '111.127668', '38.462390', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (741, 97113, 2, 96064, '141124000000', '临县', '山西,吕梁,临县', '110.992094', '37.950758', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (742, 97779, 2, 96064, '141125000000', '柳林县', '山西,吕梁,柳林', '110.889071', '37.429832', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (743, 98056, 2, 96064, '141126000000', '石楼县', '山西,吕梁,石楼', '110.834561', '36.997412', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (744, 98201, 2, 96064, '141127000000', '岚县', '山西,吕梁,岚县', '111.671917', '38.279299', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (745, 98383, 2, 96064, '141128000000', '方山县', '山西,吕梁,方山', '111.244098', '37.894631', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (746, 98562, 2, 96064, '141129000000', '中阳县', '山西,吕梁,中阳', '111.179657', '37.357058', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (747, 98670, 2, 96064, '141130000000', '交口县', '山西,吕梁,交口', '111.181151', '36.982186', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (748, 98774, 2, 96064, '141181000000', '孝义市', '山西,吕梁,孝义', '111.778818', '37.146294', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (749, 99219, 2, 96064, '141182000000', '汾阳市', '山西,吕梁,汾阳', '111.769894', '37.261564', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (750, 99539, 2, 99538, '150101000000', '市辖区', '内蒙古,呼和浩特', '111.749180', '40.842585', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (751, 99540, 2, 99538, '150102000000', '新城区', '内蒙古,呼和浩特,新城', '111.665544', '40.858289', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (752, 99624, 2, 99538, '150103000000', '回民区', '内蒙古,呼和浩特,回民', '111.623692', '40.808608', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (753, 99696, 2, 99538, '150104000000', '玉泉区', '内蒙古,呼和浩特,玉泉', '111.673881', '40.753655', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (754, 99807, 2, 99538, '150105000000', '赛罕区', '内蒙古,呼和浩特,赛罕', '111.701857', '40.792097', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (755, 100011, 2, 99538, '150121000000', '土默特左旗', '内蒙古,呼和浩特,土默特左旗', '111.163902', '40.729573', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (756, 100358, 2, 99538, '150122000000', '托克托县', '内蒙古,呼和浩特,托克托', '111.194313', '40.277431', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (757, 100502, 2, 99538, '150123000000', '和林格尔县', '内蒙古,呼和浩特,和林格尔', '111.821843', '40.378787', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (758, 100672, 2, 99538, '150124000000', '清水河县', '内蒙古,呼和浩特,清水河', '111.647609', '39.921095', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (759, 100790, 2, 99538, '150125000000', '武川县', '内蒙古,呼和浩特,武川', '111.451303', '41.096471', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (760, 100905, 2, 100904, '150201000000', '市辖区', '内蒙古,包头', '109.840347', '40.657449', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (761, 100906, 2, 100904, '150202000000', '东河区', '内蒙古,包头,东河', '110.044142', '40.575948', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (762, 101033, 2, 100904, '150203000000', '昆都仑区', '内蒙古,包头,昆都仑', '109.838178', '40.642236', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (763, 101148, 2, 100904, '150204000000', '青山区', '内蒙古,包头,青山', '109.901572', '40.643246', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (764, 101235, 2, 100904, '150205000000', '石拐区', '内蒙古,包头,石拐', '110.060686', '40.676645', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (765, 101268, 2, 100904, '150206000000', '白云鄂博矿区', '内蒙古,包头,白云鄂博', '109.840347', '40.657449', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (766, 101275, 2, 100904, '150207000000', '九原区', '内蒙古,包头,九原', '109.968122', '40.600581', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (767, 101359, 2, 100904, '150221000000', '土默特右旗', '内蒙古,包头,土默特右旗', '110.524263', '40.569426', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (768, 101583, 2, 100904, '150222000000', '固阳县', '内蒙古,包头,固阳', '110.060514', '41.034106', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (769, 101673, 2, 100904, '150223000000', '达尔罕茂明安联合旗', '内蒙古,包头,达尔罕茂明安联合旗', '110.432626', '41.698992', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (770, 101773, 2, 101772, '150301000000', '市辖区', '内蒙古,乌海', '106.794249', '39.655388', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (771, 101774, 2, 101772, '150302000000', '海勃湾区', '内蒙古,乌海,海勃湾', '106.822779', '39.691156', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (772, 101824, 2, 101772, '150303000000', '海南区', '内蒙古,乌海,海南', '106.891424', '39.441364', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (773, 101850, 2, 101772, '150304000000', '乌达区', '内蒙古,乌海,乌达', '106.726099', '39.505925', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (774, 101885, 2, 101884, '150401000000', '市辖区', '内蒙古,赤峰', '118.886856', '42.257817', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (775, 101886, 2, 101884, '150402000000', '红山区', '内蒙古,赤峰,红山', '118.955528', '42.295818', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (776, 101986, 2, 101884, '150403000000', '元宝山区', '内蒙古,赤峰,元宝山', '119.288611', '42.038902', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (777, 102110, 2, 101884, '150404000000', '松山区', '内蒙古,赤峰,松山', '118.931962', '42.286873', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (778, 102434, 2, 101884, '150421000000', '阿鲁科尔沁旗', '内蒙古,赤峰,阿鲁科尔沁旗', '120.065700', '43.872299', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (779, 102714, 2, 101884, '150422000000', '巴林左旗', '内蒙古,赤峰,巴林左旗', '119.379490', '43.971126', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (780, 102913, 2, 101884, '150423000000', '巴林右旗', '内蒙古,赤峰,巴林右旗', '118.665180', '43.534414', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (781, 103097, 2, 101884, '150424000000', '林西县', '内蒙古,赤峰,林西', '118.055450', '43.618120', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (782, 103225, 2, 101884, '150425000000', '克什克腾旗', '内蒙古,赤峰,克什克腾旗', '117.545798', '43.264989', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (783, 103385, 2, 101884, '150426000000', '翁牛特旗', '内蒙古,赤峰,翁牛特旗', '119.006580', '42.936188', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (784, 103647, 2, 101884, '150428000000', '喀喇沁旗', '内蒙古,赤峰,喀喇沁旗', '118.701938', '41.927364', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (785, 103835, 2, 101884, '150429000000', '宁城县', '内蒙古,赤峰,宁城', '119.318876', '41.601375', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (786, 104189, 2, 101884, '150430000000', '敖汉旗', '内蒙古,赤峰,敖汉旗', '119.921604', '42.290782', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (787, 104458, 2, 104457, '150501000000', '市辖区', '内蒙古,通辽', '122.243444', '43.652890', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (788, 104459, 2, 104457, '150502000000', '科尔沁区', '内蒙古,通辽,科尔沁', '122.255675', '43.623077', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (789, 104954, 2, 104457, '150521000000', '科尔沁左翼中旗', '内蒙古,通辽,科尔沁左翼中旗', '123.312265', '44.126626', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (790, 105531, 2, 104457, '150522000000', '科尔沁左翼后旗', '内蒙古,通辽,科尔沁左翼后旗', '122.356749', '42.935159', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (791, 105865, 2, 104457, '150523000000', '开鲁县', '内蒙古,通辽,开鲁', '121.319309', '43.601244', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (792, 106150, 2, 104457, '150524000000', '库伦旗', '内蒙古,通辽,库伦旗', '121.810701', '42.735657', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (793, 106356, 2, 104457, '150525000000', '奈曼旗', '内蒙古,通辽,奈曼旗', '120.658283', '42.867226', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (794, 106746, 2, 104457, '150526000000', '扎鲁特旗', '内蒙古,通辽,扎鲁特旗', '120.911676', '44.556389', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (795, 107028, 2, 104457, '150581000000', '霍林郭勒市', '内蒙古,通辽,霍林郭勒', '119.663534', '45.531726', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (796, 107066, 2, 107065, '150601000000', '市辖区', '内蒙古,鄂尔多斯', '109.781327', '39.608266', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (797, 107067, 2, 107065, '150602000000', '东胜区', '内蒙古,鄂尔多斯,东胜', '109.963339', '39.822507', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (798, 107193, 2, 107065, '150603000000', '康巴什区', '内蒙古,鄂尔多斯,康巴什', '109.999325', '39.809941', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (799, 107213, 2, 107065, '150621000000', '达拉特旗', '内蒙古,鄂尔多斯,达拉特旗', '110.033833', '40.412438', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (800, 107388, 2, 107065, '150622000000', '准格尔旗', '内蒙古,鄂尔多斯,准格尔旗', '111.240171', '39.864362', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (801, 107593, 2, 107065, '150623000000', '鄂托克前旗', '内蒙古,鄂尔多斯,鄂托克前旗', '107.477515', '38.182362', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (802, 107684, 2, 107065, '150624000000', '鄂托克旗', '内蒙古,鄂尔多斯,鄂托克旗', '107.976161', '39.089650', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (803, 107792, 2, 107065, '150625000000', '杭锦旗', '内蒙古,鄂尔多斯,杭锦旗', '108.736208', '39.833309', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (804, 107892, 2, 107065, '150626000000', '乌审旗', '内蒙古,鄂尔多斯,乌审旗', '108.817607', '38.604136', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (805, 107982, 2, 107065, '150627000000', '伊金霍洛旗', '内蒙古,鄂尔多斯,伊金霍洛旗', '109.747740', '39.564660', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (806, 108167, 2, 108166, '150701000000', '市辖区', '内蒙古,呼伦贝尔', '119.765744', '49.211574', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (807, 108168, 2, 108166, '150702000000', '海拉尔区', '内蒙古,呼伦贝尔,海拉尔', '119.736279', '49.212189', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (808, 108232, 2, 108166, '150703000000', '扎赉诺尔区', '内蒙古,呼伦贝尔,扎赉诺尔', '117.670248', '49.510375', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (809, 108260, 2, 108166, '150721000000', '阿荣旗', '内蒙古,呼伦贝尔,阿荣旗', '123.459050', '48.126585', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (810, 108483, 2, 108166, '150722000000', '莫力达瓦达斡尔族自治旗', '内蒙古,呼伦贝尔,莫力达瓦', '123.810423', '48.852112', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (811, 108785, 2, 108166, '150723000000', '鄂伦春自治旗', '内蒙古,呼伦贝尔,鄂伦春自治旗', '123.726201', '50.591842', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (812, 109030, 2, 108166, '150724000000', '鄂温克族自治旗', '内蒙古,呼伦贝尔,鄂温克族自治旗', '119.755213', '49.146588', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (813, 109113, 2, 108166, '150725000000', '陈巴尔虎旗', '内蒙古,呼伦贝尔,陈巴尔虎旗', '119.424026', '49.328916', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (814, 109205, 2, 108166, '150726000000', '新巴尔虎左旗', '内蒙古,呼伦贝尔,新巴尔虎左旗', '118.269820', '48.218241', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (815, 109281, 2, 108166, '150727000000', '新巴尔虎右旗', '内蒙古,呼伦贝尔,新巴尔虎右旗', '116.823690', '48.672101', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (816, 109355, 2, 108166, '150781000000', '满洲里市', '内蒙古,呼伦贝尔,满洲里', '117.378530', '49.597841', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (817, 109393, 2, 108166, '150782000000', '牙克石市', '内蒙古,呼伦贝尔,牙克石', '120.711770', '49.285568', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (818, 109490, 2, 108166, '150783000000', '扎兰屯市', '内蒙古,呼伦贝尔,扎兰屯', '122.737467', '48.013733', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (819, 109738, 2, 108166, '150784000000', '额尔古纳市', '内蒙古,呼伦贝尔,额尔古纳', '120.180506', '50.243102', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (820, 109813, 2, 108166, '150785000000', '根河市', '内蒙古,呼伦贝尔,根河', '121.520388', '50.780345', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (821, 109848, 2, 109847, '150801000000', '市辖区', '内蒙古,巴彦淖尔', '107.387657', '40.743213', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (822, 109849, 2, 109847, '150802000000', '临河区', '内蒙古,巴彦淖尔,临河', '107.363919', '40.751187', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (823, 110095, 2, 109847, '150821000000', '五原县', '内蒙古,巴彦淖尔,五原', '108.267562', '41.088422', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (824, 110255, 2, 109847, '150822000000', '磴口县', '内蒙古,巴彦淖尔,磴口', '107.008248', '40.330524', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (825, 110372, 2, 109847, '150823000000', '乌拉特前旗', '内蒙古,巴彦淖尔,乌拉特前旗', '108.652119', '40.737030', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (826, 110557, 2, 109847, '150824000000', '乌拉特中旗', '内蒙古,巴彦淖尔,乌拉特中旗', '108.513645', '41.587732', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (827, 110676, 2, 109847, '150825000000', '乌拉特后旗', '内蒙古,巴彦淖尔,乌拉特后旗', '107.074621', '41.084283', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (828, 110743, 2, 109847, '150826000000', '杭锦后旗', '内蒙古,巴彦淖尔,杭锦后旗', '107.150909', '40.885896', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (829, 110890, 2, 110889, '150901000000', '市辖区', '内蒙古,乌兰察布', '113.132585', '40.994785', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (830, 110891, 2, 110889, '150902000000', '集宁区', '内蒙古,乌兰察布,集宁', '113.123779', '40.990689', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (831, 110998, 2, 110889, '150921000000', '卓资县', '内蒙古,乌兰察布,卓资', '112.577528', '40.894692', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (832, 111127, 2, 110889, '150922000000', '化德县', '内蒙古,乌兰察布,化德', '114.010438', '41.904560', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (833, 111237, 2, 110889, '150923000000', '商都县', '内蒙古,乌兰察布,商都', '113.577816', '41.562113', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (834, 111481, 2, 110889, '150924000000', '兴和县', '内蒙古,乌兰察布,兴和', '113.834173', '40.872301', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (835, 111666, 2, 110889, '150925000000', '凉城县', '内蒙古,乌兰察布,凉城', '112.503971', '40.531555', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (836, 111824, 2, 110889, '150926000000', '察哈尔右翼前旗', '内蒙古,乌兰察布,察哈尔右翼前旗', '113.214733', '40.785631', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (837, 111969, 2, 110889, '150927000000', '察哈尔右翼中旗', '内蒙古,乌兰察布,察哈尔右翼中旗', '112.635577', '41.277462', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (838, 112164, 2, 110889, '150928000000', '察哈尔右翼后旗', '内蒙古,乌兰察布,察哈尔右翼后旗', '113.191035', '41.436069', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (839, 112277, 2, 110889, '150929000000', '四子王旗', '内蒙古,乌兰察布,四子王旗', '111.706618', '41.533462', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (840, 112427, 2, 110889, '150981000000', '丰镇市', '内蒙古,乌兰察布,丰镇', '113.109892', '40.436983', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (841, 112553, 2, 112552, '152201000000', '乌兰浩特市', '内蒙古,兴安,乌兰浩特', '122.093123', '46.072732', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (842, 112694, 2, 112552, '152202000000', '阿尔山市', '内蒙古,兴安,阿尔山', '119.943575', '47.177440', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (843, 112734, 2, 112552, '152221000000', '科尔沁右翼前旗', '内蒙古,兴安,科尔沁右翼前旗', '121.952550', '46.079810', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (844, 113051, 2, 112552, '152222000000', '科尔沁右翼中旗', '内蒙古,兴安,科尔沁右翼中旗', '121.476530', '45.060837', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (845, 113294, 2, 112552, '152223000000', '扎赉特旗', '内蒙古,兴安,扎赉特旗', '122.899656', '46.723237', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (846, 113554, 2, 112552, '152224000000', '突泉县', '内蒙古,兴安,突泉', '121.593799', '45.381930', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (847, 113778, 2, 113777, '152501000000', '二连浩特市', '内蒙古,锡林郭勒,二连浩特', '111.977943', '43.653170', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (848, 113796, 2, 113777, '152502000000', '锡林浩特市', '内蒙古,锡林郭勒,锡林浩特', '116.086032', '43.933411', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (849, 113912, 2, 113777, '152522000000', '阿巴嘎旗', '内蒙古,锡林郭勒,阿巴嘎旗', '114.950248', '44.022995', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (850, 113999, 2, 113777, '152523000000', '苏尼特左旗', '内蒙古,锡林郭勒,苏尼特左旗', '113.667248', '43.859880', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (851, 114065, 2, 113777, '152524000000', '苏尼特右旗', '内蒙古,锡林郭勒,苏尼特右旗', '112.641783', '42.742892', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (852, 114152, 2, 113777, '152525000000', '东乌珠穆沁旗', '内蒙古,锡林郭勒,东乌珠穆沁旗', '116.974494', '45.498221', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (853, 114239, 2, 113777, '152526000000', '西乌珠穆沁旗', '内蒙古,锡林郭勒,西乌珠穆沁旗', '117.608911', '44.587882', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (854, 114358, 2, 113777, '152527000000', '太仆寺旗', '内蒙古,锡林郭勒,太仆寺旗', '115.282986', '41.877136', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (855, 114557, 2, 113777, '152528000000', '镶黄旗', '内蒙古,锡林郭勒,镶黄旗', '113.847287', '42.232371', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (856, 114628, 2, 113777, '152529000000', '正镶白旗', '内蒙古,锡林郭勒,正镶白旗', '115.029849', '42.287471', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (857, 114722, 2, 113777, '152530000000', '正蓝旗', '内蒙古,锡林郭勒,正蓝旗', '115.992470', '42.241638', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (858, 114859, 2, 113777, '152531000000', '多伦县', '内蒙古,锡林郭勒,多伦', '116.485556', '42.203591', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (859, 114941, 2, 114940, '152921000000', '阿拉善左旗', '内蒙古,阿拉善,阿拉善左旗', '105.666293', '38.833411', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (860, 115132, 2, 114940, '152922000000', '阿拉善右旗', '内蒙古,阿拉善,阿拉善右旗', '101.666917', '39.216186', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (861, 115189, 2, 114940, '152923000000', '额济纳旗', '内蒙古,阿拉善,额济纳旗', '101.055590', '41.954347', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (862, 115226, 2, 115225, '210101000000', '市辖区', '辽宁,沈阳', '123.431474', '41.805698', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (863, 115227, 2, 115225, '210102000000', '和平区', '辽宁,沈阳,和平', '123.420382', '41.789809', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (864, 115347, 2, 115225, '210103000000', '沈河区', '辽宁,沈阳,沈河', '123.458897', '41.795655', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (865, 115474, 2, 115225, '210104000000', '大东区', '辽宁,沈阳,大东', '123.469949', '41.805137', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (866, 115612, 2, 115225, '210105000000', '皇姑区', '辽宁,沈阳,皇姑', '123.441970', '41.824796', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (867, 115752, 2, 115225, '210106000000', '铁西区', '辽宁,沈阳,铁西', '123.376301', '41.802914', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (868, 115964, 2, 115225, '210111000000', '苏家屯区', '辽宁,沈阳,苏家屯', '123.344031', '41.664757', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (869, 116159, 2, 115225, '210112000000', '浑南区', '辽宁,沈阳,浑南', '123.449715', '41.714914', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (870, 116399, 2, 115225, '210113000000', '沈北新区', '辽宁,沈阳,沈北', '123.431474', '41.805698', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (871, 116614, 2, 115225, '210114000000', '于洪区', '辽宁,沈阳,于洪', '123.308136', '41.793743', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (872, 116820, 2, 115225, '210115000000', '辽中区', '辽宁,沈阳,辽中', '122.765409', '41.516827', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (873, 117075, 2, 115225, '210123000000', '康平县', '辽宁,沈阳,康平', '123.355701', '42.741005', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (874, 117268, 2, 115225, '210124000000', '法库县', '辽宁,沈阳,法库', '123.440495', '42.500730', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (875, 117530, 2, 115225, '210181000000', '新民市', '辽宁,沈阳,新民', '122.836726', '41.985193', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (876, 117933, 2, 117932, '210201000000', '市辖区', '辽宁,大连', '121.614682', '38.914003', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (877, 117934, 2, 117932, '210202000000', '中山区', '辽宁,大连,中山', '121.644927', '38.918574', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (878, 117997, 2, 117932, '210203000000', '西岗区', '辽宁,大连,西岗', '121.612325', '38.914687', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (879, 118050, 2, 117932, '210204000000', '沙河口区', '辽宁,大连,沙河口', '121.594200', '38.904808', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (880, 118150, 2, 117932, '210211000000', '甘井子区', '辽宁,大连,甘井子', '121.525461', '38.953351', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (881, 118405, 2, 117932, '210212000000', '旅顺口区', '辽宁,大连,旅顺口', '121.261953', '38.851705', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (882, 118523, 2, 117932, '210213000000', '金州区', '辽宁,大连,金州', '121.782769', '39.050460', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (883, 118884, 2, 117932, '210214000000', '普兰店区', '辽宁,大连,普兰店', '121.970512', '39.401551', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (884, 119090, 2, 117932, '210224000000', '长海县', '辽宁,大连,长海', '122.588494', '39.272728', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (885, 119126, 2, 117932, '210281000000', '瓦房店市', '辽宁,大连,瓦房店', '121.979603', '39.627114', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (886, 119483, 2, 117932, '210283000000', '庄河市', '辽宁,大连,庄河', '122.967328', '39.680811', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (887, 119790, 2, 119789, '210301000000', '市辖区', '辽宁,鞍山', '122.994329', '41.108647', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (888, 119791, 2, 119789, '210302000000', '铁东区', '辽宁,鞍山,铁东', '122.991052', '41.089933', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (889, 119915, 2, 119789, '210303000000', '铁西区', '辽宁,鞍山,铁西', '122.969630', '41.119885', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (890, 120021, 2, 119789, '210304000000', '立山区', '辽宁,鞍山,立山', '123.029091', '41.150401', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (891, 120150, 2, 119789, '210311000000', '千山区', '辽宁,鞍山,千山', '122.949298', '41.068909', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (892, 120221, 2, 119789, '210321000000', '台安县', '辽宁,鞍山,台安', '122.436196', '41.412768', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (893, 120401, 2, 119789, '210323000000', '岫岩满族自治县', '辽宁,鞍山,岫岩', '123.280935', '40.290880', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (894, 120634, 2, 119789, '210381000000', '海城市', '辽宁,鞍山,海城', '122.685217', '40.882377', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (895, 121082, 2, 121081, '210401000000', '市辖区', '辽宁,抚顺', '123.957208', '41.880872', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (896, 121083, 2, 121081, '210402000000', '新抚区', '辽宁,抚顺,新抚', '123.912861', '41.862080', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (897, 121181, 2, 121081, '210403000000', '东洲区', '辽宁,抚顺,东洲', '124.038685', '41.853192', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (898, 121326, 2, 121081, '210404000000', '望花区', '辽宁,抚顺,望花', '123.784206', '41.853646', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (899, 121484, 2, 121081, '210411000000', '顺城区', '辽宁,抚顺,顺城', '123.945040', '41.883375', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (900, 121604, 2, 121081, '210421000000', '抚顺县', '辽宁,抚顺,抚顺', '124.097979', '41.922644', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (901, 121710, 2, 121081, '210422000000', '新宾满族自治县', '辽宁,抚顺,新宾', '125.039978', '41.734256', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (902, 121920, 2, 121081, '210423000000', '清原满族自治县', '辽宁,抚顺,清原', '124.924083', '42.100539', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (903, 122143, 2, 122142, '210501000000', '市辖区', '辽宁,本溪', '123.766485', '41.294175', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (904, 122144, 2, 122142, '210502000000', '平山区', '辽宁,本溪,平山', '123.768926', '41.299702', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (905, 122216, 2, 122142, '210503000000', '溪湖区', '辽宁,本溪,溪湖', '123.767647', '41.329219', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (906, 122310, 2, 122142, '210504000000', '明山区', '辽宁,本溪,明山', '123.817212', '41.308710', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (907, 122400, 2, 122142, '210505000000', '南芬区', '辽宁,本溪,南芬', '123.744802', '41.100445', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (908, 122444, 2, 122142, '210521000000', '本溪满族自治县', '辽宁,本溪,本溪', '124.120436', '41.301892', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (909, 122591, 2, 122142, '210522000000', '桓仁满族自治县', '辽宁,本溪,桓仁', '125.361007', '41.267128', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (910, 122731, 2, 122730, '210601000000', '市辖区', '辽宁,丹东', '124.354706', '40.000499', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (911, 122732, 2, 122730, '210602000000', '元宝区', '辽宁,丹东,元宝', '124.395757', '40.136520', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (912, 122785, 2, 122730, '210603000000', '振兴区', '辽宁,丹东,振兴', '124.360264', '40.105194', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (913, 122886, 2, 122730, '210604000000', '振安区', '辽宁,丹东,振安', '124.428162', '40.158267', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (914, 122958, 2, 122730, '210624000000', '宽甸满族自治县', '辽宁,丹东,宽甸', '124.783660', '40.731317', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (915, 123177, 2, 122730, '210681000000', '东港市', '辽宁,丹东,东港', '124.152705', '39.863008', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (916, 123438, 2, 122730, '210682000000', '凤城市', '辽宁,丹东,凤城', '124.066919', '40.452298', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (917, 123699, 2, 123698, '210701000000', '市辖区', '辽宁,锦州', '121.127003', '41.095119', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (918, 123700, 2, 123698, '210702000000', '古塔区', '辽宁,锦州,古塔', '121.128279', '41.117245', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (919, 123778, 2, 123698, '210703000000', '凌河区', '辽宁,锦州,凌河', '121.150877', '41.114990', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (920, 123869, 2, 123698, '210711000000', '太和区', '辽宁,锦州,太和', '121.103892', '41.109147', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (921, 124044, 2, 123698, '210726000000', '黑山县', '辽宁,锦州,黑山', '122.123443', '41.666028', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (922, 124398, 2, 123698, '210727000000', '义县', '辽宁,锦州,义县', '121.239080', '41.533087', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (923, 124670, 2, 123698, '210781000000', '凌海市', '辽宁,锦州,凌海', '121.357730', '41.173400', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (924, 124980, 2, 123698, '210782000000', '北镇市', '辽宁,锦州,北镇', '121.795962', '41.598764', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (925, 125250, 2, 125249, '210801000000', '市辖区', '辽宁,营口', '122.235417', '40.667012', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (926, 125251, 2, 125249, '210802000000', '站前区', '辽宁,营口,站前', '122.258961', '40.672670', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (927, 125305, 2, 125249, '210803000000', '西市区', '辽宁,营口,西市', '122.206414', '40.666408', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (928, 125353, 2, 125249, '210804000000', '鲅鱼圈区', '辽宁,营口,鲅鱼圈', '122.107814', '40.230636', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (929, 125454, 2, 125249, '210811000000', '老边区', '辽宁,营口,老边', '122.379967', '40.680303', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (930, 125520, 2, 125249, '210881000000', '盖州市', '辽宁,营口,盖州', '122.348936', '40.400611', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (931, 125849, 2, 125249, '210882000000', '大石桥市', '辽宁,营口,大石桥', '122.509131', '40.644622', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (932, 126157, 2, 126156, '210901000000', '市辖区', '辽宁,阜新', '121.670323', '42.021619', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (933, 126158, 2, 126156, '210902000000', '海州区', '辽宁,阜新,海州', '121.656255', '42.013242', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (934, 126236, 2, 126156, '210903000000', '新邱区', '辽宁,阜新,新邱', '121.792535', '42.087632', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (935, 126264, 2, 126156, '210904000000', '太平区', '辽宁,阜新,太平', '121.678512', '42.010600', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (936, 126314, 2, 126156, '210905000000', '清河门区', '辽宁,阜新,清河门', '121.416105', '41.783100', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (937, 126349, 2, 126156, '210911000000', '细河区', '辽宁,阜新,细河', '121.680540', '42.025495', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (938, 126417, 2, 126156, '210921000000', '阜新蒙古族自治县', '辽宁,阜新,阜新', '121.757901', '42.065175', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (939, 126845, 2, 126156, '210922000000', '彰武县', '辽宁,阜新,彰武', '122.538793', '42.386544', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (940, 127071, 2, 127070, '211001000000', '市辖区', '辽宁,辽阳', '123.236944', '41.267244', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (941, 127072, 2, 127070, '211002000000', '白塔区', '辽宁,辽阳,白塔', '123.174325', '41.270347', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (942, 127152, 2, 127070, '211003000000', '文圣区', '辽宁,辽阳,文圣', '123.185386', '41.262608', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (943, 127218, 2, 127070, '211004000000', '宏伟区', '辽宁,辽阳,宏伟', '123.196672', '41.217649', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (944, 127266, 2, 127070, '211005000000', '弓长岭区', '辽宁,辽阳,弓长岭', '123.419804', '41.151847', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (945, 127305, 2, 127070, '211011000000', '太子河区', '辽宁,辽阳,太子河', '123.181782', '41.253277', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (946, 127386, 2, 127070, '211021000000', '辽阳县', '辽宁,辽阳,辽阳', '123.105695', '41.205329', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (947, 127612, 2, 127070, '211081000000', '灯塔市', '辽宁,辽阳,灯塔', '123.339312', '41.426372', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (948, 127835, 2, 127834, '211101000000', '市辖区', '辽宁,盘锦', '122.070714', '41.119997', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (949, 127836, 2, 127834, '211102000000', '双台子区', '辽宁,盘锦,双台子', '122.060112', '41.190606', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (950, 127896, 2, 127834, '211103000000', '兴隆台区', '辽宁,盘锦,兴隆台', '122.069897', '41.158678', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (951, 128037, 2, 127834, '211104000000', '大洼区', '辽宁,盘锦,大洼', '122.082575', '41.002279', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (952, 128231, 2, 127834, '211122000000', '盘山县', '辽宁,盘锦,盘山', '121.996499', '41.242873', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (953, 128422, 2, 128421, '211201000000', '市辖区', '辽宁,铁岭', '123.726166', '42.223769', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (954, 128423, 2, 128421, '211202000000', '银州区', '辽宁,铁岭,银州', '123.842305', '42.286130', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (955, 128530, 2, 128421, '211204000000', '清河区', '辽宁,铁岭,清河', '123.726166', '42.223769', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (956, 128591, 2, 128421, '211221000000', '铁岭县', '辽宁,铁岭,铁岭', '123.729004', '42.223383', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (957, 128839, 2, 128421, '211223000000', '西丰县', '辽宁,铁岭,西丰', '124.727393', '42.738030', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (958, 129043, 2, 128421, '211224000000', '昌图县', '辽宁,铁岭,昌图', '124.111100', '42.785791', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (959, 129592, 2, 128421, '211281000000', '调兵山市', '辽宁,铁岭,调兵山', '123.567117', '42.467521', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (960, 129661, 2, 128421, '211282000000', '开原市', '辽宁,铁岭,开原', '124.038268', '42.546307', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (961, 129978, 2, 129977, '211301000000', '市辖区', '辽宁,朝阳', '120.389862', '41.497767', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (962, 129979, 2, 129977, '211302000000', '双塔区', '辽宁,朝阳,双塔', '120.453744', '41.565628', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (963, 130102, 2, 129977, '211303000000', '龙城区', '辽宁,朝阳,龙城', '120.413376', '41.576749', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (964, 130205, 2, 129977, '211321000000', '朝阳县', '辽宁,朝阳,朝阳', '120.389862', '41.497767', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (965, 130534, 2, 129977, '211322000000', '建平县', '辽宁,朝阳,建平', '119.643280', '41.403128', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (966, 130860, 2, 129977, '211324000000', '喀喇沁左翼蒙古族自治县', '辽宁,朝阳,喀喇沁左翼', '120.389862', '41.497767', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (967, 131089, 2, 129977, '211381000000', '北票市', '辽宁,朝阳,北票', '120.770730', '41.800684', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (968, 131425, 2, 129977, '211382000000', '凌源市', '辽宁,朝阳,凌源', '119.401574', '41.245445', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (969, 131739, 2, 131738, '211401000000', '市辖区', '辽宁,葫芦岛', '120.836932', '40.711052', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (970, 131740, 2, 131738, '211402000000', '连山区', '辽宁,葫芦岛,连山', '120.869231', '40.774461', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (971, 131976, 2, 131738, '211403000000', '龙港区', '辽宁,葫芦岛,龙港', '120.893786', '40.735519', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (972, 132073, 2, 131738, '211404000000', '南票区', '辽宁,葫芦岛,南票', '120.749728', '41.107108', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (973, 132258, 2, 131738, '211421000000', '绥中县', '辽宁,葫芦岛,绥中', '120.344229', '40.325659', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (974, 132590, 2, 131738, '211422000000', '建昌县', '辽宁,葫芦岛,建昌', '119.837124', '40.824368', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (975, 132912, 2, 131738, '211481000000', '兴城市', '辽宁,葫芦岛,兴城', '120.728310', '40.614762', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (976, 133210, 2, 86, '220101000000', '市辖区', '吉林,长春', '125.323544', '43.817071', 1, '2021-07-16 11:33:35', '2021-08-16 10:51:30'); +INSERT INTO `eb_system_city` VALUES (977, 133211, 2, 133209, '220102000000', '南关区', '吉林,长春,南关', '125.350173', '43.863989', 1, '2021-07-16 11:33:35', '2021-08-16 14:35:25'); +INSERT INTO `eb_system_city` VALUES (978, 133289, 2, 133209, '220103000000', '宽城区', '吉林,长春,宽城', '125.326578', '43.943614', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (979, 133453, 2, 133209, '220104000000', '朝阳区', '吉林,长春,朝阳', '125.288319', '43.833513', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (980, 133543, 2, 133209, '220105000000', '二道区', '吉林,长春,二道', '125.374217', '43.865596', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (981, 133631, 2, 133209, '220106000000', '绿园区', '吉林,长春,绿园', '125.256136', '43.880975', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (982, 133719, 2, 133209, '220112000000', '双阳区', '吉林,长春,双阳', '125.664662', '43.525311', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (983, 133881, 2, 133209, '220113000000', '九台区', '吉林,长春,九台', '125.839574', '44.151742', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (984, 134236, 2, 133209, '220122000000', '农安县', '吉林,长春,农安', '125.184742', '44.432889', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (985, 134628, 2, 133209, '220182000000', '榆树市', '吉林,长春,榆树', '126.533146', '44.840288', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (986, 135061, 2, 133209, '220183000000', '德惠市', '吉林,长春,德惠', '125.728620', '44.521785', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (987, 135393, 2, 135392, '220201000000', '市辖区', '吉林,吉林', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (988, 135394, 2, 135392, '220202000000', '昌邑区', '吉林,吉林,昌邑', '126.574710', '43.881818', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (989, 135568, 2, 135392, '220203000000', '龙潭区', '吉林,吉林,龙潭', '126.562197', '43.910803', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (990, 135755, 2, 135392, '220204000000', '船营区', '吉林,吉林,船营', '126.540966', '43.833445', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (991, 135885, 2, 135392, '220211000000', '丰满区', '吉林,吉林,丰满', '126.562274', '43.821601', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (992, 135986, 2, 135392, '220221000000', '永吉县', '吉林,吉林,永吉', '126.497741', '43.672582', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (993, 136136, 2, 135392, '220281000000', '蛟河市', '吉林,吉林,蛟河', '127.344501', '43.723713', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (994, 136439, 2, 135392, '220282000000', '桦甸市', '吉林,吉林,桦甸', '126.746310', '42.972097', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (995, 136629, 2, 135392, '220283000000', '舒兰市', '吉林,吉林,舒兰', '126.965607', '44.406106', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (996, 136889, 2, 135392, '220284000000', '磐石市', '吉林,吉林,磐石', '126.060427', '42.946285', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (997, 137207, 2, 137206, '220301000000', '市辖区', '吉林,四平', '124.350398', '43.166419', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (998, 137208, 2, 137206, '220302000000', '铁西区', '吉林,四平,铁西', '124.345722', '43.146155', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (999, 137275, 2, 137206, '220303000000', '铁东区', '吉林,四平,铁东', '124.409622', '43.162048', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1000, 137386, 2, 137206, '220322000000', '梨树县', '吉林,四平,梨树', '124.335390', '43.307060', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1001, 137756, 2, 137206, '220323000000', '伊通满族自治县', '吉林,四平,伊通', '125.305394', '43.345754', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1002, 137973, 2, 137206, '220381000000', '公主岭市', '吉林,四平,公主岭', '124.822830', '43.504687', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1003, 138477, 2, 137206, '220382000000', '双辽市', '吉林,四平,双辽', '123.502724', '43.518302', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1004, 138722, 2, 138721, '220401000000', '市辖区', '吉林,辽源', '125.143532', '42.887918', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1005, 138723, 2, 138721, '220402000000', '龙山区', '吉林,辽源,龙山', '125.136452', '42.901534', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1006, 138780, 2, 138721, '220403000000', '西安区', '吉林,辽源,西安', '125.149283', '42.927265', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1007, 138818, 2, 138721, '220421000000', '东丰县', '吉林,辽源,东丰', '125.530991', '42.676935', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1008, 139072, 2, 138721, '220422000000', '东辽县', '吉林,辽源,东辽', '124.991521', '42.926331', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1009, 139341, 2, 139340, '220501000000', '市辖区', '吉林,通化', '125.939697', '41.728401', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1010, 139342, 2, 139340, '220502000000', '东昌区', '吉林,通化,东昌', '125.955102', '41.728498', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1011, 139405, 2, 139340, '220503000000', '二道江区', '吉林,通化,二道江', '126.042535', '41.774053', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1012, 139453, 2, 139340, '220521000000', '通化县', '吉林,通化,通化', '125.759259', '41.679808', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1013, 139654, 2, 139340, '220523000000', '辉南县', '吉林,通化,辉南', '126.046912', '42.684993', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1014, 139824, 2, 139340, '220524000000', '柳河县', '吉林,通化,柳河', '125.744735', '42.284606', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1015, 140077, 2, 139340, '220581000000', '梅河口市', '吉林,通化,梅河口', '125.683832', '42.530341', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1016, 140432, 2, 139340, '220582000000', '集安市', '吉林,通化,集安', '126.194031', '41.125307', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1017, 140602, 2, 140601, '220601000000', '市辖区', '吉林,白山', '126.423587', '41.939994', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1018, 140603, 2, 140601, '220602000000', '浑江区', '吉林,白山,浑江', '126.416094', '41.945409', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1019, 140714, 2, 140601, '220605000000', '江源区', '吉林,白山,江源', '126.591144', '42.056773', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1020, 140816, 2, 140601, '220621000000', '抚松县', '吉林,白山,抚松', '127.449764', '42.221208', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1021, 141003, 2, 140601, '220622000000', '靖宇县', '吉林,白山,靖宇', '126.813625', '42.388760', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1022, 141140, 2, 140601, '220623000000', '长白朝鲜族自治县', '吉林,白山,长白', '128.200789', '41.420018', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1023, 141237, 2, 140601, '220681000000', '临江市', '吉林,白山,临江', '126.918087', '41.811979', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1024, 141362, 2, 141361, '220701000000', '市辖区', '吉林,松原', '124.825117', '45.141789', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1025, 141363, 2, 141361, '220702000000', '宁江区', '吉林,松原,宁江', '124.817054', '45.171792', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1026, 141560, 2, 141361, '220721000000', '前郭尔罗斯蒙古族自治县', '吉林,松原,前郭尔罗斯', '124.823242', '45.118030', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1027, 141870, 2, 141361, '220722000000', '长岭县', '吉林,松原,长岭', '123.967484', '44.275895', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1028, 142157, 2, 141361, '220723000000', '乾安县', '吉林,松原,乾安', '124.041139', '45.003774', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1029, 142353, 2, 141361, '220781000000', '扶余市', '吉林,松原,扶余', '126.049774', '44.988449', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1030, 142787, 2, 142786, '220801000000', '市辖区', '吉林,白城', '122.839024', '45.619641', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1031, 142788, 2, 142786, '220802000000', '洮北区', '吉林,白城,洮北', '122.851029', '45.621716', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1032, 143021, 2, 142786, '220821000000', '镇赉县', '吉林,白城,镇赉', '123.199890', '45.847435', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1033, 143209, 2, 142786, '220822000000', '通榆县', '吉林,白城,通榆', '123.088239', '44.812911', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1034, 143428, 2, 142786, '220881000000', '洮南市', '吉林,白城,洮南', '122.783779', '45.339113', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1035, 143702, 2, 142786, '220882000000', '大安市', '吉林,白城,大安', '124.292626', '45.506996', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1036, 143991, 2, 143990, '222401000000', '延吉市', '吉林,延边,延吉', '129.508946', '42.891255', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1037, 144147, 2, 143990, '222402000000', '图们市', '吉林,延边,图们', '129.843710', '42.968044', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1038, 144226, 2, 143990, '222403000000', '敦化市', '吉林,延边,敦化', '128.232013', '43.372413', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1039, 144665, 2, 143990, '222404000000', '珲春市', '吉林,延边,珲春', '130.366036', '42.862821', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1040, 144844, 2, 143990, '222405000000', '龙井市', '吉林,延边,龙井', '129.427066', '42.766311', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1041, 144953, 2, 143990, '222406000000', '和龙市', '吉林,延边,和龙', '129.010106', '42.546675', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1042, 145096, 2, 143990, '222424000000', '汪清县', '吉林,延边,汪清', '129.771607', '43.312522', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1043, 145421, 2, 143990, '222426000000', '安图县', '吉林,延边,安图', '128.899807', '43.111964', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1044, 145667, 2, 145666, '230101000000', '市辖区', '黑龙江,哈尔滨', '126.534967', '45.803775', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1045, 145668, 2, 145666, '230102000000', '道里区', '黑龙江,哈尔滨,道里', '126.616957', '45.755777', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1046, 145864, 2, 145666, '230103000000', '南岗区', '黑龙江,哈尔滨,南岗', '126.668788', '45.759970', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1047, 146071, 2, 145666, '230104000000', '道外区', '黑龙江,哈尔滨,道外', '126.649451', '45.792113', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1048, 146266, 2, 145666, '230108000000', '平房区', '黑龙江,哈尔滨,平房', '126.534967', '45.803775', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1049, 146313, 2, 145666, '230109000000', '松北区', '黑龙江,哈尔滨,松北', '126.510275', '45.802756', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1050, 146399, 2, 145666, '230110000000', '香坊区', '黑龙江,哈尔滨,香坊', '126.662593', '45.707716', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1051, 146587, 2, 145666, '230111000000', '呼兰区', '黑龙江,哈尔滨,呼兰', '126.587709', '45.889427', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1052, 146825, 2, 145666, '230112000000', '阿城区', '黑龙江,哈尔滨,阿城', '126.958098', '45.548670', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1053, 147032, 2, 145666, '230113000000', '双城区', '黑龙江,哈尔滨,双城', '126.312745', '45.383263', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1054, 147391, 2, 145666, '230123000000', '依兰县', '黑龙江,哈尔滨,依兰', '129.567985', '46.324534', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1055, 147571, 2, 145666, '230124000000', '方正县', '黑龙江,哈尔滨,方正', '128.829536', '45.851695', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1056, 147676, 2, 145666, '230125000000', '宾县', '黑龙江,哈尔滨,宾县', '127.466634', '45.745918', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1057, 147884, 2, 145666, '230126000000', '巴彦县', '黑龙江,哈尔滨,巴彦', '127.403182', '46.085379', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1058, 148060, 2, 145666, '230127000000', '木兰县', '黑龙江,哈尔滨,木兰', '128.043466', '45.950582', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1059, 148178, 2, 145666, '230128000000', '通河县', '黑龙江,哈尔滨,通河', '128.749352', '45.972425', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1060, 148351, 2, 145666, '230129000000', '延寿县', '黑龙江,哈尔滨,延寿', '128.331644', '45.451897', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1061, 148502, 2, 145666, '230183000000', '尚志市', '黑龙江,哈尔滨,尚志', '128.009895', '45.209586', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1062, 148755, 2, 145666, '230184000000', '五常市', '黑龙江,哈尔滨,五常', '127.167619', '44.931992', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1063, 149080, 2, 149079, '230201000000', '市辖区', '黑龙江,齐齐哈尔', '123.918186', '47.354348', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1064, 149081, 2, 149079, '230202000000', '龙沙区', '黑龙江,齐齐哈尔,龙沙', '123.957531', '47.317309', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1065, 149129, 2, 149079, '230203000000', '建华区', '黑龙江,齐齐哈尔,建华', '123.955464', '47.354364', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1066, 149173, 2, 149079, '230204000000', '铁锋区', '黑龙江,齐齐哈尔,铁锋', '123.978293', '47.340518', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1067, 149231, 2, 149079, '230205000000', '昂昂溪区', '黑龙江,齐齐哈尔,昂昂溪', '123.822401', '47.155160', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1068, 149266, 2, 149079, '230206000000', '富拉尔基区', '黑龙江,齐齐哈尔,富拉尔基', '123.629190', '47.208843', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1069, 149317, 2, 149079, '230207000000', '碾子山区', '黑龙江,齐齐哈尔,碾子山', '122.887775', '47.516872', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1070, 149338, 2, 149079, '230208000000', '梅里斯达斡尔族区', '黑龙江,齐齐哈尔,梅里斯', '123.752910', '47.309537', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1071, 149404, 2, 149079, '230221000000', '龙江县', '黑龙江,齐齐哈尔,龙江', '123.205323', '47.338665', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1072, 149588, 2, 149079, '230223000000', '依安县', '黑龙江,齐齐哈尔,依安', '125.306279', '47.893548', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1073, 149767, 2, 149079, '230224000000', '泰来县', '黑龙江,齐齐哈尔,泰来', '123.416631', '46.393694', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1074, 149896, 2, 149079, '230225000000', '甘南县', '黑龙江,齐齐哈尔,甘南', '123.507429', '47.922406', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1075, 150046, 2, 149079, '230227000000', '富裕县', '黑龙江,齐齐哈尔,富裕', '124.473793', '47.774347', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1076, 150168, 2, 149079, '230229000000', '克山县', '黑龙江,齐齐哈尔,克山', '125.875705', '48.037031', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1077, 150337, 2, 149079, '230230000000', '克东县', '黑龙江,齐齐哈尔,克东', '126.248721', '48.042060', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1078, 150471, 2, 149079, '230231000000', '拜泉县', '黑龙江,齐齐哈尔,拜泉', '126.100213', '47.595851', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1079, 150680, 2, 149079, '230281000000', '讷河市', '黑龙江,齐齐哈尔,讷河', '124.884244', '48.484099', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1080, 150916, 2, 150915, '230301000000', '市辖区', '黑龙江,鸡西', '130.969333', '45.295075', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1081, 150917, 2, 150915, '230302000000', '鸡冠区', '黑龙江,鸡西,鸡冠', '130.980894', '45.304073', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1082, 150984, 2, 150915, '230303000000', '恒山区', '黑龙江,鸡西,恒山', '130.904963', '45.210668', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1083, 151039, 2, 150915, '230304000000', '滴道区', '黑龙江,鸡西,滴道', '130.843613', '45.348764', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1084, 151084, 2, 150915, '230305000000', '梨树区', '黑龙江,鸡西,梨树', '130.696990', '45.092046', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1085, 151113, 2, 150915, '230306000000', '城子河区', '黑龙江,鸡西,城子河', '131.011304', '45.336970', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1086, 151154, 2, 150915, '230307000000', '麻山区', '黑龙江,鸡西,麻山', '130.478187', '45.212088', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1087, 151177, 2, 150915, '230321000000', '鸡东县', '黑龙江,鸡西,鸡东', '131.124080', '45.260412', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1088, 151347, 2, 150915, '230381000000', '虎林市', '黑龙江,鸡西,虎林', '132.937210', '45.762686', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1089, 151577, 2, 150915, '230382000000', '密山市', '黑龙江,鸡西,密山', '131.846636', '45.529775', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1090, 151831, 2, 151830, '230401000000', '市辖区', '黑龙江,鹤岗', '130.297964', '47.349916', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1091, 151832, 2, 151830, '230402000000', '向阳区', '黑龙江,鹤岗,向阳', '130.294309', '47.342478', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1092, 151855, 2, 151830, '230403000000', '工农区', '黑龙江,鹤岗,工农', '130.274684', '47.318781', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1093, 151880, 2, 151830, '230404000000', '南山区', '黑龙江,鹤岗,南山', '130.287057', '47.315127', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1094, 151912, 2, 151830, '230405000000', '兴安区', '黑龙江,鹤岗,兴安', '130.239245', '47.252850', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1095, 151947, 2, 151830, '230406000000', '东山区', '黑龙江,鹤岗,东山', '130.317062', '47.338535', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1096, 152026, 2, 151830, '230407000000', '兴山区', '黑龙江,鹤岗,兴山', '130.303574', '47.357666', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1097, 152047, 2, 151830, '230421000000', '萝北县', '黑龙江,鹤岗,萝北', '130.828626', '47.577495', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1098, 152237, 2, 151830, '230422000000', '绥滨县', '黑龙江,鹤岗,绥滨', '131.852759', '47.289116', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1099, 152414, 2, 152413, '230501000000', '市辖区', '黑龙江,双鸭山', '131.159133', '46.646508', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1100, 152415, 2, 152413, '230502000000', '尖山区', '黑龙江,双鸭山,尖山', '131.158416', '46.646350', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1101, 152469, 2, 152413, '230503000000', '岭东区', '黑龙江,双鸭山,岭东', '131.164724', '46.592721', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1102, 152508, 2, 152413, '230505000000', '四方台区', '黑龙江,双鸭山,四方台', '131.334503', '46.594316', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1103, 152544, 2, 152413, '230506000000', '宝山区', '黑龙江,双鸭山,宝山', '131.401589', '46.577167', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1104, 152590, 2, 152413, '230521000000', '集贤县', '黑龙江,双鸭山,集贤', '131.140483', '46.728377', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1105, 152810, 2, 152413, '230522000000', '友谊县', '黑龙江,双鸭山,友谊', '131.808064', '46.767299', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1106, 152910, 2, 152413, '230523000000', '宝清县', '黑龙江,双鸭山,宝清', '132.197243', '46.326925', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1107, 153142, 2, 152413, '230524000000', '饶河县', '黑龙江,双鸭山,饶河', '134.013872', '46.798164', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1108, 153314, 2, 153313, '230601000000', '市辖区', '黑龙江,大庆', '125.103784', '46.589309', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1109, 153315, 2, 153313, '230602000000', '萨尔图区', '黑龙江,大庆,萨尔图', '125.114643', '46.596356', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1110, 153371, 2, 153313, '230603000000', '龙凤区', '黑龙江,大庆,龙凤', '125.135326', '46.562247', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1111, 153423, 2, 153313, '230604000000', '让胡路区', '黑龙江,大庆,让胡路', '124.870597', '46.652358', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1112, 153513, 2, 153313, '230605000000', '红岗区', '黑龙江,大庆,红岗', '124.891039', '46.398418', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1113, 153561, 2, 153313, '230606000000', '大同区', '黑龙江,大庆,大同', '124.812364', '46.039828', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1114, 153659, 2, 153313, '230621000000', '肇州县', '黑龙江,大庆,肇州', '125.268643', '45.699066', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1115, 153791, 2, 153313, '230622000000', '肇源县', '黑龙江,大庆,肇源', '125.078223', '45.519320', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1116, 153974, 2, 153313, '230623000000', '林甸县', '黑龙江,大庆,林甸', '124.863603', '47.171717', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1117, 154082, 2, 153313, '230624000000', '杜尔伯特蒙古族自治县', '黑龙江,大庆,杜尔伯特', '124.446705', '46.866580', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1118, 154202, 2, 154201, '230701000000', '市辖区', '黑龙江,伊春', '128.841147', '47.727536', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1119, 154203, 2, 154201, '230702000000', '伊春区', '黑龙江,伊春,伊春', '128.907303', '47.728171', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1120, 154252, 2, 154201, '230703000000', '南岔区', '黑龙江,伊春,南岔', '129.283467', '47.138035', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1121, 154342, 2, 154201, '230704000000', '友好区', '黑龙江,伊春,友好', '128.840750', '47.853778', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1122, 154389, 2, 154201, '230705000000', '西林区', '黑龙江,伊春,西林', '129.312851', '47.480735', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1123, 154404, 2, 154201, '230706000000', '翠峦区', '黑龙江,伊春,翠峦', '128.669859', '47.726728', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1124, 154434, 2, 154201, '230707000000', '新青区', '黑龙江,伊春,新青', '129.533600', '48.290455', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1125, 154473, 2, 154201, '230708000000', '美溪区', '黑龙江,伊春,美溪', '129.129314', '47.635090', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1126, 154511, 2, 154201, '230709000000', '金山屯区', '黑龙江,伊春,金山屯', '129.429117', '47.413074', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1127, 154547, 2, 154201, '230710000000', '五营区', '黑龙江,伊春,五营', '129.245344', '48.107910', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1128, 154579, 2, 154201, '230711000000', '乌马河区', '黑龙江,伊春,乌马河', '128.799478', '47.727687', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1129, 154616, 2, 154201, '230712000000', '汤旺河区', '黑龙江,伊春,汤旺河', '129.571108', '48.454651', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1130, 154659, 2, 154201, '230713000000', '带岭区', '黑龙江,伊春,带岭', '129.020793', '47.028397', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1131, 154695, 2, 154201, '230714000000', '乌伊岭区', '黑龙江,伊春,乌伊岭', '129.437920', '48.590323', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1132, 154729, 2, 154201, '230715000000', '红星区', '黑龙江,伊春,红星', '129.390983', '48.239432', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1133, 154759, 2, 154201, '230716000000', '上甘岭区', '黑龙江,伊春,上甘岭', '129.024260', '47.974708', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1134, 154793, 2, 154201, '230722000000', '嘉荫县', '黑龙江,伊春,嘉荫', '130.403564', '48.889109', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1135, 154899, 2, 154201, '230781000000', '铁力市', '黑龙江,伊春,铁力', '128.032422', '46.986640', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1136, 155077, 2, 155076, '230801000000', '市辖区', '黑龙江,佳木斯', '130.318917', '46.799922', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1137, 155078, 2, 155076, '230803000000', '向阳区', '黑龙江,佳木斯,向阳', '130.365346', '46.807790', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1138, 155166, 2, 155076, '230804000000', '前进区', '黑龙江,佳木斯,前进', '130.375063', '46.814103', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1139, 155191, 2, 155076, '230805000000', '东风区', '黑龙江,佳木斯,东风', '130.403664', '46.822572', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1140, 155254, 2, 155076, '230811000000', '郊区', '黑龙江,佳木斯,郊区', '130.327195', '46.810086', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1141, 155435, 2, 155076, '230822000000', '桦南县', '黑龙江,佳木斯,桦南', '130.553343', '46.239185', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1142, 155702, 2, 155076, '230826000000', '桦川县', '黑龙江,佳木斯,桦川', '130.719081', '47.023001', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1143, 155838, 2, 155076, '230828000000', '汤原县', '黑龙江,佳木斯,汤原', '129.905072', '46.730706', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1144, 156034, 2, 155076, '230881000000', '同江市', '黑龙江,佳木斯,同江', '132.510919', '47.642707', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1145, 156209, 2, 155076, '230882000000', '富锦市', '黑龙江,佳木斯,富锦', '132.037686', '47.250108', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1146, 156599, 2, 155076, '230883000000', '抚远市', '黑龙江,佳木斯,抚远', '134.307884', '48.364687', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1147, 156714, 2, 156713, '230901000000', '市辖区', '黑龙江,七台河', '131.003138', '45.771726', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1148, 156715, 2, 156713, '230902000000', '新兴区', '黑龙江,七台河,新兴', '130.932143', '45.815930', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1149, 156815, 2, 156713, '230903000000', '桃山区', '黑龙江,七台河,桃山', '131.020275', '45.765594', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1150, 156865, 2, 156713, '230904000000', '茄子河区', '黑龙江,七台河,茄子河', '131.068075', '45.785215', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1151, 156956, 2, 156713, '230921000000', '勃利县', '黑龙江,七台河,勃利', '130.592093', '45.755507', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1152, 157131, 2, 157130, '231001000000', '市辖区', '黑龙江,牡丹江', '129.633168', '44.551653', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1153, 157132, 2, 157130, '231002000000', '东安区', '黑龙江,牡丹江,东安', '129.626642', '44.581360', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1154, 157170, 2, 157130, '231003000000', '阳明区', '黑龙江,牡丹江,阳明', '129.635615', '44.596104', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1155, 157273, 2, 157130, '231004000000', '爱民区', '黑龙江,牡丹江,爱民', '129.591657', '44.596053', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1156, 157321, 2, 157130, '231005000000', '西安区', '黑龙江,牡丹江,西安', '129.616121', '44.577625', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1157, 157406, 2, 157130, '231025000000', '林口县', '黑龙江,牡丹江,林口', '130.284033', '45.278046', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1158, 157646, 2, 157130, '231081000000', '绥芬河市', '黑龙江,牡丹江,绥芬河', '131.152546', '44.412309', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1159, 157678, 2, 157130, '231083000000', '海林市', '黑龙江,牡丹江,海林', '129.380482', '44.594213', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1160, 157911, 2, 157130, '231084000000', '宁安市', '黑龙江,牡丹江,宁安', '129.482851', '44.340720', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1161, 158233, 2, 157130, '231085000000', '穆棱市', '黑龙江,牡丹江,穆棱', '130.524437', '44.918813', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1162, 158470, 2, 157130, '231086000000', '东宁市', '黑龙江,牡丹江,东宁', '131.122915', '44.087585', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1163, 158624, 2, 158623, '231101000000', '市辖区', '黑龙江,黑河', '127.528560', '50.245329', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1164, 158625, 2, 158623, '231102000000', '爱辉区', '黑龙江,黑河,爱辉', '127.500451', '50.252106', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1165, 158797, 2, 158623, '231121000000', '嫩江县', '黑龙江,黑河,嫩江', '125.221192', '49.185766', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1166, 159105, 2, 158623, '231123000000', '逊克县', '黑龙江,黑河,逊克', '128.478750', '49.564252', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1167, 159220, 2, 158623, '231124000000', '孙吴县', '黑龙江,黑河,孙吴', '127.336304', '49.425652', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1168, 159359, 2, 158623, '231181000000', '北安市', '黑龙江,黑河,北安', '126.491199', '48.241374', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1169, 159526, 2, 158623, '231182000000', '五大连池市', '黑龙江,黑河,五大连池', '126.205516', '48.517257', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1170, 159770, 2, 159769, '231201000000', '市辖区', '黑龙江,绥化', '126.968887', '46.653845', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1171, 159771, 2, 159769, '231202000000', '北林区', '黑龙江,绥化,北林', '126.985593', '46.637344', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1172, 159985, 2, 159769, '231221000000', '望奎县', '黑龙江,绥化,望奎', '126.486076', '46.832719', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1173, 160128, 2, 159769, '231222000000', '兰西县', '黑龙江,绥化,兰西', '126.288113', '46.252447', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1174, 160271, 2, 159769, '231223000000', '青冈县', '黑龙江,绥化,青冈', '126.113860', '46.689671', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1175, 160478, 2, 159769, '231224000000', '庆安县', '黑龙江,绥化,庆安', '127.507825', '46.880102', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1176, 160610, 2, 159769, '231225000000', '明水县', '黑龙江,绥化,明水', '125.906301', '47.173426', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1177, 160744, 2, 159769, '231226000000', '绥棱县', '黑龙江,绥化,绥棱', '127.114832', '47.236015', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1178, 160910, 2, 159769, '231281000000', '安达市', '黑龙江,绥化,安达', '125.352188', '46.423508', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1179, 161079, 2, 159769, '231282000000', '肇东市', '黑龙江,绥化,肇东', '125.961814', '46.051126', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1180, 161331, 2, 159769, '231283000000', '海伦市', '黑龙江,绥化,海伦', '126.973143', '47.461971', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1181, 161652, 2, 161651, '232721000000', '呼玛县', '黑龙江,大兴安岭,呼玛', '126.665319', '51.725637', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1182, 161720, 2, 161651, '232722000000', '塔河县', '黑龙江,大兴安岭,塔河', '124.709996', '52.334457', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1183, 161754, 2, 161651, '232723000000', '漠河县', '黑龙江,大兴安岭,漠河', '122.538592', '52.972272', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1184, 161794, 2, 161793, '310101000000', '黄浦区', '上海,黄浦', '121.484443', '31.231763', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1185, 161988, 2, 161793, '310104000000', '徐汇区', '上海,徐汇', '121.436525', '31.188523', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1186, 162309, 2, 161793, '310105000000', '长宁区', '上海,长宁', '121.424624', '31.220367', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1187, 162505, 2, 161793, '310106000000', '静安区', '上海,静安', '121.459384', '31.247105', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1188, 162794, 2, 161793, '310107000000', '普陀区', '上海,普陀', '121.395555', '31.249840', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1189, 163069, 2, 161793, '310109000000', '虹口区', '上海,虹口', '121.505133', '31.264600', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1190, 163290, 2, 161793, '310110000000', '杨浦区', '上海,杨浦', '121.526077', '31.259541', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1191, 163621, 2, 161793, '310112000000', '闵行区', '上海,闵行', '121.381709', '31.112813', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1192, 164194, 2, 161793, '310113000000', '宝山区', '上海,宝山', '121.489612', '31.405457', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1193, 164682, 2, 161793, '310114000000', '嘉定区', '上海,嘉定', '121.265300', '31.375602', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1194, 165026, 2, 161793, '310115000000', '浦东新区', '上海,浦东', '121.544379', '31.221517', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1195, 166350, 2, 161793, '310116000000', '金山区', '上海,金山', '121.341970', '30.741991', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1196, 166585, 2, 161793, '310117000000', '松江区', '上海,松江', '121.227747', '31.032243', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1197, 166927, 2, 161793, '310118000000', '青浦区', '上海,青浦', '121.124178', '31.150681', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1198, 167228, 2, 161793, '310120000000', '奉贤区', '上海,奉贤', '121.474042', '30.917795', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1199, 167533, 2, 161793, '310151000000', '崇明区', '上海,崇明', '121.473701', '31.230416', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1200, 167906, 2, 167905, '320101000000', '市辖区', '江苏,南京', '118.796877', '32.060255', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1201, 167907, 2, 167905, '320102000000', '玄武区', '江苏,南京,玄武', '118.797861', '32.048687', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1202, 167974, 2, 167905, '320104000000', '秦淮区', '江苏,南京,秦淮', '118.794744', '32.039133', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1203, 168104, 2, 167905, '320105000000', '建邺区', '江苏,南京,建邺', '118.731694', '32.003552', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1204, 168174, 2, 167905, '320106000000', '鼓楼区', '江苏,南京,鼓楼', '118.769790', '32.066336', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1205, 168310, 2, 167905, '320111000000', '浦口区', '江苏,南京,浦口', '118.627895', '32.059093', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1206, 168451, 2, 167905, '320113000000', '栖霞区', '江苏,南京,栖霞', '118.909246', '32.096228', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1207, 168604, 2, 167905, '320114000000', '雨花台区', '江苏,南京,雨花台', '118.779073', '31.991347', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1208, 168704, 2, 167905, '320115000000', '江宁区', '江苏,南京,江宁', '118.839685', '31.953702', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1209, 168925, 2, 167905, '320116000000', '六合区', '江苏,南京,六合', '118.821401', '32.322247', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1210, 169096, 2, 167905, '320117000000', '溧水区', '江苏,南京,溧水', '119.028296', '31.651125', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1211, 169214, 2, 167905, '320118000000', '高淳区', '江苏,南京,高淳', '118.892085', '31.328471', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1212, 169376, 2, 169375, '320201000000', '市辖区', '江苏,无锡', '120.311910', '31.491169', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1213, 169377, 2, 169375, '320205000000', '锡山区', '江苏,无锡,锡山', '120.357858', '31.589715', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1214, 169507, 2, 169375, '320206000000', '惠山区', '江苏,无锡,惠山', '120.298500', '31.681012', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1215, 169628, 2, 169375, '320211000000', '滨湖区', '江苏,无锡,滨湖', '120.282692', '31.527954', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1216, 169751, 2, 169375, '320213000000', '梁溪区', '江苏,无锡,梁溪', '120.296591', '31.575719', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1217, 169924, 2, 169375, '320214000000', '新吴区', '江苏,无锡,新吴', '120.352778', '31.550957', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1218, 170064, 2, 169375, '320281000000', '江阴市', '江苏,无锡,江阴', '120.284939', '31.920658', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1219, 170390, 2, 169375, '320282000000', '宜兴市', '江苏,无锡,宜兴', '119.823308', '31.340637', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1220, 170725, 2, 170724, '320301000000', '市辖区', '江苏,徐州', '117.284124', '34.205768', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1221, 170726, 2, 170724, '320302000000', '鼓楼区', '江苏,徐州,鼓楼', '117.185591', '34.288511', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1222, 170800, 2, 170724, '320303000000', '云龙区', '江苏,徐州,云龙', '117.251560', '34.253167', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1223, 170886, 2, 170724, '320305000000', '贾汪区', '江苏,徐州,贾汪', '117.466687', '34.435506', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1224, 171049, 2, 170724, '320311000000', '泉山区', '江苏,徐州,泉山', '117.193805', '34.244258', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1225, 171182, 2, 170724, '320312000000', '铜山区', '江苏,徐州,铜山', '117.169421', '34.180700', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1226, 171537, 2, 170724, '320321000000', '丰县', '江苏,徐州,丰县', '116.595391', '34.693906', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1227, 171966, 2, 170724, '320322000000', '沛县', '江苏,徐州,沛县', '116.937532', '34.721656', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1228, 172381, 2, 170724, '320324000000', '睢宁县', '江苏,徐州,睢宁', '117.941563', '33.912598', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1229, 172804, 2, 170724, '320381000000', '新沂市', '江苏,徐州,新沂', '118.354537', '34.369580', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1230, 173105, 2, 170724, '320382000000', '邳州市', '江苏,徐州,邳州', '118.012531', '34.338888', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1231, 173636, 2, 173635, '320401000000', '市辖区', '江苏,常州', '119.973987', '31.810689', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1232, 173637, 2, 173635, '320402000000', '天宁区', '江苏,常州,天宁', '119.974991', '31.779619', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1233, 173773, 2, 173635, '320404000000', '钟楼区', '江苏,常州,钟楼', '119.902112', '31.802192', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1234, 173891, 2, 173635, '320411000000', '新北区', '江苏,常州,新北', '119.972182', '31.830641', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1235, 174038, 2, 173635, '320412000000', '武进区', '江苏,常州,武进', '119.942437', '31.701188', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1236, 174347, 2, 173635, '320413000000', '金坛区', '江苏,常州,金坛', '119.597897', '31.723247', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1237, 174508, 2, 173635, '320481000000', '溧阳市', '江苏,常州,溧阳', '119.484211', '31.416911', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1238, 174765, 2, 174764, '320501000000', '市辖区', '江苏,苏州', '120.585315', '31.298886', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1239, 174766, 2, 174764, '320505000000', '虎丘区', '江苏,苏州,虎丘', '120.566833', '31.294845', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1240, 174872, 2, 174764, '320506000000', '吴中区', '江苏,苏州,吴中', '120.631898', '31.264212', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1241, 175088, 2, 174764, '320507000000', '相城区', '江苏,苏州,相城', '120.642663', '31.369088', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1242, 175247, 2, 174764, '320508000000', '姑苏区', '江苏,苏州,姑苏', '120.617296', '31.336392', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1243, 175444, 2, 174764, '320509000000', '吴江区', '江苏,苏州,吴江', '120.645158', '31.138677', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1244, 175765, 2, 174764, '320581000000', '常熟市', '江苏,苏州,常熟', '120.752481', '31.654376', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1245, 176120, 2, 174764, '320582000000', '张家港市', '江苏,苏州,张家港', '120.553200', '31.870405', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1246, 176424, 2, 174764, '320583000000', '昆山市', '江苏,苏州,昆山', '120.980737', '31.385598', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1247, 176763, 2, 174764, '320585000000', '太仓市', '江苏,苏州,太仓', '121.130550', '31.457735', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1248, 176921, 2, 176920, '320601000000', '市辖区', '江苏,南通', '120.894291', '31.980171', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1249, 176922, 2, 176920, '320602000000', '崇川区', '江苏,南通,崇川', '120.857434', '32.009875', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1250, 177040, 2, 176920, '320611000000', '港闸区', '江苏,南通,港闸', '120.818527', '32.032442', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1251, 177119, 2, 176920, '320612000000', '通州区', '江苏,南通,通州', '121.075087', '32.064161', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1252, 177415, 2, 176920, '320621000000', '海安县', '江苏,南通,海安', '120.467370', '32.533549', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1253, 177665, 2, 176920, '320623000000', '如东县', '江苏,南通,如东', '121.185201', '32.331766', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1254, 177946, 2, 176920, '320681000000', '启东市', '江苏,南通,启东', '121.657441', '31.808026', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1255, 178291, 2, 176920, '320682000000', '如皋市', '江苏,南通,如皋', '120.574946', '32.370557', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1256, 178669, 2, 176920, '320684000000', '海门市', '江苏,南通,海门', '121.181615', '31.871173', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1257, 179000, 2, 178999, '320701000000', '市辖区', '江苏,连云港', '119.221611', '34.596653', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1258, 179001, 2, 178999, '320703000000', '连云区', '江苏,连云港,连云', '119.338788', '34.760249', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1259, 179081, 2, 178999, '320706000000', '海州区', '江苏,连云港,海州', '119.193710', '34.606756', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1260, 179296, 2, 178999, '320707000000', '赣榆区', '江苏,连云港,赣榆', '119.173331', '34.841349', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1261, 179786, 2, 178999, '320722000000', '东海县', '江苏,连云港,东海', '118.752842', '34.542309', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1262, 180136, 2, 178999, '320723000000', '灌云县', '江苏,连云港,灌云', '119.239381', '34.284381', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1263, 180493, 2, 178999, '320724000000', '灌南县', '江苏,连云港,灌南', '119.315651', '34.087135', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1264, 180744, 2, 180743, '320801000000', '市辖区', '江苏,淮安', '119.015285', '33.610353', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1265, 180745, 2, 180743, '320803000000', '淮安区', '江苏,淮安,淮安', '119.141099', '33.502869', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1266, 181117, 2, 180743, '320804000000', '淮阴区', '江苏,淮安,淮阴', '119.034725', '33.631893', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1267, 181401, 2, 180743, '320812000000', '清江浦区', '江苏,淮安,清江浦', '119.028099', '33.624341', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1268, 181547, 2, 180743, '320813000000', '洪泽区', '江苏,淮安,洪泽', '119.015285', '33.610353', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1269, 181681, 2, 180743, '320826000000', '涟水县', '江苏,淮安,涟水', '119.260335', '33.780960', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1270, 182092, 2, 180743, '320830000000', '盱眙县', '江苏,淮安,盱眙', '118.544360', '33.011971', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1271, 182372, 2, 180743, '320831000000', '金湖县', '江苏,淮安,金湖', '119.020585', '33.025433', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1272, 182539, 2, 182538, '320901000000', '市辖区', '江苏,盐城', '120.163561', '33.347382', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1273, 182540, 2, 182538, '320902000000', '亭湖区', '江苏,盐城,亭湖', '120.197358', '33.390536', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1274, 182762, 2, 182538, '320903000000', '盐都区', '江苏,盐城,盐都', '120.153898', '33.338094', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1275, 183048, 2, 182538, '320904000000', '大丰区', '江苏,盐城,大丰', '120.500858', '33.200331', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1276, 183334, 2, 182538, '320921000000', '响水县', '江苏,盐城,响水', '119.578364', '34.199479', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1277, 183510, 2, 182538, '320922000000', '滨海县', '江苏,盐城,滨海', '119.820831', '33.990334', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1278, 183829, 2, 182538, '320923000000', '阜宁县', '江苏,盐城,阜宁', '119.802527', '33.759325', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1279, 184188, 2, 182538, '320924000000', '射阳县', '江苏,盐城,射阳', '120.258053', '33.774806', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1280, 184485, 2, 182538, '320925000000', '建湖县', '江苏,盐城,建湖', '119.798581', '33.464204', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1281, 184748, 2, 182538, '320981000000', '东台市', '江苏,盐城,东台', '120.320331', '32.868440', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1282, 185202, 2, 185201, '321001000000', '市辖区', '江苏,扬州', '119.412966', '32.394210', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1283, 185203, 2, 185201, '321002000000', '广陵区', '江苏,扬州,广陵', '119.431849', '32.394720', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1284, 185360, 2, 185201, '321003000000', '邗江区', '江苏,扬州,邗江', '119.398015', '32.377528', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1285, 185555, 2, 185201, '321012000000', '江都区', '江苏,扬州,江都', '119.569989', '32.434672', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1286, 185905, 2, 185201, '321023000000', '宝应县', '江苏,扬州,宝应', '119.360729', '33.240392', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1287, 186203, 2, 185201, '321081000000', '仪征市', '江苏,扬州,仪征', '119.184766', '32.272258', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1288, 186414, 2, 185201, '321084000000', '高邮市', '江苏,扬州,高邮', '119.459161', '32.781659', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1289, 186658, 2, 186657, '321101000000', '市辖区', '江苏,镇江', '119.425836', '32.187849', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1290, 186659, 2, 186657, '321102000000', '京口区', '江苏,镇江,京口', '119.470160', '32.198280', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1291, 186734, 2, 186657, '321111000000', '润州区', '江苏,镇江,润州', '119.411945', '32.195333', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1292, 186817, 2, 186657, '321112000000', '丹徒区', '江苏,镇江,丹徒', '119.433854', '32.131962', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1293, 186919, 2, 186657, '321181000000', '丹阳市', '江苏,镇江,丹阳', '119.606536', '32.010117', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1294, 187149, 2, 186657, '321182000000', '扬中市', '江苏,镇江,扬中', '119.797635', '32.234831', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1295, 187235, 2, 186657, '321183000000', '句容市', '江苏,镇江,句容', '119.168695', '31.944999', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1296, 187442, 2, 187441, '321201000000', '市辖区', '江苏,泰州', '119.923116', '32.455778', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1297, 187443, 2, 187441, '321202000000', '海陵区', '江苏,泰州,海陵', '119.919425', '32.491016', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1298, 187593, 2, 187441, '321203000000', '高港区', '江苏,泰州,高港', '119.881717', '32.318822', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1299, 187693, 2, 187441, '321204000000', '姜堰区', '江苏,泰州,姜堰', '120.127934', '32.509155', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1300, 188035, 2, 187441, '321281000000', '兴化市', '江苏,泰州,兴化', '119.852541', '32.910459', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1301, 188752, 2, 187441, '321282000000', '靖江市', '江苏,泰州,靖江', '120.277138', '31.982751', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1302, 189026, 2, 187441, '321283000000', '泰兴市', '江苏,泰州,泰兴', '120.051744', '32.171854', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1303, 189403, 2, 189402, '321301000000', '市辖区', '江苏,宿迁', '118.275198', '33.963232', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1304, 189404, 2, 189402, '321302000000', '宿城区', '江苏,宿迁,宿城', '118.242534', '33.963029', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1305, 189637, 2, 189402, '321311000000', '宿豫区', '江苏,宿迁,宿豫', '118.330782', '33.946822', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1306, 189850, 2, 189402, '321322000000', '沭阳县', '江苏,宿迁,沭阳', '118.804784', '34.111022', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1307, 190377, 2, 189402, '321323000000', '泗阳县', '江苏,宿迁,泗阳', '118.703038', '33.723140', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1308, 190642, 2, 189402, '321324000000', '泗洪县', '江苏,宿迁,泗洪', '118.223591', '33.476051', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1309, 191021, 2, 191020, '330101000000', '市辖区', '浙江,杭州', '120.155070', '30.274084', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1310, 191022, 2, 191020, '330102000000', '上城区', '浙江,杭州,上城', '120.169329', '30.242312', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1311, 191083, 2, 191020, '330103000000', '下城区', '浙江,杭州,下城', '120.180895', '30.281714', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1312, 191166, 2, 191020, '330104000000', '江干区', '浙江,杭州,江干', '120.205001', '30.257012', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1313, 191360, 2, 191020, '330105000000', '拱墅区', '浙江,杭州,拱墅', '120.141406', '30.319037', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1314, 191479, 2, 191020, '330106000000', '西湖区', '浙江,杭州,西湖', '120.130203', '30.259324', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1315, 191693, 2, 191020, '330108000000', '滨江区', '浙江,杭州,滨江', '120.211816', '30.208560', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1316, 191756, 2, 191020, '330109000000', '萧山区', '浙江,杭州,萧山', '120.264253', '30.183806', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1317, 192388, 2, 191020, '330110000000', '余杭区', '浙江,杭州,余杭', '120.299402', '30.419045', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1318, 192753, 2, 191020, '330111000000', '富阳区', '浙江,杭州,富阳', '119.960076', '30.048692', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1319, 193085, 2, 191020, '330122000000', '桐庐县', '浙江,杭州,桐庐', '119.691434', '29.793535', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1320, 193304, 2, 191020, '330127000000', '淳安县', '浙江,杭州,淳安', '119.041864', '29.608772', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1321, 193766, 2, 191020, '330182000000', '建德市', '浙江,杭州,建德', '119.281164', '29.474871', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1322, 194060, 2, 191020, '330185000000', '临安市', '浙江,杭州,临安', '119.724733', '30.233873', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1323, 194396, 2, 194395, '330201000000', '市辖区', '浙江,宁波', '121.550357', '29.874556', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1324, 194397, 2, 194395, '330203000000', '海曙区', '浙江,宁波,海曙', '121.551066', '29.859772', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1325, 194484, 2, 194395, '330204000000', '江东区', '浙江,宁波,江东', '121.570383', '29.866819', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1326, 194568, 2, 194395, '330205000000', '江北区', '浙江,宁波,江北', '121.555227', '29.886757', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1327, 194747, 2, 194395, '330206000000', '北仑区', '浙江,宁波,北仑', '121.844618', '29.899044', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1328, 195023, 2, 194395, '330211000000', '镇海区', '浙江,宁波,镇海', '121.716540', '29.948998', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1329, 195132, 2, 194395, '330212000000', '鄞州区', '浙江,宁波,鄞州', '121.546603', '29.816511', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1330, 195703, 2, 194395, '330225000000', '象山县', '浙江,宁波,象山', '121.869339', '29.476705', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1331, 196257, 2, 194395, '330226000000', '宁海县', '浙江,宁波,宁海', '121.429477', '29.287939', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1332, 196686, 2, 194395, '330281000000', '余姚市', '浙江,宁波,余姚', '121.154634', '30.037192', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1333, 197031, 2, 194395, '330282000000', '慈溪市', '浙江,宁波,慈溪', '121.266579', '30.169665', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1334, 197440, 2, 194395, '330283000000', '奉化市', '浙江,宁波,奉化', '121.406995', '29.655143', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1335, 197851, 2, 197850, '330301000000', '市辖区', '浙江,温州', '120.699366', '27.994267', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1336, 197852, 2, 197850, '330302000000', '鹿城区', '浙江,温州,鹿城', '120.655135', '28.015455', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1337, 198091, 2, 197850, '330303000000', '龙湾区', '浙江,温州,龙湾', '120.811213', '27.932747', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1338, 198210, 2, 197850, '330304000000', '瓯海区', '浙江,温州,瓯海', '120.614910', '27.966844', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1339, 198508, 2, 197850, '330305000000', '洞头区', '浙江,温州,洞头', '121.157249', '27.836154', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1340, 198619, 2, 197850, '330324000000', '永嘉县', '浙江,温州,永嘉', '120.682144', '28.150591', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1341, 199581, 2, 197850, '330326000000', '平阳县', '浙江,温州,平阳', '120.565793', '27.661918', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1342, 200239, 2, 197850, '330327000000', '苍南县', '浙江,温州,苍南', '120.425766', '27.518280', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1343, 201140, 2, 197850, '330328000000', '文成县', '浙江,温州,文成', '120.091498', '27.786996', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1344, 201556, 2, 197850, '330329000000', '泰顺县', '浙江,温州,泰顺', '119.717649', '27.556884', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1345, 201882, 2, 197850, '330381000000', '瑞安市', '浙江,温州,瑞安', '120.655148', '27.778657', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1346, 202864, 2, 197850, '330382000000', '乐清市', '浙江,温州,乐清', '120.967147', '28.116083', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1347, 203853, 2, 203852, '330401000000', '市辖区', '浙江,嘉兴', '120.755486', '30.746129', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1348, 203854, 2, 203852, '330402000000', '南湖区', '浙江,嘉兴,南湖', '120.783025', '30.747842', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1349, 204008, 2, 203852, '330411000000', '秀洲区', '浙江,嘉兴,秀洲', '120.709018', '30.765168', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1350, 204177, 2, 203852, '330421000000', '嘉善县', '浙江,嘉兴,嘉善', '120.925850', '30.830898', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1351, 204341, 2, 203852, '330424000000', '海盐县', '浙江,嘉兴,海盐', '120.946263', '30.526436', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1352, 204486, 2, 203852, '330481000000', '海宁市', '浙江,嘉兴,海宁', '120.680757', '30.510659', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1353, 204723, 2, 203852, '330482000000', '平湖市', '浙江,嘉兴,平湖', '121.015142', '30.677233', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1354, 204877, 2, 203852, '330483000000', '桐乡市', '浙江,嘉兴,桐乡', '120.565099', '30.630173', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1355, 205102, 2, 205101, '330501000000', '市辖区', '浙江,湖州', '120.086823', '30.894348', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1356, 205103, 2, 205101, '330502000000', '吴兴区', '浙江,湖州,吴兴', '120.185838', '30.857151', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1357, 205449, 2, 205101, '330503000000', '南浔区', '浙江,湖州,南浔', '120.418512', '30.849690', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1358, 205717, 2, 205101, '330521000000', '德清县', '浙江,湖州,德清', '119.977401', '30.542510', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1359, 205910, 2, 205101, '330522000000', '长兴县', '浙江,湖州,长兴', '119.910952', '31.026666', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1360, 206213, 2, 205101, '330523000000', '安吉县', '浙江,湖州,安吉', '119.680353', '30.638675', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1361, 206439, 2, 206438, '330601000000', '市辖区', '浙江,绍兴', '120.580232', '30.029752', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1362, 206440, 2, 206438, '330602000000', '越城区', '浙江,绍兴,越城', '120.582633', '29.988245', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1363, 206875, 2, 206438, '330603000000', '柯桥区', '浙江,绍兴,柯桥', '120.495065', '30.081942', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1364, 207247, 2, 206438, '330604000000', '上虞区', '浙江,绍兴,上虞', '120.868122', '30.033121', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1365, 207715, 2, 206438, '330624000000', '新昌县', '浙江,绍兴,新昌', '120.903866', '29.499832', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1366, 208171, 2, 206438, '330681000000', '诸暨市', '浙江,绍兴,诸暨', '120.246863', '29.708692', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1367, 208733, 2, 206438, '330683000000', '嵊州市', '浙江,绍兴,嵊州', '120.831025', '29.561410', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1368, 209251, 2, 209250, '330701000000', '市辖区', '浙江,金华', '119.647444', '29.079059', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1369, 209252, 2, 209250, '330702000000', '婺城区', '浙江,金华,婺城', '119.571633', '29.086221', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1370, 209949, 2, 209250, '330703000000', '金东区', '浙江,金华,金东', '119.692862', '29.099122', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1371, 210474, 2, 209250, '330723000000', '武义县', '浙江,金华,武义', '119.816318', '28.892721', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1372, 211047, 2, 209250, '330726000000', '浦江县', '浙江,金华,浦江', '119.892222', '29.452477', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1373, 211492, 2, 209250, '330727000000', '磐安县', '浙江,金华,磐安', '120.450178', '29.054048', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1374, 211883, 2, 209250, '330781000000', '兰溪市', '浙江,金华,兰溪', '119.460526', '29.208919', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1375, 212256, 2, 209250, '330782000000', '义乌市', '浙江,金华,义乌', '120.075058', '29.306841', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1376, 213076, 2, 209250, '330783000000', '东阳市', '浙江,金华,东阳', '120.241566', '29.289648', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1377, 213485, 2, 209250, '330784000000', '永康市', '浙江,金华,永康', '120.047651', '28.888555', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1378, 214261, 2, 214260, '330801000000', '市辖区', '浙江,衢州', '118.859457', '28.970079', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1379, 214262, 2, 214260, '330802000000', '柯城区', '浙江,衢州,柯城', '118.871333', '28.968504', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1380, 214536, 2, 214260, '330803000000', '衢江区', '浙江,衢州,衢江', '118.959460', '28.979780', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1381, 214843, 2, 214260, '330822000000', '常山县', '浙江,衢州,常山', '118.511287', '28.901343', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1382, 215051, 2, 214260, '330824000000', '开化县', '浙江,衢州,开化', '118.415495', '29.137337', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1383, 215332, 2, 214260, '330825000000', '龙游县', '浙江,衢州,龙游', '119.172304', '29.028319', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1384, 215624, 2, 214260, '330881000000', '江山市', '浙江,衢州,江山', '118.626974', '28.737223', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1385, 215956, 2, 215955, '330901000000', '市辖区', '浙江,舟山', '122.207215', '29.985295', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1386, 215957, 2, 215955, '330902000000', '定海区', '浙江,舟山,定海', '122.106773', '30.019858', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1387, 216139, 2, 215955, '330903000000', '普陀区', '浙江,舟山,普陀', '122.323867', '29.971760', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1388, 216290, 2, 215955, '330921000000', '岱山县', '浙江,舟山,岱山', '122.226237', '30.264139', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1389, 216394, 2, 215955, '330922000000', '嵊泗县', '浙江,舟山,嵊泗', '122.451382', '30.725686', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1390, 216450, 2, 216449, '331001000000', '市辖区', '浙江,台州', '121.420757', '28.656386', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1391, 216451, 2, 216449, '331002000000', '椒江区', '浙江,台州,椒江', '121.442676', '28.673726', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1392, 216788, 2, 216449, '331003000000', '黄岩区', '浙江,台州,黄岩', '121.261893', '28.650117', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1393, 217324, 2, 216449, '331004000000', '路桥区', '浙江,台州,路桥', '121.365123', '28.582655', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1394, 217666, 2, 216449, '331021000000', '玉环县', '浙江,台州,玉环', '121.231805', '28.135930', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1395, 217998, 2, 216449, '331022000000', '三门县', '浙江,台州,三门', '121.395777', '29.104873', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1396, 218534, 2, 216449, '331023000000', '天台县', '浙江,台州,天台', '121.006725', '29.144079', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1397, 219162, 2, 216449, '331024000000', '仙居县', '浙江,台州,仙居', '120.735081', '28.849213', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1398, 219609, 2, 216449, '331081000000', '温岭市', '浙江,台州,温岭', '121.385604', '28.372506', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1399, 220555, 2, 216449, '331082000000', '临海市', '浙江,台州,临海', '121.145047', '28.858457', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1400, 221611, 2, 221610, '331101000000', '市辖区', '浙江,丽水', '119.922796', '28.467630', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1401, 221612, 2, 221610, '331102000000', '莲都区', '浙江,丽水,莲都', '119.912612', '28.445836', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1402, 221903, 2, 221610, '331121000000', '青田县', '浙江,丽水,青田', '120.289597', '28.139059', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1403, 222380, 2, 221610, '331122000000', '缙云县', '浙江,丽水,缙云', '120.091573', '28.659279', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1404, 222658, 2, 221610, '331123000000', '遂昌县', '浙江,丽水,遂昌', '119.276104', '28.592119', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1405, 222890, 2, 221610, '331124000000', '松阳县', '浙江,丽水,松阳', '119.482015', '28.449171', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1406, 223324, 2, 221610, '331125000000', '云和县', '浙江,丽水,云和', '119.573397', '28.115790', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1407, 223512, 2, 221610, '331126000000', '庆元县', '浙江,丽水,庆元', '119.062590', '27.619220', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1408, 223885, 2, 221610, '331127000000', '景宁畲族自治县', '浙江,丽水,景宁', '119.635697', '27.973312', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1409, 224172, 2, 221610, '331181000000', '龙泉市', '浙江,丽水,龙泉', '119.141461', '28.074623', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1410, 224651, 2, 224650, '340101000000', '市辖区', '安徽,合肥', '117.227239', '31.820586', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1411, 224652, 2, 224650, '340102000000', '瑶海区', '安徽,合肥,瑶海', '117.309229', '31.858048', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1412, 224755, 2, 224650, '340103000000', '庐阳区', '安徽,合肥,庐阳', '117.264595', '31.878641', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1413, 224838, 2, 224650, '340104000000', '蜀山区', '安徽,合肥,蜀山', '117.260536', '31.851158', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1414, 224946, 2, 224650, '340111000000', '包河区', '安徽,合肥,包河', '117.309658', '31.793093', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1415, 225062, 2, 224650, '340121000000', '长丰县', '安徽,合肥,长丰', '117.167564', '32.478018', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1416, 225352, 2, 224650, '340122000000', '肥东县', '安徽,合肥,肥东', '117.469383', '31.887940', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1417, 225705, 2, 224650, '340123000000', '肥西县', '安徽,合肥,肥西', '117.157981', '31.706810', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1418, 225998, 2, 224650, '340124000000', '庐江县', '安徽,合肥,庐江', '117.287800', '31.255550', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1419, 226249, 2, 224650, '340181000000', '巢湖市', '安徽,合肥,巢湖', '117.861800', '31.598628', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1420, 226470, 2, 226469, '340201000000', '市辖区', '安徽,芜湖', '118.432941', '31.352859', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1421, 226471, 2, 226469, '340202000000', '镜湖区', '安徽,芜湖,镜湖', '118.385146', '31.340404', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1422, 226550, 2, 226469, '340203000000', '弋江区', '安徽,芜湖,弋江', '118.372655', '31.311757', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1423, 226612, 2, 226469, '340207000000', '鸠江区', '安徽,芜湖,鸠江', '118.391734', '31.369373', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1424, 226735, 2, 226469, '340208000000', '三山区', '安徽,芜湖,三山', '118.268101', '31.219568', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1425, 226786, 2, 226469, '340221000000', '芜湖县', '安徽,芜湖,芜湖', '118.576124', '31.134809', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1426, 226891, 2, 226469, '340222000000', '繁昌县', '安徽,芜湖,繁昌', '118.201349', '31.080896', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1427, 226995, 2, 226469, '340223000000', '南陵县', '安徽,芜湖,南陵', '118.334360', '30.914923', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1428, 227183, 2, 226469, '340225000000', '无为县', '安徽,芜湖,无为', '117.902366', '31.303168', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1429, 227483, 2, 227482, '340301000000', '市辖区', '安徽,蚌埠', '117.389719', '32.916287', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1430, 227484, 2, 227482, '340302000000', '龙子湖区', '安徽,蚌埠,龙子湖', '117.393790', '32.943014', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1431, 227551, 2, 227482, '340303000000', '蚌山区', '安徽,蚌埠,蚌山', '117.367614', '32.944198', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1432, 227598, 2, 227482, '340304000000', '禹会区', '安徽,蚌埠,禹会', '117.342451', '32.929711', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1433, 227677, 2, 227482, '340311000000', '淮上区', '安徽,蚌埠,淮上', '117.359331', '32.965435', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1434, 227769, 2, 227482, '340321000000', '怀远县', '安徽,蚌埠,怀远', '117.205234', '32.970031', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1435, 228155, 2, 227482, '340322000000', '五河县', '安徽,蚌埠,五河', '117.879486', '33.127823', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1436, 228388, 2, 227482, '340323000000', '固镇县', '安徽,蚌埠,固镇', '117.316955', '33.316899', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1437, 228631, 2, 228630, '340401000000', '市辖区', '安徽,淮南', '116.999932', '32.625478', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1438, 228632, 2, 228630, '340402000000', '大通区', '安徽,淮南,大通', '117.053273', '32.631533', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1439, 228710, 2, 228630, '340403000000', '田家庵区', '安徽,淮南,田家庵', '117.017409', '32.647155', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1440, 228853, 2, 228630, '340404000000', '谢家集区', '安徽,淮南,谢家集', '116.859048', '32.599901', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1441, 228960, 2, 228630, '340405000000', '八公山区', '安徽,淮南,八公山', '116.833490', '32.631379', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1442, 229029, 2, 228630, '340406000000', '潘集区', '安徽,淮南,潘集', '116.834716', '32.772080', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1443, 229221, 2, 228630, '340421000000', '凤台县', '安徽,淮南,凤台', '116.711051', '32.709445', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1444, 229527, 2, 228630, '340422000000', '寿县', '安徽,淮南,寿县', '116.787141', '32.573306', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1445, 229845, 2, 229844, '340501000000', '市辖区', '安徽,马鞍山', '118.506759', '31.670452', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1446, 229846, 2, 229844, '340503000000', '花山区', '安徽,马鞍山,花山', '118.492562', '31.719710', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1447, 229922, 2, 229844, '340504000000', '雨山区', '安徽,马鞍山,雨山', '118.498560', '31.682208', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1448, 229992, 2, 229844, '340506000000', '博望区', '安徽,马鞍山,博望', '118.844538', '31.558471', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1449, 230041, 2, 229844, '340521000000', '当涂县', '安徽,马鞍山,当涂', '118.497972', '31.571213', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1450, 230213, 2, 229844, '340522000000', '含山县', '安徽,马鞍山,含山', '118.101421', '31.735599', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1451, 230345, 2, 229844, '340523000000', '和县', '安徽,马鞍山,和县', '118.351405', '31.741794', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1452, 230477, 2, 230476, '340601000000', '市辖区', '安徽,淮北', '116.798265', '33.955844', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1453, 230478, 2, 230476, '340602000000', '杜集区', '安徽,淮北,杜集', '116.828134', '33.991451', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1454, 230539, 2, 230476, '340603000000', '相山区', '安徽,淮北,相山', '116.794345', '33.959893', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1455, 230648, 2, 230476, '340604000000', '烈山区', '安徽,淮北,烈山', '116.813042', '33.895139', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1456, 230720, 2, 230476, '340621000000', '濉溪县', '安徽,淮北,濉溪', '116.766299', '33.915477', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1457, 230982, 2, 230981, '340701000000', '市辖区', '安徽,铜陵', '117.812079', '30.945429', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1458, 230983, 2, 230981, '340705000000', '铜官区', '安徽,铜陵,铜官', '117.816174', '30.927608', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1459, 231043, 2, 230981, '340706000000', '义安区', '安徽,铜陵,义安', '117.791544', '30.952823', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1460, 231171, 2, 230981, '340711000000', '郊区', '安徽,铜陵,郊区', '117.807070', '30.908927', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1461, 231216, 2, 230981, '340722000000', '枞阳县', '安徽,铜陵,枞阳', '117.220200', '30.700733', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1462, 231500, 2, 231499, '340801000000', '市辖区', '安徽,安庆', '117.063754', '30.543494', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1463, 231501, 2, 231499, '340802000000', '迎江区', '安徽,安庆,迎江', '117.091150', '30.511548', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1464, 231558, 2, 231499, '340803000000', '大观区', '安徽,安庆,大观', '117.021670', '30.553957', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1465, 231646, 2, 231499, '340811000000', '宜秀区', '安徽,安庆,宜秀', '117.070003', '30.541323', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1466, 231710, 2, 231499, '340822000000', '怀宁县', '安徽,安庆,怀宁', '116.829475', '30.733825', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1467, 231974, 2, 231499, '340824000000', '潜山县', '安徽,安庆,潜山', '116.581270', '30.631129', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1468, 232180, 2, 231499, '340825000000', '太湖县', '安徽,安庆,太湖', '116.308795', '30.454220', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1469, 232386, 2, 231499, '340826000000', '宿松县', '安徽,安庆,宿松', '116.129105', '30.153746', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1470, 232631, 2, 231499, '340827000000', '望江县', '安徽,安庆,望江', '116.694183', '30.124428', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1471, 232781, 2, 231499, '340828000000', '岳西县', '安徽,安庆,岳西', '116.359921', '30.849442', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1472, 232996, 2, 231499, '340881000000', '桐城市', '安徽,安庆,桐城', '116.974120', '31.035800', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1473, 233237, 2, 233236, '341001000000', '市辖区', '安徽,黄山', '118.337481', '29.714655', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1474, 233238, 2, 233236, '341002000000', '屯溪区', '安徽,黄山,屯溪', '118.315329', '29.696109', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1475, 233321, 2, 233236, '341003000000', '黄山区', '安徽,黄山,黄山', '118.141568', '30.272942', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1476, 233423, 2, 233236, '341004000000', '徽州区', '安徽,黄山,徽州', '118.336751', '29.827279', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1477, 233487, 2, 233236, '341021000000', '歙县', '安徽,黄山,歙县', '118.415356', '29.861308', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1478, 233714, 2, 233236, '341022000000', '休宁县', '安徽,黄山,休宁', '118.199179', '29.789095', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1479, 233894, 2, 233236, '341023000000', '黟县', '安徽,黄山,黟县', '117.938373', '29.924805', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1480, 233973, 2, 233236, '341024000000', '祁门县', '安徽,黄山,祁门', '117.717396', '29.854055', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1481, 234110, 2, 234109, '341101000000', '市辖区', '安徽,滁州', '118.317106', '32.301556', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1482, 234111, 2, 234109, '341102000000', '琅琊区', '安徽,滁州,琅琊', '118.305843', '32.294530', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1483, 234174, 2, 234109, '341103000000', '南谯区', '安徽,滁州,南谯', '118.296955', '32.329842', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1484, 234274, 2, 234109, '341122000000', '来安县', '安徽,滁州,来安', '118.435792', '32.452172', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1485, 234434, 2, 234109, '341124000000', '全椒县', '安徽,滁州,全椒', '118.273090', '32.085407', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1486, 234560, 2, 234109, '341125000000', '定远县', '安徽,滁州,定远', '117.698563', '32.530982', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1487, 234847, 2, 234109, '341126000000', '凤阳县', '安徽,滁州,凤阳', '117.531623', '32.874735', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1488, 235112, 2, 234109, '341181000000', '天长市', '安徽,滁州,天长', '119.004817', '32.667571', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1489, 235305, 2, 234109, '341182000000', '明光市', '安徽,滁州,明光', '118.018276', '32.781995', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1490, 235484, 2, 235483, '341201000000', '市辖区', '安徽,阜阳', '115.814204', '32.890124', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1491, 235485, 2, 235483, '341202000000', '颍州区', '安徽,阜阳,颍州', '115.806942', '32.883468', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1492, 235646, 2, 235483, '341203000000', '颍东区', '安徽,阜阳,颍东', '115.856687', '32.912478', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1493, 235778, 2, 235483, '341204000000', '颍泉区', '安徽,阜阳,颍泉', '115.808327', '32.924918', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1494, 235909, 2, 235483, '341221000000', '临泉县', '安徽,阜阳,临泉', '115.261473', '33.040261', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1495, 236338, 2, 235483, '341222000000', '太和县', '安徽,阜阳,太和', '115.621934', '33.160326', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1496, 236685, 2, 235483, '341225000000', '阜南县', '安徽,阜阳,阜南', '115.595644', '32.658297', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1497, 237046, 2, 235483, '341226000000', '颍上县', '安徽,阜阳,颍上', '116.256789', '32.653255', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1498, 237428, 2, 235483, '341282000000', '界首市', '安徽,阜阳,界首', '115.374564', '33.257013', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1499, 237608, 2, 237607, '341301000000', '市辖区', '安徽,宿州', '116.964356', '33.646373', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1500, 237609, 2, 237607, '341302000000', '埇桥区', '安徽,宿州,埇桥', '116.977463', '33.640061', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1501, 238022, 2, 237607, '341321000000', '砀山县', '安徽,宿州,砀山', '116.367095', '34.442561', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1502, 238207, 2, 237607, '341322000000', '萧县', '安徽,宿州,萧县', '116.947290', '34.188728', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1503, 238533, 2, 237607, '341323000000', '灵璧县', '安徽,宿州,灵璧', '117.552462', '33.552998', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1504, 238872, 2, 237607, '341324000000', '泗县', '安徽,宿州,泗县', '117.910629', '33.482982', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1505, 239085, 2, 239084, '341501000000', '市辖区', '安徽,六安', '116.521854', '31.733699', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1506, 239086, 2, 239084, '341502000000', '金安区', '安徽,六安,金安', '116.539679', '31.749265', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1507, 239450, 2, 239084, '341503000000', '裕安区', '安徽,六安,裕安', '116.479920', '31.737813', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1508, 239780, 2, 239084, '341504000000', '叶集区', '安徽,六安,叶集', '116.521854', '31.733699', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1509, 239834, 2, 239084, '341522000000', '霍邱县', '安徽,六安,霍邱', '116.277912', '32.353038', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1510, 240310, 2, 239084, '341523000000', '舒城县', '安徽,六安,舒城', '116.948623', '31.462027', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1511, 240759, 2, 239084, '341524000000', '金寨县', '安徽,六安,金寨', '115.934366', '31.727170', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1512, 241016, 2, 239084, '341525000000', '霍山县', '安徽,六安,霍山', '116.332951', '31.392786', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1513, 241181, 2, 241180, '341601000000', '市辖区', '安徽,亳州', '115.778676', '33.844582', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1514, 241182, 2, 241180, '341602000000', '谯城区', '安徽,亳州,谯城', '115.779025', '33.876235', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1515, 241517, 2, 241180, '341621000000', '涡阳县', '安徽,亳州,涡阳', '116.215665', '33.492921', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1516, 241927, 2, 241180, '341622000000', '蒙城县', '安徽,亳州,蒙城', '116.564248', '33.265831', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1517, 242245, 2, 241180, '341623000000', '利辛县', '安徽,亳州,利辛', '116.208635', '33.144724', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1518, 242635, 2, 242634, '341701000000', '市辖区', '安徽,池州', '117.491568', '30.664800', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1519, 242636, 2, 242634, '341702000000', '贵池区', '安徽,池州,贵池', '117.567379', '30.687181', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1520, 242888, 2, 242634, '341721000000', '东至县', '安徽,池州,东至', '117.027533', '30.111182', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1521, 243159, 2, 242634, '341722000000', '石台县', '安徽,池州,石台', '117.486306', '30.210313', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1522, 243254, 2, 242634, '341723000000', '青阳县', '安徽,池州,青阳', '117.847362', '30.639230', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1523, 243400, 2, 243399, '341801000000', '市辖区', '安徽,宣城', '118.758816', '30.940718', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1524, 243401, 2, 243399, '341802000000', '宣州区', '安徽,宣城,宣州', '118.756328', '30.946319', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1525, 243636, 2, 243399, '341821000000', '郎溪县', '安徽,宣城,郎溪', '119.179657', '31.126412', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1526, 243753, 2, 243399, '341822000000', '广德县', '安徽,宣城,广德', '119.420935', '30.877555', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1527, 243902, 2, 243399, '341823000000', '泾县', '安徽,宣城,泾县', '118.419864', '30.688578', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1528, 244058, 2, 243399, '341824000000', '绩溪县', '安徽,宣城,绩溪', '118.578519', '30.067533', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1529, 244153, 2, 243399, '341825000000', '旌德县', '安徽,宣城,旌德', '118.540487', '30.286350', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1530, 244232, 2, 243399, '341881000000', '宁国市', '安徽,宣城,宁国', '118.982915', '30.633571', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1531, 244379, 2, 244378, '350101000000', '市辖区', '福建,福州', '119.296494', '26.074507', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1532, 244380, 2, 244378, '350102000000', '鼓楼区', '福建,福州,鼓楼', '119.303822', '26.082294', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1533, 244460, 2, 244378, '350103000000', '台江区', '福建,福州,台江', '119.314054', '26.052842', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1534, 244523, 2, 244378, '350104000000', '仓山区', '福建,福州,仓山', '119.273546', '26.046744', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1535, 244713, 2, 244378, '350105000000', '马尾区', '福建,福州,马尾', '119.455589', '25.989500', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1536, 244793, 2, 244378, '350111000000', '晋安区', '福建,福州,晋安', '119.328515', '26.082105', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1537, 244987, 2, 244378, '350121000000', '闽侯县', '福建,福州,闽侯', '119.131725', '26.150047', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1538, 245329, 2, 244378, '350122000000', '连江县', '福建,福州,连江', '119.539704', '26.197364', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1539, 245633, 2, 244378, '350123000000', '罗源县', '福建,福州,罗源', '119.549776', '26.489559', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1540, 245845, 2, 244378, '350124000000', '闽清县', '福建,福州,闽清', '118.863361', '26.221198', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1541, 246154, 2, 244378, '350125000000', '永泰县', '福建,福州,永泰', '118.932592', '25.866695', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1542, 246443, 2, 244378, '350128000000', '平潭县', '福建,福州,平潭', '119.790168', '25.498720', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1543, 246667, 2, 244378, '350181000000', '福清市', '福建,福州,福清', '119.384334', '25.721143', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1544, 247200, 2, 244378, '350182000000', '长乐市', '福建,福州,长乐', '119.523266', '25.962888', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1545, 247479, 2, 247478, '350201000000', '市辖区', '福建,厦门', '118.089425', '24.479833', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1546, 247480, 2, 247478, '350203000000', '思明区', '福建,厦门,思明', '118.082658', '24.445567', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1547, 247590, 2, 247478, '350205000000', '海沧区', '福建,厦门,海沧', '118.032818', '24.484503', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1548, 247641, 2, 247478, '350206000000', '湖里区', '福建,厦门,湖里', '118.146769', '24.512905', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1549, 247704, 2, 247478, '350211000000', '集美区', '福建,厦门,集美', '118.097337', '24.575970', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1550, 247782, 2, 247478, '350212000000', '同安区', '福建,厦门,同安', '118.152149', '24.722747', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1551, 247933, 2, 247478, '350213000000', '翔安区', '福建,厦门,翔安', '118.248034', '24.618544', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1552, 248060, 2, 248059, '350301000000', '市辖区', '福建,莆田', '119.007777', '25.454084', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1553, 248061, 2, 248059, '350302000000', '城厢区', '福建,莆田,城厢', '118.993885', '25.419319', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1554, 248189, 2, 248059, '350303000000', '涵江区', '福建,莆田,涵江', '119.116290', '25.458720', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1555, 248403, 2, 248059, '350304000000', '荔城区', '福建,莆田,荔城', '119.015123', '25.431979', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1556, 248540, 2, 248059, '350305000000', '秀屿区', '福建,莆田,秀屿', '119.105528', '25.318672', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1557, 248753, 2, 248059, '350322000000', '仙游县', '福建,莆田,仙游', '118.691601', '25.362094', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1558, 249099, 2, 249098, '350401000000', '市辖区', '福建,三明', '117.638678', '26.263406', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1559, 249100, 2, 249098, '350402000000', '梅列区', '福建,三明,梅列', '117.645856', '26.271711', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1560, 249157, 2, 249098, '350403000000', '三元区', '福建,三明,三元', '117.608045', '26.234020', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1561, 249245, 2, 249098, '350421000000', '明溪县', '福建,三明,明溪', '117.201847', '26.357379', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1562, 249351, 2, 249098, '350423000000', '清流县', '福建,三明,清流', '116.816909', '26.177797', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1563, 249484, 2, 249098, '350424000000', '宁化县', '福建,三明,宁化', '116.654365', '26.261754', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1564, 249728, 2, 249098, '350425000000', '大田县', '福建,三明,大田', '117.847115', '25.692699', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1565, 250026, 2, 249098, '350426000000', '尤溪县', '福建,三明,尤溪', '118.190467', '26.170171', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1566, 250307, 2, 249098, '350427000000', '沙县', '福建,三明,沙县', '117.792450', '26.397300', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1567, 250512, 2, 249098, '350428000000', '将乐县', '福建,三明,将乐', '117.471373', '26.728953', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1568, 250680, 2, 249098, '350429000000', '泰宁县', '福建,三明,泰宁', '117.175740', '26.900259', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1569, 250809, 2, 249098, '350430000000', '建宁县', '福建,三明,建宁', '116.846084', '26.830902', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1570, 250920, 2, 249098, '350481000000', '永安市', '福建,三明,永安', '117.365053', '25.941937', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1571, 251198, 2, 251197, '350501000000', '市辖区', '福建,泉州', '118.675675', '24.874132', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1572, 251199, 2, 251197, '350502000000', '鲤城区', '福建,泉州,鲤城', '118.586884', '24.907581', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1573, 251289, 2, 251197, '350503000000', '丰泽区', '福建,泉州,丰泽', '118.613173', '24.891173', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1574, 251376, 2, 251197, '350504000000', '洛江区', '福建,泉州,洛江', '118.671193', '24.939796', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1575, 251470, 2, 251197, '350505000000', '泉港区', '福建,泉州,泉港', '118.916309', '25.119815', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1576, 251580, 2, 251197, '350521000000', '惠安县', '福建,泉州,惠安', '118.796605', '25.030781', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1577, 251897, 2, 251197, '350524000000', '安溪县', '福建,泉州,安溪', '118.186289', '25.055955', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1578, 252406, 2, 251197, '350525000000', '永春县', '福建,泉州,永春', '118.294048', '25.321565', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1579, 252665, 2, 251197, '350526000000', '德化县', '福建,泉州,德化', '118.241094', '25.491494', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1580, 252894, 2, 251197, '350527000000', '金门县', '福建,泉州,金门', '118.317089', '24.432706', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1581, 252895, 2, 251197, '350581000000', '石狮市', '福建,泉州,石狮', '118.648066', '24.732204', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1582, 253032, 2, 251197, '350582000000', '晋江市', '福建,泉州,晋江', '118.552365', '24.781681', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1583, 253454, 2, 251197, '350583000000', '南安市', '福建,泉州,南安', '118.386279', '24.960385', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1584, 253906, 2, 253905, '350601000000', '市辖区', '福建,漳州', '117.647481', '24.512948', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1585, 253907, 2, 253905, '350602000000', '芗城区', '福建,漳州,芗城', '117.653975', '24.510900', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1586, 254093, 2, 253905, '350603000000', '龙文区', '福建,漳州,龙文', '117.709755', '24.503113', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1587, 254170, 2, 253905, '350622000000', '云霄县', '福建,漳州,云霄', '117.339573', '23.957936', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1588, 254394, 2, 253905, '350623000000', '漳浦县', '福建,漳州,漳浦', '117.613808', '24.117102', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1589, 254747, 2, 253905, '350624000000', '诏安县', '福建,漳州,诏安', '117.175185', '23.711579', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1590, 255011, 2, 253905, '350625000000', '长泰县', '福建,漳州,长泰', '117.759153', '24.625449', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1591, 255105, 2, 253905, '350626000000', '东山县', '福建,漳州,东山', '117.430061', '23.701262', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1592, 255190, 2, 253905, '350627000000', '南靖县', '福建,漳州,南靖', '117.357321', '24.514654', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1593, 255405, 2, 253905, '350628000000', '平和县', '福建,漳州,平和', '117.314891', '24.363437', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1594, 255680, 2, 253905, '350629000000', '华安县', '福建,漳州,华安', '117.534103', '25.004425', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1595, 255789, 2, 253905, '350681000000', '龙海市', '福建,漳州,龙海', '117.818197', '24.446706', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1596, 256113, 2, 256112, '350701000000', '市辖区', '福建,南平', '118.177708', '26.641768', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1597, 256114, 2, 256112, '350702000000', '延平区', '福建,南平,延平', '118.181894', '26.637457', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1598, 256452, 2, 256112, '350703000000', '建阳区', '福建,南平,建阳', '118.120464', '27.331876', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1599, 256687, 2, 256112, '350721000000', '顺昌县', '福建,南平,顺昌', '117.810357', '26.793288', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1600, 256849, 2, 256112, '350722000000', '浦城县', '福建,南平,浦城', '118.541256', '27.917263', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1601, 257172, 2, 256112, '350723000000', '光泽县', '福建,南平,光泽', '117.334106', '27.540988', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1602, 257276, 2, 256112, '350724000000', '松溪县', '福建,南平,松溪', '118.785468', '27.526232', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1603, 257395, 2, 256112, '350725000000', '政和县', '福建,南平,政和', '118.857642', '27.366104', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1604, 257539, 2, 256112, '350781000000', '邵武市', '福建,南平,邵武', '117.492534', '27.340327', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1605, 257733, 2, 256112, '350782000000', '武夷山市', '福建,南平,武夷山', '118.035310', '27.756648', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1606, 257886, 2, 256112, '350783000000', '建瓯市', '福建,南平,建瓯', '118.304988', '27.022727', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1607, 258161, 2, 258160, '350801000000', '市辖区', '福建,龙岩', '117.017536', '25.075123', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1608, 258162, 2, 258160, '350802000000', '新罗区', '福建,龙岩,新罗', '117.037264', '25.098292', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1609, 258520, 2, 258160, '350803000000', '永定区', '福建,龙岩,永定', '116.732092', '24.723962', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1610, 258825, 2, 258160, '350821000000', '长汀县', '福建,龙岩,长汀', '116.357581', '25.833531', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1611, 259144, 2, 258160, '350823000000', '上杭县', '福建,龙岩,上杭', '116.420099', '25.049518', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1612, 259512, 2, 258160, '350824000000', '武平县', '福建,龙岩,武平', '116.100342', '25.095277', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1613, 259749, 2, 258160, '350825000000', '连城县', '福建,龙岩,连城', '116.754473', '25.710539', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1614, 260014, 2, 258160, '350881000000', '漳平市', '福建,龙岩,漳平', '117.419998', '25.290185', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1615, 260231, 2, 260230, '350901000000', '市辖区', '福建,宁德', '119.547932', '26.665617', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1616, 260232, 2, 260230, '350902000000', '蕉城区', '福建,宁德,蕉城', '119.526299', '26.660611', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1617, 260575, 2, 260230, '350921000000', '霞浦县', '福建,宁德,霞浦', '120.005643', '26.885204', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1618, 260905, 2, 260230, '350922000000', '古田县', '福建,宁德,古田', '118.746284', '26.577837', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1619, 261211, 2, 260230, '350923000000', '屏南县', '福建,宁德,屏南', '118.985895', '26.908276', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1620, 261382, 2, 260230, '350924000000', '寿宁县', '福建,宁德,寿宁', '119.514987', '27.454479', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1621, 261602, 2, 260230, '350925000000', '周宁县', '福建,宁德,周宁', '119.339025', '27.104591', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1622, 261759, 2, 260230, '350926000000', '柘荣县', '福建,宁德,柘荣', '119.900609', '27.233933', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1623, 261885, 2, 260230, '350981000000', '福安市', '福建,宁德,福安', '119.647770', '27.088049', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1624, 262395, 2, 260230, '350982000000', '福鼎市', '福建,宁德,福鼎', '120.216978', '27.324479', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1625, 262700, 2, 262699, '360101000000', '市辖区', '江西,南昌', '115.858197', '28.682892', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1626, 262701, 2, 262699, '360102000000', '东湖区', '江西,南昌,东湖', '115.899262', '28.685085', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1627, 262889, 2, 262699, '360103000000', '西湖区', '江西,南昌,西湖', '115.877233', '28.657595', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1628, 263058, 2, 262699, '360104000000', '青云谱区', '江西,南昌,青云谱', '115.925749', '28.621169', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1629, 263152, 2, 262699, '360105000000', '湾里区', '江西,南昌,湾里', '115.730847', '28.714796', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1630, 263217, 2, 262699, '360111000000', '青山湖区', '江西,南昌,青山湖', '115.962144', '28.682985', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1631, 263496, 2, 262699, '360112000000', '新建区', '江西,南昌,新建', '115.815278', '28.692864', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1632, 263948, 2, 262699, '360121000000', '南昌县', '江西,南昌,南昌', '115.944304', '28.545602', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1633, 264375, 2, 262699, '360123000000', '安义县', '江西,南昌,安义', '115.549247', '28.844507', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1634, 264517, 2, 262699, '360124000000', '进贤县', '江西,南昌,进贤', '116.240924', '28.376918', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1635, 264863, 2, 264862, '360201000000', '市辖区', '江西,景德镇', '117.178419', '29.268835', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1636, 264864, 2, 264862, '360202000000', '昌江区', '江西,景德镇,昌江', '117.183748', '29.273435', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1637, 264962, 2, 264862, '360203000000', '珠山区', '江西,景德镇,珠山', '117.202893', '29.299923', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1638, 265083, 2, 264862, '360222000000', '浮梁县', '江西,景德镇,浮梁', '117.215086', '29.351681', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1639, 265297, 2, 264862, '360281000000', '乐平市', '江西,景德镇,乐平', '117.151796', '28.978440', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1640, 265678, 2, 265677, '360301000000', '市辖区', '江西,萍乡', '113.854556', '27.622768', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1641, 265679, 2, 265677, '360302000000', '安源区', '江西,萍乡,安源', '113.870730', '27.615202', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1642, 265826, 2, 265677, '360313000000', '湘东区', '江西,萍乡,湘东', '113.733047', '27.640075', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1643, 265994, 2, 265677, '360321000000', '莲花县', '江西,萍乡,莲花', '113.961465', '27.127669', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1644, 266171, 2, 265677, '360322000000', '上栗县', '江西,萍乡,上栗', '113.795311', '27.880302', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1645, 266356, 2, 265677, '360323000000', '芦溪县', '江西,萍乡,芦溪', '114.029828', '27.630806', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1646, 266522, 2, 266521, '360401000000', '市辖区', '江西,九江', '116.001930', '29.705077', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1647, 266523, 2, 266521, '360402000000', '濂溪区', '江西,九江,濂溪', '116.011380', '29.678540', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1648, 266665, 2, 266521, '360403000000', '浔阳区', '江西,九江,浔阳', '115.990301', '29.727593', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1649, 266781, 2, 266521, '360421000000', '九江县', '江西,九江,九江', '115.911323', '29.608431', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1650, 266946, 2, 266521, '360423000000', '武宁县', '江西,九江,武宁', '115.100578', '29.256323', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1651, 267168, 2, 266521, '360424000000', '修水县', '江西,九江,修水', '114.546702', '29.026022', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1652, 267613, 2, 266521, '360425000000', '永修县', '江西,九江,永修', '115.832453', '29.012297', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1653, 267868, 2, 266521, '360426000000', '德安县', '江西,九江,德安', '115.767484', '29.298738', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1654, 267982, 2, 266521, '360428000000', '都昌县', '江西,九江,都昌', '116.204099', '29.273194', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1655, 268318, 2, 266521, '360429000000', '湖口县', '江西,九江,湖口', '116.251947', '29.731101', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1656, 268480, 2, 266521, '360430000000', '彭泽县', '江西,九江,彭泽', '116.549359', '29.896061', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1657, 268689, 2, 266521, '360481000000', '瑞昌市', '江西,九江,瑞昌', '115.681337', '29.675874', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1658, 268926, 2, 266521, '360482000000', '共青城市', '江西,九江,共青城', '115.808844', '29.248317', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1659, 268995, 2, 266521, '360483000000', '庐山市', '江西,九江,庐山', '116.045060', '29.448128', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1660, 269108, 2, 269107, '360501000000', '市辖区', '江西,新余', '114.917346', '27.817808', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1661, 269109, 2, 269107, '360502000000', '渝水区', '江西,新余,渝水', '114.944646', '27.800387', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1662, 269465, 2, 269107, '360521000000', '分宜县', '江西,新余,分宜', '114.692050', '27.814758', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1663, 269655, 2, 269654, '360601000000', '市辖区', '江西,鹰潭', '117.069202', '28.260189', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1664, 269656, 2, 269654, '360602000000', '月湖区', '江西,鹰潭,月湖', '117.037137', '28.239153', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1665, 269746, 2, 269654, '360622000000', '余江县', '江西,鹰潭,余江', '116.822763', '28.206177', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1666, 269942, 2, 269654, '360681000000', '贵溪市', '江西,鹰潭,贵溪', '117.245497', '28.292519', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1667, 270223, 2, 270222, '360701000000', '市辖区', '江西,赣州', '114.935029', '25.831829', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1668, 270224, 2, 270222, '360702000000', '章贡区', '江西,赣州,章贡', '114.921171', '25.817816', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1669, 270442, 2, 270222, '360703000000', '南康区', '江西,赣州,南康', '114.765403', '25.661471', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1670, 270780, 2, 270222, '360721000000', '赣县', '江西,赣州,赣县', '115.011561', '25.860691', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1671, 271095, 2, 270222, '360722000000', '信丰县', '江西,赣州,信丰', '114.922830', '25.386704', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1672, 271410, 2, 270222, '360723000000', '大余县', '江西,赣州,大余', '114.362112', '25.401314', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1673, 271541, 2, 270222, '360724000000', '上犹县', '江西,赣州,上犹', '114.551138', '25.785172', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1674, 271699, 2, 270222, '360725000000', '崇义县', '江西,赣州,崇义', '114.308267', '25.681784', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1675, 271848, 2, 270222, '360726000000', '安远县', '江西,赣州,安远', '115.393922', '25.136927', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1676, 272033, 2, 270222, '360727000000', '龙南县', '江西,赣州,龙南', '114.789873', '24.911069', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1677, 272156, 2, 270222, '360728000000', '定南县', '江西,赣州,定南', '115.027845', '24.784410', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1678, 272302, 2, 270222, '360729000000', '全南县', '江西,赣州,全南', '114.530125', '24.742403', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1679, 272408, 2, 270222, '360730000000', '宁都县', '江西,赣州,宁都', '116.009472', '26.470116', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1680, 272767, 2, 270222, '360731000000', '于都县', '江西,赣州,于都', '115.415508', '25.952069', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1681, 273183, 2, 270222, '360732000000', '兴国县', '江西,赣州,兴国', '115.363190', '26.337937', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1682, 273525, 2, 270222, '360733000000', '会昌县', '江西,赣州,会昌', '115.786057', '25.600272', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1683, 273820, 2, 270222, '360734000000', '寻乌县', '江西,赣州,寻乌', '115.646636', '24.963371', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1684, 274020, 2, 270222, '360735000000', '石城县', '江西,赣州,石城', '116.346995', '26.314775', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1685, 274184, 2, 270222, '360781000000', '瑞金市', '江西,赣州,瑞金', '116.027135', '25.885555', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1686, 274445, 2, 274444, '360801000000', '市辖区', '江西,吉安', '114.992509', '27.113443', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1687, 274446, 2, 274444, '360802000000', '吉州区', '江西,吉安,吉州', '114.994764', '27.143801', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1688, 274592, 2, 274444, '360803000000', '青原区', '江西,吉安,青原', '115.014812', '27.081977', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1689, 274736, 2, 274444, '360821000000', '吉安县', '江西,吉安,吉安', '114.907733', '27.039890', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1690, 275105, 2, 274444, '360822000000', '吉水县', '江西,吉安,吉水', '115.135507', '27.229632', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1691, 275406, 2, 274444, '360823000000', '峡江县', '江西,吉安,峡江', '115.316566', '27.582901', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1692, 275511, 2, 274444, '360824000000', '新干县', '江西,吉安,新干', '115.387052', '27.740192', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1693, 275694, 2, 274444, '360825000000', '永丰县', '江西,吉安,永丰', '115.444320', '27.318852', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1694, 275956, 2, 274444, '360826000000', '泰和县', '江西,吉安,泰和', '114.908869', '26.789960', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1695, 276331, 2, 274444, '360827000000', '遂川县', '江西,吉安,遂川', '114.520537', '26.313737', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1696, 276700, 2, 274444, '360828000000', '万安县', '江西,吉安,万安', '114.786182', '26.458254', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1697, 276874, 2, 274444, '360829000000', '安福县', '江西,吉安,安福', '114.619893', '27.392874', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1698, 277170, 2, 274444, '360830000000', '永新县', '江西,吉安,永新', '114.243096', '26.945002', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1699, 277459, 2, 274444, '360881000000', '井冈山市', '江西,吉安,井冈山', '114.289228', '26.748081', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1700, 277616, 2, 277615, '360901000000', '市辖区', '江西,宜春', '114.416778', '27.815619', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1701, 277617, 2, 277615, '360902000000', '袁州区', '江西,宜春,袁州', '114.424657', '27.798846', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1702, 278033, 2, 277615, '360921000000', '奉新县', '江西,宜春,奉新', '115.400491', '28.688423', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1703, 278249, 2, 277615, '360922000000', '万载县', '江西,宜春,万载', '114.445523', '28.106004', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1704, 278471, 2, 277615, '360923000000', '上高县', '江西,宜春,上高', '114.947594', '28.238509', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1705, 278710, 2, 277615, '360924000000', '宜丰县', '江西,宜春,宜丰', '114.803515', '28.393666', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1706, 278975, 2, 277615, '360925000000', '靖安县', '江西,宜春,靖安', '115.362629', '28.861479', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1707, 279095, 2, 277615, '360926000000', '铜鼓县', '江西,宜春,铜鼓', '114.371172', '28.520770', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1708, 279220, 2, 277615, '360981000000', '丰城市', '江西,宜春,丰城', '115.771094', '28.159142', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1709, 279845, 2, 277615, '360982000000', '樟树市', '江西,宜春,樟树', '115.546385', '28.054814', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1710, 280166, 2, 277615, '360983000000', '高安市', '江西,宜春,高安', '115.375616', '28.417255', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1711, 280563, 2, 280562, '361001000000', '市辖区', '江西,抚州', '116.358181', '27.949217', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1712, 280564, 2, 280562, '361002000000', '临川区', '江西,抚州,临川', '116.312167', '27.934573', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1713, 281098, 2, 280562, '361021000000', '南城县', '江西,抚州,南城', '116.637040', '27.569678', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1714, 281285, 2, 280562, '361022000000', '黎川县', '江西,抚州,黎川', '116.907681', '27.282333', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1715, 281443, 2, 280562, '361023000000', '南丰县', '江西,抚州,南丰', '116.525725', '27.218445', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1716, 281641, 2, 280562, '361024000000', '崇仁县', '江西,抚州,崇仁', '116.061101', '27.764394', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1717, 281827, 2, 280562, '361025000000', '乐安县', '江西,抚州,乐安', '115.830481', '27.428765', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1718, 282036, 2, 280562, '361026000000', '宜黄县', '江西,抚州,宜黄', '116.222128', '27.546146', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1719, 282206, 2, 280562, '361027000000', '金溪县', '江西,抚州,金溪', '116.755058', '27.918959', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1720, 282391, 2, 280562, '361028000000', '资溪县', '江西,抚州,资溪', '117.060264', '27.706102', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1721, 282482, 2, 280562, '361029000000', '东乡县', '江西,抚州,东乡县', '116.603560', '28.247697', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1722, 282684, 2, 280562, '361030000000', '广昌县', '江西,抚州,广昌', '116.325757', '26.837267', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1723, 282842, 2, 282841, '361101000000', '市辖区', '江西,上饶', '117.943433', '28.454862', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1724, 282843, 2, 282841, '361102000000', '信州区', '江西,上饶,信州', '117.966460', '28.431002', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1725, 282978, 2, 282841, '361103000000', '广丰区', '江西,上饶,广丰', '118.191240', '28.436286', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1726, 283240, 2, 282841, '361121000000', '上饶县', '江西,上饶,上饶', '117.907850', '28.448983', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1727, 283511, 2, 282841, '361123000000', '玉山县', '江西,上饶,玉山', '118.245124', '28.682055', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1728, 283769, 2, 282841, '361124000000', '铅山县', '江西,上饶,铅山', '117.709451', '28.315217', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1729, 283970, 2, 282841, '361125000000', '横峰县', '江西,上饶,横峰', '117.596452', '28.407118', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1730, 284066, 2, 282841, '361126000000', '弋阳县', '江西,上饶,弋阳', '117.449588', '28.378044', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1731, 284239, 2, 282841, '361127000000', '余干县', '江西,上饶,余干', '116.695647', '28.702302', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1732, 284706, 2, 282841, '361128000000', '鄱阳县', '江西,上饶,鄱阳', '116.699746', '29.011699', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1733, 285319, 2, 282841, '361129000000', '万年县', '江西,上饶,万年', '117.058445', '28.694582', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1734, 285488, 2, 282841, '361130000000', '婺源县', '江西,上饶,婺源', '117.861798', '29.248086', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1735, 285711, 2, 282841, '361181000000', '德兴市', '江西,上饶,德兴', '117.578713', '28.946464', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1736, 285862, 2, 285861, '370101000000', '市辖区', '山东,济南', '117.119999', '36.651216', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1737, 285863, 2, 285861, '370102000000', '历下区', '山东,济南,历下', '117.076455', '36.666412', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1738, 285991, 2, 285861, '370103000000', '市中区', '山东,济南,市中', '116.997777', '36.651474', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1739, 286215, 2, 285861, '370104000000', '槐荫区', '山东,济南,槐荫', '116.901224', '36.651441', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1740, 286404, 2, 285861, '370105000000', '天桥区', '山东,济南,天桥', '116.987492', '36.678016', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1741, 286683, 2, 285861, '370112000000', '历城区', '山东,济南,历城', '117.065237', '36.680017', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1742, 287424, 2, 285861, '370113000000', '长清区', '山东,济南,长清', '116.751937', '36.553571', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1743, 288084, 2, 285861, '370124000000', '平阴县', '山东,济南,平阴', '116.456187', '36.289265', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1744, 288448, 2, 285861, '370125000000', '济阳县', '山东,济南,济阳', '117.173525', '36.978537', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1745, 289313, 2, 285861, '370126000000', '商河县', '山东,济南,商河', '117.157183', '37.309045', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1746, 290291, 2, 285861, '370181000000', '章丘市', '山东,济南,章丘', '117.526228', '36.681259', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1747, 291236, 2, 291235, '370201000000', '市辖区', '山东,青岛', '120.382639', '36.067082', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1748, 291237, 2, 291235, '370202000000', '市南区', '山东,青岛,市南', '120.412392', '36.075651', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1749, 291313, 2, 291235, '370203000000', '市北区', '山东,青岛,市北', '120.374731', '36.087609', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1750, 291468, 2, 291235, '370211000000', '黄岛区', '山东,青岛,黄岛', '120.046190', '35.872664', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1751, 292713, 2, 291235, '370212000000', '崂山区', '山东,青岛,崂山', '120.468956', '36.107538', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1752, 292879, 2, 291235, '370213000000', '李沧区', '山东,青岛,李沧', '120.432697', '36.145463', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1753, 293008, 2, 291235, '370214000000', '城阳区', '山东,青岛,城阳', '120.396310', '36.307064', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1754, 293241, 2, 291235, '370281000000', '胶州市', '山东,青岛,胶州', '120.033382', '36.264680', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1755, 294138, 2, 291235, '370282000000', '即墨市', '山东,青岛,即墨', '120.447128', '36.389639', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1756, 295251, 2, 291235, '370283000000', '平度市', '山东,青岛,平度', '119.988420', '36.776358', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1757, 297121, 2, 291235, '370285000000', '莱西市', '山东,青岛,莱西', '120.517690', '36.889084', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1758, 298026, 2, 298025, '370301000000', '市辖区', '山东,淄博', '118.054927', '36.813487', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1759, 298027, 2, 298025, '370302000000', '淄川区', '山东,淄博,淄川', '117.966723', '36.643452', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1760, 298507, 2, 298025, '370303000000', '张店区', '山东,淄博,张店', '118.017913', '36.806674', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1761, 298821, 2, 298025, '370304000000', '博山区', '山东,淄博,博山', '117.861677', '36.494721', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1762, 299159, 2, 298025, '370305000000', '临淄区', '山东,淄博,临淄', '118.309118', '36.826981', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1763, 299652, 2, 298025, '370306000000', '周村区', '山东,淄博,周村', '117.869886', '36.803072', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1764, 299919, 2, 298025, '370321000000', '桓台县', '山东,淄博,桓台', '118.097923', '36.959804', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1765, 300276, 2, 298025, '370322000000', '高青县', '山东,淄博,高青', '117.826916', '37.171063', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1766, 301056, 2, 298025, '370323000000', '沂源县', '山东,淄博,沂源', '118.170856', '36.185038', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1767, 301712, 2, 301711, '370401000000', '市辖区', '山东,枣庄', '117.323725', '34.810487', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1768, 301713, 2, 301711, '370402000000', '市中区', '山东,枣庄,市中', '117.556123', '34.864114', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1769, 301888, 2, 301711, '370403000000', '薛城区', '山东,枣庄,薛城', '117.263164', '34.795063', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1770, 302179, 2, 301711, '370404000000', '峄城区', '山东,枣庄,峄城', '117.590816', '34.773263', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1771, 302532, 2, 301711, '370405000000', '台儿庄区', '山东,枣庄,台儿庄', '117.733832', '34.562528', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1772, 302750, 2, 301711, '370406000000', '山亭区', '山东,枣庄,山亭', '117.461517', '35.099528', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1773, 303037, 2, 301711, '370481000000', '滕州市', '山东,枣庄,滕州', '117.165824', '35.114156', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1774, 304310, 2, 304309, '370501000000', '市辖区', '山东,东营', '118.674767', '37.434751', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1775, 304311, 2, 304309, '370502000000', '东营区', '山东,东营,东营', '118.582184', '37.448963', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1776, 304647, 2, 304309, '370503000000', '河口区', '山东,东营,河口', '118.525543', '37.886162', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1777, 304845, 2, 304309, '370505000000', '垦利区', '山东,东营,垦利', '118.674767', '37.434751', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1778, 305208, 2, 304309, '370522000000', '利津县', '山东,东营,利津', '118.255273', '37.490260', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1779, 305747, 2, 304309, '370523000000', '广饶县', '山东,东营,广饶', '118.407107', '37.053555', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1780, 306340, 2, 306339, '370601000000', '市辖区', '山东,烟台', '121.447935', '37.463822', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1781, 306341, 2, 306339, '370602000000', '芝罘区', '山东,烟台,芝罘', '121.400031', '37.540687', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1782, 306496, 2, 306339, '370611000000', '福山区', '山东,烟台,福山', '121.267741', '37.498246', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1783, 306743, 2, 306339, '370612000000', '牟平区', '山东,烟台,牟平', '121.600512', '37.386901', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1784, 307348, 2, 306339, '370613000000', '莱山区', '山东,烟台,莱山', '121.445151', '37.511361', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1785, 307481, 2, 306339, '370634000000', '长岛县', '山东,烟台,长岛', '120.736580', '37.921368', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1786, 307530, 2, 306339, '370681000000', '龙口市', '山东,烟台,龙口', '120.477813', '37.646108', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1787, 308140, 2, 306339, '370682000000', '莱阳市', '山东,烟台,莱阳', '120.711673', '36.978941', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1788, 308953, 2, 306339, '370683000000', '莱州市', '山东,烟台,莱州', '119.942327', '37.177017', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1789, 309985, 2, 306339, '370684000000', '蓬莱市', '山东,烟台,蓬莱', '120.758848', '37.810661', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1790, 310581, 2, 306339, '370685000000', '招远市', '山东,烟台,招远', '120.434072', '37.355469', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1791, 311342, 2, 306339, '370686000000', '栖霞市', '山东,烟台,栖霞', '120.849675', '37.335123', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1792, 312312, 2, 306339, '370687000000', '海阳市', '山东,烟台,海阳', '121.158434', '36.776378', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1793, 313064, 2, 313063, '370701000000', '市辖区', '山东,潍坊', '119.161755', '36.706774', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1794, 313065, 2, 313063, '370702000000', '潍城区', '山东,潍坊,潍城', '119.024836', '36.728100', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1795, 313327, 2, 313063, '370703000000', '寒亭区', '山东,潍坊,寒亭', '119.219734', '36.775491', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1796, 313701, 2, 313063, '370704000000', '坊子区', '山东,潍坊,坊子', '119.166485', '36.654448', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1797, 314288, 2, 313063, '370705000000', '奎文区', '山东,潍坊,奎文', '119.132486', '36.707676', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1798, 314533, 2, 313063, '370724000000', '临朐县', '山东,潍坊,临朐', '118.542982', '36.512506', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1799, 314894, 2, 313063, '370725000000', '昌乐县', '山东,潍坊,昌乐', '118.829914', '36.706945', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1800, 315273, 2, 313063, '370781000000', '青州市', '山东,潍坊,青州', '118.479636', '36.684600', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1801, 316361, 2, 313063, '370782000000', '诸城市', '山东,潍坊,诸城', '119.410103', '35.995654', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1802, 316642, 2, 313063, '370783000000', '寿光市', '山东,潍坊,寿光', '118.790652', '36.855480', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1803, 317633, 2, 313063, '370784000000', '安丘市', '山东,潍坊,安丘', '119.218978', '36.478494', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1804, 318512, 2, 313063, '370785000000', '高密市', '山东,潍坊,高密', '119.755597', '36.382595', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1805, 319478, 2, 313063, '370786000000', '昌邑市', '山东,潍坊,昌邑', '119.398525', '36.858820', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1806, 320180, 2, 320179, '370801000000', '市辖区', '山东,济宁', '116.587098', '35.414921', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1807, 320181, 2, 320179, '370811000000', '任城区', '山东,济宁,任城', '116.595050', '35.406596', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1808, 320795, 2, 320179, '370812000000', '兖州区', '山东,济宁,兖州', '116.783834', '35.553144', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1809, 321246, 2, 320179, '370826000000', '微山县', '山东,济宁,微山', '117.128828', '34.806554', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1810, 321804, 2, 320179, '370827000000', '鱼台县', '山东,济宁,鱼台', '116.650608', '35.012749', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1811, 322209, 2, 320179, '370828000000', '金乡县', '山东,济宁,金乡', '116.311532', '35.066620', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1812, 322882, 2, 320179, '370829000000', '嘉祥县', '山东,济宁,嘉祥', '116.342442', '35.407829', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1813, 323607, 2, 320179, '370830000000', '汶上县', '山东,济宁,汶上', '116.489043', '35.732799', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1814, 324118, 2, 320179, '370831000000', '泗水县', '山东,济宁,泗水', '117.251195', '35.664323', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1815, 324729, 2, 320179, '370832000000', '梁山县', '山东,济宁,梁山', '116.096044', '35.802306', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1816, 325372, 2, 320179, '370881000000', '曲阜市', '山东,济宁,曲阜', '116.986503', '35.580996', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1817, 325791, 2, 320179, '370883000000', '邹城市', '山东,济宁,邹城', '117.003743', '35.405185', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1818, 326707, 2, 326706, '370901000000', '市辖区', '山东,泰安', '117.087614', '36.200252', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1819, 326708, 2, 326706, '370902000000', '泰山区', '山东,泰安,泰山', '117.135354', '36.192084', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1820, 326926, 2, 326706, '370911000000', '岱岳区', '山东,泰安,岱岳', '117.041582', '36.187990', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1821, 327655, 2, 326706, '370921000000', '宁阳县', '山东,泰安,宁阳', '116.805797', '35.758787', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1822, 328231, 2, 326706, '370923000000', '东平县', '山东,泰安,东平', '116.470304', '35.937102', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1823, 328962, 2, 326706, '370982000000', '新泰市', '山东,泰安,新泰', '117.767953', '35.909032', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1824, 329897, 2, 326706, '370983000000', '肥城市', '山东,泰安,肥城', '116.768358', '36.182572', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1825, 330548, 2, 330547, '371001000000', '市辖区', '山东,威海', '122.120419', '37.513068', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1826, 330549, 2, 330547, '371002000000', '环翠区', '山东,威海,环翠', '122.123444', '37.501991', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1827, 330748, 2, 330547, '371003000000', '文登区', '山东,威海,文登', '122.057941', '37.193886', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1828, 331529, 2, 330547, '371082000000', '荣成市', '山东,威海,荣成', '122.486658', '37.165160', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1829, 332496, 2, 330547, '371083000000', '乳山市', '山东,威海,乳山', '121.539765', '36.919816', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1830, 333141, 2, 333140, '371101000000', '市辖区', '山东,日照', '119.526888', '35.416377', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1831, 333142, 2, 333140, '371102000000', '东港区', '山东,日照,东港', '119.462228', '35.425475', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1832, 333755, 2, 333140, '371103000000', '岚山区', '山东,日照,岚山', '119.318929', '35.121884', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1833, 334188, 2, 333140, '371121000000', '五莲县', '山东,日照,五莲', '119.206763', '35.751927', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1834, 334833, 2, 333140, '371122000000', '莒县', '山东,日照,莒县', '118.837064', '35.579868', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1835, 336051, 2, 336050, '371201000000', '市辖区', '山东,莱芜', '117.676723', '36.213813', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1836, 336052, 2, 336050, '371202000000', '莱城区', '山东,莱芜,莱城', '117.659884', '36.203180', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1837, 336908, 2, 336050, '371203000000', '钢城区', '山东,莱芜,钢城', '117.811355', '36.058572', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1838, 337145, 2, 337144, '371301000000', '市辖区', '山东,临沂', '118.356448', '35.104672', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1839, 337146, 2, 337144, '371302000000', '兰山区', '山东,临沂,兰山', '118.347731', '35.051734', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1840, 337621, 2, 337144, '371311000000', '罗庄区', '山东,临沂,罗庄', '118.284786', '34.996741', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1841, 337844, 2, 337144, '371312000000', '河东区', '山东,临沂,河东', '118.402893', '35.089917', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1842, 338188, 2, 337144, '371321000000', '沂南县', '山东,临沂,沂南', '118.465213', '35.549976', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1843, 338778, 2, 337144, '371322000000', '郯城县', '山东,临沂,郯城', '118.367263', '34.613557', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1844, 339408, 2, 337144, '371323000000', '沂水县', '山东,临沂,沂水', '118.627918', '35.790450', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1845, 340490, 2, 337144, '371324000000', '兰陵县', '山东,临沂,兰陵', '118.070650', '34.857149', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1846, 341532, 2, 337144, '371325000000', '费县', '山东,临沂,费县', '117.977325', '35.265961', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1847, 342020, 2, 337144, '371326000000', '平邑县', '山东,临沂,平邑', '117.640352', '35.505943', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1848, 342766, 2, 337144, '371327000000', '莒南县', '山东,临沂,莒南', '118.835163', '35.174846', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1849, 343361, 2, 337144, '371328000000', '蒙阴县', '山东,临沂,蒙阴', '117.945085', '35.710032', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1850, 343836, 2, 337144, '371329000000', '临沭县', '山东,临沂,临沭', '118.650782', '34.919852', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1851, 344134, 2, 344133, '371401000000', '市辖区', '山东,德州', '116.357464', '37.434092', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1852, 344135, 2, 344133, '371402000000', '德城区', '山东,德州,德城', '116.299471', '37.450805', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1853, 344244, 2, 344133, '371403000000', '陵城区', '山东,德州,陵城', '116.576092', '37.335794', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1854, 345248, 2, 344133, '371422000000', '宁津县', '山东,德州,宁津', '116.800306', '37.652190', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1855, 346117, 2, 344133, '371423000000', '庆云县', '山东,德州,庆云', '117.385257', '37.775350', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1856, 346518, 2, 344133, '371424000000', '临邑县', '山东,德州,临邑', '116.866800', '37.189798', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1857, 346715, 2, 344133, '371425000000', '齐河县', '山东,德州,齐河', '116.762810', '36.783415', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1858, 347749, 2, 344133, '371426000000', '平原县', '山东,德州,平原', '116.434056', '37.165314', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1859, 347943, 2, 344133, '371427000000', '夏津县', '山东,德州,夏津', '116.001726', '36.948371', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1860, 348268, 2, 344133, '371428000000', '武城县', '山东,德州,武城', '116.069302', '37.213311', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1861, 348472, 2, 344133, '371481000000', '乐陵市', '山东,德州,乐陵', '117.231935', '37.729907', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1862, 348980, 2, 344133, '371482000000', '禹城市', '山东,德州,禹城', '116.638327', '36.933812', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1863, 349383, 2, 349382, '371501000000', '市辖区', '山东,聊城', '115.985371', '36.456703', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1864, 349384, 2, 349382, '371502000000', '东昌府区', '山东,聊城,东昌府', '115.988491', '36.434645', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1865, 350543, 2, 349382, '371521000000', '阳谷县', '山东,聊城,阳谷', '115.791820', '36.114392', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1866, 351436, 2, 349382, '371522000000', '莘县', '山东,聊城,莘县', '115.671191', '36.233598', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1867, 352587, 2, 349382, '371523000000', '茌平县', '山东,聊城,茌平', '115.985371', '36.456703', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1868, 353334, 2, 349382, '371524000000', '东阿县', '山东,聊城,东阿', '116.247580', '36.334917', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1869, 353863, 2, 349382, '371525000000', '冠县', '山东,聊城,冠县', '115.442740', '36.484009', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1870, 354643, 2, 349382, '371526000000', '高唐县', '山东,聊城,高唐', '116.230158', '36.846755', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1871, 355301, 2, 349382, '371581000000', '临清市', '山东,聊城,临清', '115.704881', '36.838277', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1872, 355973, 2, 355972, '371601000000', '市辖区', '山东,滨州', '117.970703', '37.381990', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1873, 355974, 2, 355972, '371602000000', '滨城区', '山东,滨州,滨城', '118.019326', '37.430724', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1874, 356960, 2, 355972, '371603000000', '沾化区', '山东,滨州,沾化', '118.098902', '37.699260', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1875, 357420, 2, 355972, '371621000000', '惠民县', '山东,滨州,惠民', '117.509921', '37.489877', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1876, 358556, 2, 355972, '371622000000', '阳信县', '山东,滨州,阳信', '117.578262', '37.641106', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1877, 359424, 2, 355972, '371623000000', '无棣县', '山东,滨州,无棣', '117.625696', '37.770260', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1878, 360038, 2, 355972, '371625000000', '博兴县', '山东,滨州,博兴', '118.131815', '37.150226', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1879, 360507, 2, 355972, '371626000000', '邹平县', '山东,滨州,邹平', '117.743109', '36.862989', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1880, 361376, 2, 361375, '371701000000', '市辖区', '山东,菏泽', '115.480656', '35.233750', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1881, 361377, 2, 361375, '371702000000', '牡丹区', '山东,菏泽,牡丹', '115.417827', '35.252512', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1882, 361988, 2, 361375, '371703000000', '定陶区', '山东,菏泽,定陶', '115.569619', '35.072701', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1883, 362368, 2, 361375, '371721000000', '曹县', '山东,菏泽,曹县', '115.542328', '34.825508', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1884, 363576, 2, 361375, '371722000000', '单县', '山东,菏泽,单县', '116.107428', '34.778808', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1885, 364107, 2, 361375, '371723000000', '成武县', '山东,菏泽,成武', '115.889765', '34.952459', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1886, 364606, 2, 361375, '371724000000', '巨野县', '山东,菏泽,巨野', '116.065396', '35.387374', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1887, 365498, 2, 361375, '371725000000', '郓城县', '山东,菏泽,郓城', '115.943613', '35.599758', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1888, 366562, 2, 361375, '371726000000', '鄄城县', '山东,菏泽,鄄城', '115.510193', '35.563408', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1889, 366971, 2, 361375, '371728000000', '东明县', '山东,菏泽,东明', '115.089905', '35.289368', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1890, 367397, 2, 367396, '410101000000', '市辖区', '河南,郑州', '113.625368', '34.746599', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1891, 367398, 2, 367396, '410102000000', '中原区', '河南,郑州,中原', '113.612850', '34.748257', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1892, 367563, 2, 367396, '410103000000', '二七区', '河南,郑州,二七', '113.640179', '34.723930', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1893, 367741, 2, 367396, '410104000000', '管城回族区', '河南,郑州,管城', '113.625368', '34.746599', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1894, 367877, 2, 367396, '410105000000', '金水区', '河南,郑州,金水', '113.660555', '34.800156', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1895, 368151, 2, 367396, '410106000000', '上街区', '河南,郑州,上街', '113.308961', '34.802780', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1896, 368217, 2, 367396, '410108000000', '惠济区', '河南,郑州,惠济', '113.616901', '34.867458', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1897, 368291, 2, 367396, '410122000000', '中牟县', '河南,郑州,中牟', '113.976254', '34.718937', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1898, 368635, 2, 367396, '410181000000', '巩义市', '河南,郑州,巩义', '113.022497', '34.747834', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1899, 368975, 2, 367396, '410182000000', '荥阳市', '河南,郑州,荥阳', '113.383221', '34.787375', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1900, 369293, 2, 367396, '410183000000', '新密市', '河南,郑州,新密', '113.390891', '34.539443', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1901, 369663, 2, 367396, '410184000000', '新郑市', '河南,郑州,新郑', '113.740529', '34.395562', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1902, 369963, 2, 367396, '410185000000', '登封市', '河南,郑州,登封', '113.050492', '34.453667', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1903, 370305, 2, 370304, '410201000000', '市辖区', '河南,开封', '114.307581', '34.797239', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1904, 370306, 2, 370304, '410202000000', '龙亭区', '河南,开封,龙亭', '114.354730', '34.815784', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1905, 370373, 2, 370304, '410203000000', '顺河回族区', '河南,开封,顺河', '114.369716', '34.811344', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1906, 370450, 2, 370304, '410204000000', '鼓楼区', '河南,开封,鼓楼', '114.348307', '34.788561', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1907, 370501, 2, 370304, '410205000000', '禹王台区', '河南,开封,禹王台', '114.348170', '34.777104', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1908, 370557, 2, 370304, '410211000000', '金明区', '河南,开封,金明', '114.307581', '34.797239', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1909, 370634, 2, 370304, '410212000000', '祥符区', '河南,开封,祥符', '114.441327', '34.756921', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1910, 370995, 2, 370304, '410221000000', '杞县', '河南,开封,杞县', '114.783041', '34.549166', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1911, 371618, 2, 370304, '410222000000', '通许县', '河南,开封,通许', '114.467467', '34.480433', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1912, 371942, 2, 370304, '410223000000', '尉氏县', '河南,开封,尉氏', '114.193081', '34.411494', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1913, 372481, 2, 370304, '410225000000', '兰考县', '河南,开封,兰考', '114.821348', '34.822211', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1914, 372972, 2, 372971, '410301000000', '市辖区', '河南,洛阳', '112.454040', '34.619682', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1915, 372973, 2, 372971, '410302000000', '老城区', '河南,洛阳,老城', '112.469024', '34.683646', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1916, 373030, 2, 372971, '410303000000', '西工区', '河南,洛阳,西工', '112.428413', '34.659900', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1917, 373105, 2, 372971, '410304000000', '瀍河回族区', '河南,洛阳,瀍河', '112.479653', '34.714976', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1918, 373143, 2, 372971, '410305000000', '涧西区', '河南,洛阳,涧西', '112.395756', '34.658034', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1919, 373227, 2, 372971, '410306000000', '吉利区', '河南,洛阳,吉利', '112.589052', '34.900889', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1920, 373268, 2, 372971, '410311000000', '洛龙区', '河南,洛阳,洛龙', '112.464173', '34.619404', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1921, 373554, 2, 372971, '410322000000', '孟津县', '河南,洛阳,孟津', '112.445252', '34.825307', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1922, 373799, 2, 372971, '410323000000', '新安县', '河南,洛阳,新安', '112.132488', '34.728584', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1923, 374121, 2, 372971, '410324000000', '栾川县', '河南,洛阳,栾川', '111.615769', '33.785698', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1924, 374349, 2, 372971, '410325000000', '嵩县', '河南,洛阳,嵩县', '112.085634', '34.134517', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1925, 374694, 2, 372971, '410326000000', '汝阳县', '河南,洛阳,汝阳', '112.473139', '34.153940', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1926, 374929, 2, 372971, '410327000000', '宜阳县', '河南,洛阳,宜阳', '112.179238', '34.514645', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1927, 375308, 2, 372971, '410328000000', '洛宁县', '河南,洛阳,洛宁', '111.653039', '34.389414', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1928, 375717, 2, 372971, '410329000000', '伊川县', '河南,洛阳,伊川', '112.425651', '34.421460', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1929, 376105, 2, 372971, '410381000000', '偃师市', '河南,洛阳,偃师', '112.789535', '34.727220', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1930, 376366, 2, 376365, '410401000000', '市辖区', '河南,平顶山', '113.192661', '33.766169', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1931, 376367, 2, 376365, '410402000000', '新华区', '河南,平顶山,新华', '113.293999', '33.737365', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1932, 376442, 2, 376365, '410403000000', '卫东区', '河南,平顶山,卫东', '113.335193', '33.734707', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1933, 376513, 2, 376365, '410404000000', '石龙区', '河南,平顶山,石龙', '112.898818', '33.898713', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1934, 376532, 2, 376365, '410411000000', '湛河区', '河南,平顶山,湛河', '113.320873', '33.725681', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1935, 376643, 2, 376365, '410421000000', '宝丰县', '河南,平顶山,宝丰', '113.054754', '33.868441', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1936, 376984, 2, 376365, '410422000000', '叶县', '河南,平顶山,叶县', '113.357239', '33.626731', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1937, 377555, 2, 376365, '410423000000', '鲁山县', '河南,平顶山,鲁山', '112.908023', '33.738518', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1938, 378139, 2, 376365, '410425000000', '郏县', '河南,平顶山,郏县', '113.212609', '33.971787', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1939, 378532, 2, 376365, '410481000000', '舞钢市', '河南,平顶山,舞钢', '113.524794', '33.307776', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1940, 378764, 2, 376365, '410482000000', '汝州市', '河南,平顶山,汝州', '112.844517', '34.167030', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1941, 379246, 2, 379245, '410501000000', '市辖区', '河南,安阳', '114.392392', '36.097577', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1942, 379247, 2, 379245, '410502000000', '文峰区', '河南,安阳,文峰', '114.357082', '36.090468', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1943, 379400, 2, 379245, '410503000000', '北关区', '河南,安阳,北关', '114.355822', '36.107255', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1944, 379488, 2, 379245, '410505000000', '殷都区', '河南,安阳,殷都', '114.303410', '36.109890', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1945, 379584, 2, 379245, '410506000000', '龙安区', '河南,安阳,龙安', '114.323522', '36.095568', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1946, 379742, 2, 379245, '410522000000', '安阳县', '河南,安阳,安阳', '114.130207', '36.130585', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1947, 380371, 2, 379245, '410523000000', '汤阴县', '河南,安阳,汤阴', '114.357763', '35.924515', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1948, 380688, 2, 379245, '410526000000', '滑县', '河南,安阳,滑县', '114.518997', '35.575002', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1949, 381731, 2, 379245, '410527000000', '内黄县', '河南,安阳,内黄', '114.901492', '35.971653', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1950, 382281, 2, 379245, '410581000000', '林州市', '河南,安阳,林州', '113.820130', '36.083047', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1951, 382879, 2, 382878, '410601000000', '市辖区', '河南,鹤壁', '114.297272', '35.747225', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1952, 382880, 2, 382878, '410602000000', '鹤山区', '河南,鹤壁,鹤山', '114.163367', '35.954582', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1953, 382969, 2, 382878, '410603000000', '山城区', '河南,鹤壁,山城', '114.184428', '35.897703', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1954, 383079, 2, 382878, '410611000000', '淇滨区', '河南,鹤壁,淇滨', '114.298694', '35.741296', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1955, 383228, 2, 382878, '410621000000', '浚县', '河南,鹤壁,浚县', '114.550813', '35.676240', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1956, 383704, 2, 382878, '410622000000', '淇县', '河南,鹤壁,淇县', '114.197651', '35.607762', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1957, 383891, 2, 383890, '410701000000', '市辖区', '河南,新乡', '113.926800', '35.303004', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1958, 383892, 2, 383890, '410702000000', '红旗区', '河南,新乡,红旗', '113.875245', '35.303851', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1959, 383978, 2, 383890, '410703000000', '卫滨区', '河南,新乡,卫滨', '113.865780', '35.302117', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1960, 384041, 2, 383890, '410704000000', '凤泉区', '河南,新乡,凤泉', '113.915184', '35.383978', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1961, 384093, 2, 383890, '410711000000', '牧野区', '河南,新乡,牧野', '113.908772', '35.315039', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1962, 384193, 2, 383890, '410721000000', '新乡县', '河南,新乡,新乡', '113.805205', '35.190836', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1963, 384380, 2, 383890, '410724000000', '获嘉县', '河南,新乡,获嘉', '113.657433', '35.259808', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1964, 384622, 2, 383890, '410725000000', '原阳县', '河南,新乡,原阳', '113.940115', '35.065587', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1965, 385122, 2, 383890, '410726000000', '延津县', '河南,新乡,延津', '114.205197', '35.141956', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1966, 385485, 2, 383890, '410727000000', '封丘县', '河南,新乡,封丘', '114.418882', '35.041198', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1967, 386113, 2, 383890, '410728000000', '长垣县', '河南,新乡,长垣', '114.668936', '35.201548', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1968, 386744, 2, 383890, '410781000000', '卫辉市', '河南,新乡,卫辉', '114.064907', '35.398494', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1969, 387125, 2, 383890, '410782000000', '辉县市', '河南,新乡,辉', '113.926800', '35.303004', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1970, 387708, 2, 387707, '410801000000', '市辖区', '河南,焦作', '113.241823', '35.215892', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1971, 387709, 2, 387707, '410802000000', '解放区', '河南,焦作,解放', '113.230817', '35.240282', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1972, 387776, 2, 387707, '410803000000', '中站区', '河南,焦作,中站', '113.182946', '35.236820', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1973, 387836, 2, 387707, '410804000000', '马村区', '河南,焦作,马村', '113.322332', '35.256108', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1974, 387922, 2, 387707, '410811000000', '山阳区', '河南,焦作,山阳', '113.254881', '35.214507', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1975, 387985, 2, 387707, '410821000000', '修武县', '河南,焦作,修武', '113.447755', '35.223514', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1976, 388187, 2, 387707, '410822000000', '博爱县', '河南,焦作,博爱', '113.064379', '35.171045', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1977, 388415, 2, 387707, '410823000000', '武陟县', '河南,焦作,武陟', '113.401679', '35.099378', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1978, 388783, 2, 387707, '410825000000', '温县', '河南,焦作,温县', '113.080530', '34.940189', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1979, 389064, 2, 387707, '410882000000', '沁阳市', '河南,焦作,沁阳', '112.950716', '35.087539', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1980, 389418, 2, 387707, '410883000000', '孟州市', '河南,焦作,孟州', '112.789612', '34.907970', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1981, 389720, 2, 389719, '410901000000', '市辖区', '河南,濮阳', '115.029215', '35.761829', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1982, 389721, 2, 389719, '410902000000', '华龙区', '河南,濮阳,华龙', '115.074151', '35.777346', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1983, 389884, 2, 389719, '410922000000', '清丰县', '河南,濮阳,清丰', '115.104389', '35.885180', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1984, 390411, 2, 389719, '410923000000', '南乐县', '河南,濮阳,南乐', '115.204752', '36.069664', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1985, 390751, 2, 389719, '410926000000', '范县', '河南,濮阳,范县', '115.504201', '35.851907', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1986, 391345, 2, 389719, '410927000000', '台前县', '河南,濮阳,台前', '115.871906', '35.969390', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1987, 391730, 2, 389719, '410928000000', '濮阳县', '河南,濮阳,濮阳', '115.029078', '35.712193', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1988, 392738, 2, 392737, '411001000000', '市辖区', '河南,许昌', '113.852640', '34.035506', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1989, 392739, 2, 392737, '411002000000', '魏都区', '河南,许昌,魏都', '113.822647', '34.025342', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1990, 392850, 2, 392737, '411023000000', '许昌县', '河南,许昌,许昌', '113.822983', '34.124660', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1991, 393306, 2, 392737, '411024000000', '鄢陵县', '河南,许昌,鄢陵', '114.177400', '34.102332', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1992, 393705, 2, 392737, '411025000000', '襄城县', '河南,许昌,襄城', '113.482453', '33.846369', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1993, 394170, 2, 392737, '411081000000', '禹州市', '河南,许昌,禹州', '113.488478', '34.140701', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1994, 394863, 2, 392737, '411082000000', '长葛市', '河南,许昌,长葛', '113.819888', '34.194136', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1995, 395255, 2, 395254, '411101000000', '市辖区', '河南,漯河', '114.016539', '33.581412', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1996, 395256, 2, 395254, '411102000000', '源汇区', '河南,漯河,源汇', '114.017948', '33.565441', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1997, 395392, 2, 395254, '411103000000', '郾城区', '河南,漯河,郾城', '114.006944', '33.587409', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1998, 395601, 2, 395254, '411104000000', '召陵区', '河南,漯河,召陵', '114.093902', '33.586565', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (1999, 395816, 2, 395254, '411121000000', '舞阳县', '河南,漯河,舞阳', '113.609286', '33.437877', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2000, 396228, 2, 395254, '411122000000', '临颍县', '河南,漯河,临颍', '113.931203', '33.827304', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2001, 396612, 2, 396611, '411201000000', '市辖区', '河南,三门峡', '111.200135', '34.772493', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2002, 396613, 2, 396611, '411202000000', '湖滨区', '河南,三门峡,湖滨', '111.188398', '34.770886', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2003, 396710, 2, 396611, '411203000000', '陕州区', '河南,三门峡,陕州', '111.103563', '34.720548', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2004, 396996, 2, 396611, '411221000000', '渑池县', '河南,三门峡,渑池', '111.761504', '34.767244', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2005, 397257, 2, 396611, '411224000000', '卢氏县', '河南,三门峡,卢氏', '111.047858', '34.054324', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2006, 397644, 2, 396611, '411281000000', '义马市', '河南,三门峡,义马', '111.874393', '34.747129', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2007, 397687, 2, 396611, '411282000000', '灵宝市', '河南,三门峡,灵宝', '110.894220', '34.516828', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2008, 398170, 2, 398169, '411301000000', '市辖区', '河南,南阳', '112.528321', '32.990833', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2009, 398171, 2, 398169, '411302000000', '宛城区', '河南,南阳,宛城', '112.539559', '33.003784', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2010, 398437, 2, 398169, '411303000000', '卧龙区', '河南,南阳,卧龙', '112.528789', '32.989877', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2011, 398747, 2, 398169, '411321000000', '南召县', '河南,南阳,南召', '112.429133', '33.489877', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2012, 399117, 2, 398169, '411322000000', '方城县', '河南,南阳,方城', '113.012494', '33.254391', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2013, 399702, 2, 398169, '411323000000', '西峡县', '河南,南阳,西峡', '111.473530', '33.307294', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2014, 400021, 2, 398169, '411324000000', '镇平县', '河南,南阳,镇平', '112.234698', '33.034111', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2015, 400474, 2, 398169, '411325000000', '内乡县', '河南,南阳,内乡', '111.849392', '33.044865', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2016, 400787, 2, 398169, '411326000000', '淅川县', '河南,南阳,淅川', '111.490964', '33.137820', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2017, 401305, 2, 398169, '411327000000', '社旗县', '河南,南阳,社旗', '112.948245', '33.056109', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2018, 401579, 2, 398169, '411328000000', '唐河县', '河南,南阳,唐河', '112.807637', '32.681335', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2019, 402141, 2, 398169, '411329000000', '新野县', '河南,南阳,新野', '112.360026', '32.520805', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2020, 402429, 2, 398169, '411330000000', '桐柏县', '河南,南阳,桐柏', '113.428287', '32.380073', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2021, 402668, 2, 398169, '411381000000', '邓州市', '河南,南阳,邓州', '112.087278', '32.687938', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2022, 403312, 2, 403311, '411401000000', '市辖区', '河南,商丘', '115.656370', '34.414172', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2023, 403313, 2, 403311, '411402000000', '梁园区', '河南,商丘,梁园', '115.613965', '34.443893', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2024, 403577, 2, 403311, '411403000000', '睢阳区', '河南,商丘,睢阳', '115.653302', '34.388390', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2025, 403992, 2, 403311, '411421000000', '民权县', '河南,商丘,民权', '115.179594', '34.647758', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2026, 404572, 2, 403311, '411422000000', '睢县', '河南,商丘,睢县', '115.071879', '34.445656', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2027, 405150, 2, 403311, '411423000000', '宁陵县', '河南,商丘,宁陵', '115.313690', '34.460232', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2028, 405530, 2, 403311, '411424000000', '柘城县', '河南,商丘,柘城', '115.305843', '34.091045', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2029, 406070, 2, 403311, '411425000000', '虞城县', '河南,商丘,虞城', '115.840511', '34.402512', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2030, 406717, 2, 403311, '411426000000', '夏邑县', '河南,商丘,夏邑', '116.131447', '34.237554', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2031, 407487, 2, 403311, '411481000000', '永城市', '河南,商丘,永城', '116.449500', '33.929291', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2032, 408288, 2, 408287, '411501000000', '市辖区', '河南,信阳', '114.091023', '32.146983', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2033, 408289, 2, 408287, '411502000000', '浉河区', '河南,信阳,浉河', '114.058713', '32.116803', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2034, 408566, 2, 408287, '411503000000', '平桥区', '河南,信阳,平桥', '114.125656', '32.101031', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2035, 408914, 2, 408287, '411521000000', '罗山县', '河南,信阳,罗山', '114.513012', '32.203073', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2036, 409241, 2, 408287, '411522000000', '光山县', '河南,信阳,光山', '114.919033', '32.011103', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2037, 409621, 2, 408287, '411523000000', '新县', '河南,信阳,新县', '114.879239', '31.643918', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2038, 409844, 2, 408287, '411524000000', '商城县', '河南,信阳,商城', '115.406862', '31.798378', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2039, 410235, 2, 408287, '411525000000', '固始县', '河南,信阳,固始', '115.654482', '32.168137', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2040, 410916, 2, 408287, '411526000000', '潢川县', '河南,信阳,潢川', '115.051808', '32.131383', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2041, 411226, 2, 408287, '411527000000', '淮滨县', '河南,信阳,淮滨', '115.419538', '32.473258', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2042, 411541, 2, 408287, '411528000000', '息县', '河南,信阳,息县', '114.740456', '32.342792', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2043, 411926, 2, 411925, '411601000000', '市辖区', '河南,周口', '114.696951', '33.626149', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2044, 411927, 2, 411925, '411602000000', '川汇区', '河南,周口,川汇', '114.650628', '33.647598', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2045, 412097, 2, 411925, '411621000000', '扶沟县', '河南,周口,扶沟', '114.394915', '34.059862', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2046, 412526, 2, 411925, '411622000000', '西华县', '河南,周口,西华', '114.529756', '33.767408', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2047, 413030, 2, 411925, '411623000000', '商水县', '河南,周口,商水', '114.611596', '33.542480', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2048, 413644, 2, 411925, '411624000000', '沈丘县', '河南,周口,沈丘', '115.098583', '33.409369', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2049, 414239, 2, 411925, '411625000000', '郸城县', '河南,周口,郸城', '115.177189', '33.644743', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2050, 414779, 2, 411925, '411626000000', '淮阳县', '河南,周口,淮阳', '114.886154', '33.731561', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2051, 415271, 2, 411925, '411627000000', '太康县', '河南,周口,太康', '114.837887', '34.063798', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2052, 416070, 2, 411925, '411628000000', '鹿邑县', '河南,周口,鹿邑', '115.484454', '33.860000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2053, 416651, 2, 411925, '411681000000', '项城市', '河南,周口,项城', '114.875333', '33.465838', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2054, 417175, 2, 417174, '411701000000', '市辖区', '河南,驻马店', '114.022298', '33.011529', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2055, 417176, 2, 417174, '411702000000', '驿城区', '河南,驻马店,驿城', '113.993914', '32.973054', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2056, 417405, 2, 417174, '411721000000', '西平县', '河南,驻马店,西平', '114.021539', '33.387685', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2057, 417712, 2, 417174, '411722000000', '上蔡县', '河南,驻马店,上蔡', '114.264381', '33.262439', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2058, 418199, 2, 417174, '411723000000', '平舆县', '河南,驻马店,平舆', '114.619159', '32.962710', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2059, 418443, 2, 417174, '411724000000', '正阳县', '河南,驻马店,正阳', '114.392774', '32.605697', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2060, 418759, 2, 417174, '411725000000', '确山县', '河南,驻马店,确山', '114.026430', '32.802065', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2061, 418973, 2, 417174, '411726000000', '泌阳县', '河南,驻马店,泌阳', '113.327144', '32.723975', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2062, 419354, 2, 417174, '411727000000', '汝南县', '河南,驻马店,汝南', '114.362379', '33.006729', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2063, 419654, 2, 417174, '411728000000', '遂平县', '河南,驻马店,遂平', '114.013182', '33.145649', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2064, 419874, 2, 417174, '411729000000', '新蔡县', '河南,驻马店,新蔡', '114.965469', '32.744855', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2065, 420259, 2, 420258, '419001000000', '济源市', '河南,济源', '112.602341', '35.069031', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2066, 420826, 2, 420825, '420101000000', '市辖区', '湖北,武汉', '114.305392', '30.593098', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2067, 420827, 2, 420825, '420102000000', '江岸区', '湖北,武汉,江岸', '114.309091', '30.600064', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2068, 420996, 2, 420825, '420103000000', '江汉区', '湖北,武汉,江汉', '114.270871', '30.601430', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2069, 421122, 2, 420825, '420104000000', '硚口区', '湖北,武汉,硚口', '114.214920', '30.582202', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2070, 421270, 2, 420825, '420105000000', '汉阳区', '湖北,武汉,汉阳', '114.218724', '30.553905', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2071, 421400, 2, 420825, '420106000000', '武昌区', '湖北,武汉,武昌', '114.316223', '30.554235', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2072, 421559, 2, 420825, '420107000000', '青山区', '湖北,武汉,青山', '114.385539', '30.639630', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2073, 421676, 2, 420825, '420111000000', '洪山区', '湖北,武汉,洪山', '114.343913', '30.500317', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2074, 421983, 2, 420825, '420112000000', '东西湖区', '湖北,武汉,东西湖', '114.136886', '30.620020', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2075, 422149, 2, 420825, '420113000000', '汉南区', '湖北,武汉,汉南', '114.084445', '30.308856', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2076, 422220, 2, 420825, '420114000000', '蔡甸区', '湖北,武汉,蔡甸', '114.029328', '30.582271', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2077, 422631, 2, 420825, '420115000000', '江夏区', '湖北,武汉,江夏', '114.321551', '30.375748', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2078, 423075, 2, 420825, '420116000000', '黄陂区', '湖北,武汉,黄陂', '114.375743', '30.882557', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2079, 423775, 2, 420825, '420117000000', '新洲区', '湖北,武汉,新洲', '114.801107', '30.841544', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2080, 424450, 2, 424449, '420201000000', '市辖区', '湖北,黄石', '115.038520', '30.199652', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2081, 424451, 2, 424449, '420202000000', '黄石港区', '湖北,黄石,黄石港', '115.065978', '30.223003', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2082, 424489, 2, 424449, '420203000000', '西塞山区', '湖北,黄石,西塞山', '115.109955', '30.204924', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2083, 424531, 2, 424449, '420204000000', '下陆区', '湖北,黄石,下陆', '114.961327', '30.173913', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2084, 424574, 2, 424449, '420205000000', '铁山区', '湖北,黄石,铁山', '114.901412', '30.206592', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2085, 424590, 2, 424449, '420222000000', '阳新县', '湖北,黄石,阳新', '115.215227', '29.830258', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2086, 425070, 2, 424449, '420281000000', '大冶市', '湖北,黄石,大冶', '114.979875', '30.095643', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2087, 425509, 2, 425508, '420301000000', '市辖区', '湖北,十堰', '110.797990', '32.629397', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2088, 425510, 2, 425508, '420302000000', '茅箭区', '湖北,十堰,茅箭', '110.813621', '32.591929', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2089, 425592, 2, 425508, '420303000000', '张湾区', '湖北,十堰,张湾', '110.769133', '32.652297', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2090, 425709, 2, 425508, '420304000000', '郧阳区', '湖北,十堰,郧阳', '110.812050', '32.834776', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2091, 426078, 2, 425508, '420322000000', '郧西县', '湖北,十堰,郧西', '110.425983', '32.993182', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2092, 426440, 2, 425508, '420323000000', '竹山县', '湖北,十堰,竹山', '110.228694', '32.224875', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2093, 426708, 2, 425508, '420324000000', '竹溪县', '湖北,十堰,竹溪', '109.715304', '32.318255', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2094, 427085, 2, 425508, '420325000000', '房县', '湖北,十堰,房县', '110.726670', '32.040085', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2095, 427420, 2, 425508, '420381000000', '丹江口市', '湖北,十堰,丹江口', '111.513127', '32.540157', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2096, 427711, 2, 427710, '420501000000', '市辖区', '湖北,宜昌', '111.286471', '30.691967', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2097, 427712, 2, 427710, '420502000000', '西陵区', '湖北,宜昌,西陵', '111.285646', '30.710782', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2098, 427828, 2, 427710, '420503000000', '伍家岗区', '湖北,宜昌,伍家岗', '111.361037', '30.644334', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2099, 427894, 2, 427710, '420504000000', '点军区', '湖北,宜昌,点军', '111.268120', '30.693247', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2100, 427953, 2, 427710, '420505000000', '猇亭区', '湖北,宜昌,猇亭', '111.434620', '30.530903', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2101, 427983, 2, 427710, '420506000000', '夷陵区', '湖北,宜昌,夷陵', '111.326380', '30.770006', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2102, 428194, 2, 427710, '420525000000', '远安县', '湖北,宜昌,远安', '111.640508', '31.060869', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2103, 428319, 2, 427710, '420526000000', '兴山县', '湖北,宜昌,兴山', '110.746805', '31.348196', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2104, 428424, 2, 427710, '420527000000', '秭归县', '湖北,宜昌,秭归', '110.977711', '30.825897', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2105, 428630, 2, 427710, '420528000000', '长阳土家族自治县', '湖北,宜昌,长阳', '111.207242', '30.472763', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2106, 428807, 2, 427710, '420529000000', '五峰土家族自治县', '湖北,宜昌,五峰', '110.674706', '30.199688', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2107, 428924, 2, 427710, '420581000000', '宜都市', '湖北,宜昌,宜都', '111.450006', '30.378327', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2108, 429089, 2, 427710, '420582000000', '当阳市', '湖北,宜昌,当阳', '111.788312', '30.821266', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2109, 429273, 2, 427710, '420583000000', '枝江市', '湖北,宜昌,枝江', '111.760530', '30.425940', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2110, 429502, 2, 429501, '420601000000', '市辖区', '湖北,襄阳', '112.122414', '32.008986', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2111, 429503, 2, 429501, '420602000000', '襄城区', '湖北,襄阳,襄城', '112.133974', '32.010351', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2112, 429687, 2, 429501, '420606000000', '樊城区', '湖北,襄阳,樊城', '112.135684', '32.044833', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2113, 429907, 2, 429501, '420607000000', '襄州区', '湖北,襄阳,襄州', '112.211899', '32.087298', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2114, 430402, 2, 429501, '420624000000', '南漳县', '湖北,襄阳,南漳', '111.838905', '31.774636', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2115, 430723, 2, 429501, '420625000000', '谷城县', '湖北,襄阳,谷城', '111.652982', '32.263849', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2116, 431025, 2, 429501, '420626000000', '保康县', '湖北,襄阳,保康', '111.261309', '31.878310', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2117, 431301, 2, 429501, '420682000000', '老河口市', '湖北,襄阳,老河口', '111.683861', '32.359068', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2118, 431575, 2, 429501, '420683000000', '枣阳市', '湖北,襄阳,枣阳', '112.771959', '32.128818', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2119, 432166, 2, 429501, '420684000000', '宜城市', '湖北,襄阳,宜城', '112.257788', '31.719806', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2120, 432416, 2, 432415, '420701000000', '市辖区', '湖北,鄂州', '114.894843', '30.391940', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2121, 432417, 2, 432415, '420702000000', '梁子湖区', '湖北,鄂州,梁子湖', '114.684731', '30.100141', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2122, 432510, 2, 432415, '420703000000', '华容区', '湖北,鄂州,华容', '114.729878', '30.534310', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2123, 432633, 2, 432415, '420704000000', '鄂城区', '湖北,鄂州,鄂城', '114.891615', '30.400572', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2124, 432830, 2, 432829, '420801000000', '市辖区', '湖北,荆门', '112.199265', '31.035423', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2125, 432831, 2, 432829, '420802000000', '东宝区', '湖北,荆门,东宝', '112.201493', '31.051852', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2126, 433052, 2, 432829, '420804000000', '掇刀区', '湖北,荆门,掇刀', '112.207833', '30.973431', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2127, 433182, 2, 432829, '420821000000', '京山县', '湖北,荆门,京山', '113.119566', '31.018457', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2128, 433634, 2, 432829, '420822000000', '沙洋县', '湖北,荆门,沙洋', '112.588581', '30.709221', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2129, 433944, 2, 432829, '420881000000', '钟祥市', '湖北,荆门,钟祥', '112.588121', '31.167820', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2130, 434549, 2, 434548, '420901000000', '市辖区', '湖北,孝感', '113.916902', '30.924568', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2131, 434550, 2, 434548, '420902000000', '孝南区', '湖北,孝感,孝南', '113.910958', '30.916874', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2132, 435091, 2, 434548, '420921000000', '孝昌县', '湖北,孝感,孝昌', '113.998010', '31.258159', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2133, 435563, 2, 434548, '420922000000', '大悟县', '湖北,孝感,大悟', '114.127022', '31.561165', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2134, 435956, 2, 434548, '420923000000', '云梦县', '湖北,孝感,云梦', '113.753554', '31.020983', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2135, 436267, 2, 434548, '420981000000', '应城市', '湖北,孝感,应城', '113.572707', '30.928370', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2136, 436706, 2, 434548, '420982000000', '安陆市', '湖北,孝感,安陆', '113.688941', '31.255610', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2137, 437119, 2, 434548, '420984000000', '汉川市', '湖北,孝感,汉川', '113.839149', '30.661244', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2138, 437780, 2, 437779, '421001000000', '市辖区', '湖北,荆州', '112.239741', '30.335165', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2139, 437781, 2, 437779, '421002000000', '沙市区', '湖北,荆州,沙市', '112.255583', '30.311056', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2140, 437909, 2, 437779, '421003000000', '荆州区', '湖北,荆州,荆州', '112.190185', '30.352832', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2141, 438103, 2, 437779, '421022000000', '公安县', '湖北,荆州,公安', '112.229648', '30.058336', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2142, 438512, 2, 437779, '421023000000', '监利县', '湖北,荆州,监利', '112.897465', '29.811574', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2143, 439263, 2, 437779, '421024000000', '江陵县', '湖北,荆州,江陵', '112.424664', '30.041822', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2144, 439491, 2, 437779, '421081000000', '石首市', '湖北,荆州,石首', '112.425454', '29.720938', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2145, 439836, 2, 437779, '421083000000', '洪湖市', '湖北,荆州,洪湖', '113.475980', '29.825458', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2146, 440344, 2, 437779, '421087000000', '松滋市', '湖北,荆州,松滋', '111.756773', '30.174522', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2147, 440640, 2, 440639, '421101000000', '市辖区', '湖北,黄冈', '114.872316', '30.453905', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2148, 440641, 2, 440639, '421102000000', '黄州区', '湖北,黄冈,黄州', '114.879398', '30.434050', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2149, 440797, 2, 440639, '421121000000', '团风县', '湖北,黄冈,团风', '114.872191', '30.643569', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2150, 441110, 2, 440639, '421122000000', '红安县', '湖北,黄冈,红安', '114.618236', '31.288153', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2151, 441550, 2, 440639, '421123000000', '罗田县', '湖北,黄冈,罗田', '115.399492', '30.783100', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2152, 442017, 2, 440639, '421124000000', '英山县', '湖北,黄冈,英山', '115.681259', '30.734959', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2153, 442351, 2, 440639, '421125000000', '浠水县', '湖北,黄冈,浠水', '115.265535', '30.451867', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2154, 443040, 2, 440639, '421126000000', '蕲春县', '湖北,黄冈,蕲春', '115.437008', '30.225964', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2155, 443641, 2, 440639, '421127000000', '黄梅县', '湖北,黄冈,黄梅', '115.944219', '30.070454', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2156, 444186, 2, 440639, '421181000000', '麻城市', '湖北,黄冈,麻城', '115.008163', '31.172740', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2157, 444684, 2, 440639, '421182000000', '武穴市', '湖北,黄冈,武穴', '115.561217', '29.844107', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2158, 445041, 2, 445040, '421201000000', '市辖区', '湖北,咸宁', '114.322492', '29.841443', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2159, 445042, 2, 445040, '421202000000', '咸安区', '湖北,咸宁,咸安', '114.298711', '29.852892', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2160, 445249, 2, 445040, '421221000000', '嘉鱼县', '湖北,咸宁,嘉鱼', '113.939277', '29.970737', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2161, 445363, 2, 445040, '421222000000', '通城县', '湖北,咸宁,通城', '113.816966', '29.245269', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2162, 445569, 2, 445040, '421223000000', '崇阳县', '湖北,咸宁,崇阳', '114.039828', '29.555605', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2163, 445786, 2, 445040, '421224000000', '通山县', '湖北,咸宁,通山', '114.482606', '29.605376', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2164, 446007, 2, 445040, '421281000000', '赤壁市', '湖北,咸宁,赤壁', '113.900628', '29.724692', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2165, 446213, 2, 446212, '421301000000', '市辖区', '湖北,随州', '113.382458', '31.690215', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2166, 446214, 2, 446212, '421303000000', '曾都区', '湖北,随州,曾都', '113.371121', '31.716280', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2167, 446433, 2, 446212, '421321000000', '随县', '湖北,随州,随县', '113.299528', '31.853833', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2168, 446847, 2, 446212, '421381000000', '广水市', '湖北,随州,广水', '113.825890', '31.616854', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2169, 447269, 2, 447268, '422801000000', '恩施市', '湖北,恩施,恩施', '109.479665', '30.294680', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2170, 447495, 2, 447268, '422802000000', '利川市', '湖北,恩施,利川', '108.936376', '30.290996', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2171, 448099, 2, 447268, '422822000000', '建始县', '湖北,恩施,建始', '109.726667', '30.601555', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2172, 448521, 2, 447268, '422823000000', '巴东县', '湖北,恩施,巴东', '110.340756', '31.042324', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2173, 448856, 2, 447268, '422825000000', '宣恩县', '湖北,恩施,宣恩', '109.491485', '29.986899', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2174, 449150, 2, 447268, '422826000000', '咸丰县', '湖北,恩施,咸丰', '109.139726', '29.665203', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2175, 449431, 2, 447268, '422827000000', '来凤县', '湖北,恩施,来凤', '109.407828', '29.493485', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2176, 449636, 2, 447268, '422828000000', '鹤峰县', '湖北,恩施,鹤峰', '110.033662', '29.890171', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2177, 449866, 2, 449865, '429004000000', '仙桃市', '湖北,仙桃', '113.442970', '30.328407', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2178, 450653, 2, 449865, '429005000000', '潜江市', '湖北,潜江', '112.900284', '30.401947', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2179, 451150, 2, 449865, '429006000000', '天门市', '湖北,天门', '113.166557', '30.663719', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2180, 452034, 2, 449865, '429021000000', '神农架林区', '湖北,神农架林', '110.675758', '31.744898', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2181, 452125, 2, 452124, '430101000000', '市辖区', '湖南,长沙', '112.938814', '28.228209', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2182, 452126, 2, 452124, '430102000000', '芙蓉区', '湖南,长沙,芙蓉', '113.032539', '28.185386', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2183, 452213, 2, 452124, '430103000000', '天心区', '湖南,长沙,天心', '112.989855', '28.112525', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2184, 452314, 2, 452124, '430104000000', '岳麓区', '湖南,长沙,岳麓', '112.931383', '28.235243', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2185, 452486, 2, 452124, '430105000000', '开福区', '湖南,长沙,开福', '112.985545', '28.257269', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2186, 452610, 2, 452124, '430111000000', '雨花区', '湖南,长沙,雨花', '113.038017', '28.137710', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2187, 452771, 2, 452124, '430112000000', '望城区', '湖南,长沙,望城', '112.819549', '28.347458', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2188, 452924, 2, 452124, '430121000000', '长沙县', '湖南,长沙,长沙', '113.080810', '28.246150', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2189, 453140, 2, 452124, '430124000000', '宁乡县', '湖南,长沙,宁乡', '112.551885', '28.277483', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2190, 453444, 2, 452124, '430181000000', '浏阳市', '湖南,长沙,浏阳', '113.643076', '28.162833', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2191, 453800, 2, 453799, '430201000000', '市辖区', '湖南,株洲', '113.134002', '27.827550', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2192, 453801, 2, 453799, '430202000000', '荷塘区', '湖南,株洲,荷塘', '113.173487', '27.855929', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2193, 453867, 2, 453799, '430203000000', '芦淞区', '湖南,株洲,芦淞', '113.152724', '27.785070', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2194, 453957, 2, 453799, '430204000000', '石峰区', '湖南,株洲,石峰', '113.117732', '27.875445', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2195, 454008, 2, 453799, '430211000000', '天元区', '湖南,株洲,天元', '113.082216', '27.826867', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2196, 454113, 2, 453799, '430221000000', '株洲县', '湖南,株洲,株洲', '113.144006', '27.699346', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2197, 454261, 2, 453799, '430223000000', '攸县', '湖南,株洲,攸县', '113.345309', '27.000227', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2198, 454580, 2, 453799, '430224000000', '茶陵县', '湖南,株洲,茶陵', '113.539280', '26.777492', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2199, 454845, 2, 453799, '430225000000', '炎陵县', '湖南,株洲,炎陵', '113.772655', '26.489902', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2200, 454989, 2, 453799, '430281000000', '醴陵市', '湖南,株洲,醴陵', '113.496894', '27.646130', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2201, 455284, 2, 455283, '430301000000', '市辖区', '湖南,湘潭', '112.944049', '27.829738', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2202, 455285, 2, 455283, '430302000000', '雨湖区', '湖南,湘潭,雨湖', '112.907238', '27.856250', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2203, 455426, 2, 455283, '430304000000', '岳塘区', '湖南,湘潭,岳塘', '112.969480', '27.872028', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2204, 455515, 2, 455283, '430321000000', '湘潭县', '湖南,湘潭,湘潭', '112.950831', '27.778958', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2205, 455889, 2, 455283, '430381000000', '湘乡市', '湖南,湘潭,湘乡', '112.535028', '27.734120', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2206, 456260, 2, 455283, '430382000000', '韶山市', '湖南,湘潭,韶山', '112.526671', '27.915009', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2207, 456304, 2, 456303, '430401000000', '市辖区', '湖南,衡阳', '112.571997', '26.893230', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2208, 456305, 2, 456303, '430405000000', '珠晖区', '湖南,衡阳,珠晖', '112.620112', '26.894657', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2209, 456391, 2, 456303, '430406000000', '雁峰区', '湖南,衡阳,雁峰', '112.616546', '26.888666', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2210, 456449, 2, 456303, '430407000000', '石鼓区', '湖南,衡阳,石鼓', '112.598089', '26.943215', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2211, 456502, 2, 456303, '430408000000', '蒸湘区', '湖南,衡阳,蒸湘', '112.567064', '26.911404', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2212, 456558, 2, 456303, '430412000000', '南岳区', '湖南,衡阳,南岳', '112.738604', '27.232444', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2213, 456587, 2, 456303, '430421000000', '衡阳县', '湖南,衡阳,衡阳', '112.370532', '26.969635', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2214, 457104, 2, 456303, '430422000000', '衡南县', '湖南,衡阳,衡南', '112.677877', '26.738248', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2215, 457576, 2, 456303, '430423000000', '衡山县', '湖南,衡阳,衡山', '112.868268', '27.230291', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2216, 457742, 2, 456303, '430424000000', '衡东县', '湖南,衡阳,衡东', '112.953168', '27.081170', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2217, 458018, 2, 456303, '430426000000', '祁东县', '湖南,衡阳,祁东', '112.090357', '26.799896', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2218, 458411, 2, 456303, '430481000000', '耒阳市', '湖南,衡阳,耒阳', '112.859795', '26.422275', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2219, 458820, 2, 456303, '430482000000', '常宁市', '湖南,衡阳,常宁', '112.399995', '26.420932', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2220, 459252, 2, 459251, '430501000000', '市辖区', '湖南,邵阳', '111.467791', '27.238892', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2221, 459253, 2, 459251, '430502000000', '双清区', '湖南,邵阳,双清', '111.496341', '27.232708', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2222, 459357, 2, 459251, '430503000000', '大祥区', '湖南,邵阳,大祥', '111.439091', '27.221452', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2223, 459470, 2, 459251, '430511000000', '北塔区', '湖南,邵阳,北塔', '111.452197', '27.246489', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2224, 459517, 2, 459251, '430521000000', '邵东县', '湖南,邵阳,邵东', '111.744258', '27.258942', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2225, 460126, 2, 459251, '430522000000', '新邵县', '湖南,邵阳,新邵', '111.458657', '27.320918', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2226, 460558, 2, 459251, '430523000000', '邵阳县', '湖南,邵阳,邵阳', '111.273806', '26.990637', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2227, 461014, 2, 459251, '430524000000', '隆回县', '湖南,邵阳,隆回', '111.032438', '27.113978', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2228, 461613, 2, 459251, '430525000000', '洞口县', '湖南,邵阳,洞口', '110.575846', '27.060321', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2229, 462000, 2, 459251, '430527000000', '绥宁县', '湖南,邵阳,绥宁', '110.155655', '26.581955', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2230, 462257, 2, 459251, '430528000000', '新宁县', '湖南,邵阳,新宁', '110.856623', '26.433418', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2231, 462600, 2, 459251, '430529000000', '城步苗族自治县', '湖南,邵阳,城步', '111.467791', '27.238892', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2232, 462807, 2, 459251, '430581000000', '武冈市', '湖南,邵阳,武冈', '110.631884', '26.726599', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2233, 463142, 2, 463141, '430601000000', '市辖区', '湖南,岳阳', '113.128958', '29.357104', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2234, 463143, 2, 463141, '430602000000', '岳阳楼区', '湖南,岳阳,岳阳楼', '113.129702', '29.371903', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2235, 463333, 2, 463141, '430603000000', '云溪区', '湖南,岳阳,云溪', '113.272313', '29.472746', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2236, 463397, 2, 463141, '430611000000', '君山区', '湖南,岳阳,君山', '113.006435', '29.461106', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2237, 463489, 2, 463141, '430621000000', '岳阳县', '湖南,岳阳,岳阳', '113.116418', '29.144067', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2238, 463722, 2, 463141, '430623000000', '华容县', '湖南,岳阳,华容', '112.540463', '29.531057', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2239, 463961, 2, 463141, '430624000000', '湘阴县', '湖南,岳阳,湘阴', '112.909426', '28.689105', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2240, 464180, 2, 463141, '430626000000', '平江县', '湖南,岳阳,平江', '113.581234', '28.701868', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2241, 464747, 2, 463141, '430681000000', '汨罗市', '湖南,岳阳,汨罗', '113.067259', '28.806890', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2242, 464944, 2, 463141, '430682000000', '临湘市', '湖南,岳阳,临湘', '113.450423', '29.476849', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2243, 465106, 2, 465105, '430701000000', '市辖区', '湖南,常德', '111.698497', '29.031673', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2244, 465107, 2, 465105, '430702000000', '武陵区', '湖南,常德,武陵', '111.683153', '29.055163', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2245, 465295, 2, 465105, '430703000000', '鼎城区', '湖南,常德,鼎城', '111.680783', '29.018593', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2246, 465661, 2, 465105, '430721000000', '安乡县', '湖南,常德,安乡', '112.171131', '29.411309', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2247, 465844, 2, 465105, '430722000000', '汉寿县', '湖南,常德,汉寿', '111.970514', '28.906107', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2248, 466173, 2, 465105, '430723000000', '澧县', '湖南,常德,澧县', '111.758702', '29.633237', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2249, 466483, 2, 465105, '430724000000', '临澧县', '湖南,常德,临澧', '111.647518', '29.440793', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2250, 466654, 2, 465105, '430725000000', '桃源县', '湖南,常德,桃源', '111.488925', '28.902503', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2251, 467112, 2, 465105, '430726000000', '石门县', '湖南,常德,石门', '111.380014', '29.584293', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2252, 467471, 2, 465105, '430781000000', '津市市', '湖南,常德,津', '111.698497', '29.031673', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2253, 467563, 2, 467562, '430801000000', '市辖区', '湖南,张家界', '110.479191', '29.117096', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2254, 467564, 2, 467562, '430802000000', '永定区', '湖南,张家界,永定', '110.537138', '29.119856', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2255, 467841, 2, 467562, '430811000000', '武陵源区', '湖南,张家界,武陵源', '110.550434', '29.345730', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2256, 467881, 2, 467562, '430821000000', '慈利县', '湖南,张家界,慈利', '111.139711', '29.429972', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2257, 468338, 2, 467562, '430822000000', '桑植县', '湖南,张家界,桑植', '110.204911', '29.414264', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2258, 468661, 2, 468660, '430901000000', '市辖区', '湖南,益阳', '112.355180', '28.553860', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2259, 468662, 2, 468660, '430902000000', '资阳区', '湖南,益阳,资阳', '112.324322', '28.590966', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2260, 468790, 2, 468660, '430903000000', '赫山区', '湖南,益阳,赫山', '112.374024', '28.579343', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2261, 469015, 2, 468660, '430921000000', '南县', '湖南,益阳,南县', '112.396241', '29.361338', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2262, 469192, 2, 468660, '430922000000', '桃江县', '湖南,益阳,桃江', '112.155822', '28.518085', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2263, 469452, 2, 468660, '430923000000', '安化县', '湖南,益阳,安化', '111.212846', '28.374107', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2264, 469909, 2, 468660, '430981000000', '沅江市', '湖南,益阳,沅江', '112.355954', '28.847045', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2265, 470124, 2, 470123, '431001000000', '市辖区', '湖南,郴州', '113.014717', '25.770509', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2266, 470125, 2, 470123, '431002000000', '北湖区', '湖南,郴州,北湖', '113.011035', '25.784054', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2267, 470300, 2, 470123, '431003000000', '苏仙区', '湖南,郴州,苏仙', '113.042441', '25.800370', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2268, 470500, 2, 470123, '431021000000', '桂阳县', '湖南,郴州,桂阳', '112.734176', '25.754167', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2269, 470894, 2, 470123, '431022000000', '宜章县', '湖南,郴州,宜章', '112.948772', '25.399792', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2270, 471178, 2, 470123, '431023000000', '永兴县', '湖南,郴州,永兴', '113.116528', '26.127151', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2271, 471473, 2, 470123, '431024000000', '嘉禾县', '湖南,郴州,嘉禾', '112.369021', '25.587520', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2272, 471685, 2, 470123, '431025000000', '临武县', '湖南,郴州,临武', '112.563456', '25.275560', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2273, 471908, 2, 470123, '431026000000', '汝城县', '湖南,郴州,汝城', '113.684727', '25.532816', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2274, 472174, 2, 470123, '431027000000', '桂东县', '湖南,郴州,桂东', '113.944614', '26.077616', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2275, 472301, 2, 470123, '431028000000', '安仁县', '湖南,郴州,安仁', '113.269441', '26.709056', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2276, 472477, 2, 470123, '431081000000', '资兴市', '湖南,郴州,资兴', '113.236146', '25.976243', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2277, 472710, 2, 472709, '431101000000', '市辖区', '湖南,永州', '111.613445', '26.420394', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2278, 472711, 2, 472709, '431102000000', '零陵区', '湖南,永州,零陵', '111.631109', '26.221936', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2279, 473062, 2, 472709, '431103000000', '冷水滩区', '湖南,永州,冷水滩', '111.592143', '26.461077', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2280, 473284, 2, 472709, '431121000000', '祁阳县', '湖南,永州,祁阳', '111.840657', '26.580120', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2281, 473871, 2, 472709, '431122000000', '东安县', '湖南,永州,东安', '111.314117', '26.394404', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2282, 474233, 2, 472709, '431123000000', '双牌县', '湖南,永州,双牌', '111.659967', '25.961910', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2283, 474367, 2, 472709, '431124000000', '道县', '湖南,永州,道县', '111.600796', '25.526438', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2284, 474761, 2, 472709, '431125000000', '江永县', '湖南,永州,江永', '111.343911', '25.273539', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2285, 474883, 2, 472709, '431126000000', '宁远县', '湖南,永州,宁远', '111.945805', '25.570976', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2286, 475326, 2, 472709, '431127000000', '蓝山县', '湖南,永州,蓝山', '112.196731', '25.369898', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2287, 475574, 2, 472709, '431128000000', '新田县', '湖南,永州,新田', '112.203287', '25.904305', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2288, 475819, 2, 472709, '431129000000', '江华瑶族自治县', '湖南,永州,江华', '111.579305', '25.185590', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2289, 476149, 2, 476148, '431201000000', '市辖区', '湖南,怀化', '109.998488', '27.554978', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2290, 476150, 2, 476148, '431202000000', '鹤城区', '湖南,怀化,鹤城', '110.040315', '27.578926', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2291, 476288, 2, 476148, '431221000000', '中方县', '湖南,怀化,中方', '109.944712', '27.440139', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2292, 476449, 2, 476148, '431222000000', '沅陵县', '湖南,怀化,沅陵', '110.393844', '28.452686', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2293, 476874, 2, 476148, '431223000000', '辰溪县', '湖南,怀化,辰溪', '110.183917', '28.006336', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2294, 477191, 2, 476148, '431224000000', '溆浦县', '湖南,怀化,溆浦', '110.594921', '27.908281', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2295, 477633, 2, 476148, '431225000000', '会同县', '湖南,怀化,会同', '109.735661', '26.887239', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2296, 477895, 2, 476148, '431226000000', '麻阳苗族自治县', '湖南,怀化,麻阳', '109.802587', '27.865548', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2297, 478135, 2, 476148, '431227000000', '新晃侗族自治县', '湖南,怀化,新晃', '109.174932', '27.352673', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2298, 478299, 2, 476148, '431228000000', '芷江侗族自治县', '湖南,怀化,芷江', '109.684629', '27.443499', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2299, 478536, 2, 476148, '431229000000', '靖州苗族侗族自治县', '湖南,怀化,靖州', '109.696311', '26.575052', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2300, 478685, 2, 476148, '431230000000', '通道侗族自治县', '湖南,怀化,通道', '109.784412', '26.158054', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2301, 478864, 2, 476148, '431281000000', '洪江市', '湖南,怀化,洪江', '109.836669', '27.208609', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2302, 479104, 2, 479103, '431301000000', '市辖区', '湖南,娄底', '111.993497', '27.700062', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2303, 479105, 2, 479103, '431302000000', '娄星区', '湖南,娄底,娄星', '112.001936', '27.729924', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2304, 479285, 2, 479103, '431321000000', '双峰县', '湖南,娄底,双峰', '112.175246', '27.456658', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2305, 479889, 2, 479103, '431322000000', '新化县', '湖南,娄底,新化', '111.327412', '27.726515', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2306, 480606, 2, 479103, '431381000000', '冷水江市', '湖南,娄底,冷水江', '111.435623', '27.685850', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2307, 480767, 2, 479103, '431382000000', '涟源市', '湖南,娄底,涟源', '111.664316', '27.692542', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2308, 481320, 2, 481319, '433101000000', '吉首市', '湖南,湘西,吉首', '109.698055', '28.262507', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2309, 481465, 2, 481319, '433122000000', '泸溪县', '湖南,湘西,泸溪', '110.219610', '28.216641', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2310, 481626, 2, 481319, '433123000000', '凤凰县', '湖南,湘西,凤凰', '109.598719', '27.948116', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2311, 481925, 2, 481319, '433124000000', '花垣县', '湖南,湘西,花垣', '109.482078', '28.572030', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2312, 482179, 2, 481319, '433125000000', '保靖县', '湖南,湘西,保靖', '109.660577', '28.699774', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2313, 482377, 2, 481319, '433126000000', '古丈县', '湖南,湘西,古丈', '109.950728', '28.616935', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2314, 482506, 2, 481319, '433127000000', '永顺县', '湖南,湘西,永顺', '109.851254', '29.001440', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2315, 482831, 2, 481319, '433130000000', '龙山县', '湖南,湘西,龙山', '109.443939', '29.457663', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2316, 483252, 2, 483251, '440101000000', '市辖区', '广东,广州', '113.264434', '23.129162', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2317, 483253, 2, 483251, '440103000000', '荔湾区', '广东,广州,荔湾', '113.244261', '23.125981', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2318, 483462, 2, 483251, '440104000000', '越秀区', '广东,广州,越秀', '113.266841', '23.128524', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2319, 483703, 2, 483251, '440105000000', '海珠区', '广东,广州,海珠', '113.317388', '23.083801', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2320, 483979, 2, 483251, '440106000000', '天河区', '广东,广州,天河', '113.361200', '23.124680', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2321, 484218, 2, 483251, '440111000000', '白云区', '广东,广州,白云', '113.273289', '23.157290', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2322, 484627, 2, 483251, '440112000000', '黄埔区', '广东,广州,黄埔', '113.459749', '23.106402', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2323, 484770, 2, 483251, '440113000000', '番禺区', '广东,广州,番禺', '113.384129', '22.937244', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2324, 485059, 2, 483251, '440114000000', '花都区', '广东,广州,花都', '113.220218', '23.404165', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2325, 485312, 2, 483251, '440115000000', '南沙区', '广东,广州,南沙', '113.525172', '22.801627', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2326, 485489, 2, 483251, '440117000000', '从化区', '广东,广州,从化', '113.586605', '23.548852', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2327, 485776, 2, 483251, '440118000000', '增城区', '广东,广州,增城', '113.810860', '23.261141', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2328, 486130, 2, 486129, '440201000000', '市辖区', '广东,韶关', '113.597522', '24.810403', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2329, 486131, 2, 486129, '440203000000', '武江区', '广东,韶关,武江', '113.587774', '24.792924', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2330, 486223, 2, 486129, '440204000000', '浈江区', '广东,韶关,浈江', '113.611098', '24.804381', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2331, 486345, 2, 486129, '440205000000', '曲江区', '广东,韶关,曲江', '113.604549', '24.682728', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2332, 486469, 2, 486129, '440222000000', '始兴县', '广东,韶关,始兴', '114.061789', '24.952977', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2333, 486609, 2, 486129, '440224000000', '仁化县', '广东,韶关,仁化', '113.749027', '25.085621', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2334, 486746, 2, 486129, '440229000000', '翁源县', '广东,韶关,翁源', '114.130342', '24.350347', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2335, 486929, 2, 486129, '440232000000', '乳源瑶族自治县', '广东,韶关,乳源', '113.275883', '24.776078', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2336, 487058, 2, 486129, '440233000000', '新丰县', '广东,韶关,新丰', '114.206867', '24.059760', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2337, 487223, 2, 486129, '440281000000', '乐昌市', '广东,韶关,乐昌', '113.347519', '25.130136', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2338, 487468, 2, 486129, '440282000000', '南雄市', '广东,韶关,南雄', '114.311982', '25.117753', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2339, 487722, 2, 487721, '440301000000', '市辖区', '广东,深圳', '114.057868', '22.543099', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2340, 487723, 2, 487721, '440303000000', '罗湖区', '广东,深圳,罗湖', '114.131764', '22.548171', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2341, 487849, 2, 487721, '440304000000', '福田区', '广东,深圳,福田', '114.055036', '22.521530', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2342, 487977, 2, 487721, '440305000000', '南山区', '广东,深圳,南山', '113.930476', '22.533013', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2343, 488090, 2, 487721, '440306000000', '宝安区', '广东,深圳,宝安', '113.884020', '22.555259', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2344, 488375, 2, 487721, '440307000000', '龙岗区', '广东,深圳,龙岗', '114.246899', '22.720968', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2345, 488558, 2, 487721, '440308000000', '盐田区', '广东,深圳,盐田', '114.236875', '22.556499', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2346, 488590, 2, 488589, '440401000000', '市辖区', '广东,珠海', '113.576726', '22.270715', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2347, 488591, 2, 488589, '440402000000', '香洲区', '广东,珠海,香洲', '113.543785', '22.265811', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2348, 488768, 2, 488589, '440403000000', '斗门区', '广东,珠海,斗门', '113.296467', '22.209200', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2349, 488905, 2, 488589, '440404000000', '金湾区', '广东,珠海,金湾', '113.363393', '22.146874', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2350, 488955, 2, 488954, '440501000000', '市辖区', '广东,汕头', '116.681972', '23.354091', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2351, 488956, 2, 488954, '440507000000', '龙湖区', '广东,汕头,龙湖', '116.716534', '23.371476', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2352, 489082, 2, 488954, '440511000000', '金平区', '广东,汕头,金平', '116.703426', '23.365613', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2353, 489270, 2, 488954, '440512000000', '濠江区', '广东,汕头,濠江', '116.726973', '23.286079', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2354, 489338, 2, 488954, '440513000000', '潮阳区', '广东,汕头,潮阳', '116.601515', '23.264936', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2355, 489624, 2, 488954, '440514000000', '潮南区', '广东,汕头,潮南', '116.433017', '23.250425', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2356, 489868, 2, 488954, '440515000000', '澄海区', '广东,汕头,澄海', '116.756092', '23.465960', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2357, 490064, 2, 488954, '440523000000', '南澳县', '广东,汕头,南澳', '117.023374', '23.421724', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2358, 490107, 2, 490106, '440601000000', '市辖区', '广东,佛山', '113.121416', '23.021548', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2359, 490108, 2, 490106, '440604000000', '禅城区', '广东,佛山,禅城', '113.122440', '23.009505', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2360, 490257, 2, 490106, '440605000000', '南海区', '广东,佛山,南海', '113.143441', '23.028956', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2361, 490531, 2, 490106, '440606000000', '顺德区', '广东,佛山,顺德', '113.293359', '22.805240', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2362, 490746, 2, 490106, '440607000000', '三水区', '广东,佛山,三水', '112.896668', '23.156065', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2363, 490834, 2, 490106, '440608000000', '高明区', '广东,佛山,高明', '112.892578', '22.900182', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2364, 490920, 2, 490919, '440701000000', '市辖区', '广东,江门', '113.081901', '22.578738', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2365, 490921, 2, 490919, '440703000000', '蓬江区', '广东,江门,蓬江', '113.078521', '22.595149', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2366, 491070, 2, 490919, '440704000000', '江海区', '广东,江门,江海', '113.111612', '22.560474', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2367, 491136, 2, 490919, '440705000000', '新会区', '广东,江门,新会', '113.034187', '22.458300', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2368, 491380, 2, 490919, '440781000000', '台山市', '广东,江门,台山', '112.794065', '22.251924', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2369, 491711, 2, 490919, '440783000000', '开平市', '广东,江门,开平', '112.698545', '22.376395', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2370, 492000, 2, 490919, '440784000000', '鹤山市', '广东,江门,鹤山', '112.964446', '22.765392', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2371, 492153, 2, 490919, '440785000000', '恩平市', '广东,江门,恩平', '112.305145', '22.183206', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2372, 492342, 2, 492341, '440801000000', '市辖区', '广东,湛江', '110.359377', '21.270707', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2373, 492343, 2, 492341, '440802000000', '赤坎区', '广东,湛江,赤坎', '110.365900', '21.266119', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2374, 492393, 2, 492341, '440803000000', '霞山区', '广东,湛江,霞山', '110.398070', '21.191720', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2375, 492484, 2, 492341, '440804000000', '坡头区', '广东,湛江,坡头', '110.455332', '21.244721', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2376, 492563, 2, 492341, '440811000000', '麻章区', '广东,湛江,麻章', '110.334387', '21.263443', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2377, 492716, 2, 492341, '440823000000', '遂溪县', '广东,湛江,遂溪', '110.250124', '21.377246', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2378, 493015, 2, 492341, '440825000000', '徐闻县', '广东,湛江,徐闻', '110.176750', '20.325489', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2379, 493241, 2, 492341, '440881000000', '廉江市', '广东,湛江,廉江', '110.286209', '21.609700', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2380, 493663, 2, 492341, '440882000000', '雷州市', '广东,湛江,雷州', '110.096749', '20.914278', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2381, 494182, 2, 492341, '440883000000', '吴川市', '广东,湛江,吴川', '110.778411', '21.441808', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2382, 494395, 2, 494394, '440901000000', '市辖区', '广东,茂名', '110.925456', '21.662999', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2383, 494396, 2, 494394, '440902000000', '茂南区', '广东,茂名,茂南', '110.918026', '21.641337', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2384, 494629, 2, 494394, '440904000000', '电白区', '广东,茂名,电白', '111.013556', '21.514164', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2385, 495088, 2, 494394, '440981000000', '高州市', '广东,茂名,高州', '110.853302', '21.917982', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2386, 495611, 2, 494394, '440982000000', '化州市', '广东,茂名,化州', '110.639569', '21.664044', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2387, 496016, 2, 494394, '440983000000', '信宜市', '广东,茂名,信宜', '110.947044', '22.354385', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2388, 496439, 2, 496438, '441201000000', '市辖区', '广东,肇庆', '112.465091', '23.047191', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2389, 496440, 2, 496438, '441202000000', '端州区', '广东,肇庆,端州', '112.484848', '23.052101', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2390, 496505, 2, 496438, '441203000000', '鼎湖区', '广东,肇庆,鼎湖', '112.567588', '23.158447', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2391, 496594, 2, 496438, '441204000000', '高要区', '广东,肇庆,高要', '112.457771', '23.025668', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2392, 496964, 2, 496438, '441223000000', '广宁县', '广东,肇庆,广宁', '112.440690', '23.634676', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2393, 497158, 2, 496438, '441224000000', '怀集县', '广东,肇庆,怀集', '112.184652', '23.911899', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2394, 497503, 2, 496438, '441225000000', '封开县', '广东,肇庆,封开', '111.512343', '23.424033', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2395, 497719, 2, 496438, '441226000000', '德庆县', '广东,肇庆,德庆', '111.785937', '23.143722', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2396, 497926, 2, 496438, '441284000000', '四会市', '广东,肇庆,四会', '112.733773', '23.326504', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2397, 498105, 2, 498104, '441301000000', '市辖区', '广东,惠州', '114.416196', '23.111847', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2398, 498106, 2, 498104, '441302000000', '惠城区', '广东,惠州,惠城', '114.382541', '23.084122', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2399, 498397, 2, 498104, '441303000000', '惠阳区', '广东,惠州,惠阳', '114.456696', '22.788734', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2400, 498578, 2, 498104, '441322000000', '博罗县', '广东,惠州,博罗', '114.289496', '23.172899', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2401, 498978, 2, 498104, '441323000000', '惠东县', '广东,惠州,惠东', '114.720079', '22.984975', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2402, 499292, 2, 498104, '441324000000', '龙门县', '广东,惠州,龙门', '114.254863', '23.727737', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2403, 499490, 2, 499489, '441401000000', '市辖区', '广东,梅州', '116.122238', '24.288615', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2404, 499491, 2, 499489, '441402000000', '梅江区', '广东,梅州,梅江', '116.116616', '24.310384', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2405, 499625, 2, 499489, '441403000000', '梅县区', '广东,梅州,梅县', '116.082183', '24.265312', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2406, 500036, 2, 499489, '441422000000', '大埔县', '广东,梅州,大埔', '116.695195', '24.347783', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2407, 500312, 2, 499489, '441423000000', '丰顺县', '广东,梅州,丰顺', '116.182299', '23.739526', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2408, 500611, 2, 499489, '441424000000', '五华县', '广东,梅州,五华', '115.775788', '23.932409', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2409, 501074, 2, 499489, '441426000000', '平远县', '广东,梅州,平远', '115.891638', '24.567262', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2410, 501230, 2, 499489, '441427000000', '蕉岭县', '广东,梅州,蕉岭', '116.171356', '24.658700', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2411, 501351, 2, 499489, '441481000000', '兴宁市', '广东,梅州,兴宁', '115.731110', '24.136630', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2412, 501868, 2, 501867, '441501000000', '市辖区', '广东,汕尾', '115.375278', '22.786211', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2413, 501869, 2, 501867, '441502000000', '城区', '广东,汕尾,城区', '115.365029', '22.778699', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2414, 502002, 2, 501867, '441521000000', '海丰县', '广东,汕尾,海丰', '115.323436', '22.966586', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2415, 502303, 2, 501867, '441523000000', '陆河县', '广东,汕尾,陆河', '115.660143', '23.301617', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2416, 502439, 2, 501867, '441581000000', '陆丰市', '广东,汕尾,陆丰', '115.652260', '22.917576', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2417, 502829, 2, 502828, '441601000000', '市辖区', '广东,河源', '114.700447', '23.743538', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2418, 502830, 2, 502828, '441602000000', '源城区', '广东,河源,源城', '114.702517', '23.733969', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2419, 502907, 2, 502828, '441621000000', '紫金县', '广东,河源,紫金', '115.184061', '23.635271', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2420, 503226, 2, 502828, '441622000000', '龙川县', '广东,河源,龙川', '115.259872', '24.100066', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2421, 503608, 2, 502828, '441623000000', '连平县', '广东,河源,连平', '114.488714', '24.369588', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2422, 503797, 2, 502828, '441624000000', '和平县', '广东,河源,和平', '114.938684', '24.442180', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2423, 504060, 2, 502828, '441625000000', '东源县', '广东,河源,东源', '114.746380', '23.788393', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2424, 504367, 2, 504366, '441701000000', '市辖区', '广东,阳江', '111.982232', '21.857958', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2425, 504368, 2, 504366, '441702000000', '江城区', '广东,阳江,江城', '111.955059', '21.861787', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2426, 504549, 2, 504366, '441704000000', '阳东区', '广东,阳江,阳东', '112.006338', '21.868358', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2427, 504749, 2, 504366, '441721000000', '阳西县', '广东,阳江,阳西', '111.617849', '21.752396', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2428, 504911, 2, 504366, '441781000000', '阳春市', '广东,阳江,阳春', '111.791539', '22.170438', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2429, 505299, 2, 505298, '441801000000', '市辖区', '广东,清远', '113.056031', '23.681763', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2430, 505300, 2, 505298, '441802000000', '清城区', '广东,清远,清城', '113.062692', '23.697899', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2431, 505466, 2, 505298, '441803000000', '清新区', '广东,清远,清新', '113.017749', '23.734673', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2432, 505685, 2, 505298, '441821000000', '佛冈县', '广东,清远,佛冈', '113.531607', '23.879192', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2433, 505782, 2, 505298, '441823000000', '阳山县', '广东,清远,阳山', '112.641363', '24.465359', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2434, 505963, 2, 505298, '441825000000', '连山壮族瑶族自治县', '广东,清远,连山', '112.093617', '24.570491', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2435, 506027, 2, 505298, '441826000000', '连南瑶族自治县', '广东,清远,连南', '112.287012', '24.726017', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2436, 506106, 2, 505298, '441881000000', '英德市', '广东,清远,英德', '113.402376', '24.205024', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2437, 506430, 2, 505298, '441882000000', '连州市', '广东,清远,连州', '112.377361', '24.780966', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2438, 506617, 2, 506616, '441900003000', '东城街道办事处', '广东,东莞,东城', '113.754635', '23.002896', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2439, 506643, 2, 506616, '441900004000', '南城街道办事处', '广东,东莞,南城', '113.753133', '22.987560', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2440, 506662, 2, 506616, '441900005000', '万江街道办事处', '广东,东莞,万江', '113.740409', '23.052146', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2441, 506691, 2, 506616, '441900006000', '莞城街道办事处', '广东,东莞,莞城', '113.751050', '23.053413', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2442, 506700, 2, 506616, '441900101000', '石碣镇', '广东,东莞,石碣', '113.802109', '23.094111', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2443, 506716, 2, 506616, '441900102000', '石龙镇', '广东,东莞,石龙', '113.751765', '23.020536', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2444, 506727, 2, 506616, '441900103000', '茶山镇', '广东,东莞,茶山', '113.751765', '23.020536', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2445, 506746, 2, 506616, '441900104000', '石排镇', '广东,东莞,石排', '113.751765', '23.020536', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2446, 506766, 2, 506616, '441900105000', '企石镇', '广东,东莞,企石', '113.751765', '23.020536', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2447, 506787, 2, 506616, '441900106000', '横沥镇', '广东,东莞,横沥', '113.751765', '23.020536', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2448, 506805, 2, 506616, '441900107000', '桥头镇', '广东,东莞,桥头', '113.751765', '23.020536', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2449, 506823, 2, 506616, '441900108000', '谢岗镇', '广东,东莞,谢岗', '114.141456', '22.972083', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2450, 506836, 2, 506616, '441900109000', '东坑镇', '广东,东莞,东坑', '113.948089', '22.989033', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2451, 506853, 2, 506616, '441900110000', '常平镇', '广东,东莞,常平', '113.992186', '22.975601', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2452, 506887, 2, 506616, '441900111000', '寮步镇', '广东,东莞,寮步', '113.818996', '23.025373', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2453, 506918, 2, 506616, '441900112000', '樟木头镇', '广东,东莞,樟木头镇', '114.083278', '22.914909', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2454, 506930, 2, 506616, '441900113000', '大朗镇', '广东,东莞,大朗', '113.915820', '22.915996', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2455, 506959, 2, 506616, '441900114000', '黄江镇', '广东,东莞,黄江', '113.996039', '22.877840', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2456, 506967, 2, 506616, '441900115000', '清溪镇', '广东,东莞,清溪', '114.164330', '22.844557', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2457, 506990, 2, 506616, '441900116000', '塘厦镇', '广东,东莞,塘厦', '113.774481', '22.791051', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2458, 507015, 2, 506616, '441900117000', '凤岗镇', '广东,东莞,凤岗', '113.751765', '23.020536', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2459, 507028, 2, 506616, '441900118000', '大岭山镇', '广东,东莞,大岭山镇', '113.842223', '22.899965', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2460, 507052, 2, 506616, '441900119000', '长安镇', '广东,东莞,长安', '113.794060', '22.803590', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2461, 507066, 2, 506616, '441900121000', '虎门镇', '广东,东莞,虎门', '113.672560', '22.814835', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2462, 507099, 2, 506616, '441900122000', '厚街镇', '广东,东莞,厚街', '113.751765', '23.020536', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2463, 507124, 2, 506616, '441900123000', '沙田镇', '广东,东莞,沙田', '113.751765', '23.020536', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2464, 507143, 2, 506616, '441900124000', '道滘镇', '广东,东莞,道滘', '113.751765', '23.020536', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2465, 507158, 2, 506616, '441900125000', '洪梅镇', '广东,东莞,洪梅', '113.608903', '22.994717', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2466, 507169, 2, 506616, '441900126000', '麻涌镇', '广东,东莞,麻涌', '113.751765', '23.020536', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2467, 507185, 2, 506616, '441900127000', '望牛墩镇', '广东,东莞,望牛墩镇', '113.656243', '23.055331', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2468, 507208, 2, 506616, '441900128000', '中堂镇', '广东,东莞,中堂', '113.751765', '23.020536', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2469, 507229, 2, 506616, '441900129000', '高埗镇', '广东,东莞,高埗', '113.722126', '23.078713', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2470, 507249, 2, 506616, '441900401000', '松山湖管委会', '广东,东莞,松山湖', '113.909208', '22.960541', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2471, 507251, 2, 506616, '441900402000', '虎门港管委会', '广东,东莞,虎门港', '113.583070', '22.864175', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2472, 507253, 2, 506616, '441900403000', '东莞生态园', '广东,东莞,东莞生态园', '113.927452', '23.063210', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2473, 507256, 2, 507255, '442000001000', '石岐区街道办事处', '广东,中山,石岐区', '113.384930', '22.532046', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2474, 507276, 2, 507255, '442000002000', '东区街道办事处', '广东,中山,东区', '113.392782', '22.517645', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2475, 507287, 2, 507255, '442000003000', '火炬开发区街道办事处', '广东,中山,火炬开发区', '113.480528', '22.566086', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2476, 507295, 2, 507255, '442000004000', '西区街道办事处', '广东,中山,西区', '113.392782', '22.517645', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2477, 507305, 2, 507255, '442000005000', '南区街道办事处', '广东,中山,南区', '113.358509', '22.472530', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2478, 507310, 2, 507255, '442000006000', '五桂山街道办事处', '广东,中山,五桂山', '113.463397', '22.421549', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2479, 507316, 2, 507255, '442000100000', '小榄镇', '广东,中山,小榄', '113.250897', '22.672099', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2480, 507332, 2, 507255, '442000101000', '黄圃镇', '广东,中山,黄圃', '113.335242', '22.709897', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2481, 507349, 2, 507255, '442000102000', '民众镇', '广东,中山,民众', '113.392782', '22.517645', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2482, 507369, 2, 507255, '442000103000', '东凤镇', '广东,中山,东凤', '113.392782', '22.517645', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2483, 507384, 2, 507255, '442000104000', '东升镇', '广东,中山,东升', '113.294393', '22.616908', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2484, 507399, 2, 507255, '442000105000', '古镇镇', '广东,中山,古镇', '113.190869', '22.613406', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2485, 507413, 2, 507255, '442000106000', '沙溪镇', '广东,中山,沙溪', '113.392782', '22.517645', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2486, 507430, 2, 507255, '442000107000', '坦洲镇', '广东,中山,坦洲', '113.460373', '22.265182', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2487, 507445, 2, 507255, '442000108000', '港口镇', '广东,中山,港口', '113.247148', '22.683616', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2488, 507455, 2, 507255, '442000109000', '三角镇', '广东,中山,三角', '113.422371', '22.684688', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2489, 507464, 2, 507255, '442000110000', '横栏镇', '广东,中山,横栏', '113.265845', '22.523201', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2490, 507476, 2, 507255, '442000111000', '南头镇', '广东,中山,南头', '113.392782', '22.517645', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2491, 507483, 2, 507255, '442000112000', '阜沙镇', '广东,中山,阜沙', '113.392782', '22.517645', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2492, 507493, 2, 507255, '442000113000', '南朗镇', '广东,中山,南朗', '113.392782', '22.517645', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2493, 507509, 2, 507255, '442000114000', '三乡镇', '广东,中山,三乡', '113.441614', '22.357754', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2494, 507526, 2, 507255, '442000115000', '板芙镇', '广东,中山,板芙', '113.392782', '22.517645', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2495, 507538, 2, 507255, '442000116000', '大涌镇', '广东,中山,大涌', '113.392782', '22.517645', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2496, 507550, 2, 507255, '442000117000', '神湾镇', '广东,中山,神湾', '113.392782', '22.517645', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2497, 507558, 2, 507557, '445101000000', '市辖区', '广东,潮州', '116.622603', '23.656950', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2498, 507559, 2, 507557, '445102000000', '湘桥区', '广东,潮州,湘桥', '116.628632', '23.674536', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2499, 507748, 2, 507557, '445103000000', '潮安区', '广东,潮州,潮安', '116.678204', '23.462613', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2500, 508223, 2, 507557, '445122000000', '饶平县', '广东,潮州,饶平', '117.003900', '23.663824', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2501, 508649, 2, 508648, '445201000000', '市辖区', '广东,揭阳', '116.372831', '23.549993', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2502, 508650, 2, 508648, '445202000000', '榕城区', '广东,揭阳,榕城', '116.367026', '23.525153', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2503, 508863, 2, 508648, '445203000000', '揭东区', '广东,揭阳,揭东', '116.412015', '23.566127', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2504, 509101, 2, 508648, '445222000000', '揭西县', '广东,揭阳,揭西', '115.841838', '23.431294', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2505, 509449, 2, 508648, '445224000000', '惠来县', '广东,揭阳,惠来', '116.295150', '23.033267', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2506, 509796, 2, 508648, '445281000000', '普宁市', '广东,揭阳,普宁', '116.166004', '23.297642', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2507, 510409, 2, 510408, '445301000000', '市辖区', '广东,云浮', '112.044491', '22.915094', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2508, 510410, 2, 510408, '445302000000', '云城区', '广东,云浮,云城', '112.043857', '22.928115', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2509, 510536, 2, 510408, '445303000000', '云安区', '广东,云浮,云安', '112.003209', '23.071020', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2510, 510660, 2, 510408, '445321000000', '新兴县', '广东,云浮,新兴', '112.225335', '22.695690', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2511, 510878, 2, 510408, '445322000000', '郁南县', '广东,云浮,郁南', '111.535249', '23.234627', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2512, 511102, 2, 510408, '445381000000', '罗定市', '广东,云浮,罗定', '111.570010', '22.768595', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2513, 511464, 2, 511463, '450101000000', '市辖区', '广西,南宁', '108.366543', '22.817002', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2514, 511465, 2, 511463, '450102000000', '兴宁区', '广西,南宁,兴宁', '108.368871', '22.854021', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2515, 511545, 2, 511463, '450103000000', '青秀区', '广西,南宁,青秀', '108.494024', '22.785879', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2516, 511662, 2, 511463, '450105000000', '江南区', '广西,南宁,江南', '108.273158', '22.781632', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2517, 511790, 2, 511463, '450107000000', '西乡塘区', '广西,南宁,西乡塘', '108.306886', '22.832770', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2518, 511960, 2, 511463, '450108000000', '良庆区', '广西,南宁,良庆', '108.322102', '22.759090', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2519, 512044, 2, 511463, '450109000000', '邕宁区', '广西,南宁,邕宁', '108.487369', '22.758390', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2520, 512124, 2, 511463, '450110000000', '武鸣区', '广西,南宁,武鸣', '108.274712', '23.158693', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2521, 512381, 2, 511463, '450123000000', '隆安县', '广西,南宁,隆安', '107.696153', '23.166028', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2522, 512530, 2, 511463, '450124000000', '马山县', '广西,南宁,马山', '108.176979', '23.708192', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2523, 512695, 2, 511463, '450125000000', '上林县', '广西,南宁,上林', '108.604921', '23.431936', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2524, 512838, 2, 511463, '450126000000', '宾阳县', '广西,南宁,宾阳', '108.810326', '23.217787', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2525, 513091, 2, 511463, '450127000000', '横县', '广西,南宁,横县', '109.261384', '22.679932', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2526, 513435, 2, 513434, '450201000000', '市辖区', '广西,柳州', '109.415953', '24.325502', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2527, 513436, 2, 513434, '450202000000', '城中区', '广西,柳州,城中', '109.410736', '24.315602', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2528, 513477, 2, 513434, '450203000000', '鱼峰区', '广西,柳州,鱼峰', '109.452442', '24.318517', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2529, 513569, 2, 513434, '450204000000', '柳南区', '广西,柳州,柳南', '109.385519', '24.336229', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2530, 513661, 2, 513434, '450205000000', '柳北区', '广西,柳州,柳北', '109.402050', '24.362691', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2531, 513772, 2, 513434, '450206000000', '柳江区', '广西,柳州,柳江', '109.326380', '24.254892', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2532, 513938, 2, 513434, '450222000000', '柳城县', '广西,柳州,柳城', '109.244730', '24.651518', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2533, 514091, 2, 513434, '450223000000', '鹿寨县', '广西,柳州,鹿寨', '109.750638', '24.472897', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2534, 514219, 2, 513434, '450224000000', '融安县', '广西,柳州,融安', '109.397538', '25.224550', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2535, 514380, 2, 513434, '450225000000', '融水苗族自治县', '广西,柳州,融水', '109.256334', '25.065934', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2536, 514607, 2, 513434, '450226000000', '三江侗族自治县', '广西,柳州,三江', '109.607675', '25.783198', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2537, 514791, 2, 514790, '450301000000', '市辖区', '广西,桂林', '110.290194', '25.273566', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2538, 514792, 2, 514790, '450302000000', '秀峰区', '广西,桂林,秀峰', '110.264183', '25.273625', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2539, 514824, 2, 514790, '450303000000', '叠彩区', '广西,桂林,叠彩', '110.301723', '25.314001', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2540, 514864, 2, 514790, '450304000000', '象山区', '广西,桂林,象山', '110.281082', '25.261687', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2541, 514911, 2, 514790, '450305000000', '七星区', '广西,桂林,七星', '110.317826', '25.252701', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2542, 514964, 2, 514790, '450311000000', '雁山区', '广西,桂林,雁山', '110.286690', '25.101935', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2543, 515012, 2, 514790, '450312000000', '临桂区', '广西,桂林,临桂', '110.212463', '25.238628', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2544, 515195, 2, 514790, '450321000000', '阳朔县', '广西,桂林,阳朔', '110.496593', '24.778481', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2545, 515319, 2, 514790, '450323000000', '灵川县', '广西,桂林,灵川', '110.325636', '25.409747', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2546, 515481, 2, 514790, '450324000000', '全州县', '广西,桂林,全州', '111.072926', '25.928617', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2547, 515784, 2, 514790, '450325000000', '兴安县', '广西,桂林,兴安', '110.671670', '25.611705', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2548, 515920, 2, 514790, '450326000000', '永福县', '广西,桂林,永福', '109.983076', '24.979856', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2549, 516029, 2, 514790, '450327000000', '灌阳县', '广西,桂林,灌阳', '111.160851', '25.489383', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2550, 516180, 2, 514790, '450328000000', '龙胜各族自治县', '广西,桂林,龙胜各族', '110.011238', '25.797931', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2551, 516317, 2, 514790, '450329000000', '资源县', '广西,桂林,资源', '110.652700', '26.042443', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2552, 516399, 2, 514790, '450330000000', '平乐县', '广西,桂林,平乐', '110.643305', '24.633362', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2553, 516563, 2, 514790, '450331000000', '荔浦县', '广西,桂林,荔浦', '110.395287', '24.487824', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2554, 516721, 2, 514790, '450332000000', '恭城瑶族自治县', '广西,桂林,恭城', '110.830193', '24.822522', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2555, 516859, 2, 516858, '450401000000', '市辖区', '广西,梧州', '111.279115', '23.476962', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2556, 516860, 2, 516858, '450403000000', '万秀区', '广西,梧州,万秀', '111.320542', '23.472962', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2557, 516945, 2, 516858, '450405000000', '长洲区', '广西,梧州,长洲', '111.274777', '23.485695', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2558, 516991, 2, 516858, '450406000000', '龙圩区', '广西,梧州,龙圩', '111.246035', '23.409960', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2559, 517075, 2, 516858, '450421000000', '苍梧县', '广西,梧州,苍梧', '111.544008', '23.845097', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2560, 517230, 2, 516858, '450422000000', '藤县', '广西,梧州,藤县', '110.914849', '23.374984', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2561, 517542, 2, 516858, '450423000000', '蒙山县', '广西,梧州,蒙山', '110.525003', '24.193570', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2562, 517636, 2, 516858, '450481000000', '岑溪市', '广西,梧州,岑溪', '110.994913', '22.918350', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2563, 517934, 2, 517933, '450501000000', '市辖区', '广西,北海', '109.119927', '21.481254', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2564, 517935, 2, 517933, '450502000000', '海城区', '广西,北海,海城', '109.117210', '21.475005', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2565, 518010, 2, 517933, '450503000000', '银海区', '广西,北海,银海', '109.139990', '21.449219', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2566, 518067, 2, 517933, '450512000000', '铁山港区', '广西,北海,铁山港', '109.421581', '21.529128', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2567, 518115, 2, 517933, '450521000000', '合浦县', '广西,北海,合浦', '109.207336', '21.660936', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2568, 518408, 2, 518407, '450601000000', '市辖区', '广西,防城港', '108.353846', '21.686860', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2569, 518409, 2, 518407, '450602000000', '港口区', '广西,防城港,港口', '108.380144', '21.643384', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2570, 518455, 2, 518407, '450603000000', '防城区', '广西,防城港,防城', '108.353499', '21.769212', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2571, 518641, 2, 518407, '450621000000', '上思县', '广西,防城港,上思', '107.983626', '22.153672', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2572, 518762, 2, 518407, '450681000000', '东兴市', '广西,防城港,东兴', '107.971826', '21.547822', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2573, 518809, 2, 518808, '450701000000', '市辖区', '广西,钦州', '108.654146', '21.979933', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2574, 518810, 2, 518808, '450702000000', '钦南区', '广西,钦州,钦南', '108.657210', '21.938860', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2575, 519003, 2, 518808, '450703000000', '钦北区', '广西,钦州,钦北', '108.449110', '22.132761', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2576, 519201, 2, 518808, '450721000000', '灵山县', '广西,钦州,灵山', '109.291007', '22.416537', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2577, 519637, 2, 518808, '450722000000', '浦北县', '广西,钦州,浦北', '109.556953', '22.271651', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2578, 519930, 2, 519929, '450801000000', '市辖区', '广西,贵港', '109.598926', '23.111530', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2579, 519931, 2, 519929, '450802000000', '港北区', '广西,贵港,港北', '109.572240', '23.111531', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2580, 520063, 2, 519929, '450803000000', '港南区', '广西,贵港,港南', '109.599557', '23.075573', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2581, 520240, 2, 519929, '450804000000', '覃塘区', '广西,贵港,覃塘', '109.452662', '23.127149', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2582, 520397, 2, 519929, '450821000000', '平南县', '广西,贵港,平南', '110.392168', '23.539127', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2583, 520707, 2, 519929, '450881000000', '桂平市', '广西,贵港,桂平', '110.079379', '23.394326', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2584, 521167, 2, 521166, '450901000000', '市辖区', '广西,玉林', '110.164756', '22.636379', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2585, 521168, 2, 521166, '450902000000', '玉州区', '广西,玉林,玉州', '110.151147', '22.628102', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2586, 521286, 2, 521166, '450903000000', '福绵区', '广西,玉林,福绵', '110.059439', '22.585557', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2587, 521409, 2, 521166, '450921000000', '容县', '广西,玉林,容县', '110.557874', '22.857823', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2588, 521652, 2, 521166, '450922000000', '陆川县', '广西,玉林,陆川', '110.264052', '22.321048', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2589, 521832, 2, 521166, '450923000000', '博白县', '广西,玉林,博白', '109.975985', '22.273048', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2590, 522220, 2, 521166, '450924000000', '兴业县', '广西,玉林,兴业', '109.875304', '22.736421', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2591, 522448, 2, 521166, '450981000000', '北流市', '广西,玉林,北流', '110.354215', '22.708311', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2592, 522787, 2, 522786, '451001000000', '市辖区', '广西,百色', '106.618201', '23.902333', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2593, 522788, 2, 522786, '451002000000', '右江区', '广西,百色,右江', '106.618645', '23.901383', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2594, 522918, 2, 522786, '451021000000', '田阳县', '广西,百色,田阳', '106.915418', '23.735682', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2595, 523086, 2, 522786, '451022000000', '田东县', '广西,百色,田东', '107.126081', '23.597194', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2596, 523265, 2, 522786, '451023000000', '平果县', '广西,百色,平果', '107.589810', '23.329376', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2597, 523461, 2, 522786, '451024000000', '德保县', '广西,百色,德保', '106.615374', '23.323450', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2598, 523661, 2, 522786, '451026000000', '那坡县', '广西,百色,那坡', '105.832530', '23.387441', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2599, 523801, 2, 522786, '451027000000', '凌云县', '广西,百色,凌云', '106.561310', '24.347557', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2600, 523920, 2, 522786, '451028000000', '乐业县', '广西,百色,乐业', '106.556519', '24.776827', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2601, 524017, 2, 522786, '451029000000', '田林县', '广西,百色,田林', '106.228538', '24.294488', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2602, 524200, 2, 522786, '451030000000', '西林县', '广西,百色,西林', '105.093837', '24.489810', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2603, 524306, 2, 522786, '451031000000', '隆林各族自治县', '广西,百色,隆林各族', '105.344040', '24.770896', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2604, 524502, 2, 522786, '451081000000', '靖西市', '广西,百色,靖西', '106.417549', '23.134766', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2605, 524815, 2, 524814, '451101000000', '市辖区', '广西,贺州', '111.566694', '24.403582', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2606, 524816, 2, 524814, '451102000000', '八步区', '广西,贺州,八步', '111.552096', '24.411805', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2607, 525035, 2, 524814, '451103000000', '平桂区', '广西,贺州,平桂', '111.566694', '24.403582', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2608, 525169, 2, 524814, '451121000000', '昭平县', '广西,贺州,昭平', '110.811287', '24.169480', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2609, 525341, 2, 524814, '451122000000', '钟山县', '广西,贺州,钟山', '111.303111', '24.526022', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2610, 525470, 2, 524814, '451123000000', '富川瑶族自治县', '广西,贺州,富川', '111.277389', '24.814444', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2611, 525639, 2, 525638, '451201000000', '市辖区', '广西,河池', '108.085261', '24.692931', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2612, 525640, 2, 525638, '451202000000', '金城江区', '广西,河池,金城江', '108.037277', '24.689703', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2613, 525798, 2, 525638, '451221000000', '南丹县', '广西,河池,南丹', '107.540722', '24.974486', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2614, 525961, 2, 525638, '451222000000', '天峨县', '广西,河池,天峨', '107.173802', '24.999108', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2615, 526066, 2, 525638, '451223000000', '凤山县', '广西,河池,凤山', '107.042191', '24.546876', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2616, 526174, 2, 525638, '451224000000', '东兰县', '广西,河池,东兰', '107.374294', '24.510842', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2617, 526338, 2, 525638, '451225000000', '罗城仫佬族自治县', '广西,河池,罗城', '108.904707', '24.777413', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2618, 526493, 2, 525638, '451226000000', '环江毛南族自治县', '广西,河池,环江', '108.258028', '24.825664', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2619, 526654, 2, 525638, '451227000000', '巴马瑶族自治县', '广西,河池,巴马', '107.258588', '24.142299', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2620, 526772, 2, 525638, '451228000000', '都安瑶族自治县', '广西,河池,都安', '108.128403', '23.919338', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2621, 527041, 2, 525638, '451229000000', '大化瑶族自治县', '广西,河池,大化', '108.085261', '24.692931', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2622, 527216, 2, 525638, '451281000000', '宜州市', '广西,河池,宜州', '108.636415', '24.485214', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2623, 527444, 2, 527443, '451301000000', '市辖区', '广西,来宾', '109.221465', '23.750306', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2624, 527445, 2, 527443, '451302000000', '兴宾区', '广西,来宾,兴宾', '109.230541', '23.732926', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2625, 527762, 2, 527443, '451321000000', '忻城县', '广西,来宾,忻城', '108.665666', '24.066235', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2626, 527905, 2, 527443, '451322000000', '象州县', '广西,来宾,象州', '109.683985', '23.958528', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2627, 528042, 2, 527443, '451323000000', '武宣县', '广西,来宾,武宣', '109.663207', '23.594110', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2628, 528205, 2, 527443, '451324000000', '金秀瑶族自治县', '广西,来宾,金秀', '110.189462', '24.130374', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2629, 528299, 2, 527443, '451381000000', '合山市', '广西,来宾,合山', '108.886082', '23.806536', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2630, 528340, 2, 528339, '451401000000', '市辖区', '广西,崇左', '107.364711', '22.376532', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2631, 528341, 2, 528339, '451402000000', '江州区', '广西,崇左,江州', '107.353437', '22.405325', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2632, 528494, 2, 528339, '451421000000', '扶绥县', '广西,崇左,扶绥', '107.904187', '22.635013', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2633, 528647, 2, 528339, '451422000000', '宁明县', '广西,崇左,宁明', '107.076457', '22.140192', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2634, 528845, 2, 528339, '451423000000', '龙州县', '广西,崇左,龙州', '106.854451', '22.342797', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2635, 528986, 2, 528339, '451424000000', '大新县', '广西,崇左,大新', '107.200654', '22.829288', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2636, 529159, 2, 528339, '451425000000', '天等县', '广西,崇左,天等', '107.143433', '23.081394', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2637, 529297, 2, 528339, '451481000000', '凭祥市', '广西,崇左,凭祥', '106.766293', '22.094485', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2638, 529346, 2, 529345, '460101000000', '市辖区', '海南,海口', '110.198293', '20.044001', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2639, 529347, 2, 529345, '460105000000', '秀英区', '海南,海口,秀英', '110.293561', '20.007969', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2640, 529451, 2, 529345, '460106000000', '龙华区', '海南,海口,龙华', '110.328492', '20.031007', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2641, 529589, 2, 529345, '460107000000', '琼山区', '海南,海口,琼山', '110.353972', '20.003170', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2642, 529720, 2, 529345, '460108000000', '美兰区', '海南,海口,美兰', '110.366357', '20.029083', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2643, 529879, 2, 529878, '460201000000', '市辖区', '海南,三亚', '109.511909', '18.252847', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2644, 529910, 2, 529878, '460202000000', '海棠区', '海南,三亚,海棠', '109.760778', '18.407516', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2645, 529934, 2, 529878, '460203000000', '吉阳区', '海南,三亚,吉阳', '109.578330', '18.281397', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2646, 529973, 2, 529878, '460204000000', '天涯区', '海南,三亚,天涯', '109.506357', '18.247340', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2647, 530027, 2, 529878, '460205000000', '崖州区', '海南,三亚,崖州', '109.174313', '18.352212', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2648, 530061, 2, 530060, '460321000000', '西沙群岛', '海南,三沙,西沙群岛', '112.338695', '16.831839', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2649, 530064, 2, 530060, '460322000000', '南沙群岛', '海南,三沙,南沙群岛', '112.338695', '16.831839', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2650, 530067, 2, 530060, '460323000000', '中沙群岛的岛礁及其海域', '海南,三沙,中沙群岛的岛礁及其海域', '112.338695', '16.831839', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2651, 530071, 2, 530070, '460400100000', '那大镇', '海南,儋州,那大', '110.349228', '20.017377', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2652, 530112, 2, 530070, '460400101000', '和庆镇', '海南,儋州,和庆', '109.640856', '19.525399', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2653, 530126, 2, 530070, '460400102000', '南丰镇', '海南,儋州,南丰', '110.349228', '20.017377', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2654, 530139, 2, 530070, '460400103000', '大成镇', '海南,儋州,大成', '110.349228', '20.017377', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2655, 530162, 2, 530070, '460400104000', '雅星镇', '海南,儋州,雅星', '110.349228', '20.017377', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2656, 530188, 2, 530070, '460400105000', '兰洋镇', '海南,儋州,兰洋', '110.349228', '20.017377', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2657, 530207, 2, 530070, '460400106000', '光村镇', '海南,儋州,光村', '110.349228', '20.017377', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2658, 530220, 2, 530070, '460400107000', '木棠镇', '海南,儋州,木棠', '110.349228', '20.017377', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2659, 530246, 2, 530070, '460400108000', '海头镇', '海南,儋州,海头', '110.349228', '20.017377', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2660, 530261, 2, 530070, '460400109000', '峨蔓镇', '海南,儋州,峨蔓', '110.349228', '20.017377', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2661, 530275, 2, 530070, '460400110000', '三都镇', '海南,儋州,三都', '110.349228', '20.017377', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2662, 530285, 2, 530070, '460400111000', '王五镇', '海南,儋州,王五', '110.349228', '20.017377', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2663, 530295, 2, 530070, '460400112000', '白马井镇', '海南,儋州,白马井镇', '109.218734', '19.696407', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2664, 530318, 2, 530070, '460400113000', '中和镇', '海南,儋州,中和', '110.349228', '20.017377', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2665, 530331, 2, 530070, '460400114000', '排浦镇', '海南,儋州,排浦', '110.349228', '20.017377', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2666, 530340, 2, 530070, '460400115000', '东成镇', '海南,儋州,东成', '110.349228', '20.017377', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2667, 530361, 2, 530070, '460400116000', '新州镇', '海南,儋州,新州', '110.349228', '20.017377', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2668, 530394, 2, 530070, '460400400000', '国营西培农场', '海南,儋州,国营西培农场', '109.455554', '19.476422', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2669, 530410, 2, 530070, '460400404000', '国营西联农场', '海南,儋州,国营西联农场', '109.539074', '19.673015', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2670, 530431, 2, 530070, '460400405000', '国营蓝洋农场', '海南,儋州,国营蓝洋农场', '109.670723', '19.458984', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2671, 530437, 2, 530070, '460400407000', '国营八一农场', '海南,儋州,国营八一农场', '109.364519', '19.413460', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2672, 530447, 2, 530070, '460400499000', '洋浦经济开发区', '海南,儋州,洋浦经济开发', '109.202064', '19.736941', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2673, 530466, 2, 530070, '460400500000', '华南热作学院', '海南,儋州,华南热作学院', '109.494073', '19.505382', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2674, 530469, 2, 530468, '469001000000', '五指山市', '海南,五指山', '109.516922', '18.775146', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2675, 530552, 2, 530468, '469002000000', '琼海市', '海南,琼海', '110.474579', '19.259140', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2676, 530809, 2, 530468, '469005000000', '文昌市', '海南,文昌', '110.797714', '19.543423', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2677, 531148, 2, 530468, '469006000000', '万宁市', '海南,万宁', '110.391075', '18.795143', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2678, 531426, 2, 530468, '469007000000', '东方市', '海南,东方', '108.651817', '19.095350', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2679, 531647, 2, 530468, '469021000000', '定安县', '海南,定安', '110.358891', '19.681434', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2680, 531811, 2, 530468, '469022000000', '屯昌县', '海南,屯昌', '110.103415', '19.351766', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2681, 531971, 2, 530468, '469023000000', '澄迈县', '海南,澄迈', '110.006755', '19.738521', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2682, 532200, 2, 530468, '469024000000', '临高县', '海南,临高', '109.690508', '19.912026', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2683, 532409, 2, 530468, '469025000000', '白沙黎族自治县', '海南,白沙', '109.451484', '19.224823', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2684, 532558, 2, 530468, '469026000000', '昌江黎族自治县', '海南,昌江', '109.055724', '19.298062', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2685, 532672, 2, 530468, '469027000000', '乐东黎族自治县', '海南,乐东', '109.173055', '18.750260', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2686, 532906, 2, 530468, '469028000000', '陵水黎族自治县', '海南,陵水', '110.037504', '18.506048', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2687, 533053, 2, 530468, '469029000000', '保亭黎族苗族自治县', '海南,保亭', '109.702590', '18.639130', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2688, 533161, 2, 530468, '469030000000', '琼中黎族苗族自治县', '海南,琼中', '109.838389', '19.033369', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2689, 533330, 2, 533329, '500101000000', '万州区', '重庆,万州', '108.408661', '30.807667', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2690, 534019, 2, 533329, '500102000000', '涪陵区', '重庆,涪陵', '107.389298', '29.703113', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2691, 534468, 2, 533329, '500103000000', '渝中区', '重庆,渝中', '106.568892', '29.552750', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2692, 534558, 2, 533329, '500104000000', '大渡口区', '重庆,大渡口', '106.482347', '29.484527', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2693, 534656, 2, 533329, '500105000000', '江北区', '重庆,江北', '106.574271', '29.606703', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2694, 534799, 2, 533329, '500106000000', '沙坪坝区', '重庆,沙坪坝', '106.456878', '29.541145', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2695, 535021, 2, 533329, '500107000000', '九龙坡区', '重庆,九龙坡', '106.510676', '29.502272', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2696, 535262, 2, 533329, '500108000000', '南岸区', '重庆,南岸', '106.644428', '29.500297', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2697, 535428, 2, 533329, '500109000000', '北碚区', '重庆,北碚', '106.395612', '29.805108', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2698, 535629, 2, 533329, '500110000000', '綦江区', '重庆,綦江', '106.651362', '29.028067', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2699, 536131, 2, 533329, '500111000000', '大足区', '重庆,大足', '105.721733', '29.707032', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2700, 536468, 2, 533329, '500112000000', '渝北区', '重庆,渝北', '106.631187', '29.718143', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2701, 536890, 2, 533329, '500113000000', '巴南区', '重庆,巴南', '106.540257', '29.402408', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2702, 537212, 2, 533329, '500114000000', '黔江区', '重庆,黔江', '108.770678', '29.533610', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2703, 537461, 2, 533329, '500115000000', '长寿区', '重庆,长寿', '107.081283', '29.857996', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2704, 537745, 2, 533329, '500116000000', '江津区', '重庆,江津', '106.259281', '29.290069', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2705, 538050, 2, 533329, '500117000000', '合川区', '重庆,合川', '106.276130', '29.972084', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2706, 538493, 2, 533329, '500118000000', '永川区', '重庆,永川', '105.927376', '29.356117', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2707, 538778, 2, 533329, '500119000000', '南川区', '重庆,南川', '107.099266', '29.157891', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2708, 539057, 2, 533329, '500120000000', '璧山区', '重庆,璧山', '106.227305', '29.592024', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2709, 539260, 2, 533329, '500151000000', '铜梁区', '重庆,铜梁', '106.056404', '29.844811', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2710, 539615, 2, 533329, '500152000000', '潼南区', '重庆,潼南', '105.840556', '30.191013', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2711, 539942, 2, 533329, '500153000000', '荣昌区', '重庆,荣昌', '105.594623', '29.405002', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2712, 540131, 2, 533329, '500154000000', '开州区', '重庆,开州', '106.551556', '29.563009', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2713, 540701, 2, 540700, '500228000000', '梁平县', '重庆,梁平', '107.769312', '30.654203', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2714, 541080, 2, 540700, '500229000000', '城口县', '重庆,城口', '108.664214', '31.947633', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2715, 541310, 2, 540700, '500230000000', '丰都县', '重庆,丰都', '107.730895', '29.863500', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2716, 541671, 2, 540700, '500231000000', '垫江县', '重庆,垫江', '107.333390', '30.327717', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2717, 541999, 2, 540700, '500232000000', '武隆县', '重庆,武隆', '107.760025', '29.325601', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2718, 542236, 2, 540700, '500233000000', '忠县', '重庆,忠县', '108.039002', '30.299560', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2719, 542631, 2, 540700, '500235000000', '云阳县', '重庆,云阳', '108.697324', '30.930613', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2720, 543152, 2, 540700, '500236000000', '奉节县', '重庆,奉节', '109.463987', '31.018498', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2721, 543575, 2, 540700, '500237000000', '巫山县', '重庆,巫山', '109.879153', '31.074834', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2722, 543943, 2, 540700, '500238000000', '巫溪县', '重庆,巫溪', '109.570062', '31.398604', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2723, 544307, 2, 540700, '500240000000', '石柱土家族自治县', '重庆,石柱', '108.114069', '29.999285', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2724, 544583, 2, 540700, '500241000000', '秀山土家族苗族自治县', '重庆,秀山', '109.007094', '28.447997', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2725, 544878, 2, 540700, '500242000000', '酉阳土家族苗族自治县', '重庆,酉阳', '108.767747', '28.841244', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2726, 545196, 2, 540700, '500243000000', '彭水苗族土家族自治县', '重庆,彭水', '108.165538', '29.293902', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2727, 545534, 2, 545533, '510101000000', '市辖区', '四川,成都', '104.066541', '30.572269', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2728, 545535, 2, 545533, '510104000000', '锦江区', '四川,成都,锦江', '104.080989', '30.657689', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2729, 545669, 2, 545533, '510105000000', '青羊区', '四川,成都,青羊', '104.062499', '30.674406', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2730, 545763, 2, 545533, '510106000000', '金牛区', '四川,成都,金牛', '104.052236', '30.691359', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2731, 545889, 2, 545533, '510107000000', '武侯区', '四川,成都,武侯', '104.043390', '30.641982', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2732, 546035, 2, 545533, '510108000000', '成华区', '四川,成都,成华', '104.101255', '30.660122', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2733, 546151, 2, 545533, '510112000000', '龙泉驿区', '四川,成都,龙泉驿', '104.274632', '30.556507', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2734, 546306, 2, 545533, '510113000000', '青白江区', '四川,成都,青白江', '104.250877', '30.878681', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2735, 546441, 2, 545533, '510114000000', '新都区', '四川,成都,新都', '104.158705', '30.823499', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2736, 546710, 2, 545533, '510115000000', '温江区', '四川,成都,温江', '103.856646', '30.682203', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2737, 546835, 2, 545533, '510116000000', '双流区', '四川,成都,双流', '103.923588', '30.574488', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2738, 547144, 2, 545533, '510121000000', '金堂县', '四川,成都,金堂', '104.412005', '30.862017', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2739, 547398, 2, 545533, '510124000000', '郫县', '四川,成都,郫县', '103.901092', '30.795854', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2740, 547634, 2, 545533, '510129000000', '大邑县', '四川,成都,大邑', '103.511875', '30.572269', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2741, 547873, 2, 545533, '510131000000', '蒲江县', '四川,成都,蒲江', '103.506498', '30.196789', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2742, 548018, 2, 545533, '510132000000', '新津县', '四川,成都,新津', '103.811345', '30.410222', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2743, 548137, 2, 545533, '510181000000', '都江堰市', '四川,成都,都江堰', '103.646912', '30.988435', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2744, 548412, 2, 545533, '510182000000', '彭州市', '四川,成都,彭州', '103.958013', '30.990165', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2745, 548788, 2, 545533, '510183000000', '邛崃市', '四川,成都,邛崃', '103.464156', '30.410275', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2746, 549084, 2, 545533, '510184000000', '崇州市', '四川,成都,崇州', '103.673001', '30.630122', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2747, 549363, 2, 545533, '510185000000', '简阳市', '四川,成都,简阳', '104.546774', '30.410755', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2748, 550276, 2, 550275, '510301000000', '市辖区', '四川,自贡', '104.778442', '29.339030', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2749, 550277, 2, 550275, '510302000000', '自流井区', '四川,自贡,自流井', '104.777191', '29.337430', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2750, 550413, 2, 550275, '510303000000', '贡井区', '四川,自贡,贡井', '104.715117', '29.345546', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2751, 550609, 2, 550275, '510304000000', '大安区', '四川,自贡,大安', '104.773968', '29.363634', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2752, 550816, 2, 550275, '510311000000', '沿滩区', '四川,自贡,沿滩', '104.874073', '29.272581', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2753, 551023, 2, 550275, '510321000000', '荣县', '四川,自贡,荣县', '104.417388', '29.445410', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2754, 551398, 2, 550275, '510322000000', '富顺县', '四川,自贡,富顺', '104.975048', '29.181430', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2755, 551810, 2, 551809, '510401000000', '市辖区', '四川,攀枝花', '101.718637', '26.582347', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2756, 551811, 2, 551809, '510402000000', '东区', '四川,攀枝花,东区', '101.718637', '26.582347', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2757, 551891, 2, 551809, '510403000000', '西区', '四川,攀枝花,西区', '101.718637', '26.582347', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2758, 551941, 2, 551809, '510411000000', '仁和区', '四川,攀枝花,仁和', '101.738528', '26.497765', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2759, 552057, 2, 551809, '510421000000', '米易县', '四川,攀枝花,米易', '102.110339', '26.890689', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2760, 552169, 2, 551809, '510422000000', '盐边县', '四川,攀枝花,盐边', '101.855071', '26.683213', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2761, 552359, 2, 552358, '510501000000', '市辖区', '四川,泸州', '105.442258', '28.871810', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2762, 552360, 2, 552358, '510502000000', '江阳区', '四川,泸州,江阳', '105.435009', '28.878818', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2763, 552536, 2, 552358, '510503000000', '纳溪区', '四川,泸州,纳溪', '105.371151', '28.773428', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2764, 552755, 2, 552358, '510504000000', '龙马潭区', '四川,泸州,龙马潭', '105.437765', '28.913221', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2765, 552858, 2, 552358, '510521000000', '泸县', '四川,泸州,泸县', '105.381893', '29.151534', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2766, 553181, 2, 552358, '510522000000', '合江县', '四川,泸州,合江', '105.831067', '28.811203', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2767, 553536, 2, 552358, '510524000000', '叙永县', '四川,泸州,叙永', '105.444765', '28.155801', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2768, 553823, 2, 552358, '510525000000', '古蔺县', '四川,泸州,古蔺', '105.812602', '28.038802', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2769, 554143, 2, 554142, '510601000000', '市辖区', '四川,德阳', '104.397894', '31.126855', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2770, 554144, 2, 554142, '510603000000', '旌阳区', '四川,德阳,旌阳', '104.416943', '31.142498', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2771, 554397, 2, 554142, '510623000000', '中江县', '四川,德阳,中江', '104.678749', '31.033051', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2772, 555280, 2, 554142, '510626000000', '罗江县', '四川,德阳,罗江', '104.510249', '31.317045', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2773, 555418, 2, 554142, '510681000000', '广汉市', '四川,德阳,广汉', '104.282331', '30.976165', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2774, 555660, 2, 554142, '510682000000', '什邡市', '四川,德阳,什邡', '104.167501', '31.126780', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2775, 555848, 2, 554142, '510683000000', '绵竹市', '四川,德阳,绵竹', '104.220750', '31.338077', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2776, 556078, 2, 556077, '510701000000', '市辖区', '四川,绵阳', '104.679114', '31.467450', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2777, 556079, 2, 556077, '510703000000', '涪城区', '四川,绵阳,涪城', '104.756944', '31.455101', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2778, 556357, 2, 556077, '510704000000', '游仙区', '四川,绵阳,游仙', '104.766393', '31.473779', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2779, 556705, 2, 556077, '510705000000', '安州区', '四川,绵阳,安州', '104.679114', '31.467450', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2780, 556985, 2, 556077, '510722000000', '三台县', '四川,绵阳,三台', '105.094586', '31.095979', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2781, 558091, 2, 556077, '510723000000', '盐亭县', '四川,绵阳,盐亭', '105.389453', '31.208363', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2782, 558648, 2, 556077, '510725000000', '梓潼县', '四川,绵阳,梓潼', '105.170845', '31.642718', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2783, 559030, 2, 556077, '510726000000', '北川羌族自治县', '四川,绵阳,北川', '104.467970', '31.617203', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2784, 559397, 2, 556077, '510727000000', '平武县', '四川,绵阳,平武', '104.555583', '32.409675', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2785, 559687, 2, 556077, '510781000000', '江油市', '四川,绵阳,江油', '104.745877', '31.778025', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2786, 560192, 2, 560191, '510801000000', '市辖区', '四川,广元', '105.843357', '32.435435', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2787, 560193, 2, 560191, '510802000000', '利州区', '四川,广元,利州', '105.845218', '32.433898', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2788, 560469, 2, 560191, '510811000000', '昭化区', '四川,广元,昭化', '105.964121', '32.322788', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2789, 560735, 2, 560191, '510812000000', '朝天区', '四川,广元,朝天', '105.890445', '32.643982', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2790, 560982, 2, 560191, '510821000000', '旺苍县', '四川,广元,旺苍', '106.289905', '32.228917', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2791, 561413, 2, 560191, '510822000000', '青川县', '四川,广元,青川', '105.238842', '32.575485', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2792, 561756, 2, 560191, '510823000000', '剑阁县', '四川,广元,剑阁', '105.524766', '32.287723', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2793, 562393, 2, 560191, '510824000000', '苍溪县', '四川,广元,苍溪', '105.934801', '31.732432', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2794, 563243, 2, 563242, '510901000000', '市辖区', '四川,遂宁', '105.592898', '30.532847', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2795, 563244, 2, 563242, '510903000000', '船山区', '四川,遂宁,船山', '105.568297', '30.525475', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2796, 563569, 2, 563242, '510904000000', '安居区', '四川,遂宁,安居', '105.456342', '30.355379', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2797, 564115, 2, 563242, '510921000000', '蓬溪县', '四川,遂宁,蓬溪', '105.707570', '30.757575', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2798, 564699, 2, 563242, '510922000000', '射洪县', '四川,遂宁,射洪', '105.388405', '30.870986', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2799, 565387, 2, 563242, '510923000000', '大英县', '四川,遂宁,大英', '105.236904', '30.594337', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2800, 565736, 2, 565735, '511001000000', '市辖区', '四川,内江', '105.058433', '29.580228', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2801, 565737, 2, 565735, '511002000000', '市中区', '四川,内江,市中', '105.067597', '29.587053', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2802, 565956, 2, 565735, '511011000000', '东兴区', '四川,内江,东兴', '105.075490', '29.592756', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2803, 566504, 2, 565735, '511024000000', '威远县', '四川,内江,威远', '104.668879', '29.527440', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2804, 566895, 2, 565735, '511025000000', '资中县', '四川,内江,资中', '104.851944', '29.764059', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2805, 567769, 2, 565735, '511028000000', '隆昌县', '四川,内江,隆昌', '105.287612', '29.339476', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2806, 568203, 2, 568202, '511101000000', '市辖区', '四川,乐山', '103.765568', '29.552106', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2807, 568204, 2, 568202, '511102000000', '市中区', '四川,乐山,市中', '103.761330', '29.555375', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2808, 568549, 2, 568202, '511111000000', '沙湾区', '四川,乐山,沙湾', '103.549991', '29.413091', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2809, 568712, 2, 568202, '511112000000', '五通桥区', '四川,乐山,五通桥', '103.818009', '29.406932', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2810, 568897, 2, 568202, '511113000000', '金口河区', '四川,乐山,金口河', '103.078621', '29.244345', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2811, 568949, 2, 568202, '511123000000', '犍为县', '四川,乐山,犍为', '103.949326', '29.208171', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2812, 569368, 2, 568202, '511124000000', '井研县', '四川,乐山,井研', '104.069726', '29.651287', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2813, 569627, 2, 568202, '511126000000', '夹江县', '四川,乐山,夹江', '103.571657', '29.737630', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2814, 569905, 2, 568202, '511129000000', '沐川县', '四川,乐山,沐川', '103.902335', '28.956647', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2815, 570138, 2, 568202, '511132000000', '峨边彝族自治县', '四川,乐山,峨边', '103.765568', '29.552106', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2816, 570296, 2, 568202, '511133000000', '马边彝族自治县', '四川,乐山,马边', '103.546348', '28.835521', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2817, 570440, 2, 568202, '511181000000', '峨眉山市', '四川,乐山,峨眉山', '103.484504', '29.601199', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2818, 570734, 2, 570733, '511301000000', '市辖区', '四川,南充', '106.110698', '30.837793', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2819, 570735, 2, 570733, '511302000000', '顺庆区', '四川,南充,顺庆', '106.092399', '30.796486', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2820, 571078, 2, 570733, '511303000000', '高坪区', '四川,南充,高坪', '106.118808', '30.781623', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2821, 571510, 2, 570733, '511304000000', '嘉陵区', '四川,南充,嘉陵', '106.071793', '30.758748', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2822, 572146, 2, 570733, '511321000000', '南部县', '四川,南充,南部', '106.036584', '31.347467', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2823, 573339, 2, 570733, '511322000000', '营山县', '四川,南充,营山', '106.565473', '31.076458', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2824, 574080, 2, 570733, '511323000000', '蓬安县', '四川,南充,蓬安', '106.412151', '31.029097', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2825, 574767, 2, 570733, '511324000000', '仪陇县', '四川,南充,仪陇', '106.303042', '31.271562', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2826, 575761, 2, 570733, '511325000000', '西充县', '四川,南充,西充', '105.900878', '30.995669', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2827, 576427, 2, 570733, '511381000000', '阆中市', '四川,南充,阆中', '106.005047', '31.558357', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2828, 576993, 2, 576992, '511401000000', '市辖区', '四川,眉山', '103.848538', '30.075439', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2829, 576994, 2, 576992, '511402000000', '东坡区', '四川,眉山,东坡', '103.831752', '30.042345', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2830, 577323, 2, 576992, '511403000000', '彭山区', '四川,眉山,彭山', '103.872950', '30.193056', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2831, 577445, 2, 576992, '511421000000', '仁寿县', '四川,眉山,仁寿', '104.134082', '29.995630', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2832, 578124, 2, 576992, '511423000000', '洪雅县', '四川,眉山,洪雅', '103.372863', '29.904890', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2833, 578299, 2, 576992, '511424000000', '丹棱县', '四川,眉山,丹棱', '103.512733', '30.014448', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2834, 578385, 2, 576992, '511425000000', '青神县', '四川,眉山,青神', '103.846688', '29.831358', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2835, 578486, 2, 578485, '511501000000', '市辖区', '四川,宜宾', '104.643215', '28.751768', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2836, 578487, 2, 578485, '511502000000', '翠屏区', '四川,宜宾,翠屏', '104.620009', '28.765690', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2837, 578857, 2, 578485, '511503000000', '南溪区', '四川,宜宾,南溪', '104.969882', '28.845626', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2838, 579114, 2, 578485, '511521000000', '宜宾县', '四川,宜宾,宜宾', '104.533213', '28.690045', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2839, 579727, 2, 578485, '511523000000', '江安县', '四川,宜宾,江安', '105.066943', '28.723999', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2840, 580070, 2, 578485, '511524000000', '长宁县', '四川,宜宾,长宁', '104.921174', '28.582169', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2841, 580388, 2, 578485, '511525000000', '高县', '四川,宜宾,高县', '104.517739', '28.436226', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2842, 580725, 2, 578485, '511526000000', '珙县', '四川,宜宾,珙县', '104.709202', '28.438630', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2843, 581025, 2, 578485, '511527000000', '筠连县', '四川,宜宾,筠连', '104.510988', '28.163860', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2844, 581304, 2, 578485, '511528000000', '兴文县', '四川,宜宾,兴文', '105.236325', '28.303614', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2845, 581579, 2, 578485, '511529000000', '屏山县', '四川,宜宾,屏山', '104.345974', '28.828482', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2846, 581871, 2, 581870, '511601000000', '市辖区', '四川,广安', '106.633212', '30.455961', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2847, 581872, 2, 581870, '511602000000', '广安区', '四川,广安,广安', '106.641608', '30.474003', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2848, 582526, 2, 581870, '511603000000', '前锋区', '四川,广安,前锋', '106.893277', '30.496300', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2849, 582827, 2, 581870, '511621000000', '岳池县', '四川,广安,岳池', '106.440114', '30.537863', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2850, 583751, 2, 581870, '511622000000', '武胜县', '四川,广安,武胜', '106.295764', '30.348772', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2851, 584332, 2, 581870, '511623000000', '邻水县', '四川,广安,邻水', '106.930380', '30.334769', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2852, 584900, 2, 581870, '511681000000', '华蓥市', '四川,广安,华蓥', '106.783088', '30.390435', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2853, 585050, 2, 585049, '511701000000', '市辖区', '四川,达州', '107.468023', '31.209571', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2854, 585051, 2, 585049, '511702000000', '通川区', '四川,达州,通川', '107.504517', '31.214724', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2855, 585347, 2, 585049, '511703000000', '达川区', '四川,达州,达川', '107.511845', '31.196118', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2856, 586085, 2, 585049, '511722000000', '宣汉县', '四川,达州,宣汉', '107.727191', '31.353835', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2857, 586709, 2, 585049, '511723000000', '开江县', '四川,达州,开江', '107.868736', '31.082987', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2858, 586957, 2, 585049, '511724000000', '大竹县', '四川,达州,大竹', '107.204744', '30.736266', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2859, 587452, 2, 585049, '511725000000', '渠县', '四川,达州,渠县', '106.972996', '30.836659', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2860, 588071, 2, 585049, '511781000000', '万源市', '四川,达州,万源', '108.034657', '32.081631', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2861, 588539, 2, 588538, '511801000000', '市辖区', '四川,雅安', '103.013261', '29.980537', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2862, 588540, 2, 588538, '511802000000', '雨城区', '四川,雅安,雨城', '103.033083', '30.005447', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2863, 588771, 2, 588538, '511803000000', '名山区', '四川,雅安,名山', '103.109185', '30.069954', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2864, 589001, 2, 588538, '511822000000', '荥经县', '四川,雅安,荥经', '102.846738', '29.792931', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2865, 589135, 2, 588538, '511823000000', '汉源县', '四川,雅安,汉源', '102.645453', '29.347187', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2866, 589376, 2, 588538, '511824000000', '石棉县', '四川,雅安,石棉', '102.359462', '29.227874', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2867, 589494, 2, 588538, '511825000000', '天全县', '四川,雅安,天全', '102.758317', '30.066713', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2868, 589654, 2, 588538, '511826000000', '芦山县', '四川,雅安,芦山', '102.928260', '30.144084', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2869, 589711, 2, 588538, '511827000000', '宝兴县', '四川,雅安,宝兴', '102.814531', '30.368126', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2870, 589780, 2, 589779, '511901000000', '市辖区', '四川,巴中', '106.747477', '31.867903', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2871, 589781, 2, 589779, '511902000000', '巴州区', '四川,巴中,巴州', '106.768878', '31.851478', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2872, 590246, 2, 589779, '511903000000', '恩阳区', '四川,巴中,恩阳', '106.655347', '31.786691', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2873, 590712, 2, 589779, '511921000000', '通江县', '四川,巴中,通江', '107.245033', '31.911705', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2874, 591330, 2, 589779, '511922000000', '南江县', '四川,巴中,南江', '106.828697', '32.346589', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2875, 592003, 2, 589779, '511923000000', '平昌县', '四川,巴中,平昌', '107.104008', '31.560874', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2876, 592599, 2, 592598, '512001000000', '市辖区', '四川,资阳', '104.627636', '30.128901', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2877, 592600, 2, 592598, '512002000000', '雁江区', '四川,资阳,雁江', '104.677096', '30.108210', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2878, 593157, 2, 592598, '512021000000', '安岳县', '四川,资阳,安岳', '105.335613', '30.097246', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2879, 594205, 2, 592598, '512022000000', '乐至县', '四川,资阳,乐至', '105.020204', '30.276120', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2880, 594865, 2, 594864, '513201000000', '马尔康市', '四川,阿坝,马尔康', '102.206504', '31.905813', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2881, 594988, 2, 594864, '513221000000', '汶川县', '四川,阿坝,汶川', '103.590387', '31.476822', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2882, 595128, 2, 594864, '513222000000', '理县', '四川,阿坝,理县', '103.166853', '31.436473', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2883, 595230, 2, 594864, '513223000000', '茂县', '四川,阿坝,茂县', '103.853522', '31.681154', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2884, 595404, 2, 594864, '513224000000', '松潘县', '四川,阿坝,松潘', '103.604698', '32.655325', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2885, 595579, 2, 594864, '513225000000', '九寨沟县', '四川,阿坝,九寨沟', '104.243841', '33.252056', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2886, 595731, 2, 594864, '513226000000', '金川县', '四川,阿坝,金川', '102.063829', '31.476277', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2887, 595864, 2, 594864, '513227000000', '小金县', '四川,阿坝,小金', '102.364373', '30.999031', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2888, 596022, 2, 594864, '513228000000', '黑水县', '四川,阿坝,黑水', '102.990108', '32.061895', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2889, 596167, 2, 594864, '513230000000', '壤塘县', '四川,阿坝,壤塘', '100.978526', '32.265796', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2890, 596243, 2, 594864, '513231000000', '阿坝县', '四川,阿坝,阿坝', '101.706655', '32.902459', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2891, 596354, 2, 594864, '513232000000', '若尔盖县', '四川,阿坝,若尔盖', '102.961798', '33.575892', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2892, 596475, 2, 594864, '513233000000', '红原县', '四川,阿坝,红原', '102.544405', '32.790891', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2893, 596526, 2, 596525, '513301000000', '康定市', '四川,甘孜,康定', '101.957146', '29.998436', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2894, 596792, 2, 596525, '513322000000', '泸定县', '四川,甘孜,泸定', '102.234618', '29.914160', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2895, 596957, 2, 596525, '513323000000', '丹巴县', '四川,甘孜,丹巴', '101.890358', '30.878577', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2896, 597158, 2, 596525, '513324000000', '九龙县', '四川,甘孜,九龙', '101.507294', '29.000348', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2897, 597242, 2, 596525, '513325000000', '雅江县', '四川,甘孜,雅江', '101.014425', '30.031533', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2898, 597374, 2, 596525, '513326000000', '道孚县', '四川,甘孜,道孚', '101.125237', '30.979545', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2899, 597557, 2, 596525, '513327000000', '炉霍县', '四川,甘孜,炉霍', '100.676372', '31.391790', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2900, 597749, 2, 596525, '513328000000', '甘孜县', '四川,甘孜,甘孜', '99.992671', '31.622934', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2901, 597992, 2, 596525, '513329000000', '新龙县', '四川,甘孜,新龙', '100.311369', '30.939169', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2902, 598162, 2, 596525, '513330000000', '德格县', '四川,甘孜,德格', '98.580915', '31.806118', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2903, 598363, 2, 596525, '513331000000', '白玉县', '四川,甘孜,白玉', '98.824182', '31.209913', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2904, 598540, 2, 596525, '513332000000', '石渠县', '四川,甘孜,石渠', '98.102900', '32.978960', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2905, 598733, 2, 596525, '513333000000', '色达县', '四川,甘孜,色达', '100.332743', '32.268129', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2906, 598889, 2, 596525, '513334000000', '理塘县', '四川,甘孜,理塘', '100.269818', '29.996049', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2907, 599129, 2, 596525, '513335000000', '巴塘县', '四川,甘孜,巴塘', '99.110712', '30.004677', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2908, 599272, 2, 596525, '513336000000', '乡城县', '四川,甘孜,乡城', '99.798435', '28.931172', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2909, 599377, 2, 596525, '513337000000', '稻城县', '四川,甘孜,稻城', '100.298403', '29.037007', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2910, 599516, 2, 596525, '513338000000', '得荣县', '四川,甘孜,得荣', '99.286335', '28.713037', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2911, 599660, 2, 599659, '513401000000', '西昌市', '四川,凉山,西昌', '102.264449', '27.894504', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2912, 599974, 2, 599659, '513422000000', '木里藏族自治县', '四川,凉山,木里', '101.280206', '27.928835', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2913, 600127, 2, 599659, '513423000000', '盐源县', '四川,凉山,盐源', '101.509188', '27.422645', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2914, 600415, 2, 599659, '513424000000', '德昌县', '四川,凉山,德昌', '102.175670', '27.402839', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2915, 600579, 2, 599659, '513425000000', '会理县', '四川,凉山,会理', '102.244683', '26.655026', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2916, 600938, 2, 599659, '513426000000', '会东县', '四川,凉山,会东', '102.577961', '26.634669', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2917, 601284, 2, 599659, '513427000000', '宁南县', '四川,凉山,宁南', '102.759634', '27.066384', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2918, 601444, 2, 599659, '513428000000', '普格县', '四川,凉山,普格', '102.540901', '27.376413', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2919, 601640, 2, 599659, '513429000000', '布拖县', '四川,凉山,布拖', '102.811631', '27.706192', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2920, 601863, 2, 599659, '513430000000', '金阳县', '四川,凉山,金阳', '103.248772', '27.696861', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2921, 602076, 2, 599659, '513431000000', '昭觉县', '四川,凉山,昭觉', '102.842611', '28.014088', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2922, 602396, 2, 599659, '513432000000', '喜德县', '四川,凉山,喜德', '102.412518', '28.306726', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2923, 602594, 2, 599659, '513433000000', '冕宁县', '四川,凉山,冕宁', '102.177010', '28.549657', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2924, 602865, 2, 599659, '513434000000', '越西县', '四川,凉山,越西', '102.507680', '28.639801', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2925, 603201, 2, 599659, '513435000000', '甘洛县', '四川,凉山,甘洛', '102.771749', '28.966069', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2926, 603460, 2, 599659, '513436000000', '美姑县', '四川,凉山,美姑', '103.132180', '28.328640', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2927, 603792, 2, 599659, '513437000000', '雷波县', '四川,凉山,雷波', '103.571696', '28.262683', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2928, 604133, 2, 604132, '520101000000', '市辖区', '贵州,贵阳', '106.630153', '26.647661', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2929, 604134, 2, 604132, '520102000000', '南明区', '贵州,贵阳,南明', '106.714371', '26.567944', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2930, 604342, 2, 604132, '520103000000', '云岩区', '贵州,贵阳,云岩', '106.630153', '26.647661', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2931, 604530, 2, 604132, '520111000000', '花溪区', '贵州,贵阳,花溪', '106.670258', '26.409817', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2932, 604769, 2, 604132, '520112000000', '乌当区', '贵州,贵阳,乌当', '106.630153', '26.647661', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2933, 604883, 2, 604132, '520113000000', '白云区', '贵州,贵阳,白云', '106.630153', '26.647661', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2934, 604989, 2, 604132, '520115000000', '观山湖区', '贵州,贵阳,观山湖', '106.622452', '26.601450', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2935, 605114, 2, 604132, '520121000000', '开阳县', '贵州,贵阳,开阳', '106.965088', '27.057764', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2936, 605264, 2, 604132, '520122000000', '息烽县', '贵州,贵阳,息烽', '106.740410', '27.090479', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2937, 605453, 2, 604132, '520123000000', '修文县', '贵州,贵阳,修文', '106.592110', '26.838926', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2938, 605593, 2, 604132, '520181000000', '清镇市', '贵州,贵阳,清镇', '106.470711', '26.556080', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2939, 605835, 2, 605834, '520201000000', '钟山区', '贵州,六盘水,钟山', '104.843555', '26.574979', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2940, 605994, 2, 605834, '520203000000', '六枝特区', '贵州,六盘水,六枝特', '105.480029', '26.201228', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2941, 606258, 2, 605834, '520221000000', '水城县', '贵州,六盘水,水城', '104.957831', '26.547904', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2942, 606493, 2, 605834, '520222000000', '盘县', '贵州,六盘水,盘县', '104.471535', '25.710002', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2943, 607030, 2, 607029, '520301000000', '市辖区', '贵州,遵义', '106.927389', '27.725654', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2944, 607031, 2, 607029, '520302000000', '红花岗区', '贵州,遵义,红花岗', '106.893709', '27.644755', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2945, 607235, 2, 607029, '520303000000', '汇川区', '贵州,遵义,汇川', '106.934270', '27.750125', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2946, 607385, 2, 607029, '520304000000', '播州区', '贵州,遵义,播州', '106.927389', '27.725654', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2947, 607584, 2, 607029, '520322000000', '桐梓县', '贵州,遵义,桐梓', '106.825644', '28.133583', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2948, 607833, 2, 607029, '520323000000', '绥阳县', '贵州,遵义,绥阳', '107.191222', '27.946222', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2949, 607966, 2, 607029, '520324000000', '正安县', '贵州,遵义,正安', '107.453945', '28.553285', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2950, 608138, 2, 607029, '520325000000', '道真仡佬族苗族自治县', '贵州,遵义,道真', '106.927389', '27.725654', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2951, 608236, 2, 607029, '520326000000', '务川仡佬族苗族自治县', '贵州,遵义,务川', '107.898957', '28.563086', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2952, 608370, 2, 607029, '520327000000', '凤冈县', '贵州,遵义,凤冈', '107.716356', '27.954695', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2953, 608471, 2, 607029, '520328000000', '湄潭县', '贵州,遵义,湄潭', '107.465407', '27.749055', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2954, 608620, 2, 607029, '520329000000', '余庆县', '贵州,遵义,余庆', '107.905278', '27.215420', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2955, 608701, 2, 607029, '520330000000', '习水县', '贵州,遵义,习水', '106.197138', '28.331270', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2956, 608974, 2, 607029, '520381000000', '赤水市', '贵州,遵义,赤水', '105.697472', '28.590337', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2957, 609114, 2, 607029, '520382000000', '仁怀市', '贵州,遵义,仁怀', '106.400342', '27.791650', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2958, 609310, 2, 609309, '520401000000', '市辖区', '贵州,安顺', '105.947593', '26.253072', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2959, 609311, 2, 609309, '520402000000', '西秀区', '贵州,安顺,西秀', '105.965535', '26.245433', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2960, 609686, 2, 609309, '520403000000', '平坝区', '贵州,安顺,平坝', '106.255557', '26.405502', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2961, 609845, 2, 609309, '520422000000', '普定县', '贵州,安顺,普定', '105.743196', '26.301446', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2962, 610030, 2, 609309, '520423000000', '镇宁布依族苗族自治县', '贵州,安顺,镇宁', '105.770402', '26.057362', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2963, 610256, 2, 609309, '520424000000', '关岭布依族苗族自治县', '贵州,安顺,关岭', '105.622053', '25.940378', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2964, 610426, 2, 609309, '520425000000', '紫云苗族布依族自治县', '贵州,安顺,紫云', '106.087216', '25.755886', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2965, 610608, 2, 610607, '520501000000', '市辖区', '贵州,毕节', '105.283992', '27.302589', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2966, 610609, 2, 610607, '520502000000', '七星关区', '贵州,毕节,七星关', '105.305138', '27.298494', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2967, 611207, 2, 610607, '520521000000', '大方县', '贵州,毕节,大方', '105.613174', '27.141682', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2968, 611627, 2, 610607, '520522000000', '黔西县', '贵州,毕节,黔西', '106.033544', '27.007713', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2969, 612043, 2, 610607, '520523000000', '金沙县', '贵州,毕节,金沙', '106.220228', '27.459214', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2970, 612308, 2, 610607, '520524000000', '织金县', '贵州,毕节,织金', '105.770542', '26.663450', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2971, 612915, 2, 610607, '520525000000', '纳雍县', '贵州,毕节,纳雍', '105.382715', '26.777645', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2972, 613369, 2, 610607, '520526000000', '威宁彝族回族苗族自治县', '贵州,毕节,威宁', '104.278740', '26.856210', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2973, 614035, 2, 610607, '520527000000', '赫章县', '贵州,毕节,赫章', '104.727418', '27.123079', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2974, 614531, 2, 614530, '520601000000', '市辖区', '贵州,铜仁', '109.189598', '27.731514', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2975, 614532, 2, 614530, '520602000000', '碧江区', '贵州,铜仁,碧江', '109.181122', '27.690653', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2976, 614636, 2, 614530, '520603000000', '万山区', '贵州,铜仁,万山', '109.213644', '27.517896', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2977, 614733, 2, 614530, '520621000000', '江口县', '贵州,铜仁,江口', '108.839557', '27.699650', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2978, 614900, 2, 614530, '520622000000', '玉屏侗族自治县', '贵州,铜仁,玉屏', '108.914680', '27.243012', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2979, 615001, 2, 614530, '520623000000', '石阡县', '贵州,铜仁,石阡', '108.223612', '27.513829', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2980, 615331, 2, 614530, '520624000000', '思南县', '贵州,铜仁,思南', '108.253873', '27.937560', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2981, 615886, 2, 614530, '520625000000', '印江土家族苗族自治县', '贵州,铜仁,印江', '108.409752', '27.994247', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2982, 616278, 2, 614530, '520626000000', '德江县', '贵州,铜仁,德江', '108.119807', '28.263964', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2983, 616644, 2, 614530, '520627000000', '沿河土家族自治县', '贵州,铜仁,沿河', '108.503870', '28.563928', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2984, 617116, 2, 614530, '520628000000', '松桃苗族自治县', '贵州,铜仁,松桃', '109.202886', '28.154071', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2985, 617671, 2, 617670, '522301000000', '兴义市', '贵州,黔西南,兴义', '104.895467', '25.092040', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2986, 617923, 2, 617670, '522322000000', '兴仁县', '贵州,黔西南,兴仁', '105.186238', '25.435183', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2987, 618102, 2, 617670, '522323000000', '普安县', '贵州,黔西南,普安', '104.953063', '25.784135', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2988, 618205, 2, 617670, '522324000000', '晴隆县', '贵州,黔西南,晴隆', '105.218991', '25.834784', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2989, 618316, 2, 617670, '522325000000', '贞丰县', '贵州,黔西南,贞丰', '105.649864', '25.385760', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2990, 618489, 2, 617670, '522326000000', '望谟县', '贵州,黔西南,望谟', '106.099617', '25.178422', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2991, 618671, 2, 617670, '522327000000', '册亨县', '贵州,黔西南,册亨', '105.811593', '24.983663', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2992, 618816, 2, 617670, '522328000000', '安龙县', '贵州,黔西南,安龙', '105.442701', '25.099014', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2993, 619018, 2, 619017, '522601000000', '凯里市', '贵州,黔东南,凯里', '107.981212', '26.566867', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2994, 619308, 2, 619017, '522622000000', '黄平县', '贵州,黔东南,黄平', '107.916412', '26.905396', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2995, 619574, 2, 619017, '522623000000', '施秉县', '贵州,黔东南,施秉', '108.124380', '27.032920', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2996, 619657, 2, 619017, '522624000000', '三穗县', '贵州,黔东南,三穗', '108.675267', '26.952968', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2997, 619831, 2, 619017, '522625000000', '镇远县', '贵州,黔东南,镇远', '108.429691', '27.049110', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2998, 619970, 2, 619017, '522626000000', '岑巩县', '贵州,黔东南,岑巩', '108.816060', '27.173887', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (2999, 620122, 2, 619017, '522627000000', '天柱县', '贵州,黔东南,天柱', '109.207757', '26.909678', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3000, 620465, 2, 619017, '522628000000', '锦屏县', '贵州,黔东南,锦屏', '109.200534', '26.676233', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3001, 620673, 2, 619017, '522629000000', '剑河县', '贵州,黔东南,剑河', '108.441501', '26.728274', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3002, 620996, 2, 619017, '522630000000', '台江县', '贵州,黔东南,台江', '108.321245', '26.667525', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3003, 621166, 2, 619017, '522631000000', '黎平县', '贵州,黔东南,黎平', '109.136658', '26.230424', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3004, 621616, 2, 619017, '522632000000', '榕江县', '贵州,黔东南,榕江', '108.521881', '25.931893', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3005, 621906, 2, 619017, '522633000000', '从江县', '贵州,黔东南,从江', '108.905329', '25.753009', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3006, 622312, 2, 619017, '522634000000', '雷山县', '贵州,黔东南,雷山', '108.077540', '26.378443', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3007, 622484, 2, 619017, '522635000000', '麻江县', '贵州,黔东南,麻江', '107.589359', '26.491105', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3008, 622561, 2, 619017, '522636000000', '丹寨县', '贵州,黔东南,丹寨', '107.788728', '26.198320', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3009, 622735, 2, 622734, '522701000000', '都匀市', '贵州,黔南,都匀', '107.518847', '26.259427', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3010, 622888, 2, 622734, '522702000000', '福泉市', '贵州,黔南,福泉', '107.520386', '26.686335', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3011, 622973, 2, 622734, '522722000000', '荔波县', '贵州,黔南,荔波', '107.886450', '25.410654', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3012, 623082, 2, 622734, '522723000000', '贵定县', '贵州,黔南,贵定', '107.232889', '26.557071', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3013, 623205, 2, 622734, '522725000000', '瓮安县', '贵州,黔南,瓮安', '107.471555', '27.078472', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3014, 623318, 2, 622734, '522726000000', '独山县', '贵州,黔南,独山', '107.545048', '25.822132', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3015, 623391, 2, 622734, '522727000000', '平塘县', '贵州,黔南,平塘', '107.323077', '25.831955', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3016, 623530, 2, 622734, '522728000000', '罗甸县', '贵州,黔南,罗甸', '106.751418', '25.424845', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3017, 623723, 2, 622734, '522729000000', '长顺县', '贵州,黔南,长顺', '106.447376', '26.022116', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3018, 623813, 2, 622734, '522730000000', '龙里县', '贵州,黔南,龙里', '106.979524', '26.453154', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3019, 623901, 2, 622734, '522731000000', '惠水县', '贵州,黔南,惠水', '106.657089', '26.132061', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3020, 624122, 2, 622734, '522732000000', '三都水族自治县', '贵州,黔南,三都', '107.869749', '25.983202', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3021, 624374, 2, 624373, '530101000000', '市辖区', '云南,昆明', '102.832891', '24.880095', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3022, 624375, 2, 624373, '530102000000', '五华区', '云南,昆明,五华', '102.832891', '24.880095', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3023, 624486, 2, 624373, '530103000000', '盘龙区', '云南,昆明,盘龙', '102.832891', '24.880095', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3024, 624599, 2, 624373, '530111000000', '官渡区', '云南,昆明,官渡', '102.832891', '24.880095', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3025, 624730, 2, 624373, '530112000000', '西山区', '云南,昆明,西山', '102.832891', '24.880095', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3026, 624860, 2, 624373, '530113000000', '东川区', '云南,昆明,东川', '103.187820', '26.082872', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3027, 625034, 2, 624373, '530114000000', '呈贡区', '云南,昆明,呈贡', '102.832891', '24.880095', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3028, 625111, 2, 624373, '530122000000', '晋宁县', '云南,昆明,晋宁', '102.832891', '24.880095', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3029, 625255, 2, 624373, '530124000000', '富民县', '云南,昆明,富民', '102.497681', '25.222046', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3030, 625337, 2, 624373, '530125000000', '宜良县', '云南,昆明,宜良', '103.141304', '24.919704', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3031, 625486, 2, 624373, '530126000000', '石林彝族自治县', '云南,昆明,石林', '102.832891', '24.880095', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3032, 625585, 2, 624373, '530127000000', '嵩明县', '云南,昆明,嵩明', '103.036911', '25.338642', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3033, 625669, 2, 624373, '530128000000', '禄劝彝族苗族自治县', '云南,昆明,禄劝', '102.832891', '24.880095', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3034, 625883, 2, 624373, '530129000000', '寻甸回族彝族自治县', '云南,昆明,寻甸', '102.832891', '24.880095', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3035, 626074, 2, 624373, '530181000000', '安宁市', '云南,昆明,安宁', '102.832891', '24.880095', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3036, 626182, 2, 626181, '530301000000', '市辖区', '云南,曲靖', '103.796167', '25.489999', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3037, 626183, 2, 626181, '530302000000', '麒麟区', '云南,曲靖,麒麟', '103.805012', '25.495241', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3038, 626343, 2, 626181, '530303000000', '沾益区', '云南,曲靖,沾益', '103.822324', '25.600507', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3039, 626485, 2, 626181, '530321000000', '马龙县', '云南,曲靖,马龙', '103.578454', '25.428130', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3040, 626569, 2, 626181, '530322000000', '陆良县', '云南,曲靖,陆良', '103.666663', '25.030051', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3041, 626731, 2, 626181, '530323000000', '师宗县', '云南,曲靖,师宗', '103.985478', '24.822403', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3042, 626852, 2, 626181, '530324000000', '罗平县', '云南,曲靖,罗平', '104.308675', '24.884626', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3043, 627020, 2, 626181, '530325000000', '富源县', '云南,曲靖,富源', '104.255015', '25.674238', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3044, 627194, 2, 626181, '530326000000', '会泽县', '云南,曲靖,会泽', '103.297361', '26.417947', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3045, 627596, 2, 626181, '530381000000', '宣威市', '云南,曲靖,宣威', '104.104475', '26.219767', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3046, 627982, 2, 627981, '530401000000', '市辖区', '云南,玉溪', '102.546543', '24.352036', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3047, 627983, 2, 627981, '530402000000', '红塔区', '云南,玉溪,红塔', '102.540179', '24.341098', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3048, 628099, 2, 627981, '530403000000', '江川区', '云南,玉溪,江川', '102.753734', '24.287534', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3049, 628181, 2, 627981, '530422000000', '澄江县', '云南,玉溪,澄江', '102.908248', '24.673734', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3050, 628228, 2, 627981, '530423000000', '通海县', '云南,玉溪,通海', '102.760039', '24.112205', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3051, 628314, 2, 627981, '530424000000', '华宁县', '云南,玉溪,华宁', '102.928835', '24.192761', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3052, 628397, 2, 627981, '530425000000', '易门县', '云南,玉溪,易门', '102.162531', '24.671651', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3053, 628463, 2, 627981, '530426000000', '峨山彝族自治县', '云南,玉溪,峨山', '102.397333', '24.169401', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3054, 628548, 2, 627981, '530427000000', '新平彝族傣族自治县', '云南,玉溪,新平', '101.990157', '24.070051', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3055, 628684, 2, 627981, '530428000000', '元江哈尼族彝族傣族自治县', '云南,玉溪,元江', '101.998103', '23.596503', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3056, 628777, 2, 628776, '530501000000', '市辖区', '云南,保山', '99.161761', '25.112046', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3057, 628778, 2, 628776, '530502000000', '隆阳区', '云南,保山,隆阳', '99.165607', '25.121154', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3058, 629117, 2, 628776, '530521000000', '施甸县', '云南,保山,施甸', '99.189221', '24.723064', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3059, 629271, 2, 628776, '530523000000', '龙陵县', '云南,保山,龙陵', '98.689230', '24.586766', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3060, 629403, 2, 628776, '530524000000', '昌宁县', '云南,保山,昌宁', '99.605142', '24.827839', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3061, 629541, 2, 628776, '530581000000', '腾冲市', '云南,保山,腾冲', '98.497291', '25.017570', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3062, 629782, 2, 629781, '530601000000', '市辖区', '云南,昭通', '103.717465', '27.338257', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3063, 629783, 2, 629781, '530602000000', '昭阳区', '云南,昭通,昭阳', '103.706539', '27.320075', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3064, 629988, 2, 629781, '530621000000', '鲁甸县', '云南,昭通,鲁甸', '103.558042', '27.186659', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3065, 630098, 2, 629781, '530622000000', '巧家县', '云南,昭通,巧家', '102.930164', '26.908461', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3066, 630299, 2, 629781, '530623000000', '盐津县', '云南,昭通,盐津', '104.234442', '28.108710', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3067, 630404, 2, 629781, '530624000000', '大关县', '云南,昭通,大关', '103.891146', '27.747978', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3068, 630498, 2, 629781, '530625000000', '永善县', '云南,昭通,永善', '103.638067', '28.229113', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3069, 630656, 2, 629781, '530626000000', '绥江县', '云南,昭通,绥江', '103.968978', '28.592100', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3070, 630704, 2, 629781, '530627000000', '镇雄县', '云南,昭通,镇雄', '104.873579', '27.441668', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3071, 630989, 2, 629781, '530628000000', '彝良县', '云南,昭通,彝良', '104.048289', '27.625419', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3072, 631144, 2, 629781, '530629000000', '威信县', '云南,昭通,威信', '105.049027', '27.846901', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3073, 631242, 2, 629781, '530630000000', '水富县', '云南,昭通,水富', '104.416031', '28.629880', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3074, 631277, 2, 631276, '530701000000', '市辖区', '云南,丽江', '100.227750', '26.855047', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3075, 631278, 2, 631276, '530702000000', '古城区', '云南,丽江,古城', '100.225766', '26.877190', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3076, 631349, 2, 631276, '530721000000', '玉龙纳西族自治县', '云南,丽江,玉龙', '100.236955', '26.821460', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3077, 631469, 2, 631276, '530722000000', '永胜县', '云南,丽江,永胜', '100.750795', '26.684225', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3078, 631634, 2, 631276, '530723000000', '华坪县', '云南,丽江,华坪', '101.266195', '26.629211', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3079, 631704, 2, 631276, '530724000000', '宁蒗彝族自治县', '云南,丽江,宁蒗', '100.852001', '27.282071', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3080, 631812, 2, 631811, '530801000000', '市辖区', '云南,普洱', '100.966512', '22.825065', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3081, 631813, 2, 631811, '530802000000', '思茅区', '云南,普洱,思茅', '100.977165', '22.786910', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3082, 631894, 2, 631811, '530821000000', '宁洱哈尼族彝族自治县', '云南,普洱,宁洱', '100.980485', '22.781242', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3083, 631993, 2, 631811, '530822000000', '墨江哈尼族自治县', '云南,普洱,墨江', '101.692461', '23.431894', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3084, 632177, 2, 631811, '530823000000', '景东彝族自治县', '云南,普洱,景东', '100.833877', '24.446731', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3085, 632361, 2, 631811, '530824000000', '景谷傣族彝族自治县', '云南,普洱,景谷', '100.702871', '23.497028', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3086, 632513, 2, 631811, '530825000000', '镇沅彝族哈尼族拉祜族自治县', '云南,普洱,镇沅', '101.108595', '24.004442', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3087, 632634, 2, 631811, '530826000000', '江城哈尼族彝族自治县', '云南,普洱,江城', '101.862120', '22.585868', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3088, 632693, 2, 631811, '530827000000', '孟连傣族拉祜族佤族自治县', '云南,普洱,孟连', '99.584157', '22.329100', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3089, 632742, 2, 631811, '530828000000', '澜沧拉祜族自治县', '云南,普洱,澜沧', '99.931975', '22.555905', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3090, 632924, 2, 631811, '530829000000', '西盟佤族自治县', '云南,普洱,西', '100.966512', '22.825065', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3091, 632972, 2, 632971, '530901000000', '市辖区', '云南,临沧', '100.079583', '23.877573', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3092, 632973, 2, 632971, '530902000000', '临翔区', '云南,临沧,临翔', '100.082523', '23.895137', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3093, 633086, 2, 632971, '530921000000', '凤庆县', '云南,临沧,凤庆', '99.928460', '24.580424', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3094, 633287, 2, 632971, '530922000000', '云县', '云南,临沧,云县', '100.123248', '24.437061', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3095, 633498, 2, 632971, '530923000000', '永德县', '云南,临沧,永德', '99.259340', '24.018357', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3096, 633629, 2, 632971, '530924000000', '镇康县', '云南,临沧,镇康', '98.825285', '23.762584', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3097, 633711, 2, 632971, '530925000000', '双江拉祜族佤族布朗族傣族自治县', '云南,临沧,双江', '99.827698', '23.473499', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3098, 633793, 2, 632971, '530926000000', '耿马傣族佤族自治县', '云南,临沧,耿马', '99.395366', '23.529249', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3099, 633898, 2, 632971, '530927000000', '沧源佤族自治县', '云南,临沧,沧源', '99.246197', '23.146712', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3100, 634007, 2, 634006, '532301000000', '楚雄市', '云南,楚雄,楚雄', '101.545906', '25.032889', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3101, 634176, 2, 634006, '532322000000', '双柏县', '云南,楚雄,双柏', '101.641937', '24.688875', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3102, 634269, 2, 634006, '532323000000', '牟定县', '云南,楚雄,牟定', '101.546566', '25.313122', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3103, 634366, 2, 634006, '532324000000', '南华县', '云南,楚雄,南华', '101.273577', '25.192293', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3104, 634505, 2, 634006, '532325000000', '姚安县', '云南,楚雄,姚安', '101.241728', '25.504173', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3105, 634592, 2, 634006, '532326000000', '大姚县', '云南,楚雄,大姚', '101.336617', '25.729513', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3106, 634734, 2, 634006, '532327000000', '永仁县', '云南,楚雄,永仁', '101.666133', '26.049464', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3107, 634805, 2, 634006, '532328000000', '元谋县', '云南,楚雄,元谋', '101.874520', '25.704338', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3108, 634894, 2, 634006, '532329000000', '武定县', '云南,楚雄,武定', '102.404338', '25.530389', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3109, 635039, 2, 634006, '532331000000', '禄丰县', '云南,楚雄,禄丰', '102.079027', '25.150111', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3110, 635220, 2, 635219, '532501000000', '个旧市', '云南,红河,个旧', '103.160034', '23.359121', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3111, 635347, 2, 635219, '532502000000', '开远市', '云南,红河,开远', '103.267143', '23.714316', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3112, 635435, 2, 635219, '532503000000', '蒙自市', '云南,红河,蒙自', '103.364905', '23.396201', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3113, 635548, 2, 635219, '532504000000', '弥勒市', '云南,红河,弥勒', '103.414874', '24.411912', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3114, 635698, 2, 635219, '532523000000', '屏边苗族自治县', '云南,红河,屏边', '103.687612', '22.983560', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3115, 635786, 2, 635219, '532524000000', '建水县', '云南,红河,建水', '102.826557', '23.634700', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3116, 635955, 2, 635219, '532525000000', '石屏县', '云南,红河,石屏', '102.494984', '23.705936', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3117, 636080, 2, 635219, '532527000000', '泸西县', '云南,红河,泸西', '103.766196', '24.532025', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3118, 636176, 2, 635219, '532528000000', '元阳县', '云南,红河,元阳', '102.835223', '23.219932', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3119, 636329, 2, 635219, '532529000000', '红河县', '云南,红河,红河', '102.420600', '23.369161', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3120, 636434, 2, 635219, '532530000000', '金平苗族瑶族傣族自治县', '云南,红河,金平', '103.226448', '22.779543', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3121, 636546, 2, 635219, '532531000000', '绿春县', '云南,红河,绿春', '102.392463', '22.993718', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3122, 636647, 2, 635219, '532532000000', '河口瑶族自治县', '云南,红河,河口', '103.960560', '22.509593', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3123, 636689, 2, 636688, '532601000000', '文山市', '云南,文山,文山', '104.232510', '23.386306', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3124, 636850, 2, 636688, '532622000000', '砚山县', '云南,文山,砚山', '104.337244', '23.605740', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3125, 636970, 2, 636688, '532623000000', '西畴县', '云南,文山,西畴', '104.672597', '23.437782', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3126, 637052, 2, 636688, '532624000000', '麻栗坡县', '云南,文山,麻栗坡', '104.702799', '23.125714', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3127, 637166, 2, 636688, '532625000000', '马关县', '云南,文山,马关', '104.394158', '23.012915', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3128, 637312, 2, 636688, '532626000000', '丘北县', '云南,文山,丘北', '104.195820', '24.041919', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3129, 637426, 2, 636688, '532627000000', '广南县', '云南,文山,广南', '105.054981', '24.045941', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3130, 637619, 2, 636688, '532628000000', '富宁县', '云南,文山,富宁', '105.630999', '23.625283', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3131, 637779, 2, 637778, '532801000000', '景洪市', '云南,西双版纳,景洪', '100.771679', '22.000143', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3132, 637910, 2, 637778, '532822000000', '勐海县', '云南,西双版纳,勐海', '100.452548', '21.957354', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3133, 638015, 2, 637778, '532823000000', '勐腊县', '云南,西双版纳,勐腊', '101.564636', '21.459233', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3134, 638093, 2, 638092, '532901000000', '大理市', '云南,大理,大理', '100.241369', '25.593067', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3135, 638249, 2, 638092, '532922000000', '漾濞彝族自治县', '云南,大理,漾濞', '99.958015', '25.670148', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3136, 638325, 2, 638092, '532923000000', '祥云县', '云南,大理,祥云', '100.550946', '25.483850', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3137, 638475, 2, 638092, '532924000000', '宾川县', '云南,大理,宾川', '100.575412', '25.827182', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3138, 638576, 2, 638092, '532925000000', '弥渡县', '云南,大理,弥渡', '100.490991', '25.343804', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3139, 638674, 2, 638092, '532926000000', '南涧彝族自治县', '云南,大理,南涧', '100.509036', '25.043510', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3140, 638764, 2, 638092, '532927000000', '巍山彝族回族自治县', '云南,大理,巍山', '100.307175', '25.227212', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3141, 638858, 2, 638092, '532928000000', '永平县', '云南,大理,永平', '99.541236', '25.464681', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3142, 638941, 2, 638092, '532929000000', '云龙县', '云南,大理,云龙', '99.371121', '25.885596', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3143, 639039, 2, 638092, '532930000000', '洱源县', '云南,大理,洱源', '99.951054', '26.111160', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3144, 639139, 2, 638092, '532931000000', '剑川县', '云南,大理,剑川', '99.905559', '26.537033', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3145, 639241, 2, 638092, '532932000000', '鹤庆县', '云南,大理,鹤庆', '100.176498', '26.560231', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3146, 639369, 2, 639368, '533102000000', '瑞丽市', '云南,德宏,瑞丽', '97.855477', '24.017836', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3147, 639416, 2, 639368, '533103000000', '芒市', '云南,德宏,芒市', '98.588086', '24.433690', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3148, 639524, 2, 639368, '533122000000', '梁河县', '云南,德宏,梁河', '98.296657', '24.804232', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3149, 639600, 2, 639368, '533123000000', '盈江县', '云南,德宏,盈江', '97.931955', '24.705211', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3150, 639719, 2, 639368, '533124000000', '陇川县', '云南,德宏,陇川', '97.792105', '24.182965', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3151, 639803, 2, 639802, '533301000000', '泸水市', '云南,怒江,泸水', '98.853097', '25.852547', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3152, 639889, 2, 639802, '533323000000', '福贡县', '云南,怒江,福贡', '98.869132', '26.901832', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3153, 639956, 2, 639802, '533324000000', '贡山独龙族怒族自治县', '云南,怒江,贡山', '98.853097', '25.852547', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3154, 639990, 2, 639802, '533325000000', '兰坪白族普米族自治县', '云南,怒江,兰坪', '99.416677', '26.453571', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3155, 640108, 2, 640107, '533401000000', '香格里拉市', '云南,迪庆,香格里拉', '99.700836', '27.829743', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3156, 640184, 2, 640107, '533422000000', '德钦县', '云南,迪庆,德钦', '98.911561', '28.486162', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3157, 640239, 2, 640107, '533423000000', '维西傈僳族自治县', '云南,迪庆,维西', '99.287173', '27.177162', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3158, 640334, 2, 640333, '540101000000', '市辖区', '西藏,拉萨', '91.140856', '29.645554', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3159, 640335, 2, 640333, '540102000000', '城关区', '西藏,拉萨,城关', '91.140856', '29.645554', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3160, 640399, 2, 640333, '540103000000', '堆龙德庆区', '西藏,拉萨,堆龙德庆', '91.140856', '29.645554', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3161, 640441, 2, 640333, '540121000000', '林周县', '西藏,拉萨,林周', '91.140856', '29.645554', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3162, 640497, 2, 640333, '540122000000', '当雄县', '西藏,拉萨,当雄', '91.140856', '29.645554', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3163, 640534, 2, 640333, '540123000000', '尼木县', '西藏,拉萨,尼木', '91.140856', '29.645554', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3164, 640575, 2, 640333, '540124000000', '曲水县', '西藏,拉萨,曲水', '91.140856', '29.645554', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3165, 640599, 2, 640333, '540126000000', '达孜县', '西藏,拉萨,达孜', '91.140856', '29.645554', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3166, 640626, 2, 640333, '540127000000', '墨竹工卡县', '西藏,拉萨,墨竹工卡', '91.140856', '29.645554', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3167, 640676, 2, 640675, '540202000000', '桑珠孜区', '西藏,日喀则,桑珠孜', '88.887270', '29.270389', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3168, 640865, 2, 640675, '540221000000', '南木林县', '西藏,日喀则,南木林', '89.099243', '29.682331', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3169, 641029, 2, 640675, '540222000000', '江孜县', '西藏,日喀则,江孜', '89.605574', '28.911659', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3170, 641204, 2, 640675, '540223000000', '定日县', '西藏,日喀则,定日', '87.126120', '28.658743', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3171, 641393, 2, 640675, '540224000000', '萨迦县', '西藏,日喀则,萨迦', '88.021674', '28.899664', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3172, 641512, 2, 640675, '540225000000', '拉孜县', '西藏,日喀则,拉孜', '87.637041', '29.081660', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3173, 641622, 2, 640675, '540226000000', '昂仁县', '西藏,日喀则,昂仁', '87.236051', '29.294802', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3174, 641825, 2, 640675, '540227000000', '谢通门县', '西藏,日喀则,谢通门', '88.261620', '29.432641', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3175, 641940, 2, 640675, '540228000000', '白朗县', '西藏,日喀则,白朗', '89.261977', '29.107688', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3176, 642063, 2, 640675, '540229000000', '仁布县', '西藏,日喀则,仁布', '89.841984', '29.230933', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3177, 642146, 2, 640675, '540230000000', '康马县', '西藏,日喀则,康马', '89.681663', '28.555627', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3178, 642203, 2, 640675, '540231000000', '定结县', '西藏,日喀则,定结', '87.765872', '28.364159', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3179, 642284, 2, 640675, '540232000000', '仲巴县', '西藏,日喀则,仲巴', '84.031530', '29.770279', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3180, 642356, 2, 640675, '540233000000', '亚东县', '西藏,日喀则,亚东', '88.907094', '27.484806', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3181, 642389, 2, 640675, '540234000000', '吉隆县', '西藏,日喀则,吉隆', '85.297535', '28.852394', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3182, 642437, 2, 640675, '540235000000', '聂拉木县', '西藏,日喀则,聂拉木', '85.982237', '28.155186', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3183, 642489, 2, 640675, '540236000000', '萨嘎县', '西藏,日喀则,萨嘎', '85.232941', '29.328818', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3184, 642536, 2, 640675, '540237000000', '岗巴县', '西藏,日喀则,岗巴', '88.520031', '28.274601', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3185, 642572, 2, 642571, '540302000000', '卡若区', '西藏,昌都,卡若', '97.180437', '31.138507', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3186, 642755, 2, 642571, '540321000000', '江达县', '西藏,昌都,江达', '98.218430', '31.499202', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3187, 642864, 2, 642571, '540322000000', '贡觉县', '西藏,昌都,贡觉', '98.270970', '30.860099', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3188, 643026, 2, 642571, '540323000000', '类乌齐县', '西藏,昌都,类乌齐', '96.600246', '31.211601', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3189, 643119, 2, 642571, '540324000000', '丁青县', '西藏,昌都,丁青', '95.595761', '31.412405', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3190, 643197, 2, 642571, '540325000000', '察雅县', '西藏,昌都,察雅', '97.568752', '30.653943', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3191, 643349, 2, 642571, '540326000000', '八宿县', '西藏,昌都,八宿', '96.917836', '30.053209', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3192, 643474, 2, 642571, '540327000000', '左贡县', '西藏,昌都,左贡', '97.841022', '29.671069', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3193, 643613, 2, 642571, '540328000000', '芒康县', '西藏,昌都,芒康', '98.593113', '29.679908', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3194, 643691, 2, 642571, '540329000000', '洛隆县', '西藏,昌都,洛隆', '95.824567', '30.741571', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3195, 643769, 2, 642571, '540330000000', '边坝县', '西藏,昌都,边坝', '94.707800', '30.933652', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3196, 643864, 2, 643863, '540402000000', '巴宜区', '西藏,林芝,巴宜', '94.360994', '29.653727', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3197, 643943, 2, 643863, '540421000000', '工布江达县', '西藏,林芝,工布江达', '93.246077', '29.885280', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3198, 644033, 2, 643863, '540422000000', '米林县', '西藏,林芝,米林', '94.213486', '29.215833', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3199, 644109, 2, 643863, '540423000000', '墨脱县', '西藏,林芝,墨脱', '95.332241', '29.325734', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3200, 644164, 2, 643863, '540424000000', '波密县', '西藏,林芝,波密', '95.768158', '29.858766', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3201, 644260, 2, 643863, '540425000000', '察隅县', '西藏,林芝,察隅', '94.361490', '29.649128', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3202, 644364, 2, 643863, '540426000000', '朗县', '西藏,林芝,朗县', '93.074702', '29.046337', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3203, 644424, 2, 644423, '540501000000', '市辖区', '西藏,山南', '91.117212', '29.646922', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3204, 644425, 2, 644423, '540502000000', '乃东区', '西藏,山南,乃东', '91.761539', '29.224904', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3205, 644480, 2, 644423, '540521000000', '扎囊县', '西藏,山南,扎囊', '91.337250', '29.245114', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3206, 644548, 2, 644423, '540522000000', '贡嘎县', '西藏,山南,贡嘎', '90.984140', '29.289455', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3207, 644600, 2, 644423, '540523000000', '桑日县', '西藏,山南,桑日', '92.015818', '29.259189', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3208, 644647, 2, 644423, '540524000000', '琼结县', '西藏,山南,琼结', '91.683881', '29.024625', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3209, 644672, 2, 644423, '540525000000', '曲松县', '西藏,山南,曲松', '92.203739', '29.062826', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3210, 644699, 2, 644423, '540526000000', '措美县', '西藏,山南,措美', '91.433509', '28.438202', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3211, 644720, 2, 644423, '540527000000', '洛扎县', '西藏,山南,洛扎', '90.859992', '28.385713', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3212, 644755, 2, 644423, '540528000000', '加查县', '西藏,山南,加查', '92.593993', '29.140290', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3213, 644840, 2, 644423, '540529000000', '隆子县', '西藏,山南,隆子', '92.463305', '28.408552', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3214, 644932, 2, 644423, '540530000000', '错那县', '西藏,山南,错那', '91.960139', '27.991716', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3215, 644967, 2, 644423, '540531000000', '浪卡子县', '西藏,山南,浪卡子', '90.397977', '28.968031', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3216, 645077, 2, 645076, '542421000000', '那曲县', '西藏,那曲,那曲', '92.053500', '31.469643', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3217, 645231, 2, 645076, '542422000000', '嘉黎县', '西藏,那曲,嘉黎', '93.232528', '30.640815', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3218, 645364, 2, 645076, '542423000000', '比如县', '西藏,那曲,比如', '93.679639', '31.480250', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3219, 645550, 2, 645076, '542424000000', '聂荣县', '西藏,那曲,聂荣', '92.303346', '32.107772', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3220, 645703, 2, 645076, '542425000000', '安多县', '西藏,那曲,安多', '91.682330', '32.265176', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3221, 645791, 2, 645076, '542426000000', '申扎县', '西藏,那曲,申扎', '88.709853', '30.930505', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3222, 645862, 2, 645076, '542427000000', '索县', '西藏,那曲,索县', '93.785631', '31.886918', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3223, 645997, 2, 645076, '542428000000', '班戈县', '西藏,那曲,班戈', '90.009957', '31.392411', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3224, 646094, 2, 645076, '542429000000', '巴青县', '西藏,那曲,巴青', '94.053463', '31.918563', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3225, 646261, 2, 645076, '542430000000', '尼玛县', '西藏,那曲,尼玛', '87.236772', '31.784701', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3226, 646353, 2, 645076, '542431000000', '双湖县', '西藏,那曲,双湖', '88.837642', '33.188515', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3227, 646393, 2, 646392, '542521000000', '普兰县', '西藏,阿里,普兰', '81.176237', '30.294402', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3228, 646407, 2, 646392, '542522000000', '札达县', '西藏,阿里,札达', '79.802706', '31.479217', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3229, 646431, 2, 646392, '542523000000', '噶尔县', '西藏,阿里,噶尔', '80.096419', '32.491488', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3230, 646451, 2, 646392, '542524000000', '日土县', '西藏,阿里,日土', '79.732427', '33.381359', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3231, 646470, 2, 646392, '542525000000', '革吉县', '西藏,阿里,革吉', '81.145433', '32.387233', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3232, 646495, 2, 646392, '542526000000', '改则县', '西藏,阿里,改则', '84.062590', '32.302713', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3233, 646551, 2, 646392, '542527000000', '措勤县', '西藏,阿里,措勤', '85.159494', '31.016769', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3234, 646580, 2, 646579, '610101000000', '市辖区', '陕西,西安', '108.940174', '34.341568', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3235, 646581, 2, 646579, '610102000000', '新城区', '陕西,西安,新城', '108.940174', '34.341568', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3236, 646694, 2, 646579, '610103000000', '碑林区', '陕西,西安,碑林', '108.940174', '34.341568', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3237, 646800, 2, 646579, '610104000000', '莲湖区', '陕西,西安,莲湖', '108.940174', '34.341568', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3238, 646944, 2, 646579, '610111000000', '灞桥区', '陕西,西安,灞桥', '108.940174', '34.341568', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3239, 647214, 2, 646579, '610112000000', '未央区', '陕西,西安,未央', '108.940174', '34.341568', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3240, 647486, 2, 646579, '610113000000', '雁塔区', '陕西,西安,雁塔', '108.940174', '34.341568', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3241, 647710, 2, 646579, '610114000000', '阎良区', '陕西,西安,阎良', '108.940174', '34.341568', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3242, 647821, 2, 646579, '610115000000', '临潼区', '陕西,西安,临潼', '108.940174', '34.341568', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3243, 648113, 2, 646579, '610116000000', '长安区', '陕西,西安,长安', '108.940174', '34.341568', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3244, 648645, 2, 646579, '610117000000', '高陵区', '陕西,西安,高陵', '108.940174', '34.341568', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3245, 648756, 2, 646579, '610122000000', '蓝田县', '陕西,西安,蓝田', '108.940174', '34.341568', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3246, 649123, 2, 646579, '610124000000', '周至县', '陕西,西安,周至', '108.940174', '34.341568', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3247, 649424, 2, 646579, '610125000000', '户县', '陕西,西安,户县', '108.940174', '34.341568', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3248, 649980, 2, 649979, '610201000000', '市辖区', '陕西,铜川', '108.945233', '34.896756', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3249, 649981, 2, 649979, '610202000000', '王益区', '陕西,铜川,王益', '109.075578', '35.068964', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3250, 650048, 2, 649979, '610203000000', '印台区', '陕西,铜川,印台', '109.099975', '35.114492', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3251, 650189, 2, 649979, '610204000000', '耀州区', '陕西,铜川,耀州', '108.980514', '34.908916', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3252, 650386, 2, 649979, '610222000000', '宜君县', '陕西,铜川,宜君', '109.116932', '35.398577', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3253, 650576, 2, 650575, '610301000000', '市辖区', '陕西,宝鸡', '107.237974', '34.361979', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3254, 650577, 2, 650575, '610302000000', '渭滨区', '陕西,宝鸡,渭滨', '107.149968', '34.371184', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3255, 650747, 2, 650575, '610303000000', '金台区', '陕西,宝鸡,金台', '107.146806', '34.376069', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3256, 650913, 2, 650575, '610304000000', '陈仓区', '陕西,宝鸡,陈仓', '107.387436', '34.354456', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3257, 651278, 2, 650575, '610322000000', '凤翔县', '陕西,宝鸡,凤翔', '107.400737', '34.521218', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3258, 651528, 2, 650575, '610323000000', '岐山县', '陕西,宝鸡,岐山', '107.621054', '34.443459', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3259, 651697, 2, 650575, '610324000000', '扶风县', '陕西,宝鸡,扶风', '107.900219', '34.375411', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3260, 651872, 2, 650575, '610326000000', '眉县', '陕西,宝鸡,眉县', '107.749767', '34.274247', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3261, 652014, 2, 650575, '610327000000', '陇县', '陕西,宝鸡,陇县', '106.864397', '34.893050', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3262, 652186, 2, 650575, '610328000000', '千阳县', '陕西,宝鸡,千阳', '107.132442', '34.642381', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3263, 652294, 2, 650575, '610329000000', '麟游县', '陕西,宝鸡,麟游', '107.793525', '34.677902', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3264, 652387, 2, 650575, '610330000000', '凤县', '陕西,宝鸡,凤县', '106.515756', '33.908469', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3265, 652505, 2, 650575, '610331000000', '太白县', '陕西,宝鸡,太白', '107.319116', '34.058401', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3266, 652582, 2, 652581, '610401000000', '市辖区', '陕西,咸阳', '108.708991', '34.329605', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3267, 652583, 2, 652581, '610402000000', '秦都区', '陕西,咸阳,秦都', '108.706272', '34.329567', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3268, 652779, 2, 652581, '610403000000', '杨陵区', '陕西,咸阳,杨陵', '108.084732', '34.272117', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3269, 652863, 2, 652581, '610404000000', '渭城区', '陕西,咸阳,渭城', '108.737213', '34.361988', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3270, 653042, 2, 652581, '610422000000', '三原县', '陕西,咸阳,三原', '108.940509', '34.617382', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3271, 653234, 2, 652581, '610423000000', '泾阳县', '陕西,咸阳,泾阳', '108.842623', '34.527114', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3272, 653470, 2, 652581, '610424000000', '乾县', '陕西,咸阳,乾县', '108.239473', '34.527551', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3273, 653679, 2, 652581, '610425000000', '礼泉县', '陕西,咸阳,礼泉', '108.425018', '34.481764', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3274, 653918, 2, 652581, '610426000000', '永寿县', '陕西,咸阳,永寿', '108.142311', '34.691979', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3275, 654101, 2, 652581, '610427000000', '彬县', '陕西,咸阳,彬县', '108.077658', '35.043911', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3276, 654369, 2, 652581, '610428000000', '长武县', '陕西,咸阳,长武', '107.798757', '35.205886', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3277, 654525, 2, 652581, '610429000000', '旬邑县', '陕西,咸阳,旬邑', '108.333986', '35.111978', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3278, 654661, 2, 652581, '610430000000', '淳化县', '陕西,咸阳,淳化', '108.580681', '34.799250', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3279, 654876, 2, 652581, '610431000000', '武功县', '陕西,咸阳,武功', '108.200398', '34.260204', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3280, 655081, 2, 652581, '610481000000', '兴平市', '陕西,咸阳,兴平', '108.490475', '34.299221', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3281, 655296, 2, 655295, '610501000000', '市辖区', '陕西,渭南', '109.509786', '34.499995', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3282, 655297, 2, 655295, '610502000000', '临渭区', '陕西,渭南,临渭', '109.492726', '34.498192', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3283, 655724, 2, 655295, '610503000000', '华州区', '陕西,渭南,华州', '109.761417', '34.511949', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3284, 655885, 2, 655295, '610522000000', '潼关县', '陕西,渭南,潼关', '110.246350', '34.544296', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3285, 655919, 2, 655295, '610523000000', '大荔县', '陕西,渭南,大荔', '109.941658', '34.797184', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3286, 656260, 2, 655295, '610524000000', '合阳县', '陕西,渭南,合阳', '110.149466', '35.237986', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3287, 656494, 2, 655295, '610525000000', '澄城县', '陕西,渭南,澄城', '109.932350', '35.190245', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3288, 656682, 2, 655295, '610526000000', '蒲城县', '陕西,渭南,蒲城', '109.586506', '34.955855', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3289, 656988, 2, 655295, '610527000000', '白水县', '陕西,渭南,白水', '109.590671', '35.177452', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3290, 657132, 2, 655295, '610528000000', '富平县', '陕西,渭南,富平', '109.180331', '34.751086', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3291, 657425, 2, 655295, '610581000000', '韩城市', '陕西,渭南,韩城', '110.442847', '35.476788', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3292, 657706, 2, 655295, '610582000000', '华阴市', '陕西,渭南,华阴', '110.092301', '34.566096', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3293, 657849, 2, 657848, '610601000000', '市辖区', '陕西,延安', '109.489727', '36.585455', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3294, 657850, 2, 657848, '610602000000', '宝塔区', '陕西,延安,宝塔', '109.493106', '36.591266', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3295, 658235, 2, 657848, '610603000000', '安塞区', '陕西,延安,安塞', '109.489727', '36.585455', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3296, 658462, 2, 657848, '610621000000', '延长县', '陕西,延安,延长', '110.012334', '36.579313', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3297, 658765, 2, 657848, '610622000000', '延川县', '陕西,延安,延川', '110.193514', '36.878117', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3298, 658951, 2, 657848, '610623000000', '子长县', '陕西,延安,子长', '109.675234', '37.142668', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3299, 659327, 2, 657848, '610625000000', '志丹县', '陕西,延安,志丹', '108.768432', '36.822194', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3300, 659450, 2, 657848, '610626000000', '吴起县', '陕西,延安,吴起', '108.175933', '36.927216', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3301, 659554, 2, 657848, '610627000000', '甘泉县', '陕西,延安,甘泉', '109.351020', '36.276526', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3302, 659632, 2, 657848, '610628000000', '富县', '陕西,延安,富县', '109.379711', '35.988010', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3303, 659777, 2, 657848, '610629000000', '洛川县', '陕西,延安,洛川', '109.432369', '35.761975', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3304, 660160, 2, 657848, '610630000000', '宜川县', '陕西,延安,宜川', '110.168963', '36.050178', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3305, 660375, 2, 657848, '610631000000', '黄龙县', '陕西,延安,黄龙', '109.840373', '35.584467', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3306, 660433, 2, 657848, '610632000000', '黄陵县', '陕西,延安,黄陵', '109.262961', '35.579428', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3307, 660644, 2, 660643, '610701000000', '市辖区', '陕西,汉中', '107.023323', '33.067480', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3308, 660645, 2, 660643, '610702000000', '汉台区', '陕西,汉中,汉台', '107.031856', '33.067771', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3309, 660909, 2, 660643, '610721000000', '南郑县', '陕西,汉中,南郑', '106.936230', '32.999334', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3310, 661244, 2, 660643, '610722000000', '城固县', '陕西,汉中,城固', '107.333930', '33.157131', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3311, 661535, 2, 660643, '610723000000', '洋县', '陕西,汉中,洋县', '107.545837', '33.222739', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3312, 661839, 2, 660643, '610724000000', '西乡县', '陕西,汉中,西乡', '107.766614', '32.983101', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3313, 662072, 2, 660643, '610725000000', '勉县', '陕西,汉中,勉县', '106.673221', '33.153553', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3314, 662289, 2, 660643, '610726000000', '宁强县', '陕西,汉中,宁强', '106.257171', '32.829694', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3315, 662521, 2, 660643, '610727000000', '略阳县', '陕西,汉中,略阳', '106.156718', '33.327281', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3316, 662704, 2, 660643, '610728000000', '镇巴县', '陕西,汉中,镇巴', '107.895035', '32.536704', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3317, 662908, 2, 660643, '610729000000', '留坝县', '陕西,汉中,留坝', '106.920808', '33.617571', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3318, 662993, 2, 660643, '610730000000', '佛坪县', '陕西,汉中,佛坪', '107.990539', '33.524359', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3319, 663047, 2, 663046, '610801000000', '市辖区', '陕西,榆林', '109.734589', '38.285390', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3320, 663048, 2, 663046, '610802000000', '榆阳区', '陕西,榆林,榆阳', '109.720309', '38.277029', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3321, 663445, 2, 663046, '610803000000', '横山区', '陕西,榆林,横山', '109.294346', '37.962209', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3322, 663827, 2, 663046, '610821000000', '神木县', '陕西,榆林,神木', '110.498868', '38.842498', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3323, 664184, 2, 663046, '610822000000', '府谷县', '陕西,榆林,府谷', '111.067366', '39.028116', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3324, 664441, 2, 663046, '610824000000', '靖边县', '陕西,榆林,靖边', '108.793988', '37.599438', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3325, 664686, 2, 663046, '610825000000', '定边县', '陕西,榆林,定边', '107.601267', '37.594612', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3326, 665047, 2, 663046, '610826000000', '绥德县', '陕西,榆林,绥德', '110.263362', '37.502940', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3327, 665732, 2, 663046, '610827000000', '米脂县', '陕西,榆林,米脂', '110.183754', '37.755417', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3328, 665953, 2, 663046, '610828000000', '佳县', '陕西,榆林,佳县', '110.491345', '38.019511', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3329, 666627, 2, 663046, '610829000000', '吴堡县', '陕西,榆林,吴堡', '110.739673', '37.452068', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3330, 666741, 2, 663046, '610830000000', '清涧县', '陕西,榆林,清涧', '110.121209', '37.088878', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3331, 667106, 2, 663046, '610831000000', '子洲县', '陕西,榆林,子洲', '110.035250', '37.610683', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3332, 667682, 2, 667681, '610901000000', '市辖区', '陕西,安康', '109.029022', '32.684714', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3333, 667683, 2, 667681, '610902000000', '汉滨区', '陕西,安康,汉滨', '109.026836', '32.695173', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3334, 668237, 2, 667681, '610921000000', '汉阴县', '陕西,安康,汉阴', '108.508745', '32.893026', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3335, 668397, 2, 667681, '610922000000', '石泉县', '陕西,安康,石泉', '108.247887', '33.038408', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3336, 668570, 2, 667681, '610923000000', '宁陕县', '陕西,安康,宁陕', '108.314283', '33.310527', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3337, 668662, 2, 667681, '610924000000', '紫阳县', '陕西,安康,紫阳', '108.534229', '32.520246', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3338, 668877, 2, 667681, '610925000000', '岚皋县', '陕西,安康,岚皋', '108.902049', '32.307001', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3339, 669026, 2, 667681, '610926000000', '平利县', '陕西,安康,平利', '109.361864', '32.388854', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3340, 669181, 2, 667681, '610927000000', '镇坪县', '陕西,安康,镇坪', '109.526873', '31.883672', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3341, 669251, 2, 667681, '610928000000', '旬阳县', '陕西,安康,旬阳', '109.365265', '32.834086', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3342, 669578, 2, 667681, '610929000000', '白河县', '陕西,安康,白河', '110.112629', '32.809026', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3343, 669708, 2, 669707, '611001000000', '市辖区', '陕西,商洛', '109.940477', '33.870422', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3344, 669709, 2, 669707, '611002000000', '商州区', '陕西,商洛,商州', '109.941241', '33.862703', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3345, 670030, 2, 669707, '611021000000', '洛南县', '陕西,商洛,洛南', '110.148509', '34.090838', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3346, 670291, 2, 669707, '611022000000', '丹凤县', '陕西,商洛,丹凤', '110.327331', '33.695783', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3347, 670459, 2, 669707, '611023000000', '商南县', '陕西,商洛,商南', '110.881807', '33.530995', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3348, 670594, 2, 669707, '611024000000', '山阳县', '陕西,商洛,山阳', '109.882290', '33.532172', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3349, 670852, 2, 669707, '611025000000', '镇安县', '陕西,商洛,镇安', '109.152893', '33.423357', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3350, 671028, 2, 669707, '611026000000', '柞水县', '陕西,商洛,柞水', '109.114207', '33.686110', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3351, 671121, 2, 671120, '620101000000', '市辖区', '甘肃,兰州', '103.834303', '36.061089', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3352, 671122, 2, 671120, '620102000000', '城关区', '甘肃,兰州,城关', '103.834303', '36.061089', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3353, 671324, 2, 671120, '620103000000', '七里河区', '甘肃,兰州,七里河', '103.834303', '36.061089', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3354, 671477, 2, 671120, '620104000000', '西固区', '甘肃,兰州,西固', '103.834303', '36.061089', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3355, 671606, 2, 671120, '620105000000', '安宁区', '甘肃,兰州,安宁', '103.834303', '36.061089', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3356, 671675, 2, 671120, '620111000000', '红古区', '甘肃,兰州,红古', '103.834303', '36.061089', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3357, 671740, 2, 671120, '620121000000', '永登县', '甘肃,兰州,永登', '103.834303', '36.061089', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3358, 671967, 2, 671120, '620122000000', '皋兰县', '甘肃,兰州,皋兰', '103.834303', '36.061089', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3359, 672034, 2, 671120, '620123000000', '榆中县', '甘肃,兰州,榆中', '103.834303', '36.061089', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3360, 672331, 2, 672330, '620201000000', '市辖区', '甘肃,嘉峪关', '98.289152', '39.773130', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3361, 672386, 2, 672385, '620301000000', '市辖区', '甘肃,金昌', '102.188043', '38.520089', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3362, 672387, 2, 672385, '620302000000', '金川区', '甘肃,金昌,金川', '102.194089', '38.521085', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3363, 672439, 2, 672385, '620321000000', '永昌县', '甘肃,金昌,永昌', '101.984649', '38.243170', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3364, 672578, 2, 672577, '620401000000', '市辖区', '甘肃,白银', '104.138559', '36.544756', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3365, 672579, 2, 672577, '620402000000', '白银区', '甘肃,白银,白银', '104.148556', '36.535398', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3366, 672670, 2, 672577, '620403000000', '平川区', '甘肃,白银,平川', '104.825208', '36.728304', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3367, 672773, 2, 672577, '620421000000', '靖远县', '甘肃,白银,靖远', '104.676774', '36.571366', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3368, 672978, 2, 672577, '620422000000', '会宁县', '甘肃,白银,会宁', '105.053358', '35.692823', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3369, 673307, 2, 672577, '620423000000', '景泰县', '甘肃,白银,景泰', '104.063091', '37.183804', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3370, 673464, 2, 673463, '620501000000', '市辖区', '甘肃,天水', '105.724947', '34.580863', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3371, 673465, 2, 673463, '620502000000', '秦州区', '甘肃,天水,秦州', '105.724199', '34.580892', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3372, 673952, 2, 673463, '620503000000', '麦积区', '甘肃,天水,麦积', '105.889557', '34.570384', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3373, 674399, 2, 673463, '620521000000', '清水县', '甘肃,天水,清水', '106.137293', '34.749865', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3374, 674684, 2, 673463, '620522000000', '秦安县', '甘肃,天水,秦安', '105.674983', '34.858916', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3375, 675138, 2, 673463, '620523000000', '甘谷县', '甘肃,天水,甘谷', '105.340864', '34.745465', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3376, 675568, 2, 673463, '620524000000', '武山县', '甘肃,天水,武山', '104.890782', '34.721380', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3377, 675938, 2, 673463, '620525000000', '张家川回族自治县', '甘肃,天水,张家川', '106.204518', '34.988037', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3378, 676216, 2, 676215, '620601000000', '市辖区', '甘肃,武威', '102.638011', '37.928264', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3379, 676217, 2, 676215, '620602000000', '凉州区', '甘肃,武威,凉州', '102.642184', '37.928225', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3380, 676751, 2, 676215, '620621000000', '民勤县', '甘肃,武威,民勤', '103.093792', '38.624350', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3381, 677055, 2, 676215, '620622000000', '古浪县', '甘肃,武威,古浪', '102.897533', '37.470120', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3382, 677344, 2, 676215, '620623000000', '天祝藏族自治县', '甘肃,武威,天祝', '103.141757', '36.971740', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3383, 677569, 2, 677568, '620701000000', '市辖区', '甘肃,张掖', '100.449818', '38.925875', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3384, 677570, 2, 677568, '620702000000', '甘州区', '甘肃,张掖,甘州', '100.478058', '38.929763', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3385, 677865, 2, 677568, '620721000000', '肃南裕固族自治县', '甘肃,张掖,肃南', '99.615601', '38.836932', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3386, 677983, 2, 677568, '620722000000', '民乐县', '甘肃,张掖,民乐', '100.812860', '38.430794', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3387, 678174, 2, 677568, '620723000000', '临泽县', '甘肃,张掖,临泽', '100.164445', '39.152642', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3388, 678270, 2, 677568, '620724000000', '高台县', '甘肃,张掖,高台', '99.819317', '39.377733', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3389, 678427, 2, 677568, '620725000000', '山丹县', '甘肃,张掖,山丹', '101.088575', '38.784758', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3390, 678561, 2, 678560, '620801000000', '市辖区', '甘肃,平凉', '106.665240', '35.543051', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3391, 678562, 2, 678560, '620802000000', '崆峒区', '甘肃,平凉,崆峒', '106.674767', '35.542491', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3392, 678825, 2, 678560, '620821000000', '泾川县', '甘肃,平凉,泾川', '107.367850', '35.332666', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3393, 679066, 2, 678560, '620822000000', '灵台县', '甘肃,平凉,灵台', '107.621124', '35.065399', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3394, 679271, 2, 678560, '620823000000', '崇信县', '甘肃,平凉,崇信', '107.035409', '35.302123', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3395, 679368, 2, 678560, '620824000000', '华亭县', '甘肃,平凉,华亭', '106.653158', '35.218292', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3396, 679507, 2, 678560, '620825000000', '庄浪县', '甘肃,平凉,庄浪', '106.036687', '35.202385', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3397, 679825, 2, 678560, '620826000000', '静宁县', '甘肃,平凉,静宁', '105.732556', '35.521977', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3398, 680192, 2, 680191, '620901000000', '市辖区', '甘肃,酒泉', '98.494483', '39.732410', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3399, 680193, 2, 680191, '620902000000', '肃州区', '甘肃,酒泉,肃州', '98.507850', '39.745071', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3400, 680365, 2, 680191, '620921000000', '金塔县', '甘肃,酒泉,金塔', '98.903270', '39.983599', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3401, 680478, 2, 680191, '620922000000', '瓜州县', '甘肃,酒泉,瓜州', '95.782306', '40.520545', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3402, 680582, 2, 680191, '620923000000', '肃北蒙古族自治县', '甘肃,酒泉,肃北', '94.876579', '39.512450', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3403, 680615, 2, 680191, '620924000000', '阿克塞哈萨克族自治县', '甘肃,酒泉,阿克塞', '94.340204', '39.633943', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3404, 680634, 2, 680191, '620981000000', '玉门市', '甘肃,酒泉,玉门', '97.045679', '40.291843', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3405, 680736, 2, 680191, '620982000000', '敦煌市', '甘肃,酒泉,敦煌', '94.661967', '40.142128', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3406, 680816, 2, 680815, '621001000000', '市辖区', '甘肃,庆阳', '107.643631', '35.709077', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3407, 680817, 2, 680815, '621002000000', '西峰区', '甘肃,庆阳,西峰', '107.651077', '35.730652', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3408, 680943, 2, 680815, '621021000000', '庆城县', '甘肃,庆阳,庆城', '107.881802', '36.016299', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3409, 681132, 2, 680815, '621022000000', '环县', '甘肃,庆阳,环县', '107.308501', '36.568435', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3410, 681414, 2, 680815, '621023000000', '华池县', '甘肃,庆阳,华池', '107.990035', '36.461355', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3411, 681559, 2, 680815, '621024000000', '合水县', '甘肃,庆阳,合水', '108.019530', '35.819243', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3412, 681665, 2, 680815, '621025000000', '正宁县', '甘肃,庆阳,正宁', '108.359976', '35.491890', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3413, 681784, 2, 680815, '621026000000', '宁县', '甘肃,庆阳,宁县', '107.928369', '35.502177', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3414, 682081, 2, 680815, '621027000000', '镇原县', '甘肃,庆阳,镇原', '107.200832', '35.677462', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3415, 682323, 2, 682322, '621101000000', '市辖区', '甘肃,定西', '104.626282', '35.580662', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3416, 682324, 2, 682322, '621102000000', '安定区', '甘肃,定西,安定', '104.610668', '35.580629', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3417, 682673, 2, 682322, '621121000000', '通渭县', '甘肃,定西,通渭', '105.242061', '35.210831', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3418, 683034, 2, 682322, '621122000000', '陇西县', '甘肃,定西,陇西', '104.634984', '35.003940', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3419, 683278, 2, 682322, '621123000000', '渭源县', '甘肃,定西,渭源', '104.215467', '35.136755', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3420, 683515, 2, 682322, '621124000000', '临洮县', '甘肃,定西,临洮', '103.859565', '35.394989', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3421, 683869, 2, 682322, '621125000000', '漳县', '甘肃,定西,漳县', '104.471572', '34.848444', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3422, 684024, 2, 682322, '621126000000', '岷县', '甘肃,定西,岷县', '104.036880', '34.438076', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3423, 684416, 2, 684415, '621201000000', '市辖区', '甘肃,陇南', '104.921841', '33.400684', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3424, 684417, 2, 684415, '621202000000', '武都区', '甘肃,陇南,武都', '104.926337', '33.392211', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3425, 685162, 2, 684415, '621221000000', '成县', '甘肃,陇南,成县', '105.742203', '33.750477', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3426, 685439, 2, 684415, '621222000000', '文县', '甘肃,陇南,文县', '104.683434', '32.943815', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3427, 685772, 2, 684415, '621223000000', '宕昌县', '甘肃,陇南,宕昌', '104.393385', '34.047261', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3428, 686138, 2, 684415, '621224000000', '康县', '甘肃,陇南,康县', '105.609169', '33.329136', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3429, 686518, 2, 684415, '621225000000', '西和县', '甘肃,陇南,西和', '105.298756', '34.014215', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3430, 686933, 2, 684415, '621226000000', '礼县', '甘肃,陇南,礼县', '105.178640', '34.189345', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3431, 687542, 2, 684415, '621227000000', '徽县', '甘肃,陇南,徽县', '106.087780', '33.768826', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3432, 687781, 2, 684415, '621228000000', '两当县', '甘肃,陇南,两当', '106.304967', '33.908917', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3433, 687917, 2, 687916, '622901000000', '临夏市', '甘肃,临夏,临夏', '103.243021', '35.604376', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3434, 687999, 2, 687916, '622921000000', '临夏县', '甘肃,临夏,临夏', '103.243021', '35.604376', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3435, 688248, 2, 687916, '622922000000', '康乐县', '甘肃,临夏,康乐', '103.708354', '35.370505', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3436, 688417, 2, 687916, '622923000000', '永靖县', '甘肃,临夏,永靖', '103.285854', '35.958306', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3437, 688588, 2, 687916, '622924000000', '广河县', '甘肃,临夏,广河', '103.575834', '35.488052', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3438, 688701, 2, 687916, '622925000000', '和政县', '甘肃,临夏,和政', '103.350997', '35.424603', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3439, 688841, 2, 687916, '622926000000', '东乡族自治县', '甘肃,临夏,东乡族自治县', '103.389346', '35.663752', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3440, 689096, 2, 687916, '622927000000', '积石山保安族东乡族撒拉族自治县', '甘肃,临夏,积石山', '102.875843', '35.717661', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3441, 689266, 2, 689265, '623001000000', '合作市', '甘肃,甘南,合作', '102.910882', '35.000399', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3442, 689327, 2, 689265, '623021000000', '临潭县', '甘肃,甘南,临潭', '103.353919', '34.692747', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3443, 689488, 2, 689265, '623022000000', '卓尼县', '甘肃,甘南,卓尼', '103.507109', '34.589588', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3444, 689610, 2, 689265, '623023000000', '舟曲县', '甘肃,甘南,舟曲', '104.371586', '33.785259', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3445, 689845, 2, 689265, '623024000000', '迭部县', '甘肃,甘南,迭部', '103.221870', '34.055939', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3446, 689913, 2, 689265, '623025000000', '玛曲县', '甘肃,甘南,玛曲', '102.072698', '33.997712', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3447, 689966, 2, 689265, '623026000000', '碌曲县', '甘肃,甘南,碌曲', '102.487327', '34.590944', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3448, 690005, 2, 689265, '623027000000', '夏河县', '甘肃,甘南,夏河', '102.521807', '35.202503', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3449, 690096, 2, 690095, '630101000000', '市辖区', '青海,西宁', '101.778228', '36.617144', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3450, 690097, 2, 690095, '630102000000', '城东区', '青海,西宁,城东', '101.778228', '36.617144', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3451, 690164, 2, 690095, '630103000000', '城中区', '青海,西宁,城中', '101.778228', '36.617144', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3452, 690235, 2, 690095, '630104000000', '城西区', '青海,西宁,城西', '101.778228', '36.617144', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3453, 690283, 2, 690095, '630105000000', '城北区', '青海,西宁,城北', '101.778228', '36.617144', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3454, 690357, 2, 690095, '630121000000', '大通回族土族自治县', '青海,西宁,大通', '101.679987', '36.930717', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3455, 690689, 2, 690095, '630122000000', '湟中县', '青海,西宁,湟中', '101.778228', '36.617144', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3456, 691114, 2, 690095, '630123000000', '湟源县', '青海,西宁,湟源', '101.778228', '36.617144', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3457, 691279, 2, 691278, '630202000000', '乐都区', '青海,海东,乐都', '102.401725', '36.482058', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3458, 691667, 2, 691278, '630203000000', '平安区', '青海,海东,平安', '102.108835', '36.500563', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3459, 691796, 2, 691278, '630222000000', '民和回族土族自治县', '青海,海东,民和', '102.830892', '36.320321', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3460, 692148, 2, 691278, '630223000000', '互助土族自治县', '青海,海东,互助', '101.959271', '36.844249', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3461, 692479, 2, 691278, '630224000000', '化隆回族自治县', '青海,海东,化隆', '102.264143', '36.094908', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3462, 692870, 2, 691278, '630225000000', '循化撒拉族自治县', '青海,海东,循化', '102.485646', '35.848586', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3463, 693041, 2, 693040, '632221000000', '门源回族自治县', '青海,海北,门源', '101.622364', '37.376449', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3464, 693186, 2, 693040, '632222000000', '祁连县', '青海,海北,祁连', '100.253211', '38.177112', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3465, 693243, 2, 693040, '632223000000', '海晏县', '青海,海北,海晏', '100.994430', '36.896467', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3466, 693286, 2, 693040, '632224000000', '刚察县', '青海,海北,刚察', '100.145833', '37.325470', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3467, 693343, 2, 693342, '632321000000', '同仁县', '青海,黄南,同仁', '102.018323', '35.516063', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3468, 693437, 2, 693342, '632322000000', '尖扎县', '青海,黄南,尖扎', '102.031183', '35.938299', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3469, 693541, 2, 693342, '632323000000', '泽库县', '青海,黄南,泽库', '101.466689', '35.035313', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3470, 693623, 2, 693342, '632324000000', '河南蒙古族自治县', '青海,黄南,河南', '102.015248', '35.519548', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3471, 693673, 2, 693672, '632521000000', '共和县', '青海,海南,共和', '100.620031', '36.284107', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3472, 693808, 2, 693672, '632522000000', '同德县', '青海,海南,同德', '100.578052', '35.254791', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3473, 693906, 2, 693672, '632523000000', '贵德县', '青海,海南,贵德', '101.433298', '36.040150', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3474, 694046, 2, 693672, '632524000000', '兴海县', '青海,海南,兴海', '99.987966', '35.588613', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3475, 694121, 2, 693672, '632525000000', '贵南县', '青海,海南,贵南', '100.747503', '35.586715', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3476, 694221, 2, 694220, '632621000000', '玛沁县', '青海,果洛,玛沁', '100.238888', '34.477433', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3477, 694272, 2, 694220, '632622000000', '班玛县', '青海,果洛,班玛', '100.737138', '32.932723', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3478, 694315, 2, 694220, '632623000000', '甘德县', '青海,果洛,甘德', '99.900905', '33.969219', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3479, 694361, 2, 694220, '632624000000', '达日县', '青海,果洛,达日', '99.651392', '33.748921', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3480, 694407, 2, 694220, '632625000000', '久治县', '青海,果洛,久治', '101.482831', '33.429471', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3481, 694440, 2, 694220, '632626000000', '玛多县', '青海,果洛,玛多', '98.209206', '34.915946', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3482, 694479, 2, 694478, '632701000000', '玉树市', '青海,玉树,玉树', '97.008785', '32.993107', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3483, 694572, 2, 694478, '632722000000', '杂多县', '青海,玉树,杂多', '95.300723', '32.893185', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3484, 694622, 2, 694478, '632723000000', '称多县', '青海,玉树,称多', '97.110832', '33.369218', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3485, 694695, 2, 694478, '632724000000', '治多县', '青海,玉树,治多', '95.613080', '33.852751', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3486, 694728, 2, 694478, '632725000000', '囊谦县', '青海,玉树,囊谦', '96.480650', '32.203246', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3487, 694816, 2, 694478, '632726000000', '曲麻莱县', '青海,玉树,曲麻莱', '95.797367', '34.126429', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3488, 694847, 2, 694846, '632801000000', '格尔木市', '青海,海西,格尔木', '94.928484', '36.406404', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3489, 694932, 2, 694846, '632802000000', '德令哈市', '青海,海西,德令哈', '97.360985', '37.369436', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3490, 695009, 2, 694846, '632821000000', '乌兰县', '青海,海西,乌兰', '98.480195', '36.929749', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3491, 695060, 2, 694846, '632822000000', '都兰县', '青海,海西,都兰', '98.095844', '36.302496', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3492, 695184, 2, 694846, '632823000000', '天峻县', '青海,海西,天峻', '99.022984', '37.300851', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3493, 695261, 2, 695260, '640101000000', '市辖区', '宁夏,银川', '106.230909', '38.487193', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3494, 695262, 2, 695260, '640104000000', '兴庆区', '宁夏,银川,兴庆', '106.230909', '38.487193', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3495, 695412, 2, 695260, '640105000000', '西夏区', '宁夏,银川,西夏', '106.230909', '38.487193', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3496, 695500, 2, 695260, '640106000000', '金凤区', '宁夏,银川,金凤', '106.230909', '38.487193', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3497, 695575, 2, 695260, '640121000000', '永宁县', '宁夏,银川,永宁', '106.230909', '38.487193', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3498, 695675, 2, 695260, '640122000000', '贺兰县', '宁夏,银川,贺兰', '106.230909', '38.487193', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3499, 695767, 2, 695260, '640181000000', '灵武市', '宁夏,银川,灵武', '106.230909', '38.487193', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3500, 695884, 2, 695883, '640201000000', '市辖区', '宁夏,石嘴山', '106.383303', '38.983236', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3501, 695885, 2, 695883, '640202000000', '大武口区', '宁夏,石嘴山,大武口', '106.367861', '39.019060', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3502, 695959, 2, 695883, '640205000000', '惠农区', '宁夏,石嘴山,惠农', '106.781176', '39.239302', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3503, 696058, 2, 695883, '640221000000', '平罗县', '宁夏,石嘴山,平罗', '106.523474', '38.913544', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3504, 696253, 2, 696252, '640301000000', '市辖区', '宁夏,吴忠', '106.198393', '37.997460', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3505, 696254, 2, 696252, '640302000000', '利通区', '宁夏,吴忠,利通', '106.212566', '37.983458', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3506, 696427, 2, 696252, '640303000000', '红寺堡区', '宁夏,吴忠,红寺堡', '106.062114', '37.425702', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3507, 696505, 2, 696252, '640323000000', '盐池县', '宁夏,吴忠,盐池', '107.407359', '37.783205', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3508, 696633, 2, 696252, '640324000000', '同心县', '宁夏,吴忠,同心', '105.914458', '36.980575', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3509, 696803, 2, 696252, '640381000000', '青铜峡市', '宁夏,吴忠,青铜峡', '106.078818', '38.021302', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3510, 696929, 2, 696928, '640401000000', '市辖区', '宁夏,固原', '106.242610', '36.015855', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3511, 696930, 2, 696928, '640402000000', '原州区', '宁夏,固原,原州', '106.287782', '36.003740', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3512, 697133, 2, 696928, '640422000000', '西吉县', '宁夏,固原,西吉', '105.729085', '35.963913', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3513, 697457, 2, 696928, '640423000000', '隆德县', '宁夏,固原,隆德', '106.111595', '35.625915', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3514, 697594, 2, 696928, '640424000000', '泾源县', '宁夏,固原,泾源', '106.330646', '35.498160', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3515, 697714, 2, 696928, '640425000000', '彭阳县', '宁夏,固原,彭阳', '106.638340', '35.849565', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3516, 697888, 2, 697887, '640501000000', '市辖区', '宁夏,中卫', '105.196902', '37.499972', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3517, 697889, 2, 697887, '640502000000', '沙坡头区', '宁夏,中卫,沙坡头', '105.190536', '37.514564', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3518, 698087, 2, 697887, '640521000000', '中宁县', '宁夏,中卫,中宁', '105.685285', '37.491505', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3519, 698240, 2, 697887, '640522000000', '海原县', '宁夏,中卫,海原', '105.643487', '36.565033', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3520, 698442, 2, 698441, '650101000000', '市辖区', '新疆,乌鲁木齐', '87.616848', '43.825592', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3521, 698443, 2, 698441, '650102000000', '天山区', '新疆,乌鲁木齐,天山', '87.616848', '43.825592', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3522, 698654, 2, 698441, '650103000000', '沙依巴克区', '新疆,乌鲁木齐,沙依巴克', '87.616848', '43.825592', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3523, 698884, 2, 698441, '650104000000', '新市区', '新疆,乌鲁木齐,新市区', '87.616848', '43.825592', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3524, 699054, 2, 698441, '650105000000', '水磨沟区', '新疆,乌鲁木齐,水磨沟', '87.616848', '43.825592', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3525, 699229, 2, 698441, '650106000000', '头屯河区', '新疆,乌鲁木齐,头屯河', '87.616848', '43.825592', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3526, 699313, 2, 698441, '650107000000', '达坂城区', '新疆,乌鲁木齐,达坂城', '87.616848', '43.825592', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3527, 699363, 2, 698441, '650109000000', '米东区', '新疆,乌鲁木齐,米东', '87.616848', '43.825592', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3528, 699535, 2, 698441, '650121000000', '乌鲁木齐县', '新疆,乌鲁木齐,乌鲁木齐', '87.616848', '43.825592', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3529, 699584, 2, 699583, '650201000000', '市辖区', '新疆,克拉玛依', '84.889207', '45.579888', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3530, 699585, 2, 699583, '650202000000', '独山子区', '新疆,克拉玛依,独山子', '84.886974', '44.328096', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3531, 699606, 2, 699583, '650203000000', '克拉玛依区', '新疆,克拉玛依,克拉玛依', '84.867844', '45.602526', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3532, 699730, 2, 699583, '650204000000', '白碱滩区', '新疆,克拉玛依,白碱滩', '85.131696', '45.687855', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3533, 699752, 2, 699583, '650205000000', '乌尔禾区', '新疆,克拉玛依,乌尔禾', '85.693742', '46.089148', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3534, 699774, 2, 699773, '650402000000', '高昌区', '新疆,吐鲁番,高昌', '89.182342', '42.947635', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3535, 699884, 2, 699773, '650421000000', '鄯善县', '新疆,吐鲁番,鄯善', '90.213330', '42.868744', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3536, 700000, 2, 699773, '650422000000', '托克逊县', '新疆,吐鲁番,托克逊', '88.653814', '42.792521', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3537, 700071, 2, 700070, '650502000000', '伊州区', '新疆,哈密,伊州', '93.514916', '42.818501', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3538, 700350, 2, 700070, '650521000000', '巴里坤哈萨克自治县', '新疆,哈密,巴里坤', '93.016625', '43.598763', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3539, 700438, 2, 700070, '650522000000', '伊吾县', '新疆,哈密,伊吾', '94.697074', '43.254978', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3540, 700490, 2, 700489, '652301000000', '昌吉市', '新疆,昌吉,昌吉', '87.304112', '44.013183', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3541, 700685, 2, 700489, '652302000000', '阜康市', '新疆,昌吉,阜康', '87.946894', '44.168576', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3542, 700805, 2, 700489, '652323000000', '呼图壁县', '新疆,昌吉,呼图壁', '86.898902', '44.191428', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3543, 700956, 2, 700489, '652324000000', '玛纳斯县', '新疆,昌吉,玛纳斯', '86.213997', '44.303893', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3544, 701230, 2, 700489, '652325000000', '奇台县', '新疆,昌吉,奇台', '89.593967', '44.022066', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3545, 701375, 2, 700489, '652327000000', '吉木萨尔县', '新疆,昌吉,吉木萨尔', '89.180437', '44.000497', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3546, 701474, 2, 700489, '652328000000', '木垒哈萨克自治县', '新疆,昌吉,木垒', '90.286028', '43.834689', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3547, 701560, 2, 701559, '652701000000', '博乐市', '新疆,博尔塔拉,博乐', '82.051005', '44.853870', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3548, 701834, 2, 701559, '652702000000', '阿拉山口市', '新疆,博尔塔拉,阿拉山口', '82.559396', '45.172228', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3549, 701839, 2, 701559, '652722000000', '精河县', '新疆,博尔塔拉,精河', '82.894195', '44.600408', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3550, 701978, 2, 701559, '652723000000', '温泉县', '新疆,博尔塔拉,温泉', '81.024816', '44.968857', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3551, 702105, 2, 702104, '652801000000', '库尔勒市', '新疆,巴音郭楞,库尔勒', '86.174633', '41.725892', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3552, 702357, 2, 702104, '652822000000', '轮台县', '新疆,巴音郭楞,轮台', '84.252156', '41.777702', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3553, 702447, 2, 702104, '652823000000', '尉犁县', '新疆,巴音郭楞,尉犁', '86.261321', '41.343933', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3554, 702573, 2, 702104, '652824000000', '若羌县', '新疆,巴音郭楞,若羌', '88.167152', '39.023242', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3555, 702634, 2, 702104, '652825000000', '且末县', '新疆,巴音郭楞,且末', '85.528865', '38.147895', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3556, 702727, 2, 702104, '652826000000', '焉耆回族自治县', '新疆,巴音郭楞,焉耆', '86.574067', '42.059759', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3557, 702821, 2, 702104, '652827000000', '和静县', '新疆,巴音郭楞,和静', '86.384065', '42.323625', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3558, 702995, 2, 702104, '652828000000', '和硕县', '新疆,巴音郭楞,和硕', '86.863963', '42.268371', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3559, 703063, 2, 702104, '652829000000', '博湖县', '新疆,巴音郭楞,博湖', '86.631998', '41.980152', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3560, 703120, 2, 703119, '652901000000', '阿克苏市', '新疆,阿克苏,阿克苏', '80.260605', '41.168779', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3561, 703353, 2, 703119, '652922000000', '温宿县', '新疆,阿克苏,温宿', '80.238959', '41.276688', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3562, 703576, 2, 703119, '652923000000', '库车县', '新疆,阿克苏,库车', '82.962016', '41.717906', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3563, 703858, 2, 703119, '652924000000', '沙雅县', '新疆,阿克苏,沙雅', '82.781819', '41.221667', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3564, 704059, 2, 703119, '652925000000', '新和县', '新疆,阿克苏,新和', '82.609220', '41.548118', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3565, 704209, 2, 703119, '652926000000', '拜城县', '新疆,阿克苏,拜城', '81.874156', '41.796910', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3566, 704413, 2, 703119, '652927000000', '乌什县', '新疆,阿克苏,乌什', '79.224445', '41.214652', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3567, 704556, 2, 703119, '652928000000', '阿瓦提县', '新疆,阿克苏,阿瓦提', '80.373137', '40.644529', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3568, 704733, 2, 703119, '652929000000', '柯坪县', '新疆,阿克苏,柯坪', '79.047291', '40.508340', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3569, 704780, 2, 704779, '653001000000', '阿图什市', '新疆,克孜勒苏,阿图什', '76.168400', '39.716160', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3570, 704893, 2, 704779, '653022000000', '阿克陶县', '新疆,克孜勒苏,阿克陶', '75.962509', '37.993697', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3571, 705047, 2, 704779, '653023000000', '阿合奇县', '新疆,克孜勒苏,阿合奇', '78.446253', '40.936936', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3572, 705084, 2, 704779, '653024000000', '乌恰县', '新疆,克孜勒苏,乌恰', '76.167819', '39.714526', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3573, 705146, 2, 705145, '653101000000', '喀什市', '新疆,喀什,喀什', '75.989755', '39.470400', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3574, 705344, 2, 705145, '653121000000', '疏附县', '新疆,喀什,疏附', '75.862814', '39.375044', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3575, 705496, 2, 705145, '653122000000', '疏勒县', '新疆,喀什,疏勒', '76.048139', '39.401385', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3576, 705764, 2, 705145, '653123000000', '英吉沙县', '新疆,喀什,英吉沙', '76.175729', '38.930382', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3577, 705961, 2, 705145, '653124000000', '泽普县', '新疆,喀什,泽普', '77.260103', '38.184955', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3578, 706133, 2, 705145, '653125000000', '莎车县', '新疆,喀什,莎车', '77.245761', '38.414217', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3579, 706753, 2, 705145, '653126000000', '叶城县', '新疆,喀什,叶城', '77.413836', '37.882989', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3580, 707143, 2, 705145, '653127000000', '麦盖提县', '新疆,喀什,麦盖提', '77.610105', '38.898666', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3581, 707342, 2, 705145, '653128000000', '岳普湖县', '新疆,喀什,岳普湖', '76.773163', '39.224200', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3582, 707464, 2, 705145, '653129000000', '伽师县', '新疆,喀什,伽师', '76.723720', '39.488182', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3583, 707806, 2, 705145, '653130000000', '巴楚县', '新疆,喀什,巴楚', '78.549297', '39.785155', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3584, 708055, 2, 705145, '653131000000', '塔什库尔干塔吉克自治县', '新疆,喀什,塔什库尔干', '75.989755', '39.470400', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3585, 708118, 2, 708117, '653201000000', '和田市', '新疆,和田,和田', '79.913534', '37.112149', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3586, 708305, 2, 708117, '653221000000', '和田县', '新疆,和田,和田', '79.913534', '37.112149', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3587, 708528, 2, 708117, '653222000000', '墨玉县', '新疆,和田,墨玉', '79.728841', '37.277340', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3588, 708940, 2, 708117, '653223000000', '皮山县', '新疆,和田,皮山', '78.283669', '37.621450', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3589, 709155, 2, 708117, '653224000000', '洛浦县', '新疆,和田,洛浦', '80.188986', '37.073667', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3590, 709393, 2, 708117, '653225000000', '策勒县', '新疆,和田,策勒', '80.806159', '36.998335', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3591, 709538, 2, 708117, '653226000000', '于田县', '新疆,和田,于田', '81.677418', '36.857081', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3592, 709746, 2, 708117, '653227000000', '民丰县', '新疆,和田,民丰', '82.695862', '37.064080', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3593, 709793, 2, 709792, '654002000000', '伊宁市', '新疆,伊犁,伊宁', '81.277950', '43.908558', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3594, 709978, 2, 709792, '654003000000', '奎屯市', '新疆,伊犁,奎屯', '84.903267', '44.426529', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3595, 710057, 2, 709792, '654004000000', '霍尔果斯市', '新疆,伊犁,霍尔果斯', '80.420759', '44.201669', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3596, 710090, 2, 709792, '654021000000', '伊宁县', '新疆,伊犁,伊宁', '81.277950', '43.908558', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3597, 710275, 2, 709792, '654022000000', '察布查尔锡伯自治县', '新疆,伊犁,察布查尔', '81.151337', '43.840726', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3598, 710410, 2, 709792, '654023000000', '霍城县', '新疆,伊犁,霍城', '80.874181', '44.053592', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3599, 710612, 2, 709792, '654024000000', '巩留县', '新疆,伊犁,巩留', '82.231718', '43.482628', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3600, 710730, 2, 709792, '654025000000', '新源县', '新疆,伊犁,新源', '83.260770', '43.429930', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3601, 710868, 2, 709792, '654026000000', '昭苏县', '新疆,伊犁,昭苏', '81.130975', '43.157293', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3602, 711013, 2, 709792, '654027000000', '特克斯县', '新疆,伊犁,特克斯', '81.836206', '43.217184', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3603, 711105, 2, 709792, '654028000000', '尼勒克县', '新疆,伊犁,尼勒克', '82.511810', '43.800247', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3604, 711219, 2, 711218, '654201000000', '塔城市', '新疆,塔城,塔城', '82.978928', '46.748523', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3605, 711436, 2, 711218, '654202000000', '乌苏市', '新疆,塔城,乌苏', '84.713736', '44.418887', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3606, 711820, 2, 711218, '654221000000', '额敏县', '新疆,塔城,额敏', '83.628303', '46.524673', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3607, 712103, 2, 711218, '654223000000', '沙湾县', '新疆,塔城,沙湾', '85.619416', '44.326388', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3608, 712601, 2, 711218, '654224000000', '托里县', '新疆,塔城,托里', '83.606951', '45.947638', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3609, 712700, 2, 711218, '654225000000', '裕民县', '新疆,塔城,裕民', '82.982668', '46.201104', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3610, 712777, 2, 711218, '654226000000', '和布克赛尔蒙古自治县', '新疆,塔城,和布克赛尔', '85.738335', '46.798895', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3611, 712894, 2, 712893, '654301000000', '阿勒泰市', '新疆,阿勒泰,阿勒泰', '88.131842', '47.827309', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3612, 713072, 2, 712893, '654321000000', '布尔津县', '新疆,阿勒泰,布尔津', '86.874897', '47.701850', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3613, 713161, 2, 712893, '654322000000', '富蕴县', '新疆,阿勒泰,富蕴', '89.525504', '46.994115', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3614, 713261, 2, 712893, '654323000000', '福海县', '新疆,阿勒泰,福海', '87.486703', '47.111919', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3615, 713426, 2, 712893, '654324000000', '哈巴河县', '新疆,阿勒泰,哈巴河', '86.418621', '48.060846', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3616, 713568, 2, 712893, '654325000000', '青河县', '新疆,阿勒泰,青河', '90.382961', '46.674205', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3617, 713635, 2, 712893, '654326000000', '吉木乃县', '新疆,阿勒泰,吉木乃', '85.874096', '47.443101', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3618, 713698, 2, 713697, '659001000000', '石河子市', '新疆,石河子', '86.080460', '44.305428', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3619, 713842, 2, 713697, '659002000000', '阿拉尔市', '新疆,阿拉尔', '81.280525', '40.547653', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3620, 714172, 2, 713697, '659003000000', '图木舒克市', '新疆,图木舒克', '79.074089', '39.868969', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3621, 714310, 2, 713697, '659004000000', '五家渠市', '新疆,五家渠', '87.543243', '44.166756', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3622, 714363, 2, 713697, '659006000000', '铁门关市', '新疆,铁门关', '85.669533', '41.863300', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3648, 714403, 2, 714402, '0', '芳苑乡', '台湾,彰化,芳苑', '120.416000', '24.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3649, 714632, 2, 714402, '0', '芬园乡', '台湾,彰化,芬园', '120.416000', '24.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3650, 714701, 2, 714402, '0', '福兴乡', '台湾,彰化,福兴', '120.416000', '24.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3651, 714777, 2, 714402, '0', '和美镇', '台湾,彰化,和美', '120.416000', '24.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3652, 715055, 2, 714402, '0', '花坛乡', '台湾,彰化,花坛', '120.416000', '24.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3653, 715172, 2, 714402, '0', '鹿港镇', '台湾,彰化,鹿港', '120.416000', '24.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3654, 715490, 2, 714402, '0', '埤头乡', '台湾,彰化,埤头', '120.464542', '23.890392', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3655, 715602, 2, 714402, '0', '埔心乡', '台湾,彰化,埔心', '120.416000', '24.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3656, 715745, 2, 714402, '0', '埔盐乡', '台湾,彰化,埔盐', '120.416000', '24.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3657, 715795, 2, 714402, '0', '伸港乡', '台湾,彰化,伸港', '120.416000', '24.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3658, 715960, 2, 714402, '0', '社头乡', '台湾,彰化,社头', '120.416000', '24.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3659, 716105, 2, 714402, '0', '田尾乡', '台湾,彰化,田尾', '120.416000', '24.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3660, 716202, 2, 714402, '0', '田中镇', '台湾,彰化,田中', '120.416000', '24.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3661, 716341, 2, 714402, '0', '线西乡', '台湾,彰化,线西', '120.416000', '24.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3662, 716421, 2, 714402, '0', '溪湖镇', '台湾,彰化,溪湖', '120.416000', '24.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3663, 716750, 2, 714402, '0', '秀水乡', '台湾,彰化,秀水', '120.416000', '24.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3664, 716874, 2, 714402, '0', '溪州乡', '台湾,彰化,溪州', '120.492906', '23.853578', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3665, 717107, 2, 714402, '0', '永靖乡', '台湾,彰化,永靖', '120.416000', '24.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3666, 717238, 2, 714402, '0', '员林市', '台湾,彰化,员林市', '120.416000', '24.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3667, 717447, 2, 714402, '0', '竹塘乡', '台湾,彰化,竹塘', '120.416000', '24.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3668, 717532, 2, 717531, '0', '八里区', '台湾,新北,八里区', '121.465746', '25.012366', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3669, 717645, 2, 717531, '0', '板桥区', '台湾,新北,板桥区', '121.465746', '25.012366', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3670, 717902, 2, 717531, '0', '贡寮区', '台湾,新北,贡寮区', '121.465746', '25.012366', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3671, 717955, 2, 717531, '0', '金山区', '台湾,新北,金山区', '121.465746', '25.012366', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3672, 718036, 2, 717531, '0', '林口区', '台湾,新北,林口区', '121.465746', '25.012366', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3673, 718195, 2, 717531, '0', '芦洲区', '台湾,新北,芦洲区', '121.465746', '25.012366', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3674, 718266, 2, 717531, '0', '坪林区', '台湾,新北,坪林区', '121.465746', '25.012366', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3675, 718327, 2, 717531, '0', '平溪区', '台湾,新北,平溪区', '121.465746', '25.012366', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3676, 718375, 2, 717531, '0', '瑞芳区', '台湾,新北,瑞芳区', '121.465746', '25.012366', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3677, 718490, 2, 717531, '0', '三重区', '台湾,新北,三重区', '121.465746', '25.012366', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3678, 718786, 2, 717531, '0', '三峡区', '台湾,新北,三峡区', '121.465746', '25.012366', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3679, 718879, 2, 717531, '0', '三芝区', '台湾,新北,三芝区', '121.465746', '25.012366', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3680, 718980, 2, 717531, '0', '深坑区', '台湾,新北,深坑区', '121.465746', '25.012366', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3681, 719023, 2, 717531, '0', '石碇区', '台湾,新北,石碇区', '121.465746', '25.012366', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3682, 719115, 2, 717531, '0', '石门区', '台湾,新北,石门区', '121.465746', '25.012366', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3683, 719155, 2, 717531, '0', '双溪区', '台湾,新北,双溪区', '121.465746', '25.012366', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3684, 719243, 2, 717531, '0', '树林区', '台湾,新北,树林区', '121.465746', '25.012366', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3685, 719382, 2, 717531, '0', '泰山区', '台湾,新北,泰山区', '121.465746', '25.012366', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3686, 719498, 2, 717531, '0', '淡水区', '台湾,新北,淡水区', '121.465746', '25.012366', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3687, 719731, 2, 717531, '0', '土城区', '台湾,新北,土城区', '121.465746', '25.012366', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3688, 719869, 2, 719868, '0', '白沙乡', '台湾,澎湖,白沙', '119.566417', '23.569733', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3689, 719890, 2, 719868, '0', '湖西乡', '台湾,澎湖,湖西', '119.566417', '23.569733', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3690, 719916, 2, 719868, '0', '马公市', '台湾,澎湖,马公市', '119.566417', '23.569733', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3691, 720065, 2, 719868, '0', '七美乡', '台湾,澎湖,七美', '119.566417', '23.569733', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3692, 720090, 2, 719868, '0', '望安乡', '台湾,澎湖,望安', '119.566417', '23.569733', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3693, 720102, 2, 719868, '0', '西屿乡', '台湾,澎湖,西屿', '119.566417', '23.569733', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3694, 720119, 2, 720118, '0', '三地门乡', '台湾,屏东,三地门', '120.487928', '22.682802', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3695, 720142, 2, 720118, '0', '狮子乡', '台湾,屏东,狮子', '120.487928', '22.682802', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3696, 720163, 2, 720118, '0', '泰武乡', '台湾,屏东,泰武', '120.626012', '22.591307', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3697, 720186, 2, 720118, '0', '万丹乡', '台湾,屏东,万丹', '120.486423', '22.588123', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3698, 720415, 2, 720118, '0', '万峦乡', '台湾,屏东,万峦', '120.566478', '22.571966', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3699, 720480, 2, 720118, '0', '雾臺乡', '台湾,屏东,雾臺', '120.727653', '22.743675', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3700, 720502, 2, 720118, '0', '新埤乡', '台湾,屏东,新埤', '120.545190', '22.465998', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3701, 720553, 2, 720118, '0', '新园乡', '台湾,屏东,新园', '120.459758', '22.544147', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3702, 720649, 2, 720118, '0', '盐埔乡', '台湾,屏东,盐埔', '120.487928', '22.682802', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3703, 720748, 2, 720118, '0', '竹田乡', '台湾,屏东,竹田', '120.487928', '22.682802', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3704, 720835, 2, 720118, '0', '长治乡', '台湾,屏东,长治', '120.487928', '22.682802', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3705, 720975, 2, 720118, '0', '潮州镇', '台湾,屏东,潮州', '120.487928', '22.682802', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3706, 721293, 2, 720118, '0', '车城乡', '台湾,屏东,车城', '120.707694', '22.072115', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3707, 721335, 2, 720118, '0', '春日乡', '台湾,屏东,春日', '120.622000', '22.368284', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3708, 721344, 2, 720118, '0', '东港镇', '台湾,屏东,东港', '120.487928', '22.682802', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3709, 721490, 2, 720118, '0', '枋寮乡', '台湾,屏东,枋寮', '120.487928', '22.682802', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3710, 721617, 2, 720118, '0', '枋山乡', '台湾,屏东,枋山', '120.647762', '22.262550', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3711, 721638, 2, 720118, '0', '高树乡', '台湾,屏东,高树', '120.595945', '22.825131', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3712, 721805, 2, 720118, '0', '恆春镇', '台湾,屏东,恆春', '120.487928', '22.682802', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3713, 721930, 2, 720118, '0', '佳冬乡', '台湾,屏东,佳冬', '120.545370', '22.417786', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3714, 722025, 2, 722024, '0', '梧栖区', '台湾,臺中,梧栖区', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3715, 722212, 2, 722024, '0', '乌日区', '台湾,臺中,乌日区', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3716, 722402, 2, 722024, '0', '新社区', '台湾,臺中,新社区', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3717, 722474, 2, 722024, '0', '西屯区', '台湾,臺中,西屯区', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3718, 722699, 2, 722024, '0', '北屯区', '台湾,臺中,北屯区', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3719, 722879, 2, 722024, '0', '中区', '台湾,臺中,中区', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3720, 722923, 2, 722024, '0', '大肚区', '台湾,臺中,大肚区', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3721, 723021, 2, 722024, '0', '大甲区', '台湾,臺中,大甲区', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3722, 723211, 2, 722024, '0', '大里区', '台湾,臺中,大里区', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3723, 723592, 2, 722024, '0', '大雅区', '台湾,臺中,大雅区', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3724, 723756, 2, 722024, '0', '大安区', '台湾,臺中,大安区', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3725, 723802, 2, 722024, '0', '东势区', '台湾,臺中,东势区', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3726, 723966, 2, 722024, '0', '东区', '台湾,臺中,东区', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3727, 724148, 2, 722024, '0', '丰原区', '台湾,臺中,丰原区', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3728, 724424, 2, 722024, '0', '和平区', '台湾,臺中,和平区', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3729, 724504, 2, 722024, '0', '后里区', '台湾,臺中,后里区', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3730, 724656, 2, 722024, '0', '龙井区', '台湾,臺中,龙井区', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3731, 724797, 2, 722024, '0', '南屯区', '台湾,臺中,南屯区', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3732, 724872, 2, 722024, '0', '北区', '台湾,臺中,北区', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3733, 725199, 2, 722024, '0', '清水区', '台湾,臺中,清水区', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3734, 725489, 2, 725488, '0', '佳里区', '台湾,臺南,佳里区', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3735, 725588, 2, 725488, '0', '将军区', '台湾,臺南,将军区', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3736, 725620, 2, 725488, '0', '六甲区', '台湾,臺南,六甲区', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3737, 725679, 2, 725488, '0', '柳营区', '台湾,臺南,柳营区', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3738, 725795, 2, 725488, '0', '龙崎区', '台湾,臺南,龙崎区', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3739, 725841, 2, 725488, '0', '麻豆区', '台湾,臺南,麻豆区', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3740, 725927, 2, 725488, '0', '南化区', '台湾,臺南,南化区', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3741, 725938, 2, 725488, '0', '楠西区', '台湾,臺南,楠西区', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3742, 725973, 2, 725488, '0', '北区', '台湾,臺南,北区', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3743, 726300, 2, 725488, '0', '七股区', '台湾,臺南,七股区', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3744, 726338, 2, 725488, '0', '仁德区', '台湾,臺南,仁德区', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3745, 726539, 2, 725488, '0', '善化区', '台湾,臺南,善化区', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3746, 726675, 2, 725488, '0', '山上区', '台湾,臺南,山上区', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3747, 726691, 2, 725488, '0', '南区', '台湾,臺南,南区', '120.679305', '24.133453', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3748, 727041, 2, 725488, '0', '中西区', '台湾,臺南,中西区', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3749, 727251, 2, 725488, '0', '下营区', '台湾,臺南,下营区', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3750, 727339, 2, 725488, '0', '西港区', '台湾,臺南,西港区', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3751, 727375, 2, 725488, '0', '新化区', '台湾,臺南,新化区', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3752, 727425, 2, 725488, '0', '新市区', '台湾,臺南,新市区', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3753, 727529, 2, 725488, '0', '新营区', '台湾,臺南,新营区', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3754, 727731, 2, 727730, '0', '北投区', '台湾,臺北,北投区', '121.517057', '25.048074', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3755, 727897, 2, 727730, '0', '大同区', '台湾,臺北,大同区', '121.517057', '25.048074', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3756, 728070, 2, 727730, '0', '大安区', '台湾,臺北,大安区', '121.517057', '25.048074', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3757, 728116, 2, 727730, '0', '南港区', '台湾,臺北,南港区', '121.517057', '25.048074', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3758, 728220, 2, 727730, '0', '内湖区', '台湾,臺北,内湖区', '121.517057', '25.048074', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3759, 728340, 2, 727730, '0', '士林区', '台湾,臺北,士林区', '121.517057', '25.048074', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3760, 728550, 2, 727730, '0', '松山区', '台湾,臺北,松山区', '121.517057', '25.048074', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3761, 728713, 2, 727730, '0', '万华区', '台湾,臺北,万华区', '121.517057', '25.048074', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3762, 728920, 2, 727730, '0', '文山区', '台湾,臺北,文山区', '121.517057', '25.048074', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3763, 729073, 2, 727730, '0', '信义区', '台湾,臺北,信义区', '121.517057', '25.048074', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3764, 729277, 2, 727730, '0', '中山区', '台湾,臺北,中山区', '121.517057', '25.048074', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3765, 729583, 2, 727730, '0', '中正区', '台湾,臺北,中正区', '121.517057', '25.048074', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3766, 729929, 2, 729928, '0', '卑南乡', '台湾,臺东,卑南', '121.117213', '22.781744', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3767, 729994, 2, 729928, '0', '长滨乡', '台湾,臺东,长滨', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3768, 730033, 2, 729928, '0', '成功镇', '台湾,臺东,成功', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3769, 730107, 2, 729928, '0', '池上乡', '台湾,臺东,池上', '121.212999', '23.123275', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3770, 730196, 2, 729928, '0', '达仁乡', '台湾,臺东,达仁', '120.878316', '22.296142', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3771, 730219, 2, 729928, '0', '大武乡', '台湾,臺东,大武', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3772, 730268, 2, 729928, '0', '东河乡', '台湾,臺东,东河', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3773, 730308, 2, 729928, '0', '关山镇', '台湾,臺东,关山', '121.158084', '23.047483', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3774, 730384, 2, 729928, '0', '海端乡', '台湾,臺东,海端', '121.172009', '23.101079', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3775, 730409, 2, 729928, '0', '金峰乡', '台湾,臺东,金峰', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3776, 730416, 2, 729928, '0', '兰屿乡', '台湾,臺东,兰屿', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3777, 730423, 2, 729928, '0', '绿岛乡', '台湾,臺东,绿岛', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3778, 730438, 2, 729928, '0', '鹿野乡', '台湾,臺东,鹿野', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3779, 730510, 2, 729928, '0', '太麻里乡', '台湾,臺东,太麻里', '120.999365', '22.610919', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3780, 730565, 2, 729928, '0', '臺东市', '台湾,臺东,臺东市', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3781, 730832, 2, 729928, '0', '延平乡', '台湾,臺东,延平', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3782, 730844, 2, 730843, '0', '八德区', '台湾,桃园,八德区', '121.083000', '25.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3783, 731212, 2, 730843, '0', '大溪区', '台湾,桃园,大溪区', '121.083000', '25.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3784, 731471, 2, 730843, '0', '大园区', '台湾,桃园,大园区', '121.083000', '25.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3785, 731767, 2, 730843, '0', '復兴区', '台湾,桃园,復兴区', '121.083000', '25.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3786, 731835, 2, 730843, '0', '观音区', '台湾,桃园,观音区', '121.083000', '25.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3787, 732079, 2, 730843, '0', '龟山区', '台湾,桃园,龟山区', '121.083000', '25.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3788, 732469, 2, 730843, '0', '龙潭区', '台湾,桃园,龙潭区', '121.083000', '25.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3789, 732800, 2, 730843, '0', '芦竹区', '台湾,桃园,芦竹区', '121.083000', '25.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3790, 733144, 2, 730843, '0', '平镇区', '台湾,桃园,平区', '121.083000', '25.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3791, 733179, 2, 730843, '0', '桃园区', '台湾,桃园,桃园区', '121.083000', '25.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3792, 733390, 2, 730843, '0', '新屋区', '台湾,桃园,新屋区', '121.083000', '25.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3793, 733537, 2, 730843, '0', '杨梅区', '台湾,桃园,杨梅区', '121.083000', '25.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3794, 733876, 2, 730843, '0', '中坜区', '台湾,桃园,中坜区', '121.083000', '25.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3795, 734180, 2, 734179, '0', '大同乡', '台湾,宜兰,大同', '121.500000', '24.600000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3796, 734246, 2, 734179, '0', '钓鱼臺', '台湾,宜兰,钓鱼臺', '121.500000', '24.600000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3797, 734248, 2, 734179, '0', '冬山乡', '台湾,宜兰,冬山', '121.500000', '24.600000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3798, 734579, 2, 734179, '0', '礁溪乡', '台湾,宜兰,礁溪', '121.500000', '24.600000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3799, 734681, 2, 734179, '0', '罗东镇', '台湾,宜兰,罗东', '121.500000', '24.600000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3800, 734842, 2, 734179, '0', '南澳乡', '台湾,宜兰,南澳', '121.500000', '24.600000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3801, 734865, 2, 734179, '0', '三星乡', '台湾,宜兰,三星', '121.500000', '24.600000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3802, 735104, 2, 734179, '0', '苏澳镇', '台湾,宜兰,苏澳', '121.500000', '24.600000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3803, 735319, 2, 734179, '0', '头城镇', '台湾,宜兰,头城', '121.500000', '24.600000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3804, 735419, 2, 734179, '0', '五结乡', '台湾,宜兰,五结', '121.796468', '24.685615', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3805, 735620, 2, 734179, '0', '宜兰市', '台湾,宜兰,宜兰市', '121.500000', '24.600000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3806, 735851, 2, 734179, '0', '员山乡', '台湾,宜兰,员山', '121.500000', '24.600000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3807, 735970, 2, 734179, '0', '壮围乡', '台湾,宜兰,壮围', '121.500000', '24.600000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3808, 736052, 2, 736051, '0', '草屯镇', '台湾,南投,草屯', '120.830000', '23.830000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3809, 736305, 2, 736051, '0', '国姓乡', '台湾,南投,国姓', '120.830000', '23.830000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3810, 736356, 2, 736051, '0', '集集镇', '台湾,南投,集集', '120.830000', '23.830000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3811, 736449, 2, 736051, '0', '鹿谷乡', '台湾,南投,鹿谷', '120.830000', '23.830000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3812, 736522, 2, 736051, '0', '名间乡', '台湾,南投,名间', '120.830000', '23.830000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3813, 736622, 2, 736051, '0', '南投市', '台湾,南投,南投市', '120.830000', '23.830000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3814, 736887, 2, 736051, '0', '埔里镇', '台湾,南投,埔里', '120.830000', '23.830000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3815, 737266, 2, 736051, '0', '仁爱乡', '台湾,南投,仁爱', '120.830000', '23.830000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3816, 737337, 2, 736051, '0', '水里乡', '台湾,南投,水里', '120.830000', '23.830000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3817, 737496, 2, 736051, '0', '信义乡', '台湾,南投,信义', '120.830000', '23.830000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3818, 737533, 2, 736051, '0', '鱼池乡', '台湾,南投,鱼池', '120.830000', '23.830000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3819, 737591, 2, 736051, '0', '中寮乡', '台湾,南投,中寮', '120.830000', '23.830000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3820, 737625, 2, 736051, '0', '竹山镇', '台湾,南投,竹山', '120.830000', '23.830000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3821, 737857, 2, 737856, '0', '东沙群岛', '台湾,南海岛,东沙群岛', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3822, 737859, 2, 737856, '0', '南沙群岛', '台湾,南海岛,南沙群岛', '0.000000', '0.000000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3823, 737862, 2, 737861, '0', '头屋乡', '台湾,苗栗,头屋', '120.818985', '24.561601', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3824, 737894, 2, 737861, '0', '西湖乡', '台湾,苗栗,西湖', '120.743700', '24.556610', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3825, 737948, 2, 737861, '0', '苑里镇', '台湾,苗栗,苑里', '120.818985', '24.561601', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3826, 738050, 2, 737861, '0', '造桥乡', '台湾,苗栗,造桥', '120.818985', '24.561601', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3827, 738158, 2, 737861, '0', '竹南镇', '台湾,苗栗,竹南', '120.872636', '24.685510', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3828, 738454, 2, 737861, '0', '卓兰镇', '台湾,苗栗,卓兰', '120.823440', '24.309510', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3829, 738528, 2, 737861, '0', '大湖乡', '台湾,苗栗,大湖', '120.863640', '24.422548', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3830, 738619, 2, 737861, '0', '公馆乡', '台湾,苗栗,公馆', '120.818985', '24.561601', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3831, 738695, 2, 737861, '0', '后龙镇', '台湾,苗栗,后龙', '120.786474', '24.612613', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3832, 738882, 2, 737861, '0', '苗栗市', '台湾,苗栗,苗栗市', '120.819288', '24.561582', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3833, 739250, 2, 737861, '0', '南庄乡', '台湾,苗栗,南庄', '120.818985', '24.561601', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3834, 739302, 2, 737861, '0', '三湾乡', '台湾,苗栗,三湾', '120.818985', '24.561601', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3835, 739369, 2, 737861, '0', '三义乡', '台湾,苗栗,三义', '120.765515', '24.413037', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3836, 739419, 2, 737861, '0', '狮潭乡', '台湾,苗栗,狮潭', '120.918024', '24.540004', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3837, 739465, 2, 737861, '0', '泰安乡', '台湾,苗栗,泰安', '120.818985', '24.561601', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3838, 739487, 2, 737861, '0', '铜锣乡', '台湾,苗栗,铜锣', '120.786475', '24.489502', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3839, 739564, 2, 737861, '0', '通霄镇', '台湾,苗栗,通霄', '120.676696', '24.489084', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3840, 739642, 2, 737861, '0', '头份市', '台湾,苗栗,头份市', '120.818985', '24.561601', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3841, 739958, 2, 739957, '0', '东区', '台湾,嘉义,东区', '120.452538', '23.481568', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3842, 740140, 2, 739957, '0', '西区', '台湾,嘉义,西区', '120.452538', '23.481568', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3843, 740511, 2, 740510, '0', '阿里山乡', '台湾,嘉义,阿里山', '120.452538', '23.481568', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3844, 740536, 2, 740510, '0', '布袋镇', '台湾,嘉义,布袋', '120.452538', '23.481568', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3845, 740625, 2, 740510, '0', '大林镇', '台湾,嘉义,大林', '120.452538', '23.481568', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3846, 740746, 2, 740510, '0', '大埔乡', '台湾,嘉义,大埔', '120.452538', '23.481568', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3847, 740792, 2, 740510, '0', '东石乡', '台湾,嘉义,东石', '120.452538', '23.481568', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3848, 740845, 2, 740510, '0', '番路乡', '台湾,嘉义,番路', '120.452538', '23.481568', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3849, 740943, 2, 740510, '0', '六脚乡', '台湾,嘉义,六脚', '120.452538', '23.481568', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3850, 740975, 2, 740510, '0', '鹿草乡', '台湾,嘉义,鹿草', '120.452538', '23.481568', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3851, 741010, 2, 740510, '0', '梅山乡', '台湾,嘉义,梅山', '120.452538', '23.481568', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3852, 741137, 2, 740510, '0', '民雄乡', '台湾,嘉义,民雄', '120.452538', '23.481568', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3853, 741312, 2, 740510, '0', '朴子市', '台湾,嘉义,朴子市', '120.452538', '23.481568', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3854, 741451, 2, 740510, '0', '水上乡', '台湾,嘉义,水上', '120.452538', '23.481568', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3855, 741550, 2, 740510, '0', '太保市', '台湾,嘉义,太保市', '120.332737', '23.459115', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3856, 741646, 2, 740510, '0', '溪口乡', '台湾,嘉义,溪口', '120.452538', '23.481568', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3857, 741688, 2, 740510, '0', '新港乡', '台湾,嘉义,新港', '120.452538', '23.481568', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3858, 741750, 2, 740510, '0', '义竹乡', '台湾,嘉义,义竹', '120.452538', '23.481568', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3859, 741785, 2, 740510, '0', '中埔乡', '台湾,嘉义,中埔', '120.452538', '23.481568', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3860, 741936, 2, 740510, '0', '竹崎乡', '台湾,嘉义,竹崎', '120.452538', '23.481568', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3861, 742127, 2, 742126, '0', '东区', '台湾,新竹,东区', '120.973544', '24.805226', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3862, 742309, 2, 742126, '0', '北区', '台湾,新竹,北区', '120.968798', '24.806738', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3863, 742637, 2, 742636, '0', '峨眉乡', '台湾,新竹,峨眉', '120.968798', '24.806738', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3864, 742674, 2, 742636, '0', '关西镇', '台湾,新竹,关西', '120.968798', '24.806738', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3865, 742797, 2, 742636, '0', '横山乡', '台湾,新竹,横山', '120.968798', '24.806738', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3866, 742852, 2, 742636, '0', '湖口乡', '台湾,新竹,湖口', '120.968798', '24.806738', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3867, 743201, 2, 742636, '0', '尖石乡', '台湾,新竹,尖石', '120.968798', '24.806738', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3868, 743246, 2, 742636, '0', '芎林乡', '台湾,新竹,芎林', '120.968798', '24.806738', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3869, 743298, 2, 742636, '0', '五峰乡', '台湾,新竹,五峰', '120.968798', '24.806738', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3870, 743319, 2, 742636, '0', '新丰乡', '台湾,新竹,新丰', '120.968798', '24.806738', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3871, 743414, 2, 742636, '0', '新埔镇', '台湾,新竹,新埔', '120.968798', '24.806738', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3872, 743527, 2, 742636, '0', '竹北市', '台湾,新竹,竹北市', '120.968798', '24.806738', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3873, 743565, 2, 742636, '0', '竹东镇', '台湾,新竹,竹东', '120.968798', '24.806738', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3874, 743725, 2, 742636, '0', '宝山乡', '台湾,新竹,宝山', '120.968798', '24.806738', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3875, 743888, 2, 742636, '0', '北埔乡', '台湾,新竹,北埔', '120.968798', '24.806738', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3876, 743939, 2, 743938, '0', '卓溪乡', '台湾,花莲,卓溪', '121.301890', '23.344908', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3877, 743956, 2, 743938, '0', '丰滨乡', '台湾,花莲,丰滨', '121.300000', '23.830000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3878, 743993, 2, 743938, '0', '凤林镇', '台湾,花莲,凤林', '121.300000', '23.830000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3879, 744128, 2, 743938, '0', '富里乡', '台湾,花莲,富里', '121.244694', '23.175468', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3880, 744185, 2, 743938, '0', '光復乡', '台湾,花莲,光復', '121.300000', '23.830000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3881, 744246, 2, 743938, '0', '花莲市', '台湾,花莲,花莲市', '121.606927', '23.981993', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3882, 744625, 2, 743938, '0', '吉安乡', '台湾,花莲,吉安', '121.300000', '23.830000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3883, 745050, 2, 743938, '0', '瑞穗乡', '台湾,花莲,瑞穗', '121.373373', '23.496080', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3884, 745196, 2, 743938, '0', '寿丰乡', '台湾,花莲,寿丰', '121.506030', '23.869774', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3885, 745354, 2, 743938, '0', '万荣乡', '台湾,花莲,万荣', '121.300000', '23.830000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3886, 745363, 2, 743938, '0', '新城乡', '台湾,花莲,新城', '121.604120', '24.039243', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3887, 745486, 2, 743938, '0', '秀林乡', '台湾,花莲,秀林', '121.300000', '23.830000', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3888, 745532, 2, 743938, '0', '玉里镇', '台湾,花莲,玉里', '121.312109', '23.334236', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3889, 745675, 2, 745674, '0', '阿莲区', '台湾,高雄,阿莲区', '120.311922', '22.620856', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3890, 745715, 2, 745674, '0', '大寮区', '台湾,高雄,大寮区', '120.311922', '22.620856', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3891, 746083, 2, 745674, '0', '大社区', '台湾,高雄,大社区', '120.311922', '22.620856', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3892, 746199, 2, 745674, '0', '大树区', '台湾,高雄,大树区', '120.311922', '22.620856', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3893, 746294, 2, 745674, '0', '凤山区', '台湾,高雄,凤山区', '120.311922', '22.620856', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3894, 746624, 2, 745674, '0', '冈山区', '台湾,高雄,冈山区', '120.311922', '22.620856', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3895, 746906, 2, 745674, '0', '鼓山区', '台湾,高雄,鼓山区', '120.311922', '22.620856', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3896, 747053, 2, 745674, '0', '湖内区', '台湾,高雄,湖内区', '120.311922', '22.620856', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3897, 747108, 2, 745674, '0', '甲仙区', '台湾,高雄,甲仙区', '120.587980', '23.083957', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3898, 747150, 2, 745674, '0', '苓雅区', '台湾,高雄,苓雅区', '120.311922', '22.620856', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3899, 747342, 2, 745674, '0', '林园区', '台湾,高雄,林园区', '120.311922', '22.620856', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3900, 747481, 2, 745674, '0', '六龟区', '台湾,高雄,六龟区', '120.311922', '22.620856', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3901, 747536, 2, 745674, '0', '路竹区', '台湾,高雄,路竹区', '120.311922', '22.620856', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3902, 747643, 2, 745674, '0', '茂林区', '台湾,高雄,茂林区', '120.311922', '22.620856', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3903, 747647, 2, 745674, '0', '美浓区', '台湾,高雄,美浓区', '120.542419', '22.894882', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3904, 747764, 2, 745674, '0', '弥陀区', '台湾,高雄,弥陀区', '120.250672', '22.781561', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3905, 747894, 2, 745674, '0', '那玛夏区', '台湾,高雄,那玛夏区', '120.311922', '22.620856', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3906, 747902, 2, 745674, '0', '楠梓区', '台湾,高雄,楠梓区', '120.311922', '22.620856', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3907, 748258, 2, 745674, '0', '内门区', '台湾,高雄,内门区', '120.311922', '22.620856', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3908, 748344, 2, 745674, '0', '鸟松区', '台湾,高雄,鸟松区', '120.311922', '22.620856', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3909, 748554, 2, 748553, '0', '安乐区', '台湾,基隆,安乐区', '121.746248', '25.130741', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3910, 748581, 2, 748553, '0', '暖暖区', '台湾,基隆,暖暖区', '121.746248', '25.130741', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3911, 748599, 2, 748553, '0', '七堵区', '台湾,基隆,七堵区', '121.746248', '25.130741', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3912, 748670, 2, 748553, '0', '仁爱区', '台湾,基隆,仁爱区', '121.746248', '25.130741', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3913, 748716, 2, 748553, '0', '信义区', '台湾,基隆,信义区', '121.746248', '25.130741', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3914, 748920, 2, 748553, '0', '中山区', '台湾,基隆,中山区', '121.746248', '25.130741', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3915, 749226, 2, 748553, '0', '中正区', '台湾,基隆,中正区', '121.768000', '25.151647', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3916, 749572, 2, 749571, '0', '金城镇', '台湾,金门,金城', '118.317089', '24.432706', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3917, 749647, 2, 749571, '0', '金湖镇', '台湾,金门,金湖', '118.317089', '24.432706', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3918, 749752, 2, 749571, '0', '金宁乡', '台湾,金门,金宁', '118.317089', '24.432706', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3919, 749810, 2, 749571, '0', '金沙镇', '台湾,金门,金沙', '118.317089', '24.432706', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3920, 749894, 2, 749571, '0', '烈屿乡', '台湾,金门,烈屿', '118.317089', '24.432706', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3921, 749928, 2, 749571, '0', '乌坵乡', '台湾,金门,乌坵', '118.317089', '24.432706', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3922, 749931, 2, 749930, '0', '北竿乡', '台湾,连江,北竿', '119.539704', '26.197364', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3923, 749938, 2, 749930, '0', '东引乡', '台湾,连江,东引', '119.539704', '26.197364', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3924, 749941, 2, 749930, '0', '莒光乡', '台湾,连江,莒光', '119.539704', '26.197364', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3925, 749947, 2, 749930, '0', '南竿乡', '台湾,连江,南竿', '119.539704', '26.197364', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3926, 749958, 2, 749957, '0', '褒忠乡', '台湾,云林,褒忠', '120.309069', '23.695652', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3927, 749991, 2, 749957, '0', '北港镇', '台湾,云林,北港', '120.296759', '23.572428', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3928, 750170, 2, 749957, '0', '莿桐乡', '台湾,云林,莿桐', '120.497033', '23.757251', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3929, 750218, 2, 749957, '0', '大埤乡', '台湾,云林,大埤', '120.527173', '23.696887', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3930, 750291, 2, 749957, '0', '东势乡', '台湾,云林,东势', '120.527173', '23.696887', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3931, 750363, 2, 749957, '0', '斗六市', '台湾,云林,斗六市', '120.527173', '23.696887', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3932, 750795, 2, 749957, '0', '斗南镇', '台湾,云林,斗南', '120.527173', '23.696887', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3933, 751009, 2, 749957, '0', '二崙乡', '台湾,云林,二崙', '120.527173', '23.696887', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3934, 751071, 2, 749957, '0', '古坑乡', '台湾,云林,古坑', '120.558553', '23.644734', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3935, 751147, 2, 749957, '0', '虎尾镇', '台湾,云林,虎尾', '120.429231', '23.707796', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3936, 751400, 2, 749957, '0', '口湖乡', '台湾,云林,口湖', '120.178640', '23.585506', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3937, 751493, 2, 749957, '0', '林内乡', '台湾,云林,林内', '120.527173', '23.696887', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3938, 751555, 2, 749957, '0', '崙背乡', '台湾,云林,崙背', '120.527173', '23.696887', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3939, 751674, 2, 749957, '0', '麦寮乡', '台湾,云林,麦寮', '120.527173', '23.696887', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3940, 751764, 2, 749957, '0', '水林乡', '台湾,云林,水林', '120.241228', '23.571067', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3941, 751832, 2, 749957, '0', '四湖乡', '台湾,云林,四湖', '120.220781', '23.635426', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3942, 751907, 2, 749957, '0', '臺西乡', '台湾,云林,臺西', '120.196139', '23.702821', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3943, 751956, 2, 749957, '0', '土库镇', '台湾,云林,土库', '120.527173', '23.696887', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3944, 752034, 2, 749957, '0', '西螺镇', '台湾,云林,西螺', '120.457123', '23.797412', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3945, 752149, 2, 749957, '0', '元长乡', '台湾,云林,元长', '120.311052', '23.649577', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3946, 752150, 1, 714368, '', '香港特别行政区', '香港特别行政区', '', '', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3947, 752151, 2, 752150, '', '中西区', '中西区', '', '', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3948, 752152, 2, 752150, '', '东区', '东区', '', '', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3949, 752153, 2, 752150, '', '九龙城区', '九龙城区', '', '', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3950, 752154, 2, 752150, '', '观塘区', '香港,九龙,观塘', '114.231268', '22.309430', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3951, 752155, 2, 752150, '', '南区', '香港,香港岛,南区', '114.174134', '22.246760', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3953, 752156, 2, 752150, '', '深水埗区', '香港特别行政区,香港特别行政区,深水埗区', '', '', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3954, 752157, 2, 752150, '', '湾仔区', '湾仔区', '', '', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3955, 752158, 2, 752150, '', '黄大仙区', '黄大仙区', '', '', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3956, 752159, 2, 752150, '', '油尖旺区', '油尖旺区', '', '', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3957, 752160, 2, 752150, '', '离岛区', '离岛区', '', '', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3958, 752161, 2, 752150, '', '葵青区', '葵青区', '', '', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3959, 752162, 2, 752150, '', '北区', '北区', '', '', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3960, 752163, 2, 752150, '', '西贡区', '西贡区', '', '', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3961, 752164, 2, 752150, '', '沙田区', '沙田区', '', '', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3962, 752165, 2, 752150, '', '屯门区', '屯门区', '', '', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3963, 752166, 2, 752150, '', '大埔区', '大埔区', '', '', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3964, 752167, 2, 752150, '', '荃湾区', '荃湾区', '', '', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3965, 752168, 2, 752150, '', '元朗区', '元朗区', '', '', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3966, 752169, 1, 714390, '', '澳门特别行政区', '澳门特别行政区', '', '', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3967, 752170, 2, 752169, '', '澳门半岛', '澳门半岛', '', '', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3968, 752171, 2, 752169, '', '凼仔', '凼仔', '', '', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3969, 752172, 2, 752169, '', '路凼城', '路凼城', '', '', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); +INSERT INTO `eb_system_city` VALUES (3970, 752173, 2, 752169, '', '路环', '路环', '', '', 1, '2021-07-16 11:33:35', '2021-07-16 11:33:35'); + +-- ---------------------------- +-- Table structure for eb_system_config +-- ---------------------------- +DROP TABLE IF EXISTS `eb_system_config`; +CREATE TABLE `eb_system_config` ( + `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '配置id', + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '字段名称', + `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '字段提示文字', + `form_id` int(10) NULL DEFAULT 0 COMMENT '表单id', + `value` varchar(5000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '值', + `status` tinyint(1) NULL DEFAULT 0 COMMENT '是否隐藏', + `create_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE, + INDEX `status+name`(`name`) USING BTREE, + INDEX `name`(`name`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 7814 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '配置表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of eb_system_config +-- ---------------------------- +INSERT INTO `eb_system_config` VALUES (177, 'close_system', '', 0, '0', 0, '2020-05-14 15:20:25', '2020-05-14 16:37:47'); +INSERT INTO `eb_system_config` VALUES (195, 'store_postage', '', 0, '0', 0, '2020-05-14 15:20:25', '2020-05-14 16:37:47'); +INSERT INTO `eb_system_config` VALUES (202, 'main_business', '', 0, ' IT\\u79d1\\u6280 \\u4e92\\u8054\\u7f51|\\u7535\\u5b50\\u5546\\u52a1', 0, '2020-05-14 15:20:25', '2020-05-14 16:37:47'); +INSERT INTO `eb_system_config` VALUES (203, 'vice_business', '', 0, 'IT\\u79d1\\u6280 IT\\u8f6f\\u4ef6\\u4e0e\\u670d\\u52a1 ', 0, '2020-05-14 15:20:25', '2020-05-14 16:37:47'); +INSERT INTO `eb_system_config` VALUES (204, 'store_brokerage_rate_1', '', 0, '80', 0, '2020-05-14 15:20:25', '2020-07-14 16:44:50'); +INSERT INTO `eb_system_config` VALUES (205, 'user_extract_min_price', '', 0, '1', 0, '2020-05-14 15:20:25', '2020-05-14 16:37:47'); +INSERT INTO `eb_system_config` VALUES (206, 'sx_sign_min_int', '', 0, '1', 0, '2020-05-14 15:20:25', '2020-05-14 16:37:47'); +INSERT INTO `eb_system_config` VALUES (207, 'sx_sign_max_int', '', 0, '5', 0, '2020-05-14 15:20:25', '2020-05-14 16:37:47'); +INSERT INTO `eb_system_config` VALUES (208, 'about_us', '', 0, '', 0, '2020-05-14 15:20:25', '2020-05-14 16:37:47'); +INSERT INTO `eb_system_config` VALUES (218, 'store_brokerage_rate_2', '', 0, '60', 0, '2020-05-14 15:20:25', '2020-07-14 16:44:54'); +INSERT INTO `eb_system_config` VALUES (219, 'store_brokerage_status', 'store_brokerage_status', 0, '1', 0, '2020-05-14 15:20:25', '2020-08-05 17:42:38'); +INSERT INTO `eb_system_config` VALUES (227, 'user_extract_bank', '', 0, '中国银行\n建设银行\n农业银行', 0, '2020-05-14 15:20:25', '2020-06-09 17:43:00'); +INSERT INTO `eb_system_config` VALUES (228, 'fast_number', '', 0, '10', 0, '2020-05-14 15:20:25', '2020-05-14 16:37:47'); +INSERT INTO `eb_system_config` VALUES (229, 'bast_number', '', 0, '10', 0, '2020-05-14 15:20:25', '2020-05-14 16:37:47'); +INSERT INTO `eb_system_config` VALUES (230, 'first_number', '', 0, '10', 0, '2020-05-14 15:20:25', '2020-05-14 16:37:47'); +INSERT INTO `eb_system_config` VALUES (234, 'accessKey', '', 0, '111111', 0, '2020-05-14 15:20:25', '2020-06-03 17:20:54'); +INSERT INTO `eb_system_config` VALUES (235, 'secretKey', '', 0, '111111', 0, '2020-05-14 15:20:25', '2020-06-03 17:21:02'); +INSERT INTO `eb_system_config` VALUES (236, 'storage_name', '', 0, 'wuht-111111', 0, '2020-05-14 15:20:25', '2020-06-03 17:21:18'); +INSERT INTO `eb_system_config` VALUES (239, 'order_bargain_time', '', 0, '', 0, '2020-05-14 15:20:25', '2020-05-14 16:37:47'); +INSERT INTO `eb_system_config` VALUES (240, 'order_seckill_time', '', 0, '', 0, '2020-05-14 15:20:25', '2020-05-14 16:37:47'); +INSERT INTO `eb_system_config` VALUES (241, 'order_pink_time', '', 0, '', 0, '2020-05-14 15:20:25', '2020-05-14 16:37:47'); +INSERT INTO `eb_system_config` VALUES (242, 'storage_region', '', 0, 'ap-chengdu', 0, '2020-05-14 15:20:25', '2020-06-03 17:37:19'); +INSERT INTO `eb_system_config` VALUES (245, 'system_delivery_time', '', 0, '1', 0, '2020-05-14 15:20:25', '2020-05-14 16:37:47'); +INSERT INTO `eb_system_config` VALUES (254, 'cache_config', '', 0, '86400', 0, '2020-05-14 15:20:25', '2020-05-14 16:37:47'); +INSERT INTO `eb_system_config` VALUES (256, 'develop_id', '', 0, '', 0, '2020-05-14 15:20:25', '2020-05-14 16:37:47'); +INSERT INTO `eb_system_config` VALUES (257, 'printing_api_key', '', 0, '', 0, '2020-05-14 15:20:25', '2020-05-14 16:37:47'); +INSERT INTO `eb_system_config` VALUES (258, 'printing_client_id', '', 0, '', 0, '2020-05-14 15:20:25', '2020-05-14 16:37:47'); +INSERT INTO `eb_system_config` VALUES (259, 'terminal_number', '', 0, '', 0, '2020-05-14 15:20:25', '2020-05-14 16:37:47'); +INSERT INTO `eb_system_config` VALUES (262, 'confirmTakeOverSwitch', '', 0, '0', 0, '2020-05-14 15:20:25', '2020-06-17 09:34:31'); +INSERT INTO `eb_system_config` VALUES (267, 'new_goods_bananr', '', 0, '', 0, '2020-05-14 15:20:25', '2020-05-14 16:37:47'); +INSERT INTO `eb_system_config` VALUES (269, 'extract_time', '', 0, '0', 0, '2020-05-14 15:20:25', '2020-05-14 16:37:47'); +INSERT INTO `eb_system_config` VALUES (270, 'store_brokerage_price', '', 0, '1', 0, '2020-05-14 15:20:25', '2020-05-14 16:37:47'); +INSERT INTO `eb_system_config` VALUES (272, 'promotion_number', '', 0, '3', 0, '2020-05-14 15:20:25', '2020-05-14 16:37:47'); +INSERT INTO `eb_system_config` VALUES (278, 'form-1', '', 0, '{\n \"id\": 278,\n \"item\": [\n {\n \"name\": \"form-1-name\",\n \"value\": \"form-1-value\"\n },\n {\n \"name\": \"form-1-name1\",\n \"value\": \"form-1-value1\"\n }\n ]\n}', 0, '2020-05-14 16:57:27', '2020-05-14 17:07:04'); +INSERT INTO `eb_system_config` VALUES (645, 'importProductTB', '', 0, 'https://api03.1111.com/taobao/detail', 0, '2020-06-05 14:35:08', '2020-09-08 12:15:01'); +INSERT INTO `eb_system_config` VALUES (646, 'importProductJD', '', 0, 'https://api03.1111.com/jd/detail', 0, '2020-06-05 14:35:34', '2020-09-08 12:15:08'); +INSERT INTO `eb_system_config` VALUES (647, 'importProductSN', '', 0, 'https://api03.1111.com/suning/detail', 0, '2020-06-05 14:35:41', '2020-09-08 12:14:59'); +INSERT INTO `eb_system_config` VALUES (648, 'importProductPDD', '', 0, 'https://api03.1111.com/pdd/detail', 0, '2020-06-05 14:36:20', '2020-09-08 12:15:04'); +INSERT INTO `eb_system_config` VALUES (649, 'importProductTM', '', 0, 'https://api03.1111.com/tmall/detail', 0, '2020-06-09 14:24:32', '2020-09-08 12:14:57'); +INSERT INTO `eb_system_config` VALUES (657, 'sms_account', '', 0, '11111111111', 0, '2020-06-16 12:17:29', '2020-12-23 17:16:10'); +INSERT INTO `eb_system_config` VALUES (658, 'sms_token', '', 0, '123456', 0, '2020-06-16 12:17:35', '2020-12-23 17:16:09'); +INSERT INTO `eb_system_config` VALUES (988, 'integralRatio', 'integralRatio', 0, '0', 0, '2020-07-08 15:21:59', '2020-08-10 21:27:45'); +INSERT INTO `eb_system_config` VALUES (989, 'balance_func_status', 'balance_func_status', 0, '1', 0, '2020-07-09 10:09:33', '2020-07-14 19:02:16'); +INSERT INTO `eb_system_config` VALUES (991, 'brokerage_func_status', 'brokerage_func_status', 0, '1', 0, '2020-07-21 10:42:36', '2020-07-21 10:42:36'); +INSERT INTO `eb_system_config` VALUES (992, 'store_brokerage_ratio', 'store_brokerage_ratio', 0, '10', 0, '2020-07-21 10:45:10', '2020-12-18 11:34:26'); +INSERT INTO `eb_system_config` VALUES (993, 'store_brokerage_two', 'store_brokerage_two', 0, '5', 0, '2020-07-21 10:45:41', '2020-07-21 10:45:41'); +INSERT INTO `eb_system_config` VALUES (994, 'brokerage_bindind', 'brokerage_bindind', 0, '0', 0, '2020-07-21 15:29:25', '2020-07-21 15:29:25'); +INSERT INTO `eb_system_config` VALUES (2193, 'yunzhifu_appId', 'yunzhifu_appId', 121, '111111', 0, '2020-09-09 15:03:17', '2020-09-09 15:03:17'); +INSERT INTO `eb_system_config` VALUES (2194, 'yunzhifu_sign', 'yunzhifu_sign', 121, '111111', 0, '2020-09-09 15:03:17', '2020-09-09 15:03:17'); +INSERT INTO `eb_system_config` VALUES (3172, 'config_export_temp_id', 'config_export_temp_id', 0, '111111', 0, '2020-12-10 14:50:34', '2020-12-17 14:49:31'); +INSERT INTO `eb_system_config` VALUES (3173, 'config_export_id', 'config_export_id', 0, '23', 0, '2020-12-10 14:50:45', '2020-12-17 14:49:31'); +INSERT INTO `eb_system_config` VALUES (3174, 'config_export_com', 'config_export_com', 0, 'yuantongkuaiyun', 0, '2020-12-10 14:52:57', '2020-12-17 14:49:31'); +INSERT INTO `eb_system_config` VALUES (3396, 'importProductToken', 'importProductToken', 122, '111111', 0, '2020-12-22 16:11:25', '2020-12-22 16:11:25'); +INSERT INTO `eb_system_config` VALUES (4053, 'config_export_open', 'config_export_open', 129, '1', 0, '2021-02-04 11:21:21', '2021-02-04 11:21:21'); +INSERT INTO `eb_system_config` VALUES (4054, 'config_export_to_name', 'config_export_to_name', 129, '王大蛋', 0, '2021-02-04 11:21:21', '2021-02-04 11:21:21'); +INSERT INTO `eb_system_config` VALUES (4055, 'config_export_to_tel', 'config_export_to_tel', 129, '11111111111', 0, '2021-02-04 11:21:21', '2021-02-04 11:21:21'); +INSERT INTO `eb_system_config` VALUES (4056, 'config_export_to_address', 'config_export_to_address', 129, '陕西省西安市曲江新区', 0, '2021-02-04 11:21:21', '2021-02-04 11:21:21'); +INSERT INTO `eb_system_config` VALUES (4057, 'config_export_siid', 'config_export_siid', 129, '11111111111', 0, '2021-02-04 11:21:21', '2021-02-04 11:21:21'); +INSERT INTO `eb_system_config` VALUES (4410, 'bastInfo', 'bastInfo', 133, 'asda sd', 0, '2021-02-23 14:58:53', '2021-02-23 14:58:53'); +INSERT INTO `eb_system_config` VALUES (4411, 'firstInfo', 'firstInfo', 133, '1', 0, '2021-02-23 14:58:53', '2021-02-23 14:58:53'); +INSERT INTO `eb_system_config` VALUES (4412, 'salesInfo', 'salesInfo', 133, '1', 0, '2021-02-23 14:58:53', '2021-02-23 14:58:53'); +INSERT INTO `eb_system_config` VALUES (4413, 'hotInfo', 'hotInfo', 133, '1', 0, '2021-02-23 14:58:53', '2021-02-23 14:58:53'); +INSERT INTO `eb_system_config` VALUES (4432, 'offline_pay_status', 'offline_pay_status', 79, '0', 0, '2021-02-24 11:13:52', '2021-02-24 11:13:52'); +INSERT INTO `eb_system_config` VALUES (5736, 'system_product_copy_type', 'system_product_copy_type', 127, '1', 0, '2021-07-15 16:14:23', '2021-07-15 16:14:23'); +INSERT INTO `eb_system_config` VALUES (5737, 'copy_product_apikey', 'copy_product_apikey', 127, '111111', 0, '2021-07-15 16:14:24', '2021-07-15 16:14:24'); +INSERT INTO `eb_system_config` VALUES (5904, 'lowerOrderSwitch', 'lowerOrderSwitch', 111, '0', 0, '2021-07-16 09:47:20', '2021-07-16 09:47:20'); +INSERT INTO `eb_system_config` VALUES (5905, 'deliverGoodsSwitch', 'deliverGoodsSwitch', 111, '0', 0, '2021-07-16 09:47:20', '2021-07-16 09:47:20'); +INSERT INTO `eb_system_config` VALUES (5906, 'priceRevisionSwitch', 'priceRevisionSwitch', 111, '0', 0, '2021-07-16 09:47:20', '2021-07-16 09:47:20'); +INSERT INTO `eb_system_config` VALUES (5907, 'sms_code_expire', 'sms_code_expire', 111, '3', 0, '2021-07-16 09:47:20', '2021-07-16 09:47:20'); +INSERT INTO `eb_system_config` VALUES (5908, 'adminLowerOrderSwitch', 'adminLowerOrderSwitch', 111, '0', 0, '2021-07-16 09:47:20', '2021-07-16 09:47:20'); +INSERT INTO `eb_system_config` VALUES (5909, 'adminPaySuccessSwitch', 'adminPaySuccessSwitch', 111, '0', 0, '2021-07-16 09:47:20', '2021-07-16 09:47:20'); +INSERT INTO `eb_system_config` VALUES (5910, 'adminConfirmTakeOverSwitch', 'adminConfirmTakeOverSwitch', 111, '0', 0, '2021-07-16 09:47:20', '2021-07-16 09:47:20'); +INSERT INTO `eb_system_config` VALUES (5911, 'adminRefundSwitch', 'adminRefundSwitch', 111, '0', 0, '2021-07-16 09:47:20', '2021-07-16 09:47:20'); +INSERT INTO `eb_system_config` VALUES (5914, 'logistics_type', 'logistics_type', 128, '1', 0, '2021-07-16 09:55:24', '2021-07-16 09:55:24'); +INSERT INTO `eb_system_config` VALUES (5915, 'system_express_app_code', 'system_express_app_code', 128, '123123123123', 0, '2021-07-16 09:55:24', '2021-07-16 09:55:24'); +INSERT INTO `eb_system_config` VALUES (5916, 'change_color_config', 'change_color_config', 0, '4', 0, '2021-07-16 09:55:24', '2021-07-17 09:14:44'); +INSERT INTO `eb_system_config` VALUES (6041, 'yue_pay_status', 'yue_pay_status', 80, '1', 0, '2021-07-29 16:56:34', '2021-07-29 16:56:34'); +INSERT INTO `eb_system_config` VALUES (6081, 'category_page_config', 'category_page_config', 0, '1', 0, '2021-08-12 15:57:49', '2021-08-13 11:05:11'); +INSERT INTO `eb_system_config` VALUES (6082, 'is_show_category', 'is_show_category', 0, 'false', 0, '2021-08-12 15:59:56', '2021-08-13 11:05:14'); +INSERT INTO `eb_system_config` VALUES (6216, 'store_brokerage_quota', 'store_brokerage_quota', 0, '10', 0, '2021-07-16 09:55:24', '2021-07-16 09:55:24'); +INSERT INTO `eb_system_config` VALUES (6217, 'store_brokerage_is_bubble', 'store_brokerage_is_bubble', 0, '1', 0, '2021-08-18 11:57:17', '2021-08-18 12:23:14'); +INSERT INTO `eb_system_config` VALUES (6332, 'store_free_postage_switch', 'store_free_postage_switch', 74, 'true', 0, '2021-08-19 12:15:10', '2021-08-19 12:15:10'); +INSERT INTO `eb_system_config` VALUES (6333, 'store_free_postage', 'store_free_postage', 74, '0', 0, '2021-08-19 12:15:10', '2021-08-19 12:15:10'); +INSERT INTO `eb_system_config` VALUES (6334, 'tengxun_map_key', 'tengxun_map_key', 74, '11111111111', 0, '2021-08-19 12:15:10', '2021-08-19 12:15:10'); +INSERT INTO `eb_system_config` VALUES (6335, 'store_self_mention', 'store_self_mention', 74, 'true', 0, '2021-08-19 12:15:10', '2021-08-19 12:15:10'); +INSERT INTO `eb_system_config` VALUES (6417, 'APP_ID', '应用id', 1, '11111111111', 0, '2021-08-20 11:29:27', '2021-08-20 11:34:12'); +INSERT INTO `eb_system_config` VALUES (6418, 'APP_PRIVATE_KEY', '应用私钥', 1, '11111111111', 0, '2021-08-20 11:29:55', '2021-08-20 11:34:12'); +INSERT INTO `eb_system_config` VALUES (6419, 'CHARSET', '编码', 1, 'UTF-8', 0, '2021-08-20 11:30:13', '2021-08-20 11:34:13'); +INSERT INTO `eb_system_config` VALUES (6420, 'ALIPAY_PUBLIC_KEY', '支付宝公钥', 1, '11111111111', 0, '2021-08-20 11:30:32', '2021-08-20 11:34:13'); +INSERT INTO `eb_system_config` VALUES (6421, 'GETEWAY_URL', '网关', 1, '11111111111', 0, '2021-08-20 11:31:03', '2021-08-20 11:34:13'); +INSERT INTO `eb_system_config` VALUES (6422, 'FORMAT', '格式化', 1, 'json', 0, '2021-08-20 11:31:20', '2021-08-20 11:34:13'); +INSERT INTO `eb_system_config` VALUES (6423, 'SIGN_TYPE', '签名类型', 1, 'RSA2', 0, '2021-08-20 11:31:34', '2021-08-20 11:34:14'); +INSERT INTO `eb_system_config` VALUES (6424, 'NOTIFY', '回调地址', 1, 'http://localhost:8080/api/alipay/aliPayNotify', 0, '2021-08-20 11:39:54', '2021-08-20 11:40:11'); +INSERT INTO `eb_system_config` VALUES (6582, 'txUploadUrl', 'txUploadUrl', 83, 'https://wuht-11111111111.cos.ap-chengdu.myqcloud.com', 0, '2021-08-23 14:54:05', '2021-08-23 14:54:05'); +INSERT INTO `eb_system_config` VALUES (6583, 'txAccessKey', 'txAccessKey', 83, '11111111111', 0, '2021-08-23 14:54:05', '2021-08-23 14:54:05'); +INSERT INTO `eb_system_config` VALUES (6584, 'txSecretKey', 'txSecretKey', 83, '11111111111', 0, '2021-08-23 14:54:06', '2021-08-23 14:54:06'); +INSERT INTO `eb_system_config` VALUES (6585, 'txStorageName', 'txStorageName', 83, 'wuht-11111111111', 0, '2021-08-23 14:54:06', '2021-08-23 14:54:06'); +INSERT INTO `eb_system_config` VALUES (6586, 'txStorageRegion', 'txStorageRegion', 83, 'ap-chengdu', 0, '2021-08-23 14:54:06', '2021-08-23 14:54:06'); +INSERT INTO `eb_system_config` VALUES (6670, 'qnUploadUrl', 'qnUploadUrl', 82, 'https://qiniu.net', 0, '2021-08-23 18:01:03', '2021-08-23 18:01:03'); +INSERT INTO `eb_system_config` VALUES (6671, 'qnAccessKey', 'qnAccessKey', 82, '11111111111', 0, '2021-08-23 18:01:03', '2021-08-23 18:01:03'); +INSERT INTO `eb_system_config` VALUES (6672, 'qnSecretKey', 'qnSecretKey', 82, '11111111111', 0, '2021-08-23 18:01:03', '2021-08-23 18:01:03'); +INSERT INTO `eb_system_config` VALUES (6673, 'qnStorageName', 'qnStorageName', 82, 'crmeb-pro', 0, '2021-08-23 18:01:03', '2021-08-23 18:01:03'); +INSERT INTO `eb_system_config` VALUES (6674, 'qnStorageRegion', 'qnStorageRegion', 82, 'huabei', 0, '2021-08-23 18:01:03', '2021-08-23 18:01:03'); +INSERT INTO `eb_system_config` VALUES (6782, 'store_user_min_recharge', 'store_user_min_recharge', 78, '1', 0, '2021-08-23 18:55:52', '2021-08-23 18:55:52'); +INSERT INTO `eb_system_config` VALUES (6783, 'recharge_switch', 'recharge_switch', 78, 'true', 0, '2021-08-23 18:55:52', '2021-08-23 18:55:52'); +INSERT INTO `eb_system_config` VALUES (6784, 'recharge_attention', 'recharge_attention', 78, '1、充值金额最少为1元\n2、充值后只能用于消费\n3、提现金额需要手续费3%\n4、提现到账需要2~3天时间\n5、案件十大还是卡是今安徽省空间哈萨克就杀', 0, '2021-08-23 18:55:52', '2021-08-23 18:55:52'); +INSERT INTO `eb_system_config` VALUES (6814, 'alUploadUrl', 'alUploadUrl', 81, 'http://11111111111', 0, '2021-08-23 19:29:48', '2021-08-23 19:29:48'); +INSERT INTO `eb_system_config` VALUES (6815, 'alAccessKey', 'alAccessKey', 81, '11111111111', 0, '2021-08-23 19:29:48', '2021-08-23 19:29:48'); +INSERT INTO `eb_system_config` VALUES (6816, 'alSecretKey', 'alSecretKey', 81, '11111111111', 0, '2021-08-23 19:29:48', '2021-08-23 19:29:48'); +INSERT INTO `eb_system_config` VALUES (6817, 'alStorageName', 'alStorageName', 81, 'wuht', 0, '2021-08-23 19:29:48', '2021-08-23 19:29:48'); +INSERT INTO `eb_system_config` VALUES (6818, 'alStorageRegion', 'alStorageRegion', 81, '11111111111', 0, '2021-08-23 19:29:48', '2021-08-23 19:29:48'); +INSERT INTO `eb_system_config` VALUES (7178, 'homePageSaleListStyle', '', 0, '1', 0, '2021-10-28 09:27:31', '2021-10-28 09:27:31'); +INSERT INTO `eb_system_config` VALUES (7368, 'crmeb_tongji_js', 'crmeb_tongji_js', 141, '(function() {\n var _s = document.createElement(\'script\');\n _s.src=\"https://kefu.crmeb.net/customerServer.js\";\n _s.onload = function(){\n var option = {\n authInit:true,\n openUrl:\"https://kefu.crmeb.net\",\n token: \"4109fbb2d7bc3d5559348278816a20bc\",\n isShowTip:true,\n version:\"java\",\n windowStyle:\"center\",\n kefu_id:12\n };\n var canCustomerServer = new initCustomerServer(option);\n canCustomerServer.init();\n\n }\n document.head.appendChild(_s)\n})();', 0, '2021-11-30 15:38:14', '2021-11-30 15:38:14'); +INSERT INTO `eb_system_config` VALUES (7369, 'step', '', 0, '4', 0, '2021-12-03 14:12:20', '2021-12-03 14:12:20'); +INSERT INTO `eb_system_config` VALUES (7370, 'routine_appid', 'routine_appid', 66, '11111111111', 0, '2021-12-03 14:35:04', '2021-12-03 14:35:04'); +INSERT INTO `eb_system_config` VALUES (7371, 'routine_appsecret', 'routine_appsecret', 66, '11111111111', 0, '2021-12-03 14:35:04', '2021-12-03 14:35:04'); +INSERT INTO `eb_system_config` VALUES (7372, 'routine_name', 'routine_name', 66, '一码秦川', 0, '2021-12-03 14:35:04', '2021-12-03 14:35:04'); +INSERT INTO `eb_system_config` VALUES (7519, 'yzf_h5_url', 'yzf_h5_url', 76, 'https://cschat.antcloud.com.cn/index.htm', 0, '2021-12-10 12:15:43', '2021-12-10 12:15:43'); +INSERT INTO `eb_system_config` VALUES (7520, 'consumer_hotline', 'consumer_hotline', 76, '13800000000', 0, '2021-12-10 12:15:43', '2021-12-10 12:15:43'); +INSERT INTO `eb_system_config` VALUES (7521, 'telephone_service_switch', 'telephone_service_switch', 76, 'true', 0, '2021-12-10 12:15:43', '2021-12-10 12:15:43'); +INSERT INTO `eb_system_config` VALUES (7602, 'ylyprint_app_id', 'ylyprint_app_id', 143, '11111111111', 0, '2021-12-10 16:52:39', '2021-12-10 16:52:39'); +INSERT INTO `eb_system_config` VALUES (7603, 'ylyprint_app_secret', 'ylyprint_app_secret', 143, '11111111111', 0, '2021-12-10 16:52:39', '2021-12-10 16:52:39'); +INSERT INTO `eb_system_config` VALUES (7604, 'ylyprint_app_machine_code', 'ylyprint_app_machine_code', 143, '11111111111', 0, '2021-12-10 16:52:39', '2021-12-10 16:52:39'); +INSERT INTO `eb_system_config` VALUES (7605, 'ylyprint_app_machine_msign', 'ylyprint_app_machine_msign', 143, '11111111111', 0, '2021-12-10 16:52:39', '2021-12-10 16:52:39'); +INSERT INTO `eb_system_config` VALUES (7606, 'ylyprint_auto_status', 'ylyprint_auto_status', 143, '\'1\'', 0, '2021-12-10 16:52:39', '2021-12-10 16:52:39'); +INSERT INTO `eb_system_config` VALUES (7607, 'ylyprint_status', 'ylyprint_status', 143, '\'0\'', 0, '2021-12-10 16:52:39', '2021-12-10 16:52:39'); +INSERT INTO `eb_system_config` VALUES (7632, 'pay_routine_appid', 'pay_routine_appid', 68, '11111111111', 0, '2021-12-10 18:12:35', '2021-12-10 18:12:35'); +INSERT INTO `eb_system_config` VALUES (7633, 'pay_routine_appsecret', 'pay_routine_appsecret', 68, '11111111111', 0, '2021-12-10 18:12:35', '2021-12-10 18:12:35'); +INSERT INTO `eb_system_config` VALUES (7634, 'pay_routine_mchid', 'pay_routine_mchid', 68, '11111111111', 0, '2021-12-10 18:12:35', '2021-12-10 18:12:35'); +INSERT INTO `eb_system_config` VALUES (7635, 'pay_routine_key', 'pay_routine_key', 68, '11111111111', 0, '2021-12-10 18:12:35', '2021-12-10 18:12:35'); +INSERT INTO `eb_system_config` VALUES (7636, 'pay_mini_client_p12', 'pay_mini_client_p12', 68, 'file/operation11111111111.p12', 0, '2021-12-10 18:12:35', '2021-12-10 18:12:35'); +INSERT INTO `eb_system_config` VALUES (7637, 'pay_routine_certificate_path', 'pay_routine_certificate_path', 68, '/www/wwwroot/11111111111.p12', 0, '2021-12-10 18:12:35', '2021-12-10 18:12:35'); +INSERT INTO `eb_system_config` VALUES (7648, 'pay_weixin_appid', 'pay_weixin_appid', 67, '11111111111', 0, '2021-12-10 18:19:01', '2021-12-10 18:19:01'); +INSERT INTO `eb_system_config` VALUES (7649, 'pay_weixin_appsecret', 'pay_weixin_appsecret', 67, '11111111111', 0, '2021-12-10 18:19:01', '2021-12-10 18:19:01'); +INSERT INTO `eb_system_config` VALUES (7650, 'pay_weixin_mchid', 'pay_weixin_mchid', 67, '11111111111', 0, '2021-12-10 18:19:01', '2021-12-10 18:19:01'); +INSERT INTO `eb_system_config` VALUES (7651, 'pay_routine_client_p12', 'pay_routine_client_p12', 67, 'file/operation11111111111.p12', 0, '2021-12-10 18:19:01', '2021-12-10 18:19:01'); +INSERT INTO `eb_system_config` VALUES (7652, 'pay_weixin_certificate_path', 'pay_weixin_certificate_path', 67, '/www/wwwroot/11111111111.p12', 0, '2021-12-10 18:19:01', '2021-12-10 18:19:01'); +INSERT INTO `eb_system_config` VALUES (7653, 'pay_weixin_key', 'pay_weixin_key', 67, '11111111111', 0, '2021-12-10 18:19:01', '2021-12-10 18:19:01'); +INSERT INTO `eb_system_config` VALUES (7654, 'pay_weixin_open', 'pay_weixin_open', 67, '1', 0, '2021-12-10 18:19:01', '2021-12-10 18:19:01'); +INSERT INTO `eb_system_config` VALUES (7655, 'paydir', 'paydir', 67, '', 0, '2021-12-10 18:19:01', '2021-12-10 18:19:01'); +INSERT INTO `eb_system_config` VALUES (7689, 'authHost', '', 0, 'https://alimama.com', 0, '2021-12-14 16:21:32', '2021-12-14 16:21:32'); +INSERT INTO `eb_system_config` VALUES (7719, 'integral_ratio', 'integral_ratio', 109, '0.5', 0, '2021-12-21 15:01:12', '2021-12-21 15:01:12'); +INSERT INTO `eb_system_config` VALUES (7720, 'order_give_integral', 'order_give_integral', 109, '1', 0, '2021-12-21 15:01:12', '2021-12-21 15:01:12'); +INSERT INTO `eb_system_config` VALUES (7721, 'freeze_integral_day', 'freeze_integral_day', 109, '0', 0, '2021-12-21 15:01:12', '2021-12-21 15:01:12'); +INSERT INTO `eb_system_config` VALUES (7751, 'store_stock', 'store_stock', 77, '20', 0, '2021-12-25 12:18:52', '2021-12-25 12:18:52'); +INSERT INTO `eb_system_config` VALUES (7752, 'stor_reason', 'stor_reason', 77, '收货地址填错了\n与描述不符 \n信息填错了,重新拍 \n收到商品损坏了 \n未按预定时间发货 \n其它原因\n测试111', 0, '2021-12-25 12:18:52', '2021-12-25 12:18:52'); +INSERT INTO `eb_system_config` VALUES (7753, 'mobile_top_logo', 'mobile_top_logo', 77, 'crmebimage/public/maintain/2021/12/25/7de81090b87a4325a603e056a660c620q50t3etnee.png', 0, '2021-12-25 12:18:52', '2021-12-25 12:18:52'); +INSERT INTO `eb_system_config` VALUES (7754, 'mobile_login_logo', 'mobile_login_logo', 77, 'crmebimage/public/maintain/2021/12/25/8cf6cd4fd29c4a59a094ba028c8f3f4czyd21fctzc.png', 0, '2021-12-25 12:18:52', '2021-12-25 12:18:52'); +INSERT INTO `eb_system_config` VALUES (7755, 'order_cancel_time', 'order_cancel_time', 77, '1', 0, '2021-12-25 12:18:52', '2021-12-25 12:18:52'); +INSERT INTO `eb_system_config` VALUES (7756, 'order_activity_time', 'order_activity_time', 77, '1', 0, '2021-12-25 12:18:52', '2021-12-25 12:18:52'); +INSERT INTO `eb_system_config` VALUES (7757, 'site_name', 'site_name', 77, '一码秦川', 0, '2021-12-25 12:18:52', '2021-12-25 12:18:52'); +INSERT INTO `eb_system_config` VALUES (7758, 'site_url', 'site_url', 77, 'https://app.net', 0, '2021-12-25 12:18:52', '2021-12-25 12:18:52'); +INSERT INTO `eb_system_config` VALUES (7759, 'seo_title', 'seo_title', 77, '一码秦川', 0, '2021-12-25 12:18:52', '2021-12-25 12:18:52'); +INSERT INTO `eb_system_config` VALUES (7760, 'news_slides_limit', 'news_slides_limit', 77, '3', 0, '2021-12-25 12:18:52', '2021-12-25 12:18:52'); +INSERT INTO `eb_system_config` VALUES (7761, 'front_api_url', 'front_api_url', 77, 'http://127.0.0.1:8081', 0, '2021-12-25 12:18:52', '2021-12-25 12:18:52'); +INSERT INTO `eb_system_config` VALUES (7777, 'wechat_appid', 'wechat_appid', 65, '11111111111', 0, '2021-12-25 12:26:14', '2021-12-25 12:26:14'); +INSERT INTO `eb_system_config` VALUES (7778, 'wechat_appsecret', 'wechat_appsecret', 65, '11111111111', 0, '2021-12-25 12:26:14', '2021-12-25 12:26:14'); +INSERT INTO `eb_system_config` VALUES (7779, 'field101', 'field101', 65, 'crmebJava', 0, '2021-12-25 12:26:14', '2021-12-25 12:26:14'); +INSERT INTO `eb_system_config` VALUES (7780, 'field103', 'field103', 65, '11111111111', 0, '2021-12-25 12:26:14', '2021-12-25 12:26:14'); +INSERT INTO `eb_system_config` VALUES (7781, 'field104', 'field104', 65, '1', 0, '2021-12-25 12:26:14', '2021-12-25 12:26:14'); +INSERT INTO `eb_system_config` VALUES (7782, 'wechat_share_img', 'wechat_share_img', 65, 'crmebimage/public/maintain/2021/12/25/8cf6cd4fd29c4a59a094ba028c8f3f4czyd21fctzc.png', 0, '2021-12-25 12:26:14', '2021-12-25 12:26:14'); +INSERT INTO `eb_system_config` VALUES (7783, 'wechat_qrcode', 'wechat_qrcode', 65, 'crmebimage/public/operation/2021/12/25/0427b90c74b64a03ae3e7e5c628ef7d69038aimgou.jpg', 0, '2021-12-25 12:26:14', '2021-12-25 12:26:14'); +INSERT INTO `eb_system_config` VALUES (7784, 'wechat_share_title', 'wechat_share_title', 65, '一码秦川', 0, '2021-12-25 12:26:14', '2021-12-25 12:26:14'); +INSERT INTO `eb_system_config` VALUES (7785, 'wechat_share_synopsis', 'wechat_share_synopsis', 65, '一码秦川', 0, '2021-12-25 12:26:14', '2021-12-25 12:26:14'); +INSERT INTO `eb_system_config` VALUES (7786, 'h5_avatar', 'h5_avatar', 65, 'crmebimage/public/operation/2021/12/25/0427b90c74b64a03ae3e7e5c628ef7d69038aimgou.jpg', 0, '2021-12-25 12:26:14', '2021-12-25 12:26:14'); +INSERT INTO `eb_system_config` VALUES (7802, 'api_url', 'api_url', 64, 'http://127.0.0.1:8080', 0, '2021-12-25 16:53:20', '2021-12-25 16:53:20'); +INSERT INTO `eb_system_config` VALUES (7803, 'site_logo_lefttop', 'site_logo_lefttop', 64, 'crmebimage/public/operation/2021/12/25/6d292f4a663a453e8bcc9410eda89db55z1vksp7fx.png', 0, '2021-12-25 16:53:20', '2021-12-25 16:53:20'); +INSERT INTO `eb_system_config` VALUES (7804, 'site_logo_square', 'site_logo_square', 64, 'crmebimage/public/maintain/2021/12/25/8cf6cd4fd29c4a59a094ba028c8f3f4czyd21fctzc.png', 0, '2021-12-25 16:53:20', '2021-12-25 16:53:20'); +INSERT INTO `eb_system_config` VALUES (7805, 'site_logo_login', 'site_logo_login', 64, 'crmebimage/public/maintain/2021/12/25/8cf6cd4fd29c4a59a094ba028c8f3f4czyd21fctzc.png', 0, '2021-12-25 16:53:20', '2021-12-25 16:53:20'); +INSERT INTO `eb_system_config` VALUES (7806, 'admin_login_bg_pic', 'admin_login_bg_pic', 64, 'crmebimage/public/maintain/2021/12/25/0016d1efa86d41e38e76801a7cd743c6wcupy21hvb.jpg', 0, '2021-12-25 16:53:20', '2021-12-25 16:53:20'); +INSERT INTO `eb_system_config` VALUES (7807, 'localUploadUrl', 'localUploadUrl', 108, 'http://127.0.0.1:8080', 0, '2021-12-30 15:17:28', '2021-12-30 15:17:28'); +INSERT INTO `eb_system_config` VALUES (7808, 'image_ext_str', 'image_ext_str', 108, 'jpg,jpeg,gif,png,bmp,PNG,JPG,mp4', 0, '2021-12-30 15:17:28', '2021-12-30 15:17:28'); +INSERT INTO `eb_system_config` VALUES (7809, 'image_max_size', 'image_max_size', 108, '10', 0, '2021-12-30 15:17:28', '2021-12-30 15:17:28'); +INSERT INTO `eb_system_config` VALUES (7810, 'file_ext_str', 'file_ext_str', 108, 'zip,doc,docx,xls,xlsx,pdf,mp3,wma,wav,amr,mp4', 0, '2021-12-30 15:17:28', '2021-12-30 15:17:28'); +INSERT INTO `eb_system_config` VALUES (7811, 'file_max_size', 'file_max_size', 108, '20', 0, '2021-12-30 15:17:28', '2021-12-30 15:17:28'); +INSERT INTO `eb_system_config` VALUES (7812, 'uploadType', 'uploadType', 108, '1', 0, '2021-12-30 15:17:28', '2021-12-30 15:17:28'); +INSERT INTO `eb_system_config` VALUES (7813, 'file_is_save', 'file_is_save', 108, '1', 0, '2021-12-30 15:17:28', '2021-12-30 15:17:28'); + +-- ---------------------------- +-- Table structure for eb_system_form_temp +-- ---------------------------- +DROP TABLE IF EXISTS `eb_system_form_temp`; +CREATE TABLE `eb_system_form_temp` ( + `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '表单模板id', + `name` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '表单名称', + `info` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '表单简介', + `content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '表单内容', + `create_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 144 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '表单模板' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of eb_system_form_temp +-- ---------------------------- +INSERT INTO `eb_system_form_temp` VALUES (64, '基础配置', '系统设置-基础配置', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":300,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"Api地址【支付回调】\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"__vModel__\":\"api_url\",\"placeholder\":\"webSiet网站地址Api地址【支付回调】Api地址【支付回调】\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":\"\",\"show-word-limit\":true,\"readonly\":false,\"disabled\":false},{\"__config__\":{\"label\":\"左上角菜单logo(236x64)\",\"tag\":\"self-upload\",\"tagIcon\":\"upload\",\"layout\":\"colFormItem\",\"defaultValue\":null,\"showLabel\":true,\"labelWidth\":null,\"required\":true,\"span\":24,\"showTip\":false,\"buttonText\":\"点击上传\",\"regList\":[],\"changeTag\":true,\"fileSize\":2,\"sizeUnit\":\"MB\",\"document\":\"https://element.eleme.cn/#/zh-CN/component/upload\",\"formId\":124,\"renderKey\":1595658064081,\"tips\":false},\"__slot__\":{\"list-type\":true},\"action\":\"https://jsonplaceholder.typicode.com/posts/\",\"disabled\":true,\"accept\":\"\",\"name\":\"file\",\"auto-upload\":true,\"list-type\":\"picture-card\",\"multiple\":false,\"__vModel__\":\"site_logo_lefttop\"},{\"__config__\":{\"label\":\"左上角缩回菜单logo(164x164)\",\"tag\":\"self-upload\",\"tagIcon\":\"upload\",\"layout\":\"colFormItem\",\"defaultValue\":null,\"showLabel\":true,\"labelWidth\":null,\"required\":true,\"span\":24,\"showTip\":false,\"buttonText\":\"点击上传\",\"regList\":[],\"changeTag\":true,\"fileSize\":2,\"sizeUnit\":\"MB\",\"document\":\"https://element.eleme.cn/#/zh-CN/component/upload\",\"formId\":127,\"renderKey\":1595658695317,\"tips\":false},\"__slot__\":{\"list-type\":true},\"action\":\"https://jsonplaceholder.typicode.com/posts/\",\"disabled\":true,\"accept\":\"\",\"name\":\"file\",\"auto-upload\":true,\"list-type\":\"text\",\"multiple\":false,\"__vModel__\":\"site_logo_square\"},{\"__config__\":{\"label\":\"登录页logo(164x164)\",\"tag\":\"self-upload\",\"tagIcon\":\"upload\",\"layout\":\"colFormItem\",\"defaultValue\":null,\"showLabel\":true,\"labelWidth\":null,\"required\":true,\"span\":24,\"showTip\":false,\"buttonText\":\"点击上传\",\"regList\":[],\"changeTag\":true,\"fileSize\":2,\"sizeUnit\":\"MB\",\"document\":\"https://element.eleme.cn/#/zh-CN/component/upload\",\"formId\":101,\"renderKey\":1612510257294,\"tips\":false},\"__slot__\":{\"list-type\":true},\"action\":\"https://jsonplaceholder.typicode.com/posts/\",\"disabled\":true,\"accept\":\"\",\"name\":\"file\",\"auto-upload\":true,\"list-type\":\"picture-card\",\"multiple\":false,\"__vModel__\":\"site_logo_login\"},{\"__config__\":{\"label\":\"登录页背景图(1920x1080)\",\"tag\":\"self-upload\",\"tagIcon\":\"upload\",\"layout\":\"colFormItem\",\"defaultValue\":null,\"showLabel\":true,\"labelWidth\":null,\"required\":true,\"span\":24,\"showTip\":false,\"buttonText\":\"点击上传\",\"regList\":[],\"changeTag\":true,\"fileSize\":2,\"sizeUnit\":\"MB\",\"document\":\"https://element.eleme.cn/#/zh-CN/component/upload\",\"formId\":152,\"renderKey\":1596017451389,\"tips\":false},\"__slot__\":{\"list-type\":true},\"action\":\"https://jsonplaceholder.typicode.com/posts/\",\"disabled\":true,\"accept\":\"\",\"name\":\"file\",\"auto-upload\":true,\"list-type\":\"text\",\"multiple\":false,\"__vModel__\":\"admin_login_bg_pic\"}]}', '2020-05-15 17:20:10', '2021-12-23 14:21:01'); +INSERT INTO `eb_system_form_temp` VALUES (65, '公众号配置', '应用配置', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":170,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"AppId\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":104,\"renderKey\":1589942266186,\"tips\":true,\"tipsIsLink\":true,\"tipsLink\":\"http://help.crmeb.net/crmeb_java/2103932\",\"tipsDesc\":\"点击查看详细\"},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入AppId\",\"style\":{\"width\":\"80%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"wechat_appid\"},{\"__config__\":{\"label\":\"AppSecret\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":105,\"renderKey\":1589942280095,\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入AppSecret\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"wechat_appsecret\"},{\"__config__\":{\"label\":\"微信验证Token\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":101,\"renderKey\":1613723085302,\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入微信验证Token\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"field101\"},{\"__config__\":{\"label\":\"EncodingAESKey\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":103,\"renderKey\":1613723136701,\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入EncodingAESKey\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"field103\"},{\"__config__\":{\"label\":\"消息加密方式\",\"labelWidth\":null,\"showLabel\":true,\"tag\":\"el-radio-group\",\"tagIcon\":\"radio\",\"changeTag\":true,\"layout\":\"colFormItem\",\"span\":24,\"optionType\":\"default\",\"regList\":[],\"required\":true,\"border\":false,\"document\":\"https://element.eleme.cn/#/zh-CN/component/radio\",\"formId\":104,\"renderKey\":1613723166459,\"tips\":false},\"__slot__\":{\"options\":[{\"label\":\"明文模式\",\"value\":1},{\"label\":\"兼容模式\",\"value\":2},{\"label\":\"安全模式\",\"value\":3}]},\"style\":{},\"size\":\"medium\",\"disabled\":false,\"__vModel__\":\"field104\"},{\"__config__\":{\"label\":\"微信分享图片(400x400)\",\"tag\":\"self-upload\",\"tagIcon\":\"selfUpload\",\"layout\":\"colFormItem\",\"defaultValue\":null,\"showLabel\":true,\"labelWidth\":null,\"required\":false,\"span\":24,\"showTip\":false,\"buttonText\":\"点击上传\",\"regList\":[],\"changeTag\":true,\"fileSize\":2,\"sizeUnit\":\"MB\",\"document\":\"https://element.eleme.cn/#/zh-CN/component/upload\",\"formId\":123,\"renderKey\":1597063713790,\"tips\":false},\"__slot__\":{\"list-type\":true},\"action\":\"https://jsonplaceholder.typicode.com/posts/\",\"disabled\":true,\"accept\":\"\",\"name\":\"file\",\"auto-upload\":true,\"list-type\":\"text\",\"multiple\":false,\"__vModel__\":\"wechat_share_img\"},{\"__config__\":{\"label\":\"公众号关联二维码\",\"tag\":\"self-upload\",\"tagIcon\":\"selfUpload\",\"layout\":\"colFormItem\",\"defaultValue\":null,\"showLabel\":true,\"labelWidth\":null,\"required\":false,\"span\":24,\"showTip\":false,\"buttonText\":\"点击上传\",\"regList\":[],\"changeTag\":true,\"fileSize\":2,\"sizeUnit\":\"MB\",\"document\":\"https://element.eleme.cn/#/zh-CN/component/upload\",\"formId\":124,\"renderKey\":1597063784328,\"tips\":false},\"__slot__\":{\"list-type\":true},\"action\":\"https://jsonplaceholder.typicode.com/posts/\",\"disabled\":true,\"accept\":\"\",\"name\":\"file\",\"auto-upload\":true,\"list-type\":\"text\",\"multiple\":false,\"__vModel__\":\"wechat_qrcode\"},{\"__config__\":{\"label\":\"微信分享标题\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":135,\"renderKey\":1591000910252,\"defaultValue\":\"CRMEB\",\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入微信分享标题\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"wechat_share_title\"},{\"__config__\":{\"label\":\"微信分享简介\",\"labelWidth\":null,\"showLabel\":true,\"tag\":\"el-input\",\"tagIcon\":\"textarea\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"regList\":[],\"changeTag\":true,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"formId\":136,\"renderKey\":1591001203576,\"defaultValue\":\"CRMEB\",\"tips\":false},\"type\":\"textarea\",\"placeholder\":\"请输入微信分享简介\",\"autosize\":{\"minRows\":4,\"maxRows\":4},\"style\":{\"width\":\"100%\"},\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"wechat_share_synopsis\"},{\"__config__\":{\"label\":\"用户H5默认头像(90x90)\",\"tag\":\"self-upload\",\"tagIcon\":\"selfUpload\",\"layout\":\"colFormItem\",\"defaultValue\":null,\"showLabel\":true,\"labelWidth\":null,\"required\":false,\"span\":24,\"showTip\":false,\"buttonText\":\"点击上传\",\"regList\":[],\"changeTag\":true,\"fileSize\":2,\"sizeUnit\":\"MB\",\"document\":\"https://element.eleme.cn/#/zh-CN/component/upload\",\"formId\":126,\"renderKey\":1597063821840,\"tips\":false},\"__slot__\":{\"list-type\":true},\"action\":\"https://jsonplaceholder.typicode.com/posts/\",\"disabled\":true,\"accept\":\"\",\"name\":\"file\",\"auto-upload\":true,\"list-type\":\"text\",\"multiple\":false,\"__vModel__\":\"h5_avatar\"}]}', '2020-05-15 17:22:16', '2021-12-23 14:24:23'); +INSERT INTO `eb_system_form_temp` VALUES (66, '小程序配置', '应用配置', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":140,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"appId\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":101,\"renderKey\":1589942764174,\"tips\":true,\"tipsIsLink\":true,\"tipsLink\":\"http://help.crmeb.net/crmeb_java/2095774\",\"tipsDesc\":\"点击查看详细\"},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入appId\",\"style\":{\"width\":\"80%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"routine_appid\"},{\"__config__\":{\"label\":\"AppSecret\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":102,\"renderKey\":1589942771851,\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入AppSecret\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"routine_appsecret\"},{\"__config__\":{\"label\":\"小程序名称\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":104,\"renderKey\":1589942826385,\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入小程序名称\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"routine_name\"}]}', '2020-05-15 17:39:17', '2021-11-02 16:46:29'); +INSERT INTO `eb_system_form_temp` VALUES (67, '公众号支付配置', '支付配置', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":150,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"appId\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":101,\"renderKey\":1589942880822,\"tips\":true,\"tipsIsLink\":true,\"tipsLink\":\"http://help.crmeb.net/crmeb_java/2095783\",\"tipsDesc\":\"点击查看详细\"},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入appId\",\"style\":{\"width\":\"80%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"pay_weixin_appid\"},{\"__config__\":{\"label\":\"Appsecret\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":102,\"renderKey\":1589942891565,\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入Appsecret\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"pay_weixin_appsecret\"},{\"__config__\":{\"label\":\"Mchid\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":103,\"renderKey\":1589942909192,\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入Mchid\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"pay_weixin_mchid\"},{\"__config__\":{\"label\":\"公众号商户证书\",\"tag\":\"upload-file\",\"tagIcon\":\"uploadPicture\",\"layout\":\"colFormItem\",\"defaultValue\":null,\"showLabel\":true,\"labelWidth\":null,\"required\":false,\"span\":24,\"showTip\":false,\"buttonText\":\"点击上传\",\"regList\":[],\"changeTag\":true,\"document\":\"https://element.eleme.cn/#/zh-CN/component/upload\",\"formId\":101,\"renderKey\":1606895770397,\"tips\":false},\"__slot__\":{\"list-type\":true},\"name\":\"upfile\",\"__vModel__\":\"pay_routine_client_p12\"},{\"__config__\":{\"label\":\"商户证书绝对路径\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":101,\"renderKey\":1620460466542,\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入商户证书绝对路径商户证书绝对路径商户证书绝对路径\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"pay_weixin_certificate_path\"},{\"__config__\":{\"label\":\"Key\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":106,\"renderKey\":1589942961506,\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入Key\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"pay_weixin_key\"},{\"__config__\":{\"label\":\"微信支付\",\"labelWidth\":null,\"showLabel\":true,\"tag\":\"el-radio-group\",\"tagIcon\":\"radio\",\"changeTag\":true,\"layout\":\"colFormItem\",\"span\":24,\"optionType\":\"default\",\"regList\":[],\"required\":true,\"border\":false,\"document\":\"https://element.eleme.cn/#/zh-CN/component/radio\",\"formId\":107,\"renderKey\":1589942970321,\"defaultValue\":1,\"tips\":false},\"__slot__\":{\"options\":[{\"label\":\"开启\",\"value\":1},{\"label\":\"关闭\",\"value\":2}]},\"style\":{},\"size\":\"medium\",\"disabled\":false,\"__vModel__\":\"pay_weixin_open\"},{\"__config__\":{\"label\":\"配置目录\",\"labelWidth\":null,\"showLabel\":true,\"tag\":\"el-input\",\"tagIcon\":\"textarea\",\"required\":false,\"layout\":\"colFormItem\",\"span\":24,\"regList\":[],\"changeTag\":true,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"formId\":108,\"renderKey\":1589942998404,\"tips\":false},\"type\":\"textarea\",\"placeholder\":\"请输入配置目录\",\"autosize\":{\"minRows\":4,\"maxRows\":4},\"style\":{\"width\":\"100%\"},\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"paydir\"}]}', '2020-05-16 10:19:37', '2021-11-02 16:47:12'); +INSERT INTO `eb_system_form_temp` VALUES (68, '小程序支付配置', '支付配置', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":150,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"Appid\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":101,\"renderKey\":1589943059385,\"tips\":true,\"tipsIsLink\":true,\"tipsLink\":\"http://help.crmeb.net/crmeb_java/2095784\",\"tipsDesc\":\"点击查看详细\"},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入Appid\",\"style\":{\"width\":\"80%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"pay_routine_appid\"},{\"__config__\":{\"label\":\"Appsecret\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":102,\"renderKey\":1589943069474,\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入Appsecret\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"pay_routine_appsecret\"},{\"__config__\":{\"label\":\"Mchid\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":103,\"renderKey\":1589943084448,\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入Mchid\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"pay_routine_mchid\"},{\"__config__\":{\"label\":\"Key\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":104,\"renderKey\":1589943093596,\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入Key\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"pay_routine_key\"},{\"__config__\":{\"label\":\"小程序商户证书\",\"tag\":\"upload-file\",\"tagIcon\":\"uploadPicture\",\"layout\":\"colFormItem\",\"defaultValue\":null,\"showLabel\":true,\"labelWidth\":null,\"required\":true,\"span\":24,\"showTip\":false,\"buttonText\":\"点击上传\",\"regList\":[],\"changeTag\":true,\"document\":\"https://element.eleme.cn/#/zh-CN/component/upload\",\"formId\":101,\"renderKey\":1606877259081,\"tips\":false},\"__slot__\":{\"list-type\":true},\"name\":\"upfile\",\"__vModel__\":\"pay_mini_client_p12\"},{\"__config__\":{\"label\":\"商户证书绝对路径\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":101,\"renderKey\":1620461041708,\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"商户证书绝对路径商户证书绝对路径\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"pay_routine_certificate_path\"}]}', '2020-05-16 10:35:06', '2021-11-02 16:46:15'); +INSERT INTO `eb_system_form_temp` VALUES (70, '编辑城市', '编辑城市', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":100,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"上级名称\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":false,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[]},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"__vModel__\":\"parentName\",\"placeholder\":\"上级名称\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":11,\"show-word-limit\":false,\"readonly\":true,\"disabled\":false},{\"__config__\":{\"label\":\"名称\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":109,\"renderKey\":1589790937111},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入名称\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":\"20\",\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"name\"}]}', '2020-05-18 16:39:58', '2021-08-14 16:43:09'); +INSERT INTO `eb_system_form_temp` VALUES (71, '添加物流公司', '添加物流公司', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":100,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"公司名称\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"defaultValue\":\"\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[]},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"__vModel__\":\"name\",\"placeholder\":\"请输入公司名称公司名称公司名称公司名称\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":11,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false},{\"__config__\":{\"label\":\"编码\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":false,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":109,\"renderKey\":1589858082280},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入编码\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"code\"},{\"__config__\":{\"label\":\"排序\",\"showLabel\":true,\"changeTag\":true,\"labelWidth\":0,\"tag\":\"el-input-number\",\"tagIcon\":\"number\",\"span\":24,\"layout\":\"colFormItem\",\"required\":false,\"regList\":[],\"document\":\"https://element.eleme.cn/#/zh-CN/component/input-number\",\"formId\":114,\"renderKey\":1589858279409,\"defaultValue\":0},\"placeholder\":\"0\",\"step\":1,\"step-strictly\":true,\"controls-position\":\"right\",\"disabled\":false,\"__vModel__\":\"sort\",\"min\":0},{\"__config__\":{\"label\":\"单选框组\",\"labelWidth\":null,\"showLabel\":true,\"tag\":\"el-radio-group\",\"tagIcon\":\"radio\",\"changeTag\":true,\"layout\":\"colFormItem\",\"span\":24,\"optionType\":\"default\",\"regList\":[],\"required\":true,\"border\":false,\"document\":\"https://element.eleme.cn/#/zh-CN/component/radio\",\"formId\":101,\"renderKey\":1597721904770,\"defaultValue\":0},\"__slot__\":{\"options\":[{\"label\":\"隐藏\",\"value\":0},{\"label\":\"显示\",\"value\":1}]},\"style\":{},\"size\":\"medium\",\"disabled\":false,\"__vModel__\":\"isShow\"}]}', '2020-05-19 11:17:03', '2020-08-18 11:46:40'); +INSERT INTO `eb_system_form_temp` VALUES (72, '上传文件配置-基础配置', '上传文件配置-基础配置', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":130,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"layout\":\"rowFormItem\",\"tagIcon\":\"row\",\"label\":\"行容器\",\"layoutTree\":true,\"children\":[],\"document\":\"https://element.eleme.cn/#/zh-CN/component/layout\",\"formId\":101,\"span\":24,\"renderKey\":1592474288129,\"componentName\":\"row101\",\"gutter\":15},\"type\":\"default\",\"justify\":\"start\",\"align\":\"top\"}]}', '2020-05-19 17:10:40', '2020-06-18 17:58:09'); +INSERT INTO `eb_system_form_temp` VALUES (74, '物流配置', '物流配置', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":100,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":23,\"formBtns\":true,\"unFocusedComponentBorder\":false,\"fields\":[{\"__config__\":{\"label\":\"全场满额包邮开关\",\"labelWidth\":180,\"showLabel\":true,\"tag\":\"el-radio-group\",\"tagIcon\":\"radio\",\"changeTag\":true,\"layout\":\"colFormItem\",\"span\":23,\"optionType\":\"default\",\"regList\":[],\"required\":false,\"border\":false,\"document\":\"https://element.eleme.cn/#/zh-CN/component/radio\",\"formId\":102,\"renderKey\":1613806479762,\"defaultValue\":false,\"tips\":false},\"__slot__\":{\"options\":[{\"label\":\"关闭\",\"value\":\"false\"},{\"label\":\"开启\",\"value\":\"true\"}]},\"style\":{},\"size\":\"medium\",\"disabled\":false,\"__vModel__\":\"store_free_postage_switch\"},{\"__config__\":{\"label\":\"全场满额包邮(元)\",\"showLabel\":true,\"changeTag\":true,\"labelWidth\":180,\"tag\":\"el-input-number\",\"tagIcon\":\"number\",\"span\":18,\"layout\":\"colFormItem\",\"required\":false,\"regList\":[],\"document\":\"https://element.eleme.cn/#/zh-CN/component/input-number\",\"formId\":101,\"renderKey\":1589939942507,\"defaultValue\":1,\"tips\":false},\"placeholder\":\"全场满额包邮(元)全场满额包邮(元)全场满额包邮(元)\",\"step\":1,\"step-strictly\":true,\"controls-position\":\"right\",\"disabled\":false,\"__vModel__\":\"store_free_postage\",\"min\":0},{\"__config__\":{\"label\":\"腾讯地图KEY\",\"labelWidth\":180,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":false,\"layout\":\"colFormItem\",\"span\":23,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":105,\"renderKey\":1589940263502,\"tips\":true,\"tipsIsLink\":true,\"tipsLink\":\"http://help.crmeb.net/crmeb_java/2275635\",\"tipsDesc\":\"点击查看详细\"},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入腾讯地图KEY\",\"style\":{\"width\":\"80%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"tengxun_map_key\"},{\"__config__\":{\"label\":\"是否开启提货点自提\",\"labelWidth\":180,\"showLabel\":true,\"tag\":\"el-radio-group\",\"tagIcon\":\"radio\",\"changeTag\":true,\"layout\":\"colFormItem\",\"span\":23,\"optionType\":\"default\",\"regList\":[],\"required\":false,\"border\":false,\"document\":\"https://element.eleme.cn/#/zh-CN/component/radio\",\"formId\":107,\"renderKey\":1589940326254,\"defaultValue\":false,\"tips\":false},\"__slot__\":{\"options\":[{\"label\":\"关闭\",\"value\":\"false\"},{\"label\":\"开启\",\"value\":\"true\"}]},\"style\":{},\"size\":\"medium\",\"disabled\":false,\"__vModel__\":\"store_self_mention\"}]}', '2020-05-20 10:07:14', '2021-11-02 17:00:22'); +INSERT INTO `eb_system_form_temp` VALUES (76, '云智服', '云智服', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":120,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"客服H5链接\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":101,\"renderKey\":1599641784700,\"tips\":true,\"tipsIsLink\":true,\"tipsLink\":\"http://help.crmeb.net/crmeb_java/2322225\",\"tipsDesc\":\"点击查看详细\"},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入客服H5链接\",\"style\":{\"width\":\"80%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"yzf_h5_url\"},{\"__config__\":{\"label\":\"客服电话\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"info\":false,\"desc\":\"\",\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":102,\"renderKey\":1634805887754,\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入客服电话\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"consumer_hotline\"},{\"__config__\":{\"label\":\"电话服务\",\"tag\":\"el-switch\",\"tagIcon\":\"switch\",\"defaultValue\":false,\"span\":24,\"showLabel\":true,\"labelWidth\":null,\"layout\":\"colFormItem\",\"required\":true,\"info\":true,\"desc\":\"开启电话服务后,移动端点击客服直接唤起拨号\",\"regList\":[],\"changeTag\":true,\"document\":\"https://element.eleme.cn/#/zh-CN/component/switch\",\"formId\":103,\"renderKey\":1634805899756,\"tips\":false},\"style\":{},\"disabled\":false,\"active-text\":\"\",\"inactive-text\":\"\",\"active-color\":null,\"inactive-color\":null,\"active-value\":true,\"inactive-value\":false,\"__vModel__\":\"telephone_service_switch\"}]}', '2020-05-21 11:07:21', '2021-11-02 16:43:06'); +INSERT INTO `eb_system_form_temp` VALUES (77, '商城基础配置', '商城配置-商城基础配置', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":300,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"警戒库存\",\"showLabel\":true,\"changeTag\":true,\"labelWidth\":300,\"tag\":\"el-input-number\",\"tagIcon\":\"number\",\"span\":24,\"layout\":\"colFormItem\",\"required\":true,\"regList\":[],\"document\":\"https://element.eleme.cn/#/zh-CN/component/input-number\",\"formId\":102,\"renderKey\":1590032029141,\"defaultValue\":2,\"tips\":false},\"placeholder\":\"警戒库存\",\"step\":1,\"step-strictly\":false,\"controls-position\":\"\",\"disabled\":false,\"__vModel__\":\"store_stock\",\"max\":99999,\"min\":0},{\"__config__\":{\"label\":\"退货理由\",\"labelWidth\":300,\"showLabel\":true,\"tag\":\"el-input\",\"tagIcon\":\"textarea\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"regList\":[],\"changeTag\":true,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"formId\":103,\"renderKey\":1590032054065,\"defaultValue\":\"收货地址填错了 与描述不符 信息填错了,重新拍 收到商品损坏了 未按预定时间发货 其它原因\",\"tips\":false},\"type\":\"textarea\",\"placeholder\":\"请填写退货理由退货理由\",\"autosize\":{\"minRows\":4,\"maxRows\":4},\"style\":{\"width\":\"100%\"},\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"stor_reason\"},{\"__config__\":{\"label\":\"移动端顶部logo图标(127*45)\",\"tag\":\"self-upload\",\"tagIcon\":\"upload\",\"layout\":\"colFormItem\",\"defaultValue\":null,\"showLabel\":true,\"labelWidth\":300,\"required\":true,\"span\":24,\"showTip\":false,\"buttonText\":\"点击上传\",\"regList\":[],\"changeTag\":true,\"fileSize\":2,\"sizeUnit\":\"MB\",\"document\":\"https://element.eleme.cn/#/zh-CN/component/upload\",\"formId\":124,\"renderKey\":1595659136385,\"tips\":false},\"__slot__\":{\"list-type\":true},\"action\":\"https://jsonplaceholder.typicode.com/posts/\",\"disabled\":true,\"accept\":\"\",\"name\":\"file\",\"auto-upload\":true,\"list-type\":\"text\",\"multiple\":false,\"__vModel__\":\"mobile_top_logo\"},{\"__config__\":{\"label\":\"移动端登录页logo(90x90)\",\"tag\":\"self-upload\",\"tagIcon\":\"upload\",\"layout\":\"colFormItem\",\"defaultValue\":null,\"showLabel\":true,\"labelWidth\":300,\"required\":true,\"span\":24,\"showTip\":false,\"buttonText\":\"点击上传\",\"regList\":[],\"changeTag\":true,\"fileSize\":2,\"sizeUnit\":\"MB\",\"document\":\"https://element.eleme.cn/#/zh-CN/component/upload\",\"formId\":102,\"renderKey\":1629094835969,\"tips\":false},\"__slot__\":{\"list-type\":true},\"action\":\"https://jsonplaceholder.typicode.com/posts/\",\"disabled\":true,\"accept\":\"\",\"name\":\"file\",\"auto-upload\":true,\"list-type\":\"text\",\"multiple\":false,\"__vModel__\":\"mobile_login_logo\"},{\"__config__\":{\"label\":\"普通商品未支付取消订单时间(单位:小时)\",\"showLabel\":true,\"changeTag\":true,\"labelWidth\":300,\"tag\":\"el-input-number\",\"tagIcon\":\"number\",\"span\":24,\"layout\":\"colFormItem\",\"required\":true,\"regList\":[],\"document\":\"https://element.eleme.cn/#/zh-CN/component/input-number\",\"formId\":105,\"renderKey\":1590032096481,\"defaultValue\":2,\"tips\":false},\"placeholder\":\"普通商品未支付取消订单时间(单位:小时)\",\"step\":1,\"step-strictly\":false,\"controls-position\":\"\",\"disabled\":false,\"__vModel__\":\"order_cancel_time\",\"max\":99999,\"min\":0,\"precision\":0},{\"__config__\":{\"label\":\"活动商品未支付取消订单时间(单位小时)\",\"showLabel\":true,\"changeTag\":true,\"labelWidth\":300,\"tag\":\"el-input-number\",\"tagIcon\":\"number\",\"span\":24,\"layout\":\"colFormItem\",\"required\":true,\"regList\":[],\"document\":\"https://element.eleme.cn/#/zh-CN/component/input-number\",\"formId\":106,\"renderKey\":1590032112020,\"defaultValue\":2,\"tips\":false},\"placeholder\":\"活动商品未支付取消订单时间(单位:小时)\",\"step\":1,\"step-strictly\":false,\"controls-position\":\"\",\"disabled\":false,\"__vModel__\":\"order_activity_time\",\"max\":99999,\"min\":0,\"precision\":0},{\"__config__\":{\"label\":\"网站名称\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":101,\"renderKey\":1629086692739,\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入网站名称\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"site_name\"},{\"__config__\":{\"label\":\"网站地址\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":102,\"renderKey\":1629086763346,\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"webSiet网站地址网站地址网站地址\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":true,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"site_url\"},{\"__config__\":{\"label\":\"SEO标题\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":102,\"renderKey\":1629087874359,\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入SEO标题\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"seo_title\"},{\"__config__\":{\"label\":\"新闻幻灯片数量上限\",\"showLabel\":true,\"changeTag\":true,\"labelWidth\":null,\"tag\":\"el-input-number\",\"tagIcon\":\"number\",\"span\":24,\"layout\":\"colFormItem\",\"required\":true,\"regList\":[],\"document\":\"https://element.eleme.cn/#/zh-CN/component/input-number\",\"formId\":101,\"renderKey\":1629087608122,\"defaultValue\":1,\"tips\":false},\"placeholder\":\"新闻幻灯片数量上限新闻幻灯片数量上限新闻幻灯片数量上限新闻幻灯片数量上限\",\"step\":1,\"step-strictly\":false,\"controls-position\":\"\",\"disabled\":false,\"__vModel__\":\"news_slides_limit\",\"min\":1,\"max\":3},{\"__config__\":{\"label\":\"移动商城api\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":101,\"renderKey\":1639127436585,\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"移动商城api_小程序源码下载前必须配置\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":true,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"front_api_url\"}]}', '2020-05-16 10:19:37', '2021-12-23 14:15:09'); +INSERT INTO `eb_system_form_temp` VALUES (78, '充值配置', '商城配置-充值配置', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":200,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"用户最低充值金额\",\"showLabel\":true,\"changeTag\":true,\"labelWidth\":null,\"tag\":\"el-input-number\",\"tagIcon\":\"number\",\"span\":24,\"layout\":\"colFormItem\",\"required\":true,\"regList\":[],\"document\":\"https://element.eleme.cn/#/zh-CN/component/input-number\",\"formId\":101,\"renderKey\":1590032399200,\"defaultValue\":1},\"placeholder\":\"用户最低充值金额\",\"step\":1,\"step-strictly\":false,\"controls-position\":\"\",\"disabled\":false,\"__vModel__\":\"store_user_min_recharge\",\"min\":1,\"precision\":2},{\"__config__\":{\"label\":\"小程序充值开关\",\"labelWidth\":null,\"showLabel\":true,\"tag\":\"el-radio-group\",\"tagIcon\":\"radio\",\"changeTag\":true,\"layout\":\"colFormItem\",\"span\":24,\"optionType\":\"default\",\"regList\":[],\"required\":true,\"border\":false,\"document\":\"https://element.eleme.cn/#/zh-CN/component/radio\",\"formId\":102,\"renderKey\":1590032438060,\"defaultValue\":\"true\"},\"__slot__\":{\"options\":[{\"label\":\"开启\",\"value\":\"true\"},{\"label\":\"关闭\",\"value\":\"false\"}]},\"style\":{},\"size\":\"medium\",\"disabled\":false,\"__vModel__\":\"recharge_switch\"},{\"__config__\":{\"label\":\"充值注意事项\",\"labelWidth\":null,\"showLabel\":true,\"tag\":\"el-input\",\"tagIcon\":\"textarea\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"regList\":[],\"changeTag\":true,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"formId\":103,\"renderKey\":1590032466493,\"defaultValue\":\"充值后帐户的金额不能提现,可用于商城消费使用 佣金导入账户之后不能再次导出、不可提现 账户充值出现问题可联系商城客服,也可拨打商城客服热线:4008888888\"},\"type\":\"textarea\",\"placeholder\":\"请输入充值注意事项\",\"autosize\":{\"minRows\":4,\"maxRows\":4},\"style\":{\"width\":\"100%\"},\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"recharge_attention\"}]}', '2020-05-21 11:41:45', '2021-07-22 09:32:00'); +INSERT INTO `eb_system_form_temp` VALUES (79, '线下支付', '支付设置-线下支付', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":150,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"线下支付状态\",\"labelWidth\":null,\"showLabel\":true,\"tag\":\"el-radio-group\",\"tagIcon\":\"radio\",\"changeTag\":true,\"layout\":\"colFormItem\",\"span\":24,\"optionType\":\"default\",\"regList\":[],\"required\":true,\"border\":false,\"document\":\"https://element.eleme.cn/#/zh-CN/component/radio\",\"formId\":101,\"renderKey\":1590041613118,\"defaultValue\":1},\"__slot__\":{\"options\":[{\"label\":\"开启\",\"value\":1},{\"label\":\"关闭\",\"value\":0}]},\"style\":{},\"size\":\"medium\",\"disabled\":false,\"__vModel__\":\"offline_pay_status\"}]}', '2020-05-21 14:14:10', '2021-01-09 11:26:55'); +INSERT INTO `eb_system_form_temp` VALUES (80, '余额支付', '支付配置-余额支付', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":150,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"余额支付状态\",\"labelWidth\":null,\"showLabel\":true,\"tag\":\"el-radio-group\",\"tagIcon\":\"radio\",\"changeTag\":true,\"layout\":\"colFormItem\",\"span\":24,\"optionType\":\"default\",\"regList\":[],\"required\":true,\"border\":false,\"document\":\"https://element.eleme.cn/#/zh-CN/component/radio\",\"formId\":101,\"renderKey\":1590041613118,\"defaultValue\":0},\"__slot__\":{\"options\":[{\"label\":\"开启\",\"value\":1},{\"label\":\"关闭\",\"value\":0}]},\"style\":{},\"size\":\"medium\",\"disabled\":false,\"__vModel__\":\"yue_pay_status\"}]}', '2020-05-21 14:14:49', '2021-01-08 11:52:28'); +INSERT INTO `eb_system_form_temp` VALUES (81, '阿里云配置', '阿里云配置', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":150,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"空间域名 Domain\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":101,\"renderKey\":1590041796581,\"tips\":true,\"tipsIsLink\":true,\"tipsLink\":\"https://doc.crmeb.com/web/java/crmeb_java/701\",\"tipsDesc\":\"地址怎么配置?\",\"defaultValue\":\"http://yourdomain\"},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入单行文本空间域名 Domain空间域名 Domain\",\"style\":{\"width\":\"80%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"alUploadUrl\"},{\"__config__\":{\"label\":\"accessKey\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":102,\"renderKey\":1590041835433,\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入单行文本accessKey\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"alAccessKey\"},{\"__config__\":{\"label\":\"secretKey\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":103,\"renderKey\":1590041835651,\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入单行文本secretKey\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"alSecretKey\"},{\"__config__\":{\"label\":\"存储空间名称\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":104,\"renderKey\":1590041835857,\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入单行文本存储空间名称\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"alStorageName\"},{\"__config__\":{\"label\":\"所属地域\",\"showLabel\":true,\"labelWidth\":null,\"tag\":\"el-select\",\"tagIcon\":\"select\",\"layout\":\"colFormItem\",\"span\":24,\"required\":true,\"regList\":[],\"changeTag\":true,\"document\":\"https://element.eleme.cn/#/zh-CN/component/select\",\"formId\":101,\"renderKey\":1629717898666,\"tips\":false},\"__slot__\":{\"options\":[{\"label\":\"华北2(北京)|11111111111\",\"value\":\"11111111111\"},{\"label\":\"华北 3(张家口)|oss-cn-zhangjiakou.aliyuncs.com\",\"value\":\"oss-cn-zhangjiakou.aliyuncs.com\"},{\"label\":\"华东1(杭州)|oss-cn-hangzhou.aliyuncs.com\",\"value\":\"oss-cn-hangzhou.aliyuncs.com\"},{\"label\":\"华东2(上海)|oss-cn-shanghai.aliyuncs.com\",\"value\":\"oss-cn-shanghai.aliyuncs.com\"},{\"label\":\"华北1(青岛)|oss-cn-qingdao.aliyuncs.com\",\"value\":\"oss-cn-qingdao.aliyuncs.com\"},{\"label\":\"华北5(呼和浩特)|oss-cn-huhehaote.aliyuncs.com\",\"value\":\"oss-cn-huhehaote.aliyuncs.com\"},{\"label\":\"华北6(乌兰察布)|oss-cn-wulanchabu.aliyuncs.com\",\"value\":\"oss-cn-wulanchabu.aliyuncs.com\"},{\"label\":\"华南1(深圳)|oss-cn-shenzhen.aliyuncs.com\",\"value\":\"oss-cn-shenzhen.aliyuncs.com\"},{\"label\":\"华南2(河源)|oss-cn-heyuan.aliyuncs.com\",\"value\":\"oss-cn-heyuan.aliyuncs.com\"},{\"label\":\"华南3(广州)|oss-cn-guangzhou.aliyuncs.com\",\"value\":\"oss-cn-guangzhou.aliyuncs.com\"},{\"label\":\"西南1(成都)|oss-cn-chengdu.aliyuncs.com\",\"value\":\"oss-cn-chengdu.aliyuncs.com\"},{\"label\":\"华南2(河源)|oss-cn-heyuan.aliyuncs.com\",\"value\":\"oss-cn-heyuan.aliyuncs.com\"},{\"label\":\"华南3(广州)|oss-cn-guangzhou.aliyuncs.com\",\"value\":\"oss-cn-guangzhou.aliyuncs.com\"},{\"label\":\"西南1(成都)|oss-cn-chengdu.aliyuncs.com\",\"value\":\"oss-cn-chengdu.aliyuncs.com\"},{\"label\":\"中国(香港)|oss-cn-hongkong.aliyuncs.com\",\"value\":\"oss-cn-hongkong.aliyuncs.com\"},{\"label\":\"美国西部1(硅谷)|oss-us-west-1.aliyuncs.com\",\"value\":\"oss-us-west-1.aliyuncs.com\"},{\"label\":\"美国东部1(弗吉尼亚)|oss-us-east-1.aliyuncs.com\",\"value\":\"oss-us-east-1.aliyuncs.com\"},{\"label\":\"亚太东南1(新加坡)|oss-ap-southeast-1.aliyuncs.com\",\"value\":\"oss-ap-southeast-1.aliyuncs.com\"},{\"label\":\"亚太东南2(悉尼)|oss-ap-southeast-2.aliyuncs.com\",\"value\":\"oss-ap-southeast-2.aliyuncs.com\"},{\"label\":\"亚太东南3(吉隆坡)|oss-ap-southeast-3.aliyuncs.com\",\"value\":\"oss-ap-southeast-3.aliyuncs.com\"},{\"label\":\"亚太东南5(雅加达)|oss-ap-southeast-5.aliyuncs.com\",\"value\":\"oss-ap-southeast-5.aliyuncs.com\"},{\"label\":\"亚太东北1(日本)|oss-ap-northeast-1.aliyuncs.com\",\"value\":\"oss-ap-northeast-1.aliyuncs.com\"},{\"label\":\"亚太南部1(孟买)|oss-ap-south-1.aliyuncs.com\",\"value\":\"oss-ap-south-1.aliyuncs.com\"},{\"label\":\"欧洲中部1(法兰克福)|oss-eu-central-1.aliyuncs.com\",\"value\":\"oss-eu-central-1.aliyuncs.com\"},{\"label\":\"英国(伦敦)|oss-eu-west-1.aliyuncs.com\",\"value\":\"oss-eu-west-1.aliyuncs.com\"},{\"label\":\"中东东部1(迪拜)|oss-me-east-1.aliyuncs.com\",\"value\":\"oss-me-east-1.aliyuncs.com\"}]},\"placeholder\":\"请选择下拉选择所属地域所属地域所属地域所属地域\",\"style\":{\"width\":\"100%\"},\"clearable\":false,\"disabled\":false,\"filterable\":false,\"multiple\":false,\"__vModel__\":\"alStorageRegion\"}]}', '2020-05-21 14:18:12', '2021-12-24 11:11:12'); +INSERT INTO `eb_system_form_temp` VALUES (82, '七牛云配置', '七牛云配置', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":150,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"空间域名 Domain\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":101,\"renderKey\":1590041796581,\"tips\":true,\"tipsIsLink\":true,\"tipsLink\":\"http://help.crmeb.net/crmeb_java/2102105\",\"tipsDesc\":\"点击查看详细\"},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入单行文本空间域名 Domain\",\"style\":{\"width\":\"80%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"qnUploadUrl\"},{\"__config__\":{\"label\":\"accessKey\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":102,\"renderKey\":1590041835433,\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入单行文本accessKey\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"qnAccessKey\"},{\"__config__\":{\"label\":\"qnSecretKey\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":103,\"renderKey\":1590041835651,\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入单行文本qnSecretKey\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"qnSecretKey\"},{\"__config__\":{\"label\":\"存储空间名称\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":104,\"renderKey\":1590041835857,\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入单行文本存储空间名称\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"qnStorageName\"},{\"__config__\":{\"label\":\"所属地域\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":105,\"renderKey\":1590041836043,\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入单行文本所属地域\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"qnStorageRegion\"}]}', '2020-05-21 14:18:29', '2021-11-02 16:53:27'); +INSERT INTO `eb_system_form_temp` VALUES (83, '腾讯云配置', '腾讯云配置', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":150,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"空间域名 Domain\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":101,\"renderKey\":1590041796581,\"tips\":true,\"tipsIsLink\":true,\"tipsLink\":\"http://help.crmeb.net/crmeb_java/2102106\",\"tipsDesc\":\"点击查看详细\"},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入单行文本空间域名 Domain\",\"style\":{\"width\":\"80%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"txUploadUrl\"},{\"__config__\":{\"label\":\"accessKey\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":102,\"renderKey\":1590041835433,\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入单行文本accessKeyaccessKeyaccessKeyaccessKey\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"txAccessKey\"},{\"__config__\":{\"label\":\"secretKey\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":103,\"renderKey\":1590041835651,\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入单行文本secretKey\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"txSecretKey\"},{\"__config__\":{\"label\":\"存储空间名称\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":104,\"renderKey\":1590041835857,\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入单行文本存储空间名称\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"txStorageName\"},{\"__config__\":{\"label\":\"所属地域\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":105,\"renderKey\":1590041836043,\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入单行文本所属地域\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"txStorageRegion\"}]}', '2020-05-21 14:18:46', '2021-11-02 16:52:54'); +INSERT INTO `eb_system_form_temp` VALUES (84, '微信菜单编辑', '微信菜单编辑', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":100,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"菜单名称\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":101,\"renderKey\":1590118075352},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入菜单名称\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"name\"},{\"__config__\":{\"label\":\"规则状态\",\"showLabel\":true,\"labelWidth\":null,\"tag\":\"el-select\",\"tagIcon\":\"select\",\"layout\":\"colFormItem\",\"span\":24,\"required\":true,\"regList\":[],\"changeTag\":true,\"document\":\"https://element.eleme.cn/#/zh-CN/component/select\",\"formId\":103,\"renderKey\":1590118119244},\"__slot__\":{\"options\":[{\"label\":\"关键字\",\"value\":1},{\"label\":\"跳转网页\",\"value\":2},{\"label\":\"小程序\",\"value\":3}]},\"placeholder\":\"请选择规则状态\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"disabled\":false,\"filterable\":false,\"multiple\":false,\"__vModel__\":\"type\"},{\"__config__\":{\"label\":\"关键字\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":102,\"renderKey\":1590118097394},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入关键字\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"key\"}]}', '2020-05-22 11:29:22', '2020-05-22 15:56:20'); +INSERT INTO `eb_system_form_temp` VALUES (86, '秒杀配置', '秒杀配置', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":158,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"开始时间(整数小时)\",\"showLabel\":true,\"changeTag\":true,\"labelWidth\":null,\"tag\":\"el-input-number\",\"tagIcon\":\"number\",\"span\":24,\"layout\":\"colFormItem\",\"required\":true,\"regList\":[],\"document\":\"https://element.eleme.cn/#/zh-CN/component/input-number\",\"formId\":101,\"renderKey\":1590387965990},\"placeholder\":\"计数器开始时间(整数小时)\",\"step\":1,\"step-strictly\":false,\"controls-position\":\"\",\"disabled\":false,\"__vModel__\":\"field101\"},{\"__config__\":{\"label\":\"持续时间(整数小时)\",\"showLabel\":true,\"changeTag\":true,\"labelWidth\":null,\"tag\":\"el-input-number\",\"tagIcon\":\"number\",\"span\":24,\"layout\":\"colFormItem\",\"required\":true,\"regList\":[],\"document\":\"https://element.eleme.cn/#/zh-CN/component/input-number\",\"formId\":102,\"renderKey\":1590388014422},\"placeholder\":\"计数器持续时间(整数小时)\",\"step\":1,\"step-strictly\":false,\"controls-position\":\"\",\"disabled\":false,\"__vModel__\":\"field102\"},{\"__config__\":{\"label\":\"幻灯片\",\"tag\":\"el-upload\",\"tagIcon\":\"upload\",\"layout\":\"colFormItem\",\"defaultValue\":null,\"showLabel\":true,\"labelWidth\":null,\"required\":false,\"span\":24,\"showTip\":false,\"buttonText\":\"点击上传\",\"regList\":[],\"changeTag\":true,\"fileSize\":2,\"sizeUnit\":\"MB\",\"document\":\"https://element.eleme.cn/#/zh-CN/component/upload\",\"formId\":103,\"renderKey\":1590388029048},\"__slot__\":{\"list-type\":true},\"action\":\"https://jsonplaceholder.typicode.com/posts/\",\"disabled\":false,\"accept\":\"\",\"name\":\"file\",\"auto-upload\":true,\"list-type\":\"picture-card\",\"multiple\":false,\"__vModel__\":\"field103\"},{\"__config__\":{\"label\":\"排序\",\"showLabel\":true,\"changeTag\":true,\"labelWidth\":null,\"tag\":\"el-input-number\",\"tagIcon\":\"number\",\"span\":24,\"layout\":\"colFormItem\",\"required\":true,\"regList\":[],\"document\":\"https://element.eleme.cn/#/zh-CN/component/input-number\",\"formId\":104,\"renderKey\":1590388040940,\"defaultValue\":0},\"placeholder\":\"排序\",\"step\":1,\"step-strictly\":false,\"controls-position\":\"\",\"disabled\":false,\"__vModel__\":\"field104\"},{\"__config__\":{\"label\":\"状态\",\"labelWidth\":null,\"showLabel\":true,\"tag\":\"el-radio-group\",\"tagIcon\":\"radio\",\"changeTag\":true,\"layout\":\"colFormItem\",\"span\":24,\"optionType\":\"default\",\"regList\":[],\"required\":true,\"border\":false,\"document\":\"https://element.eleme.cn/#/zh-CN/component/radio\",\"formId\":106,\"renderKey\":1590388076282,\"defaultValue\":\"‘0’\"},\"__slot__\":{\"options\":[{\"label\":\"显示\",\"value\":\"‘0’\"},{\"label\":\"隐藏\",\"value\":\"‘1’\"}]},\"style\":{},\"size\":\"medium\",\"disabled\":false,\"__vModel__\":\"field106\"},{\"__config__\":{\"label\":\"我是梁总\",\"tag\":\"el-checkbox-group\",\"tagIcon\":\"checkbox\",\"defaultValue\":[],\"span\":24,\"showLabel\":true,\"labelWidth\":null,\"layout\":\"colFormItem\",\"optionType\":\"default\",\"required\":true,\"regList\":[],\"changeTag\":true,\"border\":false,\"document\":\"https://element.eleme.cn/#/zh-CN/component/checkbox\",\"formId\":101,\"renderKey\":1616152329724},\"__slot__\":{\"options\":[{\"label\":\"选项一\",\"value\":1},{\"label\":\"选项二\",\"value\":2}]},\"style\":{},\"size\":\"medium\",\"disabled\":false,\"__vModel__\":\"field101\"}]}', '2020-05-25 14:28:50', '2021-03-19 19:12:19'); +INSERT INTO `eb_system_form_temp` VALUES (87, '签到', '签到', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":100,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"显示标题\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[]},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"__vModel__\":\"title\",\"placeholder\":\"请输入显示标题显示标题显示标题显示标题显示标题显示标题显示标题\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"el-icon-mobile\",\"suffix-icon\":\"\",\"maxlength\":\"3\",\"show-word-limit\":true,\"readonly\":false,\"disabled\":false},{\"__config__\":{\"label\":\"第几天\",\"showLabel\":true,\"changeTag\":true,\"labelWidth\":null,\"tag\":\"el-input-number\",\"tagIcon\":\"number\",\"span\":24,\"layout\":\"colFormItem\",\"required\":true,\"regList\":[],\"document\":\"https://element.eleme.cn/#/zh-CN/component/input-number\",\"formId\":127,\"renderKey\":1590647892129,\"defaultValue\":1},\"placeholder\":\"第几天第几天\",\"step\":1,\"step-strictly\":false,\"controls-position\":\"\",\"disabled\":false,\"__vModel__\":\"day\",\"min\":0},{\"__config__\":{\"label\":\"积分\",\"showLabel\":true,\"changeTag\":true,\"labelWidth\":null,\"tag\":\"el-input-number\",\"tagIcon\":\"number\",\"span\":24,\"layout\":\"colFormItem\",\"required\":true,\"regList\":[],\"document\":\"https://element.eleme.cn/#/zh-CN/component/input-number\",\"formId\":129,\"renderKey\":1590649451776,\"defaultValue\":1},\"placeholder\":\"积分值\",\"step\":1,\"step-strictly\":false,\"controls-position\":\"\",\"disabled\":false,\"__vModel__\":\"integral\",\"min\":1},{\"__config__\":{\"label\":\"经验\",\"showLabel\":true,\"changeTag\":true,\"labelWidth\":null,\"tag\":\"el-input-number\",\"tagIcon\":\"number\",\"span\":24,\"layout\":\"colFormItem\",\"required\":true,\"regList\":[],\"document\":\"https://element.eleme.cn/#/zh-CN/component/input-number\",\"formId\":128,\"renderKey\":1590649448797,\"defaultValue\":1},\"placeholder\":\"经验值\",\"step\":1,\"step-strictly\":false,\"controls-position\":\"\",\"disabled\":false,\"__vModel__\":\"experience\"}]}', '2020-05-28 14:33:02', '2021-07-08 19:28:56'); +INSERT INTO `eb_system_form_temp` VALUES (89, '个人中心菜单', '个人中心菜单', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":100,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"菜单名\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[]},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"__vModel__\":\"name\",\"placeholder\":\"请输入菜单名菜单名菜单名菜单名菜单名\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":11,\"show-word-limit\":true,\"readonly\":false,\"disabled\":false},{\"__config__\":{\"label\":\"图标(48*48)\",\"tag\":\"self-upload\",\"tagIcon\":\"selfUpload\",\"layout\":\"colFormItem\",\"defaultValue\":null,\"showLabel\":true,\"labelWidth\":null,\"required\":true,\"span\":24,\"showTip\":false,\"buttonText\":\"点击上传\",\"regList\":[],\"changeTag\":true,\"fileSize\":2,\"sizeUnit\":\"MB\",\"document\":\"https://element.eleme.cn/#/zh-CN/component/upload\",\"formId\":105,\"renderKey\":1596072707659},\"__slot__\":{\"list-type\":true},\"action\":\"https://jsonplaceholder.typicode.com/posts/\",\"disabled\":true,\"accept\":\"\",\"name\":\"file\",\"auto-upload\":true,\"list-type\":\"text\",\"multiple\":false,\"__vModel__\":\"pic\"},{\"__config__\":{\"label\":\"小程序链接\",\"showLabel\":true,\"labelWidth\":null,\"tag\":\"el-select\",\"tagIcon\":\"select\",\"layout\":\"colFormItem\",\"span\":24,\"required\":true,\"regList\":[],\"changeTag\":true,\"document\":\"https://element.eleme.cn/#/zh-CN/component/select\",\"formId\":142,\"renderKey\":1591060899296},\"__slot__\":{\"options\":[{\"label\":\"地址管理\",\"value\":\"/pages/users/user_address_list/index\"},{\"label\":\"会员中心\",\"value\":\"/pages/users/user_vip/index\"},{\"label\":\"砍价记录\",\"value\":\"/pages/activity/bargain/index\"},{\"label\":\"推广中心\",\"value\":\"/pages/users/user_spread_user/index\"},{\"label\":\"我的余额\",\"value\":\"/pages/users/user_money/index\"},{\"label\":\"我的收藏\",\"value\":\"/pages/users/user_goods_collection/index\"},{\"label\":\"优惠券\",\"value\":\"/pages/users/user_coupon/index\"},{\"label\":\"后台订单管理\",\"value\":\"/pages/admin/order/index\"},{\"label\":\"联系客服\",\"value\":\"/pages/service/index\"},{\"label\":\"订单核销\",\"value\":\"/pages/admin/order_cancellation/index\"}]},\"placeholder\":\"请选择小程序跳转链接\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"disabled\":false,\"filterable\":true,\"multiple\":false,\"__vModel__\":\"url\"},{\"__config__\":{\"label\":\"公众号链接\",\"showLabel\":true,\"labelWidth\":null,\"tag\":\"el-select\",\"tagIcon\":\"select\",\"layout\":\"colFormItem\",\"span\":24,\"required\":true,\"regList\":[],\"changeTag\":true,\"document\":\"https://element.eleme.cn/#/zh-CN/component/select\",\"formId\":140,\"renderKey\":1591064071606},\"__slot__\":{\"options\":[{\"label\":\"地址管理\",\"value\":\"/pages/users/user_address_list/index\"},{\"label\":\"会员中心\",\"value\":\"/pages/users/user_vip/index\"},{\"label\":\"砍价记录\",\"value\":\"/pages/activity/bargain/index\"},{\"label\":\"推广中心\",\"value\":\"/pages/users/user_spread_user/index\"},{\"label\":\"我的余额\",\"value\":\"/pages/users/user_money/index\"},{\"label\":\"我的收藏\",\"value\":\"/pages/users/user_goods_collection/index\"},{\"label\":\"优惠券\",\"value\":\"/pages/users/user_coupon/index\"},{\"label\":\"后台订单管理\",\"value\":\"/pages/admin/order/index\"},{\"label\":\"联系客服\",\"value\":\"https://yzf.qq.com/xv/web/static/chat/index.html?sign=37ef9b97db2656c32340cde61ce2b56a2176efe72ac7ed421c77607b5c816611ec4775a17c7605b33df1ffe1d22a4ce7464dd07b\"},{\"label\":\"订单核销\",\"value\":\"/pages/admin/order_cancellation/index\"}]},\"placeholder\":\"请选择跳转链接公众号链接公众号链接\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"disabled\":false,\"filterable\":true,\"multiple\":false,\"__vModel__\":\"wap_url\"}]}', '2020-06-02 09:24:19', '2020-09-09 15:55:20'); +INSERT INTO `eb_system_form_temp` VALUES (90, '个人中心轮播图', '个人中心轮播图', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":120,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"图片(690x138)\",\"tag\":\"self-upload\",\"tagIcon\":\"selfUpload\",\"layout\":\"colFormItem\",\"defaultValue\":null,\"showLabel\":true,\"labelWidth\":null,\"required\":true,\"span\":24,\"showTip\":false,\"buttonText\":\"点击上传\",\"regList\":[],\"changeTag\":true,\"fileSize\":2,\"sizeUnit\":\"MB\",\"document\":\"https://element.eleme.cn/#/zh-CN/component/upload\",\"formId\":102,\"renderKey\":1597289113769,\"tips\":false},\"__slot__\":{\"list-type\":true},\"action\":\"https://jsonplaceholder.typicode.com/posts/\",\"disabled\":true,\"accept\":\"\",\"name\":\"file\",\"auto-upload\":true,\"list-type\":\"text\",\"multiple\":false,\"__vModel__\":\"pic\"},{\"__config__\":{\"label\":\"跳转链接\",\"labelWidth\":120,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":140,\"renderKey\":1591064520353,\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入跳转跳转链接跳转链接\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"url\"}]}', '2020-06-02 10:24:06', '2021-12-22 16:18:44'); +INSERT INTO `eb_system_form_temp` VALUES (91, '首页精品推荐benner图', '首页精品推荐benner图', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":100,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"标题\",\"labelWidth\":130,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"__vModel__\":\"name\",\"placeholder\":\"请输入标题标题标题标题标题\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":\"\",\"show-word-limit\":true,\"readonly\":false,\"disabled\":false},{\"__config__\":{\"label\":\"跳转链接\",\"labelWidth\":130,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":101,\"renderKey\":1591065625767,\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"__vModel__\":\"url\",\"placeholder\":\"请输入跳转链接\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":\"\",\"show-word-limit\":true,\"readonly\":false,\"disabled\":false},{\"__config__\":{\"label\":\"图片(720x320)\",\"tag\":\"self-upload\",\"tagIcon\":\"selfUpload\",\"layout\":\"colFormItem\",\"defaultValue\":\"\",\"showLabel\":true,\"labelWidth\":130,\"required\":true,\"span\":24,\"showTip\":false,\"buttonText\":\"点击上传\",\"regList\":[],\"changeTag\":true,\"fileSize\":2,\"sizeUnit\":\"MB\",\"document\":\"https://element.eleme.cn/#/zh-CN/component/upload\",\"formId\":101,\"renderKey\":1597286116626,\"tips\":false,\"tipsDesc\":\"\"},\"__slot__\":{\"list-type\":true},\"action\":\"https://jsonplaceholder.typicode.com/posts/\",\"disabled\":true,\"accept\":\"\",\"name\":\"file\",\"auto-upload\":true,\"list-type\":\"text\",\"multiple\":false,\"__vModel__\":\"pic\"}]}', '2020-06-02 10:41:29', '2021-12-22 16:09:40'); +INSERT INTO `eb_system_form_temp` VALUES (92, '首发新品推荐Banner图片', '首发新品推荐Banner图片', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":100,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"标题\",\"labelWidth\":120,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"__vModel__\":\"name\",\"placeholder\":\"请输入标题标题标题\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":\"\",\"show-word-limit\":true,\"readonly\":false,\"disabled\":false},{\"__config__\":{\"label\":\"跳转链接\",\"labelWidth\":120,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":101,\"renderKey\":1591065625767,\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"__vModel__\":\"url\",\"placeholder\":\"请输入跳转链接\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":\"\",\"show-word-limit\":true,\"readonly\":false,\"disabled\":false},{\"__config__\":{\"label\":\"图片(720x320)\",\"tag\":\"self-upload\",\"tagIcon\":\"selfUpload\",\"layout\":\"colFormItem\",\"defaultValue\":null,\"showLabel\":true,\"labelWidth\":120,\"required\":false,\"span\":24,\"showTip\":false,\"buttonText\":\"\",\"regList\":[],\"changeTag\":true,\"document\":\"https://element.eleme.cn/#/zh-CN/component/upload\",\"formId\":102,\"renderKey\":1613962570936,\"tips\":false},\"__slot__\":{\"list-type\":true},\"disabled\":true,\"accept\":\"image\",\"name\":\"file\",\"multiple\":false,\"__vModel__\":\"pic\"}]}', '2020-06-02 10:41:29', '2021-12-22 16:11:54'); +INSERT INTO `eb_system_form_temp` VALUES (93, '首页促销单品推荐Banner图片', '首页促销单品推荐Banner图片', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":100,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"标题\",\"labelWidth\":130,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[]},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"__vModel__\":\"name\",\"placeholder\":\"请输入标题标题\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":\"\",\"show-word-limit\":true,\"readonly\":false,\"disabled\":false},{\"__config__\":{\"label\":\"跳转链接\",\"labelWidth\":130,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":101,\"renderKey\":1591065625767},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"__vModel__\":\"url\",\"placeholder\":\"请输入跳转链接跳转链接\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":\"\",\"show-word-limit\":true,\"readonly\":false,\"disabled\":false},{\"__config__\":{\"label\":\"图片(710*280)\",\"tag\":\"self-upload\",\"tagIcon\":\"selfUpload\",\"layout\":\"colFormItem\",\"defaultValue\":null,\"showLabel\":true,\"labelWidth\":130,\"required\":true,\"span\":24,\"showTip\":false,\"buttonText\":\"点击上传\",\"regList\":[],\"changeTag\":true,\"fileSize\":2,\"sizeUnit\":\"MB\",\"document\":\"https://element.eleme.cn/#/zh-CN/component/upload\",\"formId\":101,\"renderKey\":1597286206728},\"__slot__\":{\"list-type\":true},\"action\":\"https://jsonplaceholder.typicode.com/posts/\",\"disabled\":true,\"accept\":\"\",\"name\":\"file\",\"auto-upload\":true,\"list-type\":\"text\",\"multiple\":false,\"__vModel__\":\"pic\"}]}', '2020-06-02 10:41:29', '2020-08-13 10:37:37'); +INSERT INTO `eb_system_form_temp` VALUES (94, '热门榜单推荐Banner图片', '热门榜单推荐Banner图片', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":120,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"标题\",\"labelWidth\":120,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"__vModel__\":\"name\",\"placeholder\":\"请输入标题标题标题\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":\"\",\"show-word-limit\":true,\"readonly\":false,\"disabled\":false},{\"__config__\":{\"label\":\"跳转链接\",\"labelWidth\":120,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":101,\"renderKey\":1591065625767,\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"__vModel__\":\"url\",\"placeholder\":\"请输入跳转链接\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":\"\",\"show-word-limit\":true,\"readonly\":false,\"disabled\":false},{\"__config__\":{\"label\":\"图片(720x320)\",\"tag\":\"self-upload\",\"tagIcon\":\"selfUpload\",\"layout\":\"colFormItem\",\"defaultValue\":null,\"showLabel\":true,\"labelWidth\":null,\"required\":true,\"span\":24,\"showTip\":false,\"buttonText\":\"\",\"regList\":[],\"changeTag\":true,\"document\":\"https://element.eleme.cn/#/zh-CN/component/upload\",\"formId\":102,\"renderKey\":1614154650561,\"tips\":false},\"__slot__\":{\"list-type\":true},\"disabled\":true,\"accept\":\"image\",\"name\":\"file\",\"multiple\":false,\"__vModel__\":\"pic\"}]}', '2020-06-02 10:41:29', '2021-12-22 16:11:03'); +INSERT INTO `eb_system_form_temp` VALUES (95, '首页banner滚动图', '首页banner滚动图', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":100,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"标题\",\"labelWidth\":130,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"__vModel__\":\"name\",\"placeholder\":\"请输入标题标题标题标题\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":\"\",\"show-word-limit\":true,\"readonly\":false,\"disabled\":false},{\"__config__\":{\"label\":\"跳转链接\",\"labelWidth\":130,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":101,\"renderKey\":1591065625767,\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"__vModel__\":\"url\",\"placeholder\":\"请输入跳转链接\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":\"\",\"show-word-limit\":true,\"readonly\":false,\"disabled\":false},{\"__config__\":{\"label\":\"图片(750 x 375)\",\"tag\":\"self-upload\",\"tagIcon\":\"selfUpload\",\"layout\":\"colFormItem\",\"defaultValue\":null,\"showLabel\":true,\"labelWidth\":130,\"required\":true,\"span\":24,\"showTip\":false,\"buttonText\":\"点击上传\",\"regList\":[],\"changeTag\":true,\"fileSize\":2,\"sizeUnit\":\"MB\",\"document\":\"https://element.eleme.cn/#/zh-CN/component/upload\",\"formId\":102,\"renderKey\":1597286491734,\"tips\":false,\"tipsDesc\":\"\"},\"__slot__\":{\"list-type\":true},\"action\":\"https://jsonplaceholder.typicode.com/posts/\",\"disabled\":true,\"accept\":\"\",\"name\":\"file\",\"auto-upload\":true,\"list-type\":\"text\",\"multiple\":false,\"__vModel__\":\"pic\"}]}', '2020-06-02 10:41:29', '2021-12-22 16:06:49'); +INSERT INTO `eb_system_form_temp` VALUES (96, '导航模块', '导航模块', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":120,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"标题\",\"labelWidth\":120,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"__vModel__\":\"name\",\"placeholder\":\"请输入标题标题标题标题标题标题\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":\"\",\"show-word-limit\":true,\"readonly\":false,\"disabled\":false},{\"__config__\":{\"label\":\"图片(90x90)\",\"tag\":\"self-upload\",\"tagIcon\":\"selfUpload\",\"layout\":\"colFormItem\",\"defaultValue\":null,\"showLabel\":true,\"labelWidth\":null,\"required\":true,\"span\":24,\"showTip\":false,\"buttonText\":\"点击上传\",\"regList\":[],\"changeTag\":true,\"fileSize\":2,\"sizeUnit\":\"MB\",\"document\":\"https://element.eleme.cn/#/zh-CN/component/upload\",\"formId\":101,\"renderKey\":1597287354047,\"tips\":false},\"__slot__\":{\"list-type\":true},\"action\":\"https://jsonplaceholder.typicode.com/posts/\",\"disabled\":true,\"accept\":\"\",\"name\":\"file\",\"auto-upload\":true,\"list-type\":\"text\",\"multiple\":false,\"__vModel__\":\"pic\"},{\"__config__\":{\"label\":\"跳转链接\",\"showLabel\":true,\"labelWidth\":null,\"tag\":\"el-select\",\"tagIcon\":\"select\",\"layout\":\"colFormItem\",\"span\":24,\"required\":true,\"regList\":[],\"changeTag\":true,\"document\":\"https://element.eleme.cn/#/zh-CN/component/select\",\"formId\":102,\"renderKey\":1591080591082,\"tips\":false},\"__slot__\":{\"options\":[{\"label\":\"商城首页\",\"value\":\"/pages/index/index\"},{\"label\":\"个人推广\",\"value\":\"/pages/user_spread_user/index\"},{\"label\":\"优惠券\",\"value\":\"/pages/users/user_get_coupon/index\"},{\"label\":\"个人中心\",\"value\":\"/pages/user/user\"},{\"label\":\"秒杀列表\",\"value\":\"/pages/activity/goods_seckill/index\"},{\"label\":\"拼团列表页\",\"value\":\"/pages/activity/goods_combination/index\"},{\"label\":\"砍价列表\",\"value\":\"/pages/activity/goods_bargain/index\"},{\"label\":\"分类页面\",\"value\":\"/pages/goods_cate/goods_cate\"},{\"label\":\"地址列表\",\"value\":\"/pages/users/user_address_list/index\"},{\"label\":\"提现页面\",\"value\":\"/pages/user_cash/index\"},{\"label\":\"推广统计\",\"value\":\"/pages/promoter-list/index\"},{\"label\":\"账户金额\",\"value\":\"/pages/users/user_goods_collection/index\"},{\"label\":\"推广二维码页面\",\"value\":\"/pages/promotion-card/promotion-card\"},{\"label\":\"购物车页面\",\"value\":\"/pages/order_addcart/order_addcart\"},{\"label\":\"订单列表页面\",\"value\":\"/pages/users/order_list/index\"},{\"label\":\"文章列表页\",\"value\":\"/pages/news_list/index\"},{\"label\":\"我要签到\",\"value\":\"/pages/users/user_sgin/index\"},{\"label\":\"我的收藏\",\"value\":\"/pages/users/user_goods_collection/index\"}]},\"placeholder\":\"请选择跳转链接\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"disabled\":false,\"filterable\":true,\"multiple\":false,\"__vModel__\":\"url\"},{\"__config__\":{\"label\":\"底部菜单\",\"labelWidth\":null,\"showLabel\":true,\"tag\":\"el-radio-group\",\"tagIcon\":\"radio\",\"changeTag\":true,\"layout\":\"colFormItem\",\"span\":24,\"optionType\":\"default\",\"regList\":[],\"required\":true,\"border\":false,\"document\":\"https://element.eleme.cn/#/zh-CN/component/radio\",\"formId\":103,\"renderKey\":1591080806108,\"defaultValue\":1,\"tips\":false},\"__slot__\":{\"options\":[{\"label\":\"是\",\"value\":1},{\"label\":\"否\",\"value\":2}]},\"style\":{},\"size\":\"medium\",\"disabled\":false,\"__vModel__\":\"show\"}]}', '2020-06-02 10:41:29', '2021-12-22 16:20:21'); +INSERT INTO `eb_system_form_temp` VALUES (97, '首页滚动新闻', '首页滚动新闻', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":100,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"滚动文字\",\"labelWidth\":120,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[]},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"__vModel__\":\"info\",\"placeholder\":\"请输入滚动文字滚动文字\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":\"\",\"show-word-limit\":true,\"readonly\":false,\"disabled\":false},{\"__config__\":{\"label\":\"跳转链接\",\"showLabel\":true,\"labelWidth\":120,\"tag\":\"el-select\",\"tagIcon\":\"select\",\"layout\":\"colFormItem\",\"span\":24,\"required\":true,\"regList\":[],\"changeTag\":true,\"document\":\"https://element.eleme.cn/#/zh-CN/component/select\",\"formId\":102,\"renderKey\":1591080591082},\"__slot__\":{\"options\":[{\"label\":\"商城首页\",\"value\":\"/pages/index/index\"},{\"label\":\"个人推广\",\"value\":\"/pages/user_spread_user/index\"},{\"label\":\"优惠券\",\"value\":\"/pages/users/user_get_coupon/index\"},{\"label\":\"个人中心\",\"value\":\"/pages/user/user\"},{\"label\":\"秒杀列表\",\"value\":\"/pages/activity/goods_seckill/index\"},{\"label\":\"拼团列表页\",\"value\":\"/pages/activity/goods_combination/index\"},{\"label\":\"砍价列表\",\"value\":\"/pages/activity/goods_bargain/index\"},{\"label\":\"分类页面\",\"value\":\"/pages/goods_cate/goods_cate\"},{\"label\":\"地址列表\",\"value\":\"/pages/users/user_address_list/index\"},{\"label\":\"提现页面\",\"value\":\"/pages/user_cash/index\"},{\"label\":\"推广统计\",\"value\":\"/pages/promoter-list/index\"},{\"label\":\"账户金额\",\"value\":\"/pages/users/user_goods_collection/index\"},{\"label\":\"推广二维码页面\",\"value\":\"/pages/promotion-card/promotion-card\"},{\"label\":\"购物车页面\",\"value\":\"/pages/order_addcart/order_addcart\"},{\"label\":\"订单列表页面\",\"value\":\"/pages/users/order_list/index\"},{\"label\":\"文章列表页\",\"value\":\"/pages/news_list/index\"}]},\"placeholder\":\"请选择跳转链接\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"disabled\":false,\"filterable\":true,\"multiple\":false,\"__vModel__\":\"url\"},{\"__config__\":{\"label\":\"底部菜单\",\"labelWidth\":120,\"showLabel\":true,\"tag\":\"el-radio-group\",\"tagIcon\":\"radio\",\"changeTag\":true,\"layout\":\"colFormItem\",\"span\":24,\"optionType\":\"default\",\"regList\":[],\"required\":true,\"border\":false,\"document\":\"https://element.eleme.cn/#/zh-CN/component/radio\",\"formId\":103,\"renderKey\":1591080806108,\"defaultValue\":1},\"__slot__\":{\"options\":[{\"label\":\"是\",\"value\":1},{\"label\":\"否\",\"value\":2}]},\"style\":{},\"size\":\"medium\",\"disabled\":false,\"__vModel__\":\"show\"}]}', '2020-06-02 10:41:29', '2020-08-13 10:35:02'); +INSERT INTO `eb_system_form_temp` VALUES (98, '首页活动区域图片', '首页活动区域图片', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":100,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"图片(710*280)\",\"tag\":\"self-upload\",\"tagIcon\":\"selfUpload\",\"layout\":\"colFormItem\",\"defaultValue\":null,\"showLabel\":true,\"labelWidth\":130,\"required\":true,\"span\":24,\"showTip\":false,\"buttonText\":\"点击上传\",\"regList\":[],\"changeTag\":true,\"fileSize\":2,\"sizeUnit\":\"MB\",\"document\":\"https://element.eleme.cn/#/zh-CN/component/upload\",\"formId\":102,\"renderKey\":1597286612904},\"__slot__\":{\"list-type\":true},\"action\":\"https://jsonplaceholder.typicode.com/posts/\",\"disabled\":true,\"accept\":\"\",\"name\":\"file\",\"auto-upload\":true,\"list-type\":\"text\",\"multiple\":false,\"__vModel__\":\"image\"},{\"__config__\":{\"label\":\"标题\",\"labelWidth\":130,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[]},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"__vModel__\":\"title\",\"placeholder\":\"请输入标题标题标题\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":\"\",\"show-word-limit\":true,\"readonly\":false,\"disabled\":false},{\"__config__\":{\"label\":\"简介\",\"labelWidth\":130,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":101,\"renderKey\":1591081196107},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"__vModel__\":\"info\",\"placeholder\":\"请输入简介\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":\"\",\"show-word-limit\":true,\"readonly\":false,\"disabled\":false},{\"__config__\":{\"label\":\"跳转链接\",\"showLabel\":true,\"labelWidth\":130,\"tag\":\"el-select\",\"tagIcon\":\"select\",\"layout\":\"colFormItem\",\"span\":24,\"required\":true,\"regList\":[],\"changeTag\":true,\"document\":\"https://element.eleme.cn/#/zh-CN/component/select\",\"formId\":102,\"renderKey\":1591080591082},\"__slot__\":{\"options\":[{\"label\":\"秒杀列表\",\"value\":\"/pages/activity/goods_seckill/index\"},{\"label\":\"拼团列表页\",\"value\":\"/pages/activity/goods_combination/index\"},{\"label\":\"砍价列表\",\"value\":\"/pages/activity/goods_bargain/index\"}]},\"placeholder\":\"请选择跳转链接\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"disabled\":false,\"filterable\":true,\"multiple\":false,\"__vModel__\":\"link\"}]}', '2020-06-02 10:41:29', '2020-08-13 10:44:02'); +INSERT INTO `eb_system_form_temp` VALUES (99, '首页超值爆款', '首页超值爆款', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":100,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"图片(710*280)\",\"tag\":\"self-upload\",\"tagIcon\":\"selfUpload\",\"layout\":\"colFormItem\",\"defaultValue\":null,\"showLabel\":true,\"labelWidth\":130,\"required\":true,\"span\":24,\"showTip\":false,\"buttonText\":\"点击上传\",\"regList\":[],\"changeTag\":true,\"fileSize\":2,\"sizeUnit\":\"MB\",\"document\":\"https://element.eleme.cn/#/zh-CN/component/upload\",\"formId\":101,\"renderKey\":1597286019454,\"tips\":false},\"__slot__\":{\"list-type\":true},\"action\":\"https://jsonplaceholder.typicode.com/posts/\",\"disabled\":true,\"accept\":\"\",\"name\":\"file\",\"auto-upload\":true,\"list-type\":\"text\",\"multiple\":false,\"__vModel__\":\"pic\"},{\"__config__\":{\"label\":\"标题\",\"labelWidth\":130,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"__vModel__\":\"name\",\"placeholder\":\"请输入标题标题标题\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":\"\",\"show-word-limit\":true,\"readonly\":false,\"disabled\":false},{\"__config__\":{\"label\":\"简介\",\"labelWidth\":130,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":101,\"renderKey\":1591081196107,\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"__vModel__\":\"info\",\"placeholder\":\"请输入简介简介\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":\"\",\"show-word-limit\":true,\"readonly\":false,\"disabled\":false},{\"__config__\":{\"label\":\"类型\",\"showLabel\":true,\"labelWidth\":130,\"tag\":\"el-select\",\"tagIcon\":\"select\",\"layout\":\"colFormItem\",\"span\":24,\"required\":true,\"regList\":[],\"changeTag\":true,\"document\":\"https://element.eleme.cn/#/zh-CN/component/select\",\"formId\":102,\"renderKey\":1591080591082,\"tips\":false},\"__slot__\":{\"options\":[{\"label\":\"精品推荐\",\"value\":1},{\"label\":\"热门榜单\",\"value\":2},{\"label\":\"首发新品\",\"value\":3},{\"label\":\"促销单品\",\"value\":4}]},\"placeholder\":\"请选择类型\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"disabled\":false,\"filterable\":true,\"multiple\":false,\"__vModel__\":\"type\"}]}', '2020-06-02 10:41:29', '2021-12-23 16:00:42'); +INSERT INTO `eb_system_form_temp` VALUES (100, '首页文字配置', '首页文字配置', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":100,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"快速选择简介\",\"labelWidth\":120,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[]},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"__vModel__\":\"fast_info\",\"placeholder\":\"请输入快速选择简介\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":\"\",\"show-word-limit\":true,\"readonly\":false,\"disabled\":false},{\"__config__\":{\"label\":\"精品推荐简介\",\"labelWidth\":120,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":101,\"renderKey\":1591081579041},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"__vModel__\":\"bast_info\",\"placeholder\":\"请输入精品推荐简介\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":\"\",\"show-word-limit\":true,\"readonly\":false,\"disabled\":false},{\"__config__\":{\"label\":\"首发新品简介\",\"labelWidth\":120,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":102,\"renderKey\":1591081598503},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"__vModel__\":\"first_info\",\"placeholder\":\"请输入首发新品简介\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":\"\",\"show-word-limit\":true,\"readonly\":false,\"disabled\":false},{\"__config__\":{\"label\":\"促销单品简介\",\"labelWidth\":120,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":103,\"renderKey\":1591081599048},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"__vModel__\":\"sales_info\",\"placeholder\":\"请输入促销单品简介\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":\"\",\"show-word-limit\":true,\"readonly\":false,\"disabled\":false}]}', '2020-06-02 15:07:11', '2020-06-02 15:07:11'); +INSERT INTO `eb_system_form_temp` VALUES (101, '首页精品推荐benner图', '首页精品推荐benner图', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":100,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"图片\",\"tag\":\"self-upload\",\"tagIcon\":\"selfUpload\",\"layout\":\"colFormItem\",\"defaultValue\":null,\"showLabel\":true,\"labelWidth\":null,\"required\":true,\"span\":24,\"showTip\":false,\"buttonText\":\"点击上传\",\"regList\":[],\"changeTag\":true,\"fileSize\":2,\"sizeUnit\":\"MB\",\"document\":\"https://element.eleme.cn/#/zh-CN/component/upload\",\"formId\":101,\"renderKey\":1597285983911},\"__slot__\":{\"list-type\":true},\"action\":\"https://jsonplaceholder.typicode.com/posts/\",\"disabled\":true,\"accept\":\"\",\"name\":\"file\",\"auto-upload\":true,\"list-type\":\"text\",\"multiple\":false,\"__vModel__\":\"img\"},{\"__config__\":{\"label\":\"描述\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":102,\"renderKey\":1591083877308},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入描述\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"comment\"},{\"__config__\":{\"label\":\"跳转链接\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":103,\"renderKey\":1591083894228},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入跳转链接\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"link\"}]}', '2020-06-02 15:45:01', '2020-08-13 10:33:18'); +INSERT INTO `eb_system_form_temp` VALUES (102, '热门搜索', '热门搜索', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":100,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"标签\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[]},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"__vModel__\":\"title\",\"placeholder\":\"请输入标签\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":11,\"show-word-limit\":true,\"readonly\":false,\"disabled\":false}]}', '2020-06-03 11:34:29', '2020-06-03 11:34:29'); +INSERT INTO `eb_system_form_temp` VALUES (103, '充值金额设置', '设置充值金额额度选择', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":100,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"售价\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":104,\"renderKey\":1591773075965},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入售价\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"price\"},{\"__config__\":{\"label\":\"赠送\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":103,\"renderKey\":1591773074670},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入赠送\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"give_money\"}]}', '2020-06-10 15:12:15', '2020-06-10 15:12:15'); +INSERT INTO `eb_system_form_temp` VALUES (104, '修改订单', '修改订单', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":100,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"订单编号\",\"labelWidth\":130,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[]},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"订单编号订单编号订单编号订单编号订单编号订单编号\",\"style\":{\"width\":\"50%\"},\"clearable\":false,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":true,\"disabled\":false,\"__vModel__\":\"orderId\"},{\"__config__\":{\"label\":\"商品总价\",\"showLabel\":true,\"changeTag\":true,\"labelWidth\":130,\"tag\":\"el-input-number\",\"tagIcon\":\"number\",\"span\":24,\"layout\":\"colFormItem\",\"required\":true,\"regList\":[],\"document\":\"https://element.eleme.cn/#/zh-CN/component/input-number\",\"formId\":108,\"renderKey\":1592186382632,\"defaultValue\":0},\"placeholder\":\"商品总价\",\"step\":1,\"step-strictly\":false,\"controls-position\":\"\",\"disabled\":true,\"__vModel__\":\"totalPrice\",\"min\":0},{\"__config__\":{\"label\":\"原始邮费\",\"showLabel\":true,\"changeTag\":true,\"labelWidth\":130,\"tag\":\"el-input-number\",\"tagIcon\":\"number\",\"span\":24,\"layout\":\"colFormItem\",\"required\":true,\"regList\":[],\"document\":\"https://element.eleme.cn/#/zh-CN/component/input-number\",\"formId\":104,\"renderKey\":1592186354404,\"defaultValue\":0},\"placeholder\":\"原始邮费\",\"step\":1,\"step-strictly\":false,\"controls-position\":\"\",\"disabled\":true,\"__vModel__\":\"totalPostage\",\"min\":0},{\"__config__\":{\"label\":\"实际支付金额\",\"showLabel\":true,\"changeTag\":true,\"labelWidth\":130,\"tag\":\"el-input-number\",\"tagIcon\":\"number\",\"span\":24,\"layout\":\"colFormItem\",\"required\":true,\"regList\":[],\"document\":\"https://element.eleme.cn/#/zh-CN/component/input-number\",\"formId\":106,\"renderKey\":1592186379453,\"defaultValue\":0},\"placeholder\":\"实际支付金额\",\"step\":1,\"step-strictly\":false,\"controls-position\":\"\",\"disabled\":false,\"__vModel__\":\"payPrice\",\"min\":0},{\"__config__\":{\"label\":\"实际支付邮费\",\"showLabel\":true,\"changeTag\":true,\"labelWidth\":130,\"tag\":\"el-input-number\",\"tagIcon\":\"number\",\"span\":24,\"layout\":\"colFormItem\",\"required\":true,\"regList\":[],\"document\":\"https://element.eleme.cn/#/zh-CN/component/input-number\",\"formId\":107,\"renderKey\":1592186381287,\"defaultValue\":0},\"placeholder\":\"实际支付邮费\",\"step\":1,\"step-strictly\":false,\"controls-position\":\"\",\"disabled\":true,\"__vModel__\":\"payPostage\",\"min\":0}]}', '2020-06-15 10:11:19', '2021-03-24 11:07:33'); +INSERT INTO `eb_system_form_temp` VALUES (105, '模板消息', '模板消息', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":100,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"模板编号\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[]},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"__vModel__\":\"tempKey\",\"placeholder\":\"请输入模板编号\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":\"\",\"show-word-limit\":true,\"readonly\":false,\"disabled\":false},{\"__config__\":{\"label\":\"模板ID\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":106,\"renderKey\":1592281492122},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入模板ID\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"tempId\"},{\"__config__\":{\"label\":\"模板名\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":105,\"renderKey\":1592281490129},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入模板名\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"name\"},{\"__config__\":{\"label\":\"回复内容\",\"labelWidth\":null,\"showLabel\":true,\"tag\":\"el-input\",\"tagIcon\":\"textarea\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"regList\":[],\"changeTag\":true,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"formId\":104,\"renderKey\":1592281487212},\"type\":\"textarea\",\"placeholder\":\"请输入回复内容\",\"autosize\":{\"minRows\":4,\"maxRows\":4},\"style\":{\"width\":\"100%\"},\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"content\"},{\"__config__\":{\"label\":\"状态\",\"labelWidth\":null,\"showLabel\":true,\"tag\":\"el-radio-group\",\"tagIcon\":\"radio\",\"changeTag\":true,\"layout\":\"colFormItem\",\"span\":24,\"optionType\":\"default\",\"regList\":[],\"required\":true,\"border\":false,\"document\":\"https://element.eleme.cn/#/zh-CN/component/radio\",\"formId\":109,\"renderKey\":1592289933100,\"defaultValue\":0},\"__slot__\":{\"options\":[{\"label\":\"开启\",\"value\":1},{\"label\":\"关闭\",\"value\":0}]},\"style\":{},\"size\":\"medium\",\"disabled\":false,\"__vModel__\":\"status\"}]}', '2020-06-16 12:28:38', '2020-12-04 16:49:38'); +INSERT INTO `eb_system_form_temp` VALUES (106, '拒绝退款', '拒绝退款', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":100,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"拒绝退款单号\",\"labelWidth\":120,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[]},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"__vModel__\":\"orderId\",\"placeholder\":\"请输入拒绝退款单号拒绝退款单号\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":\"\",\"show-word-limit\":true,\"readonly\":true,\"disabled\":false},{\"__config__\":{\"label\":\"不退款原因\",\"labelWidth\":120,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"textarea\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":112,\"renderKey\":1592451273684},\"type\":\"textarea\",\"placeholder\":\"请输入不退款原因\",\"autosize\":{\"minRows\":4,\"maxRows\":4},\"style\":{\"width\":\"100%\"},\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"reason\"}]}', '2020-06-18 11:36:28', '2020-06-18 11:45:56'); +INSERT INTO `eb_system_form_temp` VALUES (107, '立即退款', '立即退款', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":100,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"退款单号\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[]},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"__vModel__\":\"orderId\",\"placeholder\":\"请输入退款单号退款单号退款单号退款单号\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":\"\",\"show-word-limit\":true,\"readonly\":true,\"disabled\":false},{\"__config__\":{\"label\":\"退款金额\",\"showLabel\":true,\"changeTag\":true,\"labelWidth\":null,\"tag\":\"el-input-number\",\"tagIcon\":\"number\",\"span\":24,\"layout\":\"colFormItem\",\"required\":true,\"regList\":[],\"document\":\"https://element.eleme.cn/#/zh-CN/component/input-number\",\"formId\":110,\"renderKey\":1592452495718},\"placeholder\":\"退款金额\",\"step\":1,\"step-strictly\":false,\"controls-position\":\"\",\"disabled\":false,\"__vModel__\":\"amount\",\"min\":0}]}', '2020-06-18 11:57:03', '2021-01-06 14:43:22'); +INSERT INTO `eb_system_form_temp` VALUES (108, '文件上传-基础配置', '文件上传-本地配置', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":100,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"本地图片域名\",\"labelWidth\":270,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":101,\"renderKey\":1592476026393,\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入本地图片域名\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"localUploadUrl\"},{\"__config__\":{\"label\":\"允许上传图片后缀\",\"labelWidth\":270,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":103,\"renderKey\":1598344152903,\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"允许上传图片后缀,多个英文逗号分割允许上传图片后缀\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"image_ext_str\"},{\"__config__\":{\"label\":\"允许上传最大图片(单位 M,最大值50 )\",\"labelWidth\":270,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input-number\",\"tagIcon\":\"number\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input-number\",\"regList\":[],\"formId\":104,\"renderKey\":1598344206314,\"tips\":false},\"placeholder\":\"单位 M允许上传最大图片(单位 M,最大值50 )\",\"step\":1,\"step-strictly\":false,\"controls-position\":\"\",\"disabled\":false,\"__vModel__\":\"image_max_size\",\"min\":1,\"max\":50},{\"__config__\":{\"label\":\"允许上传文件后缀\",\"labelWidth\":270,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":106,\"renderKey\":1598344273484,\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\",多个英文逗号分割\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"file_ext_str\"},{\"__config__\":{\"label\":\"允许上传最大文件(单位 M,最大值500 )\",\"labelWidth\":270,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input-number\",\"tagIcon\":\"number\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input-number\",\"regList\":[],\"formId\":107,\"renderKey\":1598344275586,\"tips\":false},\"placeholder\":\"单位 M允许上传最大文件(单位 M,最大值500 )\",\"step\":1,\"step-strictly\":false,\"controls-position\":\"\",\"disabled\":false,\"__vModel__\":\"file_max_size\",\"min\":1,\"max\":500},{\"__config__\":{\"label\":\"文件存储\",\"showLabel\":true,\"labelWidth\":270,\"tag\":\"el-select\",\"tagIcon\":\"select\",\"layout\":\"colFormItem\",\"span\":24,\"required\":true,\"regList\":[],\"changeTag\":true,\"document\":\"https://element.eleme.cn/#/zh-CN/component/select\",\"formId\":102,\"renderKey\":1599545811870,\"defaultValue\":1,\"tips\":false},\"__slot__\":{\"options\":[{\"label\":\"本地\",\"value\":1},{\"label\":\"七牛云\",\"value\":2},{\"label\":\"阿里云\",\"value\":3},{\"label\":\"腾讯云\",\"value\":4}]},\"placeholder\":\"请选择文件存储文件存储\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"disabled\":false,\"filterable\":true,\"multiple\":false,\"__vModel__\":\"uploadType\"},{\"__config__\":{\"label\":\"文件是否保存本地(云存储)\",\"labelWidth\":270,\"showLabel\":true,\"tag\":\"el-radio-group\",\"tagIcon\":\"radio\",\"changeTag\":true,\"layout\":\"colFormItem\",\"span\":24,\"optionType\":\"default\",\"regList\":[],\"required\":true,\"border\":false,\"document\":\"https://element.eleme.cn/#/zh-CN/component/radio\",\"formId\":102,\"renderKey\":1629358181244,\"defaultValue\":1,\"tips\":false},\"__slot__\":{\"options\":[{\"label\":\"保存\",\"value\":1},{\"label\":\"不保存\",\"value\":0}]},\"style\":{},\"size\":\"medium\",\"disabled\":false,\"__vModel__\":\"file_is_save\"}]}', '2020-06-18 18:28:13', '2021-12-09 14:33:45'); +INSERT INTO `eb_system_form_temp` VALUES (109, '积分设置', '积分设置', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":100,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":23,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"积分抵用比例(1积分抵多少金额)\",\"labelWidth\":350,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input-number\",\"tagIcon\":\"number\",\"defaultValue\":3,\"required\":true,\"layout\":\"colFormItem\",\"span\":23,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input-number\",\"regList\":[]},\"placeholder\":\"请输入积分抵用比例积分抵用比例(1积分抵多少金额)积分抵用比例(1积分抵多少金额)积分抵用比例(1积分抵多少金额)积分抵用比例(1积分抵多少金额)积分抵用比例(1积分抵多少金额)积分抵用比例(1积分抵多少金额)积分抵用比例(1积分抵多少金额)积分抵用比例(1积分抵多少金额)\",\"step\":1,\"step-strictly\":false,\"controls-position\":\"\",\"disabled\":false,\"__vModel__\":\"integral_ratio\",\"min\":0,\"precision\":1,\"max\":99},{\"__config__\":{\"label\":\"下单赠送积分比例(实际支付1元赠送多少积分)\",\"labelWidth\":350,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input-number\",\"tagIcon\":\"number\",\"defaultValue\":1,\"required\":true,\"layout\":\"colFormItem\",\"span\":23,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input-number\",\"regList\":[],\"formId\":105,\"renderKey\":1594871750052},\"placeholder\":\"请输入下单赠送积分比例(实际支付1元赠送多少积分)\",\"step\":1,\"step-strictly\":false,\"controls-position\":\"\",\"disabled\":false,\"__vModel__\":\"order_give_integral\",\"min\":0,\"precision\":0},{\"__config__\":{\"label\":\"积分冻结时间(天)\",\"showLabel\":true,\"changeTag\":true,\"labelWidth\":350,\"tag\":\"el-input-number\",\"tagIcon\":\"number\",\"span\":23,\"layout\":\"colFormItem\",\"required\":true,\"regList\":[],\"document\":\"https://element.eleme.cn/#/zh-CN/component/input-number\",\"formId\":103,\"renderKey\":1614734147419,\"defaultValue\":0},\"placeholder\":\"积分冻结时间(天)\",\"step\":1,\"step-strictly\":false,\"controls-position\":\"\",\"disabled\":false,\"__vModel__\":\"freeze_integral_day\",\"min\":0,\"precision\":0,\"max\":99}]}', '2020-07-16 12:01:34', '2021-03-03 09:20:21'); +INSERT INTO `eb_system_form_temp` VALUES (110, '短信模板消息', '短信模板消息', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":100,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"模板名称\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":140,\"renderKey\":1595402251597},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入模板名称\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"title\"},{\"__config__\":{\"label\":\"模板内容\",\"labelWidth\":null,\"showLabel\":true,\"tag\":\"el-input\",\"tagIcon\":\"textarea\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"regList\":[],\"changeTag\":true,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"formId\":141,\"renderKey\":1595402320867,\"defaultValue\":\"您的验证码是:{$code},有效期为{$time}分钟。如非本人操作,可不用理会。模板中的{$code}和{$time}需要替换成对应的变量,请开发者知晓。修改此项无效!\"},\"type\":\"textarea\",\"placeholder\":\"请输入模板内容\",\"autosize\":{\"minRows\":4},\"style\":{\"width\":\"100%\"},\"maxlength\":null,\"show-word-limit\":true,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"content\"},{\"__config__\":{\"label\":\"模板类型\",\"labelWidth\":null,\"showLabel\":true,\"tag\":\"el-radio-group\",\"tagIcon\":\"radio\",\"changeTag\":true,\"layout\":\"colFormItem\",\"span\":24,\"optionType\":\"default\",\"regList\":[],\"required\":true,\"border\":false,\"document\":\"https://element.eleme.cn/#/zh-CN/component/radio\",\"formId\":142,\"renderKey\":1595402411016,\"defaultValue\":1},\"__slot__\":{\"options\":[{\"label\":\"验证码\",\"value\":1},{\"label\":\"通知\",\"value\":2},{\"label\":\"推广\",\"value\":3}]},\"style\":{},\"size\":\"medium\",\"disabled\":false,\"__vModel__\":\"type\"}]}', '2020-07-22 15:21:26', '2020-12-01 11:56:33'); +INSERT INTO `eb_system_form_temp` VALUES (111, '短信设置', '短信设置', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":300,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":16,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"验证码有效时间 (分钟)\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input-number\",\"tagIcon\":\"number\",\"required\":true,\"layout\":\"colFormItem\",\"span\":16,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input-number\",\"regList\":[],\"formId\":103,\"renderKey\":1598497111542,\"defaultValue\":1,\"tips\":false},\"placeholder\":\"请输入验证码有效时间 (分钟)\",\"step\":1,\"step-strictly\":true,\"controls-position\":\"\",\"disabled\":false,\"__vModel__\":\"sms_code_expire\",\"min\":1}]}', '2020-07-22 17:00:03', '2021-12-11 09:45:52'); +INSERT INTO `eb_system_form_temp` VALUES (113, '推广分享海报', '推广分享海报', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":100,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"名称\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"__vModel__\":\"title\",\"placeholder\":\"请输入名称名称名称名称\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":\"\",\"show-word-limit\":true,\"readonly\":false,\"disabled\":false},{\"__config__\":{\"label\":\"背景图(600x1000)\",\"tag\":\"self-upload\",\"tagIcon\":\"upload\",\"layout\":\"colFormItem\",\"defaultValue\":null,\"showLabel\":true,\"labelWidth\":null,\"required\":true,\"span\":24,\"showTip\":true,\"buttonText\":\"点击上传\",\"regList\":[],\"changeTag\":true,\"fileSize\":2,\"sizeUnit\":\"MB\",\"document\":\"https://element.eleme.cn/#/zh-CN/component/upload\",\"formId\":104,\"renderKey\":1596006415029,\"tips\":false,\"tipsDesc\":\"\"},\"__slot__\":{\"list-type\":true},\"action\":\"https://jsonplaceholder.typicode.com/posts/\",\"disabled\":true,\"accept\":\"\",\"name\":\"file\",\"auto-upload\":true,\"list-type\":\"text\",\"multiple\":false,\"__vModel__\":\"pic\"}]}', '2020-07-29 15:07:42', '2021-12-22 16:13:48'); +INSERT INTO `eb_system_form_temp` VALUES (114, '后台登录页轮播图', '后台登录页轮播图', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":130,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"轮播图(286x420)\",\"tag\":\"self-upload\",\"tagIcon\":\"upload\",\"layout\":\"colFormItem\",\"defaultValue\":null,\"showLabel\":true,\"labelWidth\":null,\"required\":true,\"span\":24,\"showTip\":false,\"buttonText\":\"点击上传\",\"regList\":[],\"changeTag\":true,\"fileSize\":2,\"sizeUnit\":\"MB\",\"document\":\"https://element.eleme.cn/#/zh-CN/component/upload\",\"formId\":101,\"renderKey\":1596017879033,\"tips\":false},\"__slot__\":{\"list-type\":true},\"action\":\"https://jsonplaceholder.typicode.com/posts/\",\"disabled\":true,\"accept\":\"\",\"name\":\"file\",\"auto-upload\":true,\"list-type\":\"text\",\"multiple\":false,\"__vModel__\":\"pic\"}]}', '2020-07-29 18:15:46', '2021-12-22 16:23:15'); +INSERT INTO `eb_system_form_temp` VALUES (115, '订单详情状态图', '订单详情状态图', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":100,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"订单状态\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"__vModel__\":\"orderStatus\",\"placeholder\":\"0=未支付,1=待发货,2=待收货,3=待评价,4=已完成订单状态订单状态订单状态\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":\"\",\"show-word-limit\":true,\"readonly\":false,\"disabled\":false},{\"__config__\":{\"label\":\"透明动图\",\"tag\":\"self-upload\",\"tagIcon\":\"selfUpload\",\"layout\":\"colFormItem\",\"defaultValue\":null,\"showLabel\":true,\"labelWidth\":null,\"required\":true,\"tips\":false,\"tipsDesc\":\"\",\"tipsIsLink\":false,\"tipsLink\":\"\",\"span\":24,\"showTip\":false,\"buttonText\":\"\",\"regList\":[],\"changeTag\":true,\"document\":\"https://element.eleme.cn/#/zh-CN/component/upload\",\"formId\":101,\"renderKey\":1640163223626},\"__slot__\":{\"list-type\":true},\"disabled\":true,\"accept\":\"image\",\"name\":\"file\",\"multiple\":false,\"__vModel__\":\"image\"}]}', '2020-07-29 19:40:23', '2021-12-22 17:29:12'); +INSERT INTO `eb_system_form_temp` VALUES (122, '99api', '99api', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":100,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"ApiKey\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":101,\"renderKey\":1599538285999,\"tips\":true,\"tipsDesc\":\"点击查看详细\",\"tipsIsLink\":true,\"tipsLink\":\"http://help.crmeb.net/crmeb_java/2103903\"},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入ApiKey\",\"style\":{\"width\":\"80%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"importProductToken\"}]}', '2020-09-08 12:17:06', '2021-11-02 16:40:49'); +INSERT INTO `eb_system_form_temp` VALUES (123, '秒杀配置', '秒杀配置', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":100,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"名称\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[]},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"__vModel__\":\"name\",\"placeholder\":\"请输入名称\",\"style\":{\"width\":\"445px\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":\"20\",\"show-word-limit\":false,\"readonly\":false,\"disabled\":false},{\"__config__\":{\"label\":\"时间范围\",\"tag\":\"time-select\",\"tagIcon\":\"time-select\",\"span\":24,\"showLabel\":true,\"labelWidth\":null,\"layout\":\"colFormItem\",\"defaultValue\":null,\"required\":true,\"regList\":[],\"changeTag\":true,\"document\":\"https://element.eleme.cn/#/zh-CN/component/time-picker\",\"formId\":121,\"renderKey\":1600316421235},\"style\":{\"width\":\"100%\"},\"disabled\":false,\"clearable\":true,\"placeholder\":\"请选择时间范围\",\"format\":\"HH:mm\",\"value-format\":\"HH:mm\",\"__vModel__\":\"time\"},{\"__config__\":{\"label\":\"幻灯片\",\"tag\":\"self-upload\",\"tagIcon\":\"selfUpload\",\"layout\":\"colFormItem\",\"defaultValue\":null,\"showLabel\":true,\"labelWidth\":null,\"required\":true,\"span\":24,\"showTip\":false,\"buttonText\":\"\",\"regList\":[],\"changeTag\":true,\"document\":\"https://element.eleme.cn/#/zh-CN/component/upload\",\"formId\":122,\"renderKey\":1600316451807},\"__slot__\":{\"list-type\":true},\"disabled\":true,\"accept\":\"image\",\"name\":\"file\",\"multiple\":true,\"__vModel__\":\"silderImgs\"},{\"__config__\":{\"label\":\"状态\",\"tag\":\"el-switch\",\"tagIcon\":\"switch\",\"defaultValue\":1,\"span\":24,\"showLabel\":true,\"labelWidth\":null,\"layout\":\"colFormItem\",\"required\":true,\"regList\":[],\"changeTag\":true,\"document\":\"https://element.eleme.cn/#/zh-CN/component/switch\",\"formId\":124,\"renderKey\":1600316508895},\"style\":{},\"disabled\":false,\"active-text\":\"开启\",\"inactive-text\":\"关闭\",\"active-color\":null,\"inactive-color\":null,\"active-value\":1,\"inactive-value\":0,\"__vModel__\":\"status\"}]}', '2020-09-17 12:23:38', '2020-10-20 17:57:52'); +INSERT INTO `eb_system_form_temp` VALUES (124, '微信提现申请', '微信提现申请', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":100,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"姓名\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"__vModel__\":\"realName\",\"placeholder\":\"请输入姓名\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":\"20\",\"show-word-limit\":false,\"readonly\":false,\"disabled\":false},{\"__config__\":{\"label\":\"提现金额\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":126,\"renderKey\":1600828362052,\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入提现金额\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":true,\"disabled\":false,\"__vModel__\":\"extractPrice\"},{\"__config__\":{\"label\":\"微信号\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":127,\"renderKey\":1600828491788,\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入微信号\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"wechat\"},{\"__config__\":{\"label\":\"备注\",\"labelWidth\":null,\"showLabel\":true,\"tag\":\"el-input\",\"tagIcon\":\"textarea\",\"required\":false,\"layout\":\"colFormItem\",\"span\":24,\"regList\":[],\"changeTag\":true,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"formId\":128,\"renderKey\":1600828493137,\"tips\":false},\"type\":\"textarea\",\"placeholder\":\"请输入备注\",\"autosize\":{\"minRows\":4,\"maxRows\":4},\"style\":{\"width\":\"100%\"},\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"mark\"}]}', '2020-09-23 10:38:16', '2021-10-30 11:46:02'); +INSERT INTO `eb_system_form_temp` VALUES (125, '银行卡提现申请', '银行卡提现申请', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":100,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"姓名\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"defaultValue\":\"\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"__vModel__\":\"realName\",\"placeholder\":\"请输入姓名\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":\"15\",\"show-word-limit\":true,\"readonly\":false,\"disabled\":false},{\"__config__\":{\"label\":\"提现金额\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":101,\"renderKey\":1603703481683,\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入提现金额\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":true,\"disabled\":false,\"__vModel__\":\"extractPrice\"},{\"__config__\":{\"label\":\"银行卡号\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":102,\"renderKey\":1603703520389,\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入银行卡号\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"bankCode\"},{\"__config__\":{\"label\":\"开户行\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":103,\"renderKey\":1603703557229,\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入开户行\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"bankName\"},{\"__config__\":{\"label\":\"备注\",\"labelWidth\":null,\"showLabel\":true,\"tag\":\"el-input\",\"tagIcon\":\"textarea\",\"required\":false,\"layout\":\"colFormItem\",\"span\":24,\"regList\":[],\"changeTag\":true,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"formId\":104,\"renderKey\":1603703559381,\"tips\":false},\"type\":\"textarea\",\"placeholder\":\"请输入备注\",\"autosize\":{\"minRows\":4,\"maxRows\":4},\"style\":{\"width\":\"100%\"},\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"mark\"}]}', '2020-10-26 17:14:21', '2021-10-30 11:46:11'); +INSERT INTO `eb_system_form_temp` VALUES (127, '采集商品配置', '采集商品配置', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":100,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"接口选择\",\"labelWidth\":150,\"showLabel\":true,\"tag\":\"el-radio-group\",\"tagIcon\":\"radio\",\"changeTag\":true,\"layout\":\"colFormItem\",\"span\":24,\"optionType\":\"default\",\"regList\":[],\"required\":true,\"border\":false,\"document\":\"https://element.eleme.cn/#/zh-CN/component/radio\",\"formId\":101,\"renderKey\":1607573281676,\"defaultValue\":2,\"tips\":true,\"tipsIsLink\":true,\"tipsLink\":\"http://help.crmeb.net/crmeb_java/2516275\",\"tipsDesc\":\"点击查看详细\"},\"__slot__\":{\"options\":[{\"label\":\"一号通\",\"value\":1},{\"label\":\"99Api\",\"value\":2}]},\"style\":{},\"size\":\"medium\",\"disabled\":false,\"__vModel__\":\"system_product_copy_type\"},{\"__config__\":{\"label\":\"99Api apiKey\",\"labelWidth\":150,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":107,\"renderKey\":1607574237325,\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入99Api apiKey\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"copy_product_apikey\"}]}', '2020-12-10 12:04:13', '2021-11-02 16:57:27'); +INSERT INTO `eb_system_form_temp` VALUES (128, '物流查询', '物流查询', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":100,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"接口选择\",\"labelWidth\":150,\"showLabel\":true,\"tag\":\"el-radio-group\",\"tagIcon\":\"radio\",\"changeTag\":true,\"layout\":\"colFormItem\",\"span\":24,\"optionType\":\"default\",\"regList\":[],\"required\":true,\"border\":false,\"document\":\"https://element.eleme.cn/#/zh-CN/component/radio\",\"formId\":101,\"renderKey\":1607573397849,\"defaultValue\":1,\"tips\":true,\"tipsIsLink\":true,\"tipsLink\":\"http://help.crmeb.net/crmeb_java/2098998\",\"tipsDesc\":\"点击查看详细\"},\"__slot__\":{\"options\":[{\"label\":\"一号通\",\"value\":1},{\"label\":\"阿里云物流查询\",\"value\":2}]},\"style\":{},\"size\":\"medium\",\"disabled\":false,\"__vModel__\":\"logistics_type\"},{\"__config__\":{\"label\":\"快递查询密钥\",\"labelWidth\":150,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":101,\"renderKey\":1607574358258,\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"阿里云云市场快递查询接口密钥购买地址:https://market.aliyun.com/products/57126001/cmapi021863.html?userCode=dligum2z\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"system_express_app_code\"}]}', '2020-12-10 12:11:38', '2021-11-02 16:56:00'); +INSERT INTO `eb_system_form_temp` VALUES (129, '电子面单', '电子面单', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":100,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"电子面单是否开启\",\"labelWidth\":150,\"showLabel\":true,\"tag\":\"el-radio-group\",\"tagIcon\":\"radio\",\"changeTag\":true,\"layout\":\"colFormItem\",\"span\":24,\"optionType\":\"default\",\"regList\":[],\"required\":true,\"border\":false,\"document\":\"https://element.eleme.cn/#/zh-CN/component/radio\",\"formId\":101,\"renderKey\":1607573397849,\"defaultValue\":1,\"tips\":true,\"tipsIsLink\":true,\"tipsLink\":\"http://help.crmeb.net/crmeb_java/2098999\",\"tipsDesc\":\"点击查看详细\"},\"__slot__\":{\"options\":[{\"label\":\"打开\",\"value\":1},{\"label\":\"关闭\",\"value\":2}]},\"style\":{},\"size\":\"medium\",\"disabled\":false,\"__vModel__\":\"config_export_open\"},{\"__config__\":{\"label\":\"发货人姓名\",\"labelWidth\":150,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":101,\"renderKey\":1607573602374,\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"快递面单发货人姓名\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"el-icon-warning-outline\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"config_export_to_name\"},{\"__config__\":{\"label\":\"发货人电话\",\"labelWidth\":150,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":103,\"renderKey\":1607573608679,\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"快递面单发货人电话\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"config_export_to_tel\"},{\"__config__\":{\"label\":\"发货人详细地址\",\"labelWidth\":150,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":104,\"renderKey\":1607573609130,\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"快递面单发货人详细地址\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"config_export_to_address\"},{\"__config__\":{\"label\":\"电子面单打印机编号\",\"labelWidth\":150,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":105,\"renderKey\":1607573609617,\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请购买快递100电子面单打印机,淘宝地址:https://m.tb.cn/h.437NvI0 官网:https://www.kuaidi100.com/cloud/print/cloudprinterSecond.shtml\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"el-icon-warning-outline\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"config_export_siid\"}]}', '2020-12-10 12:18:18', '2021-11-02 16:55:15'); +INSERT INTO `eb_system_form_temp` VALUES (130, '充值退款', '充值退款', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":100,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"编号\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":102,\"renderKey\":1608271559043},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入编号\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":true,\"__vModel__\":\"id\"},{\"__config__\":{\"label\":\"退款单号\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[]},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"__vModel__\":\"orderId\",\"placeholder\":\"请输入退款单号退款单号退款单号\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":\"\",\"show-word-limit\":true,\"readonly\":true,\"disabled\":false},{\"__config__\":{\"label\":\"状态\",\"labelWidth\":null,\"showLabel\":true,\"tag\":\"el-radio-group\",\"tagIcon\":\"radio\",\"changeTag\":true,\"layout\":\"colFormItem\",\"span\":24,\"optionType\":\"default\",\"regList\":[],\"required\":true,\"border\":false,\"document\":\"https://element.eleme.cn/#/zh-CN/component/radio\",\"formId\":101,\"renderKey\":1608263757741,\"defaultValue\":1},\"__slot__\":{\"options\":[{\"label\":\"本金+赠送\",\"value\":2},{\"label\":\"仅本金\",\"value\":1}]},\"style\":{},\"size\":\"medium\",\"disabled\":false,\"__vModel__\":\"type\"}]}', '2020-12-18 11:56:49', '2020-12-18 14:49:17'); +INSERT INTO `eb_system_form_temp` VALUES (133, '首页配置', '首页配置', '{\"formRef\":\"stivepeimEdited\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":140,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"精品推荐简介\",\"labelWidth\":null,\"showLabel\":true,\"tag\":\"el-input\",\"tagIcon\":\"textarea\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"regList\":[],\"changeTag\":true,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"formId\":103,\"renderKey\":1591148546642},\"type\":\"textarea\",\"placeholder\":\"请输入精品推荐简介\",\"autosize\":{\"minRows\":4,\"maxRows\":4},\"style\":{\"width\":\"100%\"},\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"bastInfo\"},{\"__config__\":{\"label\":\"首发新品简介\",\"labelWidth\":null,\"showLabel\":true,\"tag\":\"el-input\",\"tagIcon\":\"textarea\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"regList\":[],\"changeTag\":true,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"formId\":104,\"renderKey\":1591148566944},\"type\":\"textarea\",\"placeholder\":\"请输入首发新品简介\",\"autosize\":{\"minRows\":4,\"maxRows\":4},\"style\":{\"width\":\"100%\"},\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"firstInfo\"},{\"__config__\":{\"label\":\"促销单品简介\",\"labelWidth\":null,\"showLabel\":true,\"tag\":\"el-input\",\"tagIcon\":\"textarea\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"regList\":[],\"changeTag\":true,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"formId\":105,\"renderKey\":1591148567412},\"type\":\"textarea\",\"placeholder\":\"请输入促销单品简介\",\"autosize\":{\"minRows\":4,\"maxRows\":4},\"style\":{\"width\":\"100%\"},\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"salesInfo\"},{\"__config__\":{\"label\":\"热门推荐简介\",\"labelWidth\":null,\"showLabel\":true,\"tag\":\"el-input\",\"tagIcon\":\"textarea\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"regList\":[],\"changeTag\":true,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"formId\":102,\"renderKey\":1597821020375},\"type\":\"textarea\",\"placeholder\":\"请输入热门推荐简介\",\"autosize\":{\"minRows\":4,\"maxRows\":4},\"style\":{\"width\":\"100%\"},\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"hotInfo\"}]}', '2021-02-06 11:19:43', '2021-02-06 11:19:43'); +INSERT INTO `eb_system_form_temp` VALUES (136, '拼团列表banner', '拼团列表banner', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":120,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"图片(690x300)\",\"tag\":\"self-upload\",\"tagIcon\":\"selfUpload\",\"layout\":\"colFormItem\",\"defaultValue\":null,\"showLabel\":true,\"labelWidth\":null,\"required\":true,\"span\":24,\"showTip\":false,\"buttonText\":\"\",\"regList\":[],\"changeTag\":true,\"document\":\"https://element.eleme.cn/#/zh-CN/component/upload\",\"formId\":102,\"renderKey\":1620439915360,\"tips\":false},\"__slot__\":{\"list-type\":true},\"disabled\":true,\"accept\":\"image\",\"name\":\"file\",\"multiple\":false,\"__vModel__\":\"image\"}]}', '2021-05-08 10:12:43', '2021-12-22 17:34:37'); +INSERT INTO `eb_system_form_temp` VALUES (139, '商城配置', '商城配置', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":100,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"Api地址【支付回调】\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[]},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"__vModel__\":\"api_url\",\"placeholder\":\"webSiet网站地址Api地址【支付回调】Api地址【支付回调】\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":\"\",\"show-word-limit\":true,\"readonly\":false,\"disabled\":false},{\"__config__\":{\"label\":\"主页左上角logo[后台]\",\"tag\":\"self-upload\",\"tagIcon\":\"upload\",\"layout\":\"colFormItem\",\"defaultValue\":null,\"showLabel\":true,\"labelWidth\":null,\"required\":true,\"span\":24,\"showTip\":false,\"buttonText\":\"点击上传\",\"regList\":[],\"changeTag\":true,\"fileSize\":2,\"sizeUnit\":\"MB\",\"document\":\"https://element.eleme.cn/#/zh-CN/component/upload\",\"formId\":124,\"renderKey\":1595658064081},\"__slot__\":{\"list-type\":true},\"action\":\"https://jsonplaceholder.typicode.com/posts/\",\"disabled\":true,\"accept\":\"\",\"name\":\"file\",\"auto-upload\":true,\"list-type\":\"picture-card\",\"multiple\":false,\"__vModel__\":\"site_logo_lefttop\"},{\"__config__\":{\"label\":\"主页左上角缩回菜单logo[后台]\",\"tag\":\"self-upload\",\"tagIcon\":\"upload\",\"layout\":\"colFormItem\",\"defaultValue\":null,\"showLabel\":true,\"labelWidth\":null,\"required\":true,\"span\":24,\"showTip\":false,\"buttonText\":\"点击上传\",\"regList\":[],\"changeTag\":true,\"fileSize\":2,\"sizeUnit\":\"MB\",\"document\":\"https://element.eleme.cn/#/zh-CN/component/upload\",\"formId\":127,\"renderKey\":1595658695317},\"__slot__\":{\"list-type\":true},\"action\":\"https://jsonplaceholder.typicode.com/posts/\",\"disabled\":true,\"accept\":\"\",\"name\":\"file\",\"auto-upload\":true,\"list-type\":\"text\",\"multiple\":false,\"__vModel__\":\"site_logo_square\"},{\"__config__\":{\"label\":\"登录页logo[后台]\",\"tag\":\"self-upload\",\"tagIcon\":\"upload\",\"layout\":\"colFormItem\",\"defaultValue\":null,\"showLabel\":true,\"labelWidth\":null,\"required\":true,\"span\":24,\"showTip\":false,\"buttonText\":\"点击上传\",\"regList\":[],\"changeTag\":true,\"fileSize\":2,\"sizeUnit\":\"MB\",\"document\":\"https://element.eleme.cn/#/zh-CN/component/upload\",\"formId\":101,\"renderKey\":1612510257294},\"__slot__\":{\"list-type\":true},\"action\":\"https://jsonplaceholder.typicode.com/posts/\",\"disabled\":true,\"accept\":\"\",\"name\":\"file\",\"auto-upload\":true,\"list-type\":\"picture-card\",\"multiple\":false,\"__vModel__\":\"site_logo_login\"},{\"__config__\":{\"label\":\"登录页背景图\",\"tag\":\"self-upload\",\"tagIcon\":\"upload\",\"layout\":\"colFormItem\",\"defaultValue\":null,\"showLabel\":true,\"labelWidth\":null,\"required\":true,\"span\":24,\"showTip\":false,\"buttonText\":\"点击上传\",\"regList\":[],\"changeTag\":true,\"fileSize\":2,\"sizeUnit\":\"MB\",\"document\":\"https://element.eleme.cn/#/zh-CN/component/upload\",\"formId\":152,\"renderKey\":1596017451389},\"__slot__\":{\"list-type\":true},\"action\":\"https://jsonplaceholder.typicode.com/posts/\",\"disabled\":true,\"accept\":\"\",\"name\":\"file\",\"auto-upload\":true,\"list-type\":\"text\",\"multiple\":false,\"__vModel__\":\"admin_login_bg_pic\"}]}', '2021-08-19 15:15:38', '2021-08-19 15:15:38'); +INSERT INTO `eb_system_form_temp` VALUES (140, '导航下拉菜单', '导航下拉菜单', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":100,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"标题\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[{\"pattern\":\"/^1(3|4|5|7|8|9)\\\\d{9}$/\",\"message\":\"手机号格式错误\"}],\"tips\":false},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"__vModel__\":\"select_nav_name\",\"placeholder\":\"请输入标题标题标题\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"el-icon-mobile\",\"suffix-icon\":\"\",\"maxlength\":11,\"show-word-limit\":true,\"readonly\":false,\"disabled\":false}]}', '2021-09-08 10:45:37', '2021-10-29 18:36:06'); +INSERT INTO `eb_system_form_temp` VALUES (141, '统计', '统计', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":100,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"统计代码\",\"labelWidth\":null,\"showLabel\":true,\"tag\":\"el-input\",\"tagIcon\":\"textarea\",\"required\":false,\"layout\":\"colFormItem\",\"span\":24,\"regList\":[],\"changeTag\":true,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"formId\":101,\"renderKey\":1631689599398,\"tips\":true,\"tipsDesc\":\"用于前端动态执行的一段js代码\"},\"type\":\"textarea\",\"placeholder\":\"请粘贴统计JS代码\",\"autosize\":{\"minRows\":4,\"maxRows\":4},\"style\":{\"width\":\"95%\"},\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"crmeb_tongji_js\"}]}', '2021-09-15 15:09:21', '2021-10-29 18:35:38'); +INSERT INTO `eb_system_form_temp` VALUES (143, '易联云打印设置', '易联云打印设置', '{\"formRef\":\"elForm\",\"formModel\":\"formData\",\"size\":\"medium\",\"labelPosition\":\"right\",\"labelWidth\":100,\"formRules\":\"rules\",\"gutter\":15,\"disabled\":false,\"span\":24,\"formBtns\":true,\"fields\":[{\"__config__\":{\"label\":\"易联云应用ID\",\"labelWidth\":180,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"tips\":true,\"tipsDesc\":\"易联云 官网获取\"},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"__vModel__\":\"ylyprint_app_id\",\"placeholder\":\"请输入易联云应用ID易联云应用ID易联云应用ID易联云应用ID易联云应用ID易联云应用ID易联云应用ID易联云应用ID\",\"style\":{\"width\":\"97%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":11,\"show-word-limit\":true,\"readonly\":false,\"disabled\":false},{\"__config__\":{\"label\":\"易联云应用密钥\",\"labelWidth\":180,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"tips\":false,\"formId\":101,\"renderKey\":1638000310366},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"__vModel__\":\"ylyprint_app_secret\",\"placeholder\":\"请输入易联云应用密钥\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":\"\",\"show-word-limit\":true,\"readonly\":false,\"disabled\":false},{\"__config__\":{\"label\":\"易联云打印机设备码\",\"labelWidth\":180,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"tips\":false,\"formId\":102,\"renderKey\":1638000357901},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"__vModel__\":\"ylyprint_app_machine_code\",\"placeholder\":\"请输入易联云打印机设备码\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":\"\",\"show-word-limit\":true,\"readonly\":false,\"disabled\":false},{\"__config__\":{\"label\":\"易联云打印机设备密钥\",\"labelWidth\":180,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"tips\":false,\"formId\":103,\"renderKey\":1638000464706},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"__vModel__\":\"ylyprint_app_machine_msign\",\"placeholder\":\"请输入易联云打印机设备密钥\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":\"\",\"show-word-limit\":true,\"readonly\":false,\"disabled\":false},{\"__config__\":{\"label\":\"支付成功自动打印开关\",\"tag\":\"el-switch\",\"tagIcon\":\"switch\",\"defaultValue\":\"\'0\'\",\"span\":24,\"showLabel\":true,\"labelWidth\":180,\"layout\":\"colFormItem\",\"required\":true,\"tips\":false,\"tipsDesc\":\"\",\"tipsIsLink\":false,\"tipsLink\":\"\",\"regList\":[],\"changeTag\":true,\"document\":\"https://element.eleme.cn/#/zh-CN/component/switch\",\"formId\":101,\"renderKey\":1638002536348},\"style\":{},\"disabled\":false,\"active-text\":\"\",\"inactive-text\":\"\",\"active-color\":null,\"inactive-color\":null,\"active-value\":\"\'1\'\",\"inactive-value\":\"\'0\'\",\"__vModel__\":\"ylyprint_auto_status\"},{\"__config__\":{\"label\":\"打印开关\",\"tag\":\"el-switch\",\"tagIcon\":\"switch\",\"defaultValue\":\"\'1\'\",\"span\":24,\"showLabel\":true,\"labelWidth\":180,\"layout\":\"colFormItem\",\"required\":true,\"tips\":false,\"tipsDesc\":\"\",\"tipsIsLink\":false,\"tipsLink\":\"\",\"regList\":[],\"changeTag\":true,\"document\":\"https://element.eleme.cn/#/zh-CN/component/switch\",\"formId\":102,\"renderKey\":1638156858490},\"style\":{},\"disabled\":false,\"active-text\":\"\",\"inactive-text\":\"\",\"active-color\":null,\"inactive-color\":null,\"active-value\":\"\'1\'\",\"inactive-value\":\"\'0\'\",\"__vModel__\":\"ylyprint_status\"}]}', '2021-11-27 16:09:51', '2021-12-10 12:17:01'); + +-- ---------------------------- +-- Table structure for eb_system_group +-- ---------------------------- +DROP TABLE IF EXISTS `eb_system_group`; +CREATE TABLE `eb_system_group` ( + `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '组合数据ID', + `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '数据组名称', + `info` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '简介', + `form_id` int(11) NOT NULL DEFAULT 0 COMMENT 'form 表单 id', + `create_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 74 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '组合数据表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of eb_system_group +-- ---------------------------- +INSERT INTO `eb_system_group` VALUES (37, '移动端_首页中部推荐banner图', '移动端_首页中部推荐banner图', 95, '2020-05-15 10:38:22', '2021-02-24 18:24:35'); +INSERT INTO `eb_system_group` VALUES (48, '移动端_首页banner滚动图', '移动端_首页banner滚动图', 95, '2020-05-15 10:38:22', '2021-02-24 18:24:06'); +INSERT INTO `eb_system_group` VALUES (52, '移动端_首页_精品推荐benner图', '移动端_首页_精品推荐benner图', 91, '2020-05-15 10:38:22', '2021-02-24 18:11:47'); +INSERT INTO `eb_system_group` VALUES (53, '移动端_订单详情状态图', '移动端_订单详情状态图', 115, '2020-05-15 10:38:22', '2021-02-24 18:23:25'); +INSERT INTO `eb_system_group` VALUES (54, '移动端_个人中心功能菜单', '移动端_个人中心功能菜单', 89, '2020-05-15 10:38:22', '2021-02-24 18:22:22'); +INSERT INTO `eb_system_group` VALUES (55, '移动端_我的_签到天数配置', '移动端_我的_签到天数配置', 87, '2020-05-15 10:38:22', '2021-02-24 18:21:38'); +INSERT INTO `eb_system_group` VALUES (57, '移动端_首页_热门榜单推荐图片', '移动端_首页_热门榜单推荐图片', 94, '2020-05-15 10:38:22', '2021-02-24 18:11:34'); +INSERT INTO `eb_system_group` VALUES (58, '移动端_首页_首发新品推荐图片', '移动端_首页_首发新品推荐图片', 92, '2020-05-15 10:38:22', '2021-02-24 18:11:18'); +INSERT INTO `eb_system_group` VALUES (59, '移动端_首页活动_促销单品推荐图片', '移动端_首页活动_促销单品推荐图片', 93, '2020-05-15 10:38:22', '2021-02-24 18:10:29'); +INSERT INTO `eb_system_group` VALUES (60, '移动端_我的推广_分享海报', '移动端_我的推广_分享海报', 113, '2020-05-15 10:38:22', '2021-02-24 18:10:08'); +INSERT INTO `eb_system_group` VALUES (62, '移动端_充值金额设置', '移动端_设置充值金额额度选择', 103, '2020-05-15 10:38:22', '2021-02-24 18:08:56'); +INSERT INTO `eb_system_group` VALUES (65, '移动端_个人中心轮播图', '移动端_个人中心轮播图', 90, '2020-06-02 10:25:03', '2021-02-24 17:38:12'); +INSERT INTO `eb_system_group` VALUES (67, '移动端_首页导航', '移动端_首页导航', 96, '2020-06-02 14:54:41', '2021-02-24 17:37:59'); +INSERT INTO `eb_system_group` VALUES (68, '移动端_首页滚动新闻_二期配置', '移动端_首页滚动新闻_二期配置', 97, '2020-06-02 18:00:47', '2021-02-24 18:08:45'); +INSERT INTO `eb_system_group` VALUES (70, '移动端_首页超值爆款区域', '移动端_首页超值爆款渔区', 99, '2020-06-02 18:01:10', '2021-02-24 16:43:57'); +INSERT INTO `eb_system_group` VALUES (71, '移动端_热门搜索', '移动端_热门搜索', 102, '2020-06-03 11:34:42', '2021-02-24 16:43:36'); +INSERT INTO `eb_system_group` VALUES (72, 'WEBPC管理端_登录页轮播图', 'WEBPC管理端_登录页轮播图', 114, '2020-07-29 18:16:11', '2021-02-24 16:42:50'); +INSERT INTO `eb_system_group` VALUES (73, '移动端_拼团列表banner', '移动端_拼团列表banner', 136, '2021-05-08 10:13:24', '2021-05-08 10:13:24'); + +-- ---------------------------- +-- Table structure for eb_system_group_data +-- ---------------------------- +DROP TABLE IF EXISTS `eb_system_group_data`; +CREATE TABLE `eb_system_group_data` ( + `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '组合数据详情ID', + `gid` int(11) NOT NULL DEFAULT 0 COMMENT '对应的数据组id', + `value` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '数据组对应的数据值(json数据)', + `sort` int(11) NOT NULL DEFAULT 0 COMMENT '数据排序', + `status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '状态(1:开启;2:关闭;)', + `create_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1250 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '组合数据详情表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of eb_system_group_data +-- ---------------------------- +INSERT INTO `eb_system_group_data` VALUES (39, 55, '{\"fields\":[{\"name\":\"title\",\"title\":\"title\",\"value\":\"第一天\"},{\"name\":\"day\",\"title\":\"day\",\"value\":\"1\"},{\"name\":\"integral\",\"title\":\"integral\",\"value\":\"10\"},{\"name\":\"experience\",\"title\":\"experience\",\"value\":\"10\"}],\"id\":87,\"sort\":1,\"status\":true}', 1, 1, '2020-05-28 14:34:00', '2020-05-28 15:08:02'); +INSERT INTO `eb_system_group_data` VALUES (40, 55, '{\"fields\":[{\"name\":\"title\",\"title\":\"title\",\"value\":\"第二天\"},{\"name\":\"day\",\"title\":\"day\",\"value\":\"2\"},{\"name\":\"integral\",\"title\":\"integral\",\"value\":\"20\"},{\"name\":\"experience\",\"title\":\"experience\",\"value\":\"20\"}],\"id\":87,\"sort\":2,\"status\":true}', 2, 1, '2020-05-28 14:34:09', '2020-05-28 15:08:08'); +INSERT INTO `eb_system_group_data` VALUES (41, 55, '{\"fields\":[{\"name\":\"title\",\"title\":\"title\",\"value\":\"第三天\"},{\"name\":\"day\",\"title\":\"day\",\"value\":\"3\"},{\"name\":\"integral\",\"title\":\"integral\",\"value\":\"30\"},{\"name\":\"experience\",\"title\":\"experience\",\"value\":\"30\"}],\"id\":87,\"sort\":3,\"status\":true}', 3, 1, '2020-05-28 14:34:14', '2020-05-28 15:08:14'); +INSERT INTO `eb_system_group_data` VALUES (42, 55, '{\"fields\":[{\"name\":\"title\",\"title\":\"title\",\"value\":\"第四天\"},{\"name\":\"day\",\"title\":\"day\",\"value\":\"4\"},{\"name\":\"integral\",\"title\":\"integral\",\"value\":\"40\"},{\"name\":\"experience\",\"title\":\"experience\",\"value\":\"40\"}],\"id\":87,\"sort\":4,\"status\":true}', 4, 1, '2020-05-28 14:34:19', '2020-05-28 15:08:20'); +INSERT INTO `eb_system_group_data` VALUES (43, 55, '{\"fields\":[{\"name\":\"title\",\"title\":\"title\",\"value\":\"第五天\"},{\"name\":\"day\",\"title\":\"day\",\"value\":\"5\"},{\"name\":\"integral\",\"title\":\"integral\",\"value\":\"50\"},{\"name\":\"experience\",\"title\":\"experience\",\"value\":\"50\"}],\"id\":87,\"sort\":5,\"status\":true}', 5, 1, '2020-05-28 14:34:34', '2020-05-28 15:08:26'); +INSERT INTO `eb_system_group_data` VALUES (44, 55, '{\"fields\":[{\"name\":\"title\",\"title\":\"title\",\"value\":\"第六天\"},{\"name\":\"day\",\"title\":\"day\",\"value\":\"6\"},{\"name\":\"integral\",\"title\":\"integral\",\"value\":\"60\"},{\"name\":\"experience\",\"title\":\"experience\",\"value\":\"60\"}],\"id\":87,\"sort\":6,\"status\":true}', 6, 1, '2020-05-28 14:34:39', '2021-07-07 09:48:54'); +INSERT INTO `eb_system_group_data` VALUES (71, 52, '{\"fields\":[{\"name\":\"name\",\"title\":\"name\",\"value\":\"pro\"},{\"name\":\"url\",\"title\":\"url\",\"value\":\"/pages/users/user_vip/index\"},{\"name\":\"pic\",\"title\":\"pic\",\"value\":\"crmebimage/public/maintain/2021/12/25/88cea6884f5e4ae48b8e407266fc03dbnqk5y6cdcv.jpg\"}],\"id\":91,\"sort\":3,\"status\":true}', 3, 1, '2020-06-02 10:43:33', '2021-12-25 14:22:31'); +INSERT INTO `eb_system_group_data` VALUES (91, 71, '{\"fields\":[{\"name\":\"title\",\"title\":\"title\",\"value\":\"键盘\"}],\"id\":102,\"sort\":1,\"status\":true}', 1, 1, '2020-06-03 11:34:54', '2021-11-02 14:38:13'); +INSERT INTO `eb_system_group_data` VALUES (92, 71, '{\"fields\":[{\"name\":\"title\",\"title\":\"title\",\"value\":\"鞋子\"}],\"id\":102,\"sort\":2,\"status\":true}', 2, 1, '2020-06-03 11:35:00', '2020-06-03 11:35:00'); +INSERT INTO `eb_system_group_data` VALUES (93, 71, '{\"fields\":[{\"name\":\"title\",\"title\":\"title\",\"value\":\"男装\"}],\"id\":102,\"sort\":3,\"status\":true}', 3, 1, '2020-06-03 11:35:07', '2021-11-02 14:39:53'); +INSERT INTO `eb_system_group_data` VALUES (94, 71, '{\"fields\":[{\"name\":\"title\",\"title\":\"title\",\"value\":\"MacBook\"}],\"id\":102,\"sort\":4,\"status\":true}', 4, 1, '2020-06-03 11:35:29', '2021-11-02 14:40:03'); +INSERT INTO `eb_system_group_data` VALUES (95, 62, '{\"fields\":[{\"name\":\"price\",\"title\":\"price\",\"value\":\"1\"},{\"name\":\"give_money\",\"title\":\"give_money\",\"value\":\"1\"}],\"id\":103,\"sort\":1,\"status\":true}', 1, 1, '2020-06-10 15:13:01', '2021-08-24 14:16:18'); +INSERT INTO `eb_system_group_data` VALUES (96, 62, '{\"fields\":[{\"name\":\"price\",\"title\":\"price\",\"value\":\"30.00\"},{\"name\":\"give_money\",\"title\":\"give_money\",\"value\":\"3.00\"}],\"id\":103,\"sort\":2,\"status\":true}', 2, 1, '2020-06-10 15:13:15', '2020-06-10 15:13:15'); +INSERT INTO `eb_system_group_data` VALUES (97, 62, '{\"fields\":[{\"name\":\"price\",\"title\":\"price\",\"value\":\"50.00\"},{\"name\":\"give_money\",\"title\":\"give_money\",\"value\":\"5.00\"}],\"id\":103,\"sort\":3,\"status\":true}', 3, 1, '2020-06-10 15:13:39', '2020-06-10 15:13:39'); +INSERT INTO `eb_system_group_data` VALUES (98, 62, '{\"fields\":[{\"name\":\"price\",\"title\":\"price\",\"value\":\"500.00\"},{\"name\":\"give_money\",\"title\":\"give_money\",\"value\":\"50.00\"}],\"id\":103,\"sort\":12,\"status\":true}', 12, 1, '2020-06-10 15:13:49', '2021-05-13 10:26:27'); +INSERT INTO `eb_system_group_data` VALUES (99, 62, '{\"fields\":[{\"name\":\"price\",\"title\":\"price\",\"value\":\"800.00\"},{\"name\":\"give_money\",\"title\":\"give_money\",\"value\":\"100.00\"}],\"id\":103,\"sort\":15,\"status\":true}', 15, 1, '2020-06-10 15:13:58', '2021-05-13 10:26:20'); +INSERT INTO `eb_system_group_data` VALUES (100, 60, '{\"fields\":[{\"name\":\"title\",\"title\":\"title\",\"value\":\"海报1\"},{\"name\":\"pic\",\"title\":\"pic\",\"value\":\"crmebimage/public/maintain/2021/12/25/2631ca1695464da982b202d239bdf717eunywwsimu.jpg\"}],\"id\":113,\"sort\":1,\"status\":true}', 1, 1, '2020-07-29 15:08:28', '2021-12-25 14:18:11'); +INSERT INTO `eb_system_group_data` VALUES (101, 60, '{\"fields\":[{\"name\":\"title\",\"title\":\"title\",\"value\":\"海报2\"},{\"name\":\"pic\",\"title\":\"pic\",\"value\":\"crmebimage/public/maintain/2021/12/25/166caeeb0f234d5e93c4baebf533e3c6cpk8chqitx.jpg\"}],\"id\":113,\"sort\":2,\"status\":true}', 2, 1, '2020-07-29 15:08:41', '2021-12-25 14:18:24'); +INSERT INTO `eb_system_group_data` VALUES (102, 60, '{\"fields\":[{\"name\":\"title\",\"title\":\"title\",\"value\":\"海报3\"},{\"name\":\"pic\",\"title\":\"pic\",\"value\":\"crmebimage/public/maintain/2021/12/25/2a104b07589e45998fe604f81e56c216ozicop5k74.jpg\"}],\"id\":113,\"sort\":3,\"status\":true}', 3, 1, '2020-07-29 15:09:02', '2021-12-25 14:18:34'); +INSERT INTO `eb_system_group_data` VALUES (109, 72, '{\"fields\":[{\"name\":\"pic\",\"title\":\"pic\",\"value\":\"crmebimage/public/maintain/2021/12/25/7ccf9f4158794bf997d97b4e871dd34b4qy58l2fyg.png\"}],\"id\":114,\"sort\":1,\"status\":true}', 1, 1, '2020-07-29 18:16:33', '2021-12-25 16:37:54'); +INSERT INTO `eb_system_group_data` VALUES (111, 53, '{\"fields\":[{\"name\":\"orderStatus\",\"title\":\"orderStatus\",\"value\":\"0\"},{\"name\":\"image\",\"title\":\"image\",\"value\":\"crmebimage/public/maintain/2021/12/25/0eabacb2ab774f54bddd9b2b0ff212a49e7etvhouq.gif\"}],\"id\":115,\"sort\":1,\"status\":true}', 1, 1, '2020-07-29 19:59:14', '2021-12-25 14:20:00'); +INSERT INTO `eb_system_group_data` VALUES (112, 53, '{\"fields\":[{\"name\":\"orderStatus\",\"title\":\"orderStatus\",\"value\":\"1\"},{\"name\":\"image\",\"title\":\"image\",\"value\":\"crmebimage/public/maintain/2021/12/25/1d14f2d2fa8f451a9d46fccacc3aa661tdwihn07he.gif\"}],\"id\":115,\"sort\":1,\"status\":true}', 1, 1, '2020-07-29 19:59:29', '2021-12-25 14:21:43'); +INSERT INTO `eb_system_group_data` VALUES (113, 53, '{\"fields\":[{\"name\":\"orderStatus\",\"title\":\"orderStatus\",\"value\":\"2\"},{\"name\":\"image\",\"title\":\"image\",\"value\":\"crmebimage/public/maintain/2021/12/25/9deb872da95c42d2bf8c432075153b1egrrxlb666p.gif\"}],\"id\":115,\"sort\":1,\"status\":true}', 1, 1, '2020-07-29 19:59:47', '2021-12-25 14:23:21'); +INSERT INTO `eb_system_group_data` VALUES (114, 53, '{\"fields\":[{\"name\":\"orderStatus\",\"title\":\"orderStatus\",\"value\":\"3\"},{\"name\":\"image\",\"title\":\"image\",\"value\":\"crmebimage/public/maintain/2021/12/25/ca4e301ed76a44f8aa23e70b7df107b8v26l2p79u3.gif\"}],\"id\":115,\"sort\":1,\"status\":true}', 1, 1, '2020-07-29 20:00:02', '2021-12-25 14:25:09'); +INSERT INTO `eb_system_group_data` VALUES (115, 53, '{\"fields\":[{\"name\":\"orderStatus\",\"title\":\"orderStatus\",\"value\":\"4\"},{\"name\":\"image\",\"title\":\"image\",\"value\":\"crmebimage/public/maintain/2021/12/25/ca4e301ed76a44f8aa23e70b7df107b8v26l2p79u3.gif\"}],\"id\":115,\"sort\":1,\"status\":true}', 1, 1, '2020-07-29 20:00:14', '2021-12-25 14:25:50'); +INSERT INTO `eb_system_group_data` VALUES (116, 53, '{\"fields\":[{\"name\":\"orderStatus\",\"title\":\"orderStatus\",\"value\":\"9\"},{\"name\":\"image\",\"title\":\"image\",\"value\":\"crmebimage/public/maintain/2021/12/25/96cff8171dc8423ebd23559d0b14c8e8mv9d8a0iqw.gif\"}],\"id\":115,\"sort\":1,\"status\":true}', 1, 1, '2020-07-29 20:00:30', '2021-12-25 14:27:08'); +INSERT INTO `eb_system_group_data` VALUES (117, 37, '{\"fields\":[{\"name\":\"name\",\"title\":\"name\",\"value\":\"精品推荐\"},{\"name\":\"url\",\"title\":\"url\",\"value\":\"#\"},{\"name\":\"pic\",\"title\":\"pic\",\"value\":\"crmebimage/public/maintain/2021/12/25/d4c7282740fb4e71bd2d7e80fad985d8o1wfu26pyd.jpg\"}],\"id\":95,\"sort\":1,\"status\":true}', 1, 1, '2020-08-13 12:34:52', '2021-12-25 14:19:51'); +INSERT INTO `eb_system_group_data` VALUES (118, 37, '{\"fields\":[{\"name\":\"name\",\"title\":\"name\",\"value\":\"BANNER\"},{\"name\":\"url\",\"title\":\"url\",\"value\":\"#\"},{\"name\":\"pic\",\"title\":\"pic\",\"value\":\"crmebimage/public/maintain/2021/12/25/4bdd334e3b084908ae56b7ce1e576204a43i68txom.jpg\"}],\"id\":95,\"sort\":2,\"status\":true}', 2, 1, '2020-08-13 12:41:15', '2021-12-25 14:20:21'); +INSERT INTO `eb_system_group_data` VALUES (120, 59, '{\"fields\":[{\"name\":\"name\",\"title\":\"name\",\"value\":\"1\"},{\"name\":\"url\",\"title\":\"url\",\"value\":\"1\"},{\"name\":\"pic\",\"title\":\"pic\",\"value\":\"crmebimage/public/maintain/2021/12/25/88cea6884f5e4ae48b8e407266fc03dbnqk5y6cdcv.jpg\"}],\"id\":93,\"sort\":1,\"status\":true}', 1, 1, '2020-08-13 13:04:36', '2021-12-25 14:27:03'); +INSERT INTO `eb_system_group_data` VALUES (122, 55, '{\"fields\":[{\"name\":\"title\",\"title\":\"title\",\"value\":\"第七天\"},{\"name\":\"day\",\"title\":\"day\",\"value\":\"7\"},{\"name\":\"integral\",\"title\":\"integral\",\"value\":\"70\"},{\"name\":\"experience\",\"title\":\"experience\",\"value\":\"70\"}],\"id\":87,\"sort\":7,\"status\":true}', 7, 1, '2020-12-21 16:18:20', '2021-07-07 09:50:00'); +INSERT INTO `eb_system_group_data` VALUES (125, 71, '{\"fields\":[{\"name\":\"title\",\"title\":\"title\",\"value\":\"茶叶\"}],\"id\":102,\"sort\":0,\"status\":true}', 0, 1, '2021-02-07 12:18:07', '2021-11-02 14:39:03'); +INSERT INTO `eb_system_group_data` VALUES (126, 58, '{\"fields\":[{\"name\":\"name\",\"title\":\"name\",\"value\":\"1111\"},{\"name\":\"url\",\"title\":\"url\",\"value\":\"1111\"},{\"name\":\"pic\",\"title\":\"pic\",\"value\":\"crmebimage/public/maintain/2021/12/25/acbb97c8b30e4c63ae92a81f8679ab06uib5yau47a.png\"}],\"id\":92,\"sort\":1,\"status\":true}', 1, 1, '2021-02-22 10:58:27', '2021-12-25 14:27:29'); +INSERT INTO `eb_system_group_data` VALUES (127, 69, '{\"fields\":[{\"name\":\"image\",\"title\":\"image\",\"value\":\"crmebimage/maintain/2021/02/24/23ab5b9968aa4e29a245ea8b8a4804cbkscfppxkwq.png\"},{\"name\":\"title\",\"title\":\"title\",\"value\":\"stivepeim\"},{\"name\":\"info\",\"title\":\"info\",\"value\":\"stivepeim\"},{\"name\":\"link\",\"title\":\"link\",\"value\":\"/pages/activity/goods_seckill/index\"}],\"id\":98,\"sort\":1,\"status\":true}', 1, 1, '2021-02-24 10:07:52', '2021-02-24 10:07:52'); +INSERT INTO `eb_system_group_data` VALUES (128, 57, '{\"fields\":[{\"name\":\"name\",\"title\":\"name\",\"value\":\"21212\"},{\"name\":\"url\",\"title\":\"url\",\"value\":\"https://crmeb.com\"},{\"name\":\"pic\",\"title\":\"pic\",\"value\":\"crmebimage/public/maintain/2021/12/25/c17d24b632b544828bd4c70744bc2931tmnu4ffkoj.png\"}],\"id\":94,\"sort\":1,\"status\":true}', 1, 1, '2021-02-24 16:15:46', '2021-12-25 14:27:51'); +INSERT INTO `eb_system_group_data` VALUES (129, 73, '{\"fields\":[{\"name\":\"image\",\"title\":\"image\",\"value\":\"crmebimage/public/maintain/2021/12/25/e07dda98525d4226818de310cb3c21ae6hg5f2sv5m.png\"}],\"id\":136,\"sort\":1,\"status\":true}', 1, 1, '2021-05-08 10:13:47', '2021-12-25 12:36:56'); +INSERT INTO `eb_system_group_data` VALUES (131, 62, '{\"fields\":[{\"name\":\"price\",\"title\":\"price\",\"value\":\"100\"},{\"name\":\"give_money\",\"title\":\"give_money\",\"value\":\"10\"}],\"id\":103,\"sort\":8,\"status\":true}', 8, 1, '2021-05-13 10:24:56', '2021-05-13 10:26:10'); +INSERT INTO `eb_system_group_data` VALUES (132, 62, '{\"fields\":[{\"name\":\"price\",\"title\":\"price\",\"value\":\"200\"},{\"name\":\"give_money\",\"title\":\"give_money\",\"value\":\"20\"}],\"id\":103,\"sort\":9,\"status\":true}', 9, 1, '2021-05-13 10:25:07', '2021-05-13 10:26:05'); +INSERT INTO `eb_system_group_data` VALUES (133, 62, '{\"fields\":[{\"name\":\"price\",\"title\":\"price\",\"value\":\"300\"},{\"name\":\"give_money\",\"title\":\"give_money\",\"value\":\"30\"}],\"id\":103,\"sort\":10,\"status\":true}', 10, 1, '2021-05-13 10:25:15', '2021-05-13 10:26:00'); +INSERT INTO `eb_system_group_data` VALUES (134, 62, '{\"fields\":[{\"name\":\"price\",\"title\":\"price\",\"value\":\"10\"},{\"name\":\"give_money\",\"title\":\"give_money\",\"value\":\"1\"}],\"id\":103,\"sort\":2,\"status\":true}', 2, 1, '2021-05-13 10:26:48', '2021-05-13 10:27:01'); +INSERT INTO `eb_system_group_data` VALUES (136, 37, '{\"fields\":[{\"name\":\"name\",\"title\":\"name\",\"value\":\"广告\"},{\"name\":\"url\",\"title\":\"url\",\"value\":\"#\"},{\"name\":\"pic\",\"title\":\"pic\",\"value\":\"crmebimage/public/maintain/2021/12/25/60e1d297eb5a49bca13b92e2b0b411c2siripyrcu0.jpg\"}],\"id\":95,\"sort\":1,\"status\":true}', 1, 1, '2021-06-03 12:20:13', '2021-12-25 14:20:10'); +INSERT INTO `eb_system_group_data` VALUES (1221, 68, '{\"fields\":[{\"name\":\"info\",\"title\":\"info\",\"value\":\"这是美好的一天\"},{\"name\":\"url\",\"title\":\"url\",\"value\":\"/pages/news_list/index\"},{\"name\":\"show\",\"title\":\"show\",\"value\":\"1\"}],\"id\":97,\"sort\":1,\"status\":true}', 1, 1, '2021-12-17 15:47:11', '2021-12-31 10:52:27'); +INSERT INTO `eb_system_group_data` VALUES (1224, 67, '{\"id\":96,\"sort\":0,\"fields\":[{\"name\":\"name\",\"title\":\"name\",\"value\":\"商品分类\"},{\"name\":\"show\",\"title\":\"show\",\"value\":\"1\"},{\"name\":\"pic\",\"title\":\"pic\",\"value\":\"crmebimage/public/maintain/2021/12/25/418c7649b2b646f4a13dd6f335ae927426354rq62r.png\"},{\"name\":\"url\",\"title\":\"url\",\"value\":\"/pages/goods_cate/goods_cate\"}],\"status\":true}', 0, 1, '2021-12-25 12:28:48', '2021-12-25 12:28:48'); +INSERT INTO `eb_system_group_data` VALUES (1225, 67, '{\"id\":96,\"sort\":1,\"fields\":[{\"name\":\"name\",\"title\":\"name\",\"value\":\"行业资讯\"},{\"name\":\"show\",\"title\":\"show\",\"value\":\"2\"},{\"name\":\"pic\",\"title\":\"pic\",\"value\":\"crmebimage/public/maintain/2021/12/25/71b89c4f080948a981e06c6ba748c5e1x9mfhpzhfd.png\"},{\"name\":\"url\",\"title\":\"url\",\"value\":\"/pages/news_list/index\"}],\"status\":true}', 1, 1, '2021-12-25 12:28:48', '2021-12-25 12:28:48'); +INSERT INTO `eb_system_group_data` VALUES (1226, 67, '{\"id\":96,\"sort\":2,\"fields\":[{\"name\":\"name\",\"title\":\"name\",\"value\":\"我要签到\"},{\"name\":\"show\",\"title\":\"show\",\"value\":\"2\"},{\"name\":\"pic\",\"title\":\"pic\",\"value\":\"crmebimage/public/maintain/2021/12/25/6ba5bf3b13c446cca8b703bf155ccc9362b0gvz1rc.png\"},{\"name\":\"url\",\"title\":\"url\",\"value\":\"/pages/users/user_sgin/index\"}],\"status\":true}', 2, 1, '2021-12-25 12:28:48', '2021-12-25 12:28:48'); +INSERT INTO `eb_system_group_data` VALUES (1227, 67, '{\"id\":96,\"sort\":3,\"fields\":[{\"name\":\"name\",\"title\":\"name\",\"value\":\"我的收藏\"},{\"name\":\"show\",\"title\":\"show\",\"value\":\"2\"},{\"name\":\"pic\",\"title\":\"pic\",\"value\":\"crmebimage/public/maintain/2021/12/25/2e47a337dbdf445d81b20c1b5aeedf01ybm0jmic0h.png\"},{\"name\":\"url\",\"title\":\"url\",\"value\":\"/pages/users/user_goods_collection/index\"}],\"status\":true}', 3, 1, '2021-12-25 12:28:48', '2021-12-25 12:28:48'); +INSERT INTO `eb_system_group_data` VALUES (1228, 67, '{\"id\":96,\"sort\":4,\"fields\":[{\"name\":\"name\",\"title\":\"name\",\"value\":\"拼团活动\"},{\"name\":\"show\",\"title\":\"show\",\"value\":\"2\"},{\"name\":\"pic\",\"title\":\"pic\",\"value\":\"crmebimage/public/maintain/2021/12/25/9ac69cbe9da4459db264b1902ff6f693spomyy6lkw.png\"},{\"name\":\"url\",\"title\":\"url\",\"value\":\"/pages/activity/goods_combination/index\"}],\"status\":true}', 4, 1, '2021-12-25 12:28:48', '2021-12-25 12:28:48'); +INSERT INTO `eb_system_group_data` VALUES (1229, 67, '{\"id\":96,\"sort\":5,\"fields\":[{\"name\":\"name\",\"title\":\"name\",\"value\":\"秒杀活动\"},{\"name\":\"show\",\"title\":\"show\",\"value\":\"2\"},{\"name\":\"pic\",\"title\":\"pic\",\"value\":\"crmebimage/public/maintain/2021/12/25/ebf72b915ecc4deab71c353b62ce7de9d0uv4lgzwz.png\"},{\"name\":\"url\",\"title\":\"url\",\"value\":\"/pages/activity/goods_seckill/index\"}],\"status\":true}', 5, 1, '2021-12-25 12:28:48', '2021-12-25 12:28:48'); +INSERT INTO `eb_system_group_data` VALUES (1230, 67, '{\"id\":96,\"sort\":6,\"fields\":[{\"name\":\"name\",\"title\":\"name\",\"value\":\"砍价活动\"},{\"name\":\"show\",\"title\":\"show\",\"value\":\"2\"},{\"name\":\"pic\",\"title\":\"pic\",\"value\":\"crmebimage/public/maintain/2021/12/25/6f599b7d21bf49dc9f93d6d1a1ef56e8hvyv1b4q5s.png\"},{\"name\":\"url\",\"title\":\"url\",\"value\":\"/pages/activity/goods_bargain/index\"}],\"status\":true}', 6, 1, '2021-12-25 12:28:48', '2021-12-25 12:28:48'); +INSERT INTO `eb_system_group_data` VALUES (1231, 67, '{\"id\":96,\"sort\":7,\"fields\":[{\"name\":\"name\",\"title\":\"name\",\"value\":\"地址管理\"},{\"name\":\"show\",\"title\":\"show\",\"value\":\"2\"},{\"name\":\"pic\",\"title\":\"pic\",\"value\":\"crmebimage/public/maintain/2021/12/25/e7e54160e9db4a9e814675763a80e58ce0j522s6ds.png\"},{\"name\":\"url\",\"title\":\"url\",\"value\":\"/pages/users/user_address_list/index\"}],\"status\":true}', 7, 1, '2021-12-25 12:28:48', '2021-12-25 12:28:48'); +INSERT INTO `eb_system_group_data` VALUES (1232, 67, '{\"id\":96,\"sort\":8,\"fields\":[{\"name\":\"name\",\"title\":\"name\",\"value\":\"订单管理\"},{\"name\":\"show\",\"title\":\"show\",\"value\":\"2\"},{\"name\":\"pic\",\"title\":\"pic\",\"value\":\"crmebimage/public/maintain/2021/12/25/3ab2dae5527742319ae003c58cca264duewwp3esg8.png\"},{\"name\":\"url\",\"title\":\"url\",\"value\":\"/pages/users/order_list/index\"}],\"status\":true}', 8, 1, '2021-12-25 12:28:48', '2021-12-25 12:28:48'); +INSERT INTO `eb_system_group_data` VALUES (1233, 67, '{\"id\":96,\"sort\":9,\"fields\":[{\"name\":\"name\",\"title\":\"name\",\"value\":\"优惠券\"},{\"name\":\"show\",\"title\":\"show\",\"value\":\"1\"},{\"name\":\"pic\",\"title\":\"pic\",\"value\":\"crmebimage/public/maintain/2021/12/25/21c84909461c434a8ff39d467ba8d648prefpnpq15.png\"},{\"name\":\"url\",\"title\":\"url\",\"value\":\"/pages/users/user_get_coupon/index\"}],\"status\":true}', 9, 1, '2021-12-25 12:28:48', '2021-12-25 12:28:48'); +INSERT INTO `eb_system_group_data` VALUES (1234, 48, '{\"id\":95,\"sort\":0,\"fields\":[{\"name\":\"name\",\"title\":\"name\",\"value\":\"pro\"},{\"name\":\"pic\",\"title\":\"pic\",\"value\":\"crmebimage/public/maintain/2021/12/25/ae020f17148b4cc19bcab221c0836dd1iy0vrck2jm.png\"},{\"name\":\"url\",\"title\":\"url\",\"value\":\"/pages/news_details/index?id=11\"}],\"status\":true}', 0, 1, '2021-12-25 12:30:53', '2021-12-25 12:30:53'); +INSERT INTO `eb_system_group_data` VALUES (1235, 48, '{\"id\":95,\"sort\":1,\"fields\":[{\"name\":\"name\",\"title\":\"name\",\"value\":\"123\"},{\"name\":\"pic\",\"title\":\"pic\",\"value\":\"crmebimage/public/maintain/2021/12/25/e07dda98525d4226818de310cb3c21ae6hg5f2sv5m.png\"},{\"name\":\"url\",\"title\":\"url\",\"value\":\"/pages/users/user_spread_user/index\"}],\"status\":true}', 1, 1, '2021-12-25 12:30:53', '2021-12-25 12:30:53'); +INSERT INTO `eb_system_group_data` VALUES (1236, 65, '{\"id\":90,\"sort\":0,\"fields\":[{\"name\":\"pic\",\"title\":\"pic\",\"value\":\"crmebimage/public/maintain/2021/12/25/9d95f61a5db84591972fbc90f31c1fb21g5krqax8i.jpg\"},{\"name\":\"url\",\"title\":\"url\",\"value\":\"www.crmeb.com\"}],\"status\":true}', 0, 1, '2021-12-25 12:32:06', '2021-12-25 12:32:06'); +INSERT INTO `eb_system_group_data` VALUES (1237, 65, '{\"id\":90,\"sort\":1,\"fields\":[{\"name\":\"pic\",\"title\":\"pic\",\"value\":\"crmebimage/public/maintain/2021/12/25/d4c7282740fb4e71bd2d7e80fad985d8o1wfu26pyd.jpg\"},{\"name\":\"url\",\"title\":\"url\",\"value\":\"www.crmeb.com\"},{\"name\":\"name\",\"title\":\"name\",\"value\":\"\"},{\"name\":\"info\",\"title\":\"info\",\"value\":\"\"}],\"status\":true}', 1, 1, '2021-12-25 12:32:06', '2021-12-25 12:32:06'); +INSERT INTO `eb_system_group_data` VALUES (1238, 54, '{\"id\":89,\"sort\":0,\"fields\":[{\"name\":\"wap_url\",\"title\":\"wap_url\",\"value\":\"/pages/users/user_vip/index\"},{\"name\":\"name\",\"title\":\"name\",\"value\":\"会员中心\"},{\"name\":\"pic\",\"title\":\"pic\",\"value\":\"crmebimage/public/maintain/2021/12/25/dd497d333f4541d7ae41b2c579706370jhp2x39yrg.png\"},{\"name\":\"url\",\"title\":\"url\",\"value\":\"/pages/users/user_vip/index\"}],\"status\":true}', 0, 1, '2021-12-25 12:35:21', '2021-12-25 12:35:21'); +INSERT INTO `eb_system_group_data` VALUES (1239, 54, '{\"id\":89,\"sort\":1,\"fields\":[{\"name\":\"wap_url\",\"title\":\"wap_url\",\"value\":\"/pages/activity/bargain/index\"},{\"name\":\"name\",\"title\":\"name\",\"value\":\"砍价记录\"},{\"name\":\"pic\",\"title\":\"pic\",\"value\":\"crmebimage/public/maintain/2021/12/25/5d6617d3440c4d67802fdf064b77b471qzfen9343d.png\"},{\"name\":\"url\",\"title\":\"url\",\"value\":\"/pages/activity/bargain/index\"}],\"status\":true}', 1, 1, '2021-12-25 12:35:21', '2021-12-25 12:35:21'); +INSERT INTO `eb_system_group_data` VALUES (1240, 54, '{\"id\":89,\"sort\":2,\"fields\":[{\"name\":\"wap_url\",\"title\":\"wap_url\",\"value\":\"/pages/users/user_spread_user/index\"},{\"name\":\"name\",\"title\":\"name\",\"value\":\"我的推广\"},{\"name\":\"pic\",\"title\":\"pic\",\"value\":\"crmebimage/public/maintain/2021/12/25/197b96e3a4d24728b4069b0c288326352gcds3duga.png\"},{\"name\":\"url\",\"title\":\"url\",\"value\":\"/pages/users/user_spread_user/index\"}],\"status\":true}', 2, 1, '2021-12-25 12:35:21', '2021-12-25 12:35:21'); +INSERT INTO `eb_system_group_data` VALUES (1241, 54, '{\"id\":89,\"sort\":3,\"fields\":[{\"name\":\"wap_url\",\"title\":\"wap_url\",\"value\":\"/pages/users/user_money/index\"},{\"name\":\"name\",\"title\":\"name\",\"value\":\"我的余额\"},{\"name\":\"pic\",\"title\":\"pic\",\"value\":\"crmebimage/public/maintain/2021/12/25/0624fe22d770438891ad666ebef9e21e1rhiepyec1.png\"},{\"name\":\"url\",\"title\":\"url\",\"value\":\"/pages/users/user_money/index\"}],\"status\":true}', 3, 1, '2021-12-25 12:35:21', '2021-12-25 12:35:21'); +INSERT INTO `eb_system_group_data` VALUES (1242, 54, '{\"id\":89,\"sort\":4,\"fields\":[{\"name\":\"wap_url\",\"title\":\"wap_url\",\"value\":\"/pages/users/user_address_list/index\"},{\"name\":\"name\",\"title\":\"name\",\"value\":\"地址信息\"},{\"name\":\"pic\",\"title\":\"pic\",\"value\":\"crmebimage/public/maintain/2021/12/25/886e04146694474c966d346222fe2897ealwo6qycj.png\"},{\"name\":\"url\",\"title\":\"url\",\"value\":\"/pages/users/user_address_list/index\"}],\"status\":true}', 4, 1, '2021-12-25 12:35:21', '2021-12-25 12:35:21'); +INSERT INTO `eb_system_group_data` VALUES (1243, 54, '{\"id\":89,\"sort\":5,\"fields\":[{\"name\":\"wap_url\",\"title\":\"wap_url\",\"value\":\"/pages/users/user_goods_collection/index\"},{\"name\":\"name\",\"title\":\"name\",\"value\":\"我的收藏\"},{\"name\":\"pic\",\"title\":\"pic\",\"value\":\"crmebimage/public/maintain/2021/12/25/3308f2d779874079b0e02ae206cf141bwb23ii2z52.png\"},{\"name\":\"url\",\"title\":\"url\",\"value\":\"/pages/users/user_goods_collection/index\"}],\"status\":true}', 5, 1, '2021-12-25 12:35:21', '2021-12-25 12:35:21'); +INSERT INTO `eb_system_group_data` VALUES (1244, 54, '{\"id\":89,\"sort\":6,\"fields\":[{\"name\":\"wap_url\",\"title\":\"wap_url\",\"value\":\"/pages/users/user_coupon/index\"},{\"name\":\"name\",\"title\":\"name\",\"value\":\"优惠券\"},{\"name\":\"pic\",\"title\":\"pic\",\"value\":\"crmebimage/public/maintain/2021/12/25/11113e1876ac427bb3173086a3bd6c5bhyan1ea9pz.png\"},{\"name\":\"url\",\"title\":\"url\",\"value\":\"/pages/users/user_coupon/index\"}],\"status\":true}', 6, 1, '2021-12-25 12:35:21', '2021-12-25 12:35:21'); +INSERT INTO `eb_system_group_data` VALUES (1245, 54, '{\"id\":89,\"sort\":7,\"fields\":[{\"name\":\"wap_url\",\"title\":\"wap_url\",\"value\":\"https://yzf.qq.com/xv/web/static/chat/index.html?sign=37ef9b97db2656c32340cde61ce2b56a2176efe72ac7ed421c77607b5c816611ec4775a17c7605b33df1ffe1d22a4ce7464dd07b\"},{\"name\":\"name\",\"title\":\"name\",\"value\":\"联系客服\"},{\"name\":\"pic\",\"title\":\"pic\",\"value\":\"crmebimage/public/maintain/2021/12/25/77ac54ce5f514ebbb89854f927f2a891dzefr2qxmh.png\"},{\"name\":\"url\",\"title\":\"url\",\"value\":\"/pages/service/index\"}],\"status\":true}', 7, 1, '2021-12-25 12:35:21', '2021-12-25 12:35:21'); +INSERT INTO `eb_system_group_data` VALUES (1246, 70, '{\"sort\":0,\"fields\":[{\"name\":\"pic\",\"title\":\"pic\",\"value\":\"crmebimage/public/maintain/2021/12/25/ec49b431bee545e09abc3dc294d1e54669dtn9bvuy.png\"},{\"name\":\"name\",\"title\":\"name\",\"value\":\"促销单品\"},{\"name\":\"info\",\"title\":\"info\",\"value\":\"多买多省\"},{\"name\":\"type\",\"title\":\"type\",\"value\":\"4\"}],\"status\":true}', 0, 1, '2021-12-25 12:42:57', '2021-12-25 12:42:57'); +INSERT INTO `eb_system_group_data` VALUES (1247, 70, '{\"sort\":1,\"fields\":[{\"name\":\"pic\",\"title\":\"pic\",\"value\":\"crmebimage/public/maintain/2021/12/25/c17d24b632b544828bd4c70744bc2931tmnu4ffkoj.png\"},{\"name\":\"name\",\"title\":\"name\",\"value\":\"精品推荐\"},{\"name\":\"info\",\"title\":\"info\",\"value\":\"精品推荐\"},{\"name\":\"type\",\"title\":\"type\",\"value\":\"1\"}],\"status\":true}', 1, 1, '2021-12-25 12:42:57', '2021-12-25 12:42:57'); +INSERT INTO `eb_system_group_data` VALUES (1248, 70, '{\"sort\":2,\"fields\":[{\"name\":\"pic\",\"title\":\"pic\",\"value\":\"crmebimage/public/maintain/2021/12/25/ae020f17148b4cc19bcab221c0836dd1iy0vrck2jm.png\"},{\"name\":\"name\",\"title\":\"name\",\"value\":\"热门榜单\"},{\"name\":\"info\",\"title\":\"info\",\"value\":\"热门榜单\"},{\"name\":\"type\",\"title\":\"type\",\"value\":\"2\"}],\"status\":true}', 2, 1, '2021-12-25 12:42:57', '2021-12-25 12:42:57'); +INSERT INTO `eb_system_group_data` VALUES (1249, 70, '{\"sort\":3,\"fields\":[{\"name\":\"pic\",\"title\":\"pic\",\"value\":\"crmebimage/public/maintain/2021/12/25/e07dda98525d4226818de310cb3c21ae6hg5f2sv5m.png\"},{\"name\":\"name\",\"title\":\"name\",\"value\":\"首发新品\"},{\"name\":\"info\",\"title\":\"info\",\"value\":\"首发新品\"},{\"name\":\"type\",\"title\":\"type\",\"value\":\"3\"}],\"status\":true}', 3, 1, '2021-12-25 12:42:57', '2021-12-25 12:42:57'); + +-- ---------------------------- +-- Table structure for eb_system_menu +-- ---------------------------- +DROP TABLE IF EXISTS `eb_system_menu`; +CREATE TABLE `eb_system_menu` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `pid` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '父级ID', + `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称', + `icon` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'icon', + `perms` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '权限标识', + `component` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '组件路径', + `menu_type` varchar(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT 'M' COMMENT '类型,M-目录,C-菜单,A-按钮', + `sort` int(5) NOT NULL DEFAULT 99999 COMMENT '排序', + `is_show` tinyint(1) NOT NULL DEFAULT 1 COMMENT '显示状态', + `is_delte` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '是否删除', + `create_time` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 405 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统菜单表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of eb_system_menu +-- ---------------------------- +INSERT INTO `eb_system_menu` VALUES (1, 0, '运营', 'menu', NULL, '/dashboard', 'M', 1, 1, 0, '2021-11-16 12:11:17', '2021-12-03 13:16:14'); +INSERT INTO `eb_system_menu` VALUES (2, 0, '商品', 's-goods', NULL, '/store', 'M', 1, 1, 0, '2021-11-16 12:11:17', '2021-11-23 15:54:49'); +INSERT INTO `eb_system_menu` VALUES (3, 0, '订单', 's-order', NULL, '/order', 'M', 1, 1, 0, '2021-11-16 12:11:17', '2021-11-23 10:44:03'); +INSERT INTO `eb_system_menu` VALUES (4, 0, '用户', 'user-solid', NULL, '/user', 'M', 1, 1, 0, '2021-11-16 12:11:17', '2021-11-23 10:44:13'); +INSERT INTO `eb_system_menu` VALUES (5, 0, '内容', 's-management', NULL, '/content', 'M', 1, 1, 0, '2021-11-16 12:11:18', '2021-11-23 10:44:23'); +INSERT INTO `eb_system_menu` VALUES (6, 0, '应用', 's-promotion', NULL, '/appSetting', 'M', 1, 1, 0, '2021-11-16 12:11:18', '2021-11-23 10:44:35'); +INSERT INTO `eb_system_menu` VALUES (7, 0, '营销', 's-marketing', NULL, '/marketing', 'M', 1, 1, 0, '2021-11-16 12:11:18', '2021-11-23 10:44:51'); +INSERT INTO `eb_system_menu` VALUES (8, 0, '分销', 's-check', NULL, '/distribution', 'M', 1, 1, 0, '2021-11-16 12:11:18', '2021-11-23 10:45:07'); +INSERT INTO `eb_system_menu` VALUES (9, 0, '财务', 's-finance', NULL, '/financial', 'M', 1, 1, 0, '2021-11-16 12:11:18', '2021-11-23 10:45:19'); +INSERT INTO `eb_system_menu` VALUES (10, 0, '移动端管理', 'phone', NULL, '/javaMobile', 'M', 1, 1, 0, '2021-11-16 12:11:18', '2021-11-23 10:45:30'); +INSERT INTO `eb_system_menu` VALUES (12, 0, '设置', 's-tools', NULL, '/operation', 'M', 1, 1, 0, '2021-11-16 12:11:18', '2021-11-23 10:45:57'); +INSERT INTO `eb_system_menu` VALUES (13, 0, '维护', 's-open', NULL, '/maintain', 'M', 1, 1, 0, '2021-11-16 12:11:18', '2021-11-23 10:46:04'); +INSERT INTO `eb_system_menu` VALUES (14, 2, '商品管理', NULL, 'admin:product:list', '/store/index', 'C', 1, 1, 0, '2021-11-16 12:19:02', '2021-11-22 18:11:26'); +INSERT INTO `eb_system_menu` VALUES (15, 2, '商品分类', NULL, '', '/store/sort', 'C', 1, 1, 0, '2021-11-16 12:19:02', '2021-12-03 15:55:15'); +INSERT INTO `eb_system_menu` VALUES (16, 2, '商品规格', NULL, 'admin:product:rule:list', '/store/attr', 'C', 1, 1, 0, '2021-11-16 12:19:02', '2021-11-22 18:09:19'); +INSERT INTO `eb_system_menu` VALUES (17, 2, '商品评论', NULL, 'admin:product:reply:list', '/store/comment', 'C', 1, 1, 0, '2021-11-16 12:19:02', '2021-11-22 18:09:47'); +INSERT INTO `eb_system_menu` VALUES (18, 14, '商品添加', NULL, 'admin:product:save', '', 'A', 1, 1, 0, '2021-11-16 15:55:00', '2021-11-22 18:06:26'); +INSERT INTO `eb_system_menu` VALUES (19, 14, '商品修改', NULL, 'admin:product:update', '', 'A', 1, 1, 0, '2021-11-16 15:55:00', '2021-11-22 17:40:30'); +INSERT INTO `eb_system_menu` VALUES (20, 14, '商品删除', NULL, 'admin:product:delete', '', 'A', 1, 1, 0, '2021-11-16 15:55:00', '2021-11-22 17:41:41'); +INSERT INTO `eb_system_menu` VALUES (21, 14, '商品上架', NULL, 'admin:product:up', '', 'A', 1, 1, 0, '2021-11-16 15:55:00', '2021-11-22 17:41:33'); +INSERT INTO `eb_system_menu` VALUES (22, 14, '商品下架', NULL, 'admin:product:down', '', 'A', 1, 1, 0, '2021-11-16 15:55:00', '2021-11-22 17:42:03'); +INSERT INTO `eb_system_menu` VALUES (23, 14, '库存变动', NULL, '', 'api/admin/store/product/stock', 'A', 99999, 1, 0, '2021-11-16 15:55:00', '2021-11-16 15:55:00'); +INSERT INTO `eb_system_menu` VALUES (24, 14, '虚拟销量', NULL, '', 'api/admin/store/product/ficti', 'A', 99999, 1, 0, '2021-11-16 15:55:00', '2021-11-16 15:55:00'); +INSERT INTO `eb_system_menu` VALUES (25, 16, '规格添加', NULL, 'admin:product:rule:save', '', 'A', 1, 1, 0, '2021-11-16 15:55:00', '2021-11-23 16:03:23'); +INSERT INTO `eb_system_menu` VALUES (26, 16, '规格修改', NULL, 'admin:product:rule:update', '', 'A', 1, 1, 0, '2021-11-16 15:55:00', '2021-11-23 16:04:16'); +INSERT INTO `eb_system_menu` VALUES (27, 16, '规格删除', NULL, 'admin:product:rule:delete', '', 'A', 1, 1, 0, '2021-11-16 15:55:00', '2021-11-23 16:04:41'); +INSERT INTO `eb_system_menu` VALUES (28, 17, '商品评论添加', NULL, 'admin:product:reply:save', '', 'A', 1, 1, 0, '2021-11-16 15:55:00', '2021-11-23 16:05:52'); +INSERT INTO `eb_system_menu` VALUES (29, 17, '商品评论详情', NULL, 'admin:product:reply:info', '', 'A', 1, 1, 0, '2021-11-16 15:55:00', '2021-11-23 16:07:47'); +INSERT INTO `eb_system_menu` VALUES (30, 17, '商品评论删除', NULL, 'admin:product:reply:delete', '', 'A', 1, 1, 0, '2021-11-16 15:55:00', '2021-11-23 16:08:09'); +INSERT INTO `eb_system_menu` VALUES (31, 17, '商品评论回复', NULL, 'admin:product:reply:comment', '', 'A', 1, 1, 0, '2021-11-16 15:55:00', '2021-11-23 16:08:46'); +INSERT INTO `eb_system_menu` VALUES (32, 3, '订单', NULL, 'admin:order:list', '/order/index', 'C', 1, 1, 0, '2021-11-16 15:55:15', '2021-11-23 16:10:09'); +INSERT INTO `eb_system_menu` VALUES (33, 32, '订单删除', NULL, 'admin:order:delete', '', 'A', 1, 1, 0, '2021-11-16 15:58:16', '2021-11-23 16:11:59'); +INSERT INTO `eb_system_menu` VALUES (34, 32, '订单备注', NULL, 'admin:order:mark', '', 'A', 1, 1, 0, '2021-11-16 15:58:16', '2021-11-23 16:24:00'); +INSERT INTO `eb_system_menu` VALUES (35, 32, '订单退款', NULL, 'admin:order:refund', '', 'A', 1, 1, 0, '2021-11-16 15:58:16', '2021-11-23 16:12:39'); +INSERT INTO `eb_system_menu` VALUES (36, 32, '订单拒绝退款', NULL, 'admin:order:refund:refuse', '', 'A', 1, 1, 0, '2021-11-16 15:58:16', '2021-11-23 16:13:08'); +INSERT INTO `eb_system_menu` VALUES (37, 32, '订单发货', NULL, 'admin:order:send', '', 'A', 1, 1, 0, '2021-11-16 15:58:16', '2021-11-23 16:14:04'); +INSERT INTO `eb_system_menu` VALUES (38, 32, '订单更新', NULL, '', 'api/admin/store/order/update', 'A', 99999, 1, 0, '2021-11-16 15:58:16', '2021-11-16 15:58:16'); +INSERT INTO `eb_system_menu` VALUES (39, 4, '用户管理 ', NULL, 'admin:user:list', '/user/index', 'C', 1, 1, 0, '2021-11-16 16:05:50', '2021-11-23 16:41:21'); +INSERT INTO `eb_system_menu` VALUES (40, 4, '用户标签', NULL, 'admin:user:tag:list', '/user/label', 'C', 1, 1, 0, '2021-11-16 16:05:50', '2021-11-23 17:19:48'); +INSERT INTO `eb_system_menu` VALUES (41, 4, '用户等级', NULL, 'admin:system:user:level:list', '/user/grade', 'C', 1, 1, 0, '2021-11-16 16:05:50', '2021-11-23 17:22:35'); +INSERT INTO `eb_system_menu` VALUES (42, 4, '用户分组', NULL, 'admin:user:group:list', '/user/group', 'C', 1, 1, 0, '2021-11-16 16:05:50', '2021-11-23 17:29:42'); +INSERT INTO `eb_system_menu` VALUES (43, 39, '用户修改', NULL, 'admin:user:update', '', 'A', 1, 1, 0, '2021-11-16 16:12:46', '2021-11-23 16:28:58'); +INSERT INTO `eb_system_menu` VALUES (44, 39, '用户详情', NULL, 'admin:user:info', '', 'A', 1, 1, 0, '2021-11-16 16:12:46', '2021-11-23 16:29:23'); +INSERT INTO `eb_system_menu` VALUES (47, 39, '用户打标签', NULL, 'admin:user:tag', '', 'A', 1, 1, 0, '2021-11-16 16:12:46', '2021-11-23 16:31:01'); +INSERT INTO `eb_system_menu` VALUES (48, 39, '修改积分余额', NULL, 'admin:user:operate:founds', '', 'A', 1, 1, 0, '2021-11-16 16:12:47', '2021-11-23 16:31:47'); +INSERT INTO `eb_system_menu` VALUES (49, 40, '用户标签添加', NULL, 'admin:user:tag:save', '', 'A', 2, 1, 0, '2021-11-16 16:12:47', '2021-11-23 17:20:16'); +INSERT INTO `eb_system_menu` VALUES (50, 40, '用户标签修改', NULL, 'admin:user:tag:update', '', 'A', 1, 1, 0, '2021-11-16 16:12:47', '2021-11-23 17:20:49'); +INSERT INTO `eb_system_menu` VALUES (51, 40, '用户标签删除', NULL, 'admin:user:tag:delete', '', 'A', 3, 1, 0, '2021-11-16 16:12:47', '2021-11-23 17:21:20'); +INSERT INTO `eb_system_menu` VALUES (52, 41, '用户等级添加', NULL, 'admin:system:user:level:save', '', 'A', 1, 1, 0, '2021-11-16 16:12:47', '2021-11-23 17:24:36'); +INSERT INTO `eb_system_menu` VALUES (53, 41, '用户等级修改', NULL, 'admin:system:user:level:update', '', 'A', 2, 1, 0, '2021-11-16 16:12:47', '2021-11-23 17:25:04'); +INSERT INTO `eb_system_menu` VALUES (54, 41, '用户等级删除', NULL, 'admin:system:user:level:delete', '', 'A', 1, 1, 0, '2021-11-16 16:12:47', '2021-11-23 17:25:23'); +INSERT INTO `eb_system_menu` VALUES (55, 41, '使用/禁用等级', NULL, 'admin:system:user:level:use', '', 'A', 1, 1, 0, '2021-11-16 16:12:47', '2021-11-23 17:25:58'); +INSERT INTO `eb_system_menu` VALUES (56, 42, '用户分组修改', NULL, 'admin:user:group:update', '', 'A', 1, 1, 0, '2021-11-16 16:12:47', '2021-11-23 16:35:26'); +INSERT INTO `eb_system_menu` VALUES (57, 42, '用户分组删除', NULL, 'admin:user:group:delete', '', 'A', 1, 1, 0, '2021-11-16 16:12:47', '2021-11-23 16:37:05'); +INSERT INTO `eb_system_menu` VALUES (59, 42, '用户分组新增', NULL, 'admin:user:group:save', '', 'A', 1, 1, 0, '2021-11-16 16:12:47', '2021-11-23 16:37:46'); +INSERT INTO `eb_system_menu` VALUES (60, 5, '文章管理', NULL, 'admin:article:list', '/content/articleManager', 'C', 1, 1, 0, '2021-11-16 16:22:32', '2021-11-23 17:31:11'); +INSERT INTO `eb_system_menu` VALUES (61, 5, '文章分类', NULL, '', '/content/classifManager', 'C', 99999, 1, 0, '2021-11-16 16:22:32', '2021-11-16 16:22:32'); +INSERT INTO `eb_system_menu` VALUES (62, 60, '文章添加', NULL, 'admin:article:save', '', 'A', 1, 1, 0, '2021-11-16 16:24:52', '2021-11-23 17:33:03'); +INSERT INTO `eb_system_menu` VALUES (63, 60, '文章删除', NULL, 'admin:article:delete', '', 'A', 1, 1, 0, '2021-11-16 16:24:52', '2021-11-23 17:33:08'); +INSERT INTO `eb_system_menu` VALUES (64, 60, '文章修改', NULL, 'admin:article:update', '', 'A', 1, 1, 0, '2021-11-16 16:24:52', '2021-11-23 17:33:31'); +INSERT INTO `eb_system_menu` VALUES (67, 6, '公众号', NULL, '', '/appSetting/publicAccount', 'M', 99999, 1, 0, '2021-11-16 16:27:56', '2021-11-16 16:27:56'); +INSERT INTO `eb_system_menu` VALUES (68, 6, '小程序', NULL, '', '/appSetting/publicRoutine', 'M', 99999, 0, 0, '2021-11-16 16:27:56', '2021-12-29 09:34:58'); +INSERT INTO `eb_system_menu` VALUES (69, 67, '微信菜单', NULL, 'admin:wechat:menu:public:get', '/appSetting//publicAccount/wxMenus', 'C', 0, 1, 0, '2021-11-16 16:31:04', '2021-12-06 15:14:52'); +INSERT INTO `eb_system_menu` VALUES (70, 67, '自动回复', NULL, '', '/appSetting/publicAccount/wxReply', 'M', 1, 1, 0, '2021-11-16 16:31:04', '2021-11-23 17:52:08'); +INSERT INTO `eb_system_menu` VALUES (73, 69, '微信菜单保存', NULL, 'admin:wechat:menu:public:create', '', 'A', 1, 1, 0, '2021-11-16 16:38:07', '2021-11-23 17:47:16'); +INSERT INTO `eb_system_menu` VALUES (74, 69, '微信菜单删除', NULL, 'admin:wechat:menu:public:delete', '', 'A', 1, 1, 0, '2021-11-16 16:38:07', '2021-11-23 17:47:42'); +INSERT INTO `eb_system_menu` VALUES (75, 70, '微信关注回复', NULL, 'admin:wechat:keywords:reply:info:keywords', '/appSetting/publicAccount/wxReply/follow', 'C', 99999, 1, 0, '2021-11-16 16:38:07', '2021-12-06 15:16:51'); +INSERT INTO `eb_system_menu` VALUES (76, 70, '关键字回复', NULL, 'admin:wechat:keywords:reply:list', '/appSetting/publicAccount/wxReply/keyword', 'C', 99999, 1, 0, '2021-11-16 16:38:07', '2021-12-06 15:18:06'); +INSERT INTO `eb_system_menu` VALUES (77, 70, '无效关键词回复', NULL, '', '/appSetting/publicAccount/wxReply/replyIndex', 'C', 99999, 1, 0, '2021-11-16 16:38:07', '2021-11-16 16:38:07'); +INSERT INTO `eb_system_menu` VALUES (83, 7, '优惠券', NULL, '', '/marketing/coupon', 'M', 1, 1, 0, '2021-11-16 16:43:33', '2021-11-24 09:58:12'); +INSERT INTO `eb_system_menu` VALUES (84, 7, '积分', NULL, '', '/marketing/integral', 'M', 99999, 1, 0, '2021-11-16 16:43:33', '2021-11-16 16:43:33'); +INSERT INTO `eb_system_menu` VALUES (85, 7, '秒杀管理', NULL, '', '/marketing/seckill', 'M', 99999, 1, 0, '2021-11-16 16:43:33', '2021-11-16 16:43:33'); +INSERT INTO `eb_system_menu` VALUES (86, 7, '砍价管理', NULL, '', '/marketing/bargain', 'M', 99999, 1, 0, '2021-11-16 16:43:33', '2021-11-16 16:43:33'); +INSERT INTO `eb_system_menu` VALUES (87, 7, '拼团管理', NULL, '', '/marketing/groupBuy', 'M', 99999, 1, 0, '2021-11-16 16:43:34', '2021-11-16 16:43:34'); +INSERT INTO `eb_system_menu` VALUES (88, 7, '视频号管理', NULL, '', '/marketing/videoChannel', 'M', 99999, 1, 1, '2021-11-16 16:43:34', '2021-11-16 16:43:34'); +INSERT INTO `eb_system_menu` VALUES (89, 83, '优惠券', NULL, 'admin:coupon:list', '/marketing/coupon/list', 'C', 1, 1, 0, '2021-11-16 16:48:47', '2021-11-24 09:58:47'); +INSERT INTO `eb_system_menu` VALUES (90, 83, '领取记录', NULL, 'admin:coupon:user:list', '/marketing/coupon/record', 'C', 1, 1, 0, '2021-11-16 16:48:47', '2021-11-24 10:07:24'); +INSERT INTO `eb_system_menu` VALUES (91, 84, '积分配置', NULL, '', '/marketing/integral/integralconfig', 'C', 99999, 1, 0, '2021-11-16 16:48:47', '2021-11-16 16:48:47'); +INSERT INTO `eb_system_menu` VALUES (92, 84, '积分日志', NULL, 'admin:user:integral:list', '/marketing/integral/integrallog', 'C', 1, 1, 0, '2021-11-16 16:48:47', '2021-11-24 10:12:27'); +INSERT INTO `eb_system_menu` VALUES (93, 85, '秒杀配置', NULL, 'admin:seckill:manger:list', '/marketing/seckill/config', 'C', 1, 1, 0, '2021-11-16 16:48:47', '2021-11-24 10:14:46'); +INSERT INTO `eb_system_menu` VALUES (94, 85, '秒杀商品', NULL, 'admin:seckill:list', '/marketing/seckill/list', 'C', 1, 1, 0, '2021-11-16 16:48:47', '2021-11-24 10:14:23'); +INSERT INTO `eb_system_menu` VALUES (95, 86, '砍价商品', NULL, 'admin:bargain:list', '/marketing/bargain/bargainGoods', 'C', 1, 1, 0, '2021-11-16 16:48:47', '2021-11-24 10:21:47'); +INSERT INTO `eb_system_menu` VALUES (96, 86, '砍价列表', NULL, 'admin:bargain:user:list', '/marketing/bargain/bargainList', 'C', 1, 1, 0, '2021-11-16 16:48:47', '2021-11-24 10:28:10'); +INSERT INTO `eb_system_menu` VALUES (97, 87, '拼团商品', NULL, 'admin:combination:list', '/marketing/groupBuy/groupGoods', 'C', 1, 1, 0, '2021-11-16 16:48:47', '2021-11-24 10:31:41'); +INSERT INTO `eb_system_menu` VALUES (98, 87, '拼团列表', NULL, 'admin:combination:combine:list', '/marketing/groupBuy/groupList', 'C', 1, 1, 0, '2021-11-16 16:48:47', '2021-11-24 10:36:24'); +INSERT INTO `eb_system_menu` VALUES (99, 88, '商品列表', NULL, 'admin:pay:component:product:list', '/marketing/videoChannel/list', 'C', 1, 1, 1, '2021-11-16 16:48:47', '2021-11-24 10:48:43'); +INSERT INTO `eb_system_menu` VALUES (100, 88, '草稿列表', NULL, 'admin:pay:component:product:draft:list', '/marketing/videoChannel/draftList', 'C', 99999, 1, 1, '2021-11-16 16:48:47', '2021-12-08 19:12:09'); +INSERT INTO `eb_system_menu` VALUES (101, 89, '优惠券添加', NULL, 'admin:coupon:save', '', 'A', 1, 1, 0, '2021-11-16 16:50:01', '2021-11-24 09:59:33'); +INSERT INTO `eb_system_menu` VALUES (102, 89, '优惠券状态更新', NULL, 'admin:coupon:update:status', '', 'A', 1, 1, 0, '2021-11-16 16:50:02', '2021-11-24 10:02:10'); +INSERT INTO `eb_system_menu` VALUES (103, 90, '领取优惠券', NULL, '', 'api/admin/marketing/coupon/user/receive', 'A', 99999, 1, 0, '2021-11-16 16:50:02', '2021-11-16 16:50:02'); +INSERT INTO `eb_system_menu` VALUES (104, 8, '分销员管理', NULL, 'admin:retail:list', '/distribution/index', 'C', 0, 1, 0, '2021-11-16 16:52:00', '2021-12-02 09:33:34'); +INSERT INTO `eb_system_menu` VALUES (105, 8, '分销配置', NULL, 'admin:retail:spread:manage:get', '/distribution/distributionconfig', 'C', 1, 1, 0, '2021-11-16 16:52:00', '2021-12-02 09:33:17'); +INSERT INTO `eb_system_menu` VALUES (106, 9, '财务操作', NULL, '', '/financial/commission', 'M', 99999, 1, 0, '2021-11-16 16:59:00', '2021-11-16 16:59:00'); +INSERT INTO `eb_system_menu` VALUES (107, 9, '财务记录', NULL, '', '/financial/record', 'M', 99999, 1, 0, '2021-11-16 16:59:00', '2021-11-16 16:59:00'); +INSERT INTO `eb_system_menu` VALUES (108, 9, '佣金记录', NULL, 'admin:finance:monitor:brokerage:record', '/financial/brokerage', 'C', 1, 1, 0, '2021-11-16 16:59:00', '2021-12-02 09:45:09'); +INSERT INTO `eb_system_menu` VALUES (109, 106, '申请提现', NULL, 'admin:finance:apply:list', '/financial/commission/template', 'C', 1, 1, 0, '2021-11-16 17:01:41', '2021-12-02 09:44:29'); +INSERT INTO `eb_system_menu` VALUES (110, 107, '充值记录', NULL, 'admin:recharge:list', '/financial/record/charge', 'C', 1, 1, 0, '2021-11-16 17:01:41', '2021-12-02 09:43:01'); +INSERT INTO `eb_system_menu` VALUES (111, 107, '资金监控', NULL, 'admin:finance:monitor:list', '/financial/record/monitor', 'C', 1, 1, 0, '2021-11-16 17:01:41', '2021-12-02 09:43:34'); +INSERT INTO `eb_system_menu` VALUES (114, 10, '订单核销', NULL, '', '/javaMobile/orderCancellation', 'C', 99999, 1, 0, '2021-11-16 17:06:20', '2021-11-16 17:06:20'); +INSERT INTO `eb_system_menu` VALUES (115, 10, '订单统计', NULL, '', '/javaMobile/orderStatistics', 'C', 99999, 1, 0, '2021-11-16 17:06:20', '2021-11-16 17:06:20'); +INSERT INTO `eb_system_menu` VALUES (121, 12, '系统设置', NULL, 'admin:system:config:info', '/operation/setting', 'C', 9, 1, 0, '2021-11-16 17:23:37', '2021-12-17 14:16:51'); +INSERT INTO `eb_system_menu` VALUES (122, 12, '一号通', NULL, 'admin:pass:is:login', '/operation/onePass', 'C', 8, 1, 0, '2021-11-16 17:23:37', '2021-12-17 14:17:11'); +INSERT INTO `eb_system_menu` VALUES (123, 12, '管理权限', NULL, '', '/operation/roleManager', 'M', 7, 1, 0, '2021-11-16 17:23:37', '2021-12-17 14:17:26'); +INSERT INTO `eb_system_menu` VALUES (124, 12, '发货设置', NULL, '', '/operation/deliverGoods', 'M', 6, 1, 0, '2021-11-16 17:23:37', '2021-12-17 14:17:37'); +INSERT INTO `eb_system_menu` VALUES (125, 12, '页面管理', NULL, '', '/operation/design', 'M', 5, 1, 1, '2021-11-16 17:23:37', '2021-12-17 14:17:51'); +INSERT INTO `eb_system_menu` VALUES (127, 122, '一号通登录', NULL, 'admin:pass:login', '', 'A', 1, 1, 0, '2021-11-16 17:30:22', '2021-12-02 09:53:30'); +INSERT INTO `eb_system_menu` VALUES (128, 122, '一号通注销', NULL, 'admin:pass:logout', '', 'A', 2, 1, 0, '2021-11-16 17:30:22', '2021-12-02 09:53:50'); +INSERT INTO `eb_system_menu` VALUES (129, 122, '修改密码', NULL, 'admin:pass:update:password', '', 'A', 3, 1, 0, '2021-11-16 17:30:22', '2021-12-02 09:56:07'); +INSERT INTO `eb_system_menu` VALUES (130, 122, '修改手机号码', NULL, 'admin:pass:update:phone', '', 'A', 4, 1, 0, '2021-11-16 17:30:22', '2021-12-02 09:55:59'); +INSERT INTO `eb_system_menu` VALUES (131, 122, '获取验证码', NULL, 'admin:pass:send:code', '', 'A', 5, 1, 0, '2021-11-16 17:30:22', '2021-12-02 09:55:49'); +INSERT INTO `eb_system_menu` VALUES (132, 122, '修改短信签名', NULL, 'admin:sms:modify:sign', '', 'A', 6, 1, 0, '2021-11-16 17:30:22', '2021-12-02 09:58:32'); +INSERT INTO `eb_system_menu` VALUES (133, 122, '短信模板', NULL, 'admin:sms:temps', '', 'A', 7, 1, 0, '2021-11-16 17:30:23', '2021-12-02 09:59:02'); +INSERT INTO `eb_system_menu` VALUES (134, 122, '申请短信模板', NULL, 'admin:sms:temp:apply', '', 'A', 8, 1, 0, '2021-11-16 17:30:23', '2021-12-02 09:59:28'); +INSERT INTO `eb_system_menu` VALUES (135, 122, '模板申请记录', NULL, 'admin:sms:applys', '', 'A', 9, 1, 0, '2021-11-16 17:30:23', '2021-12-02 09:59:48'); +INSERT INTO `eb_system_menu` VALUES (136, 123, '角色管理', NULL, 'admin:system:role:list', '/operation//roleManager/identityManager', 'C', 1, 1, 0, '2021-11-16 17:30:23', '2021-12-06 10:48:49'); +INSERT INTO `eb_system_menu` VALUES (137, 123, '管理员列表', NULL, 'admin:system:admin:list', '/operation//roleManager/adminList', 'C', 1, 1, 0, '2021-11-16 17:30:23', '2021-12-06 11:02:08'); +INSERT INTO `eb_system_menu` VALUES (138, 123, '权限规则', NULL, 'admin:system:menu:list', '/operation//roleManager/promiseRules', 'C', 1, 1, 0, '2021-11-16 17:30:23', '2021-12-06 11:06:12'); +INSERT INTO `eb_system_menu` VALUES (139, 124, '提货设置', NULL, '', '/operation/deliverGoods/takeGoods', 'M', 99999, 1, 0, '2021-11-16 17:30:23', '2021-11-16 17:30:23'); +INSERT INTO `eb_system_menu` VALUES (140, 124, '运费模板', NULL, 'admin:shipping:templates:list', '/operation/deliverGoods/freightSet', 'C', 2, 1, 0, '2021-11-16 17:30:23', '2021-12-02 11:44:01'); +INSERT INTO `eb_system_menu` VALUES (141, 125, '一键换色', NULL, '', '/operation/design/theme', 'C', 99999, 1, 1, '2021-11-16 17:30:23', '2021-11-16 17:30:23'); +INSERT INTO `eb_system_menu` VALUES (142, 125, '页面设计', NULL, 'admin:page:layout:index', '/operation/design/viewDesign', 'C', 99999, 1, 1, '2021-11-16 17:30:23', '2021-12-07 19:14:29'); +INSERT INTO `eb_system_menu` VALUES (143, 136, '身份添加', NULL, 'admin:system:role:save', 'api/admin/system/role/save', 'A', 1, 1, 0, '2021-11-16 17:35:42', '2021-12-06 10:49:22'); +INSERT INTO `eb_system_menu` VALUES (144, 136, '身份删除', NULL, 'admin:system:role:delete', '', 'A', 2, 1, 0, '2021-11-16 17:35:42', '2021-12-06 10:49:41'); +INSERT INTO `eb_system_menu` VALUES (145, 136, '身份修改', NULL, 'admin:system:role:update', '', 'A', 3, 1, 0, '2021-11-16 17:35:43', '2021-12-07 19:04:41'); +INSERT INTO `eb_system_menu` VALUES (146, 137, '管理员添加', NULL, 'admin:system:admin:save', '', 'A', 2, 1, 0, '2021-11-16 17:35:43', '2021-12-06 11:02:33'); +INSERT INTO `eb_system_menu` VALUES (147, 137, '管理员修改', NULL, 'admin:system:admin:update', '', 'A', 3, 1, 0, '2021-11-16 17:35:43', '2021-12-06 11:02:52'); +INSERT INTO `eb_system_menu` VALUES (148, 137, '管理员删除', NULL, 'admin:system:admin:delete', '', 'A', 4, 1, 0, '2021-11-16 17:35:43', '2021-12-06 11:03:14'); +INSERT INTO `eb_system_menu` VALUES (149, 137, '管理员状态更新', NULL, 'admin:system:admin:update:status', '', 'A', 5, 1, 0, '2021-11-16 17:35:43', '2021-12-06 11:03:51'); +INSERT INTO `eb_system_menu` VALUES (151, 138, '权限新增', NULL, 'admin:system:menu:add', NULL, 'A', 99999, 1, 0, '2021-11-16 17:35:43', '2021-12-03 16:39:59'); +INSERT INTO `eb_system_menu` VALUES (152, 138, '权限删除', NULL, 'admin:system:menu:delete', NULL, 'A', 99999, 1, 0, '2021-11-16 17:35:43', '2021-12-03 16:39:59'); +INSERT INTO `eb_system_menu` VALUES (153, 138, '权限更新', NULL, 'admin:system:menu:update', NULL, 'A', 99999, 1, 0, '2021-11-16 17:35:43', '2021-12-03 16:39:59'); +INSERT INTO `eb_system_menu` VALUES (154, 138, '更新权限状态', NULL, 'admin:system:menu:show:status', NULL, 'A', 99999, 1, 0, '2021-11-16 17:35:43', '2021-12-03 16:39:59'); +INSERT INTO `eb_system_menu` VALUES (155, 139, '提货点', NULL, 'admin:system:store:list', '/operation/deliverGoods/takeGoods/deliveryAddress', 'C', 1, 1, 0, '2021-11-16 17:35:43', '2021-12-02 10:25:56'); +INSERT INTO `eb_system_menu` VALUES (156, 139, '核销订单', NULL, 'admin:system:order:list', '/operation/deliverGoods/takeGoods/collateOrder', 'C', 2, 1, 0, '2021-11-16 17:35:43', '2021-12-02 11:11:01'); +INSERT INTO `eb_system_menu` VALUES (157, 139, '核销员', NULL, 'admin:system:staff:list', '/operation/deliverGoods/takeGoods/collateUser', 'C', 3, 1, 0, '2021-11-16 17:35:43', '2021-12-02 11:11:37'); +INSERT INTO `eb_system_menu` VALUES (158, 13, '素材管理', NULL, 'admin:system:attachment:list', '/maintain/picture', 'C', 1, 1, 0, '2021-11-16 17:38:38', '2021-12-02 11:24:34'); +INSERT INTO `eb_system_menu` VALUES (159, 13, '开发配置', NULL, '', '/maintain//devconfiguration', 'M', 99999, 1, 0, '2021-11-16 17:38:38', '2021-11-16 17:38:38'); +INSERT INTO `eb_system_menu` VALUES (160, 13, '申请授权', NULL, '', '/maintain/authCRMEB', 'C', 99999, 1, 0, '2021-11-16 17:38:38', '2021-11-16 17:38:38'); +INSERT INTO `eb_system_menu` VALUES (161, 13, '物流设置', NULL, '', '/maintain/logistics', 'M', 99999, 1, 0, '2021-11-16 17:38:38', '2021-11-16 17:38:38'); +INSERT INTO `eb_system_menu` VALUES (162, 158, '删除素材', NULL, 'admin:system:attachment:delete', 'api/admin/system/attachment/delete', 'A', 1, 1, 0, '2021-11-16 17:41:33', '2021-12-02 11:25:04'); +INSERT INTO `eb_system_menu` VALUES (163, 159, '配置分类', NULL, '', '/maintain/devconfiguration/configCategory', 'C', 99999, 1, 0, '2021-11-16 17:41:33', '2021-11-16 17:41:33'); +INSERT INTO `eb_system_menu` VALUES (164, 159, '组合数据', NULL, 'admin:system:group:list', '/maintain/devconfiguration/combineddata', 'C', 1, 1, 0, '2021-11-16 17:41:33', '2021-12-02 11:28:57'); +INSERT INTO `eb_system_menu` VALUES (165, 159, '表单配置', NULL, 'admin:system:form:list', '/maintain/devconfiguration/formConfig', 'C', 1, 1, 0, '2021-11-16 17:41:33', '2021-12-02 11:36:57'); +INSERT INTO `eb_system_menu` VALUES (166, 161, '城市数据', NULL, 'admin:system:city:list', '/maintain/logistics/cityList', 'C', 1, 1, 0, '2021-11-16 17:41:33', '2021-12-02 11:55:18'); +INSERT INTO `eb_system_menu` VALUES (167, 161, '物流公司', NULL, 'admin:express:list', '/maintain/logistics/companyList', 'C', 2, 1, 0, '2021-11-16 17:41:33', '2021-12-09 15:32:05'); +INSERT INTO `eb_system_menu` VALUES (168, 164, '数据组添加', NULL, 'admin:system:group:save', '', 'A', 2, 1, 0, '2021-11-16 17:44:35', '2021-12-02 11:29:18'); +INSERT INTO `eb_system_menu` VALUES (169, 164, '数据组修改', NULL, 'admin:system:group:update', '', 'A', 3, 1, 0, '2021-11-16 17:44:35', '2021-12-02 11:29:46'); +INSERT INTO `eb_system_menu` VALUES (170, 164, '数据组删除', NULL, 'admin:system:group:delete', '', 'A', 4, 1, 0, '2021-11-16 17:44:35', '2021-12-02 11:30:07'); +INSERT INTO `eb_system_menu` VALUES (171, 164, '组合数据添加', NULL, 'admin:system:group:data:save', '', 'A', 5, 1, 0, '2021-11-16 17:44:35', '2021-12-02 11:34:10'); +INSERT INTO `eb_system_menu` VALUES (172, 164, '组合数据修改', NULL, 'admin:system:group:data:update', '', 'A', 6, 1, 0, '2021-11-16 17:44:35', '2021-12-02 11:34:33'); +INSERT INTO `eb_system_menu` VALUES (173, 164, '组合数据删除', NULL, 'admin:system:group:data:delete', '', 'A', 7, 1, 0, '2021-11-16 17:44:35', '2021-12-02 11:35:08'); +INSERT INTO `eb_system_menu` VALUES (174, 165, '表单添加', NULL, 'admin:system:form:save', '', 'A', 2, 1, 0, '2021-11-16 17:44:35', '2021-12-02 11:38:28'); +INSERT INTO `eb_system_menu` VALUES (176, 165, '表单修改', NULL, 'admin:system:form:update', '', 'A', 4, 1, 0, '2021-11-16 17:44:35', '2021-12-02 11:39:09'); +INSERT INTO `eb_system_menu` VALUES (179, 32, '订单导出', '', 'admin:export:excel:order', '', 'A', 1, 1, 0, '2021-11-23 16:11:27', '2021-11-23 16:11:27'); +INSERT INTO `eb_system_menu` VALUES (180, 32, '订单改价', '', 'admin:order:update:price', '', 'A', 0, 1, 0, '2021-11-23 16:24:42', '2021-11-23 16:24:42'); +INSERT INTO `eb_system_menu` VALUES (181, 32, '物流查询', '', 'admin:order:logistics:info', '', 'A', 0, 1, 0, '2021-11-23 16:26:43', '2021-11-23 16:26:43'); +INSERT INTO `eb_system_menu` VALUES (182, 32, '订单各状态数量', '', 'admin:order:status:num', '', 'A', 0, 1, 0, '2021-11-23 16:27:40', '2021-11-23 16:27:40'); +INSERT INTO `eb_system_menu` VALUES (184, 76, '新增关键字回复', '', 'admin:wechat:keywords:reply:save', '', 'A', 0, 1, 0, '2021-11-23 17:53:54', '2021-12-06 15:29:55'); +INSERT INTO `eb_system_menu` VALUES (185, 76, '删除关键字回复', '', 'admin:wechat:keywords:reply:delete', '', 'A', 0, 1, 0, '2021-11-23 17:54:55', '2021-12-06 15:29:46'); +INSERT INTO `eb_system_menu` VALUES (186, 75, '修改关键字回复', '', 'admin:wechat:keywords:reply:update', '', 'A', 0, 1, 0, '2021-11-23 17:55:32', '2021-12-06 15:27:00'); +INSERT INTO `eb_system_menu` VALUES (187, 76, '修改关键字状态', '', 'admin:wechat:keywords:reply:status', '', 'A', 0, 1, 0, '2021-11-23 17:56:01', '2021-12-06 15:29:30'); +INSERT INTO `eb_system_menu` VALUES (188, 76, '微信关键字详情', '', 'admin:wechat:keywords:reply:info', '', 'A', 0, 1, 0, '2021-11-23 17:57:04', '2021-12-06 15:28:26'); +INSERT INTO `eb_system_menu` VALUES (189, 89, '复制', '', 'admin:coupon:info', '', 'A', 1, 1, 0, '2021-11-24 10:05:04', '2021-11-24 10:05:04'); +INSERT INTO `eb_system_menu` VALUES (191, 94, '添加秒杀商品', '', 'admin:seckill:save', '', 'A', 0, 1, 0, '2021-11-24 10:15:57', '2021-11-24 10:15:57'); +INSERT INTO `eb_system_menu` VALUES (192, 94, '删除秒杀商品', '', 'admin:seckill:delete', '', 'A', 0, 1, 0, '2021-11-24 10:16:20', '2021-11-24 10:16:20'); +INSERT INTO `eb_system_menu` VALUES (193, 94, '修改秒杀商品', '', 'admin:seckill:update', '', 'A', 0, 1, 0, '2021-11-24 10:16:49', '2021-11-24 10:16:49'); +INSERT INTO `eb_system_menu` VALUES (194, 94, '修改秒杀商品状态', '', 'admin:seckill:update:status', '', 'A', 0, 1, 0, '2021-11-24 10:17:24', '2021-11-24 10:17:24'); +INSERT INTO `eb_system_menu` VALUES (195, 94, '秒杀商品详情', '', 'admin:seckill:info', '', 'A', 0, 1, 0, '2021-11-24 10:17:52', '2021-11-24 10:17:52'); +INSERT INTO `eb_system_menu` VALUES (196, 93, '秒杀配置新增', '', 'admin:seckill:manger:save', '', 'A', 0, 1, 0, '2021-11-24 10:18:29', '2021-11-24 10:18:29'); +INSERT INTO `eb_system_menu` VALUES (197, 93, '秒杀配置删除', '', 'admin:seckill:manger:delete', '', 'A', 0, 1, 0, '2021-11-24 10:18:54', '2021-11-24 10:18:54'); +INSERT INTO `eb_system_menu` VALUES (198, 93, '秒杀配置修改', '', 'admin:seckill:manger:update', '', 'A', 0, 1, 0, '2021-11-24 10:19:28', '2021-11-24 10:19:28'); +INSERT INTO `eb_system_menu` VALUES (199, 93, '秒杀配置详情', '', 'admin:seckill:manger:info', '', 'A', 0, 1, 0, '2021-11-24 10:20:02', '2021-11-24 10:20:02'); +INSERT INTO `eb_system_menu` VALUES (200, 93, '秒杀配置状态修改', '', 'admin:seckill:manger:update:status', '', 'A', 0, 1, 0, '2021-11-24 10:20:37', '2021-11-24 10:20:37'); +INSERT INTO `eb_system_menu` VALUES (201, 95, '新增砍价商品', '', 'admin:bargain:save', '', 'A', 0, 1, 0, '2021-11-24 10:22:48', '2021-11-24 10:22:48'); +INSERT INTO `eb_system_menu` VALUES (202, 95, '删除砍价商品', '', 'admin:bargain:delete', '', 'A', 0, 1, 0, '2021-11-24 10:23:15', '2021-11-24 10:23:15'); +INSERT INTO `eb_system_menu` VALUES (203, 95, '修改砍价商品', '', 'admin:bargain:update', '', 'A', 0, 1, 0, '2021-11-24 10:23:42', '2021-11-24 10:23:42'); +INSERT INTO `eb_system_menu` VALUES (204, 95, '砍价商品详情', '', 'admin:bargain:info', '', 'A', 0, 1, 0, '2021-11-24 10:25:19', '2021-11-24 10:25:19'); +INSERT INTO `eb_system_menu` VALUES (205, 95, '修改砍价商品状态', '', 'admin:bargain:update:status', '', 'A', 0, 1, 0, '2021-11-24 10:26:05', '2021-11-24 10:26:05'); +INSERT INTO `eb_system_menu` VALUES (207, 95, '砍价商品导出', '', 'admin:export:excel:bargain', '', 'A', 0, 1, 0, '2021-11-24 10:29:11', '2021-11-24 10:29:11'); +INSERT INTO `eb_system_menu` VALUES (208, 14, '商品导出', '', 'admin:export:excel:product', '', 'A', 0, 1, 0, '2021-11-24 10:30:11', '2021-11-24 10:30:11'); +INSERT INTO `eb_system_menu` VALUES (209, 97, '新增拼团商品', '', 'admin:combination:save', '', 'A', 0, 1, 0, '2021-11-24 10:32:11', '2021-11-24 10:32:11'); +INSERT INTO `eb_system_menu` VALUES (210, 97, '拼团商品删除', '', 'admin:combination:delete', '', 'A', 0, 1, 0, '2021-11-24 10:32:46', '2021-11-24 10:32:46'); +INSERT INTO `eb_system_menu` VALUES (211, 97, '拼团商品修改', '', 'admin:combination:update', '', 'A', 0, 1, 0, '2021-11-24 10:33:12', '2021-11-24 10:33:12'); +INSERT INTO `eb_system_menu` VALUES (212, 97, '拼团商品详情', '', 'admin:combination:info', '', 'A', 0, 1, 0, '2021-11-24 10:33:38', '2021-11-24 10:33:38'); +INSERT INTO `eb_system_menu` VALUES (213, 97, '修改拼团商品状态', '', 'admin:combination:update:status', '', 'A', 0, 1, 0, '2021-11-24 10:34:13', '2021-12-09 16:31:00'); +INSERT INTO `eb_system_menu` VALUES (214, 97, '拼团商品导出', '', 'admin:export:excel:combiantion', '', 'A', 0, 1, 0, '2021-11-24 10:35:22', '2021-11-24 10:35:22'); +INSERT INTO `eb_system_menu` VALUES (215, 98, '拼团统计', '', 'admin:combination:statistics', '', 'A', 0, 1, 0, '2021-11-24 10:36:55', '2021-11-24 10:36:55'); +INSERT INTO `eb_system_menu` VALUES (216, 100, '视频号商品添加', '', 'admin:pay:component:product:add', '', 'A', 0, 1, 1, '2021-11-24 10:50:47', '2021-11-24 10:50:47'); +INSERT INTO `eb_system_menu` VALUES (217, 100, '编辑视频号商品', '', 'admin:pay:component:product:update', '', 'A', 0, 1, 1, '2021-11-24 10:53:35', '2021-11-24 10:53:35'); +INSERT INTO `eb_system_menu` VALUES (218, 100, '视频号商品详情', '', 'admin:pay:component:product:draft:info', '', 'A', 0, 1, 1, '2021-11-24 10:54:15', '2021-11-24 10:54:15'); +INSERT INTO `eb_system_menu` VALUES (219, 99, '视频号商品删除', '', 'admin:pay:component:product:delete', '', 'A', 0, 1, 1, '2021-11-24 10:55:40', '2021-11-24 10:55:40'); +INSERT INTO `eb_system_menu` VALUES (220, 99, '下架视频号商品', '', 'admin:pay:component:product:delisting', '', 'A', 0, 1, 1, '2021-11-24 10:56:07', '2021-11-24 10:56:07'); +INSERT INTO `eb_system_menu` VALUES (224, 32, '易联云小票打印', '', 'admin:yly:print', '', 'A', 0, 1, 0, '2021-11-27 17:50:26', '2021-11-27 17:53:04'); +INSERT INTO `eb_system_menu` VALUES (225, 12, '配置引导', '', '', '/operation/guide', 'C', 0, 1, 1, '2021-11-29 11:23:37', '2021-11-29 11:23:37'); +INSERT INTO `eb_system_menu` VALUES (226, 1, '控制台', '', '', '/dashboard', 'C', 9, 1, 0, '2021-11-30 14:13:37', '2021-12-15 18:12:40'); +INSERT INTO `eb_system_menu` VALUES (227, 1, '用户统计', '', '', '/statuser', 'C', 7, 1, 1, '2021-11-30 14:14:10', '2021-12-15 18:13:04'); +INSERT INTO `eb_system_menu` VALUES (228, 1, '交易统计', '', '', '/transaction', 'C', 3, 1, 1, '2021-11-30 14:14:34', '2021-12-03 15:14:02'); +INSERT INTO `eb_system_menu` VALUES (229, 1, '商品统计', '', '', '/product', 'C', 8, 1, 1, '2021-11-30 14:17:46', '2021-12-15 18:12:54'); +INSERT INTO `eb_system_menu` VALUES (231, 105, '分销配置信息保存', '', 'admin:retail:spread:manage:set', '', 'A', 0, 1, 0, '2021-12-02 09:35:28', '2021-12-02 09:35:28'); +INSERT INTO `eb_system_menu` VALUES (232, 122, '一号通套餐列表', '', 'admin:pass:meal:list', '', 'A', 10, 1, 0, '2021-12-02 10:01:18', '2021-12-02 10:01:18'); +INSERT INTO `eb_system_menu` VALUES (233, 122, '一号通套餐购买', '', 'admin:pass:meal:code', '', 'A', 11, 1, 0, '2021-12-02 10:01:55', '2021-12-02 10:01:55'); +INSERT INTO `eb_system_menu` VALUES (234, 122, '一号通账号注册', '', 'admin:pass:register', '', 'A', 0, 1, 0, '2021-12-02 10:03:14', '2021-12-02 10:03:14'); +INSERT INTO `eb_system_menu` VALUES (235, 122, '一号通服务开通', '', 'admin:pass:service:open', '', 'A', 12, 1, 0, '2021-12-02 10:04:38', '2021-12-02 10:04:38'); +INSERT INTO `eb_system_menu` VALUES (236, 122, '一号通用量记录', '', 'admin:pass:user:record', '', 'A', 13, 1, 0, '2021-12-02 10:05:12', '2021-12-02 10:05:12'); +INSERT INTO `eb_system_menu` VALUES (237, 155, '提货点数量', '', 'admin:system:store:count', '', 'A', 2, 1, 0, '2021-12-02 10:29:22', '2021-12-02 10:29:22'); +INSERT INTO `eb_system_menu` VALUES (238, 155, '新增提货点', '', 'admin:system:store:save', '', 'A', 3, 1, 0, '2021-12-02 10:29:53', '2021-12-02 10:29:53'); +INSERT INTO `eb_system_menu` VALUES (239, 155, '提货点详情', '', 'admin:system:store:info', '', 'A', 4, 1, 0, '2021-12-02 10:30:20', '2021-12-02 10:30:20'); +INSERT INTO `eb_system_menu` VALUES (240, 155, '提货点显示状态', '', 'admin:system:store:update:status', '', 'A', 5, 1, 0, '2021-12-02 10:30:45', '2021-12-02 10:30:45'); +INSERT INTO `eb_system_menu` VALUES (241, 155, '修改提货点', '', 'admin:system:store:update', '', 'A', 6, 1, 0, '2021-12-02 10:31:11', '2021-12-02 10:31:11'); +INSERT INTO `eb_system_menu` VALUES (242, 155, '删除提货点', '', 'admin:system:store:delete', '', 'A', 7, 1, 0, '2021-12-02 10:31:33', '2021-12-02 10:31:33'); +INSERT INTO `eb_system_menu` VALUES (243, 155, '恢复提货点', '', 'admin:system:store:recovery', '', 'A', 8, 1, 0, '2021-12-02 10:32:42', '2021-12-02 10:32:42'); +INSERT INTO `eb_system_menu` VALUES (244, 155, '彻底删除提货点', '', 'admin:system:store:completely:delete', '', 'A', 9, 1, 0, '2021-12-02 10:33:18', '2021-12-02 10:33:18'); +INSERT INTO `eb_system_menu` VALUES (245, 157, '新增核销员', '', 'admin:system:staff:save', '', 'A', 0, 1, 0, '2021-12-02 11:12:19', '2021-12-02 11:12:19'); +INSERT INTO `eb_system_menu` VALUES (246, 157, '删除核销员', '', 'admin:system:staff:delete', '', 'A', 0, 1, 0, '2021-12-02 11:12:40', '2021-12-02 11:12:40'); +INSERT INTO `eb_system_menu` VALUES (247, 157, '核销员详情', '', 'admin:system:staff:info', '', 'A', 0, 1, 0, '2021-12-02 11:13:09', '2021-12-02 11:13:09'); +INSERT INTO `eb_system_menu` VALUES (248, 157, '核销员修改', '', 'admin:system:staff:update', '', 'A', 0, 1, 0, '2021-12-02 11:13:37', '2021-12-02 11:13:37'); +INSERT INTO `eb_system_menu` VALUES (250, 164, '组合数据详情', '', 'admin:system:group:data:info', '', 'A', 8, 1, 0, '2021-12-02 11:35:48', '2021-12-02 11:35:48'); +INSERT INTO `eb_system_menu` VALUES (251, 167, '同步物流公司', '', 'admin:express:sync', '', 'A', 3, 1, 0, '2021-12-02 11:43:01', '2021-12-02 11:43:01'); +INSERT INTO `eb_system_menu` VALUES (252, 140, '物流模板新增', '', 'admin:shipping:templates:save', '', 'A', 3, 1, 0, '2021-12-02 11:44:27', '2021-12-02 11:44:27'); +INSERT INTO `eb_system_menu` VALUES (253, 140, '物流模板删除', '', 'admin:shipping:templates:delete', '', 'A', 4, 1, 0, '2021-12-02 11:44:54', '2021-12-02 11:44:54'); +INSERT INTO `eb_system_menu` VALUES (254, 140, '物流模板详情', '', 'admin:shipping:templates:info', '', 'A', 5, 1, 0, '2021-12-02 11:45:23', '2021-12-02 11:45:23'); +INSERT INTO `eb_system_menu` VALUES (255, 140, '物流模板修改', '', 'admin:shipping:templates:update', '', 'A', 6, 1, 0, '2021-12-02 11:45:47', '2021-12-02 11:45:47'); +INSERT INTO `eb_system_menu` VALUES (256, 140, '物流免费模板', '', 'admin:shipping:templates:free:list', '', 'A', 7, 1, 0, '2021-12-02 11:46:54', '2021-12-02 11:46:54'); +INSERT INTO `eb_system_menu` VALUES (257, 140, '物流付费模板', '', 'admin:shipping:templates:region:list', '', 'A', 8, 1, 0, '2021-12-02 11:47:21', '2021-12-02 11:47:21'); +INSERT INTO `eb_system_menu` VALUES (258, 166, '城市详情', '', 'admin:system:city:info', '', 'A', 0, 1, 0, '2021-12-02 11:55:47', '2021-12-02 11:55:47'); +INSERT INTO `eb_system_menu` VALUES (259, 166, '修改城市', '', 'admin:system:city:update', '', 'A', 0, 1, 0, '2021-12-02 11:57:04', '2021-12-02 11:57:04'); +INSERT INTO `eb_system_menu` VALUES (260, 227, '用户总统计数据', '', 'admin:statistics:user:total:data', '', 'A', 0, 0, 1, '2021-12-03 14:55:26', '2021-12-03 14:55:26'); +INSERT INTO `eb_system_menu` VALUES (261, 227, '用户概览', '', 'admin:statistics:user:overview', '', 'A', 0, 1, 1, '2021-12-03 14:57:21', '2021-12-03 14:57:34'); +INSERT INTO `eb_system_menu` VALUES (262, 227, '用户性别数据', '', 'admin:statistics:user:sex', '', 'A', 0, 1, 1, '2021-12-03 14:58:03', '2021-12-03 14:58:03'); +INSERT INTO `eb_system_menu` VALUES (263, 227, '用户渠道数据', '', 'admin:statistics:user:channel', '', 'A', 0, 1, 1, '2021-12-03 14:58:25', '2021-12-03 14:58:36'); +INSERT INTO `eb_system_menu` VALUES (264, 227, '用户区域数据', '', 'admin:statistics:user:area', '', 'A', 0, 1, 1, '2021-12-03 14:58:55', '2021-12-03 14:58:55'); +INSERT INTO `eb_system_menu` VALUES (265, 227, '用户概览列表', '', 'admin:statistics:user:overview:list', '', 'A', 0, 1, 1, '2021-12-03 14:59:17', '2021-12-03 14:59:17'); +INSERT INTO `eb_system_menu` VALUES (266, 228, '交易统计数据', '', 'admin:statistics:trade:data', '', 'A', 0, 1, 1, '2021-12-03 15:02:05', '2021-12-03 15:02:05'); +INSERT INTO `eb_system_menu` VALUES (267, 228, '交易概览', '', 'admin:statistics:trade:overview', '', 'A', 0, 1, 1, '2021-12-03 15:02:38', '2021-12-03 15:02:38'); +INSERT INTO `eb_system_menu` VALUES (268, 228, '交易趋势数据', '', 'admin:statistics:trade:trend', '', 'A', 0, 1, 1, '2021-12-03 15:02:56', '2021-12-03 15:02:56'); +INSERT INTO `eb_system_menu` VALUES (269, 12, '消息通知', '', 'admin:system:notification:list', '/operation/notification', 'C', 4, 1, 0, '2021-12-03 15:13:08', '2021-12-17 14:18:16'); +INSERT INTO `eb_system_menu` VALUES (270, 229, '商品统计数据', '', 'admin:statistics:product:data', '', 'A', 0, 1, 1, '2021-12-03 15:27:28', '2021-12-03 15:27:28'); +INSERT INTO `eb_system_menu` VALUES (271, 229, '商品排行榜', '', 'admin:statistics:product:ranking', '', 'A', 0, 1, 1, '2021-12-03 15:27:55', '2021-12-03 15:27:55'); +INSERT INTO `eb_system_menu` VALUES (272, 229, '商品趋势数据', '', 'admin:statistics:product:trend', '', 'A', 0, 1, 1, '2021-12-03 15:28:15', '2021-12-03 15:28:15'); +INSERT INTO `eb_system_menu` VALUES (273, 14, '商品表头数量', '', 'admin:product:tabs:headers', '', 'A', 0, 1, 0, '2021-12-03 15:48:18', '2021-12-03 15:48:18'); +INSERT INTO `eb_system_menu` VALUES (274, 14, '导入99Api商品', '', 'admin:product:import:product', '', 'A', 0, 1, 0, '2021-12-03 15:50:18', '2021-12-03 15:50:18'); +INSERT INTO `eb_system_menu` VALUES (275, 14, '获取复制商品配置', '', 'admin:product:copy:config', '', 'A', 0, 1, 0, '2021-12-03 15:51:00', '2021-12-03 15:51:00'); +INSERT INTO `eb_system_menu` VALUES (276, 14, '复制平台商品', '', 'admin:product:copy:product', '', 'A', 0, 1, 0, '2021-12-03 15:51:16', '2021-12-03 15:51:16'); +INSERT INTO `eb_system_menu` VALUES (277, 14, '商品详情', '', 'admin:product:info', '', 'A', 0, 1, 0, '2021-12-03 15:52:22', '2021-12-03 15:52:22'); +INSERT INTO `eb_system_menu` VALUES (278, 14, '恢复商品', '', 'admin:product:restore', '', 'A', 0, 1, 0, '2021-12-03 15:53:24', '2021-12-03 15:53:24'); +INSERT INTO `eb_system_menu` VALUES (280, 0, '登录管理', NULL, NULL, NULL, 'M', 1, 0, 0, '2021-12-03 16:31:43', '2021-12-16 16:17:29'); +INSERT INTO `eb_system_menu` VALUES (281, 280, '登陆用户详情', NULL, 'admin:info', NULL, 'A', 99999, 1, 0, '2021-12-03 16:32:39', '2021-12-03 16:32:39'); +INSERT INTO `eb_system_menu` VALUES (282, 280, '退出登录', NULL, 'admin:logout', NULL, 'A', 99999, 1, 0, '2021-12-03 16:33:29', '2021-12-03 16:33:42'); +INSERT INTO `eb_system_menu` VALUES (283, 280, '管理员可访问目录', NULL, 'admin:login:menus', NULL, 'A', 99999, 1, 0, '2021-12-03 16:33:40', '2021-12-03 16:33:45'); +INSERT INTO `eb_system_menu` VALUES (284, 138, '菜单详情', NULL, 'admin:system:menu:info', NULL, 'A', 99999, 1, 0, '2021-12-03 16:39:41', '2021-12-03 16:39:55'); +INSERT INTO `eb_system_menu` VALUES (285, 226, '首页数据', '', 'admin:statistics:home:index', '', 'A', 0, 1, 0, '2021-12-03 16:51:09', '2021-12-03 16:51:09'); +INSERT INTO `eb_system_menu` VALUES (286, 226, '用户曲线图', '', 'admin:statistics:home:chart:user', '', 'A', 0, 1, 0, '2021-12-03 16:51:29', '2021-12-03 16:51:40'); +INSERT INTO `eb_system_menu` VALUES (287, 226, '用户购买统计', '', 'admin:statistics:home:chart:user:buy', '', 'A', 0, 1, 0, '2021-12-03 16:51:59', '2021-12-03 16:51:59'); +INSERT INTO `eb_system_menu` VALUES (288, 226, '30天订单量趋势', '', 'admin:statistics:home:chart:order', '', 'A', 0, 1, 0, '2021-12-03 16:52:47', '2021-12-03 16:52:47'); +INSERT INTO `eb_system_menu` VALUES (289, 226, '周订单量趋势', '', 'admin:statistics:home:chart:order:week', '', 'A', 0, 1, 0, '2021-12-03 16:53:00', '2021-12-03 16:53:00'); +INSERT INTO `eb_system_menu` VALUES (290, 226, '月订单量趋势', '', 'admin:statistics:home:chart:order:month', '', 'A', 0, 1, 0, '2021-12-03 16:53:16', '2021-12-03 16:53:16'); +INSERT INTO `eb_system_menu` VALUES (291, 226, '年订单量趋势', '', 'admin:statistics:home:chart:order:year', '', 'A', 0, 1, 0, '2021-12-03 16:53:36', '2021-12-03 16:53:36'); +INSERT INTO `eb_system_menu` VALUES (293, 110, '提现总金额', '', 'admin:recharge:balance', '', 'A', 0, 1, 0, '2021-12-03 17:05:23', '2021-12-03 17:05:23'); +INSERT INTO `eb_system_menu` VALUES (294, 0, '分类服务', '', '', '', 'M', 0, 0, 0, '2021-12-03 17:15:29', '2021-12-03 17:15:29'); +INSERT INTO `eb_system_menu` VALUES (295, 294, '分类列表', '', 'admin:category:list', '', 'A', 0, 1, 0, '2021-12-03 17:16:12', '2021-12-03 17:16:12'); +INSERT INTO `eb_system_menu` VALUES (296, 294, '新增分类', '', 'admin:category:save', '', 'A', 0, 1, 0, '2021-12-03 17:16:35', '2021-12-03 17:16:35'); +INSERT INTO `eb_system_menu` VALUES (297, 294, '删除分类', '', 'admin:category:delete', '', 'A', 0, 1, 0, '2021-12-03 17:16:52', '2021-12-03 17:16:52'); +INSERT INTO `eb_system_menu` VALUES (298, 294, '修改分类', '', 'admin:category:update', '', 'A', 0, 1, 0, '2021-12-03 17:17:11', '2021-12-03 17:17:11'); +INSERT INTO `eb_system_menu` VALUES (299, 294, '分类详情', '', 'admin:category:info', '', 'A', 0, 1, 0, '2021-12-03 17:17:35', '2021-12-03 17:17:35'); +INSERT INTO `eb_system_menu` VALUES (300, 294, '分类tree列表', '', 'admin:category:list:tree', '', 'A', 0, 1, 0, '2021-12-03 17:18:06', '2021-12-03 17:18:06'); +INSERT INTO `eb_system_menu` VALUES (301, 294, '根据id集合获取分类列表', '', 'admin:category:list:ids', '', 'A', 0, 1, 0, '2021-12-03 17:18:23', '2021-12-03 17:18:23'); +INSERT INTO `eb_system_menu` VALUES (302, 294, '更改分类状态', '', 'admin:category:update:status', '', 'A', 0, 1, 0, '2021-12-03 17:18:38', '2021-12-03 17:18:38'); +INSERT INTO `eb_system_menu` VALUES (303, 164, '分页组合数据详情', '', 'admin:system:group:data:list', '', 'A', 0, 1, 0, '2021-12-03 17:39:37', '2021-12-03 17:39:37'); +INSERT INTO `eb_system_menu` VALUES (304, 39, '发送优惠券列表', '', 'admin:coupon:send:list', '', 'A', 0, 1, 0, '2021-12-03 17:41:34', '2021-12-10 19:12:23'); +INSERT INTO `eb_system_menu` VALUES (305, 68, '下载小程序', '', 'admin:wechat:code:download', '/appSetting/publicRoutine/download', 'C', 0, 1, 1, '2021-12-03 18:31:54', '2021-12-10 14:47:17'); +INSERT INTO `eb_system_menu` VALUES (306, 32, '订单列表统计数据', '', 'admin:order:list:data', '', 'A', 0, 1, 0, '2021-12-06 09:40:56', '2021-12-06 09:40:56'); +INSERT INTO `eb_system_menu` VALUES (307, 32, '面单默认配置信息', '', 'admin:order:sheet:info', '', 'A', 0, 1, 0, '2021-12-06 09:42:51', '2021-12-06 09:42:51'); +INSERT INTO `eb_system_menu` VALUES (308, 32, '订单详情', '', 'admin:order:info', '', 'A', 0, 1, 0, '2021-12-06 09:44:00', '2021-12-06 09:44:00'); +INSERT INTO `eb_system_menu` VALUES (309, 32, '订单操作记录列表', '', 'admin:order:status:list', '', 'A', 0, 1, 0, '2021-12-06 09:45:04', '2021-12-06 09:45:04'); +INSERT INTO `eb_system_menu` VALUES (310, 166, '城市树列表', '', 'admin:system:city:list:tree', '', 'A', 0, 1, 0, '2021-12-06 10:30:39', '2021-12-06 10:30:39'); +INSERT INTO `eb_system_menu` VALUES (311, 136, '角色详情', '', 'admin:system:role:info', '', 'A', 4, 1, 0, '2021-12-06 10:50:32', '2021-12-06 10:50:32'); +INSERT INTO `eb_system_menu` VALUES (312, 136, '修改角色状态', '', 'admin:system:role:update:status', '', 'A', 5, 1, 0, '2021-12-06 10:51:09', '2021-12-06 10:51:09'); +INSERT INTO `eb_system_menu` VALUES (313, 137, '管理员详情', '', 'admin:system:admin:info', '', 'A', 6, 1, 0, '2021-12-06 11:04:41', '2021-12-06 11:04:41'); +INSERT INTO `eb_system_menu` VALUES (314, 137, '是否接收状态', '', 'admin:system:admin:update:sms', '', 'A', 7, 1, 0, '2021-12-06 11:05:17', '2021-12-06 11:05:17'); +INSERT INTO `eb_system_menu` VALUES (315, 39, '用户详情页Top数据', '', 'admin:user:topdetail', '', 'A', 0, 1, 0, '2021-12-06 14:55:27', '2021-12-06 14:55:27'); +INSERT INTO `eb_system_menu` VALUES (316, 39, '用户信息详情', '', 'admin:user:infobycondition', '', 'A', 0, 1, 0, '2021-12-06 14:56:40', '2021-12-06 14:56:40'); +INSERT INTO `eb_system_menu` VALUES (317, 39, '用户分组', '', 'admin:user:group', '', 'A', 0, 1, 0, '2021-12-06 14:58:02', '2021-12-06 14:58:02'); +INSERT INTO `eb_system_menu` VALUES (318, 39, '修改用户手机号', '', 'admin:user:update:phone', '', 'A', 0, 1, 0, '2021-12-06 14:58:49', '2021-12-06 14:58:49'); +INSERT INTO `eb_system_menu` VALUES (319, 39, '更新用户会员等级', '', 'admin:user:update:level', '', 'A', 0, 1, 0, '2021-12-06 14:59:23', '2021-12-06 14:59:23'); +INSERT INTO `eb_system_menu` VALUES (320, 39, '修改上级推广人', '', 'admin:user:update:spread', '', 'A', 0, 1, 0, '2021-12-06 14:59:45', '2021-12-06 15:01:24'); +INSERT INTO `eb_system_menu` VALUES (321, 60, '文章详情', '', 'admin:article:info', '', 'A', 0, 1, 0, '2021-12-06 15:11:54', '2021-12-06 15:11:54'); +INSERT INTO `eb_system_menu` VALUES (322, 89, '删除优惠券', '', 'admin:coupon:delete', '', 'A', 0, 1, 0, '2021-12-06 16:23:26', '2021-12-06 16:23:26'); +INSERT INTO `eb_system_menu` VALUES (323, 344, '表单模板详情', '', 'admin:system:form:info', '', 'A', 0, 1, 0, '2021-12-07 09:33:10', '2021-12-09 15:38:12'); +INSERT INTO `eb_system_menu` VALUES (324, 121, '整体保存表单数据', '', 'admin:system:config:save:form', '', 'A', 0, 1, 0, '2021-12-07 09:35:50', '2021-12-07 09:35:50'); +INSERT INTO `eb_system_menu` VALUES (325, 96, '砍价参与详情列表', '', 'admin:bargain:user:help:list', '', 'A', 0, 1, 0, '2021-12-07 09:39:32', '2021-12-07 09:39:32'); +INSERT INTO `eb_system_menu` VALUES (326, 109, '提现统计', '', 'admin:finance:apply:balance', '', 'A', 0, 1, 0, '2021-12-07 11:26:32', '2021-12-07 11:26:32'); +INSERT INTO `eb_system_menu` VALUES (327, 226, '经营数据', '', 'admin:statistics:home:operating:data', '', 'A', 0, 1, 1, '2021-12-07 11:41:07', '2021-12-07 11:41:07'); +INSERT INTO `eb_system_menu` VALUES (328, 142, '页面布局首页保存', '', 'admin:page:layout:save', '', 'A', 0, 1, 1, '2021-12-07 15:36:08', '2021-12-07 15:36:08'); +INSERT INTO `eb_system_menu` VALUES (329, 142, '页面布局首页banner保存', '', 'admin:page:layout:index:banner:save', '', 'A', 0, 1, 1, '2021-12-07 15:36:45', '2021-12-07 15:36:45'); +INSERT INTO `eb_system_menu` VALUES (330, 142, '页面布局首页menu保存', '', 'admin:page:layout:index:menu:save', '', 'A', 0, 1, 1, '2021-12-07 15:37:13', '2021-12-07 15:37:13'); +INSERT INTO `eb_system_menu` VALUES (331, 142, '页面首页新闻保存', '', 'admin:page:layout:index:news:save', '', 'A', 0, 1, 1, '2021-12-07 15:37:38', '2021-12-07 15:37:38'); +INSERT INTO `eb_system_menu` VALUES (333, 142, '页面用户中心导航保存', '', 'admin:page:layout:user:menu:save', '', 'A', 0, 1, 1, '2021-12-07 15:38:32', '2021-12-07 15:38:32'); +INSERT INTO `eb_system_menu` VALUES (334, 142, '页面用户中心商品table保存', '', 'admin:page:layout:index:table:save', '', 'A', 0, 1, 1, '2021-12-07 15:38:57', '2021-12-07 15:38:57'); +INSERT INTO `eb_system_menu` VALUES (335, 142, '分类页配置保存', '', 'admin:page:layout:category:config:save', '', 'A', 0, 1, 1, '2021-12-07 15:39:29', '2021-12-07 15:39:29'); +INSERT INTO `eb_system_menu` VALUES (337, 269, '公众号模板消息同步', '', 'admin:wechat:whcbqhn:sync', '', 'A', 0, 1, 0, '2021-12-07 18:42:30', '2021-12-11 15:24:21'); +INSERT INTO `eb_system_menu` VALUES (340, 138, '菜单缓存树', '', 'admin:system:menu:cache:tree', '', 'A', 0, 1, 0, '2021-12-07 19:15:32', '2021-12-07 19:15:32'); +INSERT INTO `eb_system_menu` VALUES (341, 142, '获取分类页配置', '', 'admin:page:layout:category:config', '', 'A', 0, 1, 1, '2021-12-08 10:25:27', '2021-12-08 10:25:27'); +INSERT INTO `eb_system_menu` VALUES (342, 122, '一号通用户信息', '', 'admin:pass:info', '', 'A', 0, 1, 0, '2021-12-08 11:44:52', '2021-12-08 11:44:52'); +INSERT INTO `eb_system_menu` VALUES (343, 39, '发送优惠券', '', 'admin:coupon:user:receive', '', 'A', 0, 1, 0, '2021-12-08 18:16:23', '2021-12-08 18:16:23'); +INSERT INTO `eb_system_menu` VALUES (344, 0, '公共服务', '', '', '', 'M', 0, 0, 0, '2021-12-08 18:56:36', '2021-12-08 18:56:36'); +INSERT INTO `eb_system_menu` VALUES (345, 344, '根据key存储', '', 'admin:system:config:saveuniq', '', 'A', 0, 1, 0, '2021-12-08 18:57:26', '2021-12-08 18:57:26'); +INSERT INTO `eb_system_menu` VALUES (347, 344, '根据key获取', '', 'admin:system:config:getuniq', '', 'A', 0, 1, 0, '2021-12-08 18:58:55', '2021-12-08 18:59:18'); +INSERT INTO `eb_system_menu` VALUES (348, 98, '拼团订单列表', '', 'admin:combination:order:pink', '', 'A', 0, 1, 0, '2021-12-08 19:08:59', '2021-12-08 19:08:59'); +INSERT INTO `eb_system_menu` VALUES (349, 99, '上架视频号商品', '', 'admin:pay:component:product:listing', '', 'A', 0, 1, 1, '2021-12-08 19:10:50', '2021-12-08 19:11:02'); +INSERT INTO `eb_system_menu` VALUES (350, 100, '组件类目列表', '', 'admin:pay:component:cat:list', '', 'A', 0, 1, 1, '2021-12-08 19:14:06', '2021-12-08 19:14:06'); +INSERT INTO `eb_system_menu` VALUES (352, 104, '推广人', '', 'admin:retail:spread:list', '', 'A', 0, 1, 0, '2021-12-09 14:43:19', '2021-12-09 14:43:19'); +INSERT INTO `eb_system_menu` VALUES (353, 104, '推广订单', '', 'admin:retail:spread:order:list', '', 'A', 0, 1, 0, '2021-12-09 14:44:10', '2021-12-09 14:44:10'); +INSERT INTO `eb_system_menu` VALUES (354, 104, '清除上级推广人', '', 'admin:retail:spread:clean', '', 'A', 0, 1, 0, '2021-12-09 14:45:33', '2021-12-09 14:45:33'); +INSERT INTO `eb_system_menu` VALUES (355, 109, '提现编辑', '', 'admin:finance:apply:update', '', 'A', 0, 1, 0, '2021-12-09 15:06:43', '2021-12-09 15:06:43'); +INSERT INTO `eb_system_menu` VALUES (356, 109, '提现审核', '', 'admin:finance:apply:apply', '', 'A', 0, 1, 0, '2021-12-09 15:09:01', '2021-12-09 15:09:01'); +INSERT INTO `eb_system_menu` VALUES (357, 167, '物流公司', '', 'admin:express:all', '', 'A', 0, 1, 0, '2021-12-09 16:14:43', '2021-12-09 16:14:43'); +INSERT INTO `eb_system_menu` VALUES (359, 269, '公众号模板开关', '', 'admin:system:notification:wechat:switch', '', 'A', 0, 1, 0, '2021-12-09 17:15:25', '2021-12-09 17:15:25'); +INSERT INTO `eb_system_menu` VALUES (360, 269, '小程序订阅模板开关', '', 'admin:system:notification:routine:switch', '', 'A', 0, 1, 0, '2021-12-09 17:15:48', '2021-12-09 17:15:48'); +INSERT INTO `eb_system_menu` VALUES (361, 269, '发送短信开关', '', 'admin:system:notification:sms:switch', '', 'A', 0, 1, 0, '2021-12-09 17:16:01', '2021-12-09 17:16:01'); +INSERT INTO `eb_system_menu` VALUES (362, 269, '通知详情', '', 'admin:system:notification:detail', '', 'A', 0, 1, 0, '2021-12-09 17:16:19', '2021-12-09 17:16:19'); +INSERT INTO `eb_system_menu` VALUES (366, 269, '小程序订阅消息同步', '', 'admin:wechat:routine:sync', '', 'A', 0, 1, 0, '2021-12-10 12:15:58', '2021-12-11 15:24:32'); +INSERT INTO `eb_system_menu` VALUES (367, 158, '修改图片分组', '', 'admin:system:attachment:move', '', 'A', 0, 1, 0, '2021-12-10 15:38:24', '2021-12-10 15:38:24'); +INSERT INTO `eb_system_menu` VALUES (368, 32, '订单核销', '', 'admin:order:write:update', '', 'A', 0, 1, 0, '2021-12-10 15:39:06', '2021-12-10 15:39:06'); +INSERT INTO `eb_system_menu` VALUES (369, 269, '修改通知', '', 'admin:system:notification:update', '', 'A', 0, 1, 0, '2021-12-10 15:53:29', '2021-12-10 15:53:29'); +INSERT INTO `eb_system_menu` VALUES (370, 167, '编辑快递公司', '', 'admin:express:update', '', 'A', 0, 1, 0, '2021-12-13 10:04:36', '2021-12-13 10:04:36'); +INSERT INTO `eb_system_menu` VALUES (371, 167, '修改快递公司状态', '', 'admin:express:update:show', '', 'A', 0, 1, 0, '2021-12-13 10:04:56', '2021-12-13 10:04:56'); +INSERT INTO `eb_system_menu` VALUES (372, 167, '快递公司详情', '', 'admin:express:info', '', 'A', 0, 1, 0, '2021-12-13 10:05:10', '2021-12-13 10:05:10'); +INSERT INTO `eb_system_menu` VALUES (373, 32, '物流公司面单模板', '', 'admin:express:template', '', 'A', 0, 1, 0, '2021-12-13 10:06:30', '2021-12-13 10:06:30'); +INSERT INTO `eb_system_menu` VALUES (374, 122, '一号通修改手机号—验证', '', 'admin:pass:update:phone:validator', '', 'A', 0, 1, 0, '2021-12-13 10:07:15', '2021-12-13 10:07:15'); +INSERT INTO `eb_system_menu` VALUES (375, 99, '交易组件正式商品详情', '', 'admin:pay:component:product:info', '', 'A', 0, 1, 1, '2021-12-13 10:08:38', '2021-12-13 10:08:38'); +INSERT INTO `eb_system_menu` VALUES (376, 88, '交易组件获取快递公司', '', 'admin:pay:component:delivery:company:get:list', '', 'A', 0, 1, 1, '2021-12-13 10:11:12', '2021-12-13 10:11:12'); +INSERT INTO `eb_system_menu` VALUES (377, 88, '交易组件小程序接入申请', '', 'admin:pay:component:shop:register', '', 'A', 0, 1, 1, '2021-12-13 10:11:27', '2021-12-13 10:11:27'); +INSERT INTO `eb_system_menu` VALUES (378, 88, '交易组件获取小程序接入状态', '', 'admin:pay:component:shop:register:check', '', 'A', 0, 1, 1, '2021-12-13 10:11:43', '2021-12-13 10:11:43'); +INSERT INTO `eb_system_menu` VALUES (379, 88, '交易组件上传图片', '', 'admin:pay:component:shop:img:upload', '', 'A', 0, 1, 1, '2021-12-13 10:11:57', '2021-12-13 10:11:57'); +INSERT INTO `eb_system_menu` VALUES (380, 88, '交易组件上传品牌信息', '', 'admin:pay:component:shop:brand:audit', '', 'A', 0, 1, 1, '2021-12-13 10:12:18', '2021-12-13 10:12:18'); +INSERT INTO `eb_system_menu` VALUES (381, 88, '交易组件品牌列表', '', 'admin:pay:component:shop:brand:list', '', 'A', 0, 1, 1, '2021-12-13 10:12:35', '2021-12-13 10:12:35'); +INSERT INTO `eb_system_menu` VALUES (382, 88, '交易组件可用品牌列表', '', 'admin:pay:component:shop:brand:usable:list', '', 'A', 0, 1, 1, '2021-12-13 10:12:51', '2021-12-13 10:12:51'); +INSERT INTO `eb_system_menu` VALUES (383, 104, '添加推广关系', '', 'admin:retail:spread:save', '', 'A', 0, 1, 1, '2021-12-13 10:16:47', '2021-12-13 10:16:47'); +INSERT INTO `eb_system_menu` VALUES (384, 156, '核销订单头部数据', '', 'admin:order:statistics', '', 'A', 0, 1, 0, '2021-12-13 10:20:16', '2021-12-13 10:20:16'); +INSERT INTO `eb_system_menu` VALUES (385, 156, '核销订单月列表数据', '', 'admin:order:statistics:data', '', 'A', 0, 1, 0, '2021-12-13 10:20:30', '2021-12-13 10:20:30'); +INSERT INTO `eb_system_menu` VALUES (386, 156, '核销码查询待核销订单', '', 'admin:order:write:confirm', '', 'A', 0, 1, 0, '2021-12-13 10:20:42', '2021-12-13 10:20:42'); +INSERT INTO `eb_system_menu` VALUES (387, 344, '订单统计详情', '', 'admin:order:time', '', 'A', 0, 1, 0, '2021-12-13 10:22:47', '2021-12-13 10:22:47'); +INSERT INTO `eb_system_menu` VALUES (388, 32, '视频号订单发送货', '', 'admin:order:video:send', '', 'A', 0, 1, 1, '2021-12-13 10:23:11', '2021-12-13 10:23:11'); +INSERT INTO `eb_system_menu` VALUES (389, 16, '商品规则值详情', '', 'admin:product:rule:info', '', 'A', 0, 1, 0, '2021-12-13 10:24:50', '2021-12-13 10:24:50'); +INSERT INTO `eb_system_menu` VALUES (390, 344, '新增附件', '', 'admin:system:attachment:save', '', 'A', 0, 1, 0, '2021-12-13 10:26:45', '2021-12-13 10:26:45'); +INSERT INTO `eb_system_menu` VALUES (391, 344, '修改附件', '', 'admin:system:attachment:update', '', 'A', 0, 1, 0, '2021-12-13 10:28:19', '2021-12-13 10:28:19'); +INSERT INTO `eb_system_menu` VALUES (392, 344, '附件详情', '', 'admin:system:attachment:info', '', 'A', 0, 1, 0, '2021-12-13 10:29:08', '2021-12-13 10:29:08'); +INSERT INTO `eb_system_menu` VALUES (393, 166, '修改城市状态', '', 'admin:system:city:update:status', '', 'A', 0, 1, 0, '2021-12-13 10:29:55', '2021-12-13 10:29:55'); +INSERT INTO `eb_system_menu` VALUES (394, 344, '检测表单name是否存在', '', 'admin:system:config:check', '', 'A', 0, 1, 0, '2021-12-13 10:30:58', '2021-12-13 10:30:58'); +INSERT INTO `eb_system_menu` VALUES (395, 344, '根据key获取配置', '', 'admin:system:config:get', '', 'A', 0, 1, 0, '2021-12-13 10:31:24', '2021-12-13 10:31:24'); +INSERT INTO `eb_system_menu` VALUES (396, 344, '更新配置信息', '', 'admin:system:config:update', '', 'A', 0, 1, 0, '2021-12-13 10:31:44', '2021-12-13 10:31:44'); +INSERT INTO `eb_system_menu` VALUES (397, 344, '组合数据详情', '', 'admin:system:group:info', '', 'A', 0, 1, 0, '2021-12-13 10:32:28', '2021-12-13 10:32:28'); +INSERT INTO `eb_system_menu` VALUES (398, 157, '修改核销员状态', '', 'admin:system:staff:update:status', '', 'A', 0, 1, 0, '2021-12-13 10:33:46', '2021-12-13 10:33:46'); +INSERT INTO `eb_system_menu` VALUES (399, 42, '用户分组详情', '', 'admin:user:group:info', '', 'A', 0, 1, 0, '2021-12-13 10:34:41', '2021-12-13 10:34:41'); +INSERT INTO `eb_system_menu` VALUES (400, 39, '会员等级列表', '', 'admin:user:level:list', '', 'A', 0, 1, 0, '2021-12-13 10:36:37', '2021-12-13 10:36:37'); +INSERT INTO `eb_system_menu` VALUES (401, 40, '会员标签详情', '', 'admin:user:tag:info', '', 'A', 0, 1, 0, '2021-12-13 10:37:04', '2021-12-13 10:37:04'); +INSERT INTO `eb_system_menu` VALUES (402, 344, '获取微信公众号js配置', '', 'admin:wechat:config', '', 'A', 0, 1, 0, '2021-12-13 10:38:24', '2021-12-13 10:38:24'); +INSERT INTO `eb_system_menu` VALUES (403, 344, '微信素材上传', '', 'admin:wechat:media:upload', '', 'A', 0, 1, 0, '2021-12-13 10:38:50', '2021-12-13 10:38:50'); +INSERT INTO `eb_system_menu` VALUES (404, 13, '代码生成', '', '', '/codegen/codegenList', 'C', 0, 1, 0, '2022-08-23 18:07:37', '2022-08-23 18:07:37'); + +-- ---------------------------- +-- Table structure for eb_system_notification +-- ---------------------------- +DROP TABLE IF EXISTS `eb_system_notification`; +CREATE TABLE `eb_system_notification` ( + `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id', + `mark` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '标识', + `type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '通知类型', + `description` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '通知场景说明', + `is_wechat` tinyint(2) NOT NULL DEFAULT 0 COMMENT '公众号模板消息(0:不存在,1:开启,2:关闭)', + `wechat_id` int(11) NOT NULL DEFAULT 0 COMMENT '模板消息id', + `is_routine` tinyint(2) NOT NULL DEFAULT 0 COMMENT '小程序订阅消息(0:不存在,1:开启,2:关闭)', + `routine_id` int(11) NOT NULL DEFAULT 0 COMMENT '订阅消息id', + `is_sms` tinyint(2) NOT NULL DEFAULT 0 COMMENT '发送短信(0:不存在,1:开启,2:关闭)', + `sms_id` int(11) NOT NULL DEFAULT 0 COMMENT '短信id', + `send_type` tinyint(2) NOT NULL DEFAULT 1 COMMENT '发送类型(1:用户,2:管理员)', + `create_time` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE, + INDEX `mark`(`mark`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 13 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '通知设置表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of eb_system_notification +-- ---------------------------- +INSERT INTO `eb_system_notification` VALUES (1, 'paySuccess', '订单支付成功通知', '订单支付成功通知', 2, 35, 1, 55, 1, 559, 1, '2021-12-09 17:19:17'); +INSERT INTO `eb_system_notification` VALUES (2, 'deliverGoods', '订单发货通知', '订单发货通知', 2, 20, 1, 58, 1, 572, 1, '2021-12-09 17:20:32'); +INSERT INTO `eb_system_notification` VALUES (3, 'bargainingSuccess', '砍价成功通知', '砍价成功通知', 2, 27, 1, 56, 0, 0, 1, '2021-12-09 17:20:35'); +INSERT INTO `eb_system_notification` VALUES (4, 'groupSuccess', '拼团成功通知', '拼团成功通知', 2, 23, 1, 57, 0, 0, 1, '2021-12-09 17:20:46'); +INSERT INTO `eb_system_notification` VALUES (5, 'fulfillmentOrder', '订单配送通知', '订单配送通知', 2, 34, 1, 52, 0, 0, 1, '2021-12-09 17:20:54'); +INSERT INTO `eb_system_notification` VALUES (6, 'rechargeSuccess', '充值成功通知', '充值成功通知', 2, 11, 1, 53, 0, 0, 1, '2021-12-09 17:21:07'); +INSERT INTO `eb_system_notification` VALUES (7, 'receiptGoods', '确认收货通知', '确认收货通知', 2, 36, 1, 54, 0, 0, 1, '2021-12-09 17:24:22'); +INSERT INTO `eb_system_notification` VALUES (8, 'adminPaySuccess', '支付成功(管理员短信)通知', '支付成功(管理员短信)通知', 0, 0, 0, 0, 1, 562, 2, '2021-12-09 19:06:03'); +INSERT INTO `eb_system_notification` VALUES (9, 'adminReceiptGoods', '用户收货(管理员)通知', '用户收货(管理员)通知', 0, 0, 0, 0, 1, 564, 2, '2021-12-09 20:28:41'); +INSERT INTO `eb_system_notification` VALUES (10, 'adminPlaceAnOrder', '用户下单(管理员)通知', '用户下单(管理员)通知', 0, 0, 0, 0, 1, 561, 2, '2021-12-09 20:47:35'); +INSERT INTO `eb_system_notification` VALUES (11, 'adminApplyOrderRefund', '用户发起退款(管理员)通知', '用户发起退款(管理员)通知', 0, 0, 0, 0, 1, 563, 2, '2021-12-09 21:04:24'); +INSERT INTO `eb_system_notification` VALUES (12, 'modifyOrderPrice', '改价通知', '改价通知', 0, 0, 0, 0, 1, 566, 1, '2021-12-09 21:10:50'); + +-- ---------------------------- +-- Table structure for eb_system_role +-- ---------------------------- +DROP TABLE IF EXISTS `eb_system_role`; +CREATE TABLE `eb_system_role` ( + `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '身份管理id', + `role_name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '身份管理名称', + `rules` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '身份管理权限(menus_id)', + `level` tinyint(3) UNSIGNED NOT NULL DEFAULT 0, + `status` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '状态', + `create_time` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE, + INDEX `status`(`status`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '身份管理表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of eb_system_role +-- ---------------------------- +INSERT INTO `eb_system_role` VALUES (1, '超级管理员', '', 0, 1, '2020-04-18 11:19:25', '2021-12-03 09:33:21'); +INSERT INTO `eb_system_role` VALUES (5, '演示站', '', 1, 1, '2021-02-25 15:34:57', '2021-12-08 17:49:48'); + +-- ---------------------------- +-- Table structure for eb_system_role_menu +-- ---------------------------- +DROP TABLE IF EXISTS `eb_system_role_menu`; +CREATE TABLE `eb_system_role_menu` ( + `rid` int(11) NOT NULL COMMENT '角色id', + `menu_id` int(11) NOT NULL COMMENT '权限id', + PRIMARY KEY (`rid`, `menu_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '角色菜单关联表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of eb_system_role_menu +-- ---------------------------- +INSERT INTO `eb_system_role_menu` VALUES (1, 1); +INSERT INTO `eb_system_role_menu` VALUES (1, 2); +INSERT INTO `eb_system_role_menu` VALUES (1, 3); +INSERT INTO `eb_system_role_menu` VALUES (1, 4); +INSERT INTO `eb_system_role_menu` VALUES (1, 5); +INSERT INTO `eb_system_role_menu` VALUES (1, 6); +INSERT INTO `eb_system_role_menu` VALUES (1, 7); +INSERT INTO `eb_system_role_menu` VALUES (1, 8); +INSERT INTO `eb_system_role_menu` VALUES (1, 9); +INSERT INTO `eb_system_role_menu` VALUES (1, 10); +INSERT INTO `eb_system_role_menu` VALUES (1, 12); +INSERT INTO `eb_system_role_menu` VALUES (1, 13); +INSERT INTO `eb_system_role_menu` VALUES (1, 14); +INSERT INTO `eb_system_role_menu` VALUES (1, 15); +INSERT INTO `eb_system_role_menu` VALUES (1, 16); +INSERT INTO `eb_system_role_menu` VALUES (1, 17); +INSERT INTO `eb_system_role_menu` VALUES (1, 18); +INSERT INTO `eb_system_role_menu` VALUES (1, 19); +INSERT INTO `eb_system_role_menu` VALUES (1, 20); +INSERT INTO `eb_system_role_menu` VALUES (1, 21); +INSERT INTO `eb_system_role_menu` VALUES (1, 22); +INSERT INTO `eb_system_role_menu` VALUES (1, 23); +INSERT INTO `eb_system_role_menu` VALUES (1, 24); +INSERT INTO `eb_system_role_menu` VALUES (1, 25); +INSERT INTO `eb_system_role_menu` VALUES (1, 26); +INSERT INTO `eb_system_role_menu` VALUES (1, 27); +INSERT INTO `eb_system_role_menu` VALUES (1, 28); +INSERT INTO `eb_system_role_menu` VALUES (1, 29); +INSERT INTO `eb_system_role_menu` VALUES (1, 30); +INSERT INTO `eb_system_role_menu` VALUES (1, 31); +INSERT INTO `eb_system_role_menu` VALUES (1, 32); +INSERT INTO `eb_system_role_menu` VALUES (1, 33); +INSERT INTO `eb_system_role_menu` VALUES (1, 34); +INSERT INTO `eb_system_role_menu` VALUES (1, 35); +INSERT INTO `eb_system_role_menu` VALUES (1, 36); +INSERT INTO `eb_system_role_menu` VALUES (1, 37); +INSERT INTO `eb_system_role_menu` VALUES (1, 38); +INSERT INTO `eb_system_role_menu` VALUES (1, 39); +INSERT INTO `eb_system_role_menu` VALUES (1, 40); +INSERT INTO `eb_system_role_menu` VALUES (1, 41); +INSERT INTO `eb_system_role_menu` VALUES (1, 42); +INSERT INTO `eb_system_role_menu` VALUES (1, 43); +INSERT INTO `eb_system_role_menu` VALUES (1, 44); +INSERT INTO `eb_system_role_menu` VALUES (1, 47); +INSERT INTO `eb_system_role_menu` VALUES (1, 48); +INSERT INTO `eb_system_role_menu` VALUES (1, 49); +INSERT INTO `eb_system_role_menu` VALUES (1, 50); +INSERT INTO `eb_system_role_menu` VALUES (1, 51); +INSERT INTO `eb_system_role_menu` VALUES (1, 52); +INSERT INTO `eb_system_role_menu` VALUES (1, 53); +INSERT INTO `eb_system_role_menu` VALUES (1, 54); +INSERT INTO `eb_system_role_menu` VALUES (1, 55); +INSERT INTO `eb_system_role_menu` VALUES (1, 56); +INSERT INTO `eb_system_role_menu` VALUES (1, 57); +INSERT INTO `eb_system_role_menu` VALUES (1, 59); +INSERT INTO `eb_system_role_menu` VALUES (1, 60); +INSERT INTO `eb_system_role_menu` VALUES (1, 61); +INSERT INTO `eb_system_role_menu` VALUES (1, 62); +INSERT INTO `eb_system_role_menu` VALUES (1, 63); +INSERT INTO `eb_system_role_menu` VALUES (1, 64); +INSERT INTO `eb_system_role_menu` VALUES (1, 67); +INSERT INTO `eb_system_role_menu` VALUES (1, 68); +INSERT INTO `eb_system_role_menu` VALUES (1, 69); +INSERT INTO `eb_system_role_menu` VALUES (1, 70); +INSERT INTO `eb_system_role_menu` VALUES (1, 73); +INSERT INTO `eb_system_role_menu` VALUES (1, 74); +INSERT INTO `eb_system_role_menu` VALUES (1, 75); +INSERT INTO `eb_system_role_menu` VALUES (1, 76); +INSERT INTO `eb_system_role_menu` VALUES (1, 77); +INSERT INTO `eb_system_role_menu` VALUES (1, 83); +INSERT INTO `eb_system_role_menu` VALUES (1, 84); +INSERT INTO `eb_system_role_menu` VALUES (1, 85); +INSERT INTO `eb_system_role_menu` VALUES (1, 86); +INSERT INTO `eb_system_role_menu` VALUES (1, 87); +INSERT INTO `eb_system_role_menu` VALUES (1, 88); +INSERT INTO `eb_system_role_menu` VALUES (1, 89); +INSERT INTO `eb_system_role_menu` VALUES (1, 90); +INSERT INTO `eb_system_role_menu` VALUES (1, 91); +INSERT INTO `eb_system_role_menu` VALUES (1, 92); +INSERT INTO `eb_system_role_menu` VALUES (1, 93); +INSERT INTO `eb_system_role_menu` VALUES (1, 94); +INSERT INTO `eb_system_role_menu` VALUES (1, 95); +INSERT INTO `eb_system_role_menu` VALUES (1, 96); +INSERT INTO `eb_system_role_menu` VALUES (1, 97); +INSERT INTO `eb_system_role_menu` VALUES (1, 98); +INSERT INTO `eb_system_role_menu` VALUES (1, 99); +INSERT INTO `eb_system_role_menu` VALUES (1, 100); +INSERT INTO `eb_system_role_menu` VALUES (1, 101); +INSERT INTO `eb_system_role_menu` VALUES (1, 102); +INSERT INTO `eb_system_role_menu` VALUES (1, 103); +INSERT INTO `eb_system_role_menu` VALUES (1, 104); +INSERT INTO `eb_system_role_menu` VALUES (1, 105); +INSERT INTO `eb_system_role_menu` VALUES (1, 106); +INSERT INTO `eb_system_role_menu` VALUES (1, 107); +INSERT INTO `eb_system_role_menu` VALUES (1, 108); +INSERT INTO `eb_system_role_menu` VALUES (1, 109); +INSERT INTO `eb_system_role_menu` VALUES (1, 110); +INSERT INTO `eb_system_role_menu` VALUES (1, 111); +INSERT INTO `eb_system_role_menu` VALUES (1, 114); +INSERT INTO `eb_system_role_menu` VALUES (1, 115); +INSERT INTO `eb_system_role_menu` VALUES (1, 121); +INSERT INTO `eb_system_role_menu` VALUES (1, 122); +INSERT INTO `eb_system_role_menu` VALUES (1, 123); +INSERT INTO `eb_system_role_menu` VALUES (1, 124); +INSERT INTO `eb_system_role_menu` VALUES (1, 125); +INSERT INTO `eb_system_role_menu` VALUES (1, 127); +INSERT INTO `eb_system_role_menu` VALUES (1, 128); +INSERT INTO `eb_system_role_menu` VALUES (1, 129); +INSERT INTO `eb_system_role_menu` VALUES (1, 130); +INSERT INTO `eb_system_role_menu` VALUES (1, 131); +INSERT INTO `eb_system_role_menu` VALUES (1, 132); +INSERT INTO `eb_system_role_menu` VALUES (1, 133); +INSERT INTO `eb_system_role_menu` VALUES (1, 134); +INSERT INTO `eb_system_role_menu` VALUES (1, 135); +INSERT INTO `eb_system_role_menu` VALUES (1, 136); +INSERT INTO `eb_system_role_menu` VALUES (1, 137); +INSERT INTO `eb_system_role_menu` VALUES (1, 138); +INSERT INTO `eb_system_role_menu` VALUES (1, 139); +INSERT INTO `eb_system_role_menu` VALUES (1, 140); +INSERT INTO `eb_system_role_menu` VALUES (1, 141); +INSERT INTO `eb_system_role_menu` VALUES (1, 142); +INSERT INTO `eb_system_role_menu` VALUES (1, 143); +INSERT INTO `eb_system_role_menu` VALUES (1, 144); +INSERT INTO `eb_system_role_menu` VALUES (1, 145); +INSERT INTO `eb_system_role_menu` VALUES (1, 146); +INSERT INTO `eb_system_role_menu` VALUES (1, 147); +INSERT INTO `eb_system_role_menu` VALUES (1, 148); +INSERT INTO `eb_system_role_menu` VALUES (1, 149); +INSERT INTO `eb_system_role_menu` VALUES (1, 151); +INSERT INTO `eb_system_role_menu` VALUES (1, 152); +INSERT INTO `eb_system_role_menu` VALUES (1, 153); +INSERT INTO `eb_system_role_menu` VALUES (1, 154); +INSERT INTO `eb_system_role_menu` VALUES (1, 155); +INSERT INTO `eb_system_role_menu` VALUES (1, 156); +INSERT INTO `eb_system_role_menu` VALUES (1, 157); +INSERT INTO `eb_system_role_menu` VALUES (1, 158); +INSERT INTO `eb_system_role_menu` VALUES (1, 159); +INSERT INTO `eb_system_role_menu` VALUES (1, 160); +INSERT INTO `eb_system_role_menu` VALUES (1, 161); +INSERT INTO `eb_system_role_menu` VALUES (1, 162); +INSERT INTO `eb_system_role_menu` VALUES (1, 163); +INSERT INTO `eb_system_role_menu` VALUES (1, 164); +INSERT INTO `eb_system_role_menu` VALUES (1, 165); +INSERT INTO `eb_system_role_menu` VALUES (1, 166); +INSERT INTO `eb_system_role_menu` VALUES (1, 167); +INSERT INTO `eb_system_role_menu` VALUES (1, 168); +INSERT INTO `eb_system_role_menu` VALUES (1, 169); +INSERT INTO `eb_system_role_menu` VALUES (1, 170); +INSERT INTO `eb_system_role_menu` VALUES (1, 171); +INSERT INTO `eb_system_role_menu` VALUES (1, 172); +INSERT INTO `eb_system_role_menu` VALUES (1, 173); +INSERT INTO `eb_system_role_menu` VALUES (1, 174); +INSERT INTO `eb_system_role_menu` VALUES (1, 176); +INSERT INTO `eb_system_role_menu` VALUES (1, 179); +INSERT INTO `eb_system_role_menu` VALUES (1, 180); +INSERT INTO `eb_system_role_menu` VALUES (1, 181); +INSERT INTO `eb_system_role_menu` VALUES (1, 182); +INSERT INTO `eb_system_role_menu` VALUES (1, 184); +INSERT INTO `eb_system_role_menu` VALUES (1, 185); +INSERT INTO `eb_system_role_menu` VALUES (1, 186); +INSERT INTO `eb_system_role_menu` VALUES (1, 187); +INSERT INTO `eb_system_role_menu` VALUES (1, 188); +INSERT INTO `eb_system_role_menu` VALUES (1, 189); +INSERT INTO `eb_system_role_menu` VALUES (1, 191); +INSERT INTO `eb_system_role_menu` VALUES (1, 192); +INSERT INTO `eb_system_role_menu` VALUES (1, 193); +INSERT INTO `eb_system_role_menu` VALUES (1, 194); +INSERT INTO `eb_system_role_menu` VALUES (1, 195); +INSERT INTO `eb_system_role_menu` VALUES (1, 196); +INSERT INTO `eb_system_role_menu` VALUES (1, 197); +INSERT INTO `eb_system_role_menu` VALUES (1, 198); +INSERT INTO `eb_system_role_menu` VALUES (1, 199); +INSERT INTO `eb_system_role_menu` VALUES (1, 200); +INSERT INTO `eb_system_role_menu` VALUES (1, 201); +INSERT INTO `eb_system_role_menu` VALUES (1, 202); +INSERT INTO `eb_system_role_menu` VALUES (1, 203); +INSERT INTO `eb_system_role_menu` VALUES (1, 204); +INSERT INTO `eb_system_role_menu` VALUES (1, 205); +INSERT INTO `eb_system_role_menu` VALUES (1, 207); +INSERT INTO `eb_system_role_menu` VALUES (1, 208); +INSERT INTO `eb_system_role_menu` VALUES (1, 209); +INSERT INTO `eb_system_role_menu` VALUES (1, 210); +INSERT INTO `eb_system_role_menu` VALUES (1, 211); +INSERT INTO `eb_system_role_menu` VALUES (1, 212); +INSERT INTO `eb_system_role_menu` VALUES (1, 213); +INSERT INTO `eb_system_role_menu` VALUES (1, 214); +INSERT INTO `eb_system_role_menu` VALUES (1, 215); +INSERT INTO `eb_system_role_menu` VALUES (1, 216); +INSERT INTO `eb_system_role_menu` VALUES (1, 217); +INSERT INTO `eb_system_role_menu` VALUES (1, 218); +INSERT INTO `eb_system_role_menu` VALUES (1, 219); +INSERT INTO `eb_system_role_menu` VALUES (1, 220); +INSERT INTO `eb_system_role_menu` VALUES (1, 224); +INSERT INTO `eb_system_role_menu` VALUES (1, 225); +INSERT INTO `eb_system_role_menu` VALUES (1, 226); +INSERT INTO `eb_system_role_menu` VALUES (1, 227); +INSERT INTO `eb_system_role_menu` VALUES (1, 228); +INSERT INTO `eb_system_role_menu` VALUES (1, 229); +INSERT INTO `eb_system_role_menu` VALUES (1, 231); +INSERT INTO `eb_system_role_menu` VALUES (1, 232); +INSERT INTO `eb_system_role_menu` VALUES (1, 233); +INSERT INTO `eb_system_role_menu` VALUES (1, 234); +INSERT INTO `eb_system_role_menu` VALUES (1, 235); +INSERT INTO `eb_system_role_menu` VALUES (1, 236); +INSERT INTO `eb_system_role_menu` VALUES (1, 237); +INSERT INTO `eb_system_role_menu` VALUES (1, 238); +INSERT INTO `eb_system_role_menu` VALUES (1, 239); +INSERT INTO `eb_system_role_menu` VALUES (1, 240); +INSERT INTO `eb_system_role_menu` VALUES (1, 241); +INSERT INTO `eb_system_role_menu` VALUES (1, 242); +INSERT INTO `eb_system_role_menu` VALUES (1, 243); +INSERT INTO `eb_system_role_menu` VALUES (1, 244); +INSERT INTO `eb_system_role_menu` VALUES (1, 245); +INSERT INTO `eb_system_role_menu` VALUES (1, 246); +INSERT INTO `eb_system_role_menu` VALUES (1, 247); +INSERT INTO `eb_system_role_menu` VALUES (1, 248); +INSERT INTO `eb_system_role_menu` VALUES (1, 250); +INSERT INTO `eb_system_role_menu` VALUES (1, 251); +INSERT INTO `eb_system_role_menu` VALUES (1, 252); +INSERT INTO `eb_system_role_menu` VALUES (1, 253); +INSERT INTO `eb_system_role_menu` VALUES (1, 254); +INSERT INTO `eb_system_role_menu` VALUES (1, 255); +INSERT INTO `eb_system_role_menu` VALUES (1, 256); +INSERT INTO `eb_system_role_menu` VALUES (1, 257); +INSERT INTO `eb_system_role_menu` VALUES (1, 258); +INSERT INTO `eb_system_role_menu` VALUES (1, 259); +INSERT INTO `eb_system_role_menu` VALUES (1, 260); +INSERT INTO `eb_system_role_menu` VALUES (1, 261); +INSERT INTO `eb_system_role_menu` VALUES (1, 262); +INSERT INTO `eb_system_role_menu` VALUES (1, 263); +INSERT INTO `eb_system_role_menu` VALUES (1, 264); +INSERT INTO `eb_system_role_menu` VALUES (1, 265); +INSERT INTO `eb_system_role_menu` VALUES (1, 266); +INSERT INTO `eb_system_role_menu` VALUES (1, 267); +INSERT INTO `eb_system_role_menu` VALUES (1, 268); +INSERT INTO `eb_system_role_menu` VALUES (1, 269); +INSERT INTO `eb_system_role_menu` VALUES (1, 270); +INSERT INTO `eb_system_role_menu` VALUES (1, 271); +INSERT INTO `eb_system_role_menu` VALUES (1, 272); +INSERT INTO `eb_system_role_menu` VALUES (1, 273); +INSERT INTO `eb_system_role_menu` VALUES (1, 274); +INSERT INTO `eb_system_role_menu` VALUES (1, 275); +INSERT INTO `eb_system_role_menu` VALUES (1, 276); +INSERT INTO `eb_system_role_menu` VALUES (1, 277); +INSERT INTO `eb_system_role_menu` VALUES (1, 278); +INSERT INTO `eb_system_role_menu` VALUES (1, 280); +INSERT INTO `eb_system_role_menu` VALUES (1, 281); +INSERT INTO `eb_system_role_menu` VALUES (1, 282); +INSERT INTO `eb_system_role_menu` VALUES (1, 283); +INSERT INTO `eb_system_role_menu` VALUES (1, 284); +INSERT INTO `eb_system_role_menu` VALUES (1, 285); +INSERT INTO `eb_system_role_menu` VALUES (1, 286); +INSERT INTO `eb_system_role_menu` VALUES (1, 287); +INSERT INTO `eb_system_role_menu` VALUES (1, 288); +INSERT INTO `eb_system_role_menu` VALUES (1, 289); +INSERT INTO `eb_system_role_menu` VALUES (1, 290); +INSERT INTO `eb_system_role_menu` VALUES (1, 291); +INSERT INTO `eb_system_role_menu` VALUES (1, 293); +INSERT INTO `eb_system_role_menu` VALUES (1, 294); +INSERT INTO `eb_system_role_menu` VALUES (1, 295); +INSERT INTO `eb_system_role_menu` VALUES (1, 296); +INSERT INTO `eb_system_role_menu` VALUES (1, 297); +INSERT INTO `eb_system_role_menu` VALUES (1, 298); +INSERT INTO `eb_system_role_menu` VALUES (1, 299); +INSERT INTO `eb_system_role_menu` VALUES (1, 300); +INSERT INTO `eb_system_role_menu` VALUES (1, 301); +INSERT INTO `eb_system_role_menu` VALUES (1, 302); +INSERT INTO `eb_system_role_menu` VALUES (1, 303); +INSERT INTO `eb_system_role_menu` VALUES (1, 304); +INSERT INTO `eb_system_role_menu` VALUES (1, 305); +INSERT INTO `eb_system_role_menu` VALUES (1, 306); +INSERT INTO `eb_system_role_menu` VALUES (1, 307); +INSERT INTO `eb_system_role_menu` VALUES (1, 308); +INSERT INTO `eb_system_role_menu` VALUES (1, 309); +INSERT INTO `eb_system_role_menu` VALUES (1, 310); +INSERT INTO `eb_system_role_menu` VALUES (1, 311); +INSERT INTO `eb_system_role_menu` VALUES (1, 312); +INSERT INTO `eb_system_role_menu` VALUES (1, 313); +INSERT INTO `eb_system_role_menu` VALUES (1, 314); +INSERT INTO `eb_system_role_menu` VALUES (1, 315); +INSERT INTO `eb_system_role_menu` VALUES (1, 316); +INSERT INTO `eb_system_role_menu` VALUES (1, 317); +INSERT INTO `eb_system_role_menu` VALUES (1, 318); +INSERT INTO `eb_system_role_menu` VALUES (1, 319); +INSERT INTO `eb_system_role_menu` VALUES (1, 320); +INSERT INTO `eb_system_role_menu` VALUES (1, 321); +INSERT INTO `eb_system_role_menu` VALUES (1, 322); +INSERT INTO `eb_system_role_menu` VALUES (1, 323); +INSERT INTO `eb_system_role_menu` VALUES (1, 324); +INSERT INTO `eb_system_role_menu` VALUES (1, 325); +INSERT INTO `eb_system_role_menu` VALUES (1, 326); +INSERT INTO `eb_system_role_menu` VALUES (1, 327); +INSERT INTO `eb_system_role_menu` VALUES (1, 328); +INSERT INTO `eb_system_role_menu` VALUES (1, 329); +INSERT INTO `eb_system_role_menu` VALUES (1, 330); +INSERT INTO `eb_system_role_menu` VALUES (1, 331); +INSERT INTO `eb_system_role_menu` VALUES (1, 333); +INSERT INTO `eb_system_role_menu` VALUES (1, 334); +INSERT INTO `eb_system_role_menu` VALUES (1, 335); +INSERT INTO `eb_system_role_menu` VALUES (1, 337); +INSERT INTO `eb_system_role_menu` VALUES (1, 340); +INSERT INTO `eb_system_role_menu` VALUES (1, 341); +INSERT INTO `eb_system_role_menu` VALUES (1, 342); +INSERT INTO `eb_system_role_menu` VALUES (1, 343); +INSERT INTO `eb_system_role_menu` VALUES (1, 344); +INSERT INTO `eb_system_role_menu` VALUES (1, 345); +INSERT INTO `eb_system_role_menu` VALUES (1, 347); +INSERT INTO `eb_system_role_menu` VALUES (1, 348); +INSERT INTO `eb_system_role_menu` VALUES (1, 349); +INSERT INTO `eb_system_role_menu` VALUES (1, 350); +INSERT INTO `eb_system_role_menu` VALUES (1, 352); +INSERT INTO `eb_system_role_menu` VALUES (1, 353); +INSERT INTO `eb_system_role_menu` VALUES (1, 354); +INSERT INTO `eb_system_role_menu` VALUES (1, 355); +INSERT INTO `eb_system_role_menu` VALUES (1, 356); +INSERT INTO `eb_system_role_menu` VALUES (1, 357); +INSERT INTO `eb_system_role_menu` VALUES (1, 359); +INSERT INTO `eb_system_role_menu` VALUES (1, 360); +INSERT INTO `eb_system_role_menu` VALUES (1, 361); +INSERT INTO `eb_system_role_menu` VALUES (1, 362); +INSERT INTO `eb_system_role_menu` VALUES (1, 366); +INSERT INTO `eb_system_role_menu` VALUES (1, 367); +INSERT INTO `eb_system_role_menu` VALUES (1, 368); +INSERT INTO `eb_system_role_menu` VALUES (1, 369); +INSERT INTO `eb_system_role_menu` VALUES (1, 370); +INSERT INTO `eb_system_role_menu` VALUES (1, 371); +INSERT INTO `eb_system_role_menu` VALUES (1, 372); +INSERT INTO `eb_system_role_menu` VALUES (1, 373); +INSERT INTO `eb_system_role_menu` VALUES (1, 374); +INSERT INTO `eb_system_role_menu` VALUES (1, 375); +INSERT INTO `eb_system_role_menu` VALUES (1, 376); +INSERT INTO `eb_system_role_menu` VALUES (1, 377); +INSERT INTO `eb_system_role_menu` VALUES (1, 378); +INSERT INTO `eb_system_role_menu` VALUES (1, 379); +INSERT INTO `eb_system_role_menu` VALUES (1, 380); +INSERT INTO `eb_system_role_menu` VALUES (1, 381); +INSERT INTO `eb_system_role_menu` VALUES (1, 382); +INSERT INTO `eb_system_role_menu` VALUES (1, 383); +INSERT INTO `eb_system_role_menu` VALUES (1, 384); +INSERT INTO `eb_system_role_menu` VALUES (1, 385); +INSERT INTO `eb_system_role_menu` VALUES (1, 386); +INSERT INTO `eb_system_role_menu` VALUES (1, 387); +INSERT INTO `eb_system_role_menu` VALUES (1, 388); +INSERT INTO `eb_system_role_menu` VALUES (1, 389); +INSERT INTO `eb_system_role_menu` VALUES (1, 390); +INSERT INTO `eb_system_role_menu` VALUES (1, 391); +INSERT INTO `eb_system_role_menu` VALUES (1, 392); +INSERT INTO `eb_system_role_menu` VALUES (1, 393); +INSERT INTO `eb_system_role_menu` VALUES (1, 394); +INSERT INTO `eb_system_role_menu` VALUES (1, 395); +INSERT INTO `eb_system_role_menu` VALUES (1, 396); +INSERT INTO `eb_system_role_menu` VALUES (1, 397); +INSERT INTO `eb_system_role_menu` VALUES (1, 398); +INSERT INTO `eb_system_role_menu` VALUES (1, 399); +INSERT INTO `eb_system_role_menu` VALUES (1, 400); +INSERT INTO `eb_system_role_menu` VALUES (1, 401); +INSERT INTO `eb_system_role_menu` VALUES (1, 402); +INSERT INTO `eb_system_role_menu` VALUES (1, 403); +INSERT INTO `eb_system_role_menu` VALUES (5, 1); +INSERT INTO `eb_system_role_menu` VALUES (5, 2); +INSERT INTO `eb_system_role_menu` VALUES (5, 3); +INSERT INTO `eb_system_role_menu` VALUES (5, 4); +INSERT INTO `eb_system_role_menu` VALUES (5, 5); +INSERT INTO `eb_system_role_menu` VALUES (5, 6); +INSERT INTO `eb_system_role_menu` VALUES (5, 7); +INSERT INTO `eb_system_role_menu` VALUES (5, 8); +INSERT INTO `eb_system_role_menu` VALUES (5, 9); +INSERT INTO `eb_system_role_menu` VALUES (5, 10); +INSERT INTO `eb_system_role_menu` VALUES (5, 14); +INSERT INTO `eb_system_role_menu` VALUES (5, 15); +INSERT INTO `eb_system_role_menu` VALUES (5, 16); +INSERT INTO `eb_system_role_menu` VALUES (5, 17); +INSERT INTO `eb_system_role_menu` VALUES (5, 18); +INSERT INTO `eb_system_role_menu` VALUES (5, 19); +INSERT INTO `eb_system_role_menu` VALUES (5, 20); +INSERT INTO `eb_system_role_menu` VALUES (5, 21); +INSERT INTO `eb_system_role_menu` VALUES (5, 22); +INSERT INTO `eb_system_role_menu` VALUES (5, 23); +INSERT INTO `eb_system_role_menu` VALUES (5, 24); +INSERT INTO `eb_system_role_menu` VALUES (5, 25); +INSERT INTO `eb_system_role_menu` VALUES (5, 26); +INSERT INTO `eb_system_role_menu` VALUES (5, 27); +INSERT INTO `eb_system_role_menu` VALUES (5, 28); +INSERT INTO `eb_system_role_menu` VALUES (5, 29); +INSERT INTO `eb_system_role_menu` VALUES (5, 30); +INSERT INTO `eb_system_role_menu` VALUES (5, 31); +INSERT INTO `eb_system_role_menu` VALUES (5, 32); +INSERT INTO `eb_system_role_menu` VALUES (5, 33); +INSERT INTO `eb_system_role_menu` VALUES (5, 34); +INSERT INTO `eb_system_role_menu` VALUES (5, 35); +INSERT INTO `eb_system_role_menu` VALUES (5, 36); +INSERT INTO `eb_system_role_menu` VALUES (5, 37); +INSERT INTO `eb_system_role_menu` VALUES (5, 38); +INSERT INTO `eb_system_role_menu` VALUES (5, 39); +INSERT INTO `eb_system_role_menu` VALUES (5, 40); +INSERT INTO `eb_system_role_menu` VALUES (5, 41); +INSERT INTO `eb_system_role_menu` VALUES (5, 42); +INSERT INTO `eb_system_role_menu` VALUES (5, 43); +INSERT INTO `eb_system_role_menu` VALUES (5, 44); +INSERT INTO `eb_system_role_menu` VALUES (5, 47); +INSERT INTO `eb_system_role_menu` VALUES (5, 48); +INSERT INTO `eb_system_role_menu` VALUES (5, 49); +INSERT INTO `eb_system_role_menu` VALUES (5, 50); +INSERT INTO `eb_system_role_menu` VALUES (5, 51); +INSERT INTO `eb_system_role_menu` VALUES (5, 52); +INSERT INTO `eb_system_role_menu` VALUES (5, 53); +INSERT INTO `eb_system_role_menu` VALUES (5, 54); +INSERT INTO `eb_system_role_menu` VALUES (5, 55); +INSERT INTO `eb_system_role_menu` VALUES (5, 56); +INSERT INTO `eb_system_role_menu` VALUES (5, 57); +INSERT INTO `eb_system_role_menu` VALUES (5, 59); +INSERT INTO `eb_system_role_menu` VALUES (5, 60); +INSERT INTO `eb_system_role_menu` VALUES (5, 61); +INSERT INTO `eb_system_role_menu` VALUES (5, 62); +INSERT INTO `eb_system_role_menu` VALUES (5, 63); +INSERT INTO `eb_system_role_menu` VALUES (5, 64); +INSERT INTO `eb_system_role_menu` VALUES (5, 67); +INSERT INTO `eb_system_role_menu` VALUES (5, 68); +INSERT INTO `eb_system_role_menu` VALUES (5, 69); +INSERT INTO `eb_system_role_menu` VALUES (5, 70); +INSERT INTO `eb_system_role_menu` VALUES (5, 73); +INSERT INTO `eb_system_role_menu` VALUES (5, 74); +INSERT INTO `eb_system_role_menu` VALUES (5, 75); +INSERT INTO `eb_system_role_menu` VALUES (5, 76); +INSERT INTO `eb_system_role_menu` VALUES (5, 77); +INSERT INTO `eb_system_role_menu` VALUES (5, 83); +INSERT INTO `eb_system_role_menu` VALUES (5, 84); +INSERT INTO `eb_system_role_menu` VALUES (5, 85); +INSERT INTO `eb_system_role_menu` VALUES (5, 86); +INSERT INTO `eb_system_role_menu` VALUES (5, 87); +INSERT INTO `eb_system_role_menu` VALUES (5, 88); +INSERT INTO `eb_system_role_menu` VALUES (5, 89); +INSERT INTO `eb_system_role_menu` VALUES (5, 90); +INSERT INTO `eb_system_role_menu` VALUES (5, 91); +INSERT INTO `eb_system_role_menu` VALUES (5, 92); +INSERT INTO `eb_system_role_menu` VALUES (5, 93); +INSERT INTO `eb_system_role_menu` VALUES (5, 94); +INSERT INTO `eb_system_role_menu` VALUES (5, 95); +INSERT INTO `eb_system_role_menu` VALUES (5, 96); +INSERT INTO `eb_system_role_menu` VALUES (5, 97); +INSERT INTO `eb_system_role_menu` VALUES (5, 98); +INSERT INTO `eb_system_role_menu` VALUES (5, 99); +INSERT INTO `eb_system_role_menu` VALUES (5, 100); +INSERT INTO `eb_system_role_menu` VALUES (5, 101); +INSERT INTO `eb_system_role_menu` VALUES (5, 102); +INSERT INTO `eb_system_role_menu` VALUES (5, 103); +INSERT INTO `eb_system_role_menu` VALUES (5, 104); +INSERT INTO `eb_system_role_menu` VALUES (5, 105); +INSERT INTO `eb_system_role_menu` VALUES (5, 106); +INSERT INTO `eb_system_role_menu` VALUES (5, 107); +INSERT INTO `eb_system_role_menu` VALUES (5, 108); +INSERT INTO `eb_system_role_menu` VALUES (5, 109); +INSERT INTO `eb_system_role_menu` VALUES (5, 110); +INSERT INTO `eb_system_role_menu` VALUES (5, 111); +INSERT INTO `eb_system_role_menu` VALUES (5, 114); +INSERT INTO `eb_system_role_menu` VALUES (5, 115); +INSERT INTO `eb_system_role_menu` VALUES (5, 179); +INSERT INTO `eb_system_role_menu` VALUES (5, 180); +INSERT INTO `eb_system_role_menu` VALUES (5, 181); +INSERT INTO `eb_system_role_menu` VALUES (5, 182); +INSERT INTO `eb_system_role_menu` VALUES (5, 184); +INSERT INTO `eb_system_role_menu` VALUES (5, 185); +INSERT INTO `eb_system_role_menu` VALUES (5, 186); +INSERT INTO `eb_system_role_menu` VALUES (5, 187); +INSERT INTO `eb_system_role_menu` VALUES (5, 188); +INSERT INTO `eb_system_role_menu` VALUES (5, 189); +INSERT INTO `eb_system_role_menu` VALUES (5, 191); +INSERT INTO `eb_system_role_menu` VALUES (5, 192); +INSERT INTO `eb_system_role_menu` VALUES (5, 193); +INSERT INTO `eb_system_role_menu` VALUES (5, 194); +INSERT INTO `eb_system_role_menu` VALUES (5, 195); +INSERT INTO `eb_system_role_menu` VALUES (5, 196); +INSERT INTO `eb_system_role_menu` VALUES (5, 197); +INSERT INTO `eb_system_role_menu` VALUES (5, 198); +INSERT INTO `eb_system_role_menu` VALUES (5, 199); +INSERT INTO `eb_system_role_menu` VALUES (5, 200); +INSERT INTO `eb_system_role_menu` VALUES (5, 201); +INSERT INTO `eb_system_role_menu` VALUES (5, 202); +INSERT INTO `eb_system_role_menu` VALUES (5, 203); +INSERT INTO `eb_system_role_menu` VALUES (5, 204); +INSERT INTO `eb_system_role_menu` VALUES (5, 205); +INSERT INTO `eb_system_role_menu` VALUES (5, 207); +INSERT INTO `eb_system_role_menu` VALUES (5, 208); +INSERT INTO `eb_system_role_menu` VALUES (5, 209); +INSERT INTO `eb_system_role_menu` VALUES (5, 210); +INSERT INTO `eb_system_role_menu` VALUES (5, 211); +INSERT INTO `eb_system_role_menu` VALUES (5, 212); +INSERT INTO `eb_system_role_menu` VALUES (5, 213); +INSERT INTO `eb_system_role_menu` VALUES (5, 214); +INSERT INTO `eb_system_role_menu` VALUES (5, 215); +INSERT INTO `eb_system_role_menu` VALUES (5, 216); +INSERT INTO `eb_system_role_menu` VALUES (5, 217); +INSERT INTO `eb_system_role_menu` VALUES (5, 218); +INSERT INTO `eb_system_role_menu` VALUES (5, 219); +INSERT INTO `eb_system_role_menu` VALUES (5, 220); +INSERT INTO `eb_system_role_menu` VALUES (5, 224); +INSERT INTO `eb_system_role_menu` VALUES (5, 226); +INSERT INTO `eb_system_role_menu` VALUES (5, 227); +INSERT INTO `eb_system_role_menu` VALUES (5, 228); +INSERT INTO `eb_system_role_menu` VALUES (5, 229); +INSERT INTO `eb_system_role_menu` VALUES (5, 231); +INSERT INTO `eb_system_role_menu` VALUES (5, 260); +INSERT INTO `eb_system_role_menu` VALUES (5, 261); +INSERT INTO `eb_system_role_menu` VALUES (5, 262); +INSERT INTO `eb_system_role_menu` VALUES (5, 263); +INSERT INTO `eb_system_role_menu` VALUES (5, 264); +INSERT INTO `eb_system_role_menu` VALUES (5, 265); +INSERT INTO `eb_system_role_menu` VALUES (5, 266); +INSERT INTO `eb_system_role_menu` VALUES (5, 267); +INSERT INTO `eb_system_role_menu` VALUES (5, 268); +INSERT INTO `eb_system_role_menu` VALUES (5, 270); +INSERT INTO `eb_system_role_menu` VALUES (5, 271); +INSERT INTO `eb_system_role_menu` VALUES (5, 272); +INSERT INTO `eb_system_role_menu` VALUES (5, 273); +INSERT INTO `eb_system_role_menu` VALUES (5, 274); +INSERT INTO `eb_system_role_menu` VALUES (5, 275); +INSERT INTO `eb_system_role_menu` VALUES (5, 276); +INSERT INTO `eb_system_role_menu` VALUES (5, 277); +INSERT INTO `eb_system_role_menu` VALUES (5, 278); +INSERT INTO `eb_system_role_menu` VALUES (5, 280); +INSERT INTO `eb_system_role_menu` VALUES (5, 281); +INSERT INTO `eb_system_role_menu` VALUES (5, 282); +INSERT INTO `eb_system_role_menu` VALUES (5, 283); +INSERT INTO `eb_system_role_menu` VALUES (5, 285); +INSERT INTO `eb_system_role_menu` VALUES (5, 286); +INSERT INTO `eb_system_role_menu` VALUES (5, 287); +INSERT INTO `eb_system_role_menu` VALUES (5, 288); +INSERT INTO `eb_system_role_menu` VALUES (5, 289); +INSERT INTO `eb_system_role_menu` VALUES (5, 290); +INSERT INTO `eb_system_role_menu` VALUES (5, 291); +INSERT INTO `eb_system_role_menu` VALUES (5, 293); +INSERT INTO `eb_system_role_menu` VALUES (5, 294); +INSERT INTO `eb_system_role_menu` VALUES (5, 295); +INSERT INTO `eb_system_role_menu` VALUES (5, 296); +INSERT INTO `eb_system_role_menu` VALUES (5, 297); +INSERT INTO `eb_system_role_menu` VALUES (5, 298); +INSERT INTO `eb_system_role_menu` VALUES (5, 299); +INSERT INTO `eb_system_role_menu` VALUES (5, 300); +INSERT INTO `eb_system_role_menu` VALUES (5, 301); +INSERT INTO `eb_system_role_menu` VALUES (5, 302); +INSERT INTO `eb_system_role_menu` VALUES (5, 304); +INSERT INTO `eb_system_role_menu` VALUES (5, 305); +INSERT INTO `eb_system_role_menu` VALUES (5, 306); +INSERT INTO `eb_system_role_menu` VALUES (5, 307); +INSERT INTO `eb_system_role_menu` VALUES (5, 308); +INSERT INTO `eb_system_role_menu` VALUES (5, 309); +INSERT INTO `eb_system_role_menu` VALUES (5, 315); +INSERT INTO `eb_system_role_menu` VALUES (5, 316); +INSERT INTO `eb_system_role_menu` VALUES (5, 317); +INSERT INTO `eb_system_role_menu` VALUES (5, 318); +INSERT INTO `eb_system_role_menu` VALUES (5, 319); +INSERT INTO `eb_system_role_menu` VALUES (5, 320); +INSERT INTO `eb_system_role_menu` VALUES (5, 321); +INSERT INTO `eb_system_role_menu` VALUES (5, 322); +INSERT INTO `eb_system_role_menu` VALUES (5, 323); +INSERT INTO `eb_system_role_menu` VALUES (5, 325); +INSERT INTO `eb_system_role_menu` VALUES (5, 326); +INSERT INTO `eb_system_role_menu` VALUES (5, 327); +INSERT INTO `eb_system_role_menu` VALUES (5, 343); +INSERT INTO `eb_system_role_menu` VALUES (5, 344); +INSERT INTO `eb_system_role_menu` VALUES (5, 345); +INSERT INTO `eb_system_role_menu` VALUES (5, 347); +INSERT INTO `eb_system_role_menu` VALUES (5, 348); +INSERT INTO `eb_system_role_menu` VALUES (5, 349); +INSERT INTO `eb_system_role_menu` VALUES (5, 350); +INSERT INTO `eb_system_role_menu` VALUES (5, 352); +INSERT INTO `eb_system_role_menu` VALUES (5, 353); +INSERT INTO `eb_system_role_menu` VALUES (5, 354); +INSERT INTO `eb_system_role_menu` VALUES (5, 355); +INSERT INTO `eb_system_role_menu` VALUES (5, 356); +INSERT INTO `eb_system_role_menu` VALUES (5, 368); +INSERT INTO `eb_system_role_menu` VALUES (5, 373); +INSERT INTO `eb_system_role_menu` VALUES (5, 375); +INSERT INTO `eb_system_role_menu` VALUES (5, 376); +INSERT INTO `eb_system_role_menu` VALUES (5, 377); +INSERT INTO `eb_system_role_menu` VALUES (5, 378); +INSERT INTO `eb_system_role_menu` VALUES (5, 379); +INSERT INTO `eb_system_role_menu` VALUES (5, 380); +INSERT INTO `eb_system_role_menu` VALUES (5, 381); +INSERT INTO `eb_system_role_menu` VALUES (5, 382); +INSERT INTO `eb_system_role_menu` VALUES (5, 387); +INSERT INTO `eb_system_role_menu` VALUES (5, 388); +INSERT INTO `eb_system_role_menu` VALUES (5, 389); +INSERT INTO `eb_system_role_menu` VALUES (5, 390); +INSERT INTO `eb_system_role_menu` VALUES (5, 391); +INSERT INTO `eb_system_role_menu` VALUES (5, 392); +INSERT INTO `eb_system_role_menu` VALUES (5, 394); +INSERT INTO `eb_system_role_menu` VALUES (5, 395); +INSERT INTO `eb_system_role_menu` VALUES (5, 396); +INSERT INTO `eb_system_role_menu` VALUES (5, 397); +INSERT INTO `eb_system_role_menu` VALUES (5, 399); +INSERT INTO `eb_system_role_menu` VALUES (5, 400); +INSERT INTO `eb_system_role_menu` VALUES (5, 401); +INSERT INTO `eb_system_role_menu` VALUES (5, 402); +INSERT INTO `eb_system_role_menu` VALUES (5, 403); + +-- ---------------------------- +-- Table structure for eb_system_store +-- ---------------------------- +DROP TABLE IF EXISTS `eb_system_store`; +CREATE TABLE `eb_system_store` ( + `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, + `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '门店名称', + `introduction` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '简介', + `phone` char(25) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '手机号码', + `address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '省市区', + `detailed_address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '详细地址', + `image` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '门店logo', + `latitude` char(25) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '纬度', + `longitude` char(25) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '经度', + `valid_time` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '核销有效日期', + `day_time` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '每日营业开关时间', + `is_show` tinyint(1) NOT NULL DEFAULT 1 COMMENT '是否显示', + `is_del` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除', + `create_time` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '添加时间', + `update_time` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE, + INDEX `phone`(`phone`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '门店自提' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for eb_system_store_staff +-- ---------------------------- +DROP TABLE IF EXISTS `eb_system_store_staff`; +CREATE TABLE `eb_system_store_staff` ( + `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, + `uid` int(10) UNSIGNED NOT NULL COMMENT '管理员id', + `avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '店员头像', + `store_id` int(11) NOT NULL COMMENT '门店id', + `staff_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '店员名称', + `phone` char(15) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '手机号码', + `verify_status` tinyint(2) NOT NULL DEFAULT 0 COMMENT '核销开关', + `status` tinyint(2) NULL DEFAULT 1 COMMENT '状态', + `create_time` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '添加时间', + `update_time` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '门店店员表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for eb_system_user_level +-- ---------------------------- +DROP TABLE IF EXISTS `eb_system_user_level`; +CREATE TABLE `eb_system_user_level` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '会员名称', + `experience` int(11) NOT NULL DEFAULT 0 COMMENT '达到多少升级经验', + `is_show` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否显示 1=显示,0=隐藏', + `grade` int(11) NOT NULL DEFAULT 0 COMMENT '会员等级', + `discount` int(4) NOT NULL DEFAULT 100 COMMENT '享受折扣', + `icon` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '会员图标', + `is_del` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除.1=删除,0=未删除', + `create_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '普通会员等级' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of eb_system_user_level +-- ---------------------------- +INSERT INTO `eb_system_user_level` VALUES (1, '普通会员', 1, 1, 1, 100, 'crmebimage/public/maintain/2021/12/25/a1470da9ce7f44e3a0248f519b0b02844efygohg3b.png', 0, '2021-12-25 12:36:23', '2021-12-25 12:36:23'); +INSERT INTO `eb_system_user_level` VALUES (2, '黄铜会员', 500, 1, 2, 90, 'crmebimage/public/maintain/2021/12/25/c71d6b74594e4f47a986abda5d5bf983o4drst1ojf.png', 0, '2021-12-25 12:36:56', '2021-12-25 12:36:56'); +INSERT INTO `eb_system_user_level` VALUES (3, '白银会员', 999, 1, 3, 85, 'crmebimage/public/maintain/2021/12/25/0353c775de384b939cd994ac33b6c3f4m328kwji83.png', 0, '2021-12-25 12:38:19', '2021-12-25 12:38:19'); +INSERT INTO `eb_system_user_level` VALUES (4, '黄金会员', 5000, 1, 4, 80, 'crmebimage/public/maintain/2021/12/25/6f98afe5e63d4626a20ed710dc380d5bmc5a0w5phh.png', 0, '2021-12-25 12:38:49', '2021-12-25 12:38:49'); +INSERT INTO `eb_system_user_level` VALUES (5, '钻石会员', 12000, 1, 5, 70, 'crmebimage/public/maintain/2021/12/25/33a35c7b85de4fec8ed148fc6f3e8e670itip8qtor.png', 0, '2021-12-25 12:39:22', '2021-12-25 12:39:22'); + +-- ---------------------------- +-- Table structure for eb_template_message +-- ---------------------------- +DROP TABLE IF EXISTS `eb_template_message`; +CREATE TABLE `eb_template_message` ( + `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '模板id', + `type` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0=订阅消息,1=微信模板消息', + `temp_key` char(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '模板编号', + `name` char(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '模板名', + `content` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '回复内容', + `temp_id` char(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '模板ID', + `status` tinyint(4) NOT NULL DEFAULT 1 COMMENT '状态', + `create_time` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '添加时间', + `update_time` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 59 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '微信模板' ROW_FORMAT = Compact; + +-- ---------------------------- +-- Records of eb_template_message +-- ---------------------------- +INSERT INTO `eb_template_message` VALUES (11, 1, 'OPENTM410119156', '充值成功通知', '{{first.DATA}}\r\n充值时间:{{keyword1.DATA}}\r\n充值金额:{{keyword2.DATA}}\r\n{{remark.DATA}}', 'aCeSv64b4eiZB6qrrtPdj5djNcS9f0nYQGR7UJFdUXo', 0, '2020-06-16 10:44:44', '2021-12-16 10:56:39'); +INSERT INTO `eb_template_message` VALUES (20, 1, 'OPENTM418033200', '订单发货通知', '{{first.DATA}}\r\n订单编号:{{keyword1.DATA}}\r\n发货时间:{{keyword2.DATA}}\r\n物流公司:{{keyword3.DATA}}\r\n快递单号:{{keyword4.DATA}}\r\n{{remark.DATA}}', 'ZEHnkuInxuElw4es24E7YZy4ePNDXriUxp1v9JD4Rdc', 1, '2020-06-16 10:44:44', '2021-12-16 10:43:35'); +INSERT INTO `eb_template_message` VALUES (23, 1, 'OPENTM407456411', '拼团成功通知', '{{first.DATA}}\n订单编号:{{keyword1.DATA}}\n团购商品:{{keyword2.DATA}}\n{{remark.DATA}}', 'ydStX4R9ds9A89XJhBQpF31OjZKzB-KscfjerySKzfs', 1, '2020-06-16 10:44:44', '2020-12-03 16:26:04'); +INSERT INTO `eb_template_message` VALUES (27, 1, 'OPENTM410292733', '砍价成功提醒', '{{first.DATA}}\n商品名称:{{keyword1.DATA}}\n底价:{{keyword2.DATA}}\n{{remark.DATA}}', 'GptgO4vGorI2GqKCO21vFozCZAFmrO8Dihan1x6Avxs', 1, '2020-06-16 10:44:44', '2020-12-03 16:27:27'); +INSERT INTO `eb_template_message` VALUES (34, 1, 'OPENTM418209505', '订单配送通知', '{{first.DATA}}\r\n商品明细:{{keyword1.DATA}}\r\n下单时间:{{keyword2.DATA}}\r\n配送地址:{{keyword3.DATA}}\r\n配送人:{{keyword4.DATA}}\r\n联系电话:{{keyword5.DATA}}\r\n{{remark.DATA}}', 'QluDjnRnr_Jwrp1M1oAcoqegdOrkWJXE0F_Ka-N6HSc', 1, '2020-12-03 16:03:24', '2021-12-16 10:49:25'); +INSERT INTO `eb_template_message` VALUES (35, 1, 'OPENTM400231951', '支付成功通知', '{{first.DATA}}\r\n付款金额:{{keyword1.DATA}}\r\n交易单号:{{keyword2.DATA}}\r\n{{remark.DATA}}', 'U8ZXihDXfbaxCfIns9yOIDeVl0pWSgEGg8coveDZ3eQ', 1, '2021-01-28 11:43:51', '2021-12-16 10:43:45'); +INSERT INTO `eb_template_message` VALUES (36, 1, 'OPENTM413386489', '订单收货通知', '{{first.DATA}}\r\n订单编号:{{keyword1.DATA}}\r\n订单状态:{{keyword2.DATA}}\r\n收货时间:{{keyword3.DATA}}\r\n商品详情:{{keyword4.DATA}}\r\n{{remark.DATA}}', 'RBa57JMpG3bJC6YEtOcG20uEyN3oqzSYAJnwlyOuFvI', 1, '2021-01-28 15:12:15', '2021-01-28 15:12:15'); +INSERT INTO `eb_template_message` VALUES (37, 1, 'OPENTM410119152', '退款进度通知', '{{first.DATA}}\r\n订单编号:{{keyword1.DATA}}\r\n订单金额:{{keyword2.DATA}}\r\n下单时间:{{keyword3.DATA}}\r\n{{remark.DATA}}', NULL, 0, '2021-01-29 11:43:06', '2021-01-29 11:43:06'); +INSERT INTO `eb_template_message` VALUES (52, 0, '1128', '订单配送通知', '商品信息\r\n{{thing8.DATA}}\r\n\r\n订单编号\r\n{{character_string1.DATA}}\r\n\r\n配送人\r\n{{name4.DATA}}\r\n\r\n配送员电话\r\n{{phone_number10.DATA}}', 'BC8ivYrxeZBU-Qj0vXEmV7solEAoRlknPN43x76RvUU', 1, '2021-03-05 16:19:50', '2021-12-16 11:03:27'); +INSERT INTO `eb_template_message` VALUES (53, 0, '755', '充值成功通知', '交易单号\r\n{{character_string1.DATA}}\r\n\r\n充值金额\r\n{{amount3.DATA}}\r\n\r\n充值时间\r\n{{date5.DATA}}\r\n\r\n赠送金额\r\n{{amount6.DATA}}\r\n\r\n备注\r\n{{thing7.DATA}}', 'SFXf-VAiNDFZODYdYWbZLXqu66Qw_S1oFX24PvAi9hA', 1, '2021-03-05 16:21:19', '2021-12-16 11:03:31'); +INSERT INTO `eb_template_message` VALUES (54, 0, '1481', '确认收货通知', '订单编号\r\n{{character_string6.DATA}}\r\n\r\n收货时间\r\n{{date5.DATA}}\r\n\r\n订单商品\r\n{{thing2.DATA}}', 'zYMNEBzv4xGzLVc3sTB0xaD-Ox8hyRT-19bC70-x6Q0', 1, '2021-03-05 16:22:03', '2021-12-16 11:03:35'); +INSERT INTO `eb_template_message` VALUES (55, 0, '3578', '订单支付成功通知', '订单编号\r\n{{character_string3.DATA}}\r\n\r\n订单金额\r\n{{amount9.DATA}}\r\n\r\n备注\r\n{{thing6.DATA}}', 'RW6Xq2r1c8N43TP_-KEUB-H7v91YfKB0aPixrqDVdU0', 1, '2021-03-05 16:22:48', '2021-12-16 11:03:40'); +INSERT INTO `eb_template_message` VALUES (56, 0, '2727', '砍价结果通知', '商品名称\r\n{{thing1.DATA}}\r\n\r\n底价\r\n{{amount2.DATA}}\r\n\r\n备注\r\n{{thing3.DATA}}', 'v4D89u14FZiRDt-6L-RnVb2ib_G7my12OoDy2vaGXP8', 1, '2021-03-05 16:23:26', '2021-12-16 11:03:44'); +INSERT INTO `eb_template_message` VALUES (57, 0, '3098', '拼团成功提醒', '订单号\r\n{{character_string10.DATA}}\r\n\r\n商品名称\r\n{{thing7.DATA}}\r\n\r\n备注\r\n{{thing9.DATA}}', 'Z8HTsteGXctLt7oNLL7rGE4b0ZsgxghGQmnJwtgv7Ow', 1, '2021-03-05 16:24:13', '2021-12-16 11:03:47'); +INSERT INTO `eb_template_message` VALUES (58, 0, '1128', '订单发货提醒', '订单编号\r\n{{character_string1.DATA}}\r\n\r\n快递公司\r\n{{name6.DATA}}\r\n\r\n快递单号\r\n{{character_string7.DATA}}\r\n\r\n温馨提示\r\n{{thing11.DATA}}', 'BC8ivYrxeZBU-Qj0vXEmV2dZEuzBU1K-34RXoKaOXZc', 1, '2021-03-05 16:25:05', '2021-12-16 11:03:52'); + +-- ---------------------------- +-- Table structure for eb_user +-- ---------------------------- +DROP TABLE IF EXISTS `eb_user`; +CREATE TABLE `eb_user` ( + `uid` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '用户id', + `account` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '用户账号', + `pwd` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '用户密码', + `real_name` varchar(25) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '真实姓名', + `birthday` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '生日', + `card_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '身份证号码', + `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '用户备注', + `partner_id` int(11) NULL DEFAULT NULL COMMENT '合伙人id', + `group_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '用户分组id', + `tag_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '标签id', + `nickname` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '用户昵称', + `avatar` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '用户头像', + `phone` char(15) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '手机号码', + `add_ip` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '添加ip', + `last_ip` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '最后一次登录ip', + `now_money` decimal(16, 2) UNSIGNED NULL DEFAULT 0.00 COMMENT '用户余额', + `brokerage_price` decimal(8, 2) NULL DEFAULT 0.00 COMMENT '佣金金额', + `integral` int(11) NULL DEFAULT 0 COMMENT '用户剩余积分', + `experience` int(11) UNSIGNED NULL DEFAULT 0 COMMENT '用户剩余经验', + `sign_num` int(11) NULL DEFAULT 0 COMMENT '连续签到天数', + `status` tinyint(1) NULL DEFAULT 1 COMMENT '1为正常,0为禁止', + `level` tinyint(2) UNSIGNED NULL DEFAULT 0 COMMENT '等级', + `spread_uid` int(10) UNSIGNED NULL DEFAULT 0 COMMENT '推广员id', + `spread_time` timestamp(0) NULL DEFAULT NULL COMMENT '推广员关联时间', + `user_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '用户类型', + `is_promoter` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '是否为推广员', + `pay_count` int(11) UNSIGNED NULL DEFAULT 0 COMMENT '用户购买次数', + `spread_count` int(11) NULL DEFAULT 0 COMMENT '下级人数', + `addres` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '详细地址', + `adminid` int(11) UNSIGNED NULL DEFAULT 0 COMMENT '管理员编号 ', + `login_type` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '用户登陆类型,h5,wechat,routine', + `create_time` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间', + `last_login_time` timestamp(0) NULL DEFAULT NULL COMMENT '最后一次登录时间', + `clean_time` timestamp(0) NULL DEFAULT NULL COMMENT '清除时间', + `path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '/0/' COMMENT '推广等级记录', + `subscribe` tinyint(3) NULL DEFAULT 0 COMMENT '是否关注公众号', + `subscribe_time` timestamp(0) NULL DEFAULT NULL COMMENT '关注公众号时间', + `sex` tinyint(1) NULL DEFAULT 1 COMMENT '性别,0未知,1男,2女,3保密', + `country` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT 'CN' COMMENT '国家,中国CN,其他OTHER', + `promoter_time` timestamp(0) NULL DEFAULT NULL COMMENT '成为分销员时间', + PRIMARY KEY (`uid`) USING BTREE, + UNIQUE INDEX `account`(`account`) USING BTREE, + INDEX `spreaduid`(`spread_uid`) USING BTREE, + INDEX `level`(`level`) USING BTREE, + INDEX `status`(`status`) USING BTREE, + INDEX `is_promoter`(`is_promoter`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户表' ROW_FORMAT = Dynamic; + +INSERT INTO `eb_user` VALUES (1, '18292417675', 'f6mcpGQ8NEmwbab2TlkpUg==', '', '', '', '', NULL, '', '', '大粽子', 'crmebimage/public/maintain/2023/02/23/1c0fa967eb764d918f064744cc51dc70a6f2bj3sha.jpg', '18292417675', '', '', 0.00, 0.00, 0, 0, 0, 1, 0, 0, NULL, '', 0, 0, 0, '', 0, '', '2023-03-15 17:41:12', '2023-03-15 17:48:11', '2023-03-15 17:42:44', NULL, '/0/', 0, NULL, 1, 'CN', NULL); +-- ---------------------------- +-- Table structure for eb_user_address +-- ---------------------------- +DROP TABLE IF EXISTS `eb_user_address`; +CREATE TABLE `eb_user_address` ( + `id` mediumint(8) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '用户地址id', + `uid` int(10) UNSIGNED NOT NULL COMMENT '用户id', + `real_name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '收货人姓名', + `phone` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '收货人电话', + `province` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '收货人所在省', + `city` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '收货人所在市', + `city_id` int(11) NOT NULL DEFAULT 0 COMMENT '城市id', + `district` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '收货人所在区', + `detail` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '收货人详细地址', + `post_code` int(10) NOT NULL DEFAULT 0 COMMENT '邮编', + `longitude` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '0' COMMENT '经度', + `latitude` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '0' COMMENT '纬度', + `is_default` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '是否默认', + `is_del` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '是否删除', + `create_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE, + INDEX `uid`(`uid`) USING BTREE, + INDEX `is_default`(`is_default`) USING BTREE, + INDEX `is_del`(`is_del`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户地址表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for eb_user_bill +-- ---------------------------- +DROP TABLE IF EXISTS `eb_user_bill`; +CREATE TABLE `eb_user_bill` ( + `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '用户账单id', + `uid` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '用户uid', + `link_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '0' COMMENT '关联id', + `pm` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '0 = 支出 1 = 获得', + `title` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '账单标题', + `category` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '明细种类', + `type` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '明细类型', + `number` decimal(8, 2) UNSIGNED NOT NULL DEFAULT 0.00 COMMENT '明细数字', + `balance` decimal(16, 2) UNSIGNED NOT NULL DEFAULT 0.00 COMMENT '剩余', + `mark` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '备注', + `status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '0 = 带确定 1 = 有效 -1 = 无效', + `create_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '添加时间', + `update_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE, + INDEX `openid`(`uid`) USING BTREE, + INDEX `status`(`status`) USING BTREE, + INDEX `add_time`(`create_time`) USING BTREE, + INDEX `pm`(`pm`) USING BTREE, + INDEX `type`(`category`, `type`, `link_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户账单表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for eb_user_brokerage_record +-- ---------------------------- +DROP TABLE IF EXISTS `eb_user_brokerage_record`; +CREATE TABLE `eb_user_brokerage_record` ( + `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '记录id', + `uid` int(10) NOT NULL DEFAULT 0 COMMENT '用户uid', + `link_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '0' COMMENT '关联id(orderNo,提现id)', + `link_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '0' COMMENT '关联类型(order,extract,yue)', + `type` int(1) NOT NULL DEFAULT 1 COMMENT '类型:1-增加,2-扣减(提现)', + `title` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '标题', + `price` decimal(8, 2) NOT NULL DEFAULT 0.00 COMMENT '金额', + `balance` decimal(16, 2) NOT NULL DEFAULT 0.00 COMMENT '剩余', + `mark` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '备注', + `status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '状态:1-订单创建,2-冻结期,3-完成,4-失效(订单退款),5-提现申请', + `frozen_time` int(3) NOT NULL DEFAULT 0 COMMENT '冻结期时间(天)', + `thaw_time` bigint(14) NOT NULL DEFAULT 0 COMMENT '解冻时间', + `create_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '添加时间', + `update_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间', + `brokerage_level` int(2) NULL DEFAULT NULL COMMENT '分销等级', + PRIMARY KEY (`id`) USING BTREE, + INDEX `openid`(`uid`) USING BTREE, + INDEX `status`(`status`) USING BTREE, + INDEX `add_time`(`create_time`) USING BTREE, + INDEX `type`(`type`) USING BTREE, + INDEX `type_link`(`type`, `link_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户佣金记录表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for eb_user_experience_record +-- ---------------------------- +DROP TABLE IF EXISTS `eb_user_experience_record`; +CREATE TABLE `eb_user_experience_record` ( + `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '记录id', + `uid` int(10) NOT NULL DEFAULT 0 COMMENT '用户uid', + `link_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '0' COMMENT '关联id-orderNo,(sign,system默认为0)', + `link_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT 'order' COMMENT '关联类型(order,sign,system)', + `type` int(1) NOT NULL DEFAULT 1 COMMENT '类型:1-增加,2-扣减', + `title` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '标题', + `experience` int(11) NOT NULL DEFAULT 0 COMMENT '经验', + `balance` int(11) NOT NULL DEFAULT 0 COMMENT '剩余', + `mark` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '备注', + `status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '状态:1-成功(保留字段)', + `create_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '添加时间', + `update_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE, + INDEX `openid`(`uid`) USING BTREE, + INDEX `status`(`status`) USING BTREE, + INDEX `add_time`(`create_time`) USING BTREE, + INDEX `type`(`type`) USING BTREE, + INDEX `type_link`(`type`, `link_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户经验记录表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for eb_user_extract +-- ---------------------------- +DROP TABLE IF EXISTS `eb_user_extract`; +CREATE TABLE `eb_user_extract` ( + `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, + `uid` int(10) UNSIGNED NULL DEFAULT NULL, + `real_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称', + `extract_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT 'bank' COMMENT 'bank = 银行卡 alipay = 支付宝 weixin=微信', + `bank_code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '银行卡', + `bank_address` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '开户地址', + `alipay_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '支付宝账号', + `extract_price` decimal(8, 2) UNSIGNED NULL DEFAULT 0.00 COMMENT '提现金额', + `mark` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `balance` decimal(8, 2) UNSIGNED NULL DEFAULT 0.00, + `fail_msg` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '无效原因', + `status` tinyint(2) NULL DEFAULT 0 COMMENT '-1 未通过 0 审核中 1 已提现', + `wechat` varchar(15) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '微信号', + `create_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间', + `fail_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '失败时间', + `bank_name` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '银行名称', + `qrcode_url` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '微信收款二维码', + PRIMARY KEY (`id`) USING BTREE, + INDEX `extract_type`(`extract_type`) USING BTREE, + INDEX `status`(`status`) USING BTREE, + INDEX `openid`(`uid`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户提现表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for eb_user_group +-- ---------------------------- +DROP TABLE IF EXISTS `eb_user_group`; +CREATE TABLE `eb_user_group` ( + `id` smallint(5) UNSIGNED NOT NULL AUTO_INCREMENT, + `group_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '用户分组名称', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户分组表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of eb_user_group +-- ---------------------------- +INSERT INTO `eb_user_group` VALUES (1, '初级会员'); +INSERT INTO `eb_user_group` VALUES (2, '中级会员'); +INSERT INTO `eb_user_group` VALUES (3, '高级会员'); + +-- ---------------------------- +-- Table structure for eb_user_integral_record +-- ---------------------------- +DROP TABLE IF EXISTS `eb_user_integral_record`; +CREATE TABLE `eb_user_integral_record` ( + `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '记录id', + `uid` int(10) NOT NULL DEFAULT 0 COMMENT '用户uid', + `link_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '0' COMMENT '关联id-orderNo,(sign,system默认为0)', + `link_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT 'order' COMMENT '关联类型(order,sign,system)', + `type` int(1) NOT NULL DEFAULT 1 COMMENT '类型:1-增加,2-扣减', + `title` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '标题', + `integral` int(11) NOT NULL DEFAULT 0 COMMENT '积分', + `balance` int(11) NOT NULL DEFAULT 0 COMMENT '剩余', + `mark` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '备注', + `status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '状态:1-订单创建,2-冻结期,3-完成,4-失效(订单退款)', + `frozen_time` int(3) NOT NULL DEFAULT 0 COMMENT '冻结期时间(天)', + `thaw_time` bigint(14) NOT NULL DEFAULT 0 COMMENT '解冻时间', + `create_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '添加时间', + `update_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE, + INDEX `openid`(`uid`) USING BTREE, + INDEX `status`(`status`) USING BTREE, + INDEX `add_time`(`create_time`) USING BTREE, + INDEX `type`(`type`) USING BTREE, + INDEX `type_link`(`type`, `link_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户积分记录表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for eb_user_level +-- ---------------------------- +DROP TABLE IF EXISTS `eb_user_level`; +CREATE TABLE `eb_user_level` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `uid` int(11) NOT NULL DEFAULT 0 COMMENT '用户uid', + `level_id` int(11) NOT NULL DEFAULT 0 COMMENT '等级vip', + `grade` int(11) NOT NULL DEFAULT 0 COMMENT '会员等级', + `status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:禁止,1:正常', + `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '备注', + `remind` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否已通知', + `is_del` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除,0=未删除,1=删除', + `discount` int(4) NOT NULL DEFAULT 100 COMMENT '享受折扣', + `create_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间', + `expired_time` timestamp(0) NULL DEFAULT NULL COMMENT '过期时间', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `id`(`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户等级记录表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for eb_user_recharge +-- ---------------------------- +DROP TABLE IF EXISTS `eb_user_recharge`; +CREATE TABLE `eb_user_recharge` ( + `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, + `uid` int(10) NULL DEFAULT NULL COMMENT '充值用户UID', + `order_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '订单号', + `price` decimal(8, 2) NULL DEFAULT NULL COMMENT '充值金额', + `give_price` decimal(8, 2) NOT NULL DEFAULT 0.00 COMMENT '购买赠送金额', + `recharge_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '充值类型', + `paid` tinyint(1) NULL DEFAULT 0 COMMENT '是否充值', + `pay_time` timestamp(0) NULL DEFAULT NULL COMMENT '充值支付时间', + `create_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '充值时间', + `refund_price` decimal(10, 2) NULL DEFAULT 0.00 COMMENT '退款金额', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `order_id`(`order_id`) USING BTREE, + INDEX `uid`(`uid`) USING BTREE, + INDEX `recharge_type`(`recharge_type`) USING BTREE, + INDEX `paid`(`paid`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户充值表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for eb_user_sign +-- ---------------------------- +DROP TABLE IF EXISTS `eb_user_sign`; +CREATE TABLE `eb_user_sign` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `uid` int(11) NOT NULL DEFAULT 0 COMMENT '用户uid', + `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '签到说明', + `number` int(11) NOT NULL DEFAULT 0 COMMENT '获得', + `balance` int(11) NOT NULL DEFAULT 0 COMMENT '剩余', + `type` tinyint(1) NOT NULL DEFAULT 1 COMMENT '类型,1积分,2经验', + `create_day` date NOT NULL COMMENT '签到日期', + `create_time` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '添加时间', + PRIMARY KEY (`id`) USING BTREE, + INDEX `uid`(`uid`, `type`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '签到记录表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for eb_user_tag +-- ---------------------------- +DROP TABLE IF EXISTS `eb_user_tag`; +CREATE TABLE `eb_user_tag` ( + `id` smallint(5) UNSIGNED NOT NULL AUTO_INCREMENT, + `name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '标签名称', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '标签管理' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of eb_user_tag +-- ---------------------------- +INSERT INTO `eb_user_tag` VALUES (1, '中级c'); +INSERT INTO `eb_user_tag` VALUES (2, '高级'); +INSERT INTO `eb_user_tag` VALUES (3, '黄金'); +INSERT INTO `eb_user_tag` VALUES (4, '超级'); +INSERT INTO `eb_user_tag` VALUES (5, '钻石'); + +-- ---------------------------- +-- Table structure for eb_user_token +-- ---------------------------- +DROP TABLE IF EXISTS `eb_user_token`; +CREATE TABLE `eb_user_token` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `uid` int(10) UNSIGNED NOT NULL COMMENT '用户 id', + `token` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'token', + `type` tinyint(1) NULL DEFAULT 1 COMMENT '类型,1 公众号, 2 小程序, 3 unionid, 5AppIos,6AppAndroid,7ios', + `create_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `expires_time` datetime(0) NULL DEFAULT NULL COMMENT '到期时间', + `login_ip` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '登录ip', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `type+token`(`type`, `token`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for eb_user_visit_record +-- ---------------------------- +DROP TABLE IF EXISTS `eb_user_visit_record`; +CREATE TABLE `eb_user_visit_record` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `date` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '日期', + `uid` int(11) NULL DEFAULT NULL COMMENT '用户uid', + `visit_type` int(2) NULL DEFAULT NULL COMMENT '访问类型', + PRIMARY KEY (`id`) USING BTREE, + INDEX `date`(`date`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户访问记录表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for eb_wechat_callback +-- ---------------------------- +DROP TABLE IF EXISTS `eb_wechat_callback`; +CREATE TABLE `eb_wechat_callback` ( + `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `to_user_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商家小程序名称', + `from_user_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '微信团队的 OpenID(固定值)', + `create_time` bigint(50) UNSIGNED NULL DEFAULT NULL COMMENT '事件时间,Unix时间戳', + `msg_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '消息类型', + `event` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '事件类型', + `content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '内容', + `add_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '微信回调表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for eb_wechat_exceptions +-- ---------------------------- +DROP TABLE IF EXISTS `eb_wechat_exceptions`; +CREATE TABLE `eb_wechat_exceptions` ( + `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id', + `errcode` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '错误码', + `errmsg` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '错误信息', + `data` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '回复数据', + `remark` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '备注', + `create_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '微信异常表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for eb_wechat_pay_info +-- ---------------------------- +DROP TABLE IF EXISTS `eb_wechat_pay_info`; +CREATE TABLE `eb_wechat_pay_info` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `app_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '公众号唯一标识', + `mch_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商户号', + `device_info` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '设备号,PC网页或公众号内支付可以传-WEB', + `open_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '用户的唯一标识', + `nonce_str` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '随机字符串', + `sign` varchar(70) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '签名', + `sign_type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT 'MD5' COMMENT '签名类型,默认为MD5,支持HMAC-SHA256和MD5', + `body` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商品描述', + `detail` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '商品详细描述,对于使用单品优惠的商户,该字段必须按照规范上传', + `attach` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '附加数据,在查询API和支付通知中原样返回,可作为自定义参数使用', + `out_trade_no` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商户订单号,要求32个字符内', + `fee_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '标价币种:CNY:人民币 GBP:英镑 HKD:港币 USD:美元 JPY:日元 CAD:加拿大元 AUD:澳大利亚元 EUR:欧元 NZD:新西兰元 KRW:韩元 THB:泰铢', + `total_fee` int(11) NULL DEFAULT NULL COMMENT '标价金额', + `spbill_create_ip` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '终端IP', + `time_start` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '交易起始时间', + `time_expire` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '交易结束时间', + `notify_url` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '通知地址', + `trade_type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '交易类型,取值为:JSAPI,NATIVE,APP等', + `product_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商品ID', + `scene_info` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '场景信息', + `err_code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '错误代码', + `prepay_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '预支付交易会话标识', + `code_url` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '二维码链接', + `is_subscribe` varchar(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '是否关注公众账号', + `trade_state` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '交易状态', + `bank_type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '付款银行', + `cash_fee` int(11) NULL DEFAULT NULL COMMENT '现金支付金额', + `coupon_fee` int(11) NULL DEFAULT NULL COMMENT '代金券金额', + `transaction_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '微信支付订单号', + `time_end` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '支付完成时间', + `trade_state_desc` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '交易状态描述', + PRIMARY KEY (`id`) USING BTREE, + INDEX `out_trade_no`(`out_trade_no`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '微信订单表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for eb_wechat_reply +-- ---------------------------- +DROP TABLE IF EXISTS `eb_wechat_reply`; +CREATE TABLE `eb_wechat_reply` ( + `id` mediumint(8) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '微信关键字回复id', + `keywords` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '关键字', + `type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '回复类型', + `data` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '回复数据', + `status` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '回复状态 0=不可用 1 =可用', + `create_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `key`(`keywords`) USING BTREE, + INDEX `type`(`type`) USING BTREE, + INDEX `status`(`status`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '微信关键字回复表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of eb_wechat_reply +-- ---------------------------- +INSERT INTO `eb_wechat_reply` VALUES (1, 'default', 'text', '{\"content\":\" \",\"mediaId\":\"\",\"srcUrl\":\"\",\"articleData\":{}}', 1, '2020-12-09 12:32:26', '2021-02-24 18:22:19'); + +SET FOREIGN_KEY_CHECKS = 1;