diff --git a/crmeb/.gitignore b/crmeb/.gitignore index 587ea0f5..71472e1c 100644 --- a/crmeb/.gitignore +++ b/crmeb/.gitignore @@ -40,3 +40,4 @@ src/main/java/com/.DS_Store src/main/java/.DS_Store src/main/.DS_Store .DS_Store +/crmebimage/ diff --git a/crmeb/README.md b/crmeb/README.md index a5075efb..61718ff9 100644 --- a/crmeb/README.md +++ b/crmeb/README.md @@ -48,4 +48,5 @@ # 打印机 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包") \ No newline at end of file +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 00000000..07f60c6b --- /dev/null +++ b/crmeb/crmeb-admin/pom.xml @@ -0,0 +1,76 @@ + + + + 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 + + + + repackage + + + + + + + + + + + + + + + + + + + + + src/main/resources + true + + + + + + + + + src/main/java + + **/*.xml + + + + + + diff --git a/crmeb/src/main/java/com/zbkj/crmeb/CrmebApplication.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/CrmebAdminApplication.java similarity index 80% rename from crmeb/src/main/java/com/zbkj/crmeb/CrmebApplication.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/CrmebAdminApplication.java index c95914aa..d273c5df 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/CrmebApplication.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/CrmebAdminApplication.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb; +package com.zbkj.admin; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; @@ -27,14 +27,12 @@ import springfox.documentation.swagger2.annotations.EnableSwagger2; @Configuration @EnableTransactionManagement @SpringBootApplication(exclude = DataSourceAutoConfiguration.class) //去掉数据源 -@ComponentScan(basePackages={"com.utils", - "com.zbkj.crmeb", - "com.exception", - "com.common", - "com.aop"}) //扫描utils包和父包 -@MapperScan(basePackages = {"com.zbkj.crmeb.*.dao", "com.zbkj.crmeb.*.*.dao"}) -public class CrmebApplication{ +@ComponentScan(basePackages = {"com.zbkj"}) +@MapperScan(basePackages = {"com.zbkj.**.dao"}) +public class CrmebAdminApplication { + public static void main(String[] args) { - SpringApplication.run(CrmebApplication.class, args); + SpringApplication.run(CrmebAdminApplication.class, args); } + } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/config/CorsConfig.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/config/CorsConfig.java similarity index 90% rename from crmeb/src/main/java/com/zbkj/crmeb/config/CorsConfig.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/config/CorsConfig.java index 6a1c68f9..081d0c01 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/config/CorsConfig.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/config/CorsConfig.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.config; +package com.zbkj.admin.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -33,7 +33,4 @@ public class CorsConfig{ source.registerCorsConfiguration("/**", buildConfig()); //注册 return new CorsFilter(source); } - - public static String st = "269pbE47g5wSRco2vNyQ"; - public static String sk = "1Pdc1e2F5Kyy!p…p+¥OU0oIu(tG2Fqxzfd—"; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/config/DruidConfig.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/config/DruidConfig.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/config/DruidConfig.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/config/DruidConfig.java index 6e64a8e8..deb52cc3 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/config/DruidConfig.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/config/DruidConfig.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.config; +package com.zbkj.admin.config; import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.support.http.StatViewServlet; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/config/JacksonConfig.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/config/JacksonConfig.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/config/JacksonConfig.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/config/JacksonConfig.java index 2b8037db..6af46461 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/config/JacksonConfig.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/config/JacksonConfig.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.config; +package com.zbkj.admin.config; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/config/RestTemplateConfig.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/config/RestTemplateConfig.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/config/RestTemplateConfig.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/config/RestTemplateConfig.java index 75bfa0f7..e13724f5 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/config/RestTemplateConfig.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/config/RestTemplateConfig.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.config; +package com.zbkj.admin.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/config/SchedulerConfig.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/config/SchedulerConfig.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/config/SchedulerConfig.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/config/SchedulerConfig.java index ae685931..2698f253 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/config/SchedulerConfig.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/config/SchedulerConfig.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.config; +package com.zbkj.admin.config; import lombok.Data; import org.springframework.context.annotation.Configuration; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/config/SwaggerConfig.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/config/SwaggerConfig.java similarity index 81% rename from crmeb/src/main/java/com/zbkj/crmeb/config/SwaggerConfig.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/config/SwaggerConfig.java index 7affb5d9..158aa233 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/config/SwaggerConfig.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/config/SwaggerConfig.java @@ -1,12 +1,11 @@ -package com.zbkj.crmeb.config; +package com.zbkj.admin.config; -import com.constants.Constants; +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 org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; @@ -44,11 +43,9 @@ public class SwaggerConfig{ @Value("${server.port}") private String port; - @Value("${server.domain}") + @Value("${crmeb.domain}") private String domain; - - @Bean("admin") public Docket createRestApis() { return new Docket(DocumentationType.SWAGGER_2) @@ -59,7 +56,7 @@ public class SwaggerConfig{ .enable(swaggerEnabled) .select() // 扫描的路径包 - .apis(RequestHandlerSelectors.basePackage("com.zbkj.crmeb")) + .apis(RequestHandlerSelectors.basePackage("com.zbkj.admin")) // 指定路径处理PathSelectors.any()代表所有的路径 .paths(adminPathsAnt()) .build() @@ -69,26 +66,6 @@ public class SwaggerConfig{ .pathMapping("/"); } - @Bean("front") - public Docket create1RestApis() { - return new Docket(DocumentationType.SWAGGER_2) - .groupName("front") - .host(domain) - .apiInfo(apiInfo()) - // 是否开启 - .enable(swaggerEnabled) - .select() - // 扫描的路径包 - .apis(RequestHandlerSelectors.basePackage("com.zbkj.crmeb")) - // 指定路径处理PathSelectors.any()代表所有的路径 - .paths(frontPathsAnt()) //只监听 - .build() - .securitySchemes(security()) - .securityContexts(securityContexts()) -// .globalOperationParameters(pars) // 针对单个url的验证 如果需要的话 - .pathMapping("/"); - } - @Bean("public") public Docket create2RestApis() { return new Docket(DocumentationType.SWAGGER_2) @@ -99,7 +76,7 @@ public class SwaggerConfig{ .enable(swaggerEnabled) .select() // 扫描的路径包 - .apis(RequestHandlerSelectors.basePackage("com.zbkj.crmeb")) + .apis(RequestHandlerSelectors.basePackage("com.zbkj.admin")) // 指定路径处理PathSelectors.any()代表所有的路径 .paths(publicPathsAnt()) //只监听 .build() @@ -113,10 +90,6 @@ public class SwaggerConfig{ return PathSelectors.ant("/api/admin/**"); } - private Predicate frontPathsAnt() { - return PathSelectors.ant("/api/front/**"); - } - private Predicate publicPathsAnt() { return PathSelectors.ant("/api/public/**"); } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/config/TaskExecutorConfig.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/config/TaskExecutorConfig.java similarity index 99% rename from crmeb/src/main/java/com/zbkj/crmeb/config/TaskExecutorConfig.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/config/TaskExecutorConfig.java index cd59b8df..2ce6186f 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/config/TaskExecutorConfig.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/config/TaskExecutorConfig.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.config; +package com.zbkj.admin.config; import lombok.Data; import org.springframework.context.annotation.Bean; 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 00000000..c052dbca --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/config/WebConfig.java @@ -0,0 +1,115 @@ +package com.zbkj.admin.config; + +import com.zbkj.common.constants.Constants; +import com.zbkj.common.interceptor.SwaggerInterceptor; +import com.zbkj.admin.filter.ResponseFilter; +import com.zbkj.common.config.CrmebConfig; +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; + +import java.io.File; + +/** + * token验证拦截器 + * +---------------------------------------------------------------------- + * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] + * +---------------------------------------------------------------------- + * | Copyright (c) 2016~2020 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/**"); + + } + + 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/*"); + 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 00000000..9fffe951 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/config/WebSecurityConfig.java @@ -0,0 +1,155 @@ +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~2020 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) throws Exception { + 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("/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 00000000..ff902a31 --- /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~2020 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/src/main/java/com/zbkj/crmeb/article/controller/ArticleController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/ArticleController.java similarity index 55% rename from crmeb/src/main/java/com/zbkj/crmeb/article/controller/ArticleController.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/ArticleController.java index 08ee84cd..db936155 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/article/controller/ArticleController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/ArticleController.java @@ -1,21 +1,19 @@ -package com.zbkj.crmeb.article.controller; +package com.zbkj.admin.controller; -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.PageParamRequest; -import com.zbkj.crmeb.article.model.Article; -import com.zbkj.crmeb.article.request.ArticleRequest; -import com.zbkj.crmeb.article.request.ArticleSearchRequest; -import com.zbkj.crmeb.article.service.ArticleService; -import com.zbkj.crmeb.article.vo.ArticleVo; -import com.zbkj.crmeb.system.service.SystemAttachmentService; +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.ApiImplicitParams; 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.*; @@ -41,41 +39,31 @@ public class ArticleController { @Autowired private ArticleService articleService; - @Autowired - private SystemAttachmentService systemAttachmentService; - /** * 分页显示文章管理表 * @param request ArticleSearchRequest 搜索条件 * @param pageParamRequest 分页参数 - * @author Mr.Zhang - * @since 2020-04-18 */ + @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){ + @Validated PageParamRequest pageParamRequest) { return CommonResult.success(CommonPage.restPage(articleService.getAdminList(request, pageParamRequest))); } /** * 新增文章管理表 * @param articleRequest 新增参数 - * @author Mr.Zhang - * @since 2020-04-18 */ + @PreAuthorize("hasAuthority('admin:article:save')") @ApiOperation(value = "新增") @RequestMapping(value = "/save", method = RequestMethod.POST) - public CommonResult save(@RequestBody @Validated ArticleRequest articleRequest){ - Article article = new Article(); - BeanUtils.copyProperties(articleRequest, article); - article.setImageInput(systemAttachmentService.clearPrefix(article.getImageInput())); - article.setContent(systemAttachmentService.clearPrefix(article.getContent())); - - if(articleService.save(article)){ + public CommonResult save(@RequestBody @Validated ArticleRequest articleRequest) { + if (articleService.create(articleRequest)) { return CommonResult.success(); - }else{ + } else { return CommonResult.failed(); } } @@ -83,38 +71,15 @@ public class ArticleController { /** * 删除文章管理表 * @param id Integer - * @author Mr.Zhang - * @since 2020-04-18 */ + @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.removeById(id)){ + public CommonResult delete(@RequestParam(value = "id") Integer id) { + if (articleService.deleteById(id)) { return CommonResult.success(); - }else{ - return CommonResult.failed(); - } - } - - /** - * 关联产品 - * @param id Integer - * @param productId 产品id - * @author Mr.Zhang - * @since 2020-04-18 - */ - @ApiOperation(value = "绑定产品") - @RequestMapping(value = "/bind/product", method = RequestMethod.POST) - @ApiImplicitParams({ - @ApiImplicitParam(name="id", value="文章ID"), - @ApiImplicitParam(name="productId", value="产品id") - }) - public CommonResult bind(@RequestParam(value = "id") Integer id, - @RequestParam(value = "productId") Integer productId){ - if(articleService.update(id, productId)){ - return CommonResult.success(); - }else{ + } else { return CommonResult.failed(); } } @@ -123,22 +88,15 @@ public class ArticleController { * 修改文章管理表 * @param id integer id * @param articleRequest 修改参数 - * @author Mr.Zhang - * @since 2020-04-18 */ + @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){ - Article article = new Article(); - BeanUtils.copyProperties(articleRequest, article); - article.setId(id); - article.setImageInput(systemAttachmentService.clearPrefix(article.getImageInput())); - article.setContent(systemAttachmentService.clearPrefix(article.getContent())); - - if(articleService.updateById(article)){ + public CommonResult update(@RequestParam Integer id, @RequestBody @Validated ArticleRequest articleRequest) { + if (articleService.updateArticle(id, articleRequest)) { return CommonResult.success(); - }else{ + } else { return CommonResult.failed(); } } @@ -146,15 +104,13 @@ public class ArticleController { /** * 查询文章管理表信息 * @param id Integer - * @author Mr.Zhang - * @since 2020-04-18 */ + @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){ - Article article = articleService.getById(id); - return CommonResult.success(article); + public CommonResult
info(@RequestParam(value = "id") Integer id) { + return CommonResult.success(articleService.getDetail(id)); } } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/payment/controller/CallbackController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/CallbackController.java similarity index 81% rename from crmeb/src/main/java/com/zbkj/crmeb/payment/controller/CallbackController.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/CallbackController.java index e4cd5715..533f5476 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/payment/controller/CallbackController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/CallbackController.java @@ -1,6 +1,6 @@ -package com.zbkj.crmeb.payment.controller; +package com.zbkj.admin.controller; -import com.zbkj.crmeb.payment.service.CallbackService; +import com.zbkj.service.service.CallbackService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -34,9 +34,6 @@ public class CallbackController { /** * 微信支付回调 - * @author Mr.Zhang - * @since 2020-05-06 - * @return */ @ApiOperation(value = "微信支付回调") @RequestMapping(value = "/wechat", method = RequestMethod.POST) @@ -47,18 +44,6 @@ public class CallbackController { return response; } - /** - * 支付宝支付回调 - * @author Mr.Zhang - * @since 2020-05-06 - */ - @ApiOperation(value = "支付宝支付回调 ") - @RequestMapping(value = "/alipay", method = RequestMethod.POST) - public void aliPay(@RequestBody String request){ - //支付宝支付回调 - callbackService.aliPay(request); - } - /** * 微信退款回调 */ diff --git a/crmeb/src/main/java/com/zbkj/crmeb/category/controller/CategoryController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/CategoryController.java similarity index 76% rename from crmeb/src/main/java/com/zbkj/crmeb/category/controller/CategoryController.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/CategoryController.java index 1d9d6ebe..88de804b 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/category/controller/CategoryController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/CategoryController.java @@ -1,23 +1,23 @@ -package com.zbkj.crmeb.category.controller; +package com.zbkj.admin.controller; -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.PageParamRequest; -import com.exception.CrmebException; -import com.utils.CrmebUtil; -import com.zbkj.crmeb.category.model.Category; -import com.zbkj.crmeb.category.request.CategoryRequest; -import com.zbkj.crmeb.category.request.CategorySearchRequest; -import com.zbkj.crmeb.category.service.CategoryService; -import com.zbkj.crmeb.category.vo.CategoryTreeVo; -import com.zbkj.crmeb.system.service.SystemAttachmentService; +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.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.*; @@ -40,8 +40,7 @@ import java.util.List; @RestController @RequestMapping("api/admin/category") @Api(tags = "分类服务") - - public class CategoryController { +public class CategoryController { @Autowired private CategoryService categoryService; @@ -56,9 +55,10 @@ import java.util.List; * @author Mr.Zhang * @since 2020-04-16 */ - @ApiOperation(value = "分页列表") + @PreAuthorize("hasAuthority('admin:category:list')") + @ApiOperation(value = "分页分类列表") @RequestMapping(value = "/list", method = RequestMethod.GET) - public CommonResult> getList(@ModelAttribute CategorySearchRequest request, @ModelAttribute PageParamRequest pageParamRequest){ + public CommonResult> getList(@ModelAttribute CategorySearchRequest request, @ModelAttribute PageParamRequest pageParamRequest) { CommonPage categoryCommonPage = CommonPage.restPage(categoryService.getList(request, pageParamRequest)); return CommonResult.success(categoryCommonPage); } @@ -67,12 +67,13 @@ import java.util.List; * 新增分类表 * @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)){ + public CommonResult save(@Validated CategoryRequest categoryRequest) { + if (categoryService.create(categoryRequest)) { return CommonResult.success(); - }else{ + } else { return CommonResult.failed(); } } @@ -83,13 +84,14 @@ import java.util.List; * @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){ + public CommonResult delete(@RequestParam(value = "id") Integer id) { + if (categoryService.delete(id) > 0) { return CommonResult.success(); - }else{ + } else { return CommonResult.failed(); } } @@ -101,15 +103,16 @@ import java.util.List; * @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 参数不合法"); + 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)){ + if (categoryService.update(categoryRequest, id)) { return CommonResult.success(); - }else{ + } else { return CommonResult.failed(); } } @@ -120,10 +123,11 @@ import java.util.List; * @author Mr.Zhang * @since 2020-04-16 */ - @ApiOperation(value = "详情") + @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){ + public CommonResult info(@RequestParam(value = "id") Integer id) { Category category = categoryService.getById(id); return CommonResult.success(category); } @@ -134,6 +138,7 @@ import java.util.List; * @author Mr.Zhang * @since 2020-04-16 */ + @PreAuthorize("hasAuthority('admin:category:list:tree')") @ApiOperation(value = "获取tree结构的列表") @RequestMapping(value = "/list/tree", method = RequestMethod.GET) @ApiImplicitParams({ @@ -143,7 +148,7 @@ import java.util.List; }) public CommonResult> getListTree(@RequestParam(name = "type") Integer type, @RequestParam(name = "status") Integer status, - @RequestParam(name = "name", required = false) String name){ + @RequestParam(name = "name", required = false) String name) { List listTree = categoryService.getListTree(type,status,name); return CommonResult.success(listTree); } @@ -153,10 +158,11 @@ import java.util.List; * @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){ + public CommonResult> getByIds(@Validated @RequestParam(name = "ids") String ids) { return CommonResult.success(categoryService.getByIds(CrmebUtil.stringToArray(ids))); } @@ -166,10 +172,11 @@ import java.util.List; * @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){ + public CommonResult getByIds(@Validated @PathVariable(name = "id") Integer id) { if (categoryService.updateStatus(id)) { return CommonResult.success("修改成功"); } else { diff --git a/crmeb/src/main/java/com/zbkj/crmeb/export/controller/ExcelController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/ExcelController.java similarity index 65% rename from crmeb/src/main/java/com/zbkj/crmeb/export/controller/ExcelController.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/ExcelController.java index a651e4f5..7752bb2f 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/export/controller/ExcelController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/ExcelController.java @@ -1,25 +1,23 @@ -package com.zbkj.crmeb.export.controller; +package com.zbkj.admin.controller; import cn.hutool.core.collection.CollUtil; -import com.common.CommonResult; -import com.utils.ExcelUtil; -import com.zbkj.crmeb.bargain.request.StoreBargainSearchRequest; -import com.zbkj.crmeb.combination.request.StoreCombinationSearchRequest; -import com.zbkj.crmeb.export.service.ExcelService; -import com.zbkj.crmeb.export.vo.ProductExcelVo; -import com.zbkj.crmeb.store.request.StoreProductSearchRequest; +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 javax.servlet.http.HttpServletResponse; import java.util.HashMap; -import java.util.List; /** @@ -46,17 +44,12 @@ public class ExcelController { /** * 商品导出 * @param request 搜索条件 - * @author Mr.Zhang - * @since 2020-05-06 */ + @PreAuthorize("hasAuthority('admin:export:excel:product')") @ApiOperation(value = "产品") @RequestMapping(value = "/product", method = RequestMethod.GET) - public CommonResult> export(@Validated StoreProductSearchRequest request, HttpServletResponse response){ -// List productExcelVoList = excelService.product(request, response); -// ExcelUtil.setSheetName("store"); //sheet名称 -// ExcelUtil.setFileName("产品导出"); //文件名称前缀 xx_yyyymmddhhiiss -// ExcelUtil.writeExcel(response, productExcelVoList, ProductExcelVo.class); - String fileName = excelService.exportProduct(request, response); + public CommonResult> export(@Validated StoreProductSearchRequest request) { + String fileName = excelService.exportProduct(request); HashMap map = CollUtil.newHashMap(); map.put("fileName", fileName); return CommonResult.success(map); @@ -65,14 +58,12 @@ public class ExcelController { /** * 砍价商品导出 * @param request 搜索条件 - * @author HZW - * @since 2020-05-06 - * @return */ + @PreAuthorize("hasAuthority('admin:export:excel:bargain')") @ApiOperation(value = "砍价商品导出") @RequestMapping(value = "/bargain/product", method = RequestMethod.GET) - public CommonResult> exportBargainProduct(@Validated StoreBargainSearchRequest request, HttpServletResponse response){ - String fileName = excelService.exportBargainProduct(request, response); + public CommonResult> exportBargainProduct(@Validated StoreBargainSearchRequest request) { + String fileName = excelService.exportBargainProduct(request); HashMap map = CollUtil.newHashMap(); map.put("fileName", fileName); return CommonResult.success(map); @@ -81,14 +72,26 @@ public class ExcelController { /** * 拼团商品导出 * @param request 搜索条件 - * @author HZW - * @since 2020-05-06 - * @return */ + @PreAuthorize("hasAuthority('admin:export:excel:combiantion')") @ApiOperation(value = "拼团商品导出") @RequestMapping(value = "/combiantion/product", method = RequestMethod.GET) - public CommonResult> exportCombinationProduct(@Validated StoreCombinationSearchRequest request, HttpServletResponse response){ - String fileName = excelService.exportCombinationProduct(request, response); + 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/src/main/java/com/zbkj/crmeb/express/controller/ExpressController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/ExpressController.java similarity index 70% rename from crmeb/src/main/java/com/zbkj/crmeb/express/controller/ExpressController.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/ExpressController.java index cce049a1..e2c51ed5 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/express/controller/ExpressController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/ExpressController.java @@ -1,21 +1,22 @@ -package com.zbkj.crmeb.express.controller; +package com.zbkj.admin.controller; import com.alibaba.fastjson.JSONObject; -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.PageParamRequest; -import com.zbkj.crmeb.express.request.ExpressUpdateRequest; -import com.zbkj.crmeb.express.request.ExpressSearchRequest; -import com.zbkj.crmeb.express.request.ExpressUpdateShowRequest; +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.crmeb.express.service.ExpressService; -import com.zbkj.crmeb.express.model.Express; +import com.zbkj.common.model.express.Express; import java.util.List; @@ -46,11 +47,12 @@ public class ExpressController { * @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){ + @ModelAttribute PageParamRequest pageParamRequest) { CommonPage expressCommonPage = CommonPage.restPage(expressService.getList(request, pageParamRequest)); return CommonResult.success(expressCommonPage); } @@ -58,60 +60,59 @@ public class ExpressController { /** * 编辑快递公司 */ + @PreAuthorize("hasAuthority('admin:express:update')") @ApiOperation(value = "编辑") @RequestMapping(value = "/update", method = RequestMethod.POST) - public CommonResult update(@RequestBody @Validated ExpressUpdateRequest expressRequest){ - if(expressService.updateExpress(expressRequest)){ + public CommonResult update(@RequestBody @Validated ExpressUpdateRequest expressRequest) { + if (expressService.updateExpress(expressRequest)) { return CommonResult.success(); - }else{ - return CommonResult.failed(); } + 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)){ + public CommonResult update(@RequestBody @Validated ExpressUpdateShowRequest expressRequest) { + if (expressService.updateExpressShow(expressRequest)) { return CommonResult.success(); - }else{ - return CommonResult.failed(); } + return CommonResult.failed(); } /** * 同步物流公司 */ + @PreAuthorize("hasAuthority('admin:express:sync')") @ApiOperation(value = "同步物流公司") @RequestMapping(value = "/sync/express", method = RequestMethod.POST) - public CommonResult syncExpress(){ - if(expressService.syncExpress()){ + public CommonResult syncExpress() { + if (expressService.syncExpress()) { return CommonResult.success(); - }else{ - return CommonResult.failed(); } + return CommonResult.failed(); } /** * 查询快递公司表信息 * @param id Integer - * @author Mr.Zhang - * @since 2020-04-17 */ + @PreAuthorize("hasAuthority('admin:express:info')") @ApiOperation(value = "详情") @RequestMapping(value = "/info", method = RequestMethod.GET) - @ApiImplicitParam(name="id", value="快递ID") - public CommonResult info(@RequestParam(value = "id") Integer id){ - Express express = expressService.getById(id); - return CommonResult.success(express); + @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-电子面单") @@ -121,11 +122,11 @@ public class ExpressController { /** * 查询物流公司面单模板 - * @return */ + @PreAuthorize("hasAuthority('admin:express:template')") @ApiOperation(value = "查询物流公司面单模板") @RequestMapping(value = "/template", method = RequestMethod.GET) - @ApiImplicitParam(name="com", value="快递公司编号") + @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 00000000..2575ff43 --- /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~2020 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/src/main/java/com/zbkj/crmeb/statistics/controller/HomeController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/HomeController.java similarity index 58% rename from crmeb/src/main/java/com/zbkj/crmeb/statistics/controller/HomeController.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/HomeController.java index 907db422..0dce6834 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/statistics/controller/HomeController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/HomeController.java @@ -1,12 +1,13 @@ -package com.zbkj.crmeb.statistics.controller; +package com.zbkj.admin.controller; -import com.common.CommonResult; -import com.zbkj.crmeb.statistics.response.*; -import com.zbkj.crmeb.statistics.service.HomeService; +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; @@ -35,114 +36,70 @@ public class HomeController { @Autowired private HomeService homeService; - /** - * 销售额 - * @author Mr.Zhang - * @since 2020-05-16 - */ - @ApiOperation(value = "销售额") - @RequestMapping(value = "/sales", method = RequestMethod.GET) - public CommonResult sales(){ - return CommonResult.success(homeService.sales()); - } - - /** - * 订单量 - * @author Mr.Zhang - * @since 2020-05-16 - */ - @ApiOperation(value = "订单量") - @RequestMapping(value = "/order", method = RequestMethod.GET) - public CommonResult order(){ - return CommonResult.success(homeService.order()); - } - - - /** - * 新增用户 - * @author Mr.Zhang - * @since 2020-05-16 - */ - @ApiOperation(value = "新增用户") - @RequestMapping(value = "/user", method = RequestMethod.GET) - public CommonResult user(){ - return CommonResult.success(homeService.user()); - } - - /** - * 用户访问量 - * @author Mr.Zhang - * @since 2020-05-16 - */ - @ApiOperation(value = "用户访问量") - @RequestMapping(value = "/views", method = RequestMethod.GET) - public CommonResult views(){ - return CommonResult.success(homeService.views()); + @PreAuthorize("hasAuthority('admin:statistics:home:index')") + @ApiOperation(value = "首页数据") + @RequestMapping(value = "/index", method = RequestMethod.GET) + public CommonResult indexDate() { + return CommonResult.success(homeService.indexDate()); } /** * 用户曲线图 - * @author Mr.Zhang - * @since 2020-05-16 */ + @PreAuthorize("hasAuthority('admin:statistics:home:chart:user')") @ApiOperation(value = "用户曲线图") @RequestMapping(value = "/chart/user", method = RequestMethod.GET) - public CommonResult> chartUser(){ + public CommonResult> chartUser() { return CommonResult.success(homeService.chartUser()); } /** * 用户购买统计 - * @author Mr.Zhang - * @since 2020-05-16 */ + @PreAuthorize("hasAuthority('admin:statistics:home:chart:user:buy')") @ApiOperation(value = "用户购买统计") @RequestMapping(value = "/chart/user/buy", method = RequestMethod.GET) - public CommonResult> chartUserBuy(){ + public CommonResult> chartUserBuy() { return CommonResult.success(homeService.chartUserBuy()); } /** * 30天订单量趋势 - * @author Mr.Zhang - * @since 2020-05-16 */ + @PreAuthorize("hasAuthority('admin:statistics:home:chart:order')") @ApiOperation(value = "30天订单量趋势") @RequestMapping(value = "/chart/order", method = RequestMethod.GET) - public CommonResult> chartOrder(){ + public CommonResult> chartOrder() { return CommonResult.success(homeService.chartOrder()); } /** * 周订单量趋势 - * @author Mr.Zhang - * @since 2020-05-16 */ + @PreAuthorize("hasAuthority('admin:statistics:home:chart:order:week')") @ApiOperation(value = "周订单量趋势") @RequestMapping(value = "/chart/order/week", method = RequestMethod.GET) - public CommonResult> chartOrderInWeek(){ + public CommonResult> chartOrderInWeek() { return CommonResult.success(homeService.chartOrderInWeek()); } /** * 月订单量趋势 - * @author Mr.Zhang - * @since 2020-05-16 */ + @PreAuthorize("hasAuthority('admin:statistics:home:chart:order:month')") @ApiOperation(value = "月订单量趋势") @RequestMapping(value = "/chart/order/month", method = RequestMethod.GET) - public CommonResult> chartOrderInMonth(){ + public CommonResult> chartOrderInMonth() { return CommonResult.success(homeService.chartOrderInMonth()); } /** * 年订单量趋势 - * @author Mr.Zhang - * @since 2020-05-16 */ + @PreAuthorize("hasAuthority('admin:statistics:home:chart:order:year')") @ApiOperation(value = "年订单量趋势") @RequestMapping(value = "/chart/order/year", method = RequestMethod.GET) - public CommonResult> chartOrderInYear(){ + public CommonResult> chartOrderInYear() { return CommonResult.success(homeService.chartOrderInYear()); } } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/pass/controller/OnePassController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/OnePassController.java similarity index 80% rename from crmeb/src/main/java/com/zbkj/crmeb/pass/controller/OnePassController.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/OnePassController.java index 8a602bc0..6b7e3b11 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/pass/controller/OnePassController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/OnePassController.java @@ -1,15 +1,16 @@ -package com.zbkj.crmeb.pass.controller; +package com.zbkj.admin.controller; import com.alibaba.fastjson.JSONObject; -import com.common.CommonResult; -import com.zbkj.crmeb.pass.request.*; -import com.zbkj.crmeb.pass.service.OnePassService; +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.*; @@ -40,13 +41,14 @@ public class OnePassController { * 获取用户验证码 * @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){ + public CommonResult sendUserCode(@RequestParam(name = "phone") String phone,@RequestParam(name = "types", required = false) Integer types) { return CommonResult.success(onePassService.sendUserCode(phone, types)); } @@ -54,9 +56,10 @@ public class OnePassController { * 账号注册 * @param registerRequest 注册参数 */ + @PreAuthorize("hasAuthority('admin:pass:register')") @ApiOperation(value = "账号注册") @RequestMapping(value = "/register", method = RequestMethod.POST) - public CommonResult register(@Validated @RequestBody OnePassRegisterRequest registerRequest){ + public CommonResult register(@Validated @RequestBody OnePassRegisterRequest registerRequest) { return CommonResult.success(onePassService.register(registerRequest)); } @@ -64,9 +67,10 @@ public class OnePassController { * 一号通用户登录 * @return */ + @PreAuthorize("hasAuthority('admin:pass:login')") @ApiOperation(value = "一号通用户登录") @RequestMapping(value = "/login", method = RequestMethod.POST) - public CommonResult> account(@Validated @RequestBody OnePassLoginRequest request){ + public CommonResult> account(@Validated @RequestBody OnePassLoginRequest request) { return CommonResult.success(onePassService.login(request)); } @@ -74,18 +78,20 @@ public class OnePassController { * 判断是否已经登录 * @return */ + @PreAuthorize("hasAuthority('admin:pass:is:login')") @ApiOperation(value = "是否已经登录") @RequestMapping(value = "/isLogin", method = RequestMethod.GET) - public CommonResult> isLogin(){ + public CommonResult> isLogin() { return CommonResult.success(onePassService.isLogin()); } /** * 一号通用户信息 */ + @PreAuthorize("hasAuthority('admin:pass:info')") @ApiOperation(value = "一号通用户信息") @RequestMapping(value = "/info", method = RequestMethod.GET) - public CommonResult getInfo(){ + public CommonResult getInfo() { return CommonResult.success(onePassService.info()); } @@ -93,9 +99,10 @@ public class OnePassController { * 注销当前登录 * @return result */ + @PreAuthorize("hasAuthority('admin:pass:logout')") @ApiOperation(value = "注销") @RequestMapping(value = "/logout", method = RequestMethod.GET) - public CommonResult logOut(){ + public CommonResult logOut() { if (onePassService.logOut()) { return CommonResult.success(); } @@ -106,9 +113,10 @@ public class OnePassController { * 修改密码 * 手机号+验证码方式修改 */ + @PreAuthorize("hasAuthority('admin:pass:update:password')") @ApiOperation(value = "修改密码") @RequestMapping(value = "/update/password", method = RequestMethod.POST) - public CommonResult updatePassword(@Validated @RequestBody OnePassUpdateRequest request){ + public CommonResult updatePassword(@Validated @RequestBody OnePassUpdateRequest request) { if (onePassService.updatePassword(request)) { return CommonResult.success(); } @@ -118,9 +126,10 @@ public class OnePassController { /** * 修改手机号——验证账号密码 */ + @PreAuthorize("hasAuthority('admin:pass:update:phone:validator')") @ApiOperation(value = "修改手机号——验证账号密码") @RequestMapping(value = "/update/phone/validator", method = RequestMethod.POST) - public CommonResult updatePhone(@Validated @RequestBody OnePassLoginRequest request){ + public CommonResult updatePhone(@Validated @RequestBody OnePassLoginRequest request) { if (onePassService.beforeUpdatePhoneValidator(request)) { return CommonResult.success(); } @@ -130,9 +139,10 @@ public class OnePassController { /** * 修改手机号 */ + @PreAuthorize("hasAuthority('admin:pass:update:phone')") @ApiOperation(value = "修改手机号") @RequestMapping(value = "/update/phone", method = RequestMethod.POST) - public CommonResult updatePhone(@Validated @RequestBody OnePassUpdateRequest request){ + public CommonResult updatePhone(@Validated @RequestBody OnePassUpdateRequest request) { if (onePassService.updatePhone(request)) { return CommonResult.success(); } @@ -143,28 +153,31 @@ public class OnePassController { * 套餐列表 * @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){ + 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){ + 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){ + public CommonResult serviceOpen(@RequestBody @Validated ServiceOpenRequest request) { if (onePassService.serviceOpen(request)) { return CommonResult.success(); } @@ -174,9 +187,10 @@ public class OnePassController { /** * 用量记录 */ + @PreAuthorize("hasAuthority('admin:pass:user:record')") @ApiOperation(value = "用量记录") @RequestMapping(value = "/user/record", method = RequestMethod.GET) - public CommonResult record(@Validated OnePassUserRecordRequest request){ + public CommonResult record(@Validated OnePassUserRecordRequest request) { return CommonResult.success(onePassService.userRecord(request)); } } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/controller/RetailShopController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/RetailShopController.java similarity index 70% rename from crmeb/src/main/java/com/zbkj/crmeb/store/controller/RetailShopController.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/RetailShopController.java index 5618e8eb..a78090a0 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/controller/RetailShopController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/RetailShopController.java @@ -1,22 +1,22 @@ -package com.zbkj.crmeb.store.controller; +package com.zbkj.admin.controller; -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.PageParamRequest; -import com.zbkj.crmeb.store.request.RetailShopRequest; -import com.zbkj.crmeb.store.request.RetailShopStairUserRequest; -import com.zbkj.crmeb.store.response.RetailShopStatisticsResponse; -import com.zbkj.crmeb.store.response.SpreadOrderResponse; -import com.zbkj.crmeb.store.service.RetailShopService; -import com.zbkj.crmeb.user.model.User; -import com.zbkj.crmeb.user.response.SpreadUserResponse; -import com.zbkj.crmeb.user.service.UserService; +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.*; @@ -50,10 +50,11 @@ public class RetailShopController { * @param dateLimit 时间参数 * @param pageParamRequest 分页参数 */ + @PreAuthorize("hasAuthority('admin:retail:list')") @ApiOperation(value = "分销员列表") @RequestMapping(value = "/list", method = RequestMethod.GET) @ApiImplicitParams({ - @ApiImplicitParam(name = "keywords", value = "搜索关键字[身份证,手机,昵称,备注等]"), + @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, @@ -62,45 +63,13 @@ public class RetailShopController { return CommonResult.success(retailShopService.getSpreadPeopleList(keywords, dateLimit, pageParamRequest)); } - - /** - * 分销头部信息 - * @param keywords 搜索参数 - * @param dateLimit 时间参数 - */ - @ApiOperation(value = "分销头部数据") - @RequestMapping(value = "/statistics", method = RequestMethod.GET) - @ApiImplicitParams({ - @ApiImplicitParam(name = "keywords", value = "搜索参数"), - @ApiImplicitParam(name = "dateLimit", value = "today,yesterday,lately7,lately30,month,year,/yyyy-MM-dd hh:mm:ss,yyyy-MM-dd hh:mm:ss/") - }) - public CommonResult getStatistics(@RequestParam(required = false) String keywords, - @RequestParam(required = false) String dateLimit) { - return CommonResult.success(retailShopService.getAdminStatistics(keywords, dateLimit)); - } - - /** - * 添加推广关系 - * @param currentUserId 当前用户id - * @param spreadUserId 推广人用户id - * @return 结果 - */ - @ApiOperation(value = "添加推广关系") - @RequestMapping(value = "/spread/save", method = RequestMethod.GET) - @ApiImplicitParams({ - @ApiImplicitParam(name = "currentUserId", value = "当前用户id"), - @ApiImplicitParam(name = "spreadUserId", value = "推广人id") - }) - public CommonResult save(Integer currentUserId, Integer spreadUserId) { - return CommonResult.success(userService.spread(currentUserId, spreadUserId)); - } - /** * 根据用户参数获取推广人列表 * @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, @@ -115,6 +84,7 @@ public class RetailShopController { * @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, @@ -127,6 +97,7 @@ public class RetailShopController { * @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) { @@ -137,6 +108,7 @@ public class RetailShopController { * 分销设置获取 * @return 保存分销设置 */ + @PreAuthorize("hasAuthority('admin:retail:spread:manage:get')") @ApiOperation(value = "分销配置信息获取") @RequestMapping(value = "/spread/manage/get", method = RequestMethod.GET) public CommonResult getSpreadInfo() { @@ -148,6 +120,7 @@ public class RetailShopController { * @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) { diff --git a/crmeb/src/main/java/com/zbkj/crmeb/express/controller/ShippingTemplatesController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/ShippingTemplatesController.java similarity index 72% rename from crmeb/src/main/java/com/zbkj/crmeb/express/controller/ShippingTemplatesController.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/ShippingTemplatesController.java index 4d47ad3b..ca649744 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/express/controller/ShippingTemplatesController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/ShippingTemplatesController.java @@ -1,19 +1,20 @@ -package com.zbkj.crmeb.express.controller; +package com.zbkj.admin.controller; -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.PageParamRequest; -import com.zbkj.crmeb.express.request.ShippingTemplatesRequest; -import com.zbkj.crmeb.express.request.ShippingTemplatesSearchRequest; +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.beans.BeanUtils; import org.springframework.web.bind.annotation.*; -import com.zbkj.crmeb.express.service.ShippingTemplatesService; -import com.zbkj.crmeb.express.model.ShippingTemplates; +import com.zbkj.common.model.express.ShippingTemplates; /** * 物流-模板控制器 @@ -40,9 +41,8 @@ public class ShippingTemplatesController { * 分页显示 * @param request 搜索条件 * @param pageParamRequest 分页参数 - * @author Mr.Zhang - * @since 2020-04-17 */ + @PreAuthorize("hasAuthority('admin:shipping:templates:list')") @ApiOperation(value = "分页列表") @RequestMapping(value = "/list", method = RequestMethod.GET) public CommonResult> getList(@Validated ShippingTemplatesSearchRequest request, @Validated PageParamRequest pageParamRequest){ @@ -53,9 +53,8 @@ public class ShippingTemplatesController { /** * 新增 * @param request 新增参数 - * @author Mr.Zhang - * @since 2020-04-17 */ + @PreAuthorize("hasAuthority('admin:shipping:templates:save')") @ApiOperation(value = "新增") @RequestMapping(value = "/save", method = RequestMethod.POST) public CommonResult save(@RequestBody @Validated ShippingTemplatesRequest request){ @@ -68,11 +67,11 @@ public class ShippingTemplatesController { /** * 删除 * @param id Integer - * @author Mr.Zhang - * @since 2020-04-17 */ + @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(); @@ -85,27 +84,27 @@ public class ShippingTemplatesController { * 修改 * @param id integer id * @param request ShippingTemplatesRequest 修改参数 - * @author Mr.Zhang - * @since 2020-04-17 */ + @PreAuthorize("hasAuthority('admin:shipping:templates:update')") @ApiOperation(value = "修改") @RequestMapping(value = "/update", method = RequestMethod.POST) public CommonResult update(@RequestParam Integer id, @RequestBody @Validated ShippingTemplatesRequest request){ - shippingTemplatesService.update(id, request); - return CommonResult.success(); + if (shippingTemplatesService.update(id, request)) { + return CommonResult.success(); + } + return CommonResult.failed(); } /** * 查询信息 * @param id Integer - * @author Mr.Zhang - * @since 2020-04-17 */ + @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){ - ShippingTemplates shippingTemplates = shippingTemplatesService.getById(id); - return CommonResult.success(shippingTemplates); + return CommonResult.success(shippingTemplatesService.getInfo(id)); } } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/express/controller/ShippingTemplatesFreeController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/ShippingTemplatesFreeController.java similarity index 72% rename from crmeb/src/main/java/com/zbkj/crmeb/express/controller/ShippingTemplatesFreeController.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/ShippingTemplatesFreeController.java index 41e04749..45ee1739 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/express/controller/ShippingTemplatesFreeController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/ShippingTemplatesFreeController.java @@ -1,17 +1,20 @@ -package com.zbkj.crmeb.express.controller; +package com.zbkj.admin.controller; -import com.common.CommonResult; -import com.zbkj.crmeb.express.request.ShippingTemplatesFreeRequest; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; +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 org.springframework.web.bind.annotation.*; -import com.zbkj.crmeb.express.service.ShippingTemplatesFreeService; +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; - /** * 物流控制器 * +---------------------------------------------------------------------- @@ -36,15 +39,12 @@ public class ShippingTemplatesFreeController { /** * 根据模板id查询数据 * @param tempId Integer 模板id - * @author Mr.Zhang - * @since 2020-04-17 */ + @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/src/main/java/com/zbkj/crmeb/express/controller/ShippingTemplatesRegionController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/ShippingTemplatesRegionController.java similarity index 72% rename from crmeb/src/main/java/com/zbkj/crmeb/express/controller/ShippingTemplatesRegionController.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/ShippingTemplatesRegionController.java index 424e60ed..2bd46a37 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/express/controller/ShippingTemplatesRegionController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/ShippingTemplatesRegionController.java @@ -1,17 +1,20 @@ -package com.zbkj.crmeb.express.controller; +package com.zbkj.admin.controller; -import com.common.CommonResult; -import com.zbkj.crmeb.express.request.ShippingTemplatesRegionRequest; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; +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 org.springframework.web.bind.annotation.*; -import com.zbkj.crmeb.express.service.ShippingTemplatesRegionService; +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; - /** * 物流付费前端控制器 * +---------------------------------------------------------------------- @@ -36,15 +39,11 @@ public class ShippingTemplatesRegionController { /** * 根据模板id查询数据 * @param tempId Integer 模板id - * @author Mr.Zhang - * @since 2020-04-17 */ + @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/src/main/java/com/zbkj/crmeb/sms/controller/SmsRecordController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SmsRecordController.java similarity index 68% rename from crmeb/src/main/java/com/zbkj/crmeb/sms/controller/SmsRecordController.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SmsRecordController.java index 021ec384..f84c7c19 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/sms/controller/SmsRecordController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SmsRecordController.java @@ -1,19 +1,18 @@ -package com.zbkj.crmeb.sms.controller; +package com.zbkj.admin.controller; import com.alibaba.fastjson.JSONObject; -import com.common.CommonResult; -import com.common.MyRecord; -import com.common.PageParamRequest; -import com.utils.ValidateFormUtil; -import com.zbkj.crmeb.sms.request.SmsApplyTempRequest; -import com.zbkj.crmeb.sms.request.SmsModifySignRequest; -import com.zbkj.crmeb.sms.service.SmsService; +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.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.*; @@ -44,9 +43,10 @@ public class SmsRecordController { /** * 修改签名 */ + @PreAuthorize("hasAuthority('admin:sms:modify:sign')") @ApiOperation(value = "修改签名") @RequestMapping(value = "/modify/sign", method = RequestMethod.POST) - public CommonResult modifySign(@RequestBody @Validated SmsModifySignRequest request){ + public CommonResult modifySign(@RequestBody @Validated SmsModifySignRequest request) { if (smsService.modifySign(request)) { return CommonResult.success(); } @@ -55,11 +55,11 @@ public class SmsRecordController { /** * 短信模板 - * @return */ + @PreAuthorize("hasAuthority('admin:sms:temps')") @ApiOperation(value = "短信模板") @RequestMapping(value = "/temps", method = RequestMethod.GET) - public CommonResult> temps(@ModelAttribute PageParamRequest pageParamRequest){ + public CommonResult> temps(@ModelAttribute PageParamRequest pageParamRequest) { MyRecord myRecord = smsService.temps(pageParamRequest); return CommonResult.success(myRecord); } @@ -67,9 +67,10 @@ public class SmsRecordController { /** * 申请短信模板 */ + @PreAuthorize("hasAuthority('admin:sms:temp:apply')") @ApiOperation(value = "申请短信模板") @RequestMapping(value = "/temp/apply", method = RequestMethod.POST) - public CommonResult applyTempMessage(@RequestBody @Validated SmsApplyTempRequest request){ + public CommonResult applyTempMessage(@RequestBody @Validated SmsApplyTempRequest request) { if (smsService.applyTempMessage(request)) { return CommonResult.success(); } @@ -78,30 +79,15 @@ public class SmsRecordController { /** * 模板申请记录 - * @return */ + @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){ + public CommonResult> applys(@RequestParam(name = "type", required = false) Integer type, @ModelAttribute PageParamRequest pageParamRequest) { return CommonResult.success(smsService.applys(type, pageParamRequest)); } -// /** -// * 发送短信 -// * @param phone 手机号码 -// * @return 发送是否成功 -// */ -// @ApiOperation(value = " 发送短信") -// @RequestMapping(value = "/sendCode", method = RequestMethod.POST) -// @ApiImplicitParams({ -// @ApiImplicitParam(name="phone", value="手机号码", required = true) -// }) -// public CommonResult sendCode(@RequestParam String phone){ -// ValidateFormUtil.isPhone(phone,"手机号码错误"); -// boolean codeResult = smsService.pushCodeToList(phone,1, null); -// return codeResult ? CommonResult.success("短信加入发送队列成功"):CommonResult.failed("短信加入发送队列失败"); -// } } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/bargain/controller/StoreBargainController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreBargainController.java similarity index 73% rename from crmeb/src/main/java/com/zbkj/crmeb/bargain/controller/StoreBargainController.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreBargainController.java index 00f45b2f..01f91282 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/bargain/controller/StoreBargainController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreBargainController.java @@ -1,22 +1,23 @@ -package com.zbkj.crmeb.bargain.controller; +package com.zbkj.admin.controller; -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.PageParamRequest; -import com.zbkj.crmeb.bargain.request.StoreBargainRequest; -import com.zbkj.crmeb.bargain.request.StoreBargainSearchRequest; -import com.zbkj.crmeb.bargain.request.StoreBargainUserSearchRequest; -import com.zbkj.crmeb.bargain.response.StoreBargainResponse; -import com.zbkj.crmeb.bargain.response.StoreBargainUserHelpResponse; -import com.zbkj.crmeb.bargain.response.StoreBargainUserResponse; -import com.zbkj.crmeb.bargain.service.StoreBargainService; -import com.zbkj.crmeb.bargain.service.StoreBargainUserHelpService; -import com.zbkj.crmeb.bargain.service.StoreBargainUserService; -import com.zbkj.crmeb.store.response.StoreProductResponse; +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.*; @@ -54,9 +55,8 @@ public class StoreBargainController { * 分页显示砍价商品列表 * @param request 搜索条件 * @param pageParamRequest 分页参数 - * @author HZW - * @since 2020-11-06 */ + @PreAuthorize("hasAuthority('admin:bargain:list')") @ApiOperation(value = "分页显示砍价商品列表") //配合swagger使用 @RequestMapping(value = "/list", method = RequestMethod.GET) public CommonResult> getList(@Validated StoreBargainSearchRequest request, @Validated PageParamRequest pageParamRequest){ @@ -67,25 +67,23 @@ public class StoreBargainController { /** * 新增砍价商品 * @param storeBargainRequest 新增参数 - * @author HZW - * @since 2020-11-06 */ + @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(); + return CommonResult.success("添加砍价商品成功"); }else{ - return CommonResult.failed(); + return CommonResult.failed("添加砍价商品失败"); } } /** * 删除砍价商品 * @param id Integer - * @author HZW - * @since 2020-11-06 */ + @PreAuthorize("hasAuthority('admin:bargain:delete')") @ApiOperation(value = "删除砍价商品") @RequestMapping(value = "/delete", method = RequestMethod.GET) public CommonResult delete(@RequestParam(value = "id") Integer id){ @@ -98,18 +96,15 @@ public class StoreBargainController { /** * 修改砍价商品 - * @param id integer id * @param storeBargainRequest 修改参数 - * @author HZW - * @since 2020-11-06 */ + @PreAuthorize("hasAuthority('admin:bargain:update')") @ApiOperation(value = "修改砍价商品") @RequestMapping(value = "/update", method = RequestMethod.POST) - public CommonResult update(@RequestParam Integer id, @RequestBody @Validated StoreBargainRequest storeBargainRequest){ - storeBargainRequest.setId(id); - if(storeBargainService.updateBargain(storeBargainRequest)){ + public CommonResult update(@RequestBody @Validated StoreBargainRequest storeBargainRequest){ + if (storeBargainService.updateBargain(storeBargainRequest)) { return CommonResult.success(); - }else{ + } else { return CommonResult.failed(); } } @@ -117,25 +112,23 @@ public class StoreBargainController { /** * 查询砍价商品详情 * @param id Integer - * @author HZW - * @since 2020-11-06 */ + @PreAuthorize("hasAuthority('admin:bargain:info')") @ApiOperation(value = "查询砍价商品详情") @RequestMapping(value = "/info", method = RequestMethod.GET) - public CommonResult info(@RequestParam(value = "id") Integer id){ - StoreProductResponse storeBargainResponse = storeBargainService.getAdminDetail(id); + public CommonResult info(@RequestParam(value = "id") Integer id){ + StoreProductInfoResponse storeBargainResponse = storeBargainService.getAdminDetail(id); return CommonResult.success(storeBargainResponse); } /** * * 修改砍价商品状态 - * @param id - * @param status + * @param id 商品id + * @param status 商品状态 * @return {@link CommonResult} - * @Author HZW - * @Date 2020/11/9 */ + @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){ @@ -150,10 +143,8 @@ public class StoreBargainController { * 分页显示砍价列表 * @param request 搜索条件 * @param pageParamRequest 分页参数 - * @author HZW - * @since 2020-11-12 - * @return */ + @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){ @@ -164,10 +155,8 @@ public class StoreBargainController { /** * 获取砍价参与详情列表 * @param id StoreBargainUser 砍价参与用户编号 - * @author HZW - * @since 2020-11-12 - * @return */ + @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){ diff --git a/crmeb/src/main/java/com/zbkj/crmeb/combination/controller/StoreCombinationController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreCombinationController.java similarity index 74% rename from crmeb/src/main/java/com/zbkj/crmeb/combination/controller/StoreCombinationController.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreCombinationController.java index cfd6c24c..1ba35e86 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/combination/controller/StoreCombinationController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreCombinationController.java @@ -1,21 +1,22 @@ -package com.zbkj.crmeb.combination.controller; +package com.zbkj.admin.controller; -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.PageParamRequest; -import com.zbkj.crmeb.combination.request.StoreCombinationRequest; -import com.zbkj.crmeb.combination.request.StoreCombinationSearchRequest; -import com.zbkj.crmeb.combination.request.StorePinkSearchRequest; -import com.zbkj.crmeb.combination.response.StoreCombinationResponse; -import com.zbkj.crmeb.combination.response.StorePinkAdminListResponse; -import com.zbkj.crmeb.combination.response.StorePinkDetailResponse; -import com.zbkj.crmeb.combination.service.StoreCombinationService; -import com.zbkj.crmeb.combination.service.StorePinkService; -import com.zbkj.crmeb.store.response.StoreProductResponse; +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.*; @@ -50,10 +51,9 @@ public class StoreCombinationController { * 分页显示拼团商品表 * @param request 搜索条件 * @param pageParamRequest 分页参数 - * @author HZW - * @since 2020-11-13 * @return */ + @PreAuthorize("hasAuthority('admin:combination:list')") @ApiOperation(value = "分页显示拼团商品表") //配合swagger使用 @RequestMapping(value = "/list", method = RequestMethod.GET) public CommonResult> getList(@Validated StoreCombinationSearchRequest request, @Validated PageParamRequest pageParamRequest){ @@ -64,25 +64,23 @@ public class StoreCombinationController { /** * 新增拼团商品表 * @param request 新增参数 - * @author HZW - * @since 2020-11-13 */ + @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(); + return CommonResult.success("新增拼团商品成功"); }else{ - return CommonResult.failed(); + return CommonResult.failed("新增拼团商品失败"); } } /** * 删除拼团商品表 * @param id Integer - * @author HZW - * @since 2020-11-13 */ + @PreAuthorize("hasAuthority('admin:combination:delete')") @ApiOperation(value = "删除拼团商品") @RequestMapping(value = "/delete", method = RequestMethod.GET) public CommonResult delete(@RequestParam(value = "id") Integer id){ @@ -95,15 +93,12 @@ public class StoreCombinationController { /** * 修改拼团商品表 - * @param id integer id * @param storeCombinationRequest 修改参数 - * @author HZW - * @since 2020-11-13 */ + @PreAuthorize("hasAuthority('admin:combination:update')") @ApiOperation(value = "修改拼团商品") @RequestMapping(value = "/update", method = RequestMethod.POST) - public CommonResult update(@RequestParam Integer id, @RequestBody @Validated StoreCombinationRequest storeCombinationRequest){ - storeCombinationRequest.setId(id); + public CommonResult update(@RequestBody @Validated StoreCombinationRequest storeCombinationRequest){ if(storeCombinationService.updateCombination(storeCombinationRequest)){ return CommonResult.success(); }else{ @@ -114,21 +109,19 @@ public class StoreCombinationController { /** * 查询拼团商品信息 * @param id Integer - * @author HZW - * @since 2020-11-13 - * @return */ + @PreAuthorize("hasAuthority('admin:combination:info')") @ApiOperation(value = "拼团商品详情") @RequestMapping(value = "/info", method = RequestMethod.GET) - public CommonResult info(@RequestParam(value = "id") Integer id){ - StoreProductResponse detail = storeCombinationService.getAdminDetail(id); + public CommonResult info(@RequestParam(value = "id") Integer id){ + StoreProductInfoResponse detail = storeCombinationService.getAdminDetail(id); return CommonResult.success(detail); } /** * 修改拼团商品状态 - * @return */ + @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){ @@ -141,8 +134,8 @@ public class StoreCombinationController { /** * 拼团统计 - * @return */ + @PreAuthorize("hasAuthority('admin:combination:statistics')") @ApiOperation(value = "拼团统计") @RequestMapping(value = "/statistics", method = RequestMethod.GET) public CommonResult> statistics() { @@ -152,8 +145,8 @@ public class StoreCombinationController { /** * 拼团列表 - * @return */ + @PreAuthorize("hasAuthority('admin:combination:combine:list')") @ApiOperation(value = "拼团列表") @RequestMapping(value = "/combine/list", method = RequestMethod.GET) public CommonResult> getCombineList(@Validated StorePinkSearchRequest request, @Validated PageParamRequest pageParamRequest){ @@ -163,8 +156,8 @@ public class StoreCombinationController { /** * 拼团订单列表 - * @return */ + @PreAuthorize("hasAuthority('admin:combination:order:pink')") @ApiOperation(value = "拼团订单列表") @RequestMapping(value = "/order_pink/{id}", method = RequestMethod.GET) public CommonResult> getPinkList(@PathVariable(value = "id") Integer id) { diff --git a/crmeb/src/main/java/com/zbkj/crmeb/marketing/controller/StoreCouponController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreCouponController.java similarity index 71% rename from crmeb/src/main/java/com/zbkj/crmeb/marketing/controller/StoreCouponController.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreCouponController.java index 3f38b16d..354a47aa 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/marketing/controller/StoreCouponController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreCouponController.java @@ -1,18 +1,20 @@ -package com.zbkj.crmeb.marketing.controller; +package com.zbkj.admin.controller; -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.PageParamRequest; -import com.common.SearchAndPageRequest; -import com.zbkj.crmeb.marketing.model.StoreCoupon; -import com.zbkj.crmeb.marketing.request.StoreCouponRequest; -import com.zbkj.crmeb.marketing.request.StoreCouponSearchRequest; -import com.zbkj.crmeb.marketing.response.StoreCouponInfoResponse; -import com.zbkj.crmeb.marketing.service.StoreCouponService; +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.*; @@ -42,12 +44,11 @@ public class StoreCouponController { * 分页显示优惠券表 * @param request 搜索条件 * @param pageParamRequest 分页参数 - * @author Mr.Zhang - * @since 2020-05-18 */ + @PreAuthorize("hasAuthority('admin:coupon:list')") @ApiOperation(value = "分页列表") @RequestMapping(value = "/list", method = RequestMethod.GET) - public CommonResult> getList(@Validated StoreCouponSearchRequest request, @Validated PageParamRequest pageParamRequest){ + public CommonResult> getList(@Validated StoreCouponSearchRequest request, @Validated PageParamRequest pageParamRequest) { CommonPage storeCouponCommonPage = CommonPage.restPage(storeCouponService.getList(request, pageParamRequest)); return CommonResult.success(storeCouponCommonPage); } @@ -55,15 +56,14 @@ public class StoreCouponController { /** * 保存优惠券表 * @param request StoreCouponRequest 新增参数 - * @author Mr.Zhang - * @since 2020-05-18 */ + @PreAuthorize("hasAuthority('admin:coupon:save')") @ApiOperation(value = "新增") @RequestMapping(value = "/save", method = RequestMethod.POST) - public CommonResult save(@RequestBody @Validated StoreCouponRequest request){ - if(storeCouponService.create(request)){ + public CommonResult save(@RequestBody @Validated StoreCouponRequest request) { + if (storeCouponService.create(request)) { return CommonResult.success(); - }else{ + } else { return CommonResult.failed(); } } @@ -71,18 +71,14 @@ public class StoreCouponController { /** * 是否有效 * @param id integer id - * @author Mr.Zhang - * @since 2020-05-18 */ + @PreAuthorize("hasAuthority('admin:coupon:update:status')") @ApiOperation(value = "修改") @RequestMapping(value = "/update/status", method = RequestMethod.POST) - public CommonResult updateStatus(@RequestParam Integer id, @RequestParam Boolean status){ - StoreCoupon storeCoupon = new StoreCoupon(); - storeCoupon.setId(id); - storeCoupon.setStatus(status); - if(storeCouponService.updateById(storeCoupon)){ + public CommonResult updateStatus(@RequestParam Integer id, @RequestParam Boolean status) { + if (storeCouponService.updateStatus(id, status)) { return CommonResult.success(); - }else{ + } else { return CommonResult.failed(); } } @@ -90,12 +86,12 @@ public class StoreCouponController { /** * 详情 * @param id integer id - * @author Mr.Zhang - * @since 2020-05-18 */ + @PreAuthorize("hasAuthority('admin:coupon:info')") @ApiOperation(value = "详情") @RequestMapping(value = "/info", method = RequestMethod.POST) - public CommonResult info(@RequestParam Integer id){ + @ApiImplicitParam(name="id", value="优惠券ID", required = true) + public CommonResult info(@RequestParam Integer id) { return CommonResult.success(storeCouponService.info(id)); } @@ -103,9 +99,10 @@ public class StoreCouponController { * 发送优惠券列表 * @param searchAndPageRequest 搜索分页参数 */ + @PreAuthorize("hasAuthority('admin:coupon:send:list')") @ApiOperation(value = "发送优惠券列表") @RequestMapping(value = "/send/list", method = RequestMethod.GET) - public CommonResult> getSendList(@Validated SearchAndPageRequest searchAndPageRequest){ + public CommonResult> getSendList(@Validated SearchAndPageRequest searchAndPageRequest) { CommonPage storeCouponCommonPage = CommonPage.restPage(storeCouponService.getSendList(searchAndPageRequest)); return CommonResult.success(storeCouponCommonPage); } @@ -114,12 +111,13 @@ public class StoreCouponController { * 删除优惠券 * @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)){ + public CommonResult delete(@RequestParam Integer id) { + if (storeCouponService.delete(id)) { return CommonResult.success("删除成功"); - }else{ + } else { return CommonResult.failed("删除失败"); } } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/marketing/controller/StoreCouponUserController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreCouponUserController.java similarity index 74% rename from crmeb/src/main/java/com/zbkj/crmeb/marketing/controller/StoreCouponUserController.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreCouponUserController.java index cc2b1e4c..51fc57b7 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/marketing/controller/StoreCouponUserController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreCouponUserController.java @@ -1,21 +1,19 @@ -package com.zbkj.crmeb.marketing.controller; +package com.zbkj.admin.controller; -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.PageParamRequest; -import com.sun.org.apache.xpath.internal.operations.Bool; -import com.zbkj.crmeb.marketing.request.StoreCouponUserRequest; -import com.zbkj.crmeb.marketing.request.StoreCouponUserSearchRequest; -import com.zbkj.crmeb.marketing.response.StoreCouponUserResponse; +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.beans.BeanUtils; import org.springframework.web.bind.annotation.*; -import com.zbkj.crmeb.marketing.service.StoreCouponUserService; -import com.zbkj.crmeb.marketing.model.StoreCouponUser; /** @@ -43,12 +41,11 @@ public class StoreCouponUserController { * 分页显示优惠券发放记录表 * @param request 搜索条件 * @param pageParamRequest 分页参数 - * @author Mr.Zhang - * @since 2020-05-18 */ + @PreAuthorize("hasAuthority('admin:coupon:user:list')") @ApiOperation(value = "分页列表") @RequestMapping(value = "/list", method = RequestMethod.GET) - public CommonResult> getList(@Validated StoreCouponUserSearchRequest request, @Validated PageParamRequest pageParamRequest){ + public CommonResult> getList(@Validated StoreCouponUserSearchRequest request, @Validated PageParamRequest pageParamRequest) { CommonPage storeCouponUserCommonPage = CommonPage.restPage(storeCouponUserService.getList(request, pageParamRequest)); return CommonResult.success(storeCouponUserCommonPage); } @@ -56,15 +53,14 @@ public class StoreCouponUserController { /** * 领券 * @param storeCouponUserRequest 新增参数 - * @author Mr.Zhang - * @since 2020-05-18 */ + @PreAuthorize("hasAuthority('admin:coupon:user:receive')") @ApiOperation(value = "领券") @RequestMapping(value = "/receive", method = RequestMethod.POST) - public CommonResult receive(@Validated StoreCouponUserRequest storeCouponUserRequest){ - if(storeCouponUserService.receive(storeCouponUserRequest)){ + public CommonResult receive(@Validated StoreCouponUserRequest storeCouponUserRequest) { + if(storeCouponUserService.receive(storeCouponUserRequest)) { return CommonResult.success(); - }else{ + } else { return CommonResult.failed(); } } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/controller/StoreOrderController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreOrderController.java similarity index 82% rename from crmeb/src/main/java/com/zbkj/crmeb/store/controller/StoreOrderController.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreOrderController.java index 50081045..338c6926 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/controller/StoreOrderController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreOrderController.java @@ -1,20 +1,20 @@ -package com.zbkj.crmeb.store.controller; +package com.zbkj.admin.controller; -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.PageParamRequest; -import com.zbkj.crmeb.express.vo.ExpressSheetVo; -import com.zbkj.crmeb.express.vo.LogisticsResultVo; -import com.zbkj.crmeb.store.request.*; -import com.zbkj.crmeb.store.response.*; -import com.zbkj.crmeb.store.service.StoreOrderService; -import com.zbkj.crmeb.store.service.StoreOrderVerification; +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.*; @@ -49,6 +49,7 @@ public class StoreOrderController { * @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) { @@ -58,15 +59,19 @@ public class StoreOrderController { /** * 获取订单各状态数量 */ + @PreAuthorize("hasAuthority('admin:order:status:num')") @ApiOperation(value = "获取订单各状态数量") @RequestMapping(value = "/status/num", method = RequestMethod.GET) - public CommonResult getOrderStatusNum(@RequestParam(value = "dateLimit", defaultValue = "") String dateLimit) { - return CommonResult.success(storeOrderService.getOrderStatusNum(dateLimit)); + 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) { @@ -77,6 +82,7 @@ public class StoreOrderController { /** * 订单删除 */ + @PreAuthorize("hasAuthority('admin:order:delete')") @ApiOperation(value = "订单删除") @RequestMapping(value = "/delete", method = RequestMethod.GET) public CommonResult delete(@RequestParam(value = "orderNo") String orderNo) { @@ -90,6 +96,7 @@ public class StoreOrderController { /** * 备注订单 */ + @PreAuthorize("hasAuthority('admin:order:mark')") @ApiOperation(value = "备注") @RequestMapping(value = "/mark", method = RequestMethod.POST) public CommonResult mark(@RequestParam String orderNo, @RequestParam String mark) { @@ -103,9 +110,10 @@ public class StoreOrderController { /** * 修改订单(改价) */ + @PreAuthorize("hasAuthority('admin:order:update:price')") @ApiOperation(value = "修改订单(改价)") @RequestMapping(value = "/update/price", method = RequestMethod.POST) - public CommonResult update(@RequestBody @Validated StoreOrderUpdatePriceRequest request) { + public CommonResult updatePrice(@RequestBody @Validated StoreOrderUpdatePriceRequest request) { if (storeOrderService.updatePrice(request)) { return CommonResult.success(); } else { @@ -116,6 +124,7 @@ public class StoreOrderController { /** * 订单详情 */ + @PreAuthorize("hasAuthority('admin:order:info')") @ApiOperation(value = "详情") @RequestMapping(value = "/info", method = RequestMethod.GET) public CommonResult info(@RequestParam(value = "orderNo") String orderNo) { @@ -125,6 +134,7 @@ public class StoreOrderController { /** * 发送货 */ + @PreAuthorize("hasAuthority('admin:order:send')") @ApiOperation(value = "发送货") @RequestMapping(value = "/send", method = RequestMethod.POST) public CommonResult send(@RequestBody @Validated StoreOrderSendRequest request) { @@ -137,6 +147,7 @@ public class StoreOrderController { /** * 退款 */ + @PreAuthorize("hasAuthority('admin:order:refund')") @ApiOperation(value = "退款") @RequestMapping(value = "/refund", method = RequestMethod.GET) public CommonResult send(@Validated StoreOrderRefundRequest request) { @@ -146,6 +157,7 @@ public class StoreOrderController { /** * 拒绝退款 */ + @PreAuthorize("hasAuthority('admin:order:refund:refuse')") @ApiOperation(value = "拒绝退款") @RequestMapping(value = "/refund/refuse", method = RequestMethod.GET) public CommonResult refundRefuse(@RequestParam String orderNo, @RequestParam String reason) { @@ -158,6 +170,7 @@ public class StoreOrderController { /** * 快递查询 */ + @PreAuthorize("hasAuthority('admin:order:logistics:info')") @ApiOperation(value = "快递查询") @RequestMapping(value = "/getLogisticsInfo", method = RequestMethod.GET) public CommonResult getLogisticsInfo(@RequestParam(value = "orderNo") String orderNo) { @@ -170,6 +183,7 @@ public class StoreOrderController { * @author stivepeim * @since 2020-08-29 */ + @PreAuthorize("hasAuthority('admin:order:statistics')") @ApiOperation(value = "核销订单头部数据") @RequestMapping(value = "/statistics", method = RequestMethod.GET) public CommonResult getStatistics() { @@ -182,6 +196,7 @@ public class StoreOrderController { * @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) { @@ -195,6 +210,7 @@ public class StoreOrderController { * @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) { @@ -207,6 +223,7 @@ public class StoreOrderController { * @author stivepeim * @since 2020-09-01 */ + @PreAuthorize("hasAuthority('admin:order:write:confirm')") @ApiOperation(value = "核销码查询待核销订单") @RequestMapping(value = "/writeConfirm/{vCode}", method = RequestMethod.GET) public CommonResult verificationConfirmOrder( @@ -214,24 +231,13 @@ public class StoreOrderController { return CommonResult.success(storeOrderVerification.getVerificationOrderByCode(vCode)); } - /** - * 一键改价 - * - * @author stivepeim - * @since 2020-09-01 - */ - @ApiOperation(value = "一键改价") - @RequestMapping(value = "/editPrice", method = RequestMethod.POST) - public CommonResult editOrderPrice(@RequestBody @Validated StoreOrderEditPriceRequest request) { - return CommonResult.success(storeOrderService.editPrice(request)); - } - /** * 订单统计详情 * * @author stivepeim * @since 2020-09-01 */ + @PreAuthorize("hasAuthority('admin:order:time')") @ApiOperation(value = "订单统计详情") @RequestMapping(value = "/time", method = RequestMethod.GET) @ApiImplicitParams({ @@ -247,11 +253,13 @@ public class StoreOrderController { /** * 获取面单默认配置信息 */ + @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 00000000..2d1f765e --- /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~2020 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/src/main/java/com/zbkj/crmeb/store/controller/StoreProductController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreProductController.java similarity index 61% rename from crmeb/src/main/java/com/zbkj/crmeb/store/controller/StoreProductController.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreProductController.java index 224bc57e..c10f5605 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/controller/StoreProductController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreProductController.java @@ -1,17 +1,17 @@ -package com.zbkj.crmeb.store.controller; +package com.zbkj.admin.controller; -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.PageParamRequest; -import com.zbkj.crmeb.store.model.StoreProduct; -import com.zbkj.crmeb.store.request.StoreCopyProductRequest; -import com.zbkj.crmeb.store.request.StoreProductRequest; -import com.zbkj.crmeb.store.request.StoreProductSearchRequest; -import com.zbkj.crmeb.store.request.StoreProductStockRequest; -import com.zbkj.crmeb.store.response.StoreProductResponse; -import com.zbkj.crmeb.store.response.StoreProductTabsHeader; -import com.zbkj.crmeb.store.service.StoreCartService; -import com.zbkj.crmeb.store.service.StoreProductService; +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; @@ -19,6 +19,7 @@ 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.*; @@ -56,29 +57,26 @@ public class StoreProductController { * 分页显示商品表 * @param request 搜索条件 * @param pageParamRequest 分页参数 - * @author Mr.Zhang - * @since 2020-05-27 */ + @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.getList(request, pageParamRequest))); + public CommonResult> getList(@Validated StoreProductSearchRequest request, + @Validated PageParamRequest pageParamRequest) { + return CommonResult.success(CommonPage.restPage(storeProductService.getAdminList(request, pageParamRequest))); } /** - * 新增商品表 - * @param storeProductRequest 新增参数 - * @author Mr.Zhang - * @since 2020-05-27 + * 新增商品 + * @param request 新增参数 */ - @ApiOperation(value = "新增") + @PreAuthorize("hasAuthority('admin:product:save')") + @ApiOperation(value = "新增商品") @RequestMapping(value = "/save", method = RequestMethod.POST) - public CommonResult save(@RequestBody @Validated StoreProductRequest storeProductRequest){ - if(storeProductService.save(storeProductRequest)){ + public CommonResult save(@RequestBody @Validated StoreProductAddRequest request) { + if (storeProductService.save(request)) { return CommonResult.success(); - }else{ + } else { return CommonResult.failed(); } } @@ -86,20 +84,19 @@ public class StoreProductController { /** * 删除商品表 * @param id Integer - * @author Mr.Zhang - * @since 2020-05-27 */ + @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)){ + public CommonResult delete(@RequestBody @PathVariable Integer id, @RequestParam(value = "type", required = false, defaultValue = "recycle")String type) { + if (storeProductService.deleteProduct(id, type)) { if (type.equals("recycle")) { storeCartService.productStatusNotEnable(id); } else { storeCartService.productDelete(id); } return CommonResult.success(); - }else{ + } else { return CommonResult.failed(); } } @@ -107,55 +104,51 @@ public class StoreProductController { /** * 恢复已删除商品表 * @param id Integer - * @author Stivepeim - * @since 2020-08-28 */ + @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)){ + public CommonResult restore(@RequestBody @PathVariable Integer id) { + if (storeProductService.reStoreProduct(id)) { return CommonResult.success(); - }else{ + } else { return CommonResult.failed(); } } /** - * 修改商品表 - * @param storeProductRequest 修改参数 - * @author Mr.Zhang - * @since 2020-05-27 + * 商品修改 + * @param storeProductRequest 商品参数 */ - @ApiOperation(value = "修改") + @PreAuthorize("hasAuthority('admin:product:update')") + @ApiOperation(value = "商品修改") @RequestMapping(value = "/update", method = RequestMethod.POST) - public CommonResult update(@RequestBody @Validated StoreProductRequest storeProductRequest){ - if(storeProductService.update(storeProductRequest)){ + public CommonResult update(@RequestBody @Validated StoreProductAddRequest storeProductRequest) { + if (storeProductService.update(storeProductRequest)) { return CommonResult.success(); - }else{ + } else { return CommonResult.failed(); } } /** - * 查询商品表信息 - * @param id Integer - * @author Mr.Zhang - * @since 2020-05-27 + * 商品详情 + * @param id 商品id */ - @ApiOperation(value = "详情") + @PreAuthorize("hasAuthority('admin:product:info')") + @ApiOperation(value = "商品详情") @RequestMapping(value = "/info/{id}", method = RequestMethod.GET) - public CommonResult info(@PathVariable Integer id){ - StoreProductResponse storeProductResponse = storeProductService.getByProductId(id); - return CommonResult.success(storeProductResponse); + public CommonResult info(@PathVariable Integer id) { + return CommonResult.success(storeProductService.getInfo(id)); } /** * 商品tabs表头数据 - * @return */ + @PreAuthorize("hasAuthority('admin:product:tabs:headers')") @ApiOperation(value = "商品表头数量") @RequestMapping(value = "/tabs/headers", method = RequestMethod.GET) - public CommonResult> getTabsHeader(){ + public CommonResult> getTabsHeader() { return CommonResult.success(storeProductService.getTabsHeader()); } @@ -163,12 +156,13 @@ public class StoreProductController { /** * 上架 */ + @PreAuthorize("hasAuthority('admin:product:up')") @ApiOperation(value = "上架") @RequestMapping(value = "/putOnShell/{id}", method = RequestMethod.GET) - public CommonResult putOn(@PathVariable Integer id){ - if(storeProductService.putOnShelf(id)){ + public CommonResult putOn(@PathVariable Integer id) { + if (storeProductService.putOnShelf(id)) { return CommonResult.success(); - }else{ + } else { return CommonResult.failed(); } } @@ -176,54 +170,18 @@ public class StoreProductController { /** * 下架 */ + @PreAuthorize("hasAuthority('admin:product:down')") @ApiOperation(value = "下架") @RequestMapping(value = "/offShell/{id}", method = RequestMethod.GET) - public CommonResult offShell(@PathVariable Integer id){ - if(storeProductService.offShelf(id)){ + public CommonResult offShell(@PathVariable Integer id) { + if (storeProductService.offShelf(id)) { return CommonResult.success(); - }else{ - return CommonResult.failed(); - } - } - - /** - * 虚拟销量 - * @param id integer id - * @author Mr.Zhang - * @since 2020-05-06 - */ - @ApiOperation(value = "虚拟销量") - @RequestMapping(value = "/ficti/{id}/{num}", method = RequestMethod.GET) - @ApiImplicitParams({ - @ApiImplicitParam(name = "id", value = "id", dataType = "int", required = true), - @ApiImplicitParam(name = "num", value = "数值", dataType = "int", required = true), - }) - public CommonResult sale(@PathVariable Integer id, @PathVariable Integer num){ - StoreProduct storeProduct = storeProductService.getById(id); - storeProduct.setFicti(num); - if(storeProductService.updateById(storeProduct)){ - return CommonResult.success(); - }else{ - return CommonResult.failed(); - } - } - - /** - * 库存变动 - * @param request StoreProductStockRequest 参数 - * @author Mr.Zhang - * @since 2020-05-19 - */ - @ApiOperation(value = "库存变动") - @RequestMapping(value = "/stock", method = RequestMethod.GET) - public CommonResult stock(@Validated StoreProductStockRequest request){ - if(storeProductService.stockAddRedis(request)){ - return CommonResult.success(); - }else{ + } else { return CommonResult.failed(); } } + @PreAuthorize("hasAuthority('admin:product:import:product')") @ApiOperation(value = "导入99Api商品") @RequestMapping(value = "/importProduct", method = RequestMethod.POST) @ApiImplicitParams({ @@ -240,12 +198,14 @@ public class StoreProductController { /** * 获取复制商品配置 */ + @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) { diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/controller/StoreProductReplyController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreProductReplyController.java similarity index 50% rename from crmeb/src/main/java/com/zbkj/crmeb/store/controller/StoreProductReplyController.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreProductReplyController.java index 51b8d6a3..874bcb37 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/controller/StoreProductReplyController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreProductReplyController.java @@ -1,29 +1,22 @@ -package com.zbkj.crmeb.store.controller; +package com.zbkj.admin.controller; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.PageParamRequest; -import com.utils.CrmebUtil; -import com.utils.DateUtil; -import com.zbkj.crmeb.store.model.StoreProductReply; -import com.zbkj.crmeb.store.request.StoreProductReplyAddRequest; -import com.zbkj.crmeb.store.request.StoreProductReplyCommentRequest; -import com.zbkj.crmeb.store.request.StoreProductReplyRequest; -import com.zbkj.crmeb.store.request.StoreProductReplySearchRequest; -import com.zbkj.crmeb.store.response.StoreProductReplyResponse; -import com.zbkj.crmeb.store.service.StoreProductReplyService; -import io.swagger.models.auth.In; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; +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 org.springframework.beans.BeanUtils; +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; - /** * 评论表 前端控制器 @@ -50,14 +43,12 @@ public class StoreProductReplyController { * 分页显示评论表 * @param request 搜索条件 * @param pageParamRequest 分页参数 - * @author Mr.Zhang - * @since 2020-05-27 */ + @PreAuthorize("hasAuthority('admin:product:reply:list')") @ApiOperation(value = "分页列表") //配合swagger使用 @RequestMapping(value = "/list", method = RequestMethod.GET) - public CommonResult> getList( - @Validated StoreProductReplySearchRequest request, - @Validated PageParamRequest pageParamRequest){ + public CommonResult> getList(@Validated StoreProductReplySearchRequest request, + @Validated PageParamRequest pageParamRequest) { CommonPage storeProductReplyCommonPage = CommonPage.restPage(storeProductReplyService.getList(request, pageParamRequest)); return CommonResult.success(storeProductReplyCommonPage); @@ -66,16 +57,14 @@ public class StoreProductReplyController { /** * 新增评论表 * @param request 新增参数 - * @author Mr.Zhang - * @since 2020-05-27 */ + @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)){ + public CommonResult save(@RequestBody @Validated StoreProductReplyAddRequest request) { + if (storeProductReplyService.virtualCreate(request)) { return CommonResult.success(); - }else{ + } else { return CommonResult.failed(); } } @@ -83,38 +72,14 @@ public class StoreProductReplyController { /** * 删除评论表 * @param id Integer - * @author Mr.Zhang - * @since 2020-05-27 */ + @PreAuthorize("hasAuthority('admin:product:reply:delete')") @ApiOperation(value = "删除") @RequestMapping(value = "/delete/{id}", method = RequestMethod.GET) - public CommonResult delete(@PathVariable Integer id){ - LambdaUpdateWrapper lmdUp = new LambdaUpdateWrapper<>(); - lmdUp.set(StoreProductReply::getIsDel, 1); - lmdUp.eq(StoreProductReply::getId, id); - if(storeProductReplyService.update(lmdUp)){ + public CommonResult delete(@PathVariable Integer id) { + if (storeProductReplyService.delete(id)) { return CommonResult.success(); - }else{ - return CommonResult.failed(); - } - } - - /** - * 修改评论表 - * @param storeProductReplyRequest 修改参数 - * @author Mr.Zhang - * @since 2020-05-27 - */ - @ApiOperation(value = "修改") - @RequestMapping(value = "/update", method = RequestMethod.POST) - public CommonResult update( - @RequestBody @Validated StoreProductReplyRequest storeProductReplyRequest){ - StoreProductReply storeProductReply = new StoreProductReply(); - BeanUtils.copyProperties(storeProductReplyRequest, storeProductReply); - storeProductReply.setId(storeProductReplyRequest.getId()); - if(storeProductReplyService.updateById(storeProductReply)){ - return CommonResult.success(); - }else{ + } else { return CommonResult.failed(); } } @@ -122,12 +87,11 @@ public class StoreProductReplyController { /** * 查询评论表信息 * @param id Integer - * @author Mr.Zhang - * @since 2020-05-27 */ + @PreAuthorize("hasAuthority('admin:product:reply:info')") @ApiOperation(value = "详情") @RequestMapping(value = "/info/{id}", method = RequestMethod.GET) - public CommonResult info(@PathVariable Integer id){ + public CommonResult info(@PathVariable Integer id) { StoreProductReply storeProductReply = storeProductReplyService.getById(id); return CommonResult.success(storeProductReply); } @@ -135,22 +99,15 @@ public class StoreProductReplyController { /** * 回复商品评论 * @param request StoreProductReplyCommentRequest 回复参数 - * @author Mr.Zhang - * @since 2020-05-27 */ + @PreAuthorize("hasAuthority('admin:product:reply:comment')") @ApiOperation(value = "回复") @RequestMapping(value = "/comment", method = RequestMethod.POST) - public CommonResult comment(@RequestBody StoreProductReplyCommentRequest request){ - List ids = CrmebUtil.stringToArray(request.getIds()); - for (Integer id : ids) { - LambdaUpdateWrapper lup = new LambdaUpdateWrapper<>(); - lup.eq(StoreProductReply::getId, id); - lup.set(StoreProductReply::getMerchantReplyContent, request.getMerchantReplyContent()); - lup.set(StoreProductReply::getMerchantReplyTime, DateUtil.getNowTime()); - lup.set(StoreProductReply::getIsReply, true); - storeProductReplyService.update(lup); + public CommonResult comment(@RequestBody StoreProductReplyCommentRequest request) { + if (storeProductReplyService.comment(request)) { + return CommonResult.success(); } - return CommonResult.success(); + return CommonResult.failed(); } } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/controller/StoreProductRuleController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreProductRuleController.java similarity index 71% rename from crmeb/src/main/java/com/zbkj/crmeb/store/controller/StoreProductRuleController.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreProductRuleController.java index 6fd20233..59e9c3bb 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/controller/StoreProductRuleController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreProductRuleController.java @@ -1,19 +1,19 @@ -package com.zbkj.crmeb.store.controller; +package com.zbkj.admin.controller; -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.PageParamRequest; -import com.utils.CrmebUtil; -import com.zbkj.crmeb.store.model.StoreProductRule; -import com.zbkj.crmeb.store.request.StoreProductRuleRequest; -import com.zbkj.crmeb.store.request.StoreProductRuleSearchRequest; -import com.zbkj.crmeb.store.service.StoreProductRuleService; +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.beans.BeanUtils; import org.springframework.web.bind.annotation.*; @@ -42,13 +42,12 @@ public class StoreProductRuleController { * 分页显示商品规则值(规格)表 * @param request 搜索条件 * @param pageParamRequest 分页参数 - * @author Mr.Zhang - * @since 2020-05-27 */ + @PreAuthorize("hasAuthority('admin:product:rule:list')") @ApiOperation(value = "分页列表") //配合swagger使用 @RequestMapping(value = "/list", method = RequestMethod.GET) public CommonResult> getList( - @Validated StoreProductRuleSearchRequest request, @Validated PageParamRequest pageParamRequest){ + @Validated StoreProductRuleSearchRequest request, @Validated PageParamRequest pageParamRequest) { CommonPage storeProductRuleCommonPage = CommonPage.restPage(storeProductRuleService.getList(request, pageParamRequest)); return CommonResult.success(storeProductRuleCommonPage); @@ -57,15 +56,14 @@ public class StoreProductRuleController { /** * 新增商品规则值(规格)表 * @param storeProductRuleRequest 新增参数 - * @author Mr.Zhang - * @since 2020-05-27 */ + @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)){ + public CommonResult save(@RequestBody @Validated StoreProductRuleRequest storeProductRuleRequest) { + if (storeProductRuleService.save(storeProductRuleRequest)) { return CommonResult.success(); - }else{ + } else { return CommonResult.failed(); } } @@ -73,15 +71,14 @@ public class StoreProductRuleController { /** * 删除商品规则值(规格)表 * @param ids Integer - * @author Mr.Zhang - * @since 2020-05-27 */ + @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))){ + public CommonResult delete(@PathVariable String ids) { + if (storeProductRuleService.removeByIds(CrmebUtil.stringToArray(ids))) { return CommonResult.success(); - }else{ + } else { return CommonResult.failed(); } } @@ -89,19 +86,14 @@ public class StoreProductRuleController { /** * 修改商品规则值(规格)表 * @param storeProductRuleRequest 修改参数 - * @author Mr.Zhang - * @since 2020-05-27 */ + @PreAuthorize("hasAuthority('admin:product:rule:update')") @ApiOperation(value = "修改") @RequestMapping(value = "/update", method = RequestMethod.POST) - public CommonResult update(@RequestBody @Validated StoreProductRuleRequest storeProductRuleRequest){ - StoreProductRule storeProductRule = new StoreProductRule(); - BeanUtils.copyProperties(storeProductRuleRequest, storeProductRule); - storeProductRule.setId(storeProductRuleRequest.getId()); - - if(storeProductRuleService.updateById(storeProductRule)){ + public CommonResult update(@RequestBody @Validated StoreProductRuleRequest storeProductRuleRequest) { + if (storeProductRuleService.updateRule(storeProductRuleRequest)) { return CommonResult.success(); - }else{ + } else { return CommonResult.failed(); } } @@ -109,12 +101,11 @@ public class StoreProductRuleController { /** * 查询商品规则值(规格)表信息 * @param id Integer - * @author Mr.Zhang - * @since 2020-05-27 */ + @PreAuthorize("hasAuthority('admin:product:rule:info')") @ApiOperation(value = "详情") @RequestMapping(value = "/info/{id}", method = RequestMethod.GET) - public CommonResult info(@PathVariable Integer id){ + public CommonResult info(@PathVariable Integer id) { StoreProductRule storeProductRule = storeProductRuleService.getById(id); return CommonResult.success(storeProductRule); } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/seckill/controller/StoreSeckillController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreSeckillController.java similarity index 65% rename from crmeb/src/main/java/com/zbkj/crmeb/seckill/controller/StoreSeckillController.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreSeckillController.java index 4a36719c..432ad9f5 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/seckill/controller/StoreSeckillController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreSeckillController.java @@ -1,20 +1,18 @@ -package com.zbkj.crmeb.seckill.controller; +package com.zbkj.admin.controller; -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.PageParamRequest; -import com.exception.CrmebException; -import com.zbkj.crmeb.seckill.model.StoreSeckill; -import com.zbkj.crmeb.seckill.request.StoreSeckillRequest; -import com.zbkj.crmeb.seckill.request.StoreSeckillSearchRequest; -import com.zbkj.crmeb.seckill.response.StoreSeckillResponse; -import com.zbkj.crmeb.seckill.service.StoreSeckillService; -import com.zbkj.crmeb.store.response.StoreProductResponse; +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.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.*; @@ -35,7 +33,6 @@ import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("api/admin/store/seckill") @Api(tags = "商品 -- 秒杀 -- 商品") //配合swagger使用 - public class StoreSeckillController { @Autowired @@ -45,12 +42,11 @@ public class StoreSeckillController { * 分页显示商品秒杀产品表 * @param request 搜索条件 * @param pageParamRequest 分页参数 - * @author Stivepeim - * @since 2020-09-17 */ + @PreAuthorize("hasAuthority('admin:seckill:list')") @ApiOperation(value = "分页列表") //配合swagger使用 @RequestMapping(value = "/list", method = RequestMethod.GET) - public CommonResult> getList(@Validated StoreSeckillSearchRequest request, @Validated PageParamRequest pageParamRequest){ + public CommonResult> getList(@Validated StoreSeckillSearchRequest request, @Validated PageParamRequest pageParamRequest) { CommonPage storeSeckillCommonPage = CommonPage.restPage(storeSeckillService.getList(request, pageParamRequest)); return CommonResult.success(storeSeckillCommonPage); @@ -59,15 +55,14 @@ public class StoreSeckillController { /** * 新增商品秒杀产品表 * @param storeSeckillRequest 新增参数 - * @author Stivepeim - * @since 2020-09-17 */ + @PreAuthorize("hasAuthority('admin:seckill:save')") @ApiOperation(value = "新增") @RequestMapping(value = "/save", method = RequestMethod.POST) - public CommonResult save(@RequestBody @Validated StoreSeckillRequest storeSeckillRequest){ - if(storeSeckillService.saveSeckill(storeSeckillRequest)){ + public CommonResult save(@RequestBody @Validated StoreSeckillAddRequest storeSeckillRequest) { + if (storeSeckillService.saveSeckill(storeSeckillRequest)) { return CommonResult.success(); - }else{ + } else { return CommonResult.failed(); } } @@ -75,44 +70,40 @@ public class StoreSeckillController { /** * 删除商品秒杀产品表 * @param id Integer - * @author Stivepeim - * @since 2020-09-17 */ + @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)){ + public CommonResult delete(@RequestParam(value = "id") Integer id) { + if (storeSeckillService.deleteById(id)) { return CommonResult.success(); - }else{ + } else { return CommonResult.failed(); } } /** * 修改商品秒杀产品表 - * @param id integer id * @param storeSeckillRequest 修改参数 - * @author Stivepeim - * @since 2020-09-17 */ + @PreAuthorize("hasAuthority('admin:seckill:update')") @ApiOperation(value = "修改") @RequestMapping(value = "/update", method = RequestMethod.POST) - public CommonResult update(@RequestParam Integer id, @RequestBody @Validated StoreSeckillRequest storeSeckillRequest){ - storeSeckillRequest.setId(id); - if(storeSeckillService.updateSeckill(storeSeckillRequest)){ + public CommonResult update(@RequestBody @Validated StoreSeckillAddRequest storeSeckillRequest) { + if (storeSeckillService.updateSeckill(storeSeckillRequest)) { return CommonResult.success(); - }else{ + } 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(null == id || null ==status || status < 0 || status >= 2) throw new CrmebException("参数不合法"); - if(storeSeckillService.updateSecKillStatus(id,status)){ + public CommonResult updateStatus(@RequestParam @Validated Integer id, @RequestParam @Validated boolean status) { + if (storeSeckillService.updateSecKillStatus(id,status)) { return CommonResult.success(); - }else{ + } else { return CommonResult.failed(); } } @@ -120,13 +111,12 @@ public class StoreSeckillController { /** * 查询商品秒杀产品表信息 * @param id Integer - * @author Stivepeim - * @since 2020-09-17 */ + @PreAuthorize("hasAuthority('admin:seckill:info')") @ApiOperation(value = "详情") @RequestMapping(value = "/info", method = RequestMethod.GET) - public CommonResult info(@RequestParam(value = "id") Integer id){ - StoreProductResponse storeSeckill = storeSeckillService.getDetailAdmin(id); + public CommonResult info(@RequestParam(value = "id") Integer id) { + StoreProductInfoResponse storeSeckill = storeSeckillService.getDetailAdmin(id); return CommonResult.success(storeSeckill); } } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/seckill/controller/StoreSeckillMangerController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreSeckillMangerController.java similarity index 54% rename from crmeb/src/main/java/com/zbkj/crmeb/seckill/controller/StoreSeckillMangerController.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreSeckillMangerController.java index 09e217b4..3138c20e 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/seckill/controller/StoreSeckillMangerController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreSeckillMangerController.java @@ -1,28 +1,22 @@ -package com.zbkj.crmeb.seckill.controller; +package com.zbkj.admin.controller; -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.PageParamRequest; -import com.exception.CrmebException; -import com.zbkj.crmeb.seckill.model.StoreSeckillManger; -import com.zbkj.crmeb.seckill.request.StoreSeckillMangerRequest; -import com.zbkj.crmeb.seckill.request.StoreSeckillMangerSearchRequest; -import com.zbkj.crmeb.seckill.response.StoreSeckillManagerResponse; -import com.zbkj.crmeb.seckill.service.StoreSeckillMangerService; -import com.zbkj.crmeb.system.service.SystemAttachmentService; +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 lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import org.springframework.beans.BeanUtils; +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; - /** * 秒杀配置 前端控制器 @@ -40,57 +34,35 @@ import java.util.List; @RestController @RequestMapping("api/admin/store/seckill/manger") @Api(tags = "商品 -- 秒杀 -- 配置") //配合swagger使用 - public class StoreSeckillMangerController { @Autowired private StoreSeckillMangerService storeSeckillMangerService; - @Autowired - private SystemAttachmentService systemAttachmentService; - /** * 分页显示 * @param request 搜索条件 * @param pageParamRequest 分页参数 - * @author Stivepeim - * @since 2020-09-18 */ + @PreAuthorize("hasAuthority('admin:seckill:manger:list')") @ApiOperation(value = "分页列表") //配合swagger使用 @RequestMapping(value = "/list", method = RequestMethod.GET) public CommonResult> getList( - @Validated StoreSeckillMangerSearchRequest request, @Validated PageParamRequest pageParamRequest){ - StoreSeckillManger storeSeckillManger = new StoreSeckillManger(); - BeanUtils.copyProperties(request, storeSeckillManger); - // 对request中的time做分割后赋值给mode中的start和end属性 - storeSeckillMangerService.setTimeRangeFromRequest(request, storeSeckillManger); - CommonPage storeSeckillMangerCommonPage = - CommonPage.restPage(storeSeckillMangerService.getList(storeSeckillManger, pageParamRequest)); - return CommonResult.success(storeSeckillMangerCommonPage); + @Validated StoreSeckillMangerSearchRequest request, @Validated PageParamRequest pageParamRequest) { + return CommonResult.success(CommonPage.restPage(storeSeckillMangerService.getList(request, pageParamRequest))); } /** * 新增 * @param storeSeckillMangerRequest 新增参数 - * @author Stivepeim - * @since 2020-09-18 */ + @PreAuthorize("hasAuthority('admin:seckill:manger:save')") @ApiOperation(value = "新增") @RequestMapping(value = "/save", method = RequestMethod.POST) - public CommonResult save(@RequestBody @Validated StoreSeckillMangerRequest storeSeckillMangerRequest){ - StoreSeckillManger storeSeckillManger = new StoreSeckillManger(); - BeanUtils.copyProperties(storeSeckillMangerRequest, storeSeckillManger); - // 对request中的time做分割后赋值给mode中的start和end属性 - storeSeckillMangerService.setTimeRangeFromRequest(storeSeckillMangerRequest, storeSeckillManger); - List storeSeckillMangers = storeSeckillMangerService.checkTimeRangeUnique(storeSeckillManger); - if(storeSeckillMangers.size() > 0){ - throw new CrmebException("当前时间段的秒杀配置已存在"); - } - storeSeckillManger.setImg(systemAttachmentService.clearPrefix(storeSeckillManger.getImg())); - storeSeckillManger.setSilderImgs(systemAttachmentService.clearPrefix(storeSeckillManger.getSilderImgs())); - if(storeSeckillMangerService.save(storeSeckillManger)){ + public CommonResult save(@RequestBody @Validated StoreSeckillMangerRequest storeSeckillMangerRequest) { + if (storeSeckillMangerService.saveManger(storeSeckillMangerRequest)) { return CommonResult.success(); - }else{ + } else { return CommonResult.failed(); } } @@ -99,15 +71,14 @@ public class StoreSeckillMangerController { /** * 删除 * @param id Integer - * @author Stivepeim - * @since 2020-09-18 */ + @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)){ + public CommonResult delete(@RequestParam(value = "id") Integer id) { + if (storeSeckillMangerService.deleteLogicById(id)) { return CommonResult.success(); - }else{ + } else { return CommonResult.failed(); } } @@ -116,26 +87,23 @@ public class StoreSeckillMangerController { * 修改 * @param id integer id * @param storeSeckillMangerRequest 修改参数 - * @author Stivepeim - * @since 2020-09-18 */ + @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(); + public CommonResult update(@RequestParam Integer id, @RequestBody @Validated StoreSeckillMangerRequest storeSeckillMangerRequest) { + return storeSeckillMangerService.update(id, storeSeckillMangerRequest) ? CommonResult.success() : CommonResult.failed(); } /** * 查询信息 * @param id Integer - * @author Stivepeim - * @since 2020-09-18 */ + @PreAuthorize("hasAuthority('admin:seckill:manger:info')") @ApiOperation(value = "详情") @RequestMapping(value = "/info", method = RequestMethod.GET) - public CommonResult info(@RequestParam(value = "id") Integer id){ - StoreSeckillManagerResponse storeSeckillManger = storeSeckillMangerService.detail(id); - return CommonResult.success(storeSeckillManger); + public CommonResult info(@RequestParam(value = "id") Integer id) { + return CommonResult.success(storeSeckillMangerService.detail(id)); } /** @@ -144,13 +112,14 @@ public class StoreSeckillMangerController { * @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") int id,boolean status){ + public CommonResult updateStatus(@PathVariable(value = "id") Integer id, Boolean status) { return CommonResult.success(storeSeckillMangerService.updateStatus(id,status)); } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/controller/SystemAdminController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemAdminController.java similarity index 57% rename from crmeb/src/main/java/com/zbkj/crmeb/system/controller/SystemAdminController.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemAdminController.java index e345abb5..9d1b6fc1 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/controller/SystemAdminController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemAdminController.java @@ -1,18 +1,19 @@ -package com.zbkj.crmeb.system.controller; +package com.zbkj.admin.controller; -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.PageParamRequest; -import com.zbkj.crmeb.system.model.SystemAdmin; -import com.zbkj.crmeb.system.request.SystemAdminAddRequest; -import com.zbkj.crmeb.system.request.SystemAdminRequest; -import com.zbkj.crmeb.system.response.SystemAdminResponse; -import com.zbkj.crmeb.system.service.SystemAdminService; +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.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.*; @@ -35,7 +36,6 @@ import javax.validation.Valid; @RestController @RequestMapping("api/admin/system/admin") @Api(tags = "后台用户服务") - public class SystemAdminController { @Autowired @@ -45,101 +45,79 @@ public class SystemAdminController { * 分页显示后台管理员表 * @param systemAdminRequest 搜索条件 * @param pageParamRequest 分页参数 - * @author Mr.Zhang - * @since 2020-04-13 */ + @PreAuthorize("hasAuthority('admin:system:admin:list')") @ApiOperation(value = "分页列表") @RequestMapping(value = "/list", method = RequestMethod.GET) @ResponseBody - public CommonResult> getList(@Validated SystemAdminRequest systemAdminRequest, PageParamRequest pageParamRequest){ - SystemAdmin systemAdmin = new SystemAdmin(); - BeanUtils.copyProperties(systemAdminRequest, systemAdmin); + public CommonResult> getList(@Validated SystemAdminRequest systemAdminRequest, PageParamRequest pageParamRequest) { CommonPage systemAdminCommonPage = CommonPage.restPage(systemAdminService.getList(systemAdminRequest, pageParamRequest)); return CommonResult.success(systemAdminCommonPage); } /** - * 新增后台管理员表 + * 新增后台管理员 * @param systemAdminAddRequest 新增参数 - * @author Mr.Zhang - * @since 2020-04-13 */ - @ApiOperation(value = "新增") + @PreAuthorize("hasAuthority('admin:system:admin:save')") + @ApiOperation(value = "新增后台管理员") @RequestMapping(value = "/save", method = RequestMethod.POST) - public CommonResult save(@ModelAttribute SystemAdminAddRequest systemAdminAddRequest) throws Exception { - SystemAdmin systemAdmin = new SystemAdmin(); - BeanUtils.copyProperties(systemAdminAddRequest, systemAdmin); - SystemAdminResponse systemAdminResponse = systemAdminService.saveAdmin(systemAdminAddRequest); - if(null != systemAdminResponse){ - return CommonResult.success(systemAdminResponse,"添加管理员成功"); - }else{ - return CommonResult.failed("添加管理员失败"); + public CommonResult save(@RequestBody SystemAdminAddRequest systemAdminAddRequest) { + if (systemAdminService.saveAdmin(systemAdminAddRequest)) { + return CommonResult.success("添加管理员成功"); } + return CommonResult.failed("添加管理员失败"); } /** * 删除后台管理员表 * @param id Integer - * @author Mr.Zhang - * @since 2020-04-13 */ + @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)){ + public CommonResult delete(@RequestParam(value = "id") Integer id) { + if (systemAdminService.removeById(id)) { return CommonResult.success(); - }else{ + } else { return CommonResult.failed(); } } /** * 修改后台管理员表 - * @param id integer id * @param systemAdminRequest 修改参数 - * @author Mr.Zhang - * @since 2020-04-13 */ + @PreAuthorize("hasAuthority('admin:system:admin:update')") @ApiOperation(value = "修改") @RequestMapping(value = "/update", method = RequestMethod.POST) - public CommonResult update(@RequestParam Integer id, - @ModelAttribute SystemAdminRequest systemAdminRequest) throws Exception{ - SystemAdmin systemAdmin = new SystemAdmin(); - BeanUtils.copyProperties(systemAdminRequest, systemAdmin); - systemAdmin.setId(id); - -// if(systemAdminService.updateById(systemAdmin)){ -// if(systemAdminService.lambdaUpdate().eq(SystemAdmin::getId, id).update(systemAdmin)){ - SystemAdminResponse systemAdminResponse = systemAdminService.updateAdmin(systemAdminRequest); - if(null != systemAdminResponse){ + public CommonResult update(@RequestBody SystemAdminUpdateRequest systemAdminRequest) { + if (systemAdminService.updateAdmin(systemAdminRequest)) { return CommonResult.success(); - }else{ + } else { return CommonResult.failed(); } } /** - * 查询后台管理员表信息 + * 后台管理员详情 * @param id Integer - * @author Mr.Zhang - * @since 2020-04-13 */ - @ApiOperation(value = "详情") + @PreAuthorize("hasAuthority('admin:system:admin:info')") + @ApiOperation(value = "后台管理员详情") @RequestMapping(value = "/info", method = RequestMethod.GET) - public CommonResult info(@RequestParam(value = "id") @Valid Integer id){ - SystemAdmin systemAdmin = systemAdminService.getById(id); - return CommonResult.success(systemAdmin); + public CommonResult info(@RequestParam(value = "id") @Valid Integer id) { + return CommonResult.success(systemAdminService.getDetail(id)); } /** * 修改后台管理员状态 * @param id Integer - * @author Mr.Zhang - * @since 2020-04-13 */ + @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){ + public CommonResult updateStatus(@RequestParam(value = "id") @Valid Integer id, @RequestParam(value = "status") @Valid Boolean status) { if (systemAdminService.updateStatus(id, status)) { return CommonResult.success("修改成功"); } @@ -149,9 +127,10 @@ public class SystemAdminController { /** * 修改后台管理员是否接收状态 */ + @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){ + public CommonResult updateIsSms(@RequestParam(value = "id") @Valid Integer id) { if (systemAdminService.updateIsSms(id)) { return CommonResult.success("修改成功"); } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/controller/SystemAttachmentController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemAttachmentController.java similarity index 58% rename from crmeb/src/main/java/com/zbkj/crmeb/system/controller/SystemAttachmentController.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemAttachmentController.java index 303b0c41..1502a7a7 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/controller/SystemAttachmentController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemAttachmentController.java @@ -1,23 +1,21 @@ -package com.zbkj.crmeb.system.controller; +package com.zbkj.admin.controller; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.PageParamRequest; -import com.utils.CrmebUtil; -import com.zbkj.crmeb.system.model.SystemAttachment; -import com.zbkj.crmeb.system.request.SystemAttachmentMoveRequest; -import com.zbkj.crmeb.system.request.SystemAttachmentRequest; -import com.zbkj.crmeb.system.service.SystemAttachmentService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; +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 org.springframework.beans.BeanUtils; +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.*; - /** * 附件管理表 前端控制器 * +---------------------------------------------------------------------- @@ -34,7 +32,6 @@ import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("api/admin/system/attachment") @Api(tags = "附件管理") //配合swagger使用 - public class SystemAttachmentController { @Autowired @@ -43,106 +40,90 @@ public class SystemAttachmentController { /** * 分页显示附件管理表 * @param pageParamRequest 分页参数 - * @author Mr.Zhang - * @since 2020-06-02 */ + @PreAuthorize("hasAuthority('admin:system:attachment:list')") @ApiOperation(value = "分页列表") //配合swagger使用 @RequestMapping(value = "/list", method = RequestMethod.GET) public CommonResult> getList( @RequestParam @Validated Integer pid, - @Validated PageParamRequest pageParamRequest){ + @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, pageParamRequest)); + CommonPage.restPage(systemAttachmentService.getList(pid, attType, pageParamRequest)); return CommonResult.success(systemAttachmentCommonPage); } /** - * 新增附件管理表 + * 新增附件管理表 TODO:未使用的话删除此接口 * @param systemAttachmentRequest 新增参数 - * @author Mr.Zhang - * @since 2020-06-02 */ + @PreAuthorize("hasAuthority('admin:system:attachment:save')") @ApiOperation(value = "新增") @RequestMapping(value = "/save", method = RequestMethod.POST) - public CommonResult save(@RequestBody @Validated SystemAttachmentRequest systemAttachmentRequest){ - SystemAttachment systemAttachment = new SystemAttachment(); - BeanUtils.copyProperties(systemAttachmentRequest, systemAttachment); - - if(systemAttachmentService.save(systemAttachment)){ + public CommonResult save(@RequestBody @Validated SystemAttachmentRequest systemAttachmentRequest) { + if (systemAttachmentService.add(systemAttachmentRequest)) { return CommonResult.success(); - }else{ - return CommonResult.failed(); } + return CommonResult.failed(); } /** * 删除附件管理表 * @param ids String - * @author Mr.Zhang - * @since 2020-06-02 */ + @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))){ + public CommonResult delete(@PathVariable String ids) { + if (systemAttachmentService.removeByIds(CrmebUtil.stringToArray(ids))) { return CommonResult.success(); - }else{ - return CommonResult.failed(); } + return CommonResult.failed(); } /** * 修改附件管理表 * @param id integer id * @param systemAttachmentRequest 修改参数 - * @author Mr.Zhang - * @since 2020-06-02 */ + @PreAuthorize("hasAuthority('admin:system:attachment:update')") @ApiOperation(value = "修改") @RequestMapping(value = "/update", method = RequestMethod.POST) public CommonResult update(@RequestParam Integer id, - @RequestBody @Validated SystemAttachmentRequest systemAttachmentRequest){ - SystemAttachment systemAttachment = new SystemAttachment(); - BeanUtils.copyProperties(systemAttachmentRequest, systemAttachment); - systemAttachment.setAttId(id); - - if(systemAttachmentService.updateById(systemAttachment)){ + @RequestBody @Validated SystemAttachmentRequest systemAttachmentRequest) { + systemAttachmentRequest.setAttId(id); + if (systemAttachmentService.edit(systemAttachmentRequest)) { return CommonResult.success(); - }else{ - return CommonResult.failed(); } + return CommonResult.failed(); } /** * 查询附件管理表信息 * @param move SystemAttachmentMoveRequest - * @author Mr.Zhang - * @since 2020-06-02 */ + @PreAuthorize("hasAuthority('admin:system:attachment:move')") @ApiOperation(value = "更改图片目录") @RequestMapping(value = "/move", method = RequestMethod.POST) - public CommonResult updateAttrId(@RequestBody @Validated SystemAttachmentMoveRequest move){ - LambdaUpdateWrapper lup = new LambdaUpdateWrapper<>(); - lup.in(SystemAttachment::getAttId, CrmebUtil.stringToArray(move.getAttrId())); - lup.set(SystemAttachment::getPid, move.getPid()); - if(systemAttachmentService.update(lup)){ + public CommonResult updateAttrId(@RequestBody @Validated SystemAttachmentMoveRequest move) { + if (systemAttachmentService.updateAttrId(move)) { return CommonResult.success(); - }else{ - return CommonResult.failed(); } + return CommonResult.failed(); } /** - * 查询附件管理表信息 + * 附件详情 * @param id Integer - * @author Mr.Zhang - * @since 2020-06-02 */ - @ApiOperation(value = "详情") + @PreAuthorize("hasAuthority('admin:system:attachment:info')") + @ApiOperation(value = "附件详情") @RequestMapping(value = "/info/{id}", method = RequestMethod.GET) - public CommonResult info(@PathVariable Integer id){ - SystemAttachment systemAttachment = systemAttachmentService.getById(id); - return CommonResult.success(systemAttachment); + public CommonResult info(@PathVariable Integer id) { + return CommonResult.success(systemAttachmentService.getById(id)); } } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/controller/SystemCityController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemCityController.java similarity index 50% rename from crmeb/src/main/java/com/zbkj/crmeb/system/controller/SystemCityController.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemCityController.java index 87f8300f..464b3770 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/controller/SystemCityController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemCityController.java @@ -1,20 +1,24 @@ -package com.zbkj.crmeb.system.controller; +package com.zbkj.admin.controller; -import com.common.CommonResult; -import com.zbkj.crmeb.system.model.SystemCity; -import com.zbkj.crmeb.system.request.SystemCityRequest; -import com.zbkj.crmeb.system.request.SystemCitySearchRequest; -import com.zbkj.crmeb.system.service.SystemCityService; +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; + /** * 城市表 前端控制器 @@ -38,107 +42,64 @@ public class SystemCityController { private SystemCityService systemCityService; /** - * 分页显示城市表 + * 分页城市列表 * @param request 搜索条件 - * @author Mr.Zhang - * @since 2020-04-17 */ - @ApiOperation(value = "分页列表") + @PreAuthorize("hasAuthority('admin:system:city:list')") + @ApiOperation(value = "分页城市列表") @RequestMapping(value = "/list", method = RequestMethod.GET) - public CommonResult getList(@Validated SystemCitySearchRequest request){ + public CommonResult getList(@Validated SystemCitySearchRequest request) { return CommonResult.success(systemCityService.getList(request)); } -// /** -// * 新增城市表 -// * @param systemCityRequest 新增参数 -// * @author Mr.Zhang -// * @since 2020-04-17 -// */ -// @ApiOperation(value = "新增") -// @RequestMapping(value = "/save", method = RequestMethod.POST) -// public CommonResult save(@Validated SystemCityRequest systemCityRequest){ -// SystemCity systemCity = new SystemCity(); -// BeanUtils.copyProperties(systemCityRequest, systemCity); -// -// if(systemCityService.save(systemCity)){ -// return CommonResult.success(); -// }else{ -// return CommonResult.failed(); -// } -// } -// -// /** -// * 删除城市表 -// * @param id Integer -// * @author Mr.Zhang -// * @since 2020-04-17 -// */ -// @ApiOperation(value = "删除") -// @RequestMapping(value = "/delete", method = RequestMethod.GET) -// public CommonResult delete(@RequestParam(value = "id") Integer id){ -// if(systemCityService.removeById(id)){ -// return CommonResult.success(); -// }else{ -// return CommonResult.failed(); -// } -// } - /** * 修改城市 - * @param id integer id + * @param id 城市id * @param request 修改参数 - * @author Mr.Zhang - * @since 2020-04-17 */ + @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)){ + public CommonResult update(@RequestParam Integer id, @Validated SystemCityRequest request) { + if (systemCityService.update(id, request)) { return CommonResult.success(); - }else{ - return CommonResult.failed(); } + return CommonResult.failed(); } /** * 修改状态 - * @param id integer id - * @param status boolean 状态 - * @author Mr.Zhang - * @since 2020-04-17 + * @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)){ + public CommonResult updateStatus(@RequestParam Integer id, @RequestParam Boolean status) { + if (systemCityService.updateStatus(id, status)) { return CommonResult.success(); - }else{ - return CommonResult.failed(); } + return CommonResult.failed(); } /** - * 查询城市表信息 - * @param id Integer - * @author Mr.Zhang - * @since 2020-04-17 + * 城市详情 + * @param id 城市id */ - @ApiOperation(value = "详情") + @PreAuthorize("hasAuthority('admin:system:city:info')") + @ApiOperation(value = "城市详情") @RequestMapping(value = "/info", method = RequestMethod.GET) - public CommonResult info(@RequestParam(value = "id") Integer id){ - SystemCity systemCity = systemCityService.getById(id); - return CommonResult.success(systemCity); + public CommonResult info(@RequestParam(value = "id") Integer id) { + return CommonResult.success(systemCityService.getById(id)); } /** * 获取tree结构的列表 - * @author Mr.Zhang - * @since 2020-04-16 */ + @PreAuthorize("hasAuthority('admin:system:city:list:tree')") @ApiOperation(value = "获取tree结构的列表") @RequestMapping(value = "/list/tree", method = RequestMethod.GET) - public CommonResult getListTree(){ + public CommonResult> getListTree() { return CommonResult.success(systemCityService.getListTree()); } } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/controller/SystemConfigController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemConfigController.java similarity index 61% rename from crmeb/src/main/java/com/zbkj/crmeb/system/controller/SystemConfigController.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemConfigController.java index e6c58799..6a50b66b 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/controller/SystemConfigController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemConfigController.java @@ -1,16 +1,20 @@ -package com.zbkj.crmeb.system.controller; +package com.zbkj.admin.controller; -import com.common.CommonResult; -import com.zbkj.crmeb.system.request.SystemFormCheckRequest; -import com.zbkj.crmeb.system.service.SystemConfigService; +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 io.swagger.annotations.ApiOperation; +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; /** @@ -37,12 +41,11 @@ public class SystemConfigController { /** * 查询配置表信息 * @param formId Integer - * @author Mr.Zhang - * @since 2020-04-13 */ + @PreAuthorize("hasAuthority('admin:system:config:info')") @ApiOperation(value = "详情") @RequestMapping(value = "/info", method = RequestMethod.GET) - public CommonResult> info(@RequestParam(value = "formId") Integer formId){ + public CommonResult> info(@RequestParam(value = "formId") Integer formId) { return CommonResult.success(systemConfigService.info(formId)); } @@ -50,28 +53,25 @@ public class SystemConfigController { /** * 整体保存表单数据 * @param systemFormCheckRequest SystemFormCheckRequest 新增参数 - * @author Mr.Zhang - * @since 2020-04-13 */ + @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)){ + public CommonResult saveFrom(@RequestBody @Validated SystemFormCheckRequest systemFormCheckRequest) { + if (systemConfigService.saveForm(systemFormCheckRequest)) { return CommonResult.success(); - }else{ - return CommonResult.failed(); } + return CommonResult.failed(); } /** * 检测表单name是否存在 * @param name name - * @author Mr.Zhang - * @since 2020-04-13 */ + @PreAuthorize("hasAuthority('admin:system:config:check')") @ApiOperation(value = "检测表单name是否存在") @RequestMapping(value = "/check", method = RequestMethod.GET) - public CommonResult check(@RequestParam String name){ + public CommonResult check(@RequestParam String name) { return CommonResult.success(systemConfigService.checkName(name)); } @@ -79,25 +79,47 @@ public class SystemConfigController { * 配置表中仅仅存储对应的配置 * @param key 配置表中的配置字段 * @param value 对应的值 - * @return */ + @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)); + public CommonResult justSaveUniq(@RequestParam String key, @RequestParam String value) { + return CommonResult.success(systemConfigService.updateOrSaveValueByName(key, value)); } /** * 根据key获取表单配置数据 * @param key 配置表的的字段 - * @return */ + @PreAuthorize("hasAuthority('admin:system:config:getuniq')") @ApiOperation(value = "表单配置根据key获取") @RequestMapping(value = "/getuniq", method = RequestMethod.GET) - public CommonResult justGetUniq(@RequestParam String key){ + 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/src/main/java/com/zbkj/crmeb/system/controller/SystemFormTempController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemFormTempController.java similarity index 53% rename from crmeb/src/main/java/com/zbkj/crmeb/system/controller/SystemFormTempController.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemFormTempController.java index 86d0e58b..5a9946ab 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/controller/SystemFormTempController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemFormTempController.java @@ -1,22 +1,19 @@ -package com.zbkj.crmeb.system.controller; +package com.zbkj.admin.controller; -import com.alibaba.fastjson.JSONObject; -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.PageParamRequest; -import com.exception.CrmebException; -import com.zbkj.crmeb.system.request.SystemFormTempRequest; -import com.zbkj.crmeb.system.request.SystemFormTempSearchRequest; -import com.zbkj.crmeb.system.vo.SystemConfigFormVo; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; +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 org.springframework.beans.BeanUtils; +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 com.zbkj.crmeb.system.service.SystemFormTempService; -import com.zbkj.crmeb.system.model.SystemFormTemp; /** @@ -44,12 +41,11 @@ public class SystemFormTempController { * 分页显示表单模板 * @param request 搜索条件 * @param pageParamRequest 分页参数 - * @author Mr.Zhang - * @since 2020-05-15 */ + @PreAuthorize("hasAuthority('admin:system:form:list')") @ApiOperation(value = "分页列表") @RequestMapping(value = "/list", method = RequestMethod.GET) - public CommonResult> getList(@Validated SystemFormTempSearchRequest request, @Validated PageParamRequest pageParamRequest){ + public CommonResult> getList(@Validated SystemFormTempSearchRequest request, @Validated PageParamRequest pageParamRequest) { CommonPage systemFormTempCommonPage = CommonPage.restPage(systemFormTempService.getList(request, pageParamRequest)); return CommonResult.success(systemFormTempCommonPage); } @@ -57,80 +53,40 @@ public class SystemFormTempController { /** * 新增表单模板 * @param systemFormTempRequest 新增参数 - * @author Mr.Zhang - * @since 2020-05-15 */ + @PreAuthorize("hasAuthority('admin:system:form:save')") @ApiOperation(value = "新增") @RequestMapping(value = "/save", method = RequestMethod.POST) - public CommonResult save(@RequestBody @Validated 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); - - if(systemFormTempService.save(systemFormTemp)){ + public CommonResult save(@RequestBody @Validated SystemFormTempRequest systemFormTempRequest) { + if (systemFormTempService.add(systemFormTempRequest)) { return CommonResult.success(); - }else{ - return CommonResult.failed(); } + return CommonResult.failed(); } -// /** -// * 删除表单模板 -// * @param id Integer -// * @author Mr.Zhang -// * @since 2020-05-15 -// */ -// @ApiOperation(value = "删除") -// @RequestMapping(value = "/delete", method = RequestMethod.GET) -// public CommonResult delete(@RequestParam(value = "id") Integer id){ -// if(systemFormTempService.removeById(id)){ -// return CommonResult.success(); -// }else{ -// return CommonResult.failed(); -// } -// } - /** * 修改表单模板 * @param id integer id * @param systemFormTempRequest 修改参数 - * @author Mr.Zhang - * @since 2020-05-15 */ + @PreAuthorize("hasAuthority('admin:system:form:update')") @ApiOperation(value = "修改") @RequestMapping(value = "/update", method = RequestMethod.POST) - public CommonResult update(@RequestParam Integer id, @RequestBody @Validated 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); - - if(systemFormTempService.updateById(systemFormTemp)){ + public CommonResult update(@RequestParam Integer id, @RequestBody @Validated SystemFormTempRequest systemFormTempRequest) { + if (systemFormTempService.edit(id, systemFormTempRequest)) { return CommonResult.success(); - }else{ - return CommonResult.failed(); } + return CommonResult.failed(); } /** * 查询表单模板信息 * @param id Integer - * @author Mr.Zhang - * @since 2020-05-15 */ + @PreAuthorize("hasAuthority('admin:system:form:info')") @ApiOperation(value = "详情") @RequestMapping(value = "/info", method = RequestMethod.GET) - public CommonResult info(@RequestParam(value = "id") Integer id){ + public CommonResult info(@RequestParam(value = "id") Integer id) { SystemFormTemp systemFormTemp = systemFormTempService.getById(id); return CommonResult.success(systemFormTemp); } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/controller/SystemGroupController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemGroupController.java similarity index 60% rename from crmeb/src/main/java/com/zbkj/crmeb/system/controller/SystemGroupController.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemGroupController.java index b31b9f5f..6086781e 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/controller/SystemGroupController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemGroupController.java @@ -1,21 +1,19 @@ -package com.zbkj.crmeb.system.controller; +package com.zbkj.admin.controller; -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.PageParamRequest; -import com.zbkj.crmeb.system.request.SystemGroupRequest; -import com.zbkj.crmeb.system.request.SystemGroupSearchRequest; -import com.zbkj.crmeb.user.service.UserService; -import com.zbkj.crmeb.user.service.impl.UserServiceImpl; +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.beans.BeanUtils; import org.springframework.web.bind.annotation.*; -import com.zbkj.crmeb.system.service.SystemGroupService; -import com.zbkj.crmeb.system.model.SystemGroup; +import com.zbkj.common.model.system.SystemGroup; /** @@ -39,90 +37,71 @@ public class SystemGroupController { @Autowired private SystemGroupService systemGroupService; - @Autowired - private UserService userService; - /** * 分页显示组合数据表 * @param request 搜索条件 * @param pageParamRequest 分页参数 - * @author Mr.Zhang - * @since 2020-05-15 */ + @PreAuthorize("hasAuthority('admin:system:group:list')") @ApiOperation(value = "分页列表") @RequestMapping(value = "/list", method = RequestMethod.GET) - public CommonResult> getList(@Validated SystemGroupSearchRequest request, @Validated PageParamRequest pageParamRequest){ + public CommonResult> getList(@Validated SystemGroupSearchRequest request, @Validated PageParamRequest pageParamRequest) { CommonPage systemGroupCommonPage = CommonPage.restPage(systemGroupService.getList(request, pageParamRequest)); return CommonResult.success(systemGroupCommonPage); } /** - * 新增组合数据表 + * 新增组合数据 * @param systemGroupRequest 新增参数 - * @author Mr.Zhang - * @since 2020-05-15 */ + @PreAuthorize("hasAuthority('admin:system:group:save')") @ApiOperation(value = "新增") @RequestMapping(value = "/save", method = RequestMethod.POST) - public CommonResult save(@Validated SystemGroupRequest systemGroupRequest){ - SystemGroup systemGroup = new SystemGroup(); - BeanUtils.copyProperties(systemGroupRequest, systemGroup); - - if(systemGroupService.save(systemGroup)){ + public CommonResult save(@Validated SystemGroupRequest systemGroupRequest) { + if (systemGroupService.add(systemGroupRequest)) { return CommonResult.success(); - }else{ - return CommonResult.failed(); } + 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.removeById(id)){ - // 删除用户对应已经存在的分组标签 虽然数据库用的是String类型但逻辑仅仅只存储一个数据,这里直接删除对应的用户分组id即可 - userService.clearGroupByGroupId(id+""); + public CommonResult delete(@RequestParam(value = "id") Integer id) { + if (systemGroupService.delete(id)) { return CommonResult.success(); - }else{ - return CommonResult.failed(); } + return CommonResult.failed(); } /** * 修改组合数据表 * @param id integer id * @param systemGroupRequest 修改参数 - * @author Mr.Zhang - * @since 2020-05-15 */ + @PreAuthorize("hasAuthority('admin:system:group:update')") @ApiOperation(value = "修改") @RequestMapping(value = "/update", method = RequestMethod.POST) - public CommonResult update(@RequestParam Integer id, @Validated SystemGroupRequest systemGroupRequest){ - SystemGroup systemGroup = new SystemGroup(); - BeanUtils.copyProperties(systemGroupRequest, systemGroup); - systemGroup.setId(id); - - if(systemGroupService.updateById(systemGroup)){ + public CommonResult update(@RequestParam Integer id, @Validated SystemGroupRequest systemGroupRequest) { + if (systemGroupService.edit(id, systemGroupRequest)) { return CommonResult.success(); - }else{ - return CommonResult.failed(); } + return CommonResult.failed(); } /** * 查询组合数据表信息 * @param id Integer - * @author Mr.Zhang - * @since 2020-05-15 */ + @PreAuthorize("hasAuthority('admin:system:group:info')") @ApiOperation(value = "详情") @RequestMapping(value = "/info", method = RequestMethod.GET) - public CommonResult info(@RequestParam(value = "id") Integer id){ - SystemGroup systemGroup = systemGroupService.getById(id); - return CommonResult.success(systemGroup); + public CommonResult info(@RequestParam(value = "id") Integer id) { + return CommonResult.success(systemGroupService.getById(id)); } } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/controller/SystemGroupDataController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemGroupDataController.java similarity index 66% rename from crmeb/src/main/java/com/zbkj/crmeb/system/controller/SystemGroupDataController.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemGroupDataController.java index 2dafddf2..744076a7 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/controller/SystemGroupDataController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemGroupDataController.java @@ -1,20 +1,19 @@ -package com.zbkj.crmeb.system.controller; +package com.zbkj.admin.controller; -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.PageParamRequest; -import com.zbkj.crmeb.system.request.SystemFormCheckRequest; -import com.zbkj.crmeb.system.request.SystemGroupDataRequest; -import com.zbkj.crmeb.system.request.SystemGroupDataSearchRequest; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; +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 org.springframework.beans.BeanUtils; +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 com.zbkj.crmeb.system.service.SystemGroupDataService; -import com.zbkj.crmeb.system.model.SystemGroupData; /** @@ -39,77 +38,69 @@ public class SystemGroupDataController { private SystemGroupDataService systemGroupDataService; /** - * 分页显示组合数据详情表 + * 分页组合数据详情 * @param request 搜索条件 * @param pageParamRequest 分页参数 - * @author Mr.Zhang - * @since 2020-05-15 */ - @ApiOperation(value = "分页列表") + @PreAuthorize("hasAuthority('admin:system:group:data:list')") + @ApiOperation(value = "分页组合数据详情") @RequestMapping(value = "/list", method = RequestMethod.GET) - public CommonResult> getList(@Validated SystemGroupDataSearchRequest request, @Validated PageParamRequest pageParamRequest){ + public CommonResult> getList(@Validated SystemGroupDataSearchRequest request, @Validated PageParamRequest pageParamRequest) { CommonPage systemGroupDataCommonPage = CommonPage.restPage(systemGroupDataService.getList(request, pageParamRequest)); return CommonResult.success(systemGroupDataCommonPage); } /** - * 新增组合数据详情表 + * 新增组合数据详情 * @param systemGroupDataRequest SystemFormCheckRequest 新增参数 - * @author Mr.Zhang - * @since 2020-05-15 */ + @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)){ + public CommonResult save(@RequestBody @Validated SystemGroupDataRequest systemGroupDataRequest) { + if (systemGroupDataService.create(systemGroupDataRequest)) { return CommonResult.success(); - }else{ - return CommonResult.failed(); } + return CommonResult.failed(); } /** * 删除组合数据详情表 * @param id Integer - * @author Mr.Zhang - * @since 2020-05-15 */ + @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)){ + public CommonResult delete(@RequestParam(value = "id") Integer id) { + if (systemGroupDataService.removeById(id)) { return CommonResult.success(); - }else{ - return CommonResult.failed(); } + return CommonResult.failed(); } /** * 修改组合数据详情表 * @param id integer id * @param request 修改参数 - * @author Mr.Zhang - * @since 2020-05-15 */ + @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)){ + public CommonResult update(@RequestParam Integer id, @RequestBody @Validated SystemGroupDataRequest request) { + if (systemGroupDataService.update(id, request)) { return CommonResult.success(); - }else{ - return CommonResult.failed(); } + return CommonResult.failed(); } /** - * 查询组合数据详情表信息 + * 组合数据详情信息 * @param id Integer - * @author Mr.Zhang - * @since 2020-05-15 */ - @ApiOperation(value = "详情") + @PreAuthorize("hasAuthority('admin:system:group:data:info')") + @ApiOperation(value = "组合数据详情信息") @RequestMapping(value = "/info", method = RequestMethod.GET) - public CommonResult info(@RequestParam(value = "id") Integer id){ + 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 00000000..1e2477da --- /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~2020 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 00000000..881618fd --- /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~2020 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/src/main/java/com/zbkj/crmeb/system/controller/SystemRoleController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemRoleController.java similarity index 52% rename from crmeb/src/main/java/com/zbkj/crmeb/system/controller/SystemRoleController.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemRoleController.java index 044bd5d0..d8814c1f 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/controller/SystemRoleController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemRoleController.java @@ -1,24 +1,21 @@ -package com.zbkj.crmeb.system.controller; +package com.zbkj.admin.controller; -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.PageParamRequest; -import com.utils.CrmebUtil; -import com.zbkj.crmeb.category.vo.CategoryTreeVo; -import com.zbkj.crmeb.system.model.SystemRole; -import com.zbkj.crmeb.system.request.SystemRoleRequest; -import com.zbkj.crmeb.system.request.SystemRoleSearchRequest; -import com.zbkj.crmeb.system.service.SystemRoleService; +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.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.*; -import java.util.List; - /** * 身份管理表 前端控制器 @@ -45,107 +42,75 @@ public class SystemRoleController { * 分页显示身份管理表 * @param request 搜索条件 * @param pageParamRequest 分页参数 - * @author Mr.Zhang - * @since 2020-04-18 */ + @PreAuthorize("hasAuthority('admin:system:role:list')") @ApiOperation(value = "分页列表") @RequestMapping(value = "/list", method = RequestMethod.GET) - public CommonResult> getList(@Validated SystemRoleSearchRequest request, @Validated PageParamRequest pageParamRequest){ + public CommonResult> getList(@Validated SystemRoleSearchRequest request, @Validated PageParamRequest pageParamRequest) { CommonPage systemRoleCommonPage = CommonPage.restPage(systemRoleService.getList(request, pageParamRequest)); return CommonResult.success(systemRoleCommonPage); } /** - * 新增身份管理表 + * 新增身份 * @param systemRoleRequest 新增参数 - * @author Mr.Zhang - * @since 2020-04-18 */ - @ApiOperation(value = "新增") + @PreAuthorize("hasAuthority('admin:system:role:save')") + @ApiOperation(value = "新增身份") @RequestMapping(value = "/save", method = RequestMethod.POST) - public CommonResult save(@RequestBody @Validated SystemRoleRequest systemRoleRequest){ - SystemRole systemRole = new SystemRole(); - BeanUtils.copyProperties(systemRoleRequest, systemRole); - - if(systemRoleService.save(systemRole)){ + public CommonResult save(@RequestBody @Validated SystemRoleRequest systemRoleRequest) { + if (systemRoleService.add(systemRoleRequest)) { return CommonResult.success(); - }else{ - return CommonResult.failed(); } + return CommonResult.failed(); } /** * 删除身份管理表 * @param id Integer - * @author Mr.Zhang - * @since 2020-04-18 */ + @PreAuthorize("hasAuthority('admin:system:role:delete')") @ApiOperation(value = "删除") @RequestMapping(value = "/delete", method = RequestMethod.GET) - public CommonResult delete(@RequestParam(value = "id") Integer id){ - if(systemRoleService.removeById(id)){ + public CommonResult delete(@RequestParam(value = "id") Integer id) { + if (systemRoleService.delete(id)) { return CommonResult.success(); - }else{ - return CommonResult.failed(); } + return CommonResult.failed(); } /** * 修改身份管理表 - * @param id integer id * @param systemRoleRequest 修改参数 - * @author Mr.Zhang - * @since 2020-04-18 */ + @PreAuthorize("hasAuthority('admin:system:role:update')") @ApiOperation(value = "修改") @RequestMapping(value = "/update", method = RequestMethod.POST) - public CommonResult update(@RequestParam Integer id, @RequestBody @Validated SystemRoleRequest systemRoleRequest){ - SystemRole systemRole = new SystemRole(); - BeanUtils.copyProperties(systemRoleRequest, systemRole); - systemRole.setId(id); - - if(systemRoleService.updateById(systemRole)){ + public CommonResult update(@RequestBody @Validated SystemRoleRequest systemRoleRequest) { + if (systemRoleService.edit(systemRoleRequest)) { return CommonResult.success(); - }else{ - return CommonResult.failed(); } + return CommonResult.failed(); } /** - * 查询身份管理表信息 - * @param ids String - * @author Mr.Zhang - * @since 2020-04-18 + * 查询身份详情 + * @param id String */ + @PreAuthorize("hasAuthority('admin:system:role:info')") @ApiOperation(value = "详情") - @RequestMapping(value = "/info", method = RequestMethod.GET) - public CommonResult> info(@RequestParam(value = "ids") String ids){ -// SystemRole systemRole = systemRoleService.getById(CrmebUtil.stringToArray(ids)); - List systemRole = systemRoleService.getListInIds(CrmebUtil.stringToArray(ids)); - return CommonResult.success(systemRole); + @RequestMapping(value = "/info/{id}", method = RequestMethod.GET) + public CommonResult info(@PathVariable Integer id) { + return CommonResult.success(systemRoleService.getInfo(id)); } - /** - * 管理员菜单权限 - * @author Mr.Zhang - * @since 2020-04-13 - */ - @ApiOperation(value = "菜单") - @RequestMapping(value = "/menu", method = RequestMethod.GET) - public CommonResult> menu(){ - List categoryTreeVoList = systemRoleService.menu(); - return CommonResult.success(categoryTreeVoList); - } - /** * 修改身份状态 - * @author Mr.Zhang - * @since 2020-04-13 - * @return */ + @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){ + public CommonResult updateStatus(@Validated @RequestParam(value = "id") Integer id, @Validated @RequestParam(value = "status") Boolean status) { if (systemRoleService.updateStatus(id, status)) { return CommonResult.success("修改成功"); } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/controller/SystemStoreController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemStoreController.java similarity index 69% rename from crmeb/src/main/java/com/zbkj/crmeb/system/controller/SystemStoreController.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemStoreController.java index 51285f30..2b9d9a2f 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/controller/SystemStoreController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemStoreController.java @@ -1,18 +1,19 @@ -package com.zbkj.crmeb.system.controller; +package com.zbkj.admin.controller; -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.PageParamRequest; -import com.zbkj.crmeb.system.request.SystemStoreRequest; -import com.zbkj.crmeb.system.request.SystemStoreSearchRequest; +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 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.crmeb.system.service.SystemStoreService; -import com.zbkj.crmeb.system.model.SystemStore; import java.util.HashMap; @@ -42,114 +43,102 @@ public class SystemStoreController { * 分页显示门店自提 * @param request SystemStoreSearchRequest 搜索条件 * @param pageParamRequest 分页参数 - * @author Mr.Zhang - * @since 2020-04-13 */ - @ApiOperation(value = "分页列表") + @PreAuthorize("hasAuthority('admin:system:store:list')") + @ApiOperation(value = "门店自提分页列表") @RequestMapping(value = "/list", method = RequestMethod.GET) - public CommonResult> getList(@Validated SystemStoreSearchRequest request, @Validated PageParamRequest pageParamRequest){ + public CommonResult> getList(@Validated SystemStoreSearchRequest request, @Validated PageParamRequest pageParamRequest) { CommonPage expressCommonPage = CommonPage.restPage(systemStoreService.getList(request.getKeywords(), request.getStatus(), pageParamRequest)); return CommonResult.success(expressCommonPage); } /** * 数量 - * @author Mr.Zhang - * @since 2020-04-13 */ + @PreAuthorize("hasAuthority('admin:system:store:count')") @ApiOperation(value = "数量") @RequestMapping(value = "/getCount", method = RequestMethod.GET) - public CommonResult> getCount(){ + public CommonResult> getCount() { return CommonResult.success(systemStoreService.getCount()); } /** * 新增门店自提 * @param request SystemStoreRequest 新增参数 - * @author Mr.Zhang - * @since 2020-04-13 */ + @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)){ + public CommonResult save(@RequestBody @Validated SystemStoreRequest request) { + if (systemStoreService.create(request)) { return CommonResult.success(); - }else{ - return CommonResult.failed(); } + return CommonResult.failed(); } /** * 删除门店自提 * @param id Integer - * @author Mr.Zhang - * @since 2020-04-13 */ + @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)){ + public CommonResult delete(@RequestParam(value = "id") Integer id) { + if (systemStoreService.delete(id)) { return CommonResult.success(); - }else{ - return CommonResult.failed(); } + return CommonResult.failed(); } /** * 修改门店自提 * @param id integer id * @param request 修改参数 - * @author Mr.Zhang - * @since 2020-04-13 */ + @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)){ + public CommonResult update(@RequestParam Integer id, @RequestBody @Validated SystemStoreRequest request) { + if (systemStoreService.update(id, request)) { return CommonResult.success(); - }else{ - return CommonResult.failed(); } + return CommonResult.failed(); } /** * 修改门店显示状态 * @param id integer id * @param status 状态 - * @author Mr.Zhang - * @since 2020-04-13 */ + @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)){ + public CommonResult updateStatus(@RequestParam Integer id, @RequestParam Boolean status) { + if (systemStoreService.updateStatus(id, status)) { return CommonResult.success(); - }else{ - return CommonResult.failed(); } + return CommonResult.failed(); } /** - * 查询门店自提信息 + * 门店自提详情 * @param id Integer - * @author Mr.Zhang - * @since 2020-04-13 */ + @PreAuthorize("hasAuthority('admin:system:store:info')") @ApiOperation(value = "详情") @RequestMapping(value = "/info", method = RequestMethod.GET) - public CommonResult info(@RequestParam(value = "id") Integer id){ - SystemStore systemStore = systemStoreService.getById(id); - systemStore.setLatitude(systemStore.getLatitude() + "," + systemStore.getLongitude()); - return CommonResult.success(systemStore); + 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){ + public CommonResult completeLyDelete(@RequestParam(value = "id") Integer id) { if (systemStoreService.completeLyDelete(id)) { return CommonResult.success(); } @@ -159,9 +148,10 @@ public class SystemStoreController { /** * 恢复 */ + @PreAuthorize("hasAuthority('admin:system:store:recovery')") @ApiOperation(value = "提货点恢复") @RequestMapping(value = "/recovery", method = RequestMethod.GET) - public CommonResult recovery(@RequestParam(value = "id") Integer id){ + public CommonResult recovery(@RequestParam(value = "id") Integer id) { if (systemStoreService.recovery(id)) { return CommonResult.success(); } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/controller/SystemStoreStaffController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemStoreStaffController.java similarity index 64% rename from crmeb/src/main/java/com/zbkj/crmeb/system/controller/SystemStoreStaffController.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemStoreStaffController.java index fcba4d3c..8a07db22 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/controller/SystemStoreStaffController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemStoreStaffController.java @@ -1,17 +1,17 @@ -package com.zbkj.crmeb.system.controller; +package com.zbkj.admin.controller; -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.PageParamRequest; -import com.zbkj.crmeb.system.model.SystemStoreStaff; -import com.zbkj.crmeb.system.response.SystemStoreStaffResponse; -import com.zbkj.crmeb.system.request.SystemStoreStaffRequest; -import com.zbkj.crmeb.system.service.SystemStoreStaffService; +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.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; @@ -37,16 +37,15 @@ public class SystemStoreStaffController { private SystemStoreStaffService systemStoreStaffService; /** - * 分页显示门店店员表 + * 分页显示门店核销员列表 * @param storeId 门店id * @param pageParamRequest 分页参数 - * @author Mr.Zhang - * @since 2020-04-17 */ + @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){ + @ModelAttribute PageParamRequest pageParamRequest) { CommonPage systemStoreStaffCommonPage = CommonPage.restPage(systemStoreStaffService.getList(storeId, pageParamRequest)); return CommonResult.success(systemStoreStaffCommonPage); @@ -55,87 +54,70 @@ public class SystemStoreStaffController { /** * 新增门店店员表 * @param systemStoreStaffRequest 新增参数 - * @author Mr.Zhang - * @since 2020-04-17 */ + @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)){ + public CommonResult save(@RequestBody @ModelAttribute SystemStoreStaffRequest systemStoreStaffRequest) { + if (systemStoreStaffService.saveUnique(systemStoreStaffRequest)) { return CommonResult.success(); - }else{ - return CommonResult.failed(); } + return CommonResult.failed(); } /** * 删除门店店员表 * @param id Integer - * @author Mr.Zhang - * @since 2020-04-17 */ + @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)){ + public CommonResult delete(@RequestParam(value = "id") Integer id) { + if (systemStoreStaffService.removeById(id)) { return CommonResult.success(); - }else{ - return CommonResult.failed(); } + return CommonResult.failed(); } /** * 修改门店店员表 * @param id integer id * @param systemStoreStaffRequest 修改参数 - * @author Mr.Zhang - * @since 2020-04-17 */ + @PreAuthorize("hasAuthority('admin:system:staff:update')") @ApiOperation(value = "修改") @RequestMapping(value = "/update", method = RequestMethod.POST) - public CommonResult update(@RequestParam Integer id, @RequestBody @ModelAttribute SystemStoreStaffRequest systemStoreStaffRequest){ - SystemStoreStaff systemStoreStaff = new SystemStoreStaff(); - BeanUtils.copyProperties(systemStoreStaffRequest, systemStoreStaff); - systemStoreStaff.setId(id); - - if(systemStoreStaffService.updateById(systemStoreStaff)){ + public CommonResult update(@RequestParam Integer id, @RequestBody @ModelAttribute SystemStoreStaffRequest systemStoreStaffRequest) { + if (systemStoreStaffService.edit(id, systemStoreStaffRequest)) { return CommonResult.success(); - }else{ - return CommonResult.failed(); } + return CommonResult.failed(); } /** * 修改门店店员表 * @param id integer id * @param status 状态 - * @author Mr.Zhang - * @since 2020-04-17 */ + @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){ - SystemStoreStaff systemStoreStaff = new SystemStoreStaff(); - systemStoreStaff.setId(id); - systemStoreStaff.setStatus(status); - if(systemStoreStaffService.updateById(systemStoreStaff)){ + public CommonResult updateStatus(@RequestParam Integer id, @RequestParam Integer status) { + if (systemStoreStaffService.updateStatus(id, status)) { return CommonResult.success(); - }else{ - return CommonResult.failed(); } + return CommonResult.failed(); } /** * 查询门店店员表信息 * @param id Integer - * @author Mr.Zhang - * @since 2020-04-17 */ + @PreAuthorize("hasAuthority('admin:system:staff:info')") @ApiOperation(value = "详情") @RequestMapping(value = "/info", method = RequestMethod.GET) - public CommonResult info(@RequestParam(value = "id") Integer id){ - SystemStoreStaff systemStoreStaff = systemStoreStaffService.getById(id); - return CommonResult.success(systemStoreStaff); + 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 00000000..8dac525e --- /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~2020 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/src/main/java/com/zbkj/crmeb/system/controller/SystemWriteOffOrderController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemWriteOffOrderController.java similarity index 78% rename from crmeb/src/main/java/com/zbkj/crmeb/system/controller/SystemWriteOffOrderController.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemWriteOffOrderController.java index 22a1c97b..f9a90d17 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/controller/SystemWriteOffOrderController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SystemWriteOffOrderController.java @@ -1,14 +1,15 @@ -package com.zbkj.crmeb.system.controller; +package com.zbkj.admin.controller; -import com.common.CommonResult; -import com.common.PageParamRequest; -import com.zbkj.crmeb.system.response.SystemWriteOffOrderResponse;; -import com.zbkj.crmeb.store.service.StoreOrderService; -import com.zbkj.crmeb.system.request.SystemWriteOffOrderSearchRequest; +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; @@ -40,14 +41,13 @@ public class SystemWriteOffOrderController { * 分页显示订单表 * @param request 搜索条件 * @param pageParamRequest 分页参数 - * @author Mr.Zhang - * @since 2020-05-28 */ + @PreAuthorize("hasAuthority('admin:system:order:list')") @ApiOperation(value = "分页列表") //配合swagger使用 @RequestMapping(value = "/list", method = RequestMethod.POST) public CommonResult getList( @Validated SystemWriteOffOrderSearchRequest request, - @Validated PageParamRequest pageParamRequest){ + @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 00000000..8058bc3b --- /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~2020 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/src/main/java/com/zbkj/crmeb/upload/controller/UploadController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/UploadController.java similarity index 77% rename from crmeb/src/main/java/com/zbkj/crmeb/upload/controller/UploadController.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/UploadController.java index 52c56577..27f23d43 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/upload/controller/UploadController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/UploadController.java @@ -1,15 +1,15 @@ -package com.zbkj.crmeb.upload.controller; +package com.zbkj.admin.controller; -import com.common.CommonResult; -import com.zbkj.crmeb.system.service.SystemAttachmentService; -import com.zbkj.crmeb.upload.service.UploadService; -import com.zbkj.crmeb.upload.vo.FileResultVo; +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; @@ -40,14 +40,10 @@ public class UploadController { @Autowired private UploadService uploadService; - @Autowired - private SystemAttachmentService systemAttachmentService; - /** * 图片上传 - * @author Mr.Zhang - * @since 2020-05-06 */ +// @PreAuthorize("hasAuthority('admin:upload:image')") @ApiOperation(value = "图片上传") @RequestMapping(value = "/image", method = RequestMethod.POST) @ApiImplicitParams({ @@ -57,14 +53,13 @@ public class UploadController { public CommonResult image(MultipartFile multipart, @RequestParam(value = "model") String model, @RequestParam(value = "pid") Integer pid) throws IOException { - return CommonResult.success(uploadService.image(multipart, model, pid)); + return CommonResult.success(uploadService.imageUpload(multipart, model, pid)); } /** * 文件上传 - * @author Mr.Zhang - * @since 2020-05-06 */ +// @PreAuthorize("hasAuthority('admin:upload:file')") @ApiOperation(value = "文件上传") @RequestMapping(value = "/file", method = RequestMethod.POST) @ApiImplicitParams({ @@ -74,20 +69,7 @@ public class UploadController { public CommonResult file(MultipartFile multipart, @RequestParam(value = "model") String model, @RequestParam(value = "pid") Integer pid) throws IOException { - return CommonResult.success(uploadService.file(multipart, model, pid)); - } - - /** - * 同步到云 - * @author Mr.Zhang - * @since 2020-05-06 - */ - @ApiOperation(value = "同步到云服务") - @RequestMapping(value = "/async", method = RequestMethod.POST) - public CommonResult async(){ - systemAttachmentService.async(); - return CommonResult.success(); - + return CommonResult.success(uploadService.fileUpload(multipart, model, pid)); } } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/controller/UserController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/UserController.java similarity index 66% rename from crmeb/src/main/java/com/zbkj/crmeb/user/controller/UserController.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/UserController.java index c64e32cf..81016778 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/controller/UserController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/UserController.java @@ -1,17 +1,13 @@ -package com.zbkj.crmeb.user.controller; +package com.zbkj.admin.controller; -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.PageParamRequest; -import com.zbkj.crmeb.user.model.User; -import com.zbkj.crmeb.user.request.UserOperateIntegralMoneyRequest; -import com.zbkj.crmeb.user.request.UserSearchRequest; -import com.zbkj.crmeb.user.request.UserUpdateRequest; -import com.zbkj.crmeb.user.request.UserUpdateSpreadRequest; -import com.zbkj.crmeb.user.response.TopDetail; -import com.zbkj.crmeb.user.response.UserResponse; -import com.zbkj.crmeb.user.service.UserService; +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; @@ -19,6 +15,7 @@ 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.*; @@ -52,49 +49,30 @@ public class UserController { * 分页显示用户表 * @param request 搜索条件 * @param pageParamRequest 分页参数 - * @author Mr.Zhang - * @since 2020-04-10 */ + @PreAuthorize("hasAuthority('admin:user:list')") @ApiOperation(value = "分页列表") @RequestMapping(value = "/list", method = RequestMethod.GET) - public CommonResult> getList(@ModelAttribute UserSearchRequest request, - @ModelAttribute PageParamRequest pageParamRequest){ + 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 - * @author Mr.Zhang - * @since 2020-04-10 - */ - @ApiOperation(value = "删除") - @RequestMapping(value = "/delete", method = RequestMethod.GET) - public CommonResult delete(@RequestParam(value = "id") Integer id){ - if(userService.removeById(id)){ - return CommonResult.success(); - }else{ - return CommonResult.failed(); - } - } - /** * 修改用户表 * @param id integer id * @param userRequest 修改参数 - * @author Mr.Zhang - * @since 2020-04-10 */ + @PreAuthorize("hasAuthority('admin:user:update')") @ApiOperation(value = "修改") @RequestMapping(value = "/update", method = RequestMethod.POST) - public CommonResult update(@RequestParam Integer id, @RequestBody @Validated UserUpdateRequest userRequest){ + public CommonResult update(@RequestParam Integer id, @RequestBody @Validated UserUpdateRequest userRequest) { userRequest.setUid(id); - if(userService.updateUser(userRequest)){ + if (userService.updateUser(userRequest)) { return CommonResult.success(); - }else{ - return CommonResult.failed(); } + return CommonResult.failed(); } /** @@ -102,27 +80,25 @@ public class UserController { * @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)){ + public CommonResult updatePhone(@RequestParam(name = "id") Integer id, @RequestParam(name = "phone") String phone) { + if (userService.updateUserPhone(id, phone)) { return CommonResult.success(); - }else{ - return CommonResult.failed(); } + return CommonResult.failed(); } /** - * 查询用户表信息 + * 用户详情 * @param id Integer - * @author Mr.Zhang - * @since 2020-04-10 */ + @PreAuthorize("hasAuthority('admin:user:info')") @ApiOperation(value = "详情") @RequestMapping(value = "/info", method = RequestMethod.GET) - public CommonResult info(@RequestParam(value = "id") Integer id){ - User user = userService.getById(id); - return CommonResult.success(user); + public CommonResult info(@RequestParam(value = "id") Integer id) { + return CommonResult.success(userService.getInfoByUid(id)); } /** @@ -130,9 +106,8 @@ public class UserController { * @param userId Integer 会员id * @param type int 类型 0=消费记录,1=积分明细,2=签到记录,3=持有优惠券,4=余额变动,5=好友关系 * @param pageParamRequest PageParamRequest 分页 - * @author stivepeim - * @since 2020-04-10 */ + @PreAuthorize("hasAuthority('admin:user:infobycondition')") @ApiOperation(value="会员详情") @RequestMapping(value = "/infobycondition", method = RequestMethod.GET) @ApiImplicitParams({ @@ -142,50 +117,46 @@ public class UserController { }) 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))); + @ModelAttribute PageParamRequest pageParamRequest) { + return CommonResult.success(CommonPage.restPage((List) userService.getInfoByCondition(userId,type,pageParamRequest))); } /** - * 获取会员详情对应数据 - * @param userId - * @return + * 会员详情页Top数据 */ + @PreAuthorize("hasAuthority('admin:user:topdetail')") @ApiOperation(value = "会员详情页Top数据") @RequestMapping(value = "topdetail", method = RequestMethod.GET) - public CommonResult topDetail (@RequestParam @Valid Integer userId){ + 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)){ + public CommonResult founds(@Validated UserOperateIntegralMoneyRequest request) { + if (userService.updateIntegralMoney(request)) { return CommonResult.success(); - }else{ - return CommonResult.failed(); } + return CommonResult.failed(); } /** * 会员分组 * @param id String id * @param groupId Integer 分组Id - * @author Mr.Zhang - * @since 2020-04-28 */ + @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)){ + public CommonResult group(@RequestParam String id, @RequestParam String groupId) { + if (userService.group(id, groupId)) { return CommonResult.success(); - }else{ - return CommonResult.failed(); } + return CommonResult.failed(); } /** @@ -193,28 +164,40 @@ public class UserController { * @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)){ + public CommonResult tag(@RequestParam String id, @RequestParam String tagId) { + if (userService.tag(id, tagId)) { return CommonResult.success(); - }else{ - return CommonResult.failed(); } + 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)){ + public CommonResult editSpread(@Validated @RequestBody UserUpdateSpreadRequest request) { + if (userService.editSpread(request)) { return CommonResult.success("修改成功"); - }else{ - return CommonResult.failed("修改失败"); } + 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/src/main/java/com/zbkj/crmeb/finance/controller/UserExtractController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/UserExtractController.java similarity index 77% rename from crmeb/src/main/java/com/zbkj/crmeb/finance/controller/UserExtractController.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/UserExtractController.java index 434d34b8..38c014e3 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/finance/controller/UserExtractController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/UserExtractController.java @@ -1,21 +1,18 @@ -package com.zbkj.crmeb.finance.controller; +package com.zbkj.admin.controller; -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.PageParamRequest; -import com.utils.DateUtil; -import com.utils.vo.dateLimitUtilVo; -import com.zbkj.crmeb.finance.model.UserExtract; -import com.zbkj.crmeb.finance.request.UserExtractRequest; -import com.zbkj.crmeb.finance.request.UserExtractSearchRequest; -import com.zbkj.crmeb.finance.response.BalanceResponse; -import com.zbkj.crmeb.finance.service.UserExtractService; +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.apache.commons.lang3.StringUtils; -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.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @@ -48,9 +45,8 @@ public class UserExtractController { * 分页显示用户提现表 * @param request 搜索条件 * @param pageParamRequest 分页参数 - * @author Mr.Zhang - * @since 2020-05-11 */ + @PreAuthorize("hasAuthority('admin:finance:apply:list')") @ApiOperation(value = "分页列表") @RequestMapping(value = "/list", method = RequestMethod.GET) public CommonResult> getList(@Validated UserExtractSearchRequest request, @Validated PageParamRequest pageParamRequest){ @@ -62,19 +58,14 @@ public class UserExtractController { * 修改用户提现表 * @param id integer id * @param userExtractRequest 修改参数 - * @author Mr.Zhang - * @since 2020-05-11 */ + @PreAuthorize("hasAuthority('admin:finance:apply:update')") @ApiOperation(value = "修改") @RequestMapping(value = "/update", method = RequestMethod.POST) public CommonResult update(@RequestParam Integer id, @Validated UserExtractRequest userExtractRequest){ - UserExtract userExtract = new UserExtract(); - BeanUtils.copyProperties(userExtractRequest, userExtract); - userExtract.setId(id); - - if(userExtractService.updateById(userExtract)){ + if (userExtractService.updateExtract(id, userExtractRequest)) { return CommonResult.success(); - }else{ + } else { return CommonResult.failed(); } } @@ -82,13 +73,11 @@ public class UserExtractController { /** * 提现统计 * @Param dateLimit 时间限制 today,yesterday,lately7,lately30,month,year,/yyyy-MM-dd hh:mm:ss,yyyy-MM-dd hh:mm:ss/ - * @author Mr.Zhang - * @since 2020-05-11 */ + @PreAuthorize("hasAuthority('admin:finance:apply:balance')") @ApiOperation(value = "提现统计") @RequestMapping(value = "/balance", method = RequestMethod.POST) - public CommonResult balance( - @RequestParam(value = "dateLimit", required = false,defaultValue = "") + public CommonResult balance(@RequestParam(value = "dateLimit", required = false,defaultValue = "") String dateLimit){ return CommonResult.success(userExtractService.getBalance(dateLimit)); } @@ -100,6 +89,7 @@ public class UserExtractController { * @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, diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/controller/UserGroupController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/UserGroupController.java similarity index 66% rename from crmeb/src/main/java/com/zbkj/crmeb/user/controller/UserGroupController.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/UserGroupController.java index ff015fa6..764a00f3 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/controller/UserGroupController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/UserGroupController.java @@ -1,18 +1,18 @@ -package com.zbkj.crmeb.user.controller; +package com.zbkj.admin.controller; -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.PageParamRequest; -import com.zbkj.crmeb.user.request.UserGroupRequest; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; +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 org.springframework.beans.BeanUtils; +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 com.zbkj.crmeb.user.service.UserGroupService; -import com.zbkj.crmeb.user.model.UserGroup; /** @@ -39,12 +39,11 @@ public class UserGroupController { /** * 分页显示用户分组表 * @param pageParamRequest 分页参数 - * @author Mr.Zhang - * @since 2020-04-28 */ + @PreAuthorize("hasAuthority('admin:user:group:list')") @ApiOperation(value = "分页列表") @RequestMapping(value = "/list", method = RequestMethod.GET) - public CommonResult> getList(@Validated PageParamRequest pageParamRequest){ + public CommonResult> getList(@Validated PageParamRequest pageParamRequest) { CommonPage userGroupCommonPage = CommonPage.restPage(userGroupService.getList(pageParamRequest)); return CommonResult.success(userGroupCommonPage); } @@ -52,70 +51,55 @@ public class UserGroupController { /** * 新增用户分组表 * @param userGroupRequest 新增参数 - * @author Mr.Zhang - * @since 2020-04-28 */ + @PreAuthorize("hasAuthority('admin:user:group:save')") @ApiOperation(value = "新增") @RequestMapping(value = "/save", method = RequestMethod.POST) - public CommonResult save(@RequestBody @Validated UserGroupRequest userGroupRequest){ - UserGroup userGroup = new UserGroup(); - BeanUtils.copyProperties(userGroupRequest, userGroup); - - if(userGroupService.save(userGroup)){ + public CommonResult save(@RequestBody @Validated UserGroupRequest userGroupRequest) { + if (userGroupService.create(userGroupRequest)) { return CommonResult.success(); - }else{ - return CommonResult.failed(); } + return CommonResult.failed(); } /** * 删除用户分组表 * @param id Integer - * @author Mr.Zhang - * @since 2020-04-28 */ + @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)){ + public CommonResult delete(@RequestParam(value = "id") Integer id) { + if (userGroupService.removeById(id)) { return CommonResult.success(); - }else{ - return CommonResult.failed(); } + return CommonResult.failed(); } /** * 修改用户分组表 * @param id integer id * @param userGroupRequest 修改参数 - * @author Mr.Zhang - * @since 2020-04-28 */ + @PreAuthorize("hasAuthority('admin:user:group:update')") @ApiOperation(value = "修改") @RequestMapping(value = "/update", method = RequestMethod.POST) - public CommonResult update(@RequestParam Integer id, @RequestBody @Validated UserGroupRequest userGroupRequest){ - UserGroup userGroup = new UserGroup(); - BeanUtils.copyProperties(userGroupRequest, userGroup); - userGroup.setId(id); - - if(userGroupService.updateById(userGroup)){ + public CommonResult update(@RequestParam Integer id, @RequestBody @Validated UserGroupRequest userGroupRequest) { + if (userGroupService.edit(id, userGroupRequest)) { return CommonResult.success(); - }else{ - return CommonResult.failed(); } + return CommonResult.failed(); } /** * 查询用户分组表信息 * @param id Integer - * @author Mr.Zhang - * @since 2020-04-28 */ + @PreAuthorize("hasAuthority('admin:user:group:info')") @ApiOperation(value = "详情") @RequestMapping(value = "/info", method = RequestMethod.GET) - public CommonResult info(@RequestParam(value = "id") Integer id){ - UserGroup userGroup = userGroupService.getById(id); - return CommonResult.success(userGroup); + public CommonResult info(@RequestParam(value = "id") Integer id) { + return CommonResult.success(userGroupService.getById(id)); } } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/controller/UserIntegralController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/UserIntegralController.java similarity index 78% rename from crmeb/src/main/java/com/zbkj/crmeb/user/controller/UserIntegralController.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/UserIntegralController.java index cbf92489..127a43c0 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/controller/UserIntegralController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/UserIntegralController.java @@ -1,15 +1,16 @@ -package com.zbkj.crmeb.user.controller; +package com.zbkj.admin.controller; -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.PageParamRequest; -import com.zbkj.crmeb.user.request.AdminIntegralSearchRequest; -import com.zbkj.crmeb.user.response.UserIntegralRecordResponse; -import com.zbkj.crmeb.user.service.UserIntegralRecordService; +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; @@ -42,9 +43,10 @@ public class UserIntegralController { * @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){ + 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/src/main/java/com/zbkj/crmeb/user/controller/UserLevelController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/UserLevelController.java similarity index 76% rename from crmeb/src/main/java/com/zbkj/crmeb/user/controller/UserLevelController.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/UserLevelController.java index ab7f846f..94931d95 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/controller/UserLevelController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/UserLevelController.java @@ -1,15 +1,15 @@ -package com.zbkj.crmeb.user.controller; +package com.zbkj.admin.controller; -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.PageParamRequest; -import com.zbkj.crmeb.user.model.UserLevel; -import com.zbkj.crmeb.user.request.UserLevelSearchRequest; -import com.zbkj.crmeb.user.service.UserLevelService; +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; @@ -39,15 +39,13 @@ public class UserLevelController { /** * 分页显示用户等级记录表 - * @param request 搜索条件 * @param pageParamRequest 分页参数 - * @author Mr.Zhang - * @since 2020-04-28 */ + @PreAuthorize("hasAuthority('admin:user:level:list')") @ApiOperation(value = "分页列表") @RequestMapping(value = "/list", method = RequestMethod.GET) - public CommonResult> getList(@Validated UserLevelSearchRequest request, @Validated PageParamRequest pageParamRequest){ - CommonPage userLevelCommonPage = CommonPage.restPage(userLevelService.getList(request, pageParamRequest)); + public CommonResult> getList(@Validated PageParamRequest pageParamRequest) { + CommonPage userLevelCommonPage = CommonPage.restPage(userLevelService.getList(pageParamRequest)); return CommonResult.success(userLevelCommonPage); } } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/finance/controller/UserRechargeController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/UserRechargeController.java similarity index 54% rename from crmeb/src/main/java/com/zbkj/crmeb/finance/controller/UserRechargeController.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/UserRechargeController.java index 28b093ee..1fbd9f22 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/finance/controller/UserRechargeController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/UserRechargeController.java @@ -1,19 +1,20 @@ -package com.zbkj.crmeb.finance.controller; +package com.zbkj.admin.controller; -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.PageParamRequest; -import com.zbkj.crmeb.finance.request.UserRechargeRefundRequest; -import com.zbkj.crmeb.finance.request.UserRechargeSearchRequest; -import com.zbkj.crmeb.finance.response.UserRechargeResponse; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; +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 org.springframework.web.bind.annotation.*; -import com.zbkj.crmeb.finance.service.UserRechargeService; -import com.zbkj.crmeb.finance.model.UserRecharge; +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; @@ -35,7 +36,6 @@ import java.util.HashMap; @RestController @RequestMapping("api/admin/user/topUpLog") @Api(tags = "财务 -- 充值") - public class UserRechargeController { @Autowired @@ -45,65 +45,24 @@ public class UserRechargeController { * 分页显示用户充值表 * @param request 搜索条件 * @param pageParamRequest 分页参数 - * @author Mr.Zhang - * @since 2020-05-11 */ + @PreAuthorize("hasAuthority('admin:recharge:list')") @ApiOperation(value = "分页列表") @RequestMapping(value = "/list", method = RequestMethod.GET) public CommonResult> getList(@Validated UserRechargeSearchRequest request, @Validated PageParamRequest pageParamRequest){ - request.setPaid(true); CommonPage userRechargeCommonPage = CommonPage.restPage(userRechargeService.getList(request, pageParamRequest)); return CommonResult.success(userRechargeCommonPage); } - - /** - * 删除用户充值表 - * @param id Integer - * @author Mr.Zhang - * @since 2020-05-11 - */ - @ApiOperation(value = "删除") - @RequestMapping(value = "/delete", method = RequestMethod.GET) - public CommonResult delete(@RequestParam(value = "id") Integer id){ - UserRecharge userRecharge = userRechargeService.getById(id); - if(userRecharge == null){ - return CommonResult.failed("数据异常"); - } - - if(userRecharge.getPaid()){ - return CommonResult.failed("已支付的订单记录无法删除"); - } - - if(userRechargeService.removeById(id)){ - return CommonResult.success(); - }else{ - return CommonResult.failed(); - } - } - /** * 充值总金额 - * @author Mr.Zhang - * @since 2020-05-11 */ + @PreAuthorize("hasAuthority('admin:recharge:balance')") @ApiOperation(value = "提现总金额") @RequestMapping(value = "/balance", method = RequestMethod.POST) public CommonResult> balance(){ return CommonResult.success(userRechargeService.getBalanceList()); } - - /** - * 充值退款 - */ - @ApiOperation(value = "充值退款") - @RequestMapping(value = "/refund", method = RequestMethod.POST) - public CommonResult refund(@RequestBody @Validated UserRechargeRefundRequest request) { - if (userRechargeService.refund(request)) { - return CommonResult.success(); - } - return CommonResult.failed(); - } } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/controller/UserTagController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/UserTagController.java similarity index 69% rename from crmeb/src/main/java/com/zbkj/crmeb/user/controller/UserTagController.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/UserTagController.java index 8ba9265d..329ac68d 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/controller/UserTagController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/UserTagController.java @@ -1,19 +1,18 @@ -package com.zbkj.crmeb.user.controller; +package com.zbkj.admin.controller; -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.PageParamRequest; -import com.zbkj.crmeb.user.request.UserTagRequest; -import com.zbkj.crmeb.user.service.UserService; +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.beans.BeanUtils; import org.springframework.web.bind.annotation.*; -import com.zbkj.crmeb.user.service.UserTagService; -import com.zbkj.crmeb.user.model.UserTag; +import com.zbkj.common.model.user.UserTag; /** @@ -32,22 +31,19 @@ import com.zbkj.crmeb.user.model.UserTag; @RestController @RequestMapping("api/admin/user/tag") @Api(tags = "会员 -- 标签") //配合swagger使用 - public class UserTagController { @Autowired private UserTagService userTagService; - @Autowired - private UserService userService; - /** * 分页显示用户分标签 * @param pageParamRequest 分页参数 */ + @PreAuthorize("hasAuthority('admin:user:tag:list')") @ApiOperation(value = "分页列表") //配合swagger使用 @RequestMapping(value = "/list", method = RequestMethod.GET) - public CommonResult> getList(@Validated PageParamRequest pageParamRequest){ + public CommonResult> getList(@Validated PageParamRequest pageParamRequest) { CommonPage userTagCommonPage = CommonPage.restPage(userTagService.getList(pageParamRequest)); return CommonResult.success(userTagCommonPage); } @@ -56,32 +52,28 @@ public class UserTagController { * 新增用户分标签 * @param userTagRequest 新增参数 */ + @PreAuthorize("hasAuthority('admin:user:tag:save')") @ApiOperation(value = "新增") @RequestMapping(value = "/save", method = RequestMethod.POST) - public CommonResult save(@RequestBody @Validated UserTagRequest userTagRequest){ - UserTag userTag = new UserTag(); - BeanUtils.copyProperties(userTagRequest, userTag); - - if(userTagService.save(userTag)){ + public CommonResult save(@RequestBody @Validated UserTagRequest userTagRequest) { + if (userTagService.create(userTagRequest)) { return CommonResult.success(); - }else{ - return CommonResult.failed(); } + 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.removeById(id)){ - userService.clearGroupByGroupId(id+""); + public CommonResult delete(@RequestParam(value = "id") Integer id) { + if (userTagService.delete(id)) { return CommonResult.success(); - }else{ - return CommonResult.failed(); } + return CommonResult.failed(); } /** @@ -89,29 +81,25 @@ public class UserTagController { * @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){ - UserTag userTag = new UserTag(); - BeanUtils.copyProperties(userTagRequest, userTag); - userTag.setId(id); - - if(userTagService.updateById(userTag)){ + public CommonResult update(@RequestParam Integer id, @RequestBody @Validated UserTagRequest userTagRequest) { + if (userTagService.updateTag(id, userTagRequest)) { return CommonResult.success(); - }else{ - return CommonResult.failed(); } + 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){ - UserTag userTag = userTagService.getById(id); - return CommonResult.success(userTag); + public CommonResult info(@RequestParam(value = "id") Integer id) { + return CommonResult.success(userTagService.getById(id)); } } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/validatecode/controller/ValidateCodeController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/ValidateCodeController.java similarity index 68% rename from crmeb/src/main/java/com/zbkj/crmeb/validatecode/controller/ValidateCodeController.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/ValidateCodeController.java index c3a7b878..4dc54ab9 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/validatecode/controller/ValidateCodeController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/ValidateCodeController.java @@ -1,13 +1,12 @@ -package com.zbkj.crmeb.validatecode.controller; +package com.zbkj.admin.controller; -import com.common.CommonResult; -import com.zbkj.crmeb.validatecode.model.ValidateCode; -import com.zbkj.crmeb.validatecode.service.ValidateCodeService; +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.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -36,29 +35,15 @@ public class ValidateCodeController { /** * 获取图片验证码 - * @author Mr.Zhang - * @since 2020-04-16 * @return CommonResult */ +// @PreAuthorize("hasAuthority('admin:validate:code:get')") @ApiOperation(value="获取验证码") @GetMapping(value = "/get") public CommonResult get() { ValidateCode validateCode = validateCodeService.get(); return CommonResult.success(validateCode); } - - /** - * 检测验证码 - * @author Mr.Zhang - * @since 2020-04-16 - * @return CommonResult - */ - @ApiOperation(value="检测验证码") - @GetMapping(value = "/check") - public CommonResult validateCode(@Validated ValidateCode validateCode) { - boolean result = validateCodeService.check(validateCode); - return CommonResult.success(result); - } } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/controller/WeChatAdminController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/WeChatAdminController.java similarity index 74% rename from crmeb/src/main/java/com/zbkj/crmeb/wechat/controller/WeChatAdminController.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/WeChatAdminController.java index 7493f76a..35361fbe 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/controller/WeChatAdminController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/WeChatAdminController.java @@ -1,12 +1,14 @@ -package com.zbkj.crmeb.wechat.controller; +package com.zbkj.admin.controller; -import com.common.CommonResult; -import com.zbkj.crmeb.wechat.service.WeChatService; +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; @@ -31,17 +33,16 @@ import org.springframework.web.bind.annotation.RestController; public class WeChatAdminController { @Autowired - private WeChatService weChatService; + private WechatNewService wechatNewService; /** * 获取微信公众号js配置 - * @author Mr.Zhang - * @since 2020-05-25 */ + @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(weChatService.getJsSdkConfig(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 00000000..0b8adf19 --- /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~2020 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 00000000..15f54d65 --- /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~2020 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/src/main/java/com/zbkj/crmeb/wechat/controller/WechatMediaController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/WechatMediaController.java similarity index 84% rename from crmeb/src/main/java/com/zbkj/crmeb/wechat/controller/WechatMediaController.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/WechatMediaController.java index 1b3e53b7..2fd95268 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/controller/WechatMediaController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/WechatMediaController.java @@ -1,12 +1,13 @@ -package com.zbkj.crmeb.wechat.controller; +package com.zbkj.admin.controller; -import com.common.CommonResult; -import com.zbkj.crmeb.wechat.service.WechatMediaService; +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; @@ -30,15 +31,14 @@ public class WechatMediaController { /** * 上传 - * @author Mr.Zhang - * @since 2020-04-18 */ + @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 - ) throws Exception { + ) { return CommonResult.success(wechatMediaService.upload(file, type)); } } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/controller/WechatReplyController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/WechatReplyController.java similarity index 71% rename from crmeb/src/main/java/com/zbkj/crmeb/wechat/controller/WechatReplyController.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/WechatReplyController.java index 945aec3b..ee0b1333 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/controller/WechatReplyController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/WechatReplyController.java @@ -1,17 +1,18 @@ -package com.zbkj.crmeb.wechat.controller; +package com.zbkj.admin.controller; -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.PageParamRequest; -import com.zbkj.crmeb.wechat.model.WechatReply; -import com.zbkj.crmeb.wechat.request.WechatReplyRequest; -import com.zbkj.crmeb.wechat.request.WechatReplySearchRequest; -import com.zbkj.crmeb.wechat.service.WechatReplyService; +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.*; @@ -41,12 +42,11 @@ public class WechatReplyController { * 分页显示微信关键字回复表 * @param request 搜索条件 * @param pageParamRequest 分页参数 - * @author Mr.Zhang - * @since 2020-04-18 */ + @PreAuthorize("hasAuthority('admin:wechat:keywords:reply:list')") @ApiOperation(value = "分页列表") @RequestMapping(value = "/list", method = RequestMethod.GET) - public CommonResult> getList(@Validated WechatReplySearchRequest request, @Validated PageParamRequest pageParamRequest){ + public CommonResult> getList(@Validated WechatReplySearchRequest request, @Validated PageParamRequest pageParamRequest) { CommonPage wechatReplyCommonPage = CommonPage.restPage(wechatReplyService.getList(request, pageParamRequest)); return CommonResult.success(wechatReplyCommonPage); } @@ -54,16 +54,14 @@ public class WechatReplyController { /** * 新增微信关键字回复表 * @param wechatReplyRequest 新增参数 - * @author Mr.Zhang - * @since 2020-04-18 */ + @PreAuthorize("hasAuthority('admin:wechat:keywords:reply:save')") @ApiOperation(value = "新增") @RequestMapping(value = "/save", method = RequestMethod.POST) - public CommonResult save(@RequestBody @Validated WechatReplyRequest wechatReplyRequest){ + public CommonResult save(@RequestBody @Validated WechatReplyRequest wechatReplyRequest) { WechatReply wechatReply = new WechatReply(); BeanUtils.copyProperties(wechatReplyRequest, wechatReply); - - if(wechatReplyService.create(wechatReply)){ + if (wechatReplyService.create(wechatReply)) { return CommonResult.success(); }else{ return CommonResult.failed(); @@ -73,66 +71,54 @@ public class WechatReplyController { /** * 删除微信关键字回复表 * @param id Integer - * @author Mr.Zhang - * @since 2020-04-18 */ + @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)){ + public CommonResult delete(@RequestParam(value = "id") Integer id) { + if (wechatReplyService.removeById(id)) { return CommonResult.success(); - }else{ - return CommonResult.failed(); } + return CommonResult.failed(); } /** * 修改微信关键字回复表 - * @param id integer id * @param wechatReplyRequest 修改参数 - * @author Mr.Zhang - * @since 2020-04-18 */ + @PreAuthorize("hasAuthority('admin:wechat:keywords:reply:update')") @ApiOperation(value = "修改") @RequestMapping(value = "/update", method = RequestMethod.POST) - public CommonResult update(@RequestBody @Validated WechatReplyRequest wechatReplyRequest){ - WechatReply wechatReply = wechatReplyService.getInfoException(wechatReplyRequest.getId(), false); - BeanUtils.copyProperties(wechatReplyRequest, wechatReply); - if(wechatReplyService.updateVo(wechatReply)){ + public CommonResult update(@RequestBody @Validated WechatReplyRequest wechatReplyRequest) { + if (wechatReplyService.updateReply(wechatReplyRequest)) { return CommonResult.success(); - }else{ - return CommonResult.failed(); } + return CommonResult.failed(); } /** * 修改状态 * @param id integer id * @param status boolean 状态 - * @author Mr.Zhang - * @since 2020-04-18 */ + @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){ - WechatReply wechatReply = wechatReplyService.getInfoException(id, false); - wechatReply.setStatus(status); - if(wechatReplyService.updateVo(wechatReply)){ + public CommonResult update(@RequestParam(value = "id") Integer id, @RequestParam(value = "status") Boolean status) { + if (wechatReplyService.updateStatus(id, status)) { return CommonResult.success(); - }else{ - return CommonResult.failed(); } + return CommonResult.failed(); } /** * 查询微信关键字回复表信息 * @param id Integer - * @author Mr.Zhang - * @since 2020-04-18 */ + @PreAuthorize("hasAuthority('admin:wechat:keywords:reply:info')") @ApiOperation(value = "详情") @RequestMapping(value = "/info", method = RequestMethod.GET) - public CommonResult info(@RequestParam(value = "id") Integer id){ + public CommonResult info(@RequestParam(value = "id") Integer id) { WechatReply wechatReply = wechatReplyService.getInfo(id); return CommonResult.success(wechatReply); } @@ -140,12 +126,11 @@ public class WechatReplyController { /** * 根据关键字查询数据 * @param keywords String 关键字 - * @author Mr.Zhang - * @since 2020-04-18 */ + @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){ + public CommonResult info(@RequestParam(value = "keywords") String keywords) { WechatReply wechatReply = wechatReplyService.getVoByKeywords(keywords); return CommonResult.success(wechatReply); } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/controller/WechatUserController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/YlyPrintController.java similarity index 53% rename from crmeb/src/main/java/com/zbkj/crmeb/wechat/controller/WechatUserController.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/YlyPrintController.java index 3f121a11..ca391915 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/controller/WechatUserController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/YlyPrintController.java @@ -1,16 +1,16 @@ -package com.zbkj.crmeb.wechat.controller; +package com.zbkj.admin.controller; -import com.common.CommonResult; -import com.zbkj.crmeb.wechat.service.WechatUserService; +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 io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; - /** - * 微信用户表 前端控制器 + * 易联云打印订单 * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -23,28 +23,19 @@ import org.springframework.web.bind.annotation.*; */ @Slf4j @RestController -@RequestMapping("api/admin/wechat/user") -@Api(tags = "微信开放平台 -- 微信用户") -public class WechatUserController { +@RequestMapping("api/admin/yly") +@Api(tags = "易联云 打印订单小票") //配合swagger使用 +public class YlyPrintController { + @Autowired - private WechatUserService wechatUserService; + private YlyPrintService ylyPrintService; - /** - * 消息推送 - * @param userId 用户id - * @param newsId 图文消息id - * @author Mr.Zhang - * @since 2020-04-11 - */ - @ApiOperation(value = "消息推送") - @RequestMapping(value = "/push", method = RequestMethod.GET) - public CommonResult info(@RequestParam(value = "userId") String userId, - @RequestParam(value = "newsId") Integer newsId){ - wechatUserService.push(userId, newsId); + @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 00000000..28e8964d --- /dev/null +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/filter/JwtAuthenticationTokenFilter.java @@ -0,0 +1,39 @@ +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; + +/** + * token过滤器 验证token有效性 + */ +//@Component +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/src/main/java/com/filter/ResponseFilter.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/filter/ResponseFilter.java similarity index 95% rename from crmeb/src/main/java/com/filter/ResponseFilter.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/filter/ResponseFilter.java index a61484bb..f6e73411 100644 --- a/crmeb/src/main/java/com/filter/ResponseFilter.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/filter/ResponseFilter.java @@ -1,8 +1,7 @@ -package com.filter; +package com.zbkj.admin.filter; -import com.utils.RequestUtil; -import org.springframework.stereotype.Component; +import com.zbkj.common.utils.RequestUtil; import javax.servlet.*; import javax.servlet.http.HttpServletRequest; @@ -23,7 +22,7 @@ import java.nio.charset.StandardCharsets; * +---------------------------------------------------------------------- * 返回值输出过滤器 */ -@Component +//@Component public class ResponseFilter implements Filter { @Override 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 00000000..8bb5fbe9 --- /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~2020 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/src/main/java/com/filter/ResponseWrapper.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/filter/ResponseWrapper.java similarity index 98% rename from crmeb/src/main/java/com/filter/ResponseWrapper.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/filter/ResponseWrapper.java index 7cd83698..a29315d2 100644 --- a/crmeb/src/main/java/com/filter/ResponseWrapper.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/filter/ResponseWrapper.java @@ -1,4 +1,4 @@ -package com.filter; +package com.zbkj.admin.filter; import java.io.ByteArrayOutputStream; 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 00000000..ed2ed68f --- /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~2020 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 00000000..0e87d1d6 --- /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 00000000..342fe506 --- /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 00000000..162985ec --- /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 00000000..0cbde674 --- /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 00000000..d6a3cb99 --- /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/src/main/java/com/zbkj/crmeb/pub/controller/ImageMergeController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/pub/ImageMergeController.java similarity index 84% rename from crmeb/src/main/java/com/zbkj/crmeb/pub/controller/ImageMergeController.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/pub/ImageMergeController.java index f6107df3..cd803e1b 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/pub/controller/ImageMergeController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/pub/ImageMergeController.java @@ -1,14 +1,12 @@ -package com.zbkj.crmeb.pub.controller; +package com.zbkj.admin.pub; -import com.common.CommonResult; -import com.utils.CrmebUtil; -import com.utils.ImageMergeUtil; -import com.utils.vo.ImageMergeUtilVo; +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.ApiImplicitParam; -import io.swagger.annotations.ApiImplicitParams; 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.*; @@ -33,6 +31,8 @@ import java.util.Map; @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){ diff --git a/crmeb/src/main/java/com/zbkj/crmeb/pub/controller/WeChatMessageController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/pub/WeChatMessageController.java similarity index 96% rename from crmeb/src/main/java/com/zbkj/crmeb/pub/controller/WeChatMessageController.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/pub/WeChatMessageController.java index d4008ee6..e5f96360 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/pub/controller/WeChatMessageController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/pub/WeChatMessageController.java @@ -1,6 +1,6 @@ -package com.zbkj.crmeb.pub.controller; +package com.zbkj.admin.pub; -import com.zbkj.crmeb.wechatMessage.service.WeChatMessageService; +import com.zbkj.admin.service.WeChatMessageService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/pub/controller/WeChatPushController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/pub/WeChatPushController.java similarity index 94% rename from crmeb/src/main/java/com/zbkj/crmeb/pub/controller/WeChatPushController.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/pub/WeChatPushController.java index a29a9ce5..dfba6daa 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/pub/controller/WeChatPushController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/pub/WeChatPushController.java @@ -1,16 +1,13 @@ -package com.zbkj.crmeb.pub.controller; +package com.zbkj.admin.pub; import com.alibaba.fastjson.JSONObject; -import com.common.CommonResult; -import com.utils.RestTemplateUtil; -import com.zbkj.crmeb.system.service.SystemAdminService; +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.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -36,16 +33,12 @@ import java.util.Map; @RequestMapping("api/public/wechat") @Api(tags = "企业微信消息推送") public class WeChatPushController { - private static final Logger logger = LoggerFactory.getLogger(WeChatPushController.class); private static String url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key="; @Resource private RestTemplateUtil restTemplateUtil; - @Resource - private SystemAdminService systemAdminService; - /** * 新增后台管理员表 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 00000000..cadf2168 --- /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~2020 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/src/main/java/com/zbkj/crmeb/validatecode/service/ValidateCodeService.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/service/ValidateCodeService.java similarity index 77% rename from crmeb/src/main/java/com/zbkj/crmeb/validatecode/service/ValidateCodeService.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/service/ValidateCodeService.java index d65e10f2..889c286d 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/validatecode/service/ValidateCodeService.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/service/ValidateCodeService.java @@ -1,6 +1,7 @@ -package com.zbkj.crmeb.validatecode.service; +package com.zbkj.admin.service; -import com.zbkj.crmeb.validatecode.model.ValidateCode; + +import com.zbkj.admin.vo.ValidateCode; import java.util.HashMap; @@ -18,7 +19,14 @@ import java.util.HashMap; */ public interface ValidateCodeService { + /** + * 获取图片验证码 + * @return CommonResult + */ ValidateCode get(); - boolean check(ValidateCode validateCode); + /** + * 验证验证码 + */ + Boolean check(String key, String code); } \ No newline at end of file diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechatMessage/service/WeChatMessageService.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/service/WeChatMessageService.java similarity index 94% rename from crmeb/src/main/java/com/zbkj/crmeb/wechatMessage/service/WeChatMessageService.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/service/WeChatMessageService.java index 19f89605..6c5107f5 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechatMessage/service/WeChatMessageService.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/service/WeChatMessageService.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.wechatMessage.service; +package com.zbkj.admin.service; import javax.servlet.http.HttpServletRequest; 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 00000000..d02cbceb --- /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~2020 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/src/main/java/com/zbkj/crmeb/validatecode/service/impl/ValidateCodeServiceImpl.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/service/impl/ValidateCodeServiceImpl.java similarity index 59% rename from crmeb/src/main/java/com/zbkj/crmeb/validatecode/service/impl/ValidateCodeServiceImpl.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/service/impl/ValidateCodeServiceImpl.java index 64dd19f8..42739ca7 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/validatecode/service/impl/ValidateCodeServiceImpl.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/service/impl/ValidateCodeServiceImpl.java @@ -1,12 +1,13 @@ -package com.zbkj.crmeb.validatecode.service.impl; +package com.zbkj.admin.service.impl; -import com.constants.Constants; -import com.exception.CrmebException; -import com.utils.CrmebUtil; -import com.utils.RedisUtil; -import com.utils.ValidateCodeUtil; -import com.zbkj.crmeb.validatecode.model.ValidateCode; -import com.zbkj.crmeb.validatecode.service.ValidateCodeService; +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; @@ -29,24 +30,22 @@ import java.util.concurrent.TimeUnit; public class ValidateCodeServiceImpl implements ValidateCodeService { @Resource - private RedisUtil redisUtil; + private RedisUtil redisAdminUtil; /** * 获取验证码信息 - * @author Mr.Zhang - * @since 2020-04-16 */ @Override public ValidateCode get() { ValidateCodeUtil.Validate randomCode = ValidateCodeUtil.getRandomCode();//直接调用静态方法,返回验证码对象 - if(randomCode == null){ + if (ObjectUtil.isNull(randomCode)) { return null; } String value = randomCode.getValue().toLowerCase(); String md5Key = DigestUtils.md5Hex(value); String redisKey = getRedisKey(md5Key); - redisUtil.set(redisKey, value, 5L, TimeUnit.MINUTES); //5分钟过期 + redisAdminUtil.set(redisKey, value, 5L, TimeUnit.MINUTES); //5分钟过期 String base64Str = randomCode.getBase64Str(); return new ValidateCode(md5Key, CrmebUtil.getBase64Image(base64Str)); } @@ -54,29 +53,23 @@ public class ValidateCodeServiceImpl implements ValidateCodeService { /** * 获取redis key * @param md5Key value的md5加密值 - * @author Mr.Zhang - * @since 2020-04-16 */ - public String getRedisKey(String md5Key){ + public String getRedisKey(String md5Key) { return Constants.VALIDATE_REDIS_KEY_PREFIX + md5Key; } /** * 验证 - * @param validateCode - * @author Mr.Zhang - * @since 2020-04-16 */ - public boolean check(ValidateCode validateCode){ - if(!redisUtil.exists(getRedisKey(validateCode.getKey()))) throw new CrmebException("验证码错误"); - Object redisValue = redisUtil.get(getRedisKey(validateCode.getKey())); - if(!redisValue.equals(validateCode.getCode().toLowerCase())){ + 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 true; + return redisValue.equals(code.toLowerCase()); } - - public static String st = "fmZc8AgVI3jwYdL+RRLyL5e9Yl6SzD92"; - public static String sk = "0b7…)*#~Nel4MGKdoEaRagoxQ"; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechatMessage/service/impl/WeChatMessageServiceImpl.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/service/impl/WeChatMessageServiceImpl.java similarity index 92% rename from crmeb/src/main/java/com/zbkj/crmeb/wechatMessage/service/impl/WeChatMessageServiceImpl.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/service/impl/WeChatMessageServiceImpl.java index b94e041f..bcc80e65 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechatMessage/service/impl/WeChatMessageServiceImpl.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/service/impl/WeChatMessageServiceImpl.java @@ -1,18 +1,18 @@ -package com.zbkj.crmeb.wechatMessage.service.impl; +package com.zbkj.admin.service.impl; import com.alibaba.fastjson.JSONObject; -import com.constants.WeChatConstants; -import com.utils.DateUtil; -import com.utils.RedisUtil; -import com.utils.XmlUtil; -import com.zbkj.crmeb.article.model.Article; -import com.zbkj.crmeb.article.service.ArticleService; -import com.zbkj.crmeb.system.service.SystemAttachmentService; -import com.zbkj.crmeb.user.service.UserTokenService; -import com.zbkj.crmeb.wechat.model.WechatReply; -import com.zbkj.crmeb.wechat.service.WechatReplyService; -import com.zbkj.crmeb.wechatMessage.service.WeChatMessageService; -import com.zbkj.crmeb.wechatMessage.vo.*; +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; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/task/bargain/BargainStopChangeTask.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/bargain/BargainStopChangeTask.java similarity index 89% rename from crmeb/src/main/java/com/zbkj/crmeb/task/bargain/BargainStopChangeTask.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/bargain/BargainStopChangeTask.java index 0f5afe73..cec8b4f9 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/task/bargain/BargainStopChangeTask.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/bargain/BargainStopChangeTask.java @@ -1,7 +1,7 @@ -package com.zbkj.crmeb.task.bargain; +package com.zbkj.admin.task.bargain; -import com.utils.DateUtil; -import com.zbkj.crmeb.bargain.service.StoreBargainService; +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; @@ -33,7 +33,7 @@ public class BargainStopChangeTask { @Autowired private StoreBargainService storeBargainService; - @Scheduled(cron = "0 0 0 */1 * ?") //每天0点执行 + @Scheduled(cron = "0 0 0 */1 * ?") //5秒钟同步一次数据 public void init(){ logger.info("---BargainStopChangeTask------bargain stop status change task: Execution Time - {}", DateUtil.nowDateTime()); try { diff --git a/crmeb/src/main/java/com/zbkj/crmeb/task/brokerage/BrokerageFrozenTask.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/brokerage/BrokerageFrozenTask.java similarity index 82% rename from crmeb/src/main/java/com/zbkj/crmeb/task/brokerage/BrokerageFrozenTask.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/brokerage/BrokerageFrozenTask.java index 99936900..2489ed1a 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/task/brokerage/BrokerageFrozenTask.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/brokerage/BrokerageFrozenTask.java @@ -1,9 +1,9 @@ -package com.zbkj.crmeb.task.brokerage; +package com.zbkj.admin.task.brokerage; -import com.utils.DateUtil; -import com.zbkj.crmeb.task.order.OrderReceiptTask; -import com.zbkj.crmeb.user.service.UserBrokerageRecordService; +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; @@ -35,14 +35,14 @@ public class BrokerageFrozenTask { @Autowired private UserBrokerageRecordService userBrokerageRecordService; -// @Scheduled(fixedDelay = 1000 * 60 * 60L) //1小时同步一次数据 - @Scheduled(fixedDelay = 1000 * 60L) //1小时同步一次数据 + // @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){ + } catch (Exception e) { e.printStackTrace(); logger.error("BrokerageFrozenTask.task" + " | msg : " + e.getMessage()); } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/task/coupon/CouponOverdueTask.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/coupon/CouponOverdueTask.java similarity index 86% rename from crmeb/src/main/java/com/zbkj/crmeb/task/coupon/CouponOverdueTask.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/coupon/CouponOverdueTask.java index 1229cb5c..bcf70050 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/task/coupon/CouponOverdueTask.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/coupon/CouponOverdueTask.java @@ -1,9 +1,7 @@ -package com.zbkj.crmeb.task.coupon; +package com.zbkj.admin.task.coupon; -import com.utils.DateUtil; -import com.zbkj.crmeb.marketing.service.StoreCouponUserService; -import com.zbkj.crmeb.store.service.OrderTaskService; -import com.zbkj.crmeb.task.order.OrderCancelTask; +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; @@ -40,11 +38,11 @@ public class CouponOverdueTask { logger.info("---CouponOverdueTask task------produce Data with fixed rate task: Execution Time - {}", DateUtil.nowDateTime()); try { couponUserService.overdueTask(); - }catch (Exception e){ + } catch (Exception e) { e.printStackTrace(); logger.error("CouponOverdueTask.task" + " | msg : " + e.getMessage()); } } -} +} \ No newline at end of file diff --git a/crmeb/src/main/java/com/zbkj/crmeb/task/integral/IntegralFrozenTask.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/integral/IntegralFrozenTask.java similarity index 85% rename from crmeb/src/main/java/com/zbkj/crmeb/task/integral/IntegralFrozenTask.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/integral/IntegralFrozenTask.java index 1d7552e9..65c3fddc 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/task/integral/IntegralFrozenTask.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/integral/IntegralFrozenTask.java @@ -1,10 +1,8 @@ -package com.zbkj.crmeb.task.integral; +package com.zbkj.admin.task.integral; -import com.utils.DateUtil; -import com.zbkj.crmeb.task.order.OrderReceiptTask; -import com.zbkj.crmeb.user.service.UserBrokerageRecordService; -import com.zbkj.crmeb.user.service.UserIntegralRecordService; +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; @@ -37,11 +35,11 @@ public class IntegralFrozenTask { private UserIntegralRecordService userIntegralRecordService; @Scheduled(fixedDelay = 1000 * 60L) //1分钟同步一次数据 - public void init(){ + public void init() { logger.info("---IntegralFrozenTask task------produce Data with fixed rate task: Execution Time - {}", DateUtil.nowDateTime()); try { userIntegralRecordService.integralThaw(); - }catch (Exception e){ + } catch (Exception e) { e.printStackTrace(); logger.error("IntegralFrozenTask.task" + " | msg : " + e.getMessage()); } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/task/log/ProductLogAddTask.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/log/AutoDeleteLogTask.java similarity index 63% rename from crmeb/src/main/java/com/zbkj/crmeb/task/log/ProductLogAddTask.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/log/AutoDeleteLogTask.java index 3b3c40a9..f1166eb4 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/task/log/ProductLogAddTask.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/log/AutoDeleteLogTask.java @@ -1,7 +1,7 @@ -package com.zbkj.crmeb.task.log; +package com.zbkj.admin.task.log; -import com.utils.DateUtil; -import com.zbkj.crmeb.log.service.StoreProductLogService; +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; @@ -11,7 +11,7 @@ import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; /** - * 日志记录task + * 自动删除不需要的历史日志 * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -25,24 +25,27 @@ import org.springframework.stereotype.Component; @Component @Configuration //读取配置 @EnableScheduling // 2.开启定时任务 -public class ProductLogAddTask { +public class AutoDeleteLogTask { //日志 - private static final Logger logger = LoggerFactory.getLogger(ProductLogAddTask.class); + private static final Logger logger = LoggerFactory.getLogger(AutoDeleteLogTask.class); @Autowired - private StoreProductLogService logService; + private WechatExceptionsService wechatExceptionsService; - @Scheduled(fixedDelay = 1000 * 60L) // 一分钟同步一次数据 - public void init(){ - logger.info("---ProductLogAddTask------produce Data with fixed rate task: Execution Time - {}", DateUtil.nowDate()); + /** + * 每天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 { - logService.addLogTask(); - }catch (Exception e){ + wechatExceptionsService.autoDeleteLog(); + } catch (Exception e) { e.printStackTrace(); - logger.error("ProductLogAddTask" + " | msg : " + e.getMessage()); + logger.error("AutoDeleteLogTask" + " | msg : " + e.getMessage()); } - } } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/task/order/OrderAutoCancelTask.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/order/OrderAutoCancelTask.java similarity index 90% rename from crmeb/src/main/java/com/zbkj/crmeb/task/order/OrderAutoCancelTask.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/order/OrderAutoCancelTask.java index e460b5fc..3f7d1b3f 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/task/order/OrderAutoCancelTask.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/order/OrderAutoCancelTask.java @@ -1,7 +1,7 @@ -package com.zbkj.crmeb.task.order; +package com.zbkj.admin.task.order; -import com.utils.DateUtil; -import com.zbkj.crmeb.store.service.OrderTaskService; +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; @@ -33,12 +33,12 @@ public class OrderAutoCancelTask { private OrderTaskService orderTaskService; @Scheduled(fixedDelay = 1000 * 60L) //1分钟同步一次数据 - public void init(){ + public void init() { logger.info("---OrderAutoCancelTask task------produce Data with fixed rate task: Execution Time - {}", DateUtil.nowDateTime()); try { orderTaskService.autoCancel(); - }catch (Exception e){ + } catch (Exception e) { e.printStackTrace(); logger.error("OrderAutoCancelTask.task" + " | msg : " + e.getMessage()); } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/task/order/OrderAutoCompleteTask.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/order/OrderAutoCompleteTask.java similarity index 90% rename from crmeb/src/main/java/com/zbkj/crmeb/task/order/OrderAutoCompleteTask.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/order/OrderAutoCompleteTask.java index 009e7dc0..3c4f56b5 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/task/order/OrderAutoCompleteTask.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/order/OrderAutoCompleteTask.java @@ -1,7 +1,7 @@ -package com.zbkj.crmeb.task.order; +package com.zbkj.admin.task.order; -import com.utils.DateUtil; -import com.zbkj.crmeb.store.service.OrderTaskService; +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; @@ -34,11 +34,11 @@ public class OrderAutoCompleteTask { private OrderTaskService orderTaskService; @Scheduled(fixedDelay = 1000 * 60L * 60) //每小时同步一次数据 - public void init(){ + public void init() { logger.info("---OrderAutoCompleteTask task------produce Data with fixed rate task: Execution Time - {}", DateUtil.nowDateTime()); try { orderTaskService.autoComplete(); - }catch (Exception e){ + } catch (Exception e) { e.printStackTrace(); logger.error("OrderAutoCompleteTask.task" + " | msg : " + e.getMessage()); } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/task/order/OrderCancelTask.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/order/OrderCancelTask.java similarity index 90% rename from crmeb/src/main/java/com/zbkj/crmeb/task/order/OrderCancelTask.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/order/OrderCancelTask.java index d90ff2a3..054eab0d 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/task/order/OrderCancelTask.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/order/OrderCancelTask.java @@ -1,7 +1,7 @@ -package com.zbkj.crmeb.task.order; +package com.zbkj.admin.task.order; -import com.utils.DateUtil; -import com.zbkj.crmeb.store.service.OrderTaskService; +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; @@ -33,12 +33,12 @@ public class OrderCancelTask { private OrderTaskService orderTaskService; @Scheduled(fixedDelay = 1000 * 60L) //1分钟同步一次数据 - public void init(){ + public void init() { logger.info("---OrderCancelTask task------produce Data with fixed rate task: Execution Time - {}", DateUtil.nowDateTime()); try { orderTaskService.cancelByUser(); - }catch (Exception e){ + } catch (Exception e) { e.printStackTrace(); logger.error("OrderCancelTask.task" + " | msg : " + e.getMessage()); } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/task/order/OrderCompleteTask.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/order/OrderCompleteTask.java similarity index 90% rename from crmeb/src/main/java/com/zbkj/crmeb/task/order/OrderCompleteTask.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/order/OrderCompleteTask.java index 9ef059da..60ba9d79 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/task/order/OrderCompleteTask.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/order/OrderCompleteTask.java @@ -1,7 +1,7 @@ -package com.zbkj.crmeb.task.order; +package com.zbkj.admin.task.order; -import com.utils.DateUtil; -import com.zbkj.crmeb.store.service.OrderTaskService; +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; @@ -33,12 +33,12 @@ public class OrderCompleteTask { private OrderTaskService orderTaskService; @Scheduled(fixedDelay = 1000 * 60L) //1分钟同步一次数据 - public void init(){ + public void init() { logger.info("---OrderCompleteTask task------produce Data with fixed rate task: Execution Time - {}", DateUtil.nowDateTime()); try { orderTaskService.complete(); - }catch (Exception e){ + } catch (Exception e) { e.printStackTrace(); logger.error("OrderCompleteTask.task" + " | msg : " + e.getMessage()); } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/task/order/OrderPaySuccessTask.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/order/OrderPaySuccessTask.java similarity index 90% rename from crmeb/src/main/java/com/zbkj/crmeb/task/order/OrderPaySuccessTask.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/order/OrderPaySuccessTask.java index 00584504..571b73d2 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/task/order/OrderPaySuccessTask.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/order/OrderPaySuccessTask.java @@ -1,7 +1,7 @@ -package com.zbkj.crmeb.task.order; +package com.zbkj.admin.task.order; -import com.utils.DateUtil; -import com.zbkj.crmeb.store.service.OrderTaskService; +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; @@ -34,11 +34,11 @@ public class OrderPaySuccessTask { private OrderTaskService orderTaskService; @Scheduled(fixedDelay = 1000 * 60L) //1分钟同步一次数据 - public void init(){ + public void init() { logger.info("---OrderPaySuccessTask task------produce Data with fixed rate task: Execution Time - {}", DateUtil.nowDateTime()); try { orderTaskService.orderPaySuccessAfter(); - }catch (Exception e){ + } catch (Exception e) { e.printStackTrace(); logger.error("OrderPaySuccessTask.task" + " | msg : " + e.getMessage()); } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/task/order/OrderReceiptTask.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/order/OrderReceiptTask.java similarity index 90% rename from crmeb/src/main/java/com/zbkj/crmeb/task/order/OrderReceiptTask.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/order/OrderReceiptTask.java index adf00516..d57a741a 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/task/order/OrderReceiptTask.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/order/OrderReceiptTask.java @@ -1,7 +1,7 @@ -package com.zbkj.crmeb.task.order; +package com.zbkj.admin.task.order; -import com.utils.DateUtil; -import com.zbkj.crmeb.store.service.OrderTaskService; +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; @@ -32,12 +32,12 @@ public class OrderReceiptTask { private OrderTaskService orderTaskService; @Scheduled(fixedDelay = 1000 * 60L) //1分钟同步一次数据 - public void init(){ + public void init() { logger.info("---OrderReceiptTask task------produce Data with fixed rate task: Execution Time - {}", DateUtil.nowDateTime()); try { orderTaskService.orderReceiving(); - }catch (Exception e){ + } catch (Exception e) { e.printStackTrace(); logger.error("OrderReceiptTask.task" + " | msg : " + e.getMessage()); } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/task/order/OrderRefundTask.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/order/OrderRefundTask.java similarity index 91% rename from crmeb/src/main/java/com/zbkj/crmeb/task/order/OrderRefundTask.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/order/OrderRefundTask.java index aa2f8472..6d0b25ba 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/task/order/OrderRefundTask.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/order/OrderRefundTask.java @@ -1,7 +1,7 @@ -package com.zbkj.crmeb.task.order; +package com.zbkj.admin.task.order; -import com.utils.DateUtil; -import com.zbkj.crmeb.store.service.OrderTaskService; +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; @@ -38,10 +38,10 @@ public class OrderRefundTask { try { orderTaskService.refundApply(); - }catch (Exception e){ + } catch (Exception e) { e.printStackTrace(); logger.error("OrderRefundTask.task" + " | msg : " + e.getMessage()); } } -} +} \ No newline at end of file diff --git a/crmeb/src/main/java/com/zbkj/crmeb/task/pink/PinkStatusChange.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/pink/PinkStatusChangeTask.java similarity index 83% rename from crmeb/src/main/java/com/zbkj/crmeb/task/pink/PinkStatusChange.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/pink/PinkStatusChangeTask.java index 566741b8..0513edb3 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/task/pink/PinkStatusChange.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/pink/PinkStatusChangeTask.java @@ -1,8 +1,6 @@ -package com.zbkj.crmeb.task.pink; -import com.utils.DateUtil; -import com.zbkj.crmeb.combination.model.StorePink; -import com.zbkj.crmeb.combination.service.StoreCombinationService; -import com.zbkj.crmeb.combination.service.StorePinkService; +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; @@ -26,10 +24,10 @@ import org.springframework.stereotype.Component; @Component @Configuration //读取配置 @EnableScheduling // 2.开启定时任务 -public class PinkStatusChange { +public class PinkStatusChangeTask { //日志 - private static final Logger logger = LoggerFactory.getLogger(PinkStatusChange.class); + private static final Logger logger = LoggerFactory.getLogger(PinkStatusChangeTask.class); @Autowired private StorePinkService storePinkService; @@ -39,7 +37,7 @@ public class PinkStatusChange { logger.info("---PinkStatusChange------bargain stop status change task: Execution Time - {}", DateUtil.nowDateTime()); try { storePinkService.detectionStatus(); - }catch (Exception e){ + } catch (Exception e) { e.printStackTrace(); logger.error("PinkStatusChange" + " | msg : " + e.getMessage()); } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/task/product/ProductStock.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/product/ProductStockTask.java similarity index 84% rename from crmeb/src/main/java/com/zbkj/crmeb/task/product/ProductStock.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/product/ProductStockTask.java index 8481dad0..3250f441 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/task/product/ProductStock.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/product/ProductStockTask.java @@ -1,10 +1,10 @@ -package com.zbkj.crmeb.task.product; +package com.zbkj.admin.task.product; -import com.utils.DateUtil; -import com.zbkj.crmeb.bargain.service.StoreBargainService; -import com.zbkj.crmeb.combination.service.StoreCombinationService; -import com.zbkj.crmeb.seckill.service.StoreSeckillService; -import com.zbkj.crmeb.store.service.StoreProductService; +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; @@ -24,13 +24,12 @@ import org.springframework.stereotype.Component; * | Author: CRMEB Team * +---------------------------------------------------------------------- */ - @Component @Configuration //读取配置 @EnableScheduling // 2.开启定时任务 -public class ProductStock { +public class ProductStockTask { //日志 - private static final Logger logger = LoggerFactory.getLogger(ProductStock.class); + private static final Logger logger = LoggerFactory.getLogger(ProductStockTask.class); @Autowired private StoreProductService storeProductService; @@ -52,7 +51,7 @@ public class ProductStock { storeSeckillService.consumeProductStock(); // 秒杀本身库存任务 storeBargainService.consumeProductStock(); // 砍价本身库存任务 storeCombinationService.consumeProductStock(); // 拼团本身库存任务 - }catch (Exception e){ + } catch (Exception e) { e.printStackTrace(); logger.error("OrderTakeByUser.task" + " | msg : " + e.getMessage()); } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/task/wechat/AsyncWeChatProgramTempMessage.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/wechat/AsyncWeChatProgramTempMessage.java similarity index 91% rename from crmeb/src/main/java/com/zbkj/crmeb/task/wechat/AsyncWeChatProgramTempMessage.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/wechat/AsyncWeChatProgramTempMessage.java index 07ee2db3..ce306310 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/task/wechat/AsyncWeChatProgramTempMessage.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/wechat/AsyncWeChatProgramTempMessage.java @@ -1,7 +1,7 @@ -package com.zbkj.crmeb.task.wechat; +package com.zbkj.admin.task.wechat; -import com.utils.DateUtil; -import com.zbkj.crmeb.wechat.service.TemplateMessageService; +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; @@ -37,8 +37,7 @@ public class AsyncWeChatProgramTempMessage { logger.info("---AsyncWeChatProgramTempMessage task------produce Data with fixed rate task: Execution Time - {}", DateUtil.nowDate()); try { templateMessageService.consumeProgram(); - - }catch (Exception e){ + } catch (Exception e) { e.printStackTrace(); logger.error("AsyncWeChatProgramTempMessage.task" + " | msg : " + e.getMessage()); } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/task/wechat/AsyncWeChatPublicTempMessage.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/wechat/AsyncWeChatPublicTempMessage.java similarity index 90% rename from crmeb/src/main/java/com/zbkj/crmeb/task/wechat/AsyncWeChatPublicTempMessage.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/wechat/AsyncWeChatPublicTempMessage.java index e906bb63..5f96f291 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/task/wechat/AsyncWeChatPublicTempMessage.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/task/wechat/AsyncWeChatPublicTempMessage.java @@ -1,7 +1,7 @@ -package com.zbkj.crmeb.task.wechat; +package com.zbkj.admin.task.wechat; -import com.utils.DateUtil; -import com.zbkj.crmeb.wechat.service.TemplateMessageService; +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; @@ -33,15 +33,16 @@ public class AsyncWeChatPublicTempMessage { private TemplateMessageService templateMessageService; @Scheduled(fixedDelay = 1000 * 60L) //1分钟同步一次数据 - public void init(){ + public void init() { logger.info("---AsyncWeChatPublicTempMessage task------produce Data with fixed rate task: Execution Time - {}", DateUtil.nowDate()); try { templateMessageService.consumePublic(); - }catch (Exception e){ + } catch (Exception e) { e.printStackTrace(); logger.error("AsyncWeChatPublicTempMessage.task" + " | msg : " + e.getMessage()); } } } + diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechatMessage/vo/BaseMessageVo.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/vo/BaseMessageVo.java similarity index 95% rename from crmeb/src/main/java/com/zbkj/crmeb/wechatMessage/vo/BaseMessageVo.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/vo/BaseMessageVo.java index 1ba967ea..bd93ebe2 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechatMessage/vo/BaseMessageVo.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/vo/BaseMessageVo.java @@ -1,6 +1,6 @@ -package com.zbkj.crmeb.wechatMessage.vo; +package com.zbkj.admin.vo; -import com.utils.DateUtil; +import com.zbkj.common.utils.DateUtil; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechatMessage/vo/MessageImageItemVo.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/vo/MessageImageItemVo.java similarity index 96% rename from crmeb/src/main/java/com/zbkj/crmeb/wechatMessage/vo/MessageImageItemVo.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/vo/MessageImageItemVo.java index c5b0ab4a..a2bba195 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechatMessage/vo/MessageImageItemVo.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/vo/MessageImageItemVo.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.wechatMessage.vo; +package com.zbkj.admin.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechatMessage/vo/MessageImageVo.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/vo/MessageImageVo.java similarity index 95% rename from crmeb/src/main/java/com/zbkj/crmeb/wechatMessage/vo/MessageImageVo.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/vo/MessageImageVo.java index 413b3c43..5b89ced7 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechatMessage/vo/MessageImageVo.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/vo/MessageImageVo.java @@ -1,6 +1,6 @@ -package com.zbkj.crmeb.wechatMessage.vo; +package com.zbkj.admin.vo; -import com.constants.WeChatConstants; +import com.zbkj.common.constants.WeChatConstants; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechatMessage/vo/MessageReplyDataVo.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/vo/MessageReplyDataVo.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/wechatMessage/vo/MessageReplyDataVo.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/vo/MessageReplyDataVo.java index fe3786d7..b1a59a96 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechatMessage/vo/MessageReplyDataVo.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/vo/MessageReplyDataVo.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.wechatMessage.vo; +package com.zbkj.admin.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechatMessage/vo/MessageTextVo.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/vo/MessageTextVo.java similarity index 91% rename from crmeb/src/main/java/com/zbkj/crmeb/wechatMessage/vo/MessageTextVo.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/vo/MessageTextVo.java index 6f1e94ee..4ce6eff4 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechatMessage/vo/MessageTextVo.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/vo/MessageTextVo.java @@ -1,8 +1,5 @@ -package com.zbkj.crmeb.wechatMessage.vo; +package com.zbkj.admin.vo; -import com.utils.CrmebUtil; -import com.utils.DateUtil; -import com.utils.XmlUtil; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechatMessage/vo/MessageVoiceItemVo.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/vo/MessageVoiceItemVo.java similarity index 96% rename from crmeb/src/main/java/com/zbkj/crmeb/wechatMessage/vo/MessageVoiceItemVo.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/vo/MessageVoiceItemVo.java index e5bb19ac..fbf0a5b3 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechatMessage/vo/MessageVoiceItemVo.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/vo/MessageVoiceItemVo.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.wechatMessage.vo; +package com.zbkj.admin.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechatMessage/vo/MessageVoiceVo.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/vo/MessageVoiceVo.java similarity index 95% rename from crmeb/src/main/java/com/zbkj/crmeb/wechatMessage/vo/MessageVoiceVo.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/vo/MessageVoiceVo.java index deabdb20..9ac9f651 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechatMessage/vo/MessageVoiceVo.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/vo/MessageVoiceVo.java @@ -1,6 +1,6 @@ -package com.zbkj.crmeb.wechatMessage.vo; +package com.zbkj.admin.vo; -import com.constants.WeChatConstants; +import com.zbkj.common.constants.WeChatConstants; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/validatecode/model/ValidateCode.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/vo/ValidateCode.java similarity index 96% rename from crmeb/src/main/java/com/zbkj/crmeb/validatecode/model/ValidateCode.java rename to crmeb/crmeb-admin/src/main/java/com/zbkj/admin/vo/ValidateCode.java index 4859ff5b..94ceb996 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/validatecode/model/ValidateCode.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/admin/vo/ValidateCode.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.validatecode.model; +package com.zbkj.admin.vo; import java.io.Serializable; 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 00000000..2b2cbe2f --- /dev/null +++ b/crmeb/crmeb-admin/src/main/resources/application-beta.yml @@ -0,0 +1,49 @@ +# CRMEB 相关配置 +crmeb: + version: CRMEB-JAVA-SY-v2.0 # 当前代码版本 + 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/api.beta.admin.net/ # 服务器图片路径配置 斜杠结尾 + +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://121.196.17.222:3306/crmeb_java_beta?characterEncoding=utf-8&useSSL=false&serverTimeZone=GMT+8 + url: jdbc:mysql://127.0.0.1:3306/crmeb_java_beta?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-admin/src/main/resources/application-dev.yml b/crmeb/crmeb-admin/src/main/resources/application-dev.yml new file mode 100644 index 00000000..54f35d25 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/resources/application-dev.yml @@ -0,0 +1,42 @@ +# CRMEB 相关配置 +crmeb: + version: CRMEB-JAVA-SY-v2.0 # 当前代码版本 + 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/api.dev.admin.net/ # 服务器图片路径配置 斜杠结尾 + +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_java_dev?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-admin/src/main/resources/application-prod.yml b/crmeb/crmeb-admin/src/main/resources/application-prod.yml new file mode 100644 index 00000000..e7a46471 --- /dev/null +++ b/crmeb/crmeb-admin/src/main/resources/application-prod.yml @@ -0,0 +1,66 @@ +# CRMEB 相关配置 +crmeb: + version: CRMEB-JAVA-SY-v2.0 # 当前代码版本 + 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/api.java.net/ # 服务器图片路径配置 斜杠结尾 + +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_java?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: crmeb #访问swagger的账号 + password: ZeypRDYBfM #访问swagger的密码 diff --git a/crmeb/src/main/resources/application.yml b/crmeb/crmeb-admin/src/main/resources/application.yml similarity index 77% rename from crmeb/src/main/resources/application.yml rename to crmeb/crmeb-admin/src/main/resources/application.yml index 6fcb567c..67dcc041 100644 --- a/crmeb/src/main/resources/application.yml +++ b/crmeb/crmeb-admin/src/main/resources/application.yml @@ -1,13 +1,23 @@ -# 配置端口 -server: - port: 8080 +# CRMEB 相关配置 +crmeb: + version: CRMEB-JAVA-SY-v2.0 # 当前代码版本 domain: #配合swagger使用 # 待部署域名 - version: CRMEB-JAVA-KY-v1.3.3.1 # 当前代码版本 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/api.admin.net/ # 服务器图片路径配置 斜杠结尾 + +# 配置端口 +server: + port: 8080 + servlet: + context-path: / # 访问path + tomcat: + uri-encoding: UTF-8 # 默认编码格式 + max-threads: 1000 # 最大线程数量 默认200 + min-spare-threads: 30 # 初始化启动线程数量 spring: profiles: @@ -19,27 +29,25 @@ spring: max-file-size: 50MB #设置单个文件大小 max-request-size: 50MB #设置单次请求文件的总大小 application: - name: cemrb #这个很重要,这在以后的服务与服务之间相互调用一般都是根据这个name + 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_java_cn?characterEncoding=utf-8&useSSL=false&serverTimeZone=GMT+8 + url: jdbc:mysql://127.0.0.1:3306/crmeb_java_beta?characterEncoding=utf-8&useSSL=false&serverTimeZone=GMT+8 username: root password: 123456 + redis: host: 127.0.0.1 #地址 port: 6379 #端口 password: 123456 timeout: 30000 # 连接超时时间(毫秒) - database: 3 #默认数据库 + database: 3 #默认数据库 jedis: pool: max-active: 200 # 连接池最大连接数(使用负值表示没有限制) @@ -48,6 +56,7 @@ spring: min-idle: 0 # 连接池中的最小空闲连接 time-between-eviction-runs: -1 #逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1 + debug: true logging: level: @@ -61,6 +70,7 @@ logging: # 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 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 00000000..373ff0e4 --- /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/logback-spring.xml b/crmeb/crmeb-admin/src/main/resources/logback-spring.xml new file mode 100644 index 00000000..c087b233 --- /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 00000000..c2d46811 --- /dev/null +++ b/crmeb/crmeb-common/pom.xml @@ -0,0 +1,314 @@ + + + + crmeb + com.zbkj + 0.0.1-SNAPSHOT + + 4.0.0 + + crmeb-common + crmeb-common + + + + 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 + + + + + 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.swagger + swagger-models + + + + + 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 + + + + + + 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/src/main/java/com/aop/ControllerAspect.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/acpect/ControllerAspect.java similarity index 98% rename from crmeb/src/main/java/com/aop/ControllerAspect.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/acpect/ControllerAspect.java index 7aa03a25..75f0a4d0 100644 --- a/crmeb/src/main/java/com/aop/ControllerAspect.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/acpect/ControllerAspect.java @@ -1,4 +1,4 @@ -package com.aop; +package com.zbkj.common.acpect; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; @@ -27,7 +27,6 @@ import java.util.Arrays; @Component public class ControllerAspect { - Logger logger = LoggerFactory.getLogger(ControllerAspect.class); @Pointcut("execution(* com.zbkj.crmeb.system.controller.*.*(..))") @@ -35,7 +34,6 @@ public class ControllerAspect { } - @Around("pointCutMethodController()") public Object doAroundService(ProceedingJoinPoint pjp) throws Throwable { @@ -52,5 +50,4 @@ public class ControllerAspect { return obj; } - } 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 00000000..139df04c --- /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~2020 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 00000000..65e05b11 --- /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~2020 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/src/main/java/com/zbkj/crmeb/config/RedisConfig.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/config/RedisConfig.java similarity index 51% rename from crmeb/src/main/java/com/zbkj/crmeb/config/RedisConfig.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/config/RedisConfig.java index 2db649fc..7f4bee50 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/config/RedisConfig.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/config/RedisConfig.java @@ -1,21 +1,25 @@ -package com.zbkj.crmeb.config; +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.context.annotation.Primary; 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.RedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer; import redis.clients.jedis.JedisPoolConfig; +import java.time.Duration; + /** * Redis配置组件 * +---------------------------------------------------------------------- @@ -53,61 +57,64 @@ public class RedisConfig { @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("${redis.task.config.minEvictableIdleTimeMillis}") -// private String minEvictableIdleTimeMillis; - -// @Value("${redis.task.config.numTestsPerEvictionRun}") -// private int numTestsPerEvictionRun; - @Value("${spring.redis.jedis.pool.time-between-eviction-runs}") private String timeBetweenEvictionRunsMillis; -// @Value("${redis.task.config.testOnBorrow}") -// private Boolean testOnBorrow; - -// @Value("${redis.task.config.testWhileIdle}") -// private Boolean testWhileIdle; - @Bean - @Primary - public RedisConnectionFactory taskConnectionFactory() { + public JedisPoolConfig jedisPoolConfig() { JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); jedisPoolConfig.setMaxIdle(maxIdle); jedisPoolConfig.setMaxTotal(maxTotal); jedisPoolConfig.setMaxWaitMillis(maxWaitMillis); - -// jedisPoolConfig.setMinEvictableIdleTimeMillis(Integer.parseInt(minEvictableIdleTimeMillis)); -// jedisPoolConfig.setNumTestsPerEvictionRun(numTestsPerEvictionRun); + jedisPoolConfig.setMinIdle(minIdle); jedisPoolConfig.setTimeBetweenEvictionRunsMillis(Integer.parseInt(timeBetweenEvictionRunsMillis)); -// jedisPoolConfig.setTestOnBorrow(testOnBorrow); -// jedisPoolConfig.setTestWhileIdle(testWhileIdle); - JedisConnectionFactory connectionFactory = new JedisConnectionFactory(jedisPoolConfig); - connectionFactory.setPort(redisPort); - connectionFactory.setHostName(redisHost); - connectionFactory.setDatabase(redisDb); - connectionFactory.setPassword(redisPass); - //配置连接池属性 - connectionFactory.setTimeout(Integer.parseInt(timeout)); - - - return connectionFactory; + 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){ - //设置序列化 - Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); - ObjectMapper om = new ObjectMapper(); - om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); - om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); - jackson2JsonRedisSerializer.setObjectMapper(om); //配置redisTemplate - RedisTemplate redisTemplate = new RedisTemplate(); + RedisTemplate redisTemplate = new RedisTemplate<>(); redisTemplate.setConnectionFactory(redisConnectionFactory); - RedisSerializer stringSerializer = new StringRedisSerializer(); + // 使用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序列化 @@ -116,6 +123,23 @@ public class RedisConfig { 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 00000000..1f51027b --- /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~2020 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/src/main/java/com/constants/BargainConstants.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/BargainConstants.java similarity index 96% rename from crmeb/src/main/java/com/constants/BargainConstants.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/BargainConstants.java index c1d443c0..e51e17eb 100644 --- a/crmeb/src/main/java/com/constants/BargainConstants.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/BargainConstants.java @@ -1,4 +1,4 @@ -package com.constants; +package com.zbkj.common.constants; /** * 砍价常量类 diff --git a/crmeb/src/main/java/com/constants/BrokerageRecordConstants.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/BrokerageRecordConstants.java similarity index 98% rename from crmeb/src/main/java/com/constants/BrokerageRecordConstants.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/BrokerageRecordConstants.java index ef6b60a4..881cfc46 100644 --- a/crmeb/src/main/java/com/constants/BrokerageRecordConstants.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/BrokerageRecordConstants.java @@ -1,4 +1,4 @@ -package com.constants; +package com.zbkj.common.constants; /** * 佣金记录常量类 diff --git a/crmeb/src/main/java/com/constants/CategoryConstants.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/CategoryConstants.java similarity index 97% rename from crmeb/src/main/java/com/constants/CategoryConstants.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/CategoryConstants.java index d92fb32f..b6ffee2e 100644 --- a/crmeb/src/main/java/com/constants/CategoryConstants.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/CategoryConstants.java @@ -1,4 +1,4 @@ -package com.constants; +package com.zbkj.common.constants; /** * 分类常量类 diff --git a/crmeb/src/main/java/com/constants/Constants.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/Constants.java similarity index 95% rename from crmeb/src/main/java/com/constants/Constants.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/Constants.java index bc23ce77..4c22fc37 100644 --- a/crmeb/src/main/java/com/constants/Constants.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/Constants.java @@ -1,4 +1,4 @@ -package com.constants; +package com.zbkj.common.constants; /** * 配置类 @@ -112,7 +112,7 @@ public class Constants { //上传类型 public static final String UPLOAD_TYPE_FILE = "file"; - public static final String UPLOAD_ROOT_PATH_CONFIG_KEY = "upload_root_path";//上传地址 +// public static final String UPLOAD_ROOT_PATH_CONFIG_KEY = "upload_root_path";//上传地址 public static final String UPLOAD_MODEL_PATH_EXCEL = "excel";// excel //图片上传 @@ -167,7 +167,8 @@ public class Constants { //config配置的key public static final String CONFIG_KEY_SITE_URL = "site_url"; //域名 - public static final String CONFIG_KEY_API_URL = "api_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"; //网站名称 @@ -198,6 +199,22 @@ public class Constants { //云智服 小程序插件 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"; @@ -398,8 +415,6 @@ public class Constants { 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_TASK_REDIS_KEY_AFTER_TAKE_BY_USER = "alterOrderTakeByUser"; // 用户订单收货后续操作 - public static final String ORDER_TASK_PAY_SUCCESS_AFTER = "orderPaySuccessTask"; // 订单支付成功后续操作 public static final String ORDER_STATUS_CACHE_CREATE_ORDER = "cache_key_create_order"; @@ -423,7 +438,7 @@ public class Constants { 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_ALI_PAY = "支付宝支付"; //支付宝 public static final String PAY_TYPE_STR_OTHER = "其他支付"; //其他支付 //需要支付的业务类型 @@ -553,4 +568,8 @@ public class Constants { 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/src/main/java/com/constants/CouponConstants.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/CouponConstants.java similarity index 98% rename from crmeb/src/main/java/com/constants/CouponConstants.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/CouponConstants.java index e687b2fe..0d502aea 100644 --- a/crmeb/src/main/java/com/constants/CouponConstants.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/CouponConstants.java @@ -1,4 +1,4 @@ -package com.constants; +package com.zbkj.common.constants; /** * 优惠券常量类 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 00000000..21161c72 --- /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~2020 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/src/main/java/com/constants/IntegralRecordConstants.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/IntegralRecordConstants.java similarity index 98% rename from crmeb/src/main/java/com/constants/IntegralRecordConstants.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/IntegralRecordConstants.java index 07bf3854..bb0980d6 100644 --- a/crmeb/src/main/java/com/constants/IntegralRecordConstants.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/IntegralRecordConstants.java @@ -1,4 +1,4 @@ -package com.constants; +package com.zbkj.common.constants; /** * 积分记录常量类 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 00000000..bff7870a --- /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~2020 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/src/main/java/com/constants/OnePassConstants.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/OnePassConstants.java similarity index 99% rename from crmeb/src/main/java/com/constants/OnePassConstants.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/OnePassConstants.java index fbbd90de..6f35397b 100644 --- a/crmeb/src/main/java/com/constants/OnePassConstants.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/OnePassConstants.java @@ -1,4 +1,4 @@ -package com.constants; +package com.zbkj.common.constants; /** * 一号通常量类 diff --git a/crmeb/src/main/java/com/constants/PayConstants.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/PayConstants.java similarity index 92% rename from crmeb/src/main/java/com/constants/PayConstants.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/PayConstants.java index 96a1df19..fc1be0cb 100644 --- a/crmeb/src/main/java/com/constants/PayConstants.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/PayConstants.java @@ -1,4 +1,4 @@ -package com.constants; +package com.zbkj.common.constants; /** * 支付相关常量类 @@ -28,6 +28,9 @@ public class PayConstants { 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"; diff --git a/crmeb/src/main/java/com/constants/ProductConstants.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/ProductConstants.java similarity index 98% rename from crmeb/src/main/java/com/constants/ProductConstants.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/ProductConstants.java index 738f3800..d1968dd9 100644 --- a/crmeb/src/main/java/com/constants/ProductConstants.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/ProductConstants.java @@ -1,4 +1,4 @@ -package com.constants; +package com.zbkj.common.constants; /** * 商品常量类 diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/request/OrderComputedRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/RedisConstatns.java similarity index 50% rename from crmeb/src/main/java/com/zbkj/crmeb/front/request/OrderComputedRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/RedisConstatns.java index fabe4e12..3497a201 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/request/OrderComputedRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/RedisConstatns.java @@ -1,10 +1,7 @@ -package com.zbkj.crmeb.front.request; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; +package com.zbkj.common.constants; /** - * 计算订单价格Request对象 + * Redis常量类 * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -15,22 +12,16 @@ import lombok.Data; * | Author: CRMEB Team * +---------------------------------------------------------------------- */ -@Data -public class OrderComputedRequest { +public class RedisConstatns { - @ApiModelProperty(value = "地址id") - private Integer addressId; + /** 用户注册信息缓存Key */ + public static final String USER_REGISTER_KEY = "USER:REGISTER:"; - @ApiModelProperty(value = "优惠券id") - private Integer couponId; - - @ApiModelProperty(value = "支付类型") - private String payType; - - @ApiModelProperty(value = "快递类型") - private Integer shippingType; - - @ApiModelProperty(value = "抵扣积分") - private Boolean useIntegral; + /** 商品浏览量(每日) */ + 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/src/main/java/com/constants/RegularConstants.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/RegularConstants.java similarity index 99% rename from crmeb/src/main/java/com/constants/RegularConstants.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/RegularConstants.java index a445d3b5..2c5a6e5a 100644 --- a/crmeb/src/main/java/com/constants/RegularConstants.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/RegularConstants.java @@ -1,4 +1,4 @@ -package com.constants; +package com.zbkj.common.constants; /** * 正则表达式类 diff --git a/crmeb/src/main/java/com/constants/SmsConstants.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/SmsConstants.java similarity index 90% rename from crmeb/src/main/java/com/constants/SmsConstants.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/SmsConstants.java index e6c92205..130e54e1 100644 --- a/crmeb/src/main/java/com/constants/SmsConstants.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/SmsConstants.java @@ -1,4 +1,4 @@ -package com.constants; +package com.zbkj.common.constants; /** * 短信常量类 @@ -32,17 +32,17 @@ public class SmsConstants { 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 = 435250; + 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 = 440396; + 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 = 441596; + public static final Integer SMS_CONFIG_DELIVER_GOODS_SWITCH_TEMP_ID = 520269; /** 确认收货短信提醒 */ public static final String SMS_CONFIG_CONFIRM_TAKE_OVER_SWITCH = "confirmTakeOverSwitch"; @@ -52,27 +52,27 @@ public class SmsConstants { /** 用户下单管理员短信提醒 */ public static final String SMS_CONFIG_ADMIN_LOWER_ORDER_SWITCH = "adminLowerOrderSwitch"; /** 用户下单管理员短信提醒模版ID */ - public static final Integer SMS_CONFIG_ADMIN_LOWER_ORDER_SWITCH_TEMP_ID = 440405; + 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 = 440406; + 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 = 440408; + 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 = 440407; + 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 = 440410; + public static final Integer SMS_CONFIG_PRICE_REVISION_SWITCH_TEMP_ID = 528288; /** 订单未支付 */ public static final String SMS_CONFIG_ORDER_PAY_FALSE = "orderPayFalse"; @@ -106,10 +106,4 @@ public class SmsConstants { /** 发送短信参数模板 */ public static final String SMS_COMMON_PARAM_FORMAT = "param[{}]"; -// /** 用户token前缀 */ -// public static final String SMS_USER_TOKEN_PREFIX = "Bearer-"; -// /** 支付 */ -// public static final String PAY_DEFAULT_PAY_TYPE = "weixin"; -// /** 用户token的redis前缀 拼接secret */ -// public static final String SMS_USER_TOKEN_REDIS_PREFIX = "sms_user_token_{}"; } diff --git a/crmeb/src/main/java/com/constants/SysConfigConstants.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/SysConfigConstants.java similarity index 90% rename from crmeb/src/main/java/com/constants/SysConfigConstants.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/SysConfigConstants.java index 33c464bc..f1892d30 100644 --- a/crmeb/src/main/java/com/constants/SysConfigConstants.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/SysConfigConstants.java @@ -1,4 +1,4 @@ -package com.constants; +package com.zbkj.common.constants; /** * 系统设置常量类 @@ -41,6 +41,10 @@ public class SysConfigConstants { 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"; @@ -70,4 +74,6 @@ public class SysConfigConstants { 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/src/main/java/com/constants/SysGroupDataConstants.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/SysGroupDataConstants.java similarity index 98% rename from crmeb/src/main/java/com/constants/SysGroupDataConstants.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/SysGroupDataConstants.java index 7af8fc2f..809e2f5a 100644 --- a/crmeb/src/main/java/com/constants/SysGroupDataConstants.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/SysGroupDataConstants.java @@ -1,4 +1,4 @@ -package com.constants; +package com.zbkj.common.constants; /** * 组合数据常量类 diff --git a/crmeb/src/main/java/com/zbkj/crmeb/sms/SmsResultVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/TaskConstants.java similarity index 65% rename from crmeb/src/main/java/com/zbkj/crmeb/sms/SmsResultVo.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/TaskConstants.java index fe24ade2..63baaf90 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/sms/SmsResultVo.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/TaskConstants.java @@ -1,9 +1,7 @@ -package com.zbkj.crmeb.sms; - -import lombok.Data; +package com.zbkj.common.constants; /** - * 短信发送状态同步 response 解析 + * 定时任务常量类 * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -14,10 +12,10 @@ import lombok.Data; * | Author: CRMEB Team * +---------------------------------------------------------------------- */ -@Data -public class SmsResultVo { - private Integer resultcode; - private String phone; - private Integer id; - private String _resultcode; +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/src/main/java/com/constants/UserConstants.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/UserConstants.java similarity index 97% rename from crmeb/src/main/java/com/constants/UserConstants.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/UserConstants.java index 82749de2..5bf84432 100644 --- a/crmeb/src/main/java/com/constants/UserConstants.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/constants/UserConstants.java @@ -1,4 +1,4 @@ -package com.constants; +package com.zbkj.common.constants; /** * 用户常量表 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 00000000..1f4a3512 --- /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~2020 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 00000000..8336dc7d --- /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~2020 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 00000000..e7f3c8bf --- /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/src/main/java/com/exception/CrmebException.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/exception/CrmebException.java similarity index 70% rename from crmeb/src/main/java/com/exception/CrmebException.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/exception/CrmebException.java index 8bdaf5f3..369620a9 100644 --- a/crmeb/src/main/java/com/exception/CrmebException.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/exception/CrmebException.java @@ -1,17 +1,8 @@ -package com.exception; +package com.zbkj.common.exception; -import com.common.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.bind.MethodArgumentNotValidException; -import org.springframework.web.bind.annotation.ExceptionHandler; -import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestControllerAdvice; -import java.util.Objects; - /** * Crmeb异常类 * +---------------------------------------------------------------------- diff --git a/crmeb/src/main/java/com/exception/ExceptionCodeEnum.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/exception/ExceptionCodeEnum.java similarity index 97% rename from crmeb/src/main/java/com/exception/ExceptionCodeEnum.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/exception/ExceptionCodeEnum.java index 27eef82e..bf74eb42 100644 --- a/crmeb/src/main/java/com/exception/ExceptionCodeEnum.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/exception/ExceptionCodeEnum.java @@ -1,4 +1,4 @@ -package com.exception; +package com.zbkj.common.exception; /** * Exception 拦截 diff --git a/crmeb/src/main/java/com/exception/ExceptionHandler.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/exception/ExceptionHandler.java similarity index 95% rename from crmeb/src/main/java/com/exception/ExceptionHandler.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/exception/ExceptionHandler.java index f12f7d56..eb2a8d20 100644 --- a/crmeb/src/main/java/com/exception/ExceptionHandler.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/exception/ExceptionHandler.java @@ -1,4 +1,4 @@ -package com.exception; +package com.zbkj.common.exception; /** * Exception 接口定义 diff --git a/crmeb/src/main/java/com/exception/GlobalExceptionHandler.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/exception/GlobalExceptionHandler.java similarity index 97% rename from crmeb/src/main/java/com/exception/GlobalExceptionHandler.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/exception/GlobalExceptionHandler.java index 1ad06a6a..ad234d8f 100644 --- a/crmeb/src/main/java/com/exception/GlobalExceptionHandler.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/exception/GlobalExceptionHandler.java @@ -1,6 +1,6 @@ -package com.exception; +package com.zbkj.common.exception; -import com.common.CommonResult; +import com.zbkj.common.response.CommonResult; import lombok.extern.slf4j.Slf4j; import org.springframework.http.HttpStatus; import org.springframework.validation.BindException; diff --git a/crmeb/src/main/java/com/interceptor/SwaggerInterceptor.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/interceptor/SwaggerInterceptor.java similarity index 99% rename from crmeb/src/main/java/com/interceptor/SwaggerInterceptor.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/interceptor/SwaggerInterceptor.java index ce9c68ed..1e898a01 100644 --- a/crmeb/src/main/java/com/interceptor/SwaggerInterceptor.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/interceptor/SwaggerInterceptor.java @@ -1,4 +1,4 @@ -package com.interceptor; +package com.zbkj.common.interceptor; import org.springframework.core.io.Resource; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/article/model/Article.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/article/Article.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/article/model/Article.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/article/Article.java index f97295c8..6532a911 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/article/model/Article.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/article/Article.java @@ -1,17 +1,17 @@ -package com.zbkj.crmeb.article.model; +package com.zbkj.common.model.article; -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.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; + /** * 文章管理表 * +---------------------------------------------------------------------- diff --git a/crmeb/src/main/java/com/zbkj/crmeb/bargain/model/StoreBargain.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/bargain/StoreBargain.java similarity index 99% rename from crmeb/src/main/java/com/zbkj/crmeb/bargain/model/StoreBargain.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/bargain/StoreBargain.java index 1e2ad892..e0c50409 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/bargain/model/StoreBargain.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/bargain/StoreBargain.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.bargain.model; +package com.zbkj.common.model.bargain; import java.math.BigDecimal; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/bargain/model/StoreBargainUser.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/bargain/StoreBargainUser.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/bargain/model/StoreBargainUser.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/bargain/StoreBargainUser.java index a151174a..61ccf3d0 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/bargain/model/StoreBargainUser.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/bargain/StoreBargainUser.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.bargain.model; +package com.zbkj.common.model.bargain; import java.math.BigDecimal; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/bargain/model/StoreBargainUserHelp.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/bargain/StoreBargainUserHelp.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/bargain/model/StoreBargainUserHelp.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/bargain/StoreBargainUserHelp.java index 80dae1bc..33696899 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/bargain/model/StoreBargainUserHelp.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/bargain/StoreBargainUserHelp.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.bargain.model; +package com.zbkj.common.model.bargain; import java.math.BigDecimal; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreCart.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/cat/StoreCart.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreCart.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/cat/StoreCart.java index 4c353b09..e6dbe084 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreCart.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/cat/StoreCart.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.store.model; +package com.zbkj.common.model.cat; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/category/model/Category.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/category/Category.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/category/model/Category.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/category/Category.java index 80c36aa5..831694fd 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/category/model/Category.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/category/Category.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.category.model; +package com.zbkj.common.model.category; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.IdType; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/combination/model/StoreCombination.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/combination/StoreCombination.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/combination/model/StoreCombination.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/combination/StoreCombination.java index dba52040..3683dd00 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/combination/model/StoreCombination.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/combination/StoreCombination.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.combination.model; +package com.zbkj.common.model.combination; import java.math.BigDecimal; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/combination/model/StorePink.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/combination/StorePink.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/combination/model/StorePink.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/combination/StorePink.java index 1d39d7e4..f8f19c6e 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/combination/model/StorePink.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/combination/StorePink.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.combination.model; +package com.zbkj.common.model.combination; import java.math.BigDecimal; import com.baomidou.mybatisplus.annotation.TableName; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/marketing/model/StoreCoupon.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/coupon/StoreCoupon.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/marketing/model/StoreCoupon.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/coupon/StoreCoupon.java index 3488c190..726b74a5 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/marketing/model/StoreCoupon.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/coupon/StoreCoupon.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.marketing.model; +package com.zbkj.common.model.coupon; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/marketing/model/StoreCouponUser.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/coupon/StoreCouponUser.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/marketing/model/StoreCouponUser.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/coupon/StoreCouponUser.java index ed85c1ff..42885626 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/marketing/model/StoreCouponUser.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/coupon/StoreCouponUser.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.marketing.model; +package com.zbkj.common.model.coupon; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/express/model/Express.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/express/Express.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/express/model/Express.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/express/Express.java index 3893a9be..13495617 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/express/model/Express.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/express/Express.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.express.model; +package com.zbkj.common.model.express; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.IdType; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/express/model/ShippingTemplates.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/express/ShippingTemplates.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/express/model/ShippingTemplates.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/express/ShippingTemplates.java index 785aaa4f..adaeba5a 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/express/model/ShippingTemplates.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/express/ShippingTemplates.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.express.model; +package com.zbkj.common.model.express; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.IdType; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/express/model/ShippingTemplatesFree.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/express/ShippingTemplatesFree.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/express/model/ShippingTemplatesFree.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/express/ShippingTemplatesFree.java index 066a39ed..8476673e 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/express/model/ShippingTemplatesFree.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/express/ShippingTemplatesFree.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.express.model; +package com.zbkj.common.model.express; import java.math.BigDecimal; import com.baomidou.mybatisplus.annotation.TableName; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/express/model/ShippingTemplatesRegion.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/express/ShippingTemplatesRegion.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/express/model/ShippingTemplatesRegion.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/express/ShippingTemplatesRegion.java index ae053923..c7c730cc 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/express/model/ShippingTemplatesRegion.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/express/ShippingTemplatesRegion.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.express.model; +package com.zbkj.common.model.express; import java.math.BigDecimal; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/finance/model/UserExtract.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/finance/UserExtract.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/finance/model/UserExtract.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/finance/UserExtract.java index 56728657..f33793f3 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/finance/model/UserExtract.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/finance/UserExtract.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.finance.model; +package com.zbkj.common.model.finance; import java.math.BigDecimal; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/finance/model/UserRecharge.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/finance/UserRecharge.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/finance/model/UserRecharge.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/finance/UserRecharge.java index 64231430..714963f9 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/finance/model/UserRecharge.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/finance/UserRecharge.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.finance.model; +package com.zbkj.common.model.finance; import java.math.BigDecimal; import com.baomidou.mybatisplus.annotation.TableName; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/log/model/StoreProductLog.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/log/StoreProductLog.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/log/model/StoreProductLog.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/log/StoreProductLog.java index 987fe934..54f0874e 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/log/model/StoreProductLog.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/log/StoreProductLog.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.log.model; +package com.zbkj.common.model.log; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreOrder.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/order/StoreOrder.java similarity index 92% rename from crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreOrder.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/order/StoreOrder.java index 349504eb..40b39388 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreOrder.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/order/StoreOrder.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.store.model; +package com.zbkj.common.model.order; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -179,7 +179,7 @@ public class StoreOrder implements Serializable { @ApiModelProperty(value = "店员id") private Integer clerkId; - @ApiModelProperty(value = "支付渠道(0-微信公众号,1-微信小程序,2-H5,3-余额,4-微信AppIos,5-微信AppIos安卓)") + @ApiModelProperty(value = "支付渠道(0-微信公众号,1-微信小程序,2-H5,3-余额,4-微信AppIos,5-微信AppIos安卓,6-支付宝支付,7-支付宝app支付)") private Integer isChannel; @ApiModelProperty(value = "消息提醒") @@ -196,4 +196,16 @@ public class StoreOrder implements Serializable { @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/src/main/java/com/zbkj/crmeb/store/model/StoreOrderInfo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/order/StoreOrderInfo.java similarity index 60% rename from crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreOrderInfo.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/order/StoreOrderInfo.java index 605418b4..b5dcb708 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreOrderInfo.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/order/StoreOrderInfo.java @@ -1,10 +1,12 @@ -package com.zbkj.crmeb.store.model; +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; @@ -49,5 +51,45 @@ public class StoreOrderInfo implements Serializable { @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/src/main/java/com/zbkj/crmeb/store/model/StoreOrderStatus.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/order/StoreOrderStatus.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreOrderStatus.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/order/StoreOrderStatus.java index 37617ab9..494c2ae7 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreOrderStatus.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/order/StoreOrderStatus.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.store.model; +package com.zbkj.common.model.order; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreProduct.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProduct.java similarity index 95% rename from crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreProduct.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProduct.java index d6714b8e..de2053cc 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreProduct.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProduct.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.store.model; +package com.zbkj.common.model.product; import java.math.BigDecimal; @@ -109,7 +109,9 @@ public class StoreProduct implements Serializable { @ApiModelProperty(value = "是否包邮") private Boolean isPostage; -// @TableLogic + @ApiModelProperty(value = "是否回收站") + private Boolean isRecycle; + @ApiModelProperty(value = "是否删除") private Boolean isDel; @@ -158,6 +160,9 @@ public class StoreProduct implements Serializable { @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/src/main/java/com/zbkj/crmeb/store/model/StoreProductAttr.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductAttr.java similarity index 93% rename from crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreProductAttr.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductAttr.java index 5ad69439..20e85d54 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreProductAttr.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductAttr.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.store.model; +package com.zbkj.common.model.product; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; @@ -47,5 +47,6 @@ public class StoreProductAttr implements Serializable { @ApiModelProperty(value = "活动类型 0=商品,1=秒杀,2=砍价,3=拼团") private Integer type; - + @ApiModelProperty(value = "是否删除,0-否,1-是") + private Boolean isDel; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreProductAttrResult.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductAttrResult.java similarity index 82% rename from crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreProductAttrResult.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductAttrResult.java index b832eaaa..b80f7e46 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreProductAttrResult.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductAttrResult.java @@ -1,13 +1,14 @@ -package com.zbkj.crmeb.store.model; +package com.zbkj.common.model.product; 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; +import java.io.Serializable; + /** * 商品属性详情表 * +---------------------------------------------------------------------- @@ -29,17 +30,6 @@ public class StoreProductAttrResult implements Serializable { private static final long serialVersionUID=1L; - public StoreProductAttrResult() { - } - - public StoreProductAttrResult(Integer id,Integer productId, String result, Integer changeTime, Integer type) { - this.id = id; - this.productId = productId; - this.result = result; - this.changeTime = changeTime; - this.type = type; - } - @ApiModelProperty(value = "ID") private Integer id; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreProductAttrValue.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductAttrValue.java similarity index 96% rename from crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreProductAttrValue.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductAttrValue.java index f2a19122..5622ad7c 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreProductAttrValue.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductAttrValue.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.store.model; +package com.zbkj.common.model.product; import java.math.BigDecimal; @@ -93,5 +93,6 @@ public class StoreProductAttrValue implements Serializable { @ApiModelProperty(value = "产品属性值和属性名对应关系") private String attrValue; - + @ApiModelProperty(value = "是否删除,0-否,1-是") + private Boolean isDel; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreProductCate.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductCate.java similarity index 86% rename from crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreProductCate.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductCate.java index 94654999..c5ad84d1 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreProductCate.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductCate.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.store.model; +package com.zbkj.common.model.product; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.IdType; @@ -31,15 +31,6 @@ public class StoreProductCate implements Serializable { private static final long serialVersionUID=1L; - public StoreProductCate() { - } - - public StoreProductCate(Integer productId, Integer cateId, Integer addTime) { - this.productId = productId; - this.cateId = cateId; - this.addTime = addTime; - } - @TableId(value = "id", type = IdType.AUTO) private Integer id; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreProductCoupon.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductCoupon.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreProductCoupon.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductCoupon.java index 5bcc6c5b..4ca14a59 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreProductCoupon.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductCoupon.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.store.model; +package com.zbkj.common.model.product; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.IdType; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreProductDescription.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductDescription.java similarity index 85% rename from crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreProductDescription.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductDescription.java index 9157d2e9..0cfea4f9 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreProductDescription.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductDescription.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.store.model; +package com.zbkj.common.model.product; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; @@ -31,15 +31,6 @@ public class StoreProductDescription implements Serializable { private static final long serialVersionUID=1L; - public StoreProductDescription() { - } - - public StoreProductDescription(Integer productId, String description,Integer type) { - this.productId = productId; - this.description = description; - this.type = type; - } - @TableId(value = "id", type = IdType.AUTO) private Integer id; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreProductRelation.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductRelation.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreProductRelation.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductRelation.java index fb32a4cd..e659a275 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreProductRelation.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductRelation.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.store.model; +package com.zbkj.common.model.product; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreProductReply.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductReply.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreProductReply.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductReply.java index 9ebb3b51..cf35e3fa 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreProductReply.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductReply.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.store.model; +package com.zbkj.common.model.product; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreProductRule.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductRule.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreProductRule.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductRule.java index 6d7951c4..d0a90b49 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreProductRule.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProductRule.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.store.model; +package com.zbkj.common.model.product; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.IdType; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductCateSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/record/UserVisitRecord.java similarity index 68% rename from crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductCateSearchRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/record/UserVisitRecord.java index 66dfda49..0b2c4af9 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductCateSearchRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/record/UserVisitRecord.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.store.request; +package com.zbkj.common.model.record; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; @@ -10,10 +10,9 @@ import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import java.io.Serializable; -import java.util.Date; /** - * 商品分类辅助表 + * 用户访问记录表 * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -27,26 +26,23 @@ import java.util.Date; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@TableName("eb_store_product_cate") -@ApiModel(value="StoreProductCate对象", description="商品分类辅助表") -public class StoreProductCateSearchRequest implements Serializable { +@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 = "商品id") - private Integer productId; + @ApiModelProperty(value = "日期") + private String date; - @ApiModelProperty(value = "分类id") - private Integer cateId; + @ApiModelProperty(value = "用户uid") + private Integer uid; - @ApiModelProperty(value = "创建时间") - private Date createTime; - - @ApiModelProperty(value = "更新时间") - private Date updateTime; + @ApiModelProperty(value = "访问类型:1-首页,2-详情页,3-营销活动详情页,4-个人中心") + private Integer visitType; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/seckill/model/StoreSeckill.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/seckill/StoreSeckill.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/seckill/model/StoreSeckill.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/seckill/StoreSeckill.java index 5d3a9abb..8b4a6256 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/seckill/model/StoreSeckill.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/seckill/StoreSeckill.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.seckill.model; +package com.zbkj.common.model.seckill; import java.math.BigDecimal; import com.baomidou.mybatisplus.annotation.TableName; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/seckill/model/StoreSeckillManger.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/seckill/StoreSeckillManger.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/seckill/model/StoreSeckillManger.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/seckill/StoreSeckillManger.java index c12e33a6..7a353634 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/seckill/model/StoreSeckillManger.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/seckill/StoreSeckillManger.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.seckill.model; +package com.zbkj.common.model.seckill; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.IdType; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/sms/model/SmsRecord.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/sms/SmsRecord.java similarity index 82% rename from crmeb/src/main/java/com/zbkj/crmeb/sms/model/SmsRecord.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/sms/SmsRecord.java index afe93d67..2c275ce9 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/sms/model/SmsRecord.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/sms/SmsRecord.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.sms.model; +package com.zbkj.common.model.sms; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; @@ -33,21 +33,6 @@ public class SmsRecord implements Serializable { private static final long serialVersionUID=1L; - public SmsRecord() { - - } - - public SmsRecord(String uid, String phone, String content, String addIp, String template, Integer resultcode, Integer recordId, String message) { - this.uid = uid; - this.phone = phone; - this.content = content; - this.addIp = addIp; - this.template = template; - this.resultcode = resultcode; - this.recordId = recordId; - this.memo = message; - } - @ApiModelProperty(value = "短信发送记录编号") @TableId(value = "id", type = IdType.AUTO) private Integer id; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/model/WechatProgramPublicTemp.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/sms/SmsTemplate.java similarity index 62% rename from crmeb/src/main/java/com/zbkj/crmeb/wechat/model/WechatProgramPublicTemp.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/sms/SmsTemplate.java index afd935d0..2f53d852 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/model/WechatProgramPublicTemp.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/sms/SmsTemplate.java @@ -1,56 +1,65 @@ -package com.zbkj.crmeb.wechat.model; - -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; - -/** - * WechatProgramPublicTemp对象" - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@TableName("eb_wechat_program_public_temp") -@ApiModel(value="WechatProgramPublicTemp对象", description="") -public class WechatProgramPublicTemp implements Serializable { - - private static final long serialVersionUID=1L; - - @TableId(value = "id", type = IdType.AUTO) - private Integer id; - - @ApiModelProperty(value = "微信模板id") - private Integer tid; - - @ApiModelProperty(value = "模版标题") - private String title; - - @ApiModelProperty(value = "模版类型,2 为一次性订阅,3 为长期订阅") - private Integer type; - - @ApiModelProperty(value = "模版所属类目 id") - private Integer categoryId; - - @ApiModelProperty(value = "创建时间") - private Date createTime; - - @ApiModelProperty(value = "修改时间") - private Date updateTime; -} +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~2020 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/src/main/java/com/zbkj/crmeb/system/model/SystemAdmin.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemAdmin.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/system/model/SystemAdmin.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemAdmin.java index c78e3fb4..ecce579c 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/model/SystemAdmin.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemAdmin.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.system.model; +package com.zbkj.common.model.system; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/model/SystemAttachment.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemAttachment.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/system/model/SystemAttachment.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemAttachment.java index 5154b630..e321a094 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/model/SystemAttachment.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemAttachment.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.system.model; +package com.zbkj.common.model.system; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.IdType; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/model/SystemCity.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemCity.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/system/model/SystemCity.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemCity.java index 69c53d53..dba3167b 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/model/SystemCity.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemCity.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.system.model; +package com.zbkj.common.model.system; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.IdType; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/model/SystemConfig.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemConfig.java similarity index 85% rename from crmeb/src/main/java/com/zbkj/crmeb/system/model/SystemConfig.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemConfig.java index e5a7e7df..e2df8a58 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/model/SystemConfig.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemConfig.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.system.model; +package com.zbkj.common.model.system; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.IdType; @@ -33,17 +33,6 @@ public class SystemConfig implements Serializable { private static final long serialVersionUID=1L; - public SystemConfig() { - } - - public SystemConfig(String name, String title, Integer formId, String value, Boolean status) { - this.name = name; - this.title = title; - this.formId = formId; - this.value = value; - this.status = status; - } - @ApiModelProperty(value = "配置id") @TableId(value = "id", type = IdType.AUTO) private Integer id; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/model/SystemFormTemp.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemFormTemp.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/system/model/SystemFormTemp.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemFormTemp.java index fcfd605e..3f848a72 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/model/SystemFormTemp.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemFormTemp.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.system.model; +package com.zbkj.common.model.system; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.IdType; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/model/SystemGroup.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemGroup.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/system/model/SystemGroup.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemGroup.java index 1b1a3a4b..be80563e 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/model/SystemGroup.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemGroup.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.system.model; +package com.zbkj.common.model.system; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.IdType; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/model/SystemGroupData.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemGroupData.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/system/model/SystemGroupData.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemGroupData.java index 1496e262..bc52ad6e 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/model/SystemGroupData.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemGroupData.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.system.model; +package com.zbkj.common.model.system; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.IdType; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/model/WechatProgramMyTemp.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemMenu.java similarity index 59% rename from crmeb/src/main/java/com/zbkj/crmeb/wechat/model/WechatProgramMyTemp.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemMenu.java index 3678452c..26201a5e 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/model/WechatProgramMyTemp.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemMenu.java @@ -1,68 +1,76 @@ -package com.zbkj.crmeb.wechat.model; - -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~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@TableName("eb_wechat_program_my_temp") -@ApiModel(value="WechatProgramMyTemp对象", description="小程序我的模板") -public class WechatProgramMyTemp implements Serializable { - - private static final long serialVersionUID=1L; - - @TableId(value = "id", type = IdType.AUTO) - private Integer id; - - @ApiModelProperty(value = "微信模板id") - private Integer tid; - - @ApiModelProperty(value = "模版标题") - private String title; - - @ApiModelProperty(value = "模板关键字id,多个逗号分割") - private String kid; - - @ApiModelProperty(value = "场景描述") - private String sceneDesc; - - @ApiModelProperty(value = "微信模板id") - private String tempId; - - @ApiModelProperty(value = "扩展字段") - private String extra; - - @ApiModelProperty(value = "状态 0,禁用,1启用") - private Boolean status; - - @ApiModelProperty(value = "应用场景") - private String type; - - @ApiModelProperty(value = "创建时间") - private Date createTime; - - @ApiModelProperty(value = "更新时间") - private Date updateTime; -} +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~2020 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 00000000..11929e3f --- /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~2020 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 00000000..650f1a80 --- /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/src/main/java/com/zbkj/crmeb/system/model/SystemRole.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemRole.java similarity index 94% rename from crmeb/src/main/java/com/zbkj/crmeb/system/model/SystemRole.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemRole.java index 3e990939..bb3a7760 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/model/SystemRole.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemRole.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.system.model; +package com.zbkj.common.model.system; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; @@ -45,7 +45,7 @@ public class SystemRole implements Serializable { private Integer level; - @ApiModelProperty(value = "状态") + @ApiModelProperty(value = "状态:0-关闭,1-正常") private Boolean status; @ApiModelProperty(value = "创建时间") diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductRuleItemRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemRoleMenu.java similarity index 71% rename from crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductRuleItemRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemRoleMenu.java index 35fe3a7d..9d297d32 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductRuleItemRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemRoleMenu.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.store.request; +package com.zbkj.common.model.system; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; @@ -10,7 +10,7 @@ import lombok.experimental.Accessors; import java.io.Serializable; /** - * 商品规则值(规格)表 + * 角色菜单关联表 * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -24,15 +24,17 @@ import java.io.Serializable; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@TableName("eb_store_product_rule") -@ApiModel(value="StoreProductRuleItemRequest对象", description="商品规则值(规格)详情") -public class StoreProductRuleItemRequest implements Serializable { +@TableName("eb_system_role_menu") +@ApiModel(value="SystemRoleMenu对象", description="角色菜单关联表") +public class SystemRoleMenu implements Serializable { private static final long serialVersionUID=1L; - @ApiModelProperty(value = "标题") - private String title; + @ApiModelProperty(value = "角色id") + private Integer rid; + + @ApiModelProperty(value = "权限id") + private Integer menuId; + - @ApiModelProperty(value = "内容") - private String[] detail; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/model/SystemStore.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemStore.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/system/model/SystemStore.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemStore.java index 71203f52..befdd6bb 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/model/SystemStore.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemStore.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.system.model; +package com.zbkj.common.model.system; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.IdType; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/model/SystemStoreStaff.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemStoreStaff.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/system/model/SystemStoreStaff.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemStoreStaff.java index 9f74f650..a3f77951 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/model/SystemStoreStaff.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemStoreStaff.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.system.model; +package com.zbkj.common.model.system; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/model/SystemUserLevel.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemUserLevel.java similarity index 86% rename from crmeb/src/main/java/com/zbkj/crmeb/system/model/SystemUserLevel.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemUserLevel.java index e0897b52..5f8b9f23 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/model/SystemUserLevel.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SystemUserLevel.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.system.model; +package com.zbkj.common.model.system; import java.math.BigDecimal; import com.baomidou.mybatisplus.annotation.TableName; @@ -14,7 +14,7 @@ import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; /** - * 设置用户等级表 + * 用户等级表 * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -29,7 +29,7 @@ import lombok.experimental.Accessors; @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @TableName("eb_system_user_level") -@ApiModel(value="SystemUserLevel对象", description="设置用户等级表") +@ApiModel(value="SystemUserLevel对象", description="用户等级表") public class SystemUserLevel implements Serializable { private static final long serialVersionUID=1L; @@ -50,17 +50,11 @@ public class SystemUserLevel implements Serializable { private Integer grade; @ApiModelProperty(value = "享受折扣") - private BigDecimal discount; - - @ApiModelProperty(value = "会员卡背景") - private String image; + private Integer discount; @ApiModelProperty(value = "会员图标") private String icon; - @ApiModelProperty(value = "说明") - private String memo; - @ApiModelProperty(value = "是否删除.1=删除,0=未删除") private Boolean isDel; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/model/User.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/User.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/user/model/User.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/User.java index bec143a6..b8fd5cd8 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/model/User.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/User.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.user.model; +package com.zbkj.common.model.user; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; @@ -154,5 +154,6 @@ public class User implements Serializable { @ApiModelProperty(value = "是否关注公众号") private Boolean subscribe; - + @ApiModelProperty(value = "成为分销员时间") + private Date promoterTime; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/model/UserAddress.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserAddress.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/user/model/UserAddress.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserAddress.java index 01c1dfbc..ea8f5e40 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/model/UserAddress.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserAddress.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.user.model; +package com.zbkj.common.model.user; import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.TableName; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/model/UserBill.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserBill.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/user/model/UserBill.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserBill.java index 68926850..2fa412a5 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/model/UserBill.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserBill.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.user.model; +package com.zbkj.common.model.user; import java.math.BigDecimal; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/model/UserBrokerageRecord.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserBrokerageRecord.java similarity index 90% rename from crmeb/src/main/java/com/zbkj/crmeb/user/model/UserBrokerageRecord.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserBrokerageRecord.java index 3e43863e..1ab0c93c 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/model/UserBrokerageRecord.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserBrokerageRecord.java @@ -1,6 +1,7 @@ -package com.zbkj.crmeb.user.model; +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; @@ -77,5 +78,10 @@ public class UserBrokerageRecord implements Serializable { @ApiModelProperty(value = "更新时间") private Date updateTime; + @ApiModelProperty(value = "分销等级") + private Integer brokerageLevel; + @ApiModelProperty(value = "用户昵称") + @TableField(exist = false) + private String userName; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/request/UserBillSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserExperienceRecord.java similarity index 61% rename from crmeb/src/main/java/com/zbkj/crmeb/user/request/UserBillSearchRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserExperienceRecord.java index ad3c271b..616cff71 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/request/UserBillSearchRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserExperienceRecord.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.user.request; +package com.zbkj.common.model.user; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; @@ -10,10 +10,10 @@ import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import java.io.Serializable; -import java.math.BigDecimal; +import java.util.Date; /** - * 用户账单表 + * 用户经验记录表 * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -27,46 +27,48 @@ import java.math.BigDecimal; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@TableName("eb_user_bill") -@ApiModel(value="UserBill对象", description="用户账单表") -public class UserBillSearchRequest implements Serializable { +@TableName("eb_user_experience_record") +@ApiModel(value="UserExperienceRecord对象", description="用户经验记录表") +public class UserExperienceRecord implements Serializable { private static final long serialVersionUID=1L; - @ApiModelProperty(value = "用户账单id") + @ApiModelProperty(value = "记录id") @TableId(value = "id", type = IdType.AUTO) private Integer id; @ApiModelProperty(value = "用户uid") private Integer uid; - @ApiModelProperty(value = "关联id") + @ApiModelProperty(value = "关联id-orderNo,(sign,system默认为0)") private String linkId; - @ApiModelProperty(value = "0 = 支出 1 = 获得") - private Boolean pm; + @ApiModelProperty(value = "关联类型(order,sign,system)") + private String linkType; - @ApiModelProperty(value = "账单标题") + @ApiModelProperty(value = "类型:1-增加,2-扣减") + private Integer type; + + @ApiModelProperty(value = "标题") private String title; - @ApiModelProperty(value = "明细种类") - private String category; - - @ApiModelProperty(value = "明细类型") - private String type; - - @ApiModelProperty(value = "明细数字") - private BigDecimal number; + @ApiModelProperty(value = "经验") + private Integer experience; @ApiModelProperty(value = "剩余") - private BigDecimal balance; + private Integer balance; @ApiModelProperty(value = "备注") private String mark; - @ApiModelProperty(value = "添加时间") - private Integer addTime; + @ApiModelProperty(value = "状态:1-成功(保留字段)") + private Integer status; + + @ApiModelProperty(value = "添加时间") + private Date createTime; + + @ApiModelProperty(value = "更新时间") + private Date updateTime; + - @ApiModelProperty(value = "0 = 带确定 1 = 有效 -1 = 无效") - private Boolean status; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/model/UserGroup.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserGroup.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/user/model/UserGroup.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserGroup.java index c289a72b..7dde53ce 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/model/UserGroup.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserGroup.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.user.model; +package com.zbkj.common.model.user; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.IdType; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/model/UserIntegralRecord.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserIntegralRecord.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/user/model/UserIntegralRecord.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserIntegralRecord.java index 211878b9..d742eefe 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/model/UserIntegralRecord.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserIntegralRecord.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.user.model; +package com.zbkj.common.model.user; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/model/UserLevel.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserLevel.java similarity index 96% rename from crmeb/src/main/java/com/zbkj/crmeb/user/model/UserLevel.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserLevel.java index aa91e80e..7c4c9924 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/model/UserLevel.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserLevel.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.user.model; +package com.zbkj.common.model.user; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.IdType; @@ -59,7 +59,7 @@ public class UserLevel implements Serializable { private Boolean isDel; @ApiModelProperty(value = "享受折扣") - private BigDecimal discount; + private Integer discount; @ApiModelProperty(value = "创建时间") private Date updateTime; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/model/UserSign.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserSign.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/user/model/UserSign.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserSign.java index a65bb3f6..48ec154c 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/model/UserSign.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserSign.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.user.model; +package com.zbkj.common.model.user; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/model/UserTag.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserTag.java similarity index 94% rename from crmeb/src/main/java/com/zbkj/crmeb/user/model/UserTag.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserTag.java index f26f6583..8a5be608 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/model/UserTag.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserTag.java @@ -1,41 +1,41 @@ -package com.zbkj.crmeb.user.model; - -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~2020 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; - - -} +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~2020 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/src/main/java/com/zbkj/crmeb/user/model/UserToken.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserToken.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/user/model/UserToken.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserToken.java index e59c047b..316274e4 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/model/UserToken.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/UserToken.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.user.model; +package com.zbkj.common.model.user; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.IdType; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/model/TemplateMessage.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/wechat/TemplateMessage.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/wechat/model/TemplateMessage.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/wechat/TemplateMessage.java index f14c646b..67e91e32 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/model/TemplateMessage.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/wechat/TemplateMessage.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.wechat.model; +package com.zbkj.common.model.wechat; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.IdType; 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 00000000..50d31054 --- /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/src/main/java/com/zbkj/crmeb/article/request/ArticleSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/wechat/WechatExceptions.java similarity index 51% rename from crmeb/src/main/java/com/zbkj/crmeb/article/request/ArticleSearchRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/wechat/WechatExceptions.java index c17b189e..a4558c82 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/article/request/ArticleSearchRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/wechat/WechatExceptions.java @@ -1,19 +1,19 @@ -package com.zbkj.crmeb.article.request; +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 com.sun.org.apache.xpath.internal.operations.Bool; 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.Date; /** - * - * 文章管理 搜索Request + * 微信异常表 * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -27,30 +27,33 @@ import java.io.Serializable; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@ApiModel(value="ArticleSearchRequest对象", description="文章管理表") -public class ArticleSearchRequest implements Serializable { +@TableName("eb_wechat_exceptions") +@ApiModel(value="WechatExceptions对象", description="微信异常表") +public class WechatExceptions implements Serializable { private static final long serialVersionUID=1L; - @ApiModelProperty(value = "分类id", example = "") - private String cid; + @ApiModelProperty(value = "id") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; - @ApiModelProperty(value = "搜索关键字") - private String keywords; + @ApiModelProperty(value = "错误码") + private String errcode; - @ApiModelProperty(value = "是否有微信素材媒体id") - private Boolean isHaveMediaId = null; + @ApiModelProperty(value = "错误信息") + private String errmsg; - @ApiModelProperty(value = "是否热门(小程序)", example = "") - private Boolean isHot = null; + @ApiModelProperty(value = "回复数据") + private String data; - @ApiModelProperty(value = "是否轮播图(小程序)" , example = "") - private Boolean isBanner = null; + @ApiModelProperty(value = "备注") + private String remark; - @ApiModelProperty(value = "是否隐藏", example = "") - private Boolean hide = null; + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "更新时间") + private Date updateTime; - @ApiModelProperty(value = "状态" , example = "") - private Boolean status = null; } 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 00000000..53ebe3bd --- /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~2020 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/src/main/java/com/zbkj/crmeb/wechat/model/WechatQrcode.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/wechat/WechatQrcode.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/wechat/model/WechatQrcode.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/wechat/WechatQrcode.java index 2b2ddfc1..5581c93d 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/model/WechatQrcode.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/wechat/WechatQrcode.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.wechat.model; +package com.zbkj.common.model.wechat; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.IdType; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/model/WechatReply.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/wechat/WechatReply.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/wechat/model/WechatReply.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/model/wechat/WechatReply.java index e6f8562d..5d8d2c6e 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/model/WechatReply.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/wechat/WechatReply.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.wechat.model; +package com.zbkj.common.model.wechat; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.IdType; diff --git a/crmeb/src/main/java/com/common/CommonPage.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/page/CommonPage.java similarity index 91% rename from crmeb/src/main/java/com/common/CommonPage.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/page/CommonPage.java index c7d24602..6dca85dd 100644 --- a/crmeb/src/main/java/com/common/CommonPage.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/page/CommonPage.java @@ -1,8 +1,7 @@ -package com.common; +package com.zbkj.common.page; -import com.constants.Constants; +import com.zbkj.common.constants.Constants; import com.github.pagehelper.PageInfo; -import com.zbkj.crmeb.store.response.StoreProductResponse; import lombok.Data; import org.springframework.beans.BeanUtils; import org.springframework.data.domain.Page; @@ -73,7 +72,7 @@ public class CommonPage { } /** - * 对象A复制对象B的分页信息 //TODO 多次数据查询导致分页数据异常解决办法 + * 对象A复制对象B的分页信息 // 多次数据查询导致分页数据异常解决办法 */ public static PageInfo copyPageInfo(com.github.pagehelper.Page originPageInfo, List list) { PageInfo pageInfo = new PageInfo<>(list); @@ -82,7 +81,7 @@ public class CommonPage { } /** - * 对象A复制对象B的分页信息 //TODO 多次数据查询导致分页数据异常解决办法 + * 对象A复制对象B的分页信息 // 多次数据查询导致分页数据异常解决办法 */ public static PageInfo copyPageInfo(PageInfo originPageInfo, List list) { PageInfo pageInfo = new PageInfo<>(list); diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/request/AdminIntegralSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/AdminIntegralSearchRequest.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/user/request/AdminIntegralSearchRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/AdminIntegralSearchRequest.java index 317cddcc..6c3b7f7d 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/request/AdminIntegralSearchRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/AdminIntegralSearchRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.user.request; +package com.zbkj.common.request; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/article/request/ArticleRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ArticleRequest.java similarity index 91% rename from crmeb/src/main/java/com/zbkj/crmeb/article/request/ArticleRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ArticleRequest.java index b9d51f6e..719c4a68 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/article/request/ArticleRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ArticleRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.article.request; +package com.zbkj.common.request; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -8,6 +8,7 @@ import lombok.experimental.Accessors; import org.hibernate.validator.constraints.Length; import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; import java.io.Serializable; /** @@ -46,6 +47,7 @@ public class ArticleRequest implements Serializable { @ApiModelProperty(value = "文章图片", required = true) @NotBlank(message = "请上传文章图片") + @Length(max = 255, message = "文章图片名称最多255个字符") private String imageInput; @ApiModelProperty(value = "文章简介", required = true) @@ -63,16 +65,12 @@ public class ArticleRequest implements Serializable { @Length(max = 200, message = "文章分享简介最多200个字符") private String shareSynopsis; - @ApiModelProperty(value = "排序", example = "0", required = true) - private Integer sort; - - @ApiModelProperty(value = "原文链接") - private String url; - @ApiModelProperty(value = "是否热门(小程序)", example = "false") + @NotNull(message = "是否热门(小程序)不能为空") private Boolean isHot; @ApiModelProperty(value = "是否轮播图(小程序)" , example = "true") + @NotNull(message = "是否轮播图(小程序)不能为空") private Boolean isBanner; @ApiModelProperty(value = "文章内容", required = true) diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/IndexProductBannerResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ArticleSearchRequest.java similarity index 68% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/IndexProductBannerResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ArticleSearchRequest.java index a07171c9..a8993ba9 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/IndexProductBannerResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ArticleSearchRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.request; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -7,12 +7,10 @@ import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import java.io.Serializable; -import java.util.HashMap; -import java.util.List; /** * - * 顶部轮播图Response + * 文章管理 搜索Request * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -26,14 +24,15 @@ import java.util.List; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@ApiModel(value="IndexInfoResponse对象", description="用户登录返回数据") -public class IndexProductBannerResponse implements Serializable { +@ApiModel(value="ArticleSearchRequest对象", description="文章管理表") +public class ArticleSearchRequest implements Serializable { private static final long serialVersionUID=1L; - @ApiModelProperty(value = "顶部轮播图") - private List> banner; + @ApiModelProperty(value = "分类id") + private String cid; + + @ApiModelProperty(value = "搜索关键字") + private String keywords; - @ApiModelProperty(value = "商品") - private List list; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/request/BargainFrontRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/BargainFrontRequest.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/front/request/BargainFrontRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/BargainFrontRequest.java index 4a27b9d8..b92599ce 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/request/BargainFrontRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/BargainFrontRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.front.request; +package com.zbkj.common.request; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductAttrValueSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/BrokerageRecordRequest.java similarity index 63% rename from crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductAttrValueSearchRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/BrokerageRecordRequest.java index 421af726..14a0897a 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductAttrValueSearchRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/BrokerageRecordRequest.java @@ -1,17 +1,16 @@ -package com.zbkj.crmeb.store.request; +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.Min; import java.io.Serializable; /** - * 商品属性值表 + * 资金监控 * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -25,14 +24,14 @@ import java.io.Serializable; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@TableName("eb_store_product_attr_value") -@ApiModel(value="StoreProductAttrValue对象", description="商品属性值表") -public class StoreProductAttrValueSearchRequest implements Serializable { +@ApiModel(value="BrokerageRecordRequest对象", description="佣金记录请求对象") +public class BrokerageRecordRequest implements Serializable { - private static final long serialVersionUID=1L; + private static final long serialVersionUID = 3362714265772774491L; + + @ApiModelProperty(value = "类型:1-订单返佣,2-申请提现,3-提现失败,4-提现成功,5-佣金转余额") + @Range(min = 1, max = 5, message = "未知的类型") + private Integer type; - @ApiModelProperty(value = "商品ID") - @Min(value = 1, message = "请选择商品") - private Integer productId; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/request/CartNumRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/CartNumRequest.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/front/request/CartNumRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/CartNumRequest.java index 74776684..2b147d0c 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/request/CartNumRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/CartNumRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.front.request; +package com.zbkj.common.request; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/request/CartRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/CartRequest.java similarity index 78% rename from crmeb/src/main/java/com/zbkj/crmeb/front/request/CartRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/CartRequest.java index 0a0aee91..a52b6f38 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/request/CartRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/CartRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.front.request; +package com.zbkj.common.request; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -43,20 +43,4 @@ public class CartRequest { @Min(value = 1, message = "商品数量不能小于1") @Max(value = 99, message = "单个商品数量不能大于99") private Integer cartNum; - - @ApiModelProperty(value = "是否为立即购买", required = true) - @NotNull(message = "是否为立即购买不能为空") - private Boolean isNew; - - @ApiModelProperty(value = "拼团id") - private Integer combinationId; - - @ApiModelProperty(value = "秒杀商品ID") - private Integer seckillId; - - @ApiModelProperty(value = "砍价id") - private Integer bargainId; - - @ApiModelProperty(value = "团长拼团id") - private Integer pinkId; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/request/CartResetRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/CartResetRequest.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/front/request/CartResetRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/CartResetRequest.java index 8fc05cca..3f3725d2 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/request/CartResetRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/CartResetRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.front.request; +package com.zbkj.common.request; import io.swagger.annotations.Api; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/category/request/CategoryRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/CategoryRequest.java similarity index 94% rename from crmeb/src/main/java/com/zbkj/crmeb/category/request/CategoryRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/CategoryRequest.java index 3e4227e7..126d15d7 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/category/request/CategoryRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/CategoryRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.category.request; +package com.zbkj.common.request; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; @@ -8,6 +8,7 @@ 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; @@ -44,6 +45,7 @@ public class CategoryRequest implements Serializable { @ApiModelProperty(value = "分类名称") @NotBlank(message = "分类名称必须填写") + @Length(max = 50, message = "分类名称不能超过50个字符") private String name; @ApiModelProperty(value = "类型,类型,1 产品分类,2 附件分类,3 文章分类, 4 设置分类, 5 菜单分类, 6 配置分类, 7 秒杀配置") diff --git a/crmeb/src/main/java/com/zbkj/crmeb/category/request/CategorySearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/CategorySearchRequest.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/category/request/CategorySearchRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/CategorySearchRequest.java index 2f3a8289..28fd8e39 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/category/request/CategorySearchRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/CategorySearchRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.category.request; +package com.zbkj.common.request; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/vo/StoreProductRelationCountVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ComponentProductSearchRequest.java similarity index 67% rename from crmeb/src/main/java/com/zbkj/crmeb/store/vo/StoreProductRelationCountVo.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ComponentProductSearchRequest.java index 0b523ba1..a6f6e002 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/vo/StoreProductRelationCountVo.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ComponentProductSearchRequest.java @@ -1,6 +1,6 @@ -package com.zbkj.crmeb.store.vo; +package com.zbkj.common.request; + -import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -10,7 +10,7 @@ import lombok.experimental.Accessors; import java.io.Serializable; /** - * 商品点赞和收藏表 + * 组件商品列表搜索Request对象 * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -24,15 +24,14 @@ import java.io.Serializable; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@TableName("eb_store_product_relation") -@ApiModel(value="StoreProductRelationCountVo对象", description="商品点赞和收藏数量") -public class StoreProductRelationCountVo implements Serializable { +@ApiModel(value="ComponentProductSearchRequest对象", description="组件商品列表搜索Request对象") +public class ComponentProductSearchRequest implements Serializable { - private static final long serialVersionUID=1L; + private static final long serialVersionUID = -2196197495866986580L; @ApiModelProperty(value = "商品ID") - private Integer productId; + private Integer proId; - @ApiModelProperty(value = "数量") - private Integer count; + @ApiModelProperty(value = "模糊搜索内容,目前只支持商品名称") + private String search; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/request/CreateOrderRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/CreateOrderRequest.java similarity index 91% rename from crmeb/src/main/java/com/zbkj/crmeb/front/request/CreateOrderRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/CreateOrderRequest.java index b556a33c..de41d469 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/request/CreateOrderRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/CreateOrderRequest.java @@ -1,10 +1,11 @@ -package com.zbkj.crmeb.front.request; +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; @@ -36,6 +37,7 @@ public class CreateOrderRequest implements Serializable { @ApiModelProperty(value = "快递类型: 1-快递配送,2-到店自提") @NotNull(message = "快递类型不能为空") + @Range(min = 1, max = 2, message = "未知的快递类型") private Integer shippingType; @ApiModelProperty(value = "收货地址id") @@ -44,11 +46,11 @@ public class CreateOrderRequest implements Serializable { @ApiModelProperty(value = "优惠券编号") private Integer couponId; - @ApiModelProperty(value = "支付类型:weixin-微信支付,yue-余额支付") + @ApiModelProperty(value = "支付类型:weixin-微信支付,yue-余额支付,alipay-支付宝支付") @NotBlank(message = "支付类型不能为空") private String payType; - @ApiModelProperty(value = "支付渠道:weixinh5-微信H5支付,public-公众号支付,routine-小程序支付,weixinAppIos-微信appios支付,weixinAppAndroid-微信app安卓支付") + @ApiModelProperty(value = "支付渠道:weixinh5-微信H5支付,public-公众号支付,routine-小程序支付,weixinAppIos-微信appios支付,weixinAppAndroid-微信app安卓支付,alipay-支付宝支付,appAliPay-App支付宝支付") @NotBlank(message = "支付渠道不能为空") private String payChannel; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/express/request/ExpressSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ExpressSearchRequest.java similarity index 96% rename from crmeb/src/main/java/com/zbkj/crmeb/express/request/ExpressSearchRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ExpressSearchRequest.java index bea66727..9e4623b7 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/express/request/ExpressSearchRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ExpressSearchRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.express.request; +package com.zbkj.common.request; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/express/request/ExpressUpdateRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ExpressUpdateRequest.java similarity index 92% rename from crmeb/src/main/java/com/zbkj/crmeb/express/request/ExpressUpdateRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ExpressUpdateRequest.java index 483a2070..7085f155 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/express/request/ExpressUpdateRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ExpressUpdateRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.express.request; +package com.zbkj.common.request; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; @@ -51,9 +51,9 @@ public class ExpressUpdateRequest implements Serializable { @NotNull(message = "排序不能为空") private Integer sort; - @ApiModelProperty(value = "是否显示") - @NotNull(message = "是否显示不能为空") - private Boolean isShow; +// @ApiModelProperty(value = "是否显示") +// @NotNull(message = "是否显示不能为空") +// private Boolean isShow; @ApiModelProperty(value = "是否可用") @NotNull(message = "是否可用不能为空") diff --git a/crmeb/src/main/java/com/zbkj/crmeb/express/request/ExpressUpdateShowRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ExpressUpdateShowRequest.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/express/request/ExpressUpdateShowRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ExpressUpdateShowRequest.java index 136380ee..14c76359 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/express/request/ExpressUpdateShowRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ExpressUpdateShowRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.express.request; +package com.zbkj.common.request; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/finance/request/FundsMonitorRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/FundsMonitorRequest.java similarity index 78% rename from crmeb/src/main/java/com/zbkj/crmeb/finance/request/FundsMonitorRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/FundsMonitorRequest.java index 4b3f684c..d9c17b5a 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/finance/request/FundsMonitorRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/FundsMonitorRequest.java @@ -1,6 +1,7 @@ -package com.zbkj.crmeb.finance.request; +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; @@ -37,4 +38,8 @@ public class FundsMonitorRequest implements Serializable { @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/src/main/java/com/zbkj/crmeb/finance/request/FundsMonitorSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/FundsMonitorSearchRequest.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/finance/request/FundsMonitorSearchRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/FundsMonitorSearchRequest.java index dacea4db..f44c5b43 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/finance/request/FundsMonitorSearchRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/FundsMonitorSearchRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.finance.request; +package com.zbkj.common.request; import com.fasterxml.jackson.annotation.JsonIgnore; import io.swagger.annotations.ApiModel; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/request/GetProductReply.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/GetProductReply.java similarity index 96% rename from crmeb/src/main/java/com/zbkj/crmeb/front/request/GetProductReply.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/GetProductReply.java index 6c137b3b..77ba7cf5 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/request/GetProductReply.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/GetProductReply.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.front.request; +package com.zbkj.common.request; import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiOperation; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/request/IosBindingPhoneRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/IosBindingPhoneRequest.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/front/request/IosBindingPhoneRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/IosBindingPhoneRequest.java index 6742e17a..da39409a 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/request/IosBindingPhoneRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/IosBindingPhoneRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.front.request; +package com.zbkj.common.request; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/request/IosLoginRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/IosLoginRequest.java similarity index 89% rename from crmeb/src/main/java/com/zbkj/crmeb/front/request/IosLoginRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/IosLoginRequest.java index face5e04..a183defa 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/request/IosLoginRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/IosLoginRequest.java @@ -1,7 +1,5 @@ -package com.zbkj.crmeb.front.request; +package com.zbkj.common.request; -import com.constants.RegularConstants; -import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -9,7 +7,6 @@ import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import javax.validation.constraints.NotBlank; -import javax.validation.constraints.Pattern; /** * ios登录请求体 diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/request/LoginMobileRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/LoginMobileRequest.java similarity index 87% rename from crmeb/src/main/java/com/zbkj/crmeb/front/request/LoginMobileRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/LoginMobileRequest.java index 5ff69b2d..c8d0f40b 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/request/LoginMobileRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/LoginMobileRequest.java @@ -1,6 +1,6 @@ -package com.zbkj.crmeb.front.request; +package com.zbkj.common.request; -import com.constants.RegularConstants; +import com.zbkj.common.constants.RegularConstants; import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -34,11 +34,11 @@ public class LoginMobileRequest implements Serializable { @ApiModelProperty(value = "手机号", required = true) @NotBlank(message = "手机号不能为空") - @Pattern(regexp = RegularConstants.PHONE, message = "手机号码格式错误") + @Pattern(regexp = RegularConstants.PHONE_TWO, message = "手机号码格式错误") private String phone; @ApiModelProperty(value = "验证码", required = true) - @Pattern(regexp = RegularConstants.SMS_VALIDATE_CODE_NUM, message = "验证码格式错误,验证码必须为6位数字") + @Pattern(regexp = RegularConstants.VALIDATE_CODE_NUM_SIX, message = "验证码格式错误,验证码必须为6位数字") private String captcha; @ApiModelProperty(value = "推广人id") diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/request/LoginRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/LoginRequest.java similarity index 91% rename from crmeb/src/main/java/com/zbkj/crmeb/front/request/LoginRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/LoginRequest.java index 740fd514..50ced7bf 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/request/LoginRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/LoginRequest.java @@ -1,6 +1,6 @@ -package com.zbkj.crmeb.front.request; +package com.zbkj.common.request; -import com.constants.RegularConstants; +import com.zbkj.common.constants.RegularConstants; import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -34,7 +34,7 @@ public class LoginRequest implements Serializable { @ApiModelProperty(value = "手机号", required = true, example = "18888888") @NotBlank(message = "手机号不能为空") - @Pattern(regexp = RegularConstants.PHONE, message = "手机号码格式错误") + @Pattern(regexp = RegularConstants.PHONE_TWO, message = "手机号码格式错误") @JsonProperty(value = "account") private String phone; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/pass/request/MealCodeRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/MealCodeRequest.java similarity index 87% rename from crmeb/src/main/java/com/zbkj/crmeb/pass/request/MealCodeRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/MealCodeRequest.java index eb0ffe67..285cc4a7 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/pass/request/MealCodeRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/MealCodeRequest.java @@ -1,5 +1,6 @@ -package com.zbkj.crmeb.pass.request; +package com.zbkj.common.request; +import com.zbkj.common.annotation.StringContains; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -44,10 +45,12 @@ public class MealCodeRequest { @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/src/main/java/com/zbkj/crmeb/front/response/UserSpreadCommissionResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/NotificationInfoRequest.java similarity index 61% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/UserSpreadCommissionResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/NotificationInfoRequest.java index 6cb41d2d..44fba98f 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/UserSpreadCommissionResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/NotificationInfoRequest.java @@ -1,18 +1,17 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.request; -import com.zbkj.crmeb.user.model.UserBill; 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; -import java.util.Date; -import java.util.List; /** - * 推广佣金明细 + * 系统通知详情请求对象 * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -26,21 +25,17 @@ import java.util.List; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@ApiModel(value="UserSpreadCommissionResponse对象", description="推广佣金明细") -public class UserSpreadCommissionResponse implements Serializable { +@ApiModel(value="NotificationInfoRequest对象", description="系统通知详情请求对象") +public class NotificationInfoRequest implements Serializable { private static final long serialVersionUID=1L; - public UserSpreadCommissionResponse() {} - public UserSpreadCommissionResponse(String date, List list) { - this.date = date; - this.list = list; - } + @ApiModelProperty(value = "通知id") + @NotNull(message = "通知id不能为空") + private Integer id; - @ApiModelProperty(value = "月份") - private String date; - - @ApiModelProperty(value = "数据") - private List list; + @ApiModelProperty(value = "wechat-公众号模板消息,routine-小程序订阅消息,sms-短信") + @NotEmpty(message = "详情类型不能为空") + private String detailType; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/request/UserSignInfoRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/NotificationSearchRequest.java similarity index 62% rename from crmeb/src/main/java/com/zbkj/crmeb/front/request/UserSignInfoRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/NotificationSearchRequest.java index dafb6af8..879ed5e4 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/request/UserSignInfoRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/NotificationSearchRequest.java @@ -1,16 +1,16 @@ -package com.zbkj.crmeb.front.request; +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赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -24,19 +24,13 @@ import java.io.Serializable; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@ApiModel(value="UserSignInfoRequest对象", description="个人签到信息") -public class UserSignInfoRequest implements Serializable { +@ApiModel(value="NotificationSearchRequest对象", description="系统通知查询对象") +public class NotificationSearchRequest implements Serializable { private static final long serialVersionUID=1L; - - @ApiModelProperty(value = "是否统计签到|1=是,0=否") - private Boolean sign = false; - - @ApiModelProperty(value = "是否统计积分使用情况|1=是,0=否") - private Boolean integral = false; - - @ApiModelProperty(value = "是否统计签到和统计积分使用情况|1=是,0=否") - private Boolean all = false; + @ApiModelProperty(value = "发送类型(1:通知会员,2:通知平台)") + @Range(min = 1, max = 2, message = "未知的发送类型") + private Integer sendType; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/UserCenterOrderStatusNumResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/NotificationUpdateRequest.java similarity index 53% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/UserCenterOrderStatusNumResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/NotificationUpdateRequest.java index d26955f1..381cbade 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/UserCenterOrderStatusNumResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/NotificationUpdateRequest.java @@ -1,16 +1,17 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.request; -import com.zbkj.crmeb.user.model.User; 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赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -24,26 +25,23 @@ import java.io.Serializable; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@ApiModel(value="UserCenterOrderStatusNumResponse对象", description="个人中心 -- 订单状态数量") -public class UserCenterOrderStatusNumResponse implements Serializable { +@ApiModel(value="NotificationUpdateRequest对象", description="系统通知修改请求对象") +public class NotificationUpdateRequest implements Serializable { private static final long serialVersionUID=1L; - @ApiModelProperty(value = "未支付订单数量") - private int noBuy; + @ApiModelProperty(value = "通知id") + @NotNull(message = "通知id不能为空") + private Integer id; - @ApiModelProperty(value = "未发货订单数量") - private int noPostage; + @ApiModelProperty(value = "wechat-公众号模板消息,routine-小程序订阅消息,sms-短信") + @NotEmpty(message = "详情类型不能为空") + private String detailType; - @ApiModelProperty(value = "未收货订单数量") - private int noTake; + @ApiModelProperty(value = "模板id(wechat、routine)") + private String tempId; - @ApiModelProperty(value = "未评论订单数量") - private int noReply; - - @ApiModelProperty(value = "拼团的订单数量") - private int noPink; - - @ApiModelProperty(value = "退款的订单数量") - private int noRefund; + @ApiModelProperty(value = "状态,1-开启,2-关闭") + @NotNull(message = "状态不能为空") + private Integer status; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/pass/request/OnePassLoginRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/OnePassLoginRequest.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/pass/request/OnePassLoginRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/OnePassLoginRequest.java index 32d1a045..5c6c153e 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/pass/request/OnePassLoginRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/OnePassLoginRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.pass.request; +package com.zbkj.common.request; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/pass/request/OnePassRegisterRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/OnePassRegisterRequest.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/pass/request/OnePassRegisterRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/OnePassRegisterRequest.java index 5598dd6a..8f714d44 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/pass/request/OnePassRegisterRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/OnePassRegisterRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.pass.request; +package com.zbkj.common.request; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/pass/request/OnePassUpdateRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/OnePassUpdateRequest.java similarity index 88% rename from crmeb/src/main/java/com/zbkj/crmeb/pass/request/OnePassUpdateRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/OnePassUpdateRequest.java index 367d4159..53b2c3a1 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/pass/request/OnePassUpdateRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/OnePassUpdateRequest.java @@ -1,5 +1,6 @@ -package com.zbkj.crmeb.pass.request; +package com.zbkj.common.request; +import com.zbkj.common.constants.RegularConstants; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -7,6 +8,7 @@ import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import javax.validation.constraints.NotNull; +import javax.validation.constraints.Pattern; import java.io.Serializable; /** @@ -35,6 +37,7 @@ public class OnePassUpdateRequest implements Serializable { @ApiModelProperty(value = "手机号", required = true) @NotNull(message = "手机号不能为空") + @Pattern(regexp = RegularConstants.PHONE_TWO, message = "请填写正确的手机号") private String phone; @ApiModelProperty(value = "密码") diff --git a/crmeb/src/main/java/com/zbkj/crmeb/pass/request/OnePassUserRecordRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/OnePassUserRecordRequest.java similarity index 83% rename from crmeb/src/main/java/com/zbkj/crmeb/pass/request/OnePassUserRecordRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/OnePassUserRecordRequest.java index 23a69857..e1b9ece8 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/pass/request/OnePassUserRecordRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/OnePassUserRecordRequest.java @@ -1,11 +1,13 @@ -package com.zbkj.crmeb.pass.request; +package com.zbkj.common.request; -import com.constants.Constants; +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; @@ -31,9 +33,11 @@ public class OnePassUserRecordRequest { @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 + "") diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/request/OrderComputedPriceRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/OrderComputedPriceRequest.java similarity index 92% rename from crmeb/src/main/java/com/zbkj/crmeb/front/request/OrderComputedPriceRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/OrderComputedPriceRequest.java index 349145ea..ae8d540e 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/request/OrderComputedPriceRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/OrderComputedPriceRequest.java @@ -1,10 +1,11 @@ -package com.zbkj.crmeb.front.request; +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; @@ -39,6 +40,7 @@ public class OrderComputedPriceRequest { @ApiModelProperty(value = "快递类型: 1-快递配送,2-到店自提") @NotNull(message = "快递类型不能为空") + @Range(min = 1, max = 2, message = "未知的快递类型") private Integer shippingType; @ApiModelProperty(value = "是否使用积分") diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/request/OrderPayRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/OrderPayRequest.java similarity index 95% rename from crmeb/src/main/java/com/zbkj/crmeb/front/request/OrderPayRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/OrderPayRequest.java index b84207db..16887bc0 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/request/OrderPayRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/OrderPayRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.front.request; +package com.zbkj.common.request; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -38,7 +38,7 @@ public class OrderPayRequest { @NotNull(message = "支付类型不能为空") private String payType; - @ApiModelProperty(value = "支付渠道:weixinh5-微信H5支付,public-公众号支付,routine-小程序支付,weixinAppIos-微信appios支付,weixinAppAndroid-微信app安卓支付") + @ApiModelProperty(value = "支付渠道:weixinh5-微信H5支付,public-公众号支付,routine-小程序支付,weixinAppIos-微信appios支付,weixinAppAndroid-微信app安卓支付,alipay-支付包支付,appAliPay-App支付宝支付") @NotNull(message = "支付渠道不能为空") private String payChannel; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/request/OrderRefundApplyRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/OrderRefundApplyRequest.java similarity index 92% rename from crmeb/src/main/java/com/zbkj/crmeb/front/request/OrderRefundApplyRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/OrderRefundApplyRequest.java index f7be7489..df3999e7 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/request/OrderRefundApplyRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/OrderRefundApplyRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.front.request; +package com.zbkj.common.request; import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.annotations.ApiModel; @@ -6,6 +6,7 @@ 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; @@ -33,6 +34,7 @@ public class OrderRefundApplyRequest { @ApiModelProperty(value = "退款原因", required = true) @NotNull(message = "退款原因必须填写") + @Length(max = 255, message = "退款原因不能超过255个字符") private String text; @ApiModelProperty(value = "订单id", required = true) diff --git a/crmeb/src/main/java/com/common/PageParamRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/PageParamRequest.java similarity index 93% rename from crmeb/src/main/java/com/common/PageParamRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/PageParamRequest.java index 8563bfed..73d51ddd 100644 --- a/crmeb/src/main/java/com/common/PageParamRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/PageParamRequest.java @@ -1,6 +1,6 @@ -package com.common; +package com.zbkj.common.request; -import com.constants.Constants; +import com.zbkj.common.constants.Constants; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/request/PasswordRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/PasswordRequest.java similarity index 83% rename from crmeb/src/main/java/com/zbkj/crmeb/front/request/PasswordRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/PasswordRequest.java index 38e8b3ec..e07a8841 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/request/PasswordRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/PasswordRequest.java @@ -1,6 +1,6 @@ -package com.zbkj.crmeb.front.request; +package com.zbkj.common.request; -import com.constants.RegularConstants; +import com.zbkj.common.constants.RegularConstants; import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -33,8 +33,8 @@ public class PasswordRequest implements Serializable { private static final long serialVersionUID=1L; @ApiModelProperty(value = "手机号", required = true) - @Pattern(regexp = RegularConstants.PHONE, message = "手机号码格式错误") - @NotBlank + @NotBlank(message = "手机号不能为空") + @Pattern(regexp = RegularConstants.PHONE_TWO, message = "手机号码格式错误") @JsonProperty(value = "account") private String phone; @@ -43,7 +43,7 @@ public class PasswordRequest implements Serializable { private String password; @ApiModelProperty(value = "验证码", required = true) - @Pattern(regexp = RegularConstants.SMS_VALIDATE_CODE_NUM, message = "验证码格式错误,验证码必须为4位数字") + @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 00000000..b614172f --- /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~2020 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/src/main/java/com/zbkj/crmeb/front/request/PreOrderDetailRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/PreOrderDetailRequest.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/front/request/PreOrderDetailRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/PreOrderDetailRequest.java index 03b4c1bf..973ae7f1 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/request/PreOrderDetailRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/PreOrderDetailRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.front.request; +package com.zbkj.common.request; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/request/PreOrderRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/PreOrderRequest.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/front/request/PreOrderRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/PreOrderRequest.java index 665e6fe7..e2c3f07a 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/request/PreOrderRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/PreOrderRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.front.request; +package com.zbkj.common.request; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/request/ValidateCodeRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ProductListRequest.java similarity index 68% rename from crmeb/src/main/java/com/zbkj/crmeb/front/request/ValidateCodeRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ProductListRequest.java index a288bd70..37ce5ec7 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/request/ValidateCodeRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ProductListRequest.java @@ -1,16 +1,15 @@ -package com.zbkj.crmeb.front.request; -import com.constants.RegularConstants; +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.Pattern; import java.io.Serializable; /** - * 验证码类 + * 商品列表请求对象 * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -24,8 +23,15 @@ import java.io.Serializable; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@ApiModel(value="ValidateCodeRequest对象", description="发送手机验证码类") -public class ValidateCodeRequest implements Serializable { - @Pattern(regexp = RegularConstants.PHONE, message = "手机号码格式错误") - private String phone; +@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/src/main/java/com/zbkj/crmeb/store/request/StoreProductAttrItemRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ProductRankingRequest.java similarity index 51% rename from crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductAttrItemRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ProductRankingRequest.java index 9d5d9069..95351406 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductAttrItemRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ProductRankingRequest.java @@ -1,6 +1,6 @@ -package com.zbkj.crmeb.store.request; +package com.zbkj.common.request; -import com.baomidou.mybatisplus.annotation.TableName; +import com.zbkj.common.constants.Constants; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -11,7 +11,7 @@ import javax.validation.constraints.NotBlank; import java.io.Serializable; /** - * 商品属性表 + * 商品排行请求对象 * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -25,17 +25,22 @@ import java.io.Serializable; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@TableName("eb_store_product_attr") -@ApiModel(value="StoreProductAttrItemRequest对象", description="属性值") -public class StoreProductAttrItemRequest implements Serializable { +@ApiModel(value="ProductRankingRequest对象", description="商品排行请求对象") +public class ProductRankingRequest implements Serializable { - private static final long serialVersionUID=1L; + private static final long serialVersionUID = 3362714265772774491L; - @ApiModelProperty(value = "属性名称", example = "颜色") - @NotBlank(message = "请设置属性名称") - private String attrName; + @ApiModelProperty(value = "排序参数:pageviews-浏览量,collectNum-收藏数,addCartNum-加购数,salesNum-销量,salesAmount-销售额") + @NotBlank(message = "请选择排序参数") + private String sortKey; - @ApiModelProperty(value = "属性值, 多个逗号分割", example = "黑色,白色") - @NotBlank(message = "请设置属性名值") - private String attrValues; + @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/src/main/java/com/zbkj/crmeb/front/request/ProductRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ProductRequest.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/front/request/ProductRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ProductRequest.java index 7620b950..506b3cde 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/request/ProductRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ProductRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.front.request; +package com.zbkj.common.request; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/request/RegisterAppWxRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/RegisterAppWxRequest.java similarity index 90% rename from crmeb/src/main/java/com/zbkj/crmeb/front/request/RegisterAppWxRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/RegisterAppWxRequest.java index d43fc1e9..2dc8fda0 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/request/RegisterAppWxRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/RegisterAppWxRequest.java @@ -1,15 +1,11 @@ -package com.zbkj.crmeb.front.request; +package com.zbkj.common.request; -import com.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; /** diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/request/RegisterThirdUserRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/RegisterThirdUserRequest.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/user/request/RegisterThirdUserRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/RegisterThirdUserRequest.java index 0ff7ef87..84733866 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/request/RegisterThirdUserRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/RegisterThirdUserRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.user.request; +package com.zbkj.common.request; import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.annotations.ApiModel; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/request/RetailShopRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/RetailShopRequest.java similarity index 72% rename from crmeb/src/main/java/com/zbkj/crmeb/store/request/RetailShopRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/RetailShopRequest.java index 479acf20..d934d3a9 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/request/RetailShopRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/RetailShopRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.store.request; +package com.zbkj.common.request; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -30,11 +30,16 @@ public class RetailShopRequest { @ApiModelProperty(value = "是否启用分销:1-启用,0-禁止") @NotNull(message = "是否启用分销 不能为空") - private String brokerageFuncStatus; + private Integer brokerageFuncStatus; - @ApiModelProperty(value = "分销模式:1-指定分销,2-人人分销,3-满额分销") - @NotNull(message = "分销模式 不能为空") - private String storeBrokerageStatus; +// @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 = "一级返佣比例 不能为空") @@ -48,7 +53,7 @@ public class RetailShopRequest { @ApiModelProperty(value = "分销关系绑定:0-所有用户,1-新用户") @NotNull(message = "分销关系绑定 不能为空") - private String brokerageBindind; + private Integer brokerageBindind; @ApiModelProperty(value = "用户提现最低金额") @NotNull(message = "用户提现最低金额 不能为空") @@ -64,8 +69,9 @@ public class RetailShopRequest { @Min(value = 0, message = "冻结时间最少为0天") private Integer extractTime; -// @ApiModelProperty(value = "满额分销满足金额") -// @NotNull(message = "满额分销满足金额 不能为空") -// @DecimalMin(value = "0", message = "满额分销满足金额最小为0") -// private BigDecimal storeBrokeragePrice; + @ApiModelProperty(value = "是否展示分销气泡:0-展示,1-展示") + @NotNull(message = "是否展示分销气泡 不能为空") + @Range(min = 0, max = 1, message = "是否展示分销气泡只能选择0-1") + private Integer storeBrokerageIsBubble; + } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/request/RetailShopStairUserRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/RetailShopStairUserRequest.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/store/request/RetailShopStairUserRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/RetailShopStairUserRequest.java index 7b065155..4133f8d8 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/request/RetailShopStairUserRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/RetailShopStairUserRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.store.request; +package com.zbkj.common.request; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/common/SearchAndPageRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SearchAndPageRequest.java similarity index 94% rename from crmeb/src/main/java/com/common/SearchAndPageRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SearchAndPageRequest.java index e3395504..2d29b2d7 100644 --- a/crmeb/src/main/java/com/common/SearchAndPageRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SearchAndPageRequest.java @@ -1,6 +1,6 @@ -package com.common; +package com.zbkj.common.request; -import com.constants.Constants; +import com.zbkj.common.constants.Constants; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/pass/request/ServiceOpenRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ServiceOpenRequest.java similarity index 91% rename from crmeb/src/main/java/com/zbkj/crmeb/pass/request/ServiceOpenRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ServiceOpenRequest.java index fdcf9b13..ce1bb71e 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/pass/request/ServiceOpenRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ServiceOpenRequest.java @@ -1,5 +1,6 @@ -package com.zbkj.crmeb.pass.request; +package com.zbkj.common.request; +import com.zbkj.common.annotation.StringContains; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -32,6 +33,7 @@ public class ServiceOpenRequest { @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 = "短信签名,短信开通必填") diff --git a/crmeb/src/main/java/com/zbkj/crmeb/express/request/ShippingTemplatesFreeRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ShippingTemplatesFreeRequest.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/express/request/ShippingTemplatesFreeRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ShippingTemplatesFreeRequest.java index e7d37586..ac1601fa 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/express/request/ShippingTemplatesFreeRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ShippingTemplatesFreeRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.express.request; +package com.zbkj.common.request; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/express/request/ShippingTemplatesRegionRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ShippingTemplatesRegionRequest.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/express/request/ShippingTemplatesRegionRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ShippingTemplatesRegionRequest.java index b7f06bd7..8356fa69 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/express/request/ShippingTemplatesRegionRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ShippingTemplatesRegionRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.express.request; +package com.zbkj.common.request; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/express/request/ShippingTemplatesRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ShippingTemplatesRequest.java similarity index 90% rename from crmeb/src/main/java/com/zbkj/crmeb/express/request/ShippingTemplatesRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ShippingTemplatesRequest.java index 16ce150e..3fa39093 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/express/request/ShippingTemplatesRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ShippingTemplatesRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.express.request; +package com.zbkj.common.request; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; @@ -6,8 +6,10 @@ 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; @@ -36,6 +38,7 @@ public class ShippingTemplatesRequest implements Serializable { @ApiModelProperty(value = "模板名称", required = true) @NotBlank(message = "模板名称必须填写") + @Length(max = 200, message = "模板名称不能超过200个字符") private String name; @ApiModelProperty(value = "计费方式 1(按件数), 2(按重量),3(按体积)", example = "1", required = true) @@ -55,6 +58,7 @@ public class ShippingTemplatesRequest implements Serializable { @ApiModelProperty(value = "排序", example = "0") @NotNull(message = "排序数字必须填写") + @Min(value = 0, message = "排序最小为0") private Integer sort; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/express/request/ShippingTemplatesSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ShippingTemplatesSearchRequest.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/express/request/ShippingTemplatesSearchRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ShippingTemplatesSearchRequest.java index 7d8bc935..af5ac14d 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/express/request/ShippingTemplatesSearchRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/ShippingTemplatesSearchRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.express.request; +package com.zbkj.common.request; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; @@ -30,7 +30,6 @@ public class ShippingTemplatesSearchRequest implements Serializable { private static final long serialVersionUID=1L; - @ApiModelProperty(value = "模板名称") private String keywords; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/sms/request/SmsApplyTempRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SmsApplyTempRequest.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/sms/request/SmsApplyTempRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SmsApplyTempRequest.java index d53e3dea..6e49fda5 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/sms/request/SmsApplyTempRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SmsApplyTempRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.sms.request; +package com.zbkj.common.request; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/sms/request/SmsModifySignRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SmsModifySignRequest.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/sms/request/SmsModifySignRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SmsModifySignRequest.java index 263bfb47..38af62cd 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/sms/request/SmsModifySignRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SmsModifySignRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.sms.request; +package com.zbkj.common.request; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/bargain/request/StoreBargainRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreBargainRequest.java similarity index 59% rename from crmeb/src/main/java/com/zbkj/crmeb/bargain/request/StoreBargainRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreBargainRequest.java index 6707994f..9bf44179 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/bargain/request/StoreBargainRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreBargainRequest.java @@ -1,14 +1,11 @@ -package com.zbkj.crmeb.bargain.request; +package com.zbkj.common.request; -import com.baomidou.mybatisplus.annotation.TableName; -import com.zbkj.crmeb.store.model.StoreProductAttr; -import com.zbkj.crmeb.store.request.StoreProductAttrValueRequest; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; -import lombok.Value; import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Length; import javax.validation.constraints.*; import java.io.Serializable; @@ -30,37 +27,37 @@ import java.util.List; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@TableName("eb_store_bargain") @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 = "库存") - private Integer stock; - - @ApiModelProperty(value = "销量") - private Integer sales; - @ApiModelProperty(value = "砍价商品轮播图") -// @NotBlank(message = "砍价商品轮播图不能为空") + @NotBlank(message = "轮播图不能为空") + @Length(max = 2000, message = "砍价商品轮播图不能超过2000个字符") private String images; @ApiModelProperty(value = "砍价开启时间") @@ -72,6 +69,8 @@ public class StoreBargainRequest implements Serializable { private String stopTime; @ApiModelProperty(value = "砍价商品名称") + @NotBlank(message = "砍价商品名称不能为空") + @Length(max = 200, message = "砍价商品名称不能超过200个字符") private String storeName; @ApiModelProperty(value = "砍价金额") @@ -81,16 +80,18 @@ public class StoreBargainRequest implements Serializable { private BigDecimal minPrice; @ApiModelProperty(value = "购买数量限制") + @NotNull(message = "购买数量限制不能为空") @Min(value = 1, message = "购买数量限制必须大于0") private Integer num; - @ApiModelProperty(value = "用户每次砍价的最大金额") - private BigDecimal bargainMaxPrice; +// @ApiModelProperty(value = "用户每次砍价的最大金额") +// private BigDecimal bargainMaxPrice; - @ApiModelProperty(value = "用户每次砍价的最小金额") - private BigDecimal bargainMinPrice; +// @ApiModelProperty(value = "用户每次砍价的最小金额") +// private BigDecimal bargainMinPrice; @ApiModelProperty(value = "帮砍次数") + @NotNull(message = "帮砍次数不能为空") @Min(value = 1, message = "帮砍次数必须大于0") private Integer bargainNum; @@ -98,76 +99,30 @@ public class StoreBargainRequest implements Serializable { @NotNull(message = "砍价活动状态不能为空") private Boolean status; - @ApiModelProperty(value = "反多少积分") - private Integer giveIntegral; +// @ApiModelProperty(value = "砍价活动简介") +// @NotBlank(message = "砍价活动简介不能为空") +// private String info; - @ApiModelProperty(value = "砍价活动简介") - @NotBlank(message = "砍价活动简介不能为空") - private String info; - - @ApiModelProperty(value = "成本价") - private BigDecimal cost; - - @ApiModelProperty(value = "排序") - @NotNull(message = "排序不能为空") - private Integer sort; - - @ApiModelProperty(value = "是否推荐0不推荐1推荐") - private Boolean isHot; - - @ApiModelProperty(value = "是否删除 0未删除 1删除") - private Boolean isDel; - - @ApiModelProperty(value = "添加时间") - private Integer 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 = "砍价规则") +// private String rule; @ApiModelProperty(value = "运费模板ID") @NotNull(message = "运费模板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 = "砍价活动发起人数") -// @Size(min = 1, max = 9999, message = "砍价人数在1-9999之间") @Min(value = 2, message = "砍价人数最少两人") @Max(value = 9999, message = "砍价人数最多9999") private Integer peopleNum; @ApiModelProperty(value = "商品属性") - private List attr; + @NotEmpty(message = "商品属性不能为空") + private List attr; @ApiModelProperty(value = "商品属性详情") - private List attrValue; + @NotEmpty(message = "商品属性详情不能为空") + private List attrValue; @ApiModelProperty(value = "商品描述") private String content; - - @ApiModelProperty(value = "砍价商品名称") - @NotBlank(message = "砍价商品名称不能为空") - private String proName; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/bargain/request/StoreBargainSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreBargainSearchRequest.java similarity index 95% rename from crmeb/src/main/java/com/zbkj/crmeb/bargain/request/StoreBargainSearchRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreBargainSearchRequest.java index 523d9883..c3f6c86a 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/bargain/request/StoreBargainSearchRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreBargainSearchRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.bargain.request; +package com.zbkj.common.request; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; @@ -25,7 +25,6 @@ import java.math.BigDecimal; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@TableName("eb_store_bargain") @ApiModel(value="StoreBargain对象", description="砍价表") public class StoreBargainSearchRequest implements Serializable { diff --git a/crmeb/src/main/java/com/zbkj/crmeb/bargain/request/StoreBargainUserSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreBargainUserSearchRequest.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/bargain/request/StoreBargainUserSearchRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreBargainUserSearchRequest.java index 6c118c4e..8f6c3af0 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/bargain/request/StoreBargainUserSearchRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreBargainUserSearchRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.bargain.request; +package com.zbkj.common.request; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/combination/request/StoreCombinationRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreCombinationRequest.java similarity index 65% rename from crmeb/src/main/java/com/zbkj/crmeb/combination/request/StoreCombinationRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreCombinationRequest.java index 6857c907..d7ec7dfd 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/combination/request/StoreCombinationRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreCombinationRequest.java @@ -1,19 +1,16 @@ -package com.zbkj.crmeb.combination.request; +package com.zbkj.common.request; -import com.baomidou.mybatisplus.annotation.TableName; -import com.zbkj.crmeb.store.model.StoreProductAttr; -import com.zbkj.crmeb.store.request.StoreProductAttrValueRequest; 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.math.BigDecimal; import java.util.List; /** @@ -31,32 +28,32 @@ import java.util.List; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@TableName("eb_store_combination") -@ApiModel(value="StoreCombination对象", description="拼团商品表") +@ApiModel(value="StoreCombinationRequest对象", description="拼团商品请求对象") public class StoreCombinationRequest implements Serializable { private static final long serialVersionUID=1L; - @ApiModelProperty(value = "拼团商品ID") + @ApiModelProperty(value = "拼团商品ID|新增时不填,修改时必填") private Integer id; @ApiModelProperty(value = "商品id") @NotNull(message = "商品编号不能为空") + @Min(value = 1, message = "商品编号不能小于1") private Integer productId; - @ApiModelProperty(value = "商户id") - private Integer merId; - @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 = "参团人数") @@ -68,42 +65,10 @@ public class StoreCombinationRequest implements Serializable { // @NotNull(message = "拼团简介不能为空") 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 = "推荐") - @NotNull(message = "热门推荐不能为空") - private Boolean isHost; - @ApiModelProperty(value = "活动状态") @NotNull(message = "活动状态不能为空") 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 = "拼团开始时间") @NotNull(message = "开始时间不能为空") private String startTime; @@ -114,41 +79,22 @@ public class StoreCombinationRequest implements Serializable { @ApiModelProperty(value = "拼团订单有效时间(小时)") @NotNull(message = "拼团时效不能为空") + @Min(value = 1, message = "拼团订单有效时间不能小于1") private Integer effectiveTime; - @ApiModelProperty(value = "拼团商品成本") - private BigDecimal cost; - - @ApiModelProperty(value = "浏览量") - private Integer browse; - @ApiModelProperty(value = "单位名") @NotNull(message = "单位不能为空") + @Length(max = 32, message = "单位名不能超过32个字符") private String unitName; @ApiModelProperty(value = "运费模板ID") @NotNull(message = "运费模板不能为空") private Integer tempId; - @ApiModelProperty(value = "重量") - private BigDecimal weight; - - @ApiModelProperty(value = "体积") - private BigDecimal volume; - @ApiModelProperty(value = "购买数量") @Min(value = 1, message = "购买数量限制不能小于1") private Integer num; - @ApiModelProperty(value = "限购总数") - private Integer quota; - - @ApiModelProperty(value = "限量总数显示") - private Integer quotaShow; - - @ApiModelProperty(value = "原价") - private BigDecimal otPrice; - @ApiModelProperty(value = "单次购买数量") @Min(value = 1, message = "单次购买数量限制不能小于1") private Integer onceNum; @@ -158,10 +104,10 @@ public class StoreCombinationRequest implements Serializable { private Integer virtualRation; @ApiModelProperty(value = "商品属性") - private List attr; + private List attr; @ApiModelProperty(value = "商品属性详情") - private List attrValue; + private List attrValue; @ApiModelProperty(value = "商品描述") private String content; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/combination/request/StoreCombinationSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreCombinationSearchRequest.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/combination/request/StoreCombinationSearchRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreCombinationSearchRequest.java index 322de028..274900a5 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/combination/request/StoreCombinationSearchRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreCombinationSearchRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.combination.request; +package com.zbkj.common.request; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreCopyProductRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreCopyProductRequest.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreCopyProductRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreCopyProductRequest.java index 076a6f76..2761b7c4 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreCopyProductRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreCopyProductRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.store.request; +package com.zbkj.common.request; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/marketing/request/StoreCouponRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreCouponRequest.java similarity index 82% rename from crmeb/src/main/java/com/zbkj/crmeb/marketing/request/StoreCouponRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreCouponRequest.java index 78b5884e..2e1e0a1d 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/marketing/request/StoreCouponRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreCouponRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.marketing.request; +package com.zbkj.common.request; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; @@ -6,10 +6,10 @@ 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 javax.validation.constraints.*; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; @@ -37,10 +37,12 @@ public class StoreCouponRequest implements Serializable { @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) @@ -51,7 +53,7 @@ public class StoreCouponRequest implements Serializable { private Integer total; @ApiModelProperty(value = "使用类型 1 全场通用, 2 商品券, 3 品类券") - @Range(min = 1, max = 3, message = "请选择适用商品") + @Range(min = 1, max = 3, message = "请选择优惠券使用类型") private Integer useType; @ApiModelProperty(value = "主键id 商品id/分类id", required = true) @@ -61,6 +63,7 @@ public class StoreCouponRequest implements Serializable { private BigDecimal minPrice; @ApiModelProperty(value = "是否固定领取时间, 默认0 否, 1是", required = true) + @NotNull(message = "请选择领取是否限时") private Boolean isForever; @ApiModelProperty(value = "可领取开始时间") @@ -80,14 +83,19 @@ public class StoreCouponRequest implements Serializable { 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/src/main/java/com/zbkj/crmeb/marketing/request/StoreCouponSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreCouponSearchRequest.java similarity index 87% rename from crmeb/src/main/java/com/zbkj/crmeb/marketing/request/StoreCouponSearchRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreCouponSearchRequest.java index 0ef9c324..c153f783 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/marketing/request/StoreCouponSearchRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreCouponSearchRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.marketing.request; +package com.zbkj.common.request; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; @@ -42,10 +42,4 @@ public class StoreCouponSearchRequest implements Serializable { @ApiModelProperty(value = "状态(0:关闭,1:开启)") private Boolean status; - @ApiModelProperty(value = "是否删除 状态(0:否,1:是)") - private Boolean isDel; - - @ApiModelProperty(value = "所属商品id / 分类id") - private String primaryKey; - } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/marketing/request/StoreCouponUserRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreCouponUserRequest.java similarity index 90% rename from crmeb/src/main/java/com/zbkj/crmeb/marketing/request/StoreCouponUserRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreCouponUserRequest.java index 60b0d5d3..d072c36f 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/marketing/request/StoreCouponUserRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreCouponUserRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.marketing.request; +package com.zbkj.common.request; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; @@ -12,6 +12,7 @@ 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; @@ -38,8 +39,10 @@ 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/src/main/java/com/zbkj/crmeb/marketing/request/StoreCouponUserSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreCouponUserSearchRequest.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/marketing/request/StoreCouponUserSearchRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreCouponUserSearchRequest.java index 4c8758eb..d1620c7b 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/marketing/request/StoreCouponUserSearchRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreCouponUserSearchRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.marketing.request; +package com.zbkj.common.request; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreDateRangeSqlPram.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreDateRangeSqlPram.java similarity index 96% rename from crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreDateRangeSqlPram.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreDateRangeSqlPram.java index 47a4caa1..b0a385ad 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreDateRangeSqlPram.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreDateRangeSqlPram.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.store.request; +package com.zbkj.common.request; import lombok.Data; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/request/StoreNearRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreNearRequest.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/front/request/StoreNearRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreNearRequest.java index f083c1ce..b8b80d7a 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/request/StoreNearRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreNearRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.front.request; +package com.zbkj.common.request; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreOrderRefundRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreOrderRefundRequest.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreOrderRefundRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreOrderRefundRequest.java index f3bf0e90..f864c330 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreOrderRefundRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreOrderRefundRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.store.request; +package com.zbkj.common.request; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreOrderSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreOrderSearchRequest.java similarity index 77% rename from crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreOrderSearchRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreOrderSearchRequest.java index 8f4e5e1e..28ce11d2 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreOrderSearchRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreOrderSearchRequest.java @@ -1,12 +1,15 @@ -package com.zbkj.crmeb.store.request; +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; /** @@ -36,8 +39,11 @@ public class StoreOrderSearchRequest implements Serializable { 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-视频号订单") + @ApiModelProperty(value = "订单类型:0普通订单,1-视频号订单, 2-全部订单") + @NotNull(message = "订单类型不能为空") + @Range(min = 0, max = 2, message = "未知的订单类型") private Integer type; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreOrderSendRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreOrderSendRequest.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreOrderSendRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreOrderSendRequest.java index 3f62ff10..7dfaae11 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreOrderSendRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreOrderSendRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.store.request; +package com.zbkj.common.request; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreOrderStaticsticsRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreOrderStaticsticsRequest.java similarity index 94% rename from crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreOrderStaticsticsRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreOrderStaticsticsRequest.java index 3762e829..98bedfe4 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreOrderStaticsticsRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreOrderStaticsticsRequest.java @@ -1,6 +1,6 @@ -package com.zbkj.crmeb.store.request; +package com.zbkj.common.request; -import com.constants.Constants; +import com.zbkj.common.constants.Constants; import com.fasterxml.jackson.annotation.JsonIgnore; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreOrderStatusSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreOrderStatusSearchRequest.java similarity index 96% rename from crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreOrderStatusSearchRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreOrderStatusSearchRequest.java index bcc47268..05762f37 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreOrderStatusSearchRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreOrderStatusSearchRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.store.request; +package com.zbkj.common.request; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreOrderUpdatePriceRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreOrderUpdatePriceRequest.java similarity index 93% rename from crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreOrderUpdatePriceRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreOrderUpdatePriceRequest.java index d5bdeb8c..49cc16b1 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreOrderUpdatePriceRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreOrderUpdatePriceRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.store.request; +package com.zbkj.common.request; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; @@ -44,6 +44,4 @@ public class StoreOrderUpdatePriceRequest { @DecimalMin(value = "0.01", message = "实际支付金额不能小于1分") private BigDecimal payPrice; - @ApiModelProperty(value = "消费赚取积分") - private Integer gainIntegral; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/combination/request/StorePinkRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StorePinkRequest.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/combination/request/StorePinkRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StorePinkRequest.java index 795f6b35..77f2653b 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/combination/request/StorePinkRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StorePinkRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.combination.request; +package com.zbkj.common.request; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/combination/request/StorePinkSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StorePinkSearchRequest.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/combination/request/StorePinkSearchRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StorePinkSearchRequest.java index 9284f385..426e5998 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/combination/request/StorePinkSearchRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StorePinkSearchRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.combination.request; +package com.zbkj.common.request; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; 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 00000000..d809f7f1 --- /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~2020 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/src/main/java/com/zbkj/crmeb/store/request/StoreProductAttrRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductAttrAddRequest.java similarity index 63% rename from crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductAttrRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductAttrAddRequest.java index 2b560820..ca25d076 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductAttrRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductAttrAddRequest.java @@ -1,6 +1,7 @@ -package com.zbkj.crmeb.store.request; +package com.zbkj.common.request; -import com.baomidou.mybatisplus.annotation.TableName; +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; @@ -11,7 +12,7 @@ import java.io.Serializable; import java.util.List; /** - * 商品属性表 + * 商品属性添加对象 * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -25,15 +26,17 @@ import java.util.List; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@TableName("eb_store_product_attr") -@ApiModel(value="StoreProductAttrRequest对象", description="规格") -public class StoreProductAttrRequest implements Serializable { +@ApiModel(value="StoreProductAttrAddRequest对象", description="商品属性添加对象") +public class StoreProductAttrAddRequest implements Serializable { private static final long serialVersionUID=1L; - @ApiModelProperty(value = "规格名称") + @ApiModelProperty(value = "attrID|新增时不填,修改时必填") + private Integer id; + + @ApiModelProperty(value = "属性名", required = true) private String attrName; - @ApiModelProperty(value = "属性值") - private List attrValues; + @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 00000000..4383e11e --- /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~2020 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/src/main/java/com/zbkj/crmeb/store/request/StoreProductAttrValueRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductAttrValueRequest.java similarity index 93% rename from crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductAttrValueRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductAttrValueRequest.java index 941c8778..362949d7 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductAttrValueRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductAttrValueRequest.java @@ -1,6 +1,5 @@ -package com.zbkj.crmeb.store.request; +package com.zbkj.common.request; -import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -11,7 +10,6 @@ import javax.validation.constraints.Min; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; -import java.util.HashMap; import java.util.LinkedHashMap; /** @@ -29,7 +27,6 @@ import java.util.LinkedHashMap; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@TableName("eb_store_product_attr_value") @ApiModel(value="StoreProductAttrValueRequest对象", description="商品属性值表") public class StoreProductAttrValueRequest implements Serializable { @@ -96,7 +93,7 @@ public class StoreProductAttrValueRequest implements Serializable { private Date updateTime; @ApiModelProperty(value = "attrValue字段,前端传递后用作sku字段") - private LinkedHashMap attrValue; + private String attrValue; @ApiModelProperty(value = "是否选中-秒杀用") private Boolean checked; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductReplyAddRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductReplyAddRequest.java similarity index 86% rename from crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductReplyAddRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductReplyAddRequest.java index c0b56917..1c2d6401 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductReplyAddRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductReplyAddRequest.java @@ -1,18 +1,19 @@ -package com.zbkj.crmeb.store.request; +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 java.io.Serializable; /** - * 评论表 + * 评论添加对象 * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -26,8 +27,7 @@ import java.io.Serializable; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@TableName("eb_store_product_reply") -@ApiModel(value="StoreProductReplyAddRequest对象", description="评论表") +@ApiModel(value="StoreProductReplyAddRequest对象", description="评论添加对象") public class StoreProductReplyAddRequest implements Serializable { private static final long serialVersionUID=1L; @@ -46,15 +46,16 @@ public class StoreProductReplyAddRequest implements Serializable { private String unique; @ApiModelProperty(value = "商品分数", example = "5", required = true) - @Min(value = 1, message = "商品分数必须大于1") + @Range(min = 1, max = 5, message = "商品分数为1-5") private Integer productScore; @ApiModelProperty(value = "服务分数", example = "5", required = true) - @Min(value = 1, message = "服务分数必须大于1") + @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) diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductReplyCommentRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductReplyCommentRequest.java similarity index 79% rename from crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductReplyCommentRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductReplyCommentRequest.java index b4bee52d..f92bd616 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductReplyCommentRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductReplyCommentRequest.java @@ -1,18 +1,17 @@ -package com.zbkj.crmeb.store.request; +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.Min; import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; import java.io.Serializable; /** - * 评论表 + * 回复商品评论对象 * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -26,14 +25,14 @@ import java.io.Serializable; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@TableName("eb_store_product_reply") -@ApiModel(value="StoreProductReplyCommentRequest对象", description="评论表") +@ApiModel(value="StoreProductReplyCommentRequest对象", description="回复商品评论对象") public class StoreProductReplyCommentRequest implements Serializable { private static final long serialVersionUID=1L; - @ApiModelProperty(value = "管理员回复内容", required = true) - @NotBlank(message = "ids不能为空") - private String ids; + + @ApiModelProperty(value = "评论id", required = true) + @NotNull(message = "评论id不能为空") + private Integer ids; @ApiModelProperty(value = "管理员回复内容", required = true) @NotBlank(message = "请填写评论内容") diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductReplySearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductReplySearchRequest.java similarity index 66% rename from crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductReplySearchRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductReplySearchRequest.java index 902bd478..b126fc85 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductReplySearchRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductReplySearchRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.store.request; +package com.zbkj.common.request; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; @@ -10,7 +10,7 @@ import lombok.experimental.Accessors; import java.io.Serializable; /** - * 评论表 + * 商品评论查询对象 * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -24,27 +24,14 @@ import java.io.Serializable; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@TableName("eb_store_product_reply") -@ApiModel(value="StoreProductReply对象", description="评论表") +@ApiModel(value="StoreProductReplySearchRequest对象", description="商品评论查询对象") public class StoreProductReplySearchRequest implements Serializable { private static final long serialVersionUID=1L; - @ApiModelProperty(value = "用户ID, 多个逗号分割") - private String uid; - - @ApiModelProperty(value = "订单ID") - private Integer oid; - - @ApiModelProperty(value = "商品id, 多个逗号分割") - private String productId; - - @ApiModelProperty(value = "商品名称, 关键字,产品编号") + @ApiModelProperty(value = "商品名称") private String productSearch; - @ApiModelProperty(value = "0未删除1已删除") - private Boolean isDel; - @ApiModelProperty(value = "0未回复1已回复") private Boolean isReply; @@ -53,10 +40,4 @@ public class StoreProductReplySearchRequest implements Serializable { @ApiModelProperty(value = "时间区间") private String dateLimit; - - @ApiModelProperty(value = "类型") - private int type; - - @ApiModelProperty(value = "星数") - private int star = 0; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductRequest.java similarity index 96% rename from crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductRequest.java index 5c8d659b..1536497b 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductRequest.java @@ -1,9 +1,7 @@ -package com.zbkj.crmeb.store.request; +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.zbkj.crmeb.store.model.StoreProductAttr; +import com.zbkj.common.model.product.StoreProductAttr; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductRuleRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductRuleRequest.java similarity index 83% rename from crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductRuleRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductRuleRequest.java index ffa2ee07..2dfcd8f0 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductRuleRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductRuleRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.store.request; +package com.zbkj.common.request; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; @@ -6,7 +6,9 @@ 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; @@ -35,8 +37,11 @@ public class StoreProductRuleRequest implements Serializable { 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/src/main/java/com/zbkj/crmeb/store/request/StoreProductRuleSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductRuleSearchRequest.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductRuleSearchRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductRuleSearchRequest.java index 3b0e1ec3..d4c00a55 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductRuleSearchRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductRuleSearchRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.store.request; +package com.zbkj.common.request; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductSearchRequest.java similarity index 74% rename from crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductSearchRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductSearchRequest.java index 011cdca9..273a61ac 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductSearchRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductSearchRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.store.request; +package com.zbkj.common.request; import com.baomidou.mybatisplus.annotation.TableName; import com.sun.org.apache.xpath.internal.operations.Bool; @@ -7,6 +7,7 @@ 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.Max; import javax.validation.constraints.Min; @@ -36,9 +37,8 @@ public class StoreProductSearchRequest implements Serializable { private static final long serialVersionUID=1L; @ApiModelProperty(value = "类型(1:出售中(已上架),2:仓库中(未上架),3:已售罄,4:警戒库存,5:回收站)") - @NotNull - @Min(value = 1, message = "类型不能小于1") - @Max(value = 5, message = "类型不能大于5") + @NotNull(message = "商品类型不能为空") + @Range(min = 1, max = 5, message = "未知的商品类型") private int type; @ApiModelProperty(value = "分类ID, 多个逗号分隔") @@ -47,21 +47,4 @@ public class StoreProductSearchRequest implements Serializable { @ApiModelProperty(value = "关键字搜索, 支持(商品名称, 商品简介, 关键字, 商品条码)") private String keywords; - @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 Boolean isGood; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductStockRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductStockRequest.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductStockRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductStockRequest.java index ad7c40ef..5a539b29 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductStockRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductStockRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.store.request; +package com.zbkj.common.request; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; 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 00000000..f6572172 --- /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~2020 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/src/main/java/com/zbkj/crmeb/seckill/request/StoreSeckillMangerRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreSeckillMangerRequest.java similarity index 80% rename from crmeb/src/main/java/com/zbkj/crmeb/seckill/request/StoreSeckillMangerRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreSeckillMangerRequest.java index 37668475..bdb6dab8 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/seckill/request/StoreSeckillMangerRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreSeckillMangerRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.seckill.request; +package com.zbkj.common.request; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; @@ -8,6 +8,8 @@ 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; @@ -30,10 +32,13 @@ import java.util.Date; @Accessors(chain = true) @ApiModel(value="StoreSeckillMangerRequest对象", description="") public class StoreSeckillMangerRequest { - @TableId(value = "id", type = IdType.AUTO) + + @ApiModelProperty(value = "秒杀配置id") private Integer id; - @ApiModelProperty(value = "秒杀名称") + @ApiModelProperty(value = "秒杀时段名称") + @NotBlank(message = "秒杀时段名称不能为空") + @Length(max = 255, message = "秒杀时段名称不能超过255个字符") private String name; // @ApiModelProperty(value = "秒杀开始时间段") @@ -50,12 +55,15 @@ public class StoreSeckillMangerRequest { 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已删除") diff --git a/crmeb/src/main/java/com/zbkj/crmeb/seckill/request/StoreSeckillMangerSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreSeckillMangerSearchRequest.java similarity index 69% rename from crmeb/src/main/java/com/zbkj/crmeb/seckill/request/StoreSeckillMangerSearchRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreSeckillMangerSearchRequest.java index ea59e0f1..38ce11f7 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/seckill/request/StoreSeckillMangerSearchRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreSeckillMangerSearchRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.seckill.request; +package com.zbkj.common.request; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; @@ -31,28 +31,10 @@ import java.util.Date; @TableName("StoreSeckillMangerSearchRequest") @ApiModel(value="StoreSeckillMangerSearchRequest", description="商品秒杀配置") public class StoreSeckillMangerSearchRequest { - @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 = "秒杀结束时间段") -// @NotBlank(message = "秒杀时间段不能为空") - private String time; // 接收参数一个字段,入库时分割为startTime/endTime - - @ApiModelProperty(value = "排序") - private Integer sort; - @ApiModelProperty(value = "状态 0=关闭 1=开启") private Integer status; - - @ApiModelProperty(value = "0未删除1已删除") - private Boolean isDel; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/seckill/request/StoreSeckillSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreSeckillSearchRequest.java similarity index 96% rename from crmeb/src/main/java/com/zbkj/crmeb/seckill/request/StoreSeckillSearchRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreSeckillSearchRequest.java index 64180cea..82fc1fbd 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/seckill/request/StoreSeckillSearchRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/StoreSeckillSearchRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.seckill.request; +package com.zbkj.common.request; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemAdminAddRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemAdminAddRequest.java similarity index 68% rename from crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemAdminAddRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemAdminAddRequest.java index 431a580a..8245309b 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemAdminAddRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemAdminAddRequest.java @@ -1,15 +1,17 @@ -package com.zbkj.crmeb.system.request; +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.Max; -import javax.validation.constraints.Min; -import javax.validation.constraints.NotNull; +import javax.validation.constraints.*; import java.io.Serializable; /** @@ -35,30 +37,31 @@ public class SystemAdminAddRequest implements Serializable { @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 = "menus_id不能为空") + @ApiModelProperty(value = "后台管理员角色(menus_id)", required = true) + @NotNull(message = "后台管理员角色不能为空") + @Length(max = 128, message = "角色组合长度不能超过128个字符") private String roles; - @ApiModelProperty(value = "后台管理员级别", required = true) - @Min(value=0, message = "管理员级别不能小于0") - private Integer level; - @ApiModelProperty(value = "后台管理员状态 1有效0无效", required = true) @NotNull(message = "status 字段不能为空") - @Min(value=0, message = "不能小于0") - @Max(value = 1, message = "不能大于1") + @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/src/main/java/com/zbkj/crmeb/store/response/StoreProductAttrValueItemResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemAdminLoginCaptchaRequest.java similarity index 68% rename from crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreProductAttrValueItemResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemAdminLoginCaptchaRequest.java index 9054ec21..7748bfbf 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreProductAttrValueItemResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemAdminLoginCaptchaRequest.java @@ -1,11 +1,10 @@ -package com.zbkj.crmeb.store.response; +package com.zbkj.common.request; import io.swagger.annotations.ApiModelProperty; -import io.swagger.annotations.ApiOperation; import lombok.Data; /** - * h5端使用 attrValueItem + * PC登录请求对象 行为验证码 * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -17,11 +16,17 @@ import lombok.Data; * +---------------------------------------------------------------------- */ @Data -public class StoreProductAttrValueItemResponse { +public class SystemAdminLoginCaptchaRequest { + + @ApiModelProperty(required = true) + String captchaVerification; + + @ApiModelProperty(required = true) + String token; + + @ApiModelProperty(required = true) + String secretKey; - @ApiModelProperty(value = "属性名称") - private String attr; - @ApiModelProperty(value = "优惠券可用状态") - private boolean check;// 优惠券可用状态 } + diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemAdminLoginRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemAdminLoginRequest.java similarity index 89% rename from crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemAdminLoginRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemAdminLoginRequest.java index 2640a826..36bb4993 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemAdminLoginRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemAdminLoginRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.system.request; +package com.zbkj.common.request; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -22,11 +22,12 @@ import javax.validation.constraints.NotEmpty; 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) + @Length(min = 6, max = 30 ,message = "密码长度在6-30个字符") private String pwd; @ApiModelProperty(value = "key", required = true) @@ -36,7 +37,4 @@ public class SystemAdminLoginRequest { @ApiModelProperty(value = "code", required = true) @NotEmpty(message = "验证码 不能为空") private String code; - - @ApiModelProperty(value = "微信授权code") - private String wxCode; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/request/TemplateMessageRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemAdminRequest.java similarity index 64% rename from crmeb/src/main/java/com/zbkj/crmeb/wechat/request/TemplateMessageRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemAdminRequest.java index 0d62da36..e13e4777 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/request/TemplateMessageRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemAdminRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.wechat.request; +package com.zbkj.common.request; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; @@ -9,8 +9,11 @@ import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; +import java.io.Serializable; +import java.util.Date; + /** - * 微信模板 + * 后台管理员表 * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -24,18 +27,17 @@ import lombok.experimental.Accessors; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@ApiModel(value="TemplateMessageRequest对象", description="微信模板") -public class TemplateMessageRequest { +@ApiModel(value="SystemAdminRequest对象", description="后台管理员请求对象") +public class SystemAdminRequest implements Serializable { - @ApiModelProperty(value = "模板编号") - private String tempKey; + private static final long serialVersionUID=1L; - @ApiModelProperty(value = "模板名") - private String name; + @ApiModelProperty(value = "后台管理员姓名") + private String realName; - @ApiModelProperty(value = "回复内容") - private String content; + @ApiModelProperty(value = "后台管理员权限(menus_id)") + private String roles; - @ApiModelProperty(value = "模板ID") - private String tempId; + @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 00000000..715c9800 --- /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~2020 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/src/main/java/com/zbkj/crmeb/system/request/SystemAttachmentMoveRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemAttachmentMoveRequest.java similarity index 89% rename from crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemAttachmentMoveRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemAttachmentMoveRequest.java index dc3987d0..00287302 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemAttachmentMoveRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemAttachmentMoveRequest.java @@ -1,9 +1,10 @@ -package com.zbkj.crmeb.system.request; +package com.zbkj.common.request; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; /** * 系统附件移动Request对象 @@ -22,6 +23,7 @@ public class SystemAttachmentMoveRequest { @ApiModelProperty(value = "父级id") + @NotNull(message = "父级id不能为空") private Integer pid; @ApiModelProperty(value = "附件id") diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemAttachmentRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemAttachmentRequest.java similarity index 90% rename from crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemAttachmentRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemAttachmentRequest.java index 7e3dc6c5..06fb2942 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemAttachmentRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemAttachmentRequest.java @@ -1,7 +1,5 @@ -package com.zbkj.crmeb.system.request; +package com.zbkj.common.request; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -23,7 +21,6 @@ import java.util.Date; public class SystemAttachmentRequest { private static final long serialVersionUID=1L; - @TableId(value = "att_id", type = IdType.AUTO) private Integer attId; @ApiModelProperty(value = "附件名称") diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemCityRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemCityRequest.java similarity index 87% rename from crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemCityRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemCityRequest.java index 8b99907a..1b5b42a4 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemCityRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemCityRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.system.request; +package com.zbkj.common.request; import com.baomidou.mybatisplus.annotation.TableName; @@ -7,7 +7,9 @@ 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; @@ -39,6 +41,8 @@ public class SystemCityRequest implements Serializable { private Integer parentId; @ApiModelProperty(value = "名称") + @NotNull(message = "城市名称不能为空") + @Length(max = 100, message = "城市名称不能超过100个字符") private String name; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemCitySearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemCitySearchRequest.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemCitySearchRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemCitySearchRequest.java index e0c3e950..c10c1699 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemCitySearchRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemCitySearchRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.system.request; +package com.zbkj.common.request; import com.baomidou.mybatisplus.annotation.TableName; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemConfigRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemConfigAdminRequest.java similarity index 54% rename from crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemConfigRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemConfigAdminRequest.java index c952eda5..dc802204 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemConfigRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemConfigAdminRequest.java @@ -1,19 +1,17 @@ -package com.zbkj.crmeb.system.request; +package com.zbkj.common.request; -import com.baomidou.mybatisplus.annotation.TableName; -import com.zbkj.crmeb.system.vo.SystemConfigFormVo; 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; /** - * 配置表 + * 系统配置请求对象 * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -27,35 +25,32 @@ import java.io.Serializable; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@ApiModel(value="SystemConfigRequest对象", description="配置表") -public class SystemConfigRequest implements Serializable { +@ApiModel(value="SystemConfigAdminRequest对象", description="系统配置请求对象") +public class SystemConfigAdminRequest implements Serializable { private static final long serialVersionUID=1L; - @ApiModelProperty(value = "字段名称", required = true) - @NotBlank(message = "请填写字段名称") + @ApiModelProperty(value = "配置id") + @NotNull(message = "配置id不能为空") + private Integer id; + + @ApiModelProperty(value = "字段名称") + @NotBlank(message = "字段名称不能为空") private String name; - @ApiModelProperty(value = "父类id") - @Min(value = 0, message = "请选择分类") - private Integer pid; + @ApiModelProperty(value = "字段提示文字") + @NotBlank(message = "字段提示文字不能为空") + private String title; - @ApiModelProperty(value = "分组id", example = "0") - private Integer groupId; - - @ApiModelProperty(value = "应用类型") - @Min(value = 0, message = "请选择应用类型") - private Integer type; + @ApiModelProperty(value = "表单id") + @NotNull(message = "表单id不能为空") + private Integer formId; @ApiModelProperty(value = "值") - private SystemConfigFormVo value; - - @ApiModelProperty(value = "配置简介") - private String info; + @NotBlank(message = "值不能为空") + private String value; @ApiModelProperty(value = "是否隐藏") + @NotNull(message = "状态不能为空") private Boolean status; - - @ApiModelProperty(value = "配置简介") - private String desc; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemFormCheckRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemFormCheckRequest.java similarity index 92% rename from crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemFormCheckRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemFormCheckRequest.java index 091c4210..4bcbcb4e 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemFormCheckRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemFormCheckRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.system.request; +package com.zbkj.common.request; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -6,7 +6,6 @@ import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; -import javax.validation.Valid; import javax.validation.constraints.Min; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.Size; @@ -14,7 +13,7 @@ import java.io.Serializable; import java.util.List; /** - * 配置表 + * 整体保存表单数据 * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -31,7 +30,7 @@ import java.util.List; @ApiModel(value="SystemFormCheckRequest对象", description="整体保存表单数据") public class SystemFormCheckRequest implements Serializable { - private static final long serialVersionUID=1L; + private static final long serialVersionUID = 1L; @ApiModelProperty(value = "表单名称", required = true) @Min(value = 0, message = "请选择表单") @@ -43,12 +42,9 @@ public class SystemFormCheckRequest implements Serializable { @ApiModelProperty(value = "状态(1:开启;0:关闭;)") private Boolean status; - - @Valid @ApiModelProperty(value = "字段值列表", required = true) @NotEmpty(message = "fields 至少要有一组数据") @Size(min = 1, message = "fields 至少要有一组数据") private List fields; - } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemFormItemCheckRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemFormItemCheckRequest.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemFormItemCheckRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemFormItemCheckRequest.java index 95eb5f5e..8e1de003 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemFormItemCheckRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemFormItemCheckRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.system.request; +package com.zbkj.common.request; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemFormTempRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemFormTempRequest.java similarity index 88% rename from crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemFormTempRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemFormTempRequest.java index ab945486..a0834c05 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemFormTempRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemFormTempRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.system.request; +package com.zbkj.common.request; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; @@ -8,6 +8,7 @@ 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; @@ -37,10 +38,12 @@ public class SystemFormTempRequest implements Serializable { @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) diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemFormTempSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemFormTempSearchRequest.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemFormTempSearchRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemFormTempSearchRequest.java index 5a96bc7f..28a4fcdd 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemFormTempSearchRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemFormTempSearchRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.system.request; +package com.zbkj.common.request; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemGroupDataRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemGroupDataRequest.java similarity index 86% rename from crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemGroupDataRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemGroupDataRequest.java index 4726909f..f130b911 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemGroupDataRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemGroupDataRequest.java @@ -1,9 +1,6 @@ -package com.zbkj.crmeb.system.request; +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.zbkj.crmeb.system.model.SystemFormTemp; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -11,7 +8,6 @@ import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import java.io.Serializable; -import java.util.Date; /** * 组合数据详情表 diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemGroupDataSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemGroupDataSearchRequest.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemGroupDataSearchRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemGroupDataSearchRequest.java index afc69807..ee6654b3 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemGroupDataSearchRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemGroupDataSearchRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.system.request; +package com.zbkj.common.request; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemGroupRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemGroupRequest.java similarity index 86% rename from crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemGroupRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemGroupRequest.java index e9878b06..154be65a 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemGroupRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemGroupRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.system.request; +package com.zbkj.common.request; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; @@ -8,6 +8,7 @@ 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; @@ -34,9 +35,11 @@ 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") diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemGroupSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemGroupSearchRequest.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemGroupSearchRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemGroupSearchRequest.java index 22595eff..f75e1cc4 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemGroupSearchRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemGroupSearchRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.system.request; +package com.zbkj.common.request; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; 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 00000000..680b8c35 --- /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/src/main/java/com/zbkj/crmeb/wechat/vo/TemplateMessageIndustryItemVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemMenuSearchRequest.java similarity index 57% rename from crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/TemplateMessageIndustryItemVo.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemMenuSearchRequest.java index 26f4bb90..a028da28 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/TemplateMessageIndustryItemVo.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemMenuSearchRequest.java @@ -1,13 +1,12 @@ -package com.zbkj.crmeb.wechat.vo; +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; /** - * 微信模板所属行业详情 + * 菜单搜索Request对象 * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -19,14 +18,14 @@ import lombok.experimental.Accessors; * +---------------------------------------------------------------------- */ @Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@ApiModel(value="TemplateMessageIndustryItemVo对象", description="微信模板所属行业详情") -public class TemplateMessageIndustryItemVo { - @ApiModelProperty(value = "主行业") - private String firstClass; +@ApiModel(value="SystemMenuSearchRequest对象", description="菜单搜索Request对象") +public class SystemMenuSearchRequest { + private static final long serialVersionUID=1L; - @ApiModelProperty(value = "副行业") - private String secondClass; + @ApiModelProperty(value = "菜单名称") + private String name; + @ApiModelProperty(value = "菜单类型:M-目录,C-菜单,A-按钮") + @StringContains(limitValues = {"M","C","A"}, message = "未知的菜单类型") + private String menuType; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemRoleRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemRoleRequest.java similarity index 59% rename from crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemRoleRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemRoleRequest.java index d78e9a5e..2ae0c55b 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemRoleRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemRoleRequest.java @@ -1,19 +1,17 @@ -package com.zbkj.crmeb.system.request; +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.NotNull; +import java.io.Serializable; /** - * 身份管理表 + * 身份管理请求对象 * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -27,24 +25,24 @@ import javax.validation.constraints.NotNull; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@TableName("eb_system_role") -@ApiModel(value="SystemRole对象", description="身份管理表") -public class SystemRoleRequest { - private static final long serialVersionUID=1L; +@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 = "身份管理权限(menus_id)", required = true) - @NotNull(message = "身份管理权限不能为空") + @ApiModelProperty(value = "权限字符串(英文逗号拼接)", required = true) + @NotNull(message = "权限不能为空") private String rules; - @ApiModelProperty(value = "身份管理名称", required = true) - @Min(value=0) - @NotNull(message = "level 不能为空,且为正整数") - private Integer level; - - @ApiModelProperty(value = "状态", required = true) + @ApiModelProperty(value = "状态:0-关闭,1-正常", required = true) + @NotNull(message = "状态不能为空") private Boolean status; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/seckill/request/StoreSeckillAttrSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemRoleSearchRequest.java similarity index 66% rename from crmeb/src/main/java/com/zbkj/crmeb/seckill/request/StoreSeckillAttrSearchRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemRoleSearchRequest.java index 99a06262..5674c48d 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/seckill/request/StoreSeckillAttrSearchRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemRoleSearchRequest.java @@ -1,7 +1,10 @@ -package com.zbkj.crmeb.seckill.request; +package com.zbkj.common.request; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; /** - * 商品秒杀属性搜索 + * 身份管理搜索Request对象 * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -12,5 +15,13 @@ package com.zbkj.crmeb.seckill.request; * | Author: CRMEB Team * +---------------------------------------------------------------------- */ -public class StoreSeckillAttrSearchRequest { +@Data +public class SystemRoleSearchRequest { + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "身份管理名称") + private String roleName; + + @ApiModelProperty(value = "状态") + private Boolean status; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemStoreRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemStoreRequest.java similarity index 81% rename from crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemStoreRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemStoreRequest.java index 3d667677..79753e0f 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemStoreRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemStoreRequest.java @@ -1,14 +1,12 @@ -package com.zbkj.crmeb.system.request; +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.constants.RegularConstants; +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; @@ -36,21 +34,24 @@ public class SystemStoreRequest implements Serializable { @ApiModelProperty(value = "门店名称") @NotBlank(message = "请填写门店名称") + @Length(max = 100, message = "门店名称不能超过100个字符") private String name; @ApiModelProperty(value = "简介") private String introduction; @ApiModelProperty(value = "手机号码") - @Pattern(regexp = RegularConstants.PHONE, message = "手机号码格式错误") + @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 = "每日营业开关时间") @@ -58,6 +59,7 @@ public class SystemStoreRequest implements Serializable { @ApiModelProperty(value = "门店logo") @NotBlank(message = "请上传门店logo") + @Length(max = 255, message = "门店logo不能超过255个字符") private String image; @ApiModelProperty(value = "纬度") diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemStoreSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemStoreSearchRequest.java similarity index 91% rename from crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemStoreSearchRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemStoreSearchRequest.java index 5e3a5246..5b1266f8 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemStoreSearchRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemStoreSearchRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.system.request; +package com.zbkj.common.request; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; @@ -6,6 +6,7 @@ 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; @@ -35,6 +36,7 @@ public class SystemStoreSearchRequest implements Serializable { private String keywords; @ApiModelProperty(value = "状态,0隐藏,1显示,2回收站", example = "1") + @Range(min = 0, max = 2, message = "未知的状态") private int status; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemStoreStaffRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemStoreStaffRequest.java similarity index 86% rename from crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemStoreStaffRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemStoreStaffRequest.java index aae34528..7e74a47e 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemStoreStaffRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemStoreStaffRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.system.request; +package com.zbkj.common.request; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; @@ -8,8 +8,11 @@ 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; /** @@ -45,6 +48,8 @@ public class SystemStoreStaffRequest implements Serializable { private Integer storeId; @ApiModelProperty(value = "核销员 名称 [昵称]") + @NotBlank(message = "核销员名称不能为空") + @Length(max = 64,message = "核销员名称不能超过64个字符") private String staffName; @ApiModelProperty(value = "手机号码") diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemUserLevelRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemUserLevelRequest.java similarity index 79% rename from crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemUserLevelRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemUserLevelRequest.java index 390d9e17..3e9ebce0 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemUserLevelRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemUserLevelRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.system.request; +package com.zbkj.common.request; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; @@ -6,13 +6,13 @@ 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.Max; import javax.validation.constraints.Min; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import java.io.Serializable; -import java.math.BigDecimal; /** * 设置用户等级表 @@ -40,6 +40,7 @@ public class SystemUserLevelRequest implements Serializable { @ApiModelProperty(value = "等级名称") @NotBlank(message = "等级名称不能为空") + @Length(max = 50, message = "等级名称不能超过50个字符") private String name; @ApiModelProperty(value = "达到多少升级经验") @@ -48,27 +49,21 @@ public class SystemUserLevelRequest implements Serializable { @ApiModelProperty(value = "会员等级") @NotNull(message = "会员等级不能为空") - @Min(value = 1) + @Min(value = 1, message = "会员等级最小为1") private Integer grade; @ApiModelProperty(value = "享受折扣") @NotNull(message = "折扣不能为空") - @DecimalMin(value = "0.00", message = "请输入正确的金额") - private BigDecimal discount; + @Min(value = 1, message = "折扣值不能小于1") + @Max(value = 100, message = "折扣值不能大于100") + private Integer discount; @ApiModelProperty(value = "会员图标") @NotBlank(message = "会员图标不能为空") private String icon; - @ApiModelProperty(value = "会员卡背景") -// @NotBlank(message = "会员卡背景不能为空") - private String image; - @ApiModelProperty(value = "是否显示 1=显示,0=隐藏") - @NotNull(message = "是否现实不能为空") + @NotNull(message = "是否显示不能为空") private Boolean isShow; - @ApiModelProperty(value = "说明") -// @NotNull(message = "说明不能为空") - private String memo; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/vo/SystemGroupDataMenuUserConfigVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemUserLevelUpdateShowRequest.java similarity index 66% rename from crmeb/src/main/java/com/zbkj/crmeb/system/vo/SystemGroupDataMenuUserConfigVo.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemUserLevelUpdateShowRequest.java index f55c6ad5..626e103a 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/vo/SystemGroupDataMenuUserConfigVo.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemUserLevelUpdateShowRequest.java @@ -1,16 +1,16 @@ -package com.zbkj.crmeb.system.vo; +package com.zbkj.common.request; -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 javax.validation.constraints.NotNull; import java.io.Serializable; /** - * 签到记录 + * 设置用户等级表 * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -24,20 +24,17 @@ import java.io.Serializable; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@ApiModel(value="SystemGroupDataSignConfigVo对象", description="签到记录") -public class SystemGroupDataMenuUserConfigVo implements Serializable { +@ApiModel(value="SystemUserLevelUpdateShowRequest对象", description="等级更改显示状态请求") +public class SystemUserLevelUpdateShowRequest implements Serializable { private static final long serialVersionUID=1L; - @TableId(value = "id") + @ApiModelProperty(value = "等级id") + @NotNull(message = "等级id不能为空") private Integer id; - @ApiModelProperty(value = "显示文字") - private String name; + @ApiModelProperty(value = "是否显示 1=显示,0=隐藏") + @NotNull(message = "是否显示不能为空") + private Boolean isShow; - @ApiModelProperty(value = "图片") - private String pic; - - @ApiModelProperty(value = "跳转地址") - private String url; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemWriteOffOrderSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemWriteOffOrderSearchRequest.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemWriteOffOrderSearchRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemWriteOffOrderSearchRequest.java index da1025cf..c2dd396c 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemWriteOffOrderSearchRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/SystemWriteOffOrderSearchRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.system.request; +package com.zbkj.common.request; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductAttrValueListRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UpdateUserLevelRequest.java similarity index 61% rename from crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductAttrValueListRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UpdateUserLevelRequest.java index 8d8aa87d..854ce2c1 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductAttrValueListRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UpdateUserLevelRequest.java @@ -1,18 +1,16 @@ -package com.zbkj.crmeb.store.request; +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.Valid; +import javax.validation.constraints.NotNull; import java.io.Serializable; -import java.util.List; /** - * 商品属性值表 + * 更新用户会员等级 * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -26,15 +24,20 @@ import java.util.List; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@TableName("eb_store_product_attr_value") -@ApiModel(value="StoreProductAttrValueListRequest对象", description="商品属性值") -public class StoreProductAttrValueListRequest implements Serializable { +@ApiModel(value="UpdateUserLevelRequest", description="更新用户会员等级对象") +public class UpdateUserLevelRequest implements Serializable { private static final long serialVersionUID=1L; - @Valid - @ApiModelProperty(value = "商品属性值") - private List storeProductAttrValueRequest; + @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/src/main/java/com/zbkj/crmeb/front/request/UserAddressCityRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserAddressCityRequest.java similarity index 85% rename from crmeb/src/main/java/com/zbkj/crmeb/front/request/UserAddressCityRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserAddressCityRequest.java index 70ebb978..cc2aa546 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/request/UserAddressCityRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserAddressCityRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.front.request; +package com.zbkj.common.request; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -10,7 +10,7 @@ import javax.validation.constraints.NotBlank; import java.io.Serializable; /** - * 用户地址表 + * 用户地址详细对象 * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -24,24 +24,24 @@ import java.io.Serializable; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@ApiModel(value="UserAddressCityRequest对象", description="用户地址城市") +@ApiModel(value="UserAddressCityRequest对象", description="用户地址详细对象") public class UserAddressCityRequest implements Serializable { private static final long serialVersionUID=1L; @ApiModelProperty(value = "收货人所在省", required = true) - @NotBlank + @NotBlank(message = "收货人所在省不能为空") private String province; @ApiModelProperty(value = "收货人所在市", required = true) - @NotBlank + @NotBlank(message = "收货人所在市不能为空") private String city; @ApiModelProperty(value = "城市id") private Integer cityId = 0; @ApiModelProperty(value = "收货人所在区", required = true) - @NotBlank + @NotBlank(message = "收货人所在区不能为空") private String district; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/request/UserAddressDelRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserAddressDelRequest.java similarity index 93% rename from crmeb/src/main/java/com/zbkj/crmeb/front/request/UserAddressDelRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserAddressDelRequest.java index 3011f8ba..d7c8fcbb 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/request/UserAddressDelRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserAddressDelRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.front.request; +package com.zbkj.common.request; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -30,6 +30,6 @@ public class UserAddressDelRequest implements Serializable { private static final long serialVersionUID=1L; @ApiModelProperty(value = "用户地址id") - @Min(value = 1, message = "ID错误") + @Min(value = 1, message = "请选择用户地址") private Integer id; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/request/UserAddressRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserAddressRequest.java similarity index 70% rename from crmeb/src/main/java/com/zbkj/crmeb/front/request/UserAddressRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserAddressRequest.java index c1fcf344..2d67eb54 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/request/UserAddressRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserAddressRequest.java @@ -1,18 +1,20 @@ -package com.zbkj.crmeb.front.request; +package com.zbkj.common.request; -import com.baomidou.mybatisplus.annotation.TableId; +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赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -26,25 +28,27 @@ import java.io.Serializable; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@ApiModel(value="UserAddressRequest对象", description="用户地址") +@ApiModel(value="UserAddressRequest对象", description="新增用户地址对象") public class UserAddressRequest implements Serializable { private static final long serialVersionUID=1L; @ApiModelProperty(value = "用户地址id") - @TableId(value = "id") private Integer id; @ApiModelProperty(value = "收货人姓名", required = true) - @NotBlank + @NotBlank(message = "收货人姓名不能为空") + @Length(max = 32, message = "收货人姓名不能超过32个字符") private String realName; @ApiModelProperty(value = "收货人电话", required = true) - @NotBlank + @NotBlank(message = "收货人电话不能为空") + @Pattern(regexp = RegularConstants.PHONE_TWO, message = "请填写正确的收货人电话") private String phone; @ApiModelProperty(value = "收货人详细地址", required = true) - @NotBlank + @NotBlank(message = "收货人详细地址不能为空") + @Length(max = 256, message = "收货人详细地址不能超过32个字符") private String detail; @ApiModelProperty(value = "是否默认", example = "false", required = true) diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/request/UserBindingPhoneUpdateRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserBindingPhoneUpdateRequest.java similarity index 86% rename from crmeb/src/main/java/com/zbkj/crmeb/front/request/UserBindingPhoneUpdateRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserBindingPhoneUpdateRequest.java index 95323716..20a1eb73 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/request/UserBindingPhoneUpdateRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserBindingPhoneUpdateRequest.java @@ -1,6 +1,6 @@ -package com.zbkj.crmeb.front.request; +package com.zbkj.common.request; -import com.constants.RegularConstants; +import com.zbkj.common.constants.RegularConstants; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -31,10 +31,10 @@ public class UserBindingPhoneUpdateRequest implements Serializable { private static final long serialVersionUID=1L; @ApiModelProperty(value = "手机号", required = true) - @Pattern(regexp = RegularConstants.PHONE, message = "手机号码格式错误") + @Pattern(regexp = RegularConstants.PHONE_TWO, message = "手机号码格式错误") private String phone; @ApiModelProperty(value = "验证码", required = true) - @Pattern(regexp = RegularConstants.SMS_VALIDATE_CODE_NUM, message = "验证码格式错误,验证码必须为6位数字") + @Pattern(regexp = RegularConstants.VALIDATE_CODE_NUM_SIX, message = "验证码格式错误,验证码必须为6位数字") private String captcha; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/request/UserCollectAllRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserCollectAllRequest.java similarity index 92% rename from crmeb/src/main/java/com/zbkj/crmeb/front/request/UserCollectAllRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserCollectAllRequest.java index 0ccc25c0..b30ea5b1 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/request/UserCollectAllRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserCollectAllRequest.java @@ -1,6 +1,5 @@ -package com.zbkj.crmeb.front.request; +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; @@ -27,7 +26,6 @@ import java.io.Serializable; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@TableName("eb_store_product_relation") @ApiModel(value="StoreProductRelationRequest对象", description="商品点赞和收藏表") public class UserCollectAllRequest implements Serializable { diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/request/UserCollectRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserCollectRequest.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/front/request/UserCollectRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserCollectRequest.java index d35b165d..54505778 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/request/UserCollectRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserCollectRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.front.request; +package com.zbkj.common.request; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/request/UserCouponReceiveRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserCouponReceiveRequest.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/front/request/UserCouponReceiveRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserCouponReceiveRequest.java index ea75f7b9..bc987670 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/request/UserCouponReceiveRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserCouponReceiveRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.front.request; +package com.zbkj.common.request; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/request/UserEditRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserEditRequest.java similarity index 86% rename from crmeb/src/main/java/com/zbkj/crmeb/front/request/UserEditRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserEditRequest.java index d138ede6..c6dd5ed3 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/request/UserEditRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserEditRequest.java @@ -1,10 +1,11 @@ -package com.zbkj.crmeb.front.request; +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; @@ -29,12 +30,13 @@ 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/src/main/java/com/zbkj/crmeb/finance/request/UserExtractRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserExtractRequest.java similarity index 87% rename from crmeb/src/main/java/com/zbkj/crmeb/finance/request/UserExtractRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserExtractRequest.java index 70b2167f..8529e54c 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/finance/request/UserExtractRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserExtractRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.finance.request; +package com.zbkj.common.request; import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.annotations.ApiModel; @@ -6,9 +6,11 @@ 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; @@ -34,6 +36,7 @@ public class UserExtractRequest implements Serializable { @ApiModelProperty(value = "姓名") @NotBlank(message = "提现用户名称必须填写") + @Length(max = 64, message = "提现用户名称不能超过64个字符") @JsonProperty(value = "name") private String realName; @@ -53,7 +56,8 @@ public class UserExtractRequest implements Serializable { @ApiModelProperty(value = "提现金额") @JsonProperty(value = "money") - @DecimalMin(value = "0.1", message = "请输入提现金额") + @NotNull(message = "请输入提现金额") + @DecimalMin(value = "0.1", message = "提现金额不能小于0.1") private BigDecimal extractPrice; @ApiModelProperty(value = "微信号") diff --git a/crmeb/src/main/java/com/zbkj/crmeb/finance/request/UserExtractSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserExtractSearchRequest.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/finance/request/UserExtractSearchRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserExtractSearchRequest.java index 1d24d451..854fe779 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/finance/request/UserExtractSearchRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserExtractSearchRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.finance.request; +package com.zbkj.common.request; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/request/UserGroupRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserGroupRequest.java similarity index 90% rename from crmeb/src/main/java/com/zbkj/crmeb/user/request/UserGroupRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserGroupRequest.java index 64d185c0..49bc5a13 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/request/UserGroupRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserGroupRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.user.request; +package com.zbkj.common.request; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; @@ -8,6 +8,7 @@ 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; @@ -35,6 +36,7 @@ public class UserGroupRequest implements Serializable { @ApiModelProperty(value = "用户分组名称") @NotBlank(message = "请填写分组名称") + @Length(max = 64, message = "用户分组名称不能超过64个字符") private String groupName; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/request/UserOperateIntegralMoneyRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserOperateIntegralMoneyRequest.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/user/request/UserOperateIntegralMoneyRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserOperateIntegralMoneyRequest.java index 7736bb71..04790a1c 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/request/UserOperateIntegralMoneyRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserOperateIntegralMoneyRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.user.request; +package com.zbkj.common.request; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/request/UserRechargeRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserRechargeRequest.java similarity index 93% rename from crmeb/src/main/java/com/zbkj/crmeb/front/request/UserRechargeRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserRechargeRequest.java index 7373ed55..b68a4c0c 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/request/UserRechargeRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserRechargeRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.front.request; +package com.zbkj.common.request; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; @@ -31,7 +31,6 @@ public class UserRechargeRequest implements Serializable { private static final long serialVersionUID=1L; - @ApiModelProperty(value = "充值金额") // @DecimalMin(value = "1", message = "充值金额不能小于1") todo 测试完后放开 private BigDecimal price; @@ -43,7 +42,7 @@ public class UserRechargeRequest implements Serializable { @ApiModelProperty(value = "支付方式| weixin = 微信,alipay = 支付宝") private String payType = "weixin"; - @ApiModelProperty(value = "来源 | public = 微信公众号, weixinh5 =微信H5支付, routine = 小程序,weixinAppIos-微信appios支付,weixinAppAndroid-微信app安卓支付") + @ApiModelProperty(value = "来源 | public = 微信公众号, weixinh5 =微信H5支付, routine = 小程序,weixinAppIos-微信appios支付,weixinAppAndroid-微信app安卓支付,alipay-支付包支付,appAliPay-App支付宝支付") @JsonProperty(value = "from") private String fromType; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/finance/request/UserRechargeSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserRechargeSearchRequest.java similarity index 80% rename from crmeb/src/main/java/com/zbkj/crmeb/finance/request/UserRechargeSearchRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserRechargeSearchRequest.java index 1063d9a7..e6c80ad2 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/finance/request/UserRechargeSearchRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserRechargeSearchRequest.java @@ -1,6 +1,5 @@ -package com.zbkj.crmeb.finance.request; +package com.zbkj.common.request; -import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -10,7 +9,7 @@ import lombok.experimental.Accessors; import java.io.Serializable; /** - * 用户充值表 + * 用户充值记录查询对象 * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -24,15 +23,11 @@ import java.io.Serializable; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@TableName("eb_user_recharge") -@ApiModel(value="UserRecharge对象", description="用户充值表") +@ApiModel(value="UserRechargeSearchRequest对象", description="用户充值记录查询对象") public class UserRechargeSearchRequest implements Serializable { private static final long serialVersionUID=1L; - @ApiModelProperty(value = "是否充值 不传=全部 0=未支付 1=已支付") - private Boolean paid; - @ApiModelProperty(value = "搜索关键字") private String keywords; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/request/UserSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserSearchRequest.java similarity index 93% rename from crmeb/src/main/java/com/zbkj/crmeb/user/request/UserSearchRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserSearchRequest.java index d15c26cd..46e846a3 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/request/UserSearchRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserSearchRequest.java @@ -1,6 +1,7 @@ -package com.zbkj.crmeb.user.request; +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; @@ -46,7 +47,7 @@ public class UserSearchRequest implements Serializable { private String labelId; @ApiModelProperty(value = "用户登陆类型,h5 = h5, wechat = wechat,routine = routine", allowableValues = "range[h5,wechat,routine]") - @NotBlank(message = "请选择用户登录类型") + @StringContains(limitValues = {"h5","wechat","routine"}, message = "请选择正确的用户登录类型") private String userType; @ApiModelProperty(value = "状态是否正常, 0 = 禁止, 1 = 正常") diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/request/UserSpreadPeopleRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserSpreadPeopleRequest.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/front/request/UserSpreadPeopleRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserSpreadPeopleRequest.java index 0cefa2a9..5e23a97a 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/request/UserSpreadPeopleRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserSpreadPeopleRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.front.request; +package com.zbkj.common.request; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/request/UserTagRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserTagRequest.java similarity index 88% rename from crmeb/src/main/java/com/zbkj/crmeb/user/request/UserTagRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserTagRequest.java index e805b030..8f5d465b 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/request/UserTagRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserTagRequest.java @@ -1,40 +1,43 @@ -package com.zbkj.crmeb.user.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.io.Serializable; - -/** - * 用户分组表 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 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 = "请填写标签名称") - private String name; - - -} +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~2020 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/src/main/java/com/zbkj/crmeb/user/request/UserUpdateRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserUpdateRequest.java similarity index 90% rename from crmeb/src/main/java/com/zbkj/crmeb/user/request/UserUpdateRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserUpdateRequest.java index afebea88..9af96806 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/request/UserUpdateRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserUpdateRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.user.request; +package com.zbkj.common.request; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -45,14 +45,14 @@ public class UserUpdateRequest implements Serializable { private String mark; @ApiModelProperty(value = "状态是否正常, 0 = 禁止, 1 = 正常") - @NotNull + @NotNull(message = "状态不能为空") private Boolean status; @ApiModelProperty(value = "详细地址") private String addres; - @ApiModelProperty(value = "等级") - private Integer level; +// @ApiModelProperty(value = "等级") +// private Integer level; @ApiModelProperty(value = "用户分组id") private String groupId; @@ -61,7 +61,7 @@ public class UserUpdateRequest implements Serializable { private String tagId; @ApiModelProperty(value = "是否为推广员") - @NotNull + @NotNull(message = "是否为推广员不能为空") private Boolean isPromoter; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/request/UserUpdateSpreadRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserUpdateSpreadRequest.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/user/request/UserUpdateSpreadRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserUpdateSpreadRequest.java index 1300ec1f..7d8d9bf0 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/request/UserUpdateSpreadRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/UserUpdateSpreadRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.user.request; +package com.zbkj.common.request; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/request/VideoOrderSendRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/VideoOrderSendRequest.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/store/request/VideoOrderSendRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/VideoOrderSendRequest.java index c033d717..82df6278 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/request/VideoOrderSendRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/VideoOrderSendRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.store.request; +package com.zbkj.common.request; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/request/WechatProgramMyTempSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/WechatProgramMyTempSearchRequest.java similarity index 94% rename from crmeb/src/main/java/com/zbkj/crmeb/wechat/request/WechatProgramMyTempSearchRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/WechatProgramMyTempSearchRequest.java index f67ee6c5..77c2330f 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/request/WechatProgramMyTempSearchRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/WechatProgramMyTempSearchRequest.java @@ -1,44 +1,44 @@ -package com.zbkj.crmeb.wechat.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~2020 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; -} +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~2020 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/src/main/java/com/zbkj/crmeb/wechat/request/WechatReplyRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/WechatReplyRequest.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/wechat/request/WechatReplyRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/WechatReplyRequest.java index 36070d89..351427da 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/request/WechatReplyRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/WechatReplyRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.wechat.request; +package com.zbkj.common.request; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/request/WechatReplySearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/WechatReplySearchRequest.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/wechat/request/WechatReplySearchRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/WechatReplySearchRequest.java index 96023d6d..637923d3 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/request/WechatReplySearchRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/WechatReplySearchRequest.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.wechat.request; +package com.zbkj.common.request; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/request/WxBindingPhoneRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/WxBindingPhoneRequest.java similarity index 88% rename from crmeb/src/main/java/com/zbkj/crmeb/front/request/WxBindingPhoneRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/request/WxBindingPhoneRequest.java index 1f7620fc..0b7f8da4 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/request/WxBindingPhoneRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/request/WxBindingPhoneRequest.java @@ -1,12 +1,10 @@ -package com.zbkj.crmeb.front.request; +package com.zbkj.common.request; -import com.constants.RegularConstants; -import com.fasterxml.jackson.annotation.JsonProperty; +import com.zbkj.common.constants.RegularConstants; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; -import lombok.Value; import lombok.experimental.Accessors; import javax.validation.constraints.NotBlank; @@ -34,9 +32,11 @@ 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登录") 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 00000000..83e14854 --- /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 00000000..5f582c88 --- /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/src/main/java/com/zbkj/crmeb/front/response/ApplyRefundOrderInfoResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/ApplyRefundOrderInfoResponse.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/ApplyRefundOrderInfoResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/ApplyRefundOrderInfoResponse.java index c2752ce6..a8034cf7 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/ApplyRefundOrderInfoResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/ApplyRefundOrderInfoResponse.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.response; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/ArticleResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/ArticleResponse.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/ArticleResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/ArticleResponse.java index 8cab47bb..9dec7734 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/ArticleResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/ArticleResponse.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.response; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/seckill/request/StoreSeckillAttrValueRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/AttrValueResponse.java similarity index 57% rename from crmeb/src/main/java/com/zbkj/crmeb/seckill/request/StoreSeckillAttrValueRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/AttrValueResponse.java index 83d1470a..86ff91b6 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/seckill/request/StoreSeckillAttrValueRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/AttrValueResponse.java @@ -1,7 +1,5 @@ -package com.zbkj.crmeb.seckill.request; +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; @@ -9,11 +7,13 @@ 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.LinkedHashMap; +import java.util.Date; /** - * 秒杀商品属性值 + * 商品属性值响应对象 * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -27,16 +27,17 @@ import java.util.LinkedHashMap; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@TableName("StoreSeckillAttrValueRequest") -@ApiModel(value="StoreSeckillAttrValueRequest对象", description="秒杀商品属性值对象") -public class StoreSeckillAttrValueRequest { - @TableId(value = "id", type = IdType.AUTO) +@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 = "商品属性索引值 (attr_value|attr_value[|....])") + @ApiModelProperty(value = "sku") private String suk; @ApiModelProperty(value = "属性对应的库存") @@ -51,22 +52,36 @@ public class StoreSeckillAttrValueRequest { @ApiModelProperty(value = "图片") private String image; - @ApiModelProperty(value = "唯一值") - private String unique; - @ApiModelProperty(value = "成本价") private BigDecimal cost; - @ApiModelProperty(value = "秒杀数量") - private Integer num; - @ApiModelProperty(value = "原价") private BigDecimal otPrice; - @ApiModelProperty(value = "秒杀价价") - private BigDecimal killPrice; + @ApiModelProperty(value = "重量") + private BigDecimal weight; - @ApiModelProperty(value = "attrValue字段,前端传递后用作sku字段") - private LinkedHashMap attrValue; + @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/src/main/java/com/zbkj/crmeb/finance/response/BalanceResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/BalanceResponse.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/finance/response/BalanceResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/BalanceResponse.java index 6e9c85a0..049806f7 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/finance/response/BalanceResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/BalanceResponse.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.finance.response; +package com.zbkj.common.response; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/BargainDetailH5Response.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/BargainDetailH5Response.java similarity index 93% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/BargainDetailH5Response.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/BargainDetailH5Response.java index 2ef667d4..a72caf27 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/BargainDetailH5Response.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/BargainDetailH5Response.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.response; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -83,4 +83,8 @@ public class BargainDetailH5Response implements Serializable { @ApiModelProperty(value = "商品详情") private String content; + + @ApiModelProperty(value = "主商品状态:normal-正常,sellOut-售罄,soldOut-下架,delete-删除") + private String masterStatus; + } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/BargainHeaderResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/BargainHeaderResponse.java similarity index 88% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/BargainHeaderResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/BargainHeaderResponse.java index 5f7e2fc9..62d26d52 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/BargainHeaderResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/BargainHeaderResponse.java @@ -1,10 +1,7 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.response; -import com.zbkj.crmeb.store.response.StoreProductResponse; -import com.zbkj.crmeb.user.model.User; 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; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/BargainIndexResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/BargainIndexResponse.java similarity index 92% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/BargainIndexResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/BargainIndexResponse.java index 18c08776..be7eb167 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/BargainIndexResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/BargainIndexResponse.java @@ -1,6 +1,6 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.response; -import com.zbkj.crmeb.bargain.model.StoreBargain; +import com.zbkj.common.model.bargain.StoreBargain; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/BargainRecordResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/BargainRecordResponse.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/BargainRecordResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/BargainRecordResponse.java index 2d795102..7f51a953 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/BargainRecordResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/BargainRecordResponse.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.response; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/BargainUserInfoResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/BargainUserInfoResponse.java similarity index 94% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/BargainUserInfoResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/BargainUserInfoResponse.java index ddbbaddd..73293af8 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/BargainUserInfoResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/BargainUserInfoResponse.java @@ -1,7 +1,6 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.response; -import com.zbkj.crmeb.bargain.model.StoreBargainUser; -import com.zbkj.crmeb.bargain.model.StoreBargainUserHelp; +import com.zbkj.common.model.bargain.StoreBargainUserHelp; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -32,7 +31,7 @@ public class BargainUserInfoResponse implements Serializable { private static final long serialVersionUID = 4177599369617161973L; - @ApiModelProperty(value = "当前用户砍价状态:1-可以参与砍价,2-参与次数已满,3-砍价中,4-已完成,5-可以帮砍,6-已帮砍,7-帮砍次数已满,8-已生成订单未支付,9-已支付") + @ApiModelProperty(value = "当前用户砍价状态:1-可以参与砍价,2-参与次数已满,3-砍价中,4-已完成,5-可以帮砍,6-已帮砍,7-帮砍次数已满,8-已生成订单未支付,9-已支付,10-未支付,已取消") private Integer bargainStatus; @ApiModelProperty(value = "已砍金额") diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/CartInfoResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/CartInfoResponse.java similarity index 85% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/CartInfoResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/CartInfoResponse.java index c1fa3d35..176cb212 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/CartInfoResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/CartInfoResponse.java @@ -1,10 +1,5 @@ -package com.zbkj.crmeb.front.response; +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.zbkj.crmeb.store.model.StoreProductAttrValue; -import com.zbkj.crmeb.store.response.StoreProductCartProductInfoResponse; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -13,7 +8,6 @@ import lombok.experimental.Accessors; import java.io.Serializable; import java.math.BigDecimal; -import java.util.Date; /** * 购物车详情响应对象 @@ -67,4 +61,7 @@ public class CartInfoResponse implements Serializable { @ApiModelProperty(value = "sku库存") private Integer stock; + + @ApiModelProperty(value = "sku会员价格") + private BigDecimal vipPrice; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/CombinationDetailH5Response.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/CombinationDetailH5Response.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/CombinationDetailH5Response.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/CombinationDetailH5Response.java index 7616428d..6e82f929 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/CombinationDetailH5Response.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/CombinationDetailH5Response.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.response; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/CombinationDetailResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/CombinationDetailResponse.java similarity index 73% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/CombinationDetailResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/CombinationDetailResponse.java index f16e9d59..42501eb3 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/CombinationDetailResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/CombinationDetailResponse.java @@ -1,18 +1,10 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.response; -import com.zbkj.crmeb.combination.model.StoreCombination; -import com.zbkj.crmeb.combination.model.StorePink; -import com.zbkj.crmeb.combination.response.StoreCombinationInfoResponse; -import com.zbkj.crmeb.combination.response.StorePinkResponse; -import com.zbkj.crmeb.store.model.StoreProduct; -import com.zbkj.crmeb.store.model.StoreProductAttr; -import com.zbkj.crmeb.store.model.StoreProductAttrValue; -import com.zbkj.crmeb.store.model.StoreProductReply; +import com.zbkj.common.model.product.StoreProductAttr; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; -import java.math.BigDecimal; import java.util.HashMap; import java.util.List; @@ -46,11 +38,14 @@ public class CombinationDetailResponse implements Serializable { private CombinationDetailH5Response storeCombination; @ApiModelProperty(value = "商品规格") - private List productAttr; + 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/src/main/java/com/zbkj/crmeb/front/response/CombinationHeaderResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/CombinationHeaderResponse.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/CombinationHeaderResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/CombinationHeaderResponse.java index ff201929..2b6effa5 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/CombinationHeaderResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/CombinationHeaderResponse.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.response; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/CombinationIndexResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/CombinationIndexResponse.java similarity index 93% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/CombinationIndexResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/CombinationIndexResponse.java index 5f836b2e..58d4a2d2 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/CombinationIndexResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/CombinationIndexResponse.java @@ -1,6 +1,6 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.response; -import com.zbkj.crmeb.combination.model.StoreCombination; +import com.zbkj.common.model.combination.StoreCombination; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/crmeb/src/main/java/com/common/CommonResult.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/CommonResult.java similarity index 96% rename from crmeb/src/main/java/com/common/CommonResult.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/CommonResult.java index dcde57fa..84ed5152 100644 --- a/crmeb/src/main/java/com/common/CommonResult.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/CommonResult.java @@ -1,7 +1,8 @@ -package com.common; +package com.zbkj.common.response; -import com.exception.ExceptionCodeEnum; -import com.exception.ExceptionHandler; +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; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/ComputedOrderPriceResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/ComputedOrderPriceResponse.java similarity index 94% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/ComputedOrderPriceResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/ComputedOrderPriceResponse.java index fd44c7dd..6bbeb7c8 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/ComputedOrderPriceResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/ComputedOrderPriceResponse.java @@ -1,9 +1,7 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.response; -import com.zbkj.crmeb.front.vo.OrderInfoVo; 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; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/GoPinkResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/GoPinkResponse.java similarity index 81% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/GoPinkResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/GoPinkResponse.java index bbeadf59..616b051d 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/GoPinkResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/GoPinkResponse.java @@ -1,11 +1,6 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.response; -import com.zbkj.crmeb.combination.model.StoreCombination; -import com.zbkj.crmeb.combination.model.StorePink; -import com.zbkj.crmeb.combination.response.StoreCombinationResponse; -import com.zbkj.crmeb.combination.response.StorePinkResponse; -import com.zbkj.crmeb.user.model.User; -import io.swagger.models.auth.In; +import com.zbkj.common.model.user.User; import lombok.Data; import java.io.Serializable; 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 00000000..3d906d53 --- /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~2020 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/src/main/java/com/zbkj/crmeb/statistics/response/HomeRateResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/HomeRateResponse.java similarity index 56% rename from crmeb/src/main/java/com/zbkj/crmeb/statistics/response/HomeRateResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/HomeRateResponse.java index 3e93b5f6..ff1102d6 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/statistics/response/HomeRateResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/HomeRateResponse.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.statistics.response; +package com.zbkj.common.response; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -9,7 +9,7 @@ import lombok.experimental.Accessors; import java.io.Serializable; /** - * 主页用户新增统计 + * 主页统计数据对象 * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -23,32 +23,34 @@ import java.io.Serializable; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@ApiModel(value="HomeRateResponse对象", description="主页用户新增统计") +@ApiModel(value="HomeRateResponse对象", description="主页统计数据对象") public class HomeRateResponse implements Serializable { private static final long serialVersionUID=1L; - public HomeRateResponse() { - } + @ApiModelProperty(value = "今日销售额") + private Object sales; - public HomeRateResponse(Object count, Object dayRate, Object weekRate, Object total) { - this.count = count; - this.dayRate = dayRate; - this.weekRate = weekRate; - this.total = total; - } + @ApiModelProperty(value = "昨日销售额") + private Object yesterdaySales; - @ApiModelProperty(value = "昨日新增量") - private Object count; + @ApiModelProperty(value = "今日访问量") + private Object pageviews; - @ApiModelProperty(value = "日同比率") - private Object dayRate; + @ApiModelProperty(value = "昨日访问量") + private Object yesterdayPageviews; - @ApiModelProperty(value = "周同比率") - private Object weekRate; + @ApiModelProperty(value = "今日订单量") + private Object orderNum; - @ApiModelProperty(value = "总数") - private Object total; + @ApiModelProperty(value = "昨日订单量") + private Object yesterdayOrderNum; + + @ApiModelProperty(value = "今日新增用户") + private Object newUserNum; + + @ApiModelProperty(value = "昨日新增用户") + private Object yesterdayNewUserNum; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/IndexInfoResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/IndexInfoResponse.java similarity index 74% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/IndexInfoResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/IndexInfoResponse.java index 2bee8be0..422e4f85 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/IndexInfoResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/IndexInfoResponse.java @@ -1,6 +1,5 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.response; -import com.zbkj.crmeb.marketing.model.StoreCoupon; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -40,28 +39,9 @@ public class IndexInfoResponse implements Serializable { @ApiModelProperty(value = "新闻简报消息滚动") private List> roll; -// @ApiModelProperty(value = "活动") -// private IndexInfoItemResponse info; - - // 待优化 -// @ApiModelProperty(value = "活动区域图片") -// private List> activity; - -// @ApiModelProperty(value = "首发新品广告图") -// private HashMap lovely; - -// @ApiModelProperty(value = "首页促销单品") -// private List benefit; - -// @ApiModelProperty(value = "热门榜单") -// private List likeInfo; - @ApiModelProperty(value = "企业logo") private String logoUrl; - @ApiModelProperty(value = "优惠券") - private List couponList; - @ApiModelProperty(value = "是否关注公众号") private boolean subscribe; @@ -74,4 +54,18 @@ public class IndexInfoResponse implements Serializable { @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/src/main/java/com/zbkj/crmeb/front/response/IndexProductResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/IndexProductResponse.java similarity index 87% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/IndexProductResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/IndexProductResponse.java index 8f72b357..85c29244 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/IndexProductResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/IndexProductResponse.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.response; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -57,4 +57,12 @@ public class IndexProductResponse { @ApiModelProperty(value = "为移动端特定参数") private ProductActivityItemResponse activityH5; + @ApiModelProperty(value = "购物车商品数量") + private Integer cartNum; + + @ApiModelProperty(value = "库存") + private Integer stock; + + @ApiModelProperty(value = "展示图") + private String flatPattern; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/IntegralUserResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/IntegralUserResponse.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/IntegralUserResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/IntegralUserResponse.java index 29c7ebed..aee6e760 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/IntegralUserResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/IntegralUserResponse.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.response; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/LoginResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/LoginResponse.java similarity index 94% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/LoginResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/LoginResponse.java index f136d5bf..e9d61677 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/LoginResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/LoginResponse.java @@ -1,6 +1,5 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.response; -import com.zbkj.crmeb.user.model.User; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -8,7 +7,6 @@ import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import java.io.Serializable; -import java.util.Date; /** * Login Response diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/request/WechatProgramPublicTempRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/MenusResponse.java similarity index 53% rename from crmeb/src/main/java/com/zbkj/crmeb/wechat/request/WechatProgramPublicTempRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/MenusResponse.java index 3ea93228..aa9c9b21 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/request/WechatProgramPublicTempRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/MenusResponse.java @@ -1,51 +1,58 @@ -package com.zbkj.crmeb.wechat.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; - -/** - * WechatProgramPublicTemp对象 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@TableName("eb_wechat_program_public_temp") -@ApiModel(value="WechatProgramPublicTemp对象", description="") -public class WechatProgramPublicTempRequest implements Serializable { - - private static final long serialVersionUID=1L; - - @TableId(value = "id", type = IdType.AUTO) - private Integer id; - - @ApiModelProperty(value = "微信模板id") - private Integer tid; - - @ApiModelProperty(value = "模版标题") - private String title; - - @ApiModelProperty(value = "模版类型,2 为一次性订阅,3 为长期订阅") - private Integer type; - - @ApiModelProperty(value = "模版所属类目 id") - private Integer categoryId; - - -} +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~2020 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/src/main/java/com/zbkj/crmeb/user/request/UserBillRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/MonitorResponse.java similarity index 64% rename from crmeb/src/main/java/com/zbkj/crmeb/user/request/UserBillRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/MonitorResponse.java index 3166a2af..d46f923d 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/request/UserBillRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/MonitorResponse.java @@ -1,8 +1,5 @@ -package com.zbkj.crmeb.user.request; +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; @@ -11,6 +8,7 @@ import lombok.experimental.Accessors; import java.io.Serializable; import java.math.BigDecimal; +import java.util.Date; /** * 用户账单表 @@ -27,41 +25,33 @@ import java.math.BigDecimal; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@TableName("eb_user_bill") -@ApiModel(value="UserBill对象", description="用户账单表") -public class UserBillRequest implements Serializable { +@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 = "关联id") - private String linkId; - @ApiModelProperty(value = "0 = 支出 1 = 获得") - private Boolean pm; + 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 = "创建时间") + private Date createTime; - @ApiModelProperty(value = "0 = 带确定 1 = 有效 -1 = 无效") - private Boolean status; + @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 00000000..089e381d --- /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~2020 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/src/main/java/com/constants/RedisConstatns.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/OrderBrokerageData.java similarity index 75% rename from crmeb/src/main/java/com/constants/RedisConstatns.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/OrderBrokerageData.java index 332cb5e0..71c40e27 100644 --- a/crmeb/src/main/java/com/constants/RedisConstatns.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/OrderBrokerageData.java @@ -1,7 +1,11 @@ -package com.constants; +package com.zbkj.common.response; + +import lombok.Data; + +import java.math.BigDecimal; /** - * Redis常量类 + * 订单佣金统计数 * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -12,9 +16,9 @@ package com.constants; * | Author: CRMEB Team * +---------------------------------------------------------------------- */ -public class RedisConstatns { - - /** 用户注册信息缓存Key */ - public static final String USER_REGISTER_KEY = "USER:REGISTER:"; +@Data +public class OrderBrokerageData { + private Integer num; + private BigDecimal price; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/OrderDataResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/OrderDataResponse.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/OrderDataResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/OrderDataResponse.java index 324af071..5474fc32 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/OrderDataResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/OrderDataResponse.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.response; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/OrderDetailResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/OrderDetailResponse.java similarity index 96% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/OrderDetailResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/OrderDetailResponse.java index 04965cb5..890c083e 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/OrderDetailResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/OrderDetailResponse.java @@ -1,7 +1,7 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.response; -import com.zbkj.crmeb.store.model.StoreOrder; -import com.zbkj.crmeb.store.vo.StoreOrderInfoOldVo; +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; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/OrderInfoResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/OrderInfoResponse.java similarity index 89% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/OrderInfoResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/OrderInfoResponse.java index 472a50c4..8266ddad 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/OrderInfoResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/OrderInfoResponse.java @@ -1,9 +1,5 @@ -package com.zbkj.crmeb.front.response; +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.zbkj.crmeb.store.response.StoreCartResponse; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/OrderPayResultResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/OrderPayResultResponse.java similarity index 80% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/OrderPayResultResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/OrderPayResultResponse.java index 3621c15d..6b02d03e 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/OrderPayResultResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/OrderPayResultResponse.java @@ -1,6 +1,7 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.response; -import com.zbkj.crmeb.front.vo.WxPayJsResultVo; +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; @@ -38,4 +39,10 @@ public class OrderPayResultResponse { @ApiModelProperty(value = "订单编号") private String orderNo; + + @ApiModelProperty(value = "订单支付宝支付") + private String alipayRequest; + + @ApiModelProperty(value = "支付宝调起支付参数对象(app支付专用)") + private AliPayJsResultVo aliPayConfig; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/OrderProductReplyResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/OrderProductReplyResponse.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/OrderProductReplyResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/OrderProductReplyResponse.java index 36351237..884c76ef 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/OrderProductReplyResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/OrderProductReplyResponse.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.response; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/PreOrderResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/PreOrderResponse.java similarity index 90% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/PreOrderResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/PreOrderResponse.java index 55db322b..a1799a8a 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/PreOrderResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/PreOrderResponse.java @@ -1,6 +1,6 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.response; -import com.zbkj.crmeb.front.vo.OrderInfoVo; +import com.zbkj.common.vo.OrderInfoVo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -8,7 +8,6 @@ import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import java.io.Serializable; -import java.util.List; /** * 预下单响应对象 @@ -44,4 +43,8 @@ public class PreOrderResponse implements Serializable { @ApiModelProperty(value = "微信支付 1 开启 0 关闭") private String payWeixinOpen; + + @ApiModelProperty(value = "支付宝支付 1 开启 0 关闭") + private String aliPayStatus; + } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/ProductActivityItemResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/ProductActivityItemResponse.java similarity index 91% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/ProductActivityItemResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/ProductActivityItemResponse.java index cc5fea93..4b8ec508 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/ProductActivityItemResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/ProductActivityItemResponse.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.response; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -21,7 +21,7 @@ public class ProductActivityItemResponse { @ApiModelProperty(value = "参与活动id") private Integer id; - @ApiModelProperty(value = "秒杀结束时间") + @ApiModelProperty(value = "活动结束时间") private Integer time; @ApiModelProperty(value = "活动参与类型:1=秒杀,2=砍价,3=拼团") diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/ProductDetailReplyResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/ProductDetailReplyResponse.java similarity index 94% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/ProductDetailReplyResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/ProductDetailReplyResponse.java index 951c2ebd..d38afae1 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/ProductDetailReplyResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/ProductDetailReplyResponse.java @@ -1,6 +1,5 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.response; -import com.zbkj.crmeb.store.model.StoreProductReply; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/ProductDetailResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/ProductDetailResponse.java similarity index 62% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/ProductDetailResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/ProductDetailResponse.java index e97ca05c..075c47da 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/ProductDetailResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/ProductDetailResponse.java @@ -1,23 +1,16 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.response; -import com.common.MyRecord; -import com.constants.Constants; -import com.utils.CrmebUtil; -import com.zbkj.crmeb.store.model.StoreProduct; -import com.zbkj.crmeb.store.response.StoreProductRecommendResponse; -import com.zbkj.crmeb.store.response.StoreProductStoreInfoResponse; +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 org.apache.commons.lang3.StringUtils; import java.io.Serializable; -import java.util.ArrayList; import java.util.HashMap; import java.util.List; -import java.util.stream.Collectors; /** * 商品详情 @@ -39,11 +32,8 @@ public class ProductDetailResponse implements Serializable { private static final long serialVersionUID=1L; -// @ApiModelProperty(value = "商品信息") -// private StoreProductStoreInfoResponse storeInfo; - @ApiModelProperty(value = "产品属性") - private List productAttr; + private List productAttr; @ApiModelProperty(value = "商品属性详情") private HashMap productValue; @@ -54,21 +44,6 @@ public class ProductDetailResponse implements Serializable { @ApiModelProperty(value = "为移动端特定参数 所有参与的活动") private List activityAllH5; -// @ApiModelProperty(value = "优品推荐列表") -// private List goodList; - -// @ApiModelProperty(value = "最新评价") -// private Object reply; - -// @ApiModelProperty(value = "评价数量") -// private Integer replyCount; -// -// @ApiModelProperty(value = "好评率") -// private Integer replyChance; - -// @ApiModelProperty(value = "主图base64") -// private String base64Image; - @ApiModelProperty(value = "商品信息") private StoreProduct productInfo; 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 00000000..89afc647 --- /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~2020 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/src/main/java/com/zbkj/crmeb/front/response/ProductReplyResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/ProductReplyResponse.java similarity index 90% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/ProductReplyResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/ProductReplyResponse.java index 8c4792a1..29cd4827 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/ProductReplyResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/ProductReplyResponse.java @@ -1,8 +1,5 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.response; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.zbkj.crmeb.store.model.StoreProduct; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemRoleSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/RoleInfoResponse.java similarity index 54% rename from crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemRoleSearchRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/RoleInfoResponse.java index 202a9357..77d2f46c 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemRoleSearchRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/RoleInfoResponse.java @@ -1,14 +1,18 @@ -package com.zbkj.crmeb.system.request; +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 javax.validation.constraints.Min; -import javax.validation.constraints.NotNull; +import java.io.Serializable; import java.util.Date; +import java.util.List; /** - * 身份管理搜索Request对象 + * 角色详情响应对象 * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -20,23 +24,20 @@ import java.util.Date; * +---------------------------------------------------------------------- */ @Data -public class SystemRoleSearchRequest { - private static final long serialVersionUID=1L; +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="RoleInfoResponse对象", description="角色详情响应对象") +public class RoleInfoResponse implements Serializable { - @ApiModelProperty(value = "身份管理名称") -// @NotNull(message = "身份管理名称不能为空") + private static final long serialVersionUID = -6123516979502057197L; + + @ApiModelProperty(value = "角色id") + private Integer id; + + @ApiModelProperty(value = "角色名称") private String roleName; - @ApiModelProperty(value = "身份管理权限(menus_id)") -// @NotNull(message = "身份管理权限不能为空") - private String rules; - - @ApiModelProperty(value = "身份管理名称") -// @Min(value=0) -// @NotNull(message = "level 不能为空,且为正整数") - private Integer level; - - @ApiModelProperty(value = "状态") + @ApiModelProperty(value = "状态:0-关闭,1-正常") private Boolean status; @ApiModelProperty(value = "创建时间") @@ -44,4 +45,8 @@ public class SystemRoleSearchRequest { @ApiModelProperty(value = "修改时间") private Date updateTime; + + @ApiModelProperty(value = "修改时间") + private List menuList; + } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/SecKillDetailH5Response.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SecKillDetailH5Response.java similarity index 93% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/SecKillDetailH5Response.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SecKillDetailH5Response.java index 658513ac..51dc9866 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/SecKillDetailH5Response.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SecKillDetailH5Response.java @@ -1,5 +1,8 @@ -package com.zbkj.crmeb.front.response; +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; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/SecKillResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SecKillResponse.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/SecKillResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SecKillResponse.java index 26edf343..7482484a 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/SecKillResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SecKillResponse.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.response; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/SeckillIndexResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SeckillIndexResponse.java similarity index 93% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/SeckillIndexResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SeckillIndexResponse.java index 814f922f..219fd7ec 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/SeckillIndexResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SeckillIndexResponse.java @@ -1,6 +1,6 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.response; -import com.zbkj.crmeb.seckill.model.StoreSeckill; +import com.zbkj.common.model.seckill.StoreSeckill; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; 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 00000000..8ec95ac4 --- /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~2020 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/src/main/java/com/zbkj/crmeb/front/response/SpreadCommissionDetailResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SpreadCommissionDetailResponse.java similarity index 94% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/SpreadCommissionDetailResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SpreadCommissionDetailResponse.java index 40488a3c..f29ac7a1 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/SpreadCommissionDetailResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SpreadCommissionDetailResponse.java @@ -1,6 +1,6 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.response; -import com.zbkj.crmeb.user.model.UserBrokerageRecord; +import com.zbkj.common.model.user.UserBrokerageRecord; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/response/SpreadOrderResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SpreadOrderResponse.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/store/response/SpreadOrderResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SpreadOrderResponse.java index ea847a26..3e9d3a96 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/response/SpreadOrderResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SpreadOrderResponse.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.store.response; +package com.zbkj.common.response; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/response/SpreadUserResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SpreadUserResponse.java similarity index 91% rename from crmeb/src/main/java/com/zbkj/crmeb/user/response/SpreadUserResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SpreadUserResponse.java index 2e324809..5f299d4e 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/response/SpreadUserResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SpreadUserResponse.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.user.response; +package com.zbkj.common.response; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; @@ -71,4 +71,10 @@ public class SpreadUserResponse { @ApiModelProperty(value = "已提现次数") private Integer extractCountNum; + + @ApiModelProperty(value = "冻结佣金") + private BigDecimal freezeBrokeragePrice; + + @ApiModelProperty(value = "成为分销员时间") + private Date promoterTime; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/StoreBargainDetailResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreBargainDetailResponse.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/StoreBargainDetailResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreBargainDetailResponse.java index 8b87f901..73391517 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/StoreBargainDetailResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreBargainDetailResponse.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.response; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/bargain/response/StoreBargainResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreBargainResponse.java similarity index 96% rename from crmeb/src/main/java/com/zbkj/crmeb/bargain/response/StoreBargainResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreBargainResponse.java index 43406d69..33b33ce7 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/bargain/response/StoreBargainResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreBargainResponse.java @@ -1,7 +1,7 @@ -package com.zbkj.crmeb.bargain.response; +package com.zbkj.common.response; -import com.zbkj.crmeb.store.model.StoreProductAttr; -import com.zbkj.crmeb.store.request.StoreProductAttrValueRequest; +import com.zbkj.common.model.product.StoreProductAttr; +import com.zbkj.common.request.StoreProductAttrValueRequest; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/bargain/response/StoreBargainUserHelpResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreBargainUserHelpResponse.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/bargain/response/StoreBargainUserHelpResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreBargainUserHelpResponse.java index c052bd2c..6e60db16 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/bargain/response/StoreBargainUserHelpResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreBargainUserHelpResponse.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.bargain.response; +package com.zbkj.common.response; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/bargain/response/StoreBargainUserResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreBargainUserResponse.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/bargain/response/StoreBargainUserResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreBargainUserResponse.java index 939281e5..5804a368 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/bargain/response/StoreBargainUserResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreBargainUserResponse.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.bargain.response; +package com.zbkj.common.response; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreCategoryTreeList.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreCategoryTreeList.java similarity index 83% rename from crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreCategoryTreeList.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreCategoryTreeList.java index 235b0306..340ee161 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreCategoryTreeList.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreCategoryTreeList.java @@ -1,11 +1,7 @@ -package com.zbkj.crmeb.store.response; +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.lang.reflect.Array; import java.util.ArrayList; import java.util.List; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/StoreCombinationH5Response.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreCombinationH5Response.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/StoreCombinationH5Response.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreCombinationH5Response.java index 53508604..0996e99b 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/StoreCombinationH5Response.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreCombinationH5Response.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.response; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/combination/response/StoreCombinationResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreCombinationResponse.java similarity index 96% rename from crmeb/src/main/java/com/zbkj/crmeb/combination/response/StoreCombinationResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreCombinationResponse.java index a036cd26..f56674a3 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/combination/response/StoreCombinationResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreCombinationResponse.java @@ -1,7 +1,5 @@ -package com.zbkj.crmeb.combination.response; +package com.zbkj.common.response; -import com.zbkj.crmeb.store.model.StoreProductAttr; -import com.zbkj.crmeb.store.model.StoreProductAttrValue; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/marketing/response/StoreCouponFrontResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreCouponFrontResponse.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/marketing/response/StoreCouponFrontResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreCouponFrontResponse.java index b233ac3e..30fba23e 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/marketing/response/StoreCouponFrontResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreCouponFrontResponse.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.marketing.response; +package com.zbkj.common.response; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/marketing/response/StoreCouponInfoResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreCouponInfoResponse.java similarity index 89% rename from crmeb/src/main/java/com/zbkj/crmeb/marketing/response/StoreCouponInfoResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreCouponInfoResponse.java index 549b4734..701ee3f1 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/marketing/response/StoreCouponInfoResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreCouponInfoResponse.java @@ -1,8 +1,8 @@ -package com.zbkj.crmeb.marketing.response; +package com.zbkj.common.response; -import com.zbkj.crmeb.category.model.Category; -import com.zbkj.crmeb.marketing.request.StoreCouponRequest; -import com.zbkj.crmeb.store.model.StoreProduct; +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; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/marketing/response/StoreCouponUserOrder.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreCouponUserOrder.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/marketing/response/StoreCouponUserOrder.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreCouponUserOrder.java index 1a455dde..9d2f8089 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/marketing/response/StoreCouponUserOrder.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreCouponUserOrder.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.marketing.response; +package com.zbkj.common.response; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/marketing/response/StoreCouponUserResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreCouponUserResponse.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/marketing/response/StoreCouponUserResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreCouponUserResponse.java index 29a8ff9b..2df6aa13 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/marketing/response/StoreCouponUserResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreCouponUserResponse.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.marketing.response; +package com.zbkj.common.response; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/StoreNearResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreNearResponse.java similarity index 93% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/StoreNearResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreNearResponse.java index 96f1d933..6f97426d 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/StoreNearResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreNearResponse.java @@ -1,6 +1,6 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.response; -import com.zbkj.crmeb.system.vo.SystemStoreNearVo; +import com.zbkj.common.vo.SystemStoreNearVo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreOrderCountItemResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderCountItemResponse.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreOrderCountItemResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderCountItemResponse.java index c47816bb..f32b0d5b 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreOrderCountItemResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderCountItemResponse.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.store.response; +package com.zbkj.common.response; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/StoreOrderDetailResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderDetailInfoResponse.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/StoreOrderDetailResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderDetailInfoResponse.java index 540e2be8..3290711c 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/StoreOrderDetailResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderDetailInfoResponse.java @@ -1,6 +1,6 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.response; -import com.zbkj.crmeb.system.model.SystemStore; +import com.zbkj.common.model.system.SystemStore; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -27,8 +27,8 @@ import java.util.List; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@ApiModel(value="StoreOrderDetailResponse对象", description="订单详情响应体") -public class StoreOrderDetailResponse implements Serializable { +@ApiModel(value="StoreOrderDetailInfoResponse对象", description="订单详情响应体") +public class StoreOrderDetailInfoResponse implements Serializable { private static final long serialVersionUID = -4324222121352855551L; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreOrderDetailResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderDetailResponse.java similarity index 95% rename from crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreOrderDetailResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderDetailResponse.java index 2fb1db26..a871be08 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreOrderDetailResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderDetailResponse.java @@ -1,6 +1,6 @@ -package com.zbkj.crmeb.store.response; +package com.zbkj.common.response; -import com.zbkj.crmeb.store.vo.StoreOrderInfoOldVo; +import com.zbkj.common.vo.StoreOrderInfoOldVo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -105,4 +105,7 @@ public class StoreOrderDetailResponse implements Serializable { @ApiModelProperty(value = "订单类型:0-普通订单,1-视频号订单") private Integer type; + + @ApiModelProperty(value = "是否改价,0-否,1-是") + private Boolean isAlterPrice; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreOrderInfoResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderInfoResponse.java similarity index 92% rename from crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreOrderInfoResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderInfoResponse.java index e518fbb6..878cc4ee 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreOrderInfoResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderInfoResponse.java @@ -1,11 +1,7 @@ -package com.zbkj.crmeb.store.response; +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.zbkj.crmeb.store.vo.StoreOrderInfoOldVo; -import com.zbkj.crmeb.system.model.SystemStore; -import com.zbkj.crmeb.user.model.User; +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; @@ -71,6 +67,9 @@ public class StoreOrderInfoResponse implements Serializable { @ApiModelProperty(value = "优惠券金额") private BigDecimal couponPrice; + @ApiModelProperty(value = "抵扣金额") + private BigDecimal deductionPrice; + @ApiModelProperty(value = "支付方式") private String payType; @@ -139,4 +138,7 @@ public class StoreOrderInfoResponse implements Serializable { @ApiModelProperty(value = "商品总价") private BigDecimal proTotalPrice; + + @ApiModelProperty(value = "退款时间") + private Date refundReasonTime; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/response/StoreOrderItemResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderItemResponse.java similarity index 96% rename from crmeb/src/main/java/com/zbkj/crmeb/system/response/StoreOrderItemResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderItemResponse.java index 9a618cdd..91e3f00e 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/response/StoreOrderItemResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderItemResponse.java @@ -1,7 +1,6 @@ -package com.zbkj.crmeb.system.response; +package com.zbkj.common.response; -import com.zbkj.crmeb.store.response.StoreOrderSpreadInfoResponse; -import com.zbkj.crmeb.store.vo.StoreOrderInfoOldVo; +import com.zbkj.common.vo.StoreOrderInfoOldVo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreOrderSpreadInfoResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderSpreadInfoResponse.java similarity index 80% rename from crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreOrderSpreadInfoResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderSpreadInfoResponse.java index 25ad15bf..8aa07417 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreOrderSpreadInfoResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderSpreadInfoResponse.java @@ -1,9 +1,5 @@ -package com.zbkj.crmeb.store.response; +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.zbkj.crmeb.user.model.User; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -11,9 +7,6 @@ import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import java.io.Serializable; -import java.math.BigDecimal; -import java.util.Date; -import java.util.Map; /** * 订单表 diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreOrderStatisticsChartItemResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderStatisticsChartItemResponse.java similarity index 95% rename from crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreOrderStatisticsChartItemResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderStatisticsChartItemResponse.java index 8fa6b5af..3f139eb8 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreOrderStatisticsChartItemResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderStatisticsChartItemResponse.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.store.response; +package com.zbkj.common.response; import io.swagger.annotations.Api; import lombok.Data; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreOrderStatisticsResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderStatisticsResponse.java similarity index 93% rename from crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreOrderStatisticsResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderStatisticsResponse.java index f81b2c9a..404c4258 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreOrderStatisticsResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderStatisticsResponse.java @@ -1,11 +1,9 @@ -package com.zbkj.crmeb.store.response; +package com.zbkj.common.response; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import lombok.RequiredArgsConstructor; import java.math.BigDecimal; -import java.util.HashMap; import java.util.List; /** diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreOrderTopItemResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderTopItemResponse.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreOrderTopItemResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderTopItemResponse.java index 79450ea1..56145c4b 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreOrderTopItemResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderTopItemResponse.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.store.response; +package com.zbkj.common.response; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreOrderVerificationConfirmResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderVerificationConfirmResponse.java similarity index 96% rename from crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreOrderVerificationConfirmResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderVerificationConfirmResponse.java index 0b92acf6..fa44e644 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreOrderVerificationConfirmResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderVerificationConfirmResponse.java @@ -1,7 +1,7 @@ -package com.zbkj.crmeb.store.response; +package com.zbkj.common.response; import com.baomidou.mybatisplus.annotation.TableField; -import com.zbkj.crmeb.store.vo.StoreOrderInfoOldVo; +import com.zbkj.common.vo.StoreOrderInfoOldVo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -81,9 +81,6 @@ public class StoreOrderVerificationConfirmResponse { @ApiModelProperty(value = "创建时间") private Date createTime; -// @ApiModelProperty(value = "创建时间") todo ZL -// private String day; - @ApiModelProperty(value = "订单状态(-1 : 申请退款 -2 : 退货成功 0:待发货;1:待收货;2:已收货,待评价;3:已完成;)") private Integer status; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/combination/response/StorePinkAdminListResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StorePinkAdminListResponse.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/combination/response/StorePinkAdminListResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StorePinkAdminListResponse.java index 21d577ed..571c8c94 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/combination/response/StorePinkAdminListResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StorePinkAdminListResponse.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.combination.response; +package com.zbkj.common.response; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/combination/response/StorePinkDetailResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StorePinkDetailResponse.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/combination/response/StorePinkDetailResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StorePinkDetailResponse.java index 9bd809c6..e081dc39 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/combination/response/StorePinkDetailResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StorePinkDetailResponse.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.combination.response; +package com.zbkj.common.response; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/combination/response/StorePinkResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StorePinkResponse.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/combination/response/StorePinkResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StorePinkResponse.java index 74aa1069..5d388efb 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/combination/response/StorePinkResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StorePinkResponse.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.combination.response; +package com.zbkj.common.response; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreProductAttrValueResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreProductAttrValueResponse.java similarity index 96% rename from crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreProductAttrValueResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreProductAttrValueResponse.java index e4fd7296..4826cefd 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreProductAttrValueResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreProductAttrValueResponse.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.store.response; +package com.zbkj.common.response; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -106,4 +106,6 @@ public class StoreProductAttrValueResponse implements Serializable { @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 00000000..7b88294f --- /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~2020 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/src/main/java/com/zbkj/crmeb/front/response/StoreProductReplayCountResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreProductReplayCountResponse.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/StoreProductReplayCountResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreProductReplayCountResponse.java index 3dda88ba..63b78757 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/StoreProductReplayCountResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreProductReplayCountResponse.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.response; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreProductReplyResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreProductReplyResponse.java similarity index 96% rename from crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreProductReplyResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreProductReplyResponse.java index 8368fa23..ba6b0dfd 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreProductReplyResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreProductReplyResponse.java @@ -1,8 +1,8 @@ -package com.zbkj.crmeb.store.response; +package com.zbkj.common.response; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; -import com.zbkj.crmeb.store.model.StoreProduct; +import com.zbkj.common.model.product.StoreProduct; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreProductResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreProductResponse.java similarity index 84% rename from crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreProductResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreProductResponse.java index ef47bcc8..ff97681b 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreProductResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreProductResponse.java @@ -1,27 +1,21 @@ -package com.zbkj.crmeb.store.response; +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.constants.Constants; -import com.utils.CrmebUtil; -import com.zbkj.crmeb.front.response.ProductActivityItemResponse; -import com.zbkj.crmeb.marketing.model.StoreCoupon; -import com.zbkj.crmeb.store.model.StoreProductAttr; +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 org.apache.commons.lang3.StringUtils; import java.io.Serializable; 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; /** * 商品表 @@ -42,33 +36,6 @@ import java.util.stream.Collectors; @ApiModel(value="StoreProduct对象", description="商品表") public class StoreProductResponse implements Serializable { - - public String getActivity() { - List _activity = new ArrayList<>(); - if(StringUtils.isBlank(activity)){ - this.setActivityStr(String.join(",",_activity)); - return activity; - }else{ - List activityValue = CrmebUtil.stringToArrayInt(activity); - activityValue.forEach(e->{ - if (e.equals(Constants.PRODUCT_TYPE_NORMAL)) { - _activity.add(Constants.PRODUCT_TYPE_NORMAL_STR); - } - if (e.equals(Constants.PRODUCT_TYPE_SECKILL)) { - _activity.add(Constants.PRODUCT_TYPE_SECKILL_STR); - } - if (e.equals(Constants.PRODUCT_TYPE_BARGAIN)) { - _activity.add(Constants.PRODUCT_TYPE_BARGAIN_STR); - } - if (e.equals(Constants.PRODUCT_TYPE_PINGTUAN)) { - _activity.add(Constants.PRODUCT_TYPE_PINGTUAN_STR); - } - }); - } - this.setActivityStr(String.join(",",_activity)); - return activity; - } - @ApiModelProperty(value = "商品id") @TableId(value = "id", type = IdType.AUTO) private Integer id; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreProductTabsHeader.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreProductTabsHeader.java similarity index 96% rename from crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreProductTabsHeader.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreProductTabsHeader.java index a7db5912..7eabaa4d 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreProductTabsHeader.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreProductTabsHeader.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.store.response; +package com.zbkj.common.response; import lombok.Data; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/StoreSecKillH5Response.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreSecKillH5Response.java similarity index 79% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/StoreSecKillH5Response.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreSecKillH5Response.java index 42f43f92..276de428 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/StoreSecKillH5Response.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreSecKillH5Response.java @@ -1,12 +1,5 @@ -package com.zbkj.crmeb.front.response; +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.utils.DateUtil; -import com.zbkj.crmeb.seckill.response.StoreSeckillManagerResponse; -import com.zbkj.crmeb.store.model.StoreProductAttr; -import com.zbkj.crmeb.store.response.StoreProductAttrValueResponse; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -15,9 +8,6 @@ import lombok.experimental.Accessors; import java.io.Serializable; import java.math.BigDecimal; -import java.util.Date; -import java.util.HashMap; -import java.util.List; /** * 秒杀商品移动端对象 diff --git a/crmeb/src/main/java/com/zbkj/crmeb/seckill/response/StoreSeckillDetailResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreSeckillDetailResponse.java similarity index 52% rename from crmeb/src/main/java/com/zbkj/crmeb/seckill/response/StoreSeckillDetailResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreSeckillDetailResponse.java index 274ec626..f3d7fb7d 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/seckill/response/StoreSeckillDetailResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreSeckillDetailResponse.java @@ -1,8 +1,6 @@ -package com.zbkj.crmeb.seckill.response; +package com.zbkj.common.response; -import com.zbkj.crmeb.front.response.ProductAttrResponse; -import com.zbkj.crmeb.front.response.SecKillDetailH5Response; -import com.zbkj.crmeb.store.response.StoreProductRecommendResponse; +import com.zbkj.common.model.product.StoreProductAttr; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -33,11 +31,8 @@ public class StoreSeckillDetailResponse implements Serializable { private static final long serialVersionUID = -4101548587444327191L; -// @ApiModelProperty(value = "商品信息") -// private StoreSeckillStoreInfoResponse storeInfo; - @ApiModelProperty(value = "产品属性") - private List productAttr; + private List productAttr; @ApiModelProperty(value = "商品属性详情") private HashMap productValue; @@ -45,46 +40,12 @@ public class StoreSeckillDetailResponse implements Serializable { @ApiModelProperty(value = "返佣金额区间") private String priceName; -// @ApiModelProperty(value = "拼团,砍价,秒杀商品集合") -// private List activity; - -// @ApiModelProperty(value = "优品推荐列表") -// private List goodList; - -// @ApiModelProperty(value = "最新评价") -// private Object reply; -// -// @ApiModelProperty(value = "评价数量") -// private Integer replyCount; -// -// @ApiModelProperty(value = "好评率") -// private Integer replyChance; - -// @ApiModelProperty(value = "主图base64") -// private String base64Image; - - // 以下属性仅仅前端使用 - -// @ApiModelProperty(value = "秒杀状态,前端用") -// private Integer killStatus; -// -// @ApiModelProperty(value = "秒杀状态String 未开始/进行中/活动已结束") -// private String statusName; - - ////////////////////// 秒杀用到 - -// @ApiModelProperty(value = "秒杀单属性AttrValueId") -// private Integer aloneAttrValueId; - -// @ApiModelProperty(value = "限购数量 - 销量") -// private Integer quota; -// -// @ApiModelProperty(value = "限购总数") -// private Integer quotaShow; - @ApiModelProperty(value = "收藏标识") private Boolean userCollect; @ApiModelProperty(value = "秒杀商品信息") private SecKillDetailH5Response storeSeckill; + + @ApiModelProperty(value = "主商品状态:normal-正常,sellOut-售罄,soldOut-下架,delete-删除") + private String masterStatus; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/seckill/response/StoreSeckillManagerResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreSeckillManagerResponse.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/seckill/response/StoreSeckillManagerResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreSeckillManagerResponse.java index 99a1156e..1a1c16c7 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/seckill/response/StoreSeckillManagerResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreSeckillManagerResponse.java @@ -1,8 +1,8 @@ -package com.zbkj.crmeb.seckill.response; +package com.zbkj.common.response; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; -import com.utils.DateUtil; +import com.zbkj.common.utils.DateUtil; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/seckill/response/StoreSeckillResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreSeckillResponse.java similarity index 64% rename from crmeb/src/main/java/com/zbkj/crmeb/seckill/response/StoreSeckillResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreSeckillResponse.java index 829b43b0..e03f994e 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/seckill/response/StoreSeckillResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreSeckillResponse.java @@ -1,12 +1,9 @@ -package com.zbkj.crmeb.seckill.response; +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.JsonIgnore; -import com.utils.DateUtil; -import com.zbkj.crmeb.store.model.StoreProductAttr; -import com.zbkj.crmeb.store.response.StoreProductAttrValueResponse; +import com.zbkj.common.model.product.StoreProductAttr; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -30,64 +27,6 @@ import java.util.List; @Data public class StoreSeckillResponse { - // 自定义statusName值 - // 开启 = status = 1 && 当前时间小于startTime - // 关闭 = status = 0 - // 进行中 = status = 1 && 当前时间大于startTime 小于 stopTime - // 已结束 = status = 1 && 当前时间大于结束时间 - // 秒杀状态【仅仅前端用】 killStatus 1=即将开始 0=关闭 2=进行中 -1=已结束 - public String getStatusName() { - String _statusName = "-init"; - Date currentDateTime = DateUtil.nowDateTime(); - int l = currentDateTime.compareTo(startTime); - int r = currentDateTime.compareTo(stopTime); - int currentHour = DateUtil.getCurrentHour(); - System.out.println("currentHour:"+currentHour); - int start = 0; - int end = 0; - if(null != currentTime){ - String[] skillManagerTime = currentTime.split(","); - for (int i = 0; i < skillManagerTime.length; i++) { - if(i==0) start = Integer.parseInt(skillManagerTime[i].split(":")[0]); - if(i==1) end = Integer.parseInt(skillManagerTime[i].split(":")[0]); - } - } - - System.out.println("start:"+start); - System.out.println("end:"+end); - if(status == 0) { - _statusName = "关闭"; - this.setKillStatus(0); - }else if(status == 1 && l == -1){ - _statusName = "未开始"; - this.setKillStatus(1); - } - else if(status == 1 && r <= 0) { - if(currentHour < start){ - _statusName = "即将开始"; - this.setKillStatus(-1); - }else if(currentHour <= end && this.timeId == this.currentTimeId){ // 超过当前时段的已结束 - _statusName = "进行中"; - this.setKillStatus(-1); - } -// else if(this.timeId == this.currentTimeId){ -// _statusName = "进行中"; -// this.setKillStatus(2); -// } - else{ - _statusName = "已结束"; - this.setKillStatus(-1); - } - - }// 超过当前日期的已结束 - else{ - _statusName = "已结束"; - this.setKillStatus(-1); - } - return _statusName; -// return "s:"+status+"|l:"+l+"|r:"+r; - } - @ApiModelProperty(value = "商品秒杀产品表id") @TableId(value = "id", type = IdType.AUTO) private Integer id; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreStaffDetail.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreStaffDetail.java similarity index 95% rename from crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreStaffDetail.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreStaffDetail.java index 345853c5..a8391d7c 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreStaffDetail.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreStaffDetail.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.store.response; +package com.zbkj.common.response; import lombok.Data; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreStaffTopDetail.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreStaffTopDetail.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreStaffTopDetail.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreStaffTopDetail.java index a4b2de42..c7439f69 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreStaffTopDetail.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/StoreStaffTopDetail.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.store.response; +package com.zbkj.common.response; import lombok.Data; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/response/SystemAdminResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SystemAdminResponse.java similarity index 90% rename from crmeb/src/main/java/com/zbkj/crmeb/system/response/SystemAdminResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SystemAdminResponse.java index 15e298da..ed19794a 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/response/SystemAdminResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SystemAdminResponse.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.system.response; +package com.zbkj.common.response; import io.swagger.annotations.ApiModelProperty; @@ -6,6 +6,7 @@ import lombok.Data; import java.io.Serializable; import java.util.Date; +import java.util.List; /** * 系统管理员Response对象 @@ -55,4 +56,7 @@ public class SystemAdminResponse implements Serializable { @ApiModelProperty(value = "是否接收短信") private Boolean isSms; + + @ApiModelProperty(value = "权限标识数组") + private List permissionsList; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/response/SystemGroupDataAdminLoginBannerResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SystemGroupDataAdminLoginBannerResponse.java similarity index 96% rename from crmeb/src/main/java/com/zbkj/crmeb/system/response/SystemGroupDataAdminLoginBannerResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SystemGroupDataAdminLoginBannerResponse.java index 56694892..33ca16c6 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/response/SystemGroupDataAdminLoginBannerResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SystemGroupDataAdminLoginBannerResponse.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.system.response; +package com.zbkj.common.response; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/response/SystemGroupDataOrderStatusPicResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SystemGroupDataOrderStatusPicResponse.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/system/response/SystemGroupDataOrderStatusPicResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SystemGroupDataOrderStatusPicResponse.java index 393b56e4..ce09dd5b 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/response/SystemGroupDataOrderStatusPicResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SystemGroupDataOrderStatusPicResponse.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.system.response; +package com.zbkj.common.response; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/statistics/response/HomeUserBuyResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SystemLoginResponse.java similarity index 62% rename from crmeb/src/main/java/com/zbkj/crmeb/statistics/response/HomeUserBuyResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SystemLoginResponse.java index ac423e37..aba13a55 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/statistics/response/HomeUserBuyResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SystemLoginResponse.java @@ -1,4 +1,5 @@ -package com.zbkj.crmeb.statistics.response; +package com.zbkj.common.response; + import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -9,7 +10,7 @@ import lombok.experimental.Accessors; import java.io.Serializable; /** - * 用户购买统计 + * PC登录返回对象 * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -23,20 +24,21 @@ import java.io.Serializable; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@ApiModel(value="HomeUserBuyResponse对象", description="用户购买统计") -public class HomeUserBuyResponse implements Serializable { +@ApiModel(value="SystemLoginResponse对象", description="PC登录返回对象") +public class SystemLoginResponse implements Serializable { - private static final long serialVersionUID=1L; + @ApiModelProperty(value = "id") + private Integer id; - @ApiModelProperty(value = "未消费用户") - private Object no; + @ApiModelProperty(value = "管理员账号") + private String account; - @ApiModelProperty(value = "消费一次用户") - private Object once; + @ApiModelProperty(value = "管理员昵称") + private String realName; - @ApiModelProperty(value = "留存用户") - private Object history; + @ApiModelProperty(value = "token") + private String Token; - @ApiModelProperty(value = "回流客户") - private Object back; + @ApiModelProperty(value = "是否接收短信") + private Boolean isSms; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/response/SystemStoreStaffResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SystemStoreStaffResponse.java similarity index 94% rename from crmeb/src/main/java/com/zbkj/crmeb/system/response/SystemStoreStaffResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SystemStoreStaffResponse.java index 2cef86d1..b09cf4d3 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/response/SystemStoreStaffResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SystemStoreStaffResponse.java @@ -1,10 +1,10 @@ -package com.zbkj.crmeb.system.response; +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.crmeb.system.model.SystemStore; -import com.zbkj.crmeb.user.model.User; +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; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/response/SystemWriteOffOrderResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SystemWriteOffOrderResponse.java similarity index 94% rename from crmeb/src/main/java/com/zbkj/crmeb/system/response/SystemWriteOffOrderResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SystemWriteOffOrderResponse.java index 59196880..f4dd76a0 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/response/SystemWriteOffOrderResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/SystemWriteOffOrderResponse.java @@ -1,10 +1,9 @@ -package com.zbkj.crmeb.system.response; +package com.zbkj.common.response; import java.math.BigDecimal; import java.io.Serializable; -import java.util.ArrayList; -import com.common.CommonPage; +import com.zbkj.common.page.CommonPage; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/response/TopDetail.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/TopDetail.java similarity index 93% rename from crmeb/src/main/java/com/zbkj/crmeb/user/response/TopDetail.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/TopDetail.java index 7f3563de..3502e6e8 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/response/TopDetail.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/TopDetail.java @@ -1,6 +1,6 @@ -package com.zbkj.crmeb.user.response; +package com.zbkj.common.response; -import com.zbkj.crmeb.user.model.User; +import com.zbkj.common.model.user.User; import lombok.Data; import java.math.BigDecimal; 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 00000000..3fcd91ce --- /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~2020 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 00000000..7f694c95 --- /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~2020 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/src/main/java/com/zbkj/crmeb/wechat/request/WechatProgramMyTempRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/TrandeTrendDateResponse.java similarity index 56% rename from crmeb/src/main/java/com/zbkj/crmeb/wechat/request/WechatProgramMyTempRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/TrandeTrendDateResponse.java index 30af7a21..a3d072dc 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/request/WechatProgramMyTempRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/TrandeTrendDateResponse.java @@ -1,45 +1,47 @@ -package com.zbkj.crmeb.wechat.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~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@ApiModel(value="WechatProgramMyTempRequest对象", description="小程序我的模板") -public class WechatProgramMyTempRequest implements Serializable { - - private static final long serialVersionUID=1L; - - @ApiModelProperty(value = "微信模板id") - private Integer tid; - - @ApiModelProperty(value = "模版标题") - private String title; - - @ApiModelProperty(value = "模板关键字id,多个逗号分割") - private String kid; - - @ApiModelProperty(value = "场景描述") - private String sceneDesc; - - @ApiModelProperty(value = "扩展字段") - private String extra; -} +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~2020 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/src/main/java/com/zbkj/crmeb/finance/request/FundsMonitorUserSearchRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserAreaDataResponse.java similarity index 61% rename from crmeb/src/main/java/com/zbkj/crmeb/finance/request/FundsMonitorUserSearchRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserAreaDataResponse.java index 85f16a07..670dd73d 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/finance/request/FundsMonitorUserSearchRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserAreaDataResponse.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.finance.request; +package com.zbkj.common.response; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -10,7 +10,7 @@ import java.io.Serializable; import java.math.BigDecimal; /** - * 资金监控 + * 用户区域数据对象 * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -24,22 +24,21 @@ import java.math.BigDecimal; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@ApiModel(value="FundsMonitorRequest对象", description="资金监控") -public class FundsMonitorUserSearchRequest implements Serializable { +@ApiModel(value="UserAreaDataResponse对象", description="用户区域数据对象") +public class UserAreaDataResponse implements Serializable { - @ApiModelProperty(value = "搜索关键字") - private String keywords; + private static final long serialVersionUID = -6332062115310922579L; - @ApiModelProperty(value = "类型") - private String type; - private String endTime; + @ApiModelProperty(value = "区域(省份+其他)") + private String area; - @ApiModelProperty(value = "最大佣金") - private BigDecimal max; + @ApiModelProperty(value = "累计用户数量") + private Integer userNum; - @ApiModelProperty(value = "最小佣金") - private BigDecimal min; + @ApiModelProperty(value = "成交用户数量") + private Integer payUserNum; + + @ApiModelProperty(value = "支付金额") + private BigDecimal payAmount; - @ApiModelProperty(value = "排序 asc/desc") - private String sort; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/UserBalanceResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserBalanceResponse.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/UserBalanceResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserBalanceResponse.java index ac5de36b..2518908d 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/UserBalanceResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserBalanceResponse.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.response; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/response/UserBillResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserBillResponse.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/user/response/UserBillResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserBillResponse.java index 8119e231..d181bbad 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/response/UserBillResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserBillResponse.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.user.response; +package com.zbkj.common.response; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/UserCenterResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserCenterResponse.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/UserCenterResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserCenterResponse.java index 95049a43..3d0018ff 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/UserCenterResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserCenterResponse.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.response; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/sms/request/SmsLoginRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserChannelDataResponse.java similarity index 65% rename from crmeb/src/main/java/com/zbkj/crmeb/sms/request/SmsLoginRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserChannelDataResponse.java index 56144628..50995197 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/sms/request/SmsLoginRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserChannelDataResponse.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.sms.request; +package com.zbkj.common.response; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -6,8 +6,10 @@ import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; +import java.io.Serializable; + /** - * 短信API登录 + * 用户渠道数据对象 * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -21,12 +23,14 @@ import lombok.experimental.Accessors; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@ApiModel(value="SmsLoginRequest对象", description="短信登录") -public class SmsLoginRequest { +@ApiModel(value="UserChannelDataResponse对象", description="用户渠道数据对象") +public class UserChannelDataResponse implements Serializable { - @ApiModelProperty(value = "账号", required = true) - private String account; + private static final long serialVersionUID = -6004724917253583732L; - @ApiModelProperty(value = "smsToken", required = true) - private String token; + @ApiModelProperty(value = "性别,h5,ios,routine,wechat") + private String channel; + + @ApiModelProperty(value = "数量") + private Integer num; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/UserCommissionResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserCommissionResponse.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/UserCommissionResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserCommissionResponse.java index 6a957cf2..e642545e 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/UserCommissionResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserCommissionResponse.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.response; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/UserExtractCashResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserExtractCashResponse.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/UserExtractCashResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserExtractCashResponse.java index 259e0351..6b29618f 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/UserExtractCashResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserExtractCashResponse.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.response; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/UserExtractRecordResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserExtractRecordResponse.java similarity index 91% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/UserExtractRecordResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserExtractRecordResponse.java index 9c5d6e76..9cedfb8a 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/UserExtractRecordResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserExtractRecordResponse.java @@ -1,7 +1,6 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.response; -import com.zbkj.crmeb.finance.model.UserExtract; -import com.zbkj.crmeb.user.model.UserBill; +import com.zbkj.common.model.finance.UserExtract; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/finance/response/UserExtractResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserExtractResponse.java similarity index 96% rename from crmeb/src/main/java/com/zbkj/crmeb/finance/response/UserExtractResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserExtractResponse.java index 877d094b..8b0df4df 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/finance/response/UserExtractResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserExtractResponse.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.finance.response; +package com.zbkj.common.response; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/response/UserIntegralRecordResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserIntegralRecordResponse.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/user/response/UserIntegralRecordResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserIntegralRecordResponse.java index 38994e5a..6978d7cb 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/response/UserIntegralRecordResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserIntegralRecordResponse.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.user.response; +package com.zbkj.common.response; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; 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 00000000..35f4e7d5 --- /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~2020 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 00000000..325ed229 --- /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~2020 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/src/main/java/com/zbkj/crmeb/front/response/UserRechargeBillRecordResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserRechargeBillRecordResponse.java similarity index 94% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/UserRechargeBillRecordResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserRechargeBillRecordResponse.java index d6120b8e..a256ef4c 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/UserRechargeBillRecordResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserRechargeBillRecordResponse.java @@ -1,6 +1,6 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.response; -import com.zbkj.crmeb.user.model.UserBill; +import com.zbkj.common.model.user.UserBill; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/UserRechargeResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserRechargeFrontResponse.java similarity index 84% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/UserRechargeResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserRechargeFrontResponse.java index 0d032742..e776eddd 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/UserRechargeResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserRechargeFrontResponse.java @@ -1,6 +1,5 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.response; -import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -25,8 +24,8 @@ import java.util.List; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@ApiModel(value="UserRechargeResponse对象", description="充值响应对象") -public class UserRechargeResponse implements Serializable { +@ApiModel(value="UserRechargeFrontResponse对象", description="充值响应对象") +public class UserRechargeFrontResponse implements Serializable { private static final long serialVersionUID=1L; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/UserRechargeItemResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserRechargeItemResponse.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/UserRechargeItemResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserRechargeItemResponse.java index 2867c1ea..08a4f6da 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/UserRechargeItemResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserRechargeItemResponse.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.response; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/finance/response/UserRechargeResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserRechargeResponse.java similarity index 95% rename from crmeb/src/main/java/com/zbkj/crmeb/finance/response/UserRechargeResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserRechargeResponse.java index 191d0586..b6c49ce1 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/finance/response/UserRechargeResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserRechargeResponse.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.finance.response; +package com.zbkj.common.response; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; @@ -23,7 +23,7 @@ import java.util.Date; @Data public class UserRechargeResponse { - @TableId(value = "id", type = IdType.AUTO) + @ApiModelProperty(value = "充值记录ID") private Integer id; @ApiModelProperty(value = "充值用户UID") diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/UserRelationResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserRelationResponse.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/UserRelationResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserRelationResponse.java index 97b87847..6700a757 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/UserRelationResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserRelationResponse.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.response; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/response/UserResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserResponse.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/user/response/UserResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserResponse.java index 2ae3e088..6b90b7ee 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/response/UserResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserResponse.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.user.response; +package com.zbkj.common.response; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; @@ -23,11 +23,12 @@ import java.util.Date; */ @Data public class UserResponse { + @ApiModelProperty(value = "用户id") - @TableId(value = "uid", type = IdType.AUTO) private Integer uid; @ApiModelProperty(value = "用户账号") + @JsonIgnore private String account; @ApiModelProperty(value = "用户密码") diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/TemplateMessageIndustryVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserSexDataResponse.java similarity index 65% rename from crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/TemplateMessageIndustryVo.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserSexDataResponse.java index 04c93d16..ed2e24bc 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/TemplateMessageIndustryVo.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserSexDataResponse.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.wechat.vo; +package com.zbkj.common.response; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -6,10 +6,10 @@ import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; -import java.util.HashMap; +import java.io.Serializable; /** - * 微信模板所属行业 + * 用户性别数据对象 * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -23,12 +23,14 @@ import java.util.HashMap; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@ApiModel(value="TemplateMessageIndustryVo对象", description="微信模板所属行业") -public class TemplateMessageIndustryVo { - @ApiModelProperty(value = "主营行业") - private TemplateMessageIndustryItemVo primaryIndustry; +@ApiModel(value="UserSexDataResponse对象", description="用户性别数据对象") +public class UserSexDataResponse implements Serializable { - @ApiModelProperty(value = "副营行业") - private TemplateMessageIndustryItemVo secondaryIndustry; + private static final long serialVersionUID = -6004724917253583732L; + @ApiModelProperty(value = "性别,0未知,1男,2女,3保密") + private Integer sex; + + @ApiModelProperty(value = "数量") + private Integer num; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/UserSignInfoResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserSignInfoResponse.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/UserSignInfoResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserSignInfoResponse.java index ac2cc7ba..3db05ea2 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/UserSignInfoResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserSignInfoResponse.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.response; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/UserSpreadBannerResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserSpreadBannerResponse.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/UserSpreadBannerResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserSpreadBannerResponse.java index 657c0cc5..14d7049e 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/UserSpreadBannerResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserSpreadBannerResponse.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.response; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/UserSpreadOrderItemChildResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserSpreadOrderItemChildResponse.java similarity index 80% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/UserSpreadOrderItemChildResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserSpreadOrderItemChildResponse.java index c2d27d50..e2744be8 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/UserSpreadOrderItemChildResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserSpreadOrderItemChildResponse.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.response; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -30,16 +30,6 @@ public class UserSpreadOrderItemChildResponse implements Serializable { private static final long serialVersionUID=1L; - public UserSpreadOrderItemChildResponse() {} - public UserSpreadOrderItemChildResponse(String orderId, Date time, BigDecimal number, String avatar, String nickname, String type) { - this.orderId = orderId; - this.time = time; - this.number = number; - this.avatar = avatar; - this.nickname = nickname; - this.type = type; - } - @ApiModelProperty(value = "订单号") private String orderId; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/UserSpreadOrderItemResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserSpreadOrderItemResponse.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/UserSpreadOrderItemResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserSpreadOrderItemResponse.java index 077daf98..04089bc4 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/UserSpreadOrderItemResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserSpreadOrderItemResponse.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.response; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/UserSpreadOrderResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserSpreadOrderResponse.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/UserSpreadOrderResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserSpreadOrderResponse.java index 930d84fc..501f049c 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/UserSpreadOrderResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserSpreadOrderResponse.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.response; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/UserSpreadPeopleItemResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserSpreadPeopleItemResponse.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/UserSpreadPeopleItemResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserSpreadPeopleItemResponse.java index 8acd2180..8ca46aee 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/UserSpreadPeopleItemResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserSpreadPeopleItemResponse.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.response; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -49,7 +49,6 @@ public class UserSpreadPeopleItemResponse implements Serializable { private Integer orderCount; @ApiModelProperty(value = "订单金额") - private BigDecimal numberCount; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/UserSpreadPeopleResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserSpreadPeopleResponse.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/UserSpreadPeopleResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserSpreadPeopleResponse.java index 79fcfb55..c9e36ba0 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/UserSpreadPeopleResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserSpreadPeopleResponse.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.response; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreOrderResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserTotalResponse.java similarity index 57% rename from crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreOrderResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserTotalResponse.java index b9a66775..0459cd9f 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreOrderResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/response/UserTotalResponse.java @@ -1,7 +1,5 @@ -package com.zbkj.crmeb.store.response; +package com.zbkj.common.response; -import com.common.CommonPage; -import com.zbkj.crmeb.system.response.StoreOrderItemResponse; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -9,10 +7,10 @@ import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import java.io.Serializable; -import java.util.ArrayList; +import java.math.BigDecimal; /** - * 商品表 + * 用户总数据对象 * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -26,17 +24,21 @@ import java.util.ArrayList; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@ApiModel(value="StoreOrderCountResponse对象", description="订单数量") -public class StoreOrderResponse implements Serializable { +@ApiModel(value="UserTotalResponse对象", description="用户总数据对象") +public class UserTotalResponse implements Serializable { - @ApiModelProperty(value = "top") - private StoreOrderTopItemResponse top; + private static final long serialVersionUID = -6332062115310922579L; - @ApiModelProperty(value = "状态") - private StoreOrderCountItemResponse status; + @ApiModelProperty(value = "累计用户数") + private Integer userNum; - @ApiModelProperty(value = "列表") - private CommonPage list; + @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 00000000..4ac752b6 --- /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~2020 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 00000000..403f0694 --- /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 00000000..80695c16 --- /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 00000000..f6caa46a --- /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~2020 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/src/main/java/com/zbkj/crmeb/wechat/response/WeChatAuthorizeLoginGetOpenIdResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/token/WeChatOauthToken.java similarity index 76% rename from crmeb/src/main/java/com/zbkj/crmeb/wechat/response/WeChatAuthorizeLoginGetOpenIdResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/token/WeChatOauthToken.java index cee74513..3d0728ee 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/response/WeChatAuthorizeLoginGetOpenIdResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/token/WeChatOauthToken.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.wechat.response; +package com.zbkj.common.token; import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.annotations.ApiModel; @@ -24,20 +24,20 @@ import java.io.Serializable; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@ApiModel(value="WeChatAuthorizeLoginGetOpenIdResponse对象", description="微信用户授权返回数据") -public class WeChatAuthorizeLoginGetOpenIdResponse implements Serializable { +@ApiModel(value="WeChatAuthorizeLoginGetOpenIdResponse对象", description="微信开放平台获取accessToken对象") +public class WeChatOauthToken implements Serializable { private static final long serialVersionUID=1L; - @ApiModelProperty(value = "token") + @ApiModelProperty(value = "accessToken接口调用凭证") @TableField(value = "access_token") private String accessToken; - @ApiModelProperty(value = "过期时间") + @ApiModelProperty(value = "access_token 接口调用凭证超时时间,单位(秒)") @TableField(value = "expires_in") private String expiresIn; - @ApiModelProperty(value = "token") + @ApiModelProperty(value = "用户刷新access_token") @TableField(value = "refresh_token") private String refreshToken; @@ -45,7 +45,7 @@ public class WeChatAuthorizeLoginGetOpenIdResponse implements Serializable { @TableField(value = "openid") private String openId; - @ApiModelProperty(value = "类型") + @ApiModelProperty(value = "用户授权的作用域,使用逗号(,)分隔") private String scope; } diff --git a/crmeb/src/main/java/com/utils/AESUtil.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/AESUtil.java similarity index 96% rename from crmeb/src/main/java/com/utils/AESUtil.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/AESUtil.java index 5aced815..22bd9cb1 100644 --- a/crmeb/src/main/java/com/utils/AESUtil.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/AESUtil.java @@ -1,4 +1,4 @@ -package com.utils; +package com.zbkj.common.utils; import org.bouncycastle.jce.provider.BouncyCastleProvider; @@ -55,10 +55,8 @@ public class AESUtil { } catch (BadPaddingException e) { e.printStackTrace(); } catch (NoSuchProviderException e) { - // TODO Auto-generated catch block e.printStackTrace(); } catch (Exception e) { - // TODO Auto-generated catch block e.printStackTrace(); } return null; diff --git a/crmeb/src/main/java/com/utils/AppleUtil.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/AppleUtil.java similarity index 98% rename from crmeb/src/main/java/com/utils/AppleUtil.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/AppleUtil.java index 1c93ff67..b82b34cc 100644 --- a/crmeb/src/main/java/com/utils/AppleUtil.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/AppleUtil.java @@ -1,10 +1,9 @@ -package com.utils; +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.InvalidPublicKeyException; import com.auth0.jwk.Jwk; import io.jsonwebtoken.*; import org.apache.commons.codec.binary.Base64; diff --git a/crmeb/src/main/java/com/utils/ArrayUtil.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/ArrayUtil.java similarity index 98% rename from crmeb/src/main/java/com/utils/ArrayUtil.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/ArrayUtil.java index a40e6328..829e0771 100644 --- a/crmeb/src/main/java/com/utils/ArrayUtil.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/ArrayUtil.java @@ -1,4 +1,4 @@ -package com.utils; +package com.zbkj.common.utils; import org.apache.poi.ss.formula.functions.T; diff --git a/crmeb/src/main/java/com/utils/CommonUtil.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/CommonUtil.java similarity index 97% rename from crmeb/src/main/java/com/utils/CommonUtil.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/CommonUtil.java index 83cacad0..944d4d9a 100644 --- a/crmeb/src/main/java/com/utils/CommonUtil.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/CommonUtil.java @@ -1,4 +1,4 @@ -package com.utils; +package com.zbkj.common.utils; import org.apache.commons.codec.digest.DigestUtils; diff --git a/crmeb/src/main/java/com/utils/CrmebUtil.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/CrmebUtil.java similarity index 96% rename from crmeb/src/main/java/com/utils/CrmebUtil.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/CrmebUtil.java index ec4c2a88..80cf1ee6 100644 --- a/crmeb/src/main/java/com/utils/CrmebUtil.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/CrmebUtil.java @@ -1,10 +1,12 @@ -package com.utils; +package com.zbkj.common.utils; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; import cn.hutool.crypto.SecureUtil; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import com.constants.Constants; -import com.exception.CrmebException; -import org.apache.commons.codec.digest.DigestUtils; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.exception.CrmebException; import org.apache.commons.lang3.StringUtils; import javax.crypto.Cipher; @@ -680,7 +682,7 @@ public class CrmebUtil { * @return 生成的随机码 */ public static String getOrderNo(String payType){ - return payType + System.currentTimeMillis() + randomCount(11111, 99999); + return payType + randomCount(11111, 99999) + System.currentTimeMillis() + randomCount(11111, 99999); } /** @@ -866,4 +868,24 @@ public class CrmebUtil { } 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/src/main/java/com/utils/DateUtil.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/DateUtil.java similarity index 97% rename from crmeb/src/main/java/com/utils/DateUtil.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/DateUtil.java index dd88c402..f40dfcfa 100644 --- a/crmeb/src/main/java/com/utils/DateUtil.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/DateUtil.java @@ -1,11 +1,11 @@ -package com.utils; +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.constants.Constants; -import com.exception.CrmebException; -import com.utils.vo.dateLimitUtilVo; +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; @@ -464,7 +464,7 @@ public final class DateUtil { endTime = DateUtil.addDay(end, -1, Constants.DATE_FORMAT_END); break; case Constants.SEARCH_DATE_LATELY_7: - startTime = DateUtil.addDay(day, -7, Constants.DATE_FORMAT_START); + startTime = DateUtil.addDay(day, -6, Constants.DATE_FORMAT_START); break; case Constants.SEARCH_DATE_WEEK: startTime = getWeekStartDay(); @@ -627,7 +627,9 @@ public final class DateUtil { } public static void main(String[] args) { - System.out.println(StringUtils.strip("fsfsdf", "f")); + dateLimitUtilVo dateLimit = getDateLimit(Constants.SEARCH_DATE_LATELY_7); + System.out.println(dateLimit.getStartTime()); + System.out.println(dateLimit.getEndTime()); } } diff --git a/crmeb/src/main/java/com/utils/ExportUtil.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/ExportUtil.java similarity index 93% rename from crmeb/src/main/java/com/utils/ExportUtil.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/ExportUtil.java index d4d91973..d135be0a 100644 --- a/crmeb/src/main/java/com/utils/ExportUtil.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/ExportUtil.java @@ -1,10 +1,11 @@ -package com.utils; +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.exception.CrmebException; +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; @@ -90,8 +91,8 @@ public class ExportUtil { throw new CrmebException("请检查上传参数,上传参数不能为空"); } UploadUtil.setRootPath(rootPath); - UploadUtil.setModelPath(modelPath); - UploadUtil.setType(type); + UploadUtil.setModelPath(Constants.UPLOAD_TYPE_IMAGE +"/"+Constants.UPLOAD_TYPE_FILE+"/"+modelPath); +// UploadUtil.setType(type); } diff --git a/crmeb/src/main/java/com/utils/ImageMergeUtil.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/ImageMergeUtil.java similarity index 95% rename from crmeb/src/main/java/com/utils/ImageMergeUtil.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/ImageMergeUtil.java index 429b3a4c..706048f4 100644 --- a/crmeb/src/main/java/com/utils/ImageMergeUtil.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/ImageMergeUtil.java @@ -1,8 +1,8 @@ -package com.utils; +package com.zbkj.common.utils; -import com.constants.Constants; -import com.exception.CrmebException; -import com.utils.vo.ImageMergeUtilVo; +import com.zbkj.common.constants.Constants; +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; @@ -49,7 +49,7 @@ public class ImageMergeUtil { try { UploadUtil.setModelPath(model); UploadUtil.setExtStr(ext); - UploadUtil.setType(Constants.UPLOAD_TYPE_IMAGE); +// UploadUtil.setType(Constants.UPLOAD_TYPE_IMAGE); //文件名 String newFileName = UploadUtil.fileName(ext); diff --git a/crmeb/src/main/java/com/utils/QRCodeUtil.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/QRCodeUtil.java similarity index 98% rename from crmeb/src/main/java/com/utils/QRCodeUtil.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/QRCodeUtil.java index 7f07f412..9efae49e 100644 --- a/crmeb/src/main/java/com/utils/QRCodeUtil.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/QRCodeUtil.java @@ -1,4 +1,4 @@ -package com.utils; +package com.zbkj.common.utils; import com.google.zxing.BarcodeFormat; import com.google.zxing.EncodeHintType; @@ -34,7 +34,6 @@ public class QRCodeUtil { public static String crateQRCode(String content, int width, int height) throws IOException { - String resultImage = ""; if (!StringUtils.isEmpty(content)) { ServletOutputStream stream = null; ByteArrayOutputStream os = new ByteArrayOutputStream(); diff --git a/crmeb/src/main/java/com/utils/RedisUtil.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/RedisUtil.java similarity index 58% rename from crmeb/src/main/java/com/utils/RedisUtil.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/RedisUtil.java index 1530124a..4f6db16f 100644 --- a/crmeb/src/main/java/com/utils/RedisUtil.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/RedisUtil.java @@ -1,10 +1,12 @@ -package com.utils; +package com.zbkj.common.utils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.redis.core.*; +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 java.io.Serializable; +import javax.annotation.Resource; import java.util.List; import java.util.Set; import java.util.concurrent.TimeUnit; @@ -25,27 +27,98 @@ import java.util.concurrent.TimeUnit; @Component public class RedisUtil { - @Autowired - private RedisTemplate redisTemplate; + @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 - * @author Mr.Zhang - * @since 2020-04-13 - * @return bool */ public boolean set(String key, Object value) { - boolean result = false; try { - ValueOperations operations = redisTemplate.opsForValue(); - operations.set(key, value); - result = true; + 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; } - return result; } /** @@ -54,140 +127,61 @@ public class RedisUtil { * @param value string value * @param expireTime Long 过期时间 * @param timeUnit TimeUnit 时间格式 - * @author Mr.Zhang - * @since 2020-04-13 - * @return bool + * @return boolean */ public boolean set(String key, Object value, Long expireTime, TimeUnit timeUnit) { - boolean result = false; try { - ValueOperations operations = redisTemplate.opsForValue(); - operations.set(key, value); - redisTemplate.expire(key, expireTime, timeUnit); - result = true; + redisTemplate.opsForValue().set(key, value, expireTime, timeUnit); + return true; } catch (Exception e) { e.printStackTrace(); - } - return result; - } - /** - * 批量删除对应的value - * @param keys string key - * @author Mr.Zhang - * @since 2020-04-13 - */ - public void remove(String... keys) { - for (String key : keys) { - remove(key); + return false; } } - /** - * 批量删除key - * @param pattern string key - * @author Mr.Zhang - * @since 2020-04-13 - */ - public void removePattern(String pattern) { - Set keys = redisTemplate.keys(pattern); - if (keys.size() > 0) { - redisTemplate.delete(keys); - } - } - - /** - * 删除对应的value - * @param key string key - * @author Mr.Zhang - * @since 2020-04-13 - */ - public void remove(String key) { - if (exists(key)) { - redisTemplate.delete(key); - } - } - - /** - * 判断缓存中是否有对应的value - * @param key string key - * @author Mr.Zhang - * @since 2020-04-13 - * @return bool - */ - public boolean exists(String key) { - return redisTemplate.hasKey(key); - } - - /** * 读取缓存 * @param key string key - * @author Mr.Zhang - * @since 2020-04-13 - * @return Object + * @return T */ - - public Object get(String key) { - Object result = null; - ValueOperations operations = redisTemplate.opsForValue(); - result = operations.get(key); - return result; + @SuppressWarnings("unchecked") + public T get(String key) { + return (T) redisTemplate.opsForValue().get(key); } - /** - * 哈希 添加 - * - * @param key - * @param hashKey - * @param value - */ - /** * 哈希添加 * @param key string key * @param hashKey Object hashKey * @param value Object value - * @author Mr.Zhang - * @since 2020-04-13 */ public void hmSet(String key, Object hashKey, Object value) { - HashOperations hash = redisTemplate.opsForHash(); - hash.put(key, hashKey, value); + redisTemplate.opsForHash().put(key, hashKey, value); } /** * 哈希删除 * @param key string key * @param hashKey Object hashKey - * @author Mr.Zhang - * @since 2020-04-13 */ public void hmDelete(String key, Object hashKey) { - HashOperations hash = redisTemplate.opsForHash(); - hash.delete(key, hashKey); + redisTemplate.opsForHash().delete(key, hashKey); } /** * 哈希获取数据 * @param key string key * @param hashKey Object hashKey - * @author Mr.Zhang - * @return Object - * @since 2020-04-13 */ public Object hmGet(String key, Object hashKey) { - HashOperations hash = redisTemplate.opsForHash(); - return hash.get(key, hashKey); + return redisTemplate.opsForHash().get(key, hashKey); } /** * 哈希数量 * @param key string key - * @author Mr.Zhang - * @return Object - * @since 2020-04-13 */ public Long getHashSize(String key) { return redisTemplate.opsForHash().size(key); @@ -209,8 +203,6 @@ public class RedisUtil { * 从右边拿出来一个 * @param k string key * @param t Long 超时秒数 - * @author Mr.Zhang - * @since 2020-04-13 */ public Object getRightPop(String k, Long t){ return redisTemplate.opsForList().rightPop(k, t, TimeUnit.SECONDS); @@ -219,8 +211,6 @@ public class RedisUtil { /** * 列表获取数量 * @param k string key - * @author Mr.Zhang - * @since 2020-04-13 * @return Long */ public Long getListSize(String k) { @@ -232,8 +222,6 @@ public class RedisUtil { * @param k string key * @param l long l * @param l1 long l1 - * @author Mr.Zhang - * @since 2020-04-13 * @return List */ public List lRange(String k, long l, long l1) { @@ -245,8 +233,6 @@ public class RedisUtil { * 集合添加 * @param key string key * @param value Object value - * @author Mr.Zhang - * @since 2020-04-13 */ public void add(String key, Object value) { SetOperations set = redisTemplate.opsForSet(); @@ -256,8 +242,6 @@ public class RedisUtil { /** * 集合获取 * @param key string key - * @author Mr.Zhang - * @since 2020-04-13 * @return Set */ public Set setMembers(String key) { @@ -265,21 +249,11 @@ public class RedisUtil { return set.members(key); } - /** - * 有序集合添加 - * - * @param key - * @param value - * @param scoure - */ - /** * 有序集合添加 排行榜使用 * @param key string key * @param value Object value * @param score double scoure - * @author Mr.Zhang - * @since 2020-04-13 */ public void zAdd(String key, Object value, double score) { ZSetOperations zset = redisTemplate.opsForZSet(); @@ -291,12 +265,37 @@ public class RedisUtil { * 有序集合获取 排行榜使用 * @param key string key * @param score double scoure - * @author Mr.Zhang - * @since 2020-04-13 * @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/src/main/java/com/utils/RequestUtil.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/RequestUtil.java similarity index 99% rename from crmeb/src/main/java/com/utils/RequestUtil.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/RequestUtil.java index 444bc5c0..0e8f28f1 100644 --- a/crmeb/src/main/java/com/utils/RequestUtil.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/RequestUtil.java @@ -1,4 +1,4 @@ -package com.utils; +package com.zbkj.common.utils; import org.apache.commons.lang3.StringUtils; import org.springframework.web.context.request.RequestContextHolder; diff --git a/crmeb/src/main/java/com/utils/RestTemplateUtil.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/RestTemplateUtil.java similarity index 97% rename from crmeb/src/main/java/com/utils/RestTemplateUtil.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/RestTemplateUtil.java index 2c1ca9e3..c53116d1 100644 --- a/crmeb/src/main/java/com/utils/RestTemplateUtil.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/RestTemplateUtil.java @@ -1,7 +1,6 @@ -package com.utils; +package com.zbkj.common.utils; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.io.FileUtil; import com.alibaba.fastjson.JSONObject; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; @@ -13,15 +12,11 @@ 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.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; -import org.apache.http.impl.client.HttpClients; import org.apache.http.impl.conn.BasicHttpClientConnectionManager; -import org.apache.http.ssl.SSLContexts; import org.apache.http.util.EntityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.*; -import org.springframework.http.client.SimpleClientHttpRequestFactory; import org.springframework.stereotype.Component; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; @@ -29,18 +24,11 @@ import org.springframework.web.client.RestTemplate; import javax.net.ssl.KeyManagerFactory; import javax.net.ssl.SSLContext; -import java.io.File; import java.io.FileInputStream; -import java.io.InputStream; -import java.net.URI; -import java.net.URL; -import java.net.URLConnection; import java.nio.charset.StandardCharsets; import java.security.KeyStore; -import java.security.KeyStoreException; import java.security.SecureRandom; import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.Objects; 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 00000000..6b4bc49d --- /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~2020 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/src/main/java/com/utils/SpringUtil.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/SpringUtil.java similarity index 98% rename from crmeb/src/main/java/com/utils/SpringUtil.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/SpringUtil.java index 8e854caf..64aa5ab2 100644 --- a/crmeb/src/main/java/com/utils/SpringUtil.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/SpringUtil.java @@ -1,4 +1,4 @@ -package com.utils; +package com.zbkj.common.utils; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; 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 00000000..52cb8e9b --- /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~2020 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/src/main/java/com/utils/UploadWeChatMediaUtil.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/UploadWeChatMediaUtil.java similarity index 98% rename from crmeb/src/main/java/com/utils/UploadWeChatMediaUtil.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/UploadWeChatMediaUtil.java index 9cb1e0cf..6204bd6c 100644 --- a/crmeb/src/main/java/com/utils/UploadWeChatMediaUtil.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/UploadWeChatMediaUtil.java @@ -1,8 +1,8 @@ -package com.utils; +package com.zbkj.common.utils; import com.alibaba.fastjson.JSONObject; -import com.exception.CrmebException; +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; diff --git a/crmeb/src/main/java/com/utils/UrlUtil.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/UrlUtil.java similarity index 98% rename from crmeb/src/main/java/com/utils/UrlUtil.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/UrlUtil.java index 48d07dba..87fdae4c 100644 --- a/crmeb/src/main/java/com/utils/UrlUtil.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/UrlUtil.java @@ -1,4 +1,4 @@ -package com.utils; +package com.zbkj.common.utils; import cn.hutool.core.util.StrUtil; diff --git a/crmeb/src/main/java/com/utils/ValidateCodeUtil.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/ValidateCodeUtil.java similarity index 98% rename from crmeb/src/main/java/com/utils/ValidateCodeUtil.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/ValidateCodeUtil.java index 04e1eb1a..a09b0b5c 100644 --- a/crmeb/src/main/java/com/utils/ValidateCodeUtil.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/ValidateCodeUtil.java @@ -1,4 +1,4 @@ -package com.utils; +package com.zbkj.common.utils; import cn.hutool.core.util.RandomUtil; import com.alibaba.druid.util.Base64; @@ -140,7 +140,7 @@ public class ValidateCodeUtil { * @return String */ public static Validate getRandomCode() { - validate = validate==null?new Validate():validate; + validate = validate == null ? new Validate() : validate; // BufferedImage类是具有缓冲区的Image类,Image类是用于描述图像信息的类 BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_BGR); diff --git a/crmeb/src/main/java/com/utils/ValidateFormUtil.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/ValidateFormUtil.java similarity index 95% rename from crmeb/src/main/java/com/utils/ValidateFormUtil.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/ValidateFormUtil.java index a6cd6846..5dcb3f5c 100644 --- a/crmeb/src/main/java/com/utils/ValidateFormUtil.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/ValidateFormUtil.java @@ -1,9 +1,9 @@ -package com.utils; +package com.zbkj.common.utils; import cn.hutool.core.util.ReUtil; -import com.constants.RegularConstants; -import com.exception.CrmebException; -import com.zbkj.crmeb.system.model.SystemConfig; +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.*; @@ -91,11 +91,9 @@ public class ValidateFormUtil { * 手机 * @param value String 值 * @param info String 字段名 - * @author Mr.Zhang - * @since 2020-05-11 */ public static void isPhone(String value, String info) { - regularException(value, info, RegularConstants.PHONE, "手机"); + regularException(value, info, RegularConstants.PHONE_TWO, "手机"); } /** @@ -209,7 +207,6 @@ public class ValidateFormUtil { /** * 校验是否是手机号,不是则抛出异常 * @param phone 手机号 - * @param errMsg 异常内容 */ public static void isPhoneException(String phone) { boolean match = ReUtil.isMatch(RegularConstants.PHONE_TWO, phone); diff --git a/crmeb/src/main/java/com/utils/WXPayXmlUtil.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/WXPayXmlUtil.java similarity index 98% rename from crmeb/src/main/java/com/utils/WXPayXmlUtil.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/WXPayXmlUtil.java index 24796737..fdecb4ad 100644 --- a/crmeb/src/main/java/com/utils/WXPayXmlUtil.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/WXPayXmlUtil.java @@ -1,4 +1,4 @@ -package com.utils; +package com.zbkj.common.utils; import org.w3c.dom.Document; diff --git a/crmeb/src/main/java/com/utils/WxPKCS7Encoder.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/WxPKCS7Encoder.java similarity index 98% rename from crmeb/src/main/java/com/utils/WxPKCS7Encoder.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/WxPKCS7Encoder.java index 9b8516b8..b8a2c2be 100644 --- a/crmeb/src/main/java/com/utils/WxPKCS7Encoder.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/WxPKCS7Encoder.java @@ -1,4 +1,4 @@ -package com.utils; +package com.zbkj.common.utils; import java.nio.charset.Charset; import java.util.Arrays; diff --git a/crmeb/src/main/java/com/utils/WxPayUtil.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/WxPayUtil.java similarity index 96% rename from crmeb/src/main/java/com/utils/WxPayUtil.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/WxPayUtil.java index e57cc56d..14b69605 100644 --- a/crmeb/src/main/java/com/utils/WxPayUtil.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/WxPayUtil.java @@ -1,14 +1,14 @@ -package com.utils; +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.constants.Constants; -import com.constants.PayConstants; -import com.exception.CrmebException; -import com.zbkj.crmeb.payment.vo.wechat.CreateOrderRequestVo; -import com.zbkj.crmeb.payment.vo.wechat.WxRefundVo; +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; @@ -16,7 +16,6 @@ import org.w3c.dom.NodeList; import javax.xml.parsers.DocumentBuilder; import java.io.ByteArrayInputStream; import java.io.InputStream; -import java.security.MessageDigest; import java.util.*; /** diff --git a/crmeb/src/main/java/com/utils/WxUtil.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/WxUtil.java similarity index 65% rename from crmeb/src/main/java/com/utils/WxUtil.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/WxUtil.java index e3cdb32a..ac7551e4 100644 --- a/crmeb/src/main/java/com/utils/WxUtil.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/WxUtil.java @@ -1,8 +1,8 @@ -package com.utils; +package com.zbkj.common.utils; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; -import com.exception.CrmebException; +import com.zbkj.common.exception.CrmebException; import org.apache.commons.codec.binary.Base64; /** @@ -64,16 +64,4 @@ public class WxUtil { return result; } - public static void main(String[] args) throws Exception{ -// String appId = "wx4f4bc4dec97d474b"; - String appId = "wxcda5a2b1b98b6a95"; -// String encryptedData = "CiyLU1Aw2KjvrjMdj8YKliAjtP4gsMZMQmRzooG2xrDcvSnxIMXFufNstNGTyaGS9uT5geRa0W4oTOb1WT7fJlAC+oNPdbB+3hVbJSRgv+4lGOETKUQz6OYStslQ142dNCuabNPGBzlooOmB231qMM85d2/fV6ChevvXvQP8Hkue1poOFtnEtpyxVLW1zAo6/1Xx1COxFvrc2d7UL/lmHInNlxuacJXwu0fjpXfz/YqYzBIBzD6WUfTIF9GRHpOn/Hz7saL8xz+W//FRAUid1OksQaQx4CMs8LOddcQhULW4ucetDf96JcR3g0gfRK4PC7E/r7Z6xNrXd2UIeorGj5Ef7b1pJAYB6Y5anaHqZ9J6nKEBvB4DnNLIVWSgARns/8wR2SiRS7MNACwTyrGvt9ts8p12PKFdlqYTopNHR1Vf7XjfhQlVsAJdNiKdYmYVoKlaRv85IfVunYzO0IKXsyl7JCUjCpoG20f0a04COwfneQAGGwd5oa+T8yO5hzuyDb/XcxxmK01EpqOyuxINew=="; - String encryptedData = "dDhlMskxNhvKiicMe6Bufq+4nwcxFj+q4+RCis3BvWwvWNGZO+mk/taMBSu3eE54UCh1mw69PtzKi7Ug7K/4SQfpheHhVXrUdsmD05zrgj4G9/9FBgde/q6Jp92jf3+r2aKHtN5M2EIftev5r7aK3SHNynOTX7n19Ue8vRszbHcJ5Hmsscuy90WoEF6GTL7Pjt9CoN4OW1iiVLNZRtqgtg=="; -// String sessionKey = "tiihtNczf5v6AKRyjwEUhQ=="; - String sessionKey = "tiihtNczf5v6AKRyjwEUhQ=="; -// String iv = "r7BXXKkLb8qrSNn05n0qiA=="; - String iv = "1dK4U6ZoPIVz/lYR2cNtYQ=="; - System.out.println(decrypt(appId, encryptedData, sessionKey, iv)); - } - } diff --git a/crmeb/src/main/java/com/utils/XmlUtil.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/XmlUtil.java similarity index 99% rename from crmeb/src/main/java/com/utils/XmlUtil.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/XmlUtil.java index 2b1797c4..b9382599 100644 --- a/crmeb/src/main/java/com/utils/XmlUtil.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/XmlUtil.java @@ -1,4 +1,4 @@ -package com.utils; +package com.zbkj.common.utils; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.io.naming.NoNameCoder; 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 00000000..acdd3f16 --- /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~2020 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/src/main/java/com/zbkj/crmeb/front/response/OrderPayResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/AftersaleProductInfoVo.java similarity index 59% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/OrderPayResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/AftersaleProductInfoVo.java index 1fd7eaa2..1ebe7799 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/OrderPayResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/AftersaleProductInfoVo.java @@ -1,9 +1,10 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.vo; +import com.baomidou.mybatisplus.annotation.TableField; import lombok.Data; /** - * 支付订单 Response + * * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -15,21 +16,18 @@ import lombok.Data; * +---------------------------------------------------------------------- */ @Data -public class OrderPayResponse { +public class AftersaleProductInfoVo { - private String status; + /** 商家自定义商品ID */ + @TableField(value = "out_product_id") + private String outProductId; - private OrderPayItemResponse result; // 非线上支付对象 + /** 商家自定义sku ID, 如果没有则不填 */ + @TableField(value = "out_sku_id") + private String outSkuId; - private Object jsConfig; // 线上支付对象 todo 后面抽象对象 + /** 参与售后的商品数量 */ + @TableField(value = "product_cnt") + private Integer productCnt; - private String message; - - public OrderPayResponse() { - } - - public OrderPayResponse(String status, OrderPayItemResponse result) { - this.status = status; - this.result = result; - } } 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 00000000..f08b4595 --- /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~2020 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/src/main/java/com/zbkj/crmeb/front/response/IndexInfoItemResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ArticleVo.java similarity index 52% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/IndexInfoItemResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ArticleVo.java index 72eb10ad..217f0975 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/IndexInfoItemResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ArticleVo.java @@ -1,6 +1,6 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.vo; -import com.zbkj.crmeb.category.model.Category; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -8,11 +8,10 @@ import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import java.io.Serializable; -import java.util.HashMap; -import java.util.List; +import java.util.Date; /** - * 用户地址表 + * 文章管理 Vo * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -26,24 +25,33 @@ import java.util.List; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@ApiModel(value="IndexInfoItemResponse对象", description="用户登录返回数据") -public class IndexInfoItemResponse implements Serializable { +@ApiModel(value="ArticleVo对象", description="文章管理表") +public class ArticleVo implements Serializable { private static final long serialVersionUID=1L; - @ApiModelProperty(value = "首页促销单品") - private String promotionNumber; + @ApiModelProperty(value = "文章管理ID") + private Integer id; - @ApiModelProperty(value = "分类") - private List fastList; + @ApiModelProperty(value = "分类id") + private String cid; - @ApiModelProperty(value = "精品推荐") - private List bastList; + @ApiModelProperty(value = "文章标题") + private String title; - @ApiModelProperty(value = "首发新品") - private List firstList; + @ApiModelProperty(value = "文章作者") + private String author; - @ApiModelProperty(value = "首页精品推荐图片") - private List> bastBanner; + @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/src/main/java/com/zbkj/crmeb/payment/vo/wechat/AttachVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/AttachVo.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/payment/vo/wechat/AttachVo.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/AttachVo.java index 698584a4..0ef6421b 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/payment/vo/wechat/AttachVo.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/AttachVo.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.payment.vo.wechat; +package com.zbkj.common.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/export/vo/BargainProductExcelVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/BargainProductExcelVo.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/export/vo/BargainProductExcelVo.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/BargainProductExcelVo.java index d90ca372..cc57fdec 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/export/vo/BargainProductExcelVo.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/BargainProductExcelVo.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.export.vo; +package com.zbkj.common.vo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/vo/PriceGroup.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/BaseResultResponseVo.java similarity index 82% rename from crmeb/src/main/java/com/zbkj/crmeb/front/vo/PriceGroup.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/BaseResultResponseVo.java index 9c308dad..493e84fe 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/vo/PriceGroup.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/BaseResultResponseVo.java @@ -1,9 +1,10 @@ -package com.zbkj.crmeb.front.vo; +package com.zbkj.common.vo; + import lombok.Data; /** - * 订单计算价格 + * Base Result * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -15,9 +16,7 @@ import lombok.Data; * +---------------------------------------------------------------------- */ @Data -public class PriceGroup { - - private Integer tempId; - - private PriceItem priceItem; +public class BaseResultResponseVo { + private Integer errcode; + private String errmsg; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/payment/vo/wechat/CallbackVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/CallbackVo.java similarity index 85% rename from crmeb/src/main/java/com/zbkj/crmeb/payment/vo/wechat/CallbackVo.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/CallbackVo.java index 045c5c18..0f073a1e 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/payment/vo/wechat/CallbackVo.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/CallbackVo.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.payment.vo.wechat; +package com.zbkj.common.vo; import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.annotations.ApiModel; @@ -80,4 +80,21 @@ public class CallbackVo { @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 00000000..b5c3973c --- /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~2020 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/src/main/java/com/zbkj/crmeb/category/vo/CategoryTreeVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/CategoryTreeVo.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/category/vo/CategoryTreeVo.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/CategoryTreeVo.java index 905ee57b..8924fefd 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/category/vo/CategoryTreeVo.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/CategoryTreeVo.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.category.vo; +package com.zbkj.common.vo; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/upload/vo/CloudVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/CloudVo.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/upload/vo/CloudVo.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/CloudVo.java index 2c8c880f..8990e74f 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/upload/vo/CloudVo.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/CloudVo.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.upload.vo; +package com.zbkj.common.vo; import lombok.Data; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/export/vo/CombinationProductExcelVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/CombinationProductExcelVo.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/export/vo/CombinationProductExcelVo.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/CombinationProductExcelVo.java index 53d8a0bb..bde0b8e3 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/export/vo/CombinationProductExcelVo.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/CombinationProductExcelVo.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.export.vo; +package com.zbkj.common.vo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/payment/vo/wechat/CreateOrderH5SceneInfoDetailVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/CreateOrderH5SceneInfoDetailVo.java similarity index 94% rename from crmeb/src/main/java/com/zbkj/crmeb/payment/vo/wechat/CreateOrderH5SceneInfoDetailVo.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/CreateOrderH5SceneInfoDetailVo.java index 107e628e..17212fc4 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/payment/vo/wechat/CreateOrderH5SceneInfoDetailVo.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/CreateOrderH5SceneInfoDetailVo.java @@ -1,6 +1,5 @@ -package com.zbkj.crmeb.payment.vo.wechat; +package com.zbkj.common.vo; -import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/payment/vo/wechat/CreateOrderH5SceneInfoVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/CreateOrderH5SceneInfoVo.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/payment/vo/wechat/CreateOrderH5SceneInfoVo.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/CreateOrderH5SceneInfoVo.java index 0822fd1a..e1cc2bcf 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/payment/vo/wechat/CreateOrderH5SceneInfoVo.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/CreateOrderH5SceneInfoVo.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.payment.vo.wechat; +package com.zbkj.common.vo; import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.annotations.ApiModel; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/payment/vo/wechat/CreateOrderRequestVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/CreateOrderRequestVo.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/payment/vo/wechat/CreateOrderRequestVo.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/CreateOrderRequestVo.java index fc51e43f..27afa687 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/payment/vo/wechat/CreateOrderRequestVo.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/CreateOrderRequestVo.java @@ -1,6 +1,5 @@ -package com.zbkj.crmeb.payment.vo.wechat; +package com.zbkj.common.vo; -import com.constants.WeChatConstants; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/payment/vo/wechat/CreateOrderResponseVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/CreateOrderResponseVo.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/payment/vo/wechat/CreateOrderResponseVo.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/CreateOrderResponseVo.java index 473df88b..7b953fce 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/payment/vo/wechat/CreateOrderResponseVo.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/CreateOrderResponseVo.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.payment.vo.wechat; +package com.zbkj.common.vo; import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.annotations.ApiModel; 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 00000000..f7abe155 --- /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~2020 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 00000000..3f4b7b43 --- /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~2020 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 00000000..550fad93 --- /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~2020 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/src/main/java/com/zbkj/crmeb/express/vo/ExpressSheetVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ExpressSheetVo.java similarity index 83% rename from crmeb/src/main/java/com/zbkj/crmeb/express/vo/ExpressSheetVo.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ExpressSheetVo.java index dc4b3afc..27a7b0d4 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/express/vo/ExpressSheetVo.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ExpressSheetVo.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.express.vo; +package com.zbkj.common.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -27,16 +27,6 @@ public class ExpressSheetVo { public ExpressSheetVo() { } - public ExpressSheetVo(Integer exportId, String exportCom, String exportTempId, String exportToName, String exportToTel, String exportToAddress, String exportSiid) { - this.exportId = exportId; - this.exportCom = exportCom; - this.exportTempId = exportTempId; - this.exportToName = exportToName; - this.exportToTel = exportToTel; - this.exportToAddress = exportToAddress; - this.exportSiid = exportSiid; - } - public ExpressSheetVo(Integer exportId, String exportCom, String exportTempId, String exportToName, String exportToTel, String exportToAddress, String exportSiid, Integer exportOpen) { this.exportId = exportId; this.exportCom = exportCom; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/upload/vo/FileResultVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/FileResultVo.java similarity index 86% rename from crmeb/src/main/java/com/zbkj/crmeb/upload/vo/FileResultVo.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/FileResultVo.java index 03338e24..fdad4ae7 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/upload/vo/FileResultVo.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/FileResultVo.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.upload.vo; +package com.zbkj.common.vo; import lombok.Data; /** @@ -26,9 +26,9 @@ public class FileResultVo{ private Long fileSize; // 文件存储在服务器的相对地址 - private String serverPath; +// private String serverPath; - //可供访问的url + //可供访问的url 域名根据配置存储,代替了上面serverPath 的功能 private String url; //类型 diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/request/OrderAgainRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/FirstCatVo.java similarity index 61% rename from crmeb/src/main/java/com/zbkj/crmeb/front/request/OrderAgainRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/FirstCatVo.java index dc8a3f6d..49eb033d 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/request/OrderAgainRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/FirstCatVo.java @@ -1,13 +1,12 @@ -package com.zbkj.crmeb.front.request; +package com.zbkj.common.vo; -import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import javax.validation.constraints.NotNull; +import java.util.List; /** - * OrderAgainRequest - * +---------------------------------------------------------------------- + * 第一级类目 + * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. @@ -18,9 +17,15 @@ import javax.validation.constraints.NotNull; * +---------------------------------------------------------------------- */ @Data -public class OrderAgainRequest { +public class FirstCatVo { + + /** 一级类目ID */ + private Integer firstCatId; + + /** 一级类目名称 */ + private String firstCatName; + + /** 二级类目数组 */ + private List secondCatList; - @ApiModelProperty(value = "订单编号") - @NotNull(message = "订单编号不能为空") - private String orderNo; } diff --git a/crmeb/src/main/java/com/utils/vo/ImageMergeUtilVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ImageMergeUtilVo.java similarity index 97% rename from crmeb/src/main/java/com/utils/vo/ImageMergeUtilVo.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ImageMergeUtilVo.java index 8a0d11ec..91d74c03 100644 --- a/crmeb/src/main/java/com/utils/vo/ImageMergeUtilVo.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ImageMergeUtilVo.java @@ -1,4 +1,4 @@ -package com.utils.vo; +package com.zbkj.common.vo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; 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 00000000..9a5f9938 --- /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/src/main/java/com/zbkj/crmeb/express/vo/LogisticsResultListVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/LogisticsResultListVo.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/express/vo/LogisticsResultListVo.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/LogisticsResultListVo.java index 06200051..5e094bc6 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/express/vo/LogisticsResultListVo.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/LogisticsResultListVo.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.express.vo; +package com.zbkj.common.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/express/vo/LogisticsResultVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/LogisticsResultVo.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/express/vo/LogisticsResultVo.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/LogisticsResultVo.java index cf753eec..6d3529e2 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/express/vo/LogisticsResultVo.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/LogisticsResultVo.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.express.vo; +package com.zbkj.common.vo; import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.annotations.ApiModel; 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 00000000..60ddb124 --- /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~2020 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/src/main/java/com/zbkj/crmeb/store/response/StoreProductRuleResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/MenuCheckVo.java similarity index 61% rename from crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreProductRuleResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/MenuCheckVo.java index bf50706e..57174182 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreProductRuleResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/MenuCheckVo.java @@ -1,7 +1,5 @@ -package com.zbkj.crmeb.store.response; +package com.zbkj.common.vo; -import com.baomidou.mybatisplus.annotation.TableName; -import com.zbkj.crmeb.store.request.StoreProductRuleItemRequest; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -12,7 +10,7 @@ import java.io.Serializable; import java.util.List; /** - * 商品规则值(规格)表 + * 菜单待选中Vo对象 * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -26,18 +24,29 @@ import java.util.List; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@TableName("eb_store_product_rule") -@ApiModel(value="StoreProductRuleResponse对象", description="商品规则值(规格)表") -public class StoreProductRuleResponse implements Serializable { +@ApiModel(value="MenuCheckVo对象", description="菜单待选中Vo对象") +public class MenuCheckVo implements Serializable { private static final long serialVersionUID=1L; - @ApiModelProperty(value = "id") + @ApiModelProperty(value = "菜单ID") private Integer id; - @ApiModelProperty(value = "规格名称") - private String ruleName; + @ApiModelProperty(value = "父级ID") + private Integer pid; - @ApiModelProperty(value = "规格值【JSON字符串】") - private List ruleValue; + @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 00000000..018ba25a --- /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~2020 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/src/main/java/com/common/MyRecord.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/MyRecord.java similarity index 96% rename from crmeb/src/main/java/com/common/MyRecord.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/MyRecord.java index 5ee7c06c..65fe942e 100644 --- a/crmeb/src/main/java/com/common/MyRecord.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/MyRecord.java @@ -1,4 +1,4 @@ -package com.common; +package com.zbkj.common.vo; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; @@ -10,6 +10,8 @@ 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.*; /** @@ -344,6 +346,14 @@ public class MyRecord implements Serializable { * 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); } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/pass/vo/OnePassLoginVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/OnePassLoginVo.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/pass/vo/OnePassLoginVo.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/OnePassLoginVo.java index 039a7a2e..cff2e282 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/pass/vo/OnePassLoginVo.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/OnePassLoginVo.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.pass.vo; +package com.zbkj.common.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/pass/vo/OnePassLogisticsQueryVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/OnePassLogisticsQueryVo.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/pass/vo/OnePassLogisticsQueryVo.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/OnePassLogisticsQueryVo.java index 7c0b76cb..8982d837 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/pass/vo/OnePassLogisticsQueryVo.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/OnePassLogisticsQueryVo.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.pass.vo; +package com.zbkj.common.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/pass/vo/OnePassLogisticsTrackVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/OnePassLogisticsTrackVo.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/pass/vo/OnePassLogisticsTrackVo.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/OnePassLogisticsTrackVo.java index 666a6ce5..c20bfbb1 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/pass/vo/OnePassLogisticsTrackVo.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/OnePassLogisticsTrackVo.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.pass.vo; +package com.zbkj.common.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; 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 00000000..a71d254b --- /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/src/main/java/com/zbkj/crmeb/front/vo/OrderInfoDetailVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/OrderInfoDetailVo.java similarity index 88% rename from crmeb/src/main/java/com/zbkj/crmeb/front/vo/OrderInfoDetailVo.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/OrderInfoDetailVo.java index 796118d4..79776d96 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/vo/OrderInfoDetailVo.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/OrderInfoDetailVo.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.front.vo; +package com.zbkj.common.vo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -58,4 +58,10 @@ public class OrderInfoDetailVo { /** 是否单独分佣 */ private Boolean isSub; + + /** 会员价 */ + private BigDecimal vipPrice; + + /** 商品类型:0-普通,1-秒杀,2-砍价,3-拼团,4-视频号 */ + private Integer productType; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/vo/OrderInfoVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/OrderInfoVo.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/front/vo/OrderInfoVo.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/OrderInfoVo.java index f751cb80..75e1f0ed 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/vo/OrderInfoVo.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/OrderInfoVo.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.front.vo; +package com.zbkj.common.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/export/vo/ProductExcelVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ProductExcelVo.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/export/vo/ProductExcelVo.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ProductExcelVo.java index 56e1ca73..e69b264d 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/export/vo/ProductExcelVo.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ProductExcelVo.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.export.vo; +package com.zbkj.common.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/ProgramTempKeywordsVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ProgramTempKeywordsVo.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/ProgramTempKeywordsVo.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ProgramTempKeywordsVo.java index c15913cf..7b00581f 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/ProgramTempKeywordsVo.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ProgramTempKeywordsVo.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.wechat.vo; +package com.zbkj.common.vo; import com.fasterxml.jackson.annotation.JsonIgnore; import io.swagger.annotations.ApiModel; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/ProgramTemplateMessageVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ProgramTemplateMessageVo.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/ProgramTemplateMessageVo.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ProgramTemplateMessageVo.java index 4ef1f164..4eaa2385 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/ProgramTemplateMessageVo.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ProgramTemplateMessageVo.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.wechat.vo; +package com.zbkj.common.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; 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 00000000..9b39a1db --- /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~2020 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 00000000..732ab3af --- /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~2020 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 00000000..e2754c57 --- /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~2020 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 00000000..e6faf737 --- /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~2020 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/src/main/java/com/zbkj/crmeb/wechat/vo/ProgramTempVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/RoutineMyTemplateVo.java similarity index 63% rename from crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/ProgramTempVo.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/RoutineMyTemplateVo.java index f1c0f991..aab89622 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/ProgramTempVo.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/RoutineMyTemplateVo.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.wechat.vo; +package com.zbkj.common.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -7,7 +7,7 @@ import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; /** - * 小程序行业信息 + * 微信小程序订阅消息Vo对象 * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -21,17 +21,21 @@ import lombok.experimental.Accessors; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@ApiModel(value="PProgramTempVo对象", description="小程序行业信息") -public class ProgramTempVo { - @ApiModelProperty(value = "模板id") - private Integer tid; +@ApiModel(value="RoutineMyTemplateVo对象", description="微信小程序订阅消息Vo对象") +public class RoutineMyTemplateVo { - @ApiModelProperty(value = "模板名称") + @ApiModelProperty(value = "模板ID") + private String priTmplId; + + @ApiModelProperty(value = "模板标题") private String title; - @ApiModelProperty(value = "模版类型,2 为一次性订阅,3 为长期订阅") - private Integer type; + @ApiModelProperty(value = "模板内容") + private String content; - @ApiModelProperty(value = "行业id") - private Integer categoryId; + @ApiModelProperty(value = "模板示例") + private String example; + + @ApiModelProperty(value = "类型") + private String type; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/ProgramCategoryVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/RoutineTemplateKeyVo.java similarity index 62% rename from crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/ProgramCategoryVo.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/RoutineTemplateKeyVo.java index ac097252..4069d6a5 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/ProgramCategoryVo.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/RoutineTemplateKeyVo.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.wechat.vo; +package com.zbkj.common.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -7,7 +7,7 @@ import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; /** - * 小程序行业信息 + * 微信小程序订阅消息Vo对象(从微信获取的) * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -21,11 +21,19 @@ import lombok.experimental.Accessors; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@ApiModel(value="ProgramCategoryVo对象", description="小程序行业信息") -public class ProgramCategoryVo { - @ApiModelProperty(value = "行业id") - private Integer id; +@ApiModel(value="RoutineTemplateKeyVo对象", description="微信小程序订阅消息KeyVo对象(从微信获取的)") +public class RoutineTemplateKeyVo { - @ApiModelProperty(value = "行业名称") + @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 00000000..5db3c609 --- /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~2020 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/src/main/java/com/zbkj/crmeb/wechat/vo/SendProgramTemplateMessageItemVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SendProgramTemplateMessageItemVo.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/SendProgramTemplateMessageItemVo.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SendProgramTemplateMessageItemVo.java index eba15e2d..bab35349 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/SendProgramTemplateMessageItemVo.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SendProgramTemplateMessageItemVo.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.wechat.vo; +package com.zbkj.common.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/sms/request/SendSmsVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SendSmsVo.java similarity index 96% rename from crmeb/src/main/java/com/zbkj/crmeb/sms/request/SendSmsVo.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SendSmsVo.java index 41ab66f2..f75fe9c8 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/sms/request/SendSmsVo.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SendSmsVo.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.sms.request; +package com.zbkj.common.vo; import lombok.Data; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/SendTemplateMessageItemVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SendTemplateMessageItemVo.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/SendTemplateMessageItemVo.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SendTemplateMessageItemVo.java index 978c36ef..506f4d80 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/SendTemplateMessageItemVo.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SendTemplateMessageItemVo.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.wechat.vo; +package com.zbkj.common.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; 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 00000000..fdb63b0d --- /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~2020 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 00000000..1477bb09 --- /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~2020 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 00000000..96d52d54 --- /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~2020 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 00000000..cdf44300 --- /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~2020 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 00000000..cdbec9a0 --- /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~2020 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 00000000..edc4e0c5 --- /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~2020 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 00000000..8d1086f3 --- /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~2020 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 00000000..55dfaa1b --- /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~2020 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 00000000..4ef042d9 --- /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~2020 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 00000000..0ffac827 --- /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~2020 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 00000000..4a6dc109 --- /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~2020 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 00000000..2c0c86d9 --- /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~2020 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 00000000..b5e7406e --- /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~2020 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/src/main/java/com/zbkj/crmeb/front/response/OrderPayItemResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopAuditResultResponseVo.java similarity index 68% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/OrderPayItemResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopAuditResultResponseVo.java index a35e134c..92ad813d 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/OrderPayItemResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopAuditResultResponseVo.java @@ -1,9 +1,9 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.vo; import lombok.Data; /** - * 支付订单 Response item + * 查询审核结果 Response * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -15,15 +15,14 @@ import lombok.Data; * +---------------------------------------------------------------------- */ @Data -public class OrderPayItemResponse { - private String key; - private Object orderId; +public class ShopAuditResultResponseVo extends BaseResultResponseVo { - public OrderPayItemResponse() { - } + private ItemData data; - public OrderPayItemResponse(String key, Object orderId) { - this.key = key; - this.orderId = orderId; + @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 00000000..215a74bc --- /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~2020 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 00000000..00c4a126 --- /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~2020 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 00000000..12556b47 --- /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~2020 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 00000000..e7343d21 --- /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~2020 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 00000000..2e61da2c --- /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~2020 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/src/main/java/com/zbkj/crmeb/front/request/OrderRefundVerifyRequest.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopOrderAddressInfoAddVo.java similarity index 51% rename from crmeb/src/main/java/com/zbkj/crmeb/front/request/OrderRefundVerifyRequest.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopOrderAddressInfoAddVo.java index ae981a6a..d2af0a5e 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/request/OrderRefundVerifyRequest.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopOrderAddressInfoAddVo.java @@ -1,12 +1,10 @@ -package com.zbkj.crmeb.front.request; +package com.zbkj.common.vo; -import io.swagger.annotations.ApiModelProperty; +import com.baomidou.mybatisplus.annotation.TableField; import lombok.Data; -import javax.validation.constraints.NotNull; - /** - * 退款前验证 + * 生成订单Vo对象 * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -18,18 +16,29 @@ import javax.validation.constraints.NotNull; * +---------------------------------------------------------------------- */ @Data -public class OrderRefundVerifyRequest { - @ApiModelProperty(value = "退款备注说明") - private String refund_reason_wap_explain; +public class ShopOrderAddressInfoAddVo { - @ApiModelProperty(value = "退款凭证图片") - private String refund_reason_wap_img; + /** 收件人姓名 */ + @TableField(value = "receiver_name") + private String receiverName; - @ApiModelProperty(value = "退款原因") - @NotNull(message = "退款原因 不能为空") - private String text; + /** 详细收货地址信息 */ + @TableField(value = "detailed_address") + private String detailedAddress; - @ApiModelProperty(value = "待退款订单") - @NotNull(message = "待退款订单 不能为空") - private String uni; + /** 收件人手机号码 */ + @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 00000000..c5a38b7d --- /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~2020 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 00000000..e495170c --- /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~2020 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 00000000..54f5d9fe --- /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~2020 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 00000000..46c02b9a --- /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~2020 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 00000000..6a57835c --- /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~2020 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 00000000..84bd50e5 --- /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~2020 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 00000000..42056da9 --- /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~2020 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 00000000..94a9b02b --- /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~2020 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 00000000..70547740 --- /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~2020 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 00000000..950d1844 --- /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~2020 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 00000000..8c7a66d4 --- /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~2020 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 00000000..2b592c38 --- /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~2020 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 00000000..89252049 --- /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~2020 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 00000000..37522d9b --- /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~2020 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 00000000..0df24475 --- /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~2020 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 00000000..d0e8cbe7 --- /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~2020 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 00000000..0ae4c436 --- /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~2020 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/src/main/java/com/zbkj/crmeb/front/response/ComputeOrderResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopSpuCommonVo.java similarity index 55% rename from crmeb/src/main/java/com/zbkj/crmeb/front/response/ComputeOrderResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopSpuCommonVo.java index 8682b04c..f277eb3e 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/ComputeOrderResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/ShopSpuCommonVo.java @@ -1,11 +1,10 @@ -package com.zbkj.crmeb.front.response; +package com.zbkj.common.vo; +import com.baomidou.mybatisplus.annotation.TableField; import lombok.Data; -import java.math.BigDecimal; - /** - * 计算订单价格 response + * 自定义交易组件商品公共Vo * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -17,18 +16,17 @@ import java.math.BigDecimal; * +---------------------------------------------------------------------- */ @Data -public class ComputeOrderResponse { - private BigDecimal totalPrice; - // 支付金额 - private BigDecimal payPrice; - // 邮费金额 - private BigDecimal payPostage; - // 优惠券金额 - private BigDecimal couponPrice; - // 扣除金额 - private BigDecimal deductionPrice; - // 使用金粉 - private Integer usedIntegral; - // 剩余积分 - private Integer SurplusIntegral; +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 00000000..31f18da3 --- /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~2020 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 00000000..09e0a661 --- /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~2020 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 00000000..7484cf4d --- /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~2020 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 00000000..8e1e137c --- /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~2020 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 00000000..bcf4e5f6 --- /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~2020 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 00000000..a24d160a --- /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~2020 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/src/main/java/com/zbkj/crmeb/store/vo/StoreOrderInfoOldVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/StoreOrderInfoOldVo.java similarity index 77% rename from crmeb/src/main/java/com/zbkj/crmeb/store/vo/StoreOrderInfoOldVo.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/StoreOrderInfoOldVo.java index 508daedb..8518eb64 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/vo/StoreOrderInfoOldVo.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/StoreOrderInfoOldVo.java @@ -1,22 +1,13 @@ -package com.zbkj.crmeb.store.vo; +package com.zbkj.common.vo; -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.zbkj.crmeb.front.vo.OrderInfoDetailVo; -import com.zbkj.crmeb.store.model.StoreOrderInfo; -import com.zbkj.crmeb.store.response.StoreCartResponse; 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 java.io.Serializable; -import java.math.BigDecimal; /** * 订单购物详情表 diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/vo/StoreOrderInfoVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/StoreOrderInfoVo.java similarity index 92% rename from crmeb/src/main/java/com/zbkj/crmeb/store/vo/StoreOrderInfoVo.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/StoreOrderInfoVo.java index 9423ffcf..fdfe2dc5 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/vo/StoreOrderInfoVo.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/StoreOrderInfoVo.java @@ -1,8 +1,6 @@ -package com.zbkj.crmeb.store.vo; +package com.zbkj.common.vo; import com.baomidou.mybatisplus.annotation.TableField; -import com.zbkj.crmeb.front.vo.OrderInfoDetailVo; -import com.zbkj.crmeb.store.response.StoreCartResponse; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/vo/SystemCityTreeVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SystemCityTreeVo.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/system/vo/SystemCityTreeVo.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SystemCityTreeVo.java index c59d44e3..92093bcf 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/vo/SystemCityTreeVo.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SystemCityTreeVo.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.system.vo; +package com.zbkj.common.vo; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/vo/SystemConfigFormItemConfigRegListVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SystemConfigFormItemConfigRegListVo.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/system/vo/SystemConfigFormItemConfigRegListVo.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SystemConfigFormItemConfigRegListVo.java index 1501806c..07f02847 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/vo/SystemConfigFormItemConfigRegListVo.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SystemConfigFormItemConfigRegListVo.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.system.vo; +package com.zbkj.common.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/vo/SystemConfigFormItemConfigVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SystemConfigFormItemConfigVo.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/system/vo/SystemConfigFormItemConfigVo.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SystemConfigFormItemConfigVo.java index 10cf9961..caa706d8 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/vo/SystemConfigFormItemConfigVo.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SystemConfigFormItemConfigVo.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.system.vo; +package com.zbkj.common.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/vo/SystemConfigFormItemVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SystemConfigFormItemVo.java similarity index 95% rename from crmeb/src/main/java/com/zbkj/crmeb/system/vo/SystemConfigFormItemVo.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SystemConfigFormItemVo.java index 9727acca..d728e8ce 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/vo/SystemConfigFormItemVo.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SystemConfigFormItemVo.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.system.vo; +package com.zbkj.common.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -6,7 +6,6 @@ import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; -import javax.validation.constraints.NotBlank; import java.io.Serializable; /** diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/vo/SystemConfigFormVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SystemConfigFormVo.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/system/vo/SystemConfigFormVo.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SystemConfigFormVo.java index fcfff0dc..f1326173 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/vo/SystemConfigFormVo.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SystemConfigFormVo.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.system.vo; +package com.zbkj.common.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/vo/SystemGroupDataRechargeConfigVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SystemGroupDataRechargeConfigVo.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/system/vo/SystemGroupDataRechargeConfigVo.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SystemGroupDataRechargeConfigVo.java index 577c2633..22edfe06 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/vo/SystemGroupDataRechargeConfigVo.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SystemGroupDataRechargeConfigVo.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.system.vo; +package com.zbkj.common.vo; import com.baomidou.mybatisplus.annotation.TableId; import io.swagger.annotations.ApiModel; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/vo/SystemGroupDataSignConfigVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SystemGroupDataSignConfigVo.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/system/vo/SystemGroupDataSignConfigVo.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SystemGroupDataSignConfigVo.java index a40054bd..87332424 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/vo/SystemGroupDataSignConfigVo.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SystemGroupDataSignConfigVo.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.system.vo; +package com.zbkj.common.vo; import com.baomidou.mybatisplus.annotation.TableId; import io.swagger.annotations.ApiModel; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/vo/SystemStoreNearVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SystemStoreNearVo.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/system/vo/SystemStoreNearVo.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SystemStoreNearVo.java index 5ddba5ce..7eb378af 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/vo/SystemStoreNearVo.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/SystemStoreNearVo.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.system.vo; +package com.zbkj.common.vo; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/TemplateMessageVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/TemplateMessageVo.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/TemplateMessageVo.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/TemplateMessageVo.java index 7996e86e..48e4778a 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/TemplateMessageVo.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/TemplateMessageVo.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.wechat.vo; +package com.zbkj.common.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; 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 00000000..97f1b15f --- /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~2020 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/src/main/java/com/zbkj/crmeb/user/response/BillType.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/UploadCommonVo.java similarity index 70% rename from crmeb/src/main/java/com/zbkj/crmeb/user/response/BillType.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/UploadCommonVo.java index 7aa82218..f11593c0 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/response/BillType.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/UploadCommonVo.java @@ -1,9 +1,10 @@ -package com.zbkj.crmeb.user.response; +package com.zbkj.common.vo; import lombok.Data; /** - * 资金操作类型 + * 文件公共上传对象 + * * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -15,12 +16,21 @@ import lombok.Data; * +---------------------------------------------------------------------- */ @Data -public class BillType { - public BillType(String title, String type) { - this.title = title; - this.type = type; - } +public class UploadCommonVo { - private String title; + //服务器存储地址 + private String rootPath; + + //类型 private String type; + + //模块 + private String modelPath; + + //扩展名 + private String extStr; + + //文件大小上限 + private int size; + } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/finance/model/UserFundsMonitor.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/UserFundsMonitor.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/finance/model/UserFundsMonitor.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/UserFundsMonitor.java index 3f05ad32..998c8ac7 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/finance/model/UserFundsMonitor.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/UserFundsMonitor.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.finance.model; +package com.zbkj.common.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/vo/UserSignMonthVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/UserSignMonthVo.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/user/vo/UserSignMonthVo.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/UserSignMonthVo.java index f2838cf3..9ea076e0 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/vo/UserSignMonthVo.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/UserSignMonthVo.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.user.vo; +package com.zbkj.common.vo; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/vo/UserSignVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/UserSignVo.java similarity index 98% rename from crmeb/src/main/java/com/zbkj/crmeb/user/vo/UserSignVo.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/UserSignVo.java index 13ef70d7..31bbcaf0 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/vo/UserSignVo.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/UserSignVo.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.user.vo; +package com.zbkj.common.vo; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; 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 00000000..4efb0a26 --- /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~2020 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/src/main/java/com/zbkj/crmeb/wechat/response/WeChatAuthorizeLoginUserInfoResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/WeChatAuthorizeLoginUserInfoVo.java similarity index 90% rename from crmeb/src/main/java/com/zbkj/crmeb/wechat/response/WeChatAuthorizeLoginUserInfoResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/WeChatAuthorizeLoginUserInfoVo.java index ced641bd..e5a83da4 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/response/WeChatAuthorizeLoginUserInfoResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/WeChatAuthorizeLoginUserInfoVo.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.wechat.response; +package com.zbkj.common.vo; import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.annotations.ApiModel; @@ -24,8 +24,8 @@ import java.io.Serializable; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@ApiModel(value="WeChatAuthorizeLoginUserInfoResponse对象", description="获取微信用户信息") -public class WeChatAuthorizeLoginUserInfoResponse implements Serializable { +@ApiModel(value="WeChatAuthorizeLoginUserInfoVo对象", description="获取微信用户信息") +public class WeChatAuthorizeLoginUserInfoVo implements Serializable { private static final long serialVersionUID=1L; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/response/WeChatProgramAuthorizeLoginGetOpenIdResponse.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/WeChatMiniAuthorizeVo.java similarity index 77% rename from crmeb/src/main/java/com/zbkj/crmeb/wechat/response/WeChatProgramAuthorizeLoginGetOpenIdResponse.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/WeChatMiniAuthorizeVo.java index 3412f375..63dbf732 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/response/WeChatProgramAuthorizeLoginGetOpenIdResponse.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/WeChatMiniAuthorizeVo.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.wechat.response; +package com.zbkj.common.vo; import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.annotations.ApiModel; @@ -24,20 +24,20 @@ import java.io.Serializable; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@ApiModel(value="WeChatProgramAuthorizeLoginGetOpenIdResponse对象", description="微信小程序用户授权返回数据") -public class WeChatProgramAuthorizeLoginGetOpenIdResponse implements Serializable { +@ApiModel(value="WeChatMiniAuthorizeVo对象", description="微信小程序用户授权返回数据") +public class WeChatMiniAuthorizeVo implements Serializable { private static final long serialVersionUID=1L; - @ApiModelProperty(value = "token") + @ApiModelProperty(value = "会话密钥") @TableField(value = "session_key") private String sessionKey; - @ApiModelProperty(value = "过期时间") + @ApiModelProperty(value = "用户唯一标识") @TableField(value = "openid") private String openId; - @ApiModelProperty(value = "unionid") + @ApiModelProperty(value = "用户在开放平台的唯一标识符,若当前小程序已绑定到微信开放平台帐号下会返回") @TableField(value = "unionid") private String unionId; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/export/vo/ExcelColumn.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/WechatVideoUploadImageResponseVo.java similarity index 72% rename from crmeb/src/main/java/com/zbkj/crmeb/export/vo/ExcelColumn.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/WechatVideoUploadImageResponseVo.java index 921f92e9..37bc7aaf 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/export/vo/ExcelColumn.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/WechatVideoUploadImageResponseVo.java @@ -1,8 +1,9 @@ -package com.zbkj.crmeb.export.vo; +package com.zbkj.common.vo; -import java.lang.annotation.*; +import lombok.Data; -/** Excel 配置 +/** + * * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -13,12 +14,13 @@ import java.lang.annotation.*; * | Author: CRMEB Team * +---------------------------------------------------------------------- */ -@Target({ElementType.FIELD}) -@Retention(RetentionPolicy.RUNTIME) -@Documented -public @interface ExcelColumn { +@Data +public class WechatVideoUploadImageResponseVo extends BaseResultResponseVo { - String value() default ""; + private imageInfo img_info; - int col() default 0; + @Data + class imageInfo{ + private String media_id; + } } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/vo/WxPayJsResultVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/WxPayJsResultVo.java similarity index 96% rename from crmeb/src/main/java/com/zbkj/crmeb/front/vo/WxPayJsResultVo.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/WxPayJsResultVo.java index e1da1903..a84d4a17 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/vo/WxPayJsResultVo.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/WxPayJsResultVo.java @@ -1,6 +1,5 @@ -package com.zbkj.crmeb.front.vo; +package com.zbkj.common.vo; -import com.utils.WxPayUtil; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/payment/vo/wechat/WxRefundResponseVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/WxRefundResponseVo.java similarity index 99% rename from crmeb/src/main/java/com/zbkj/crmeb/payment/vo/wechat/WxRefundResponseVo.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/WxRefundResponseVo.java index ae5a8d49..c6987e11 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/payment/vo/wechat/WxRefundResponseVo.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/WxRefundResponseVo.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.payment.vo.wechat; +package com.zbkj.common.vo; import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.annotations.ApiModel; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/payment/vo/wechat/WxRefundVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/WxRefundVo.java similarity index 95% rename from crmeb/src/main/java/com/zbkj/crmeb/payment/vo/wechat/WxRefundVo.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/WxRefundVo.java index bcc97858..cb5a9a60 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/payment/vo/wechat/WxRefundVo.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/WxRefundVo.java @@ -1,15 +1,12 @@ -package com.zbkj.crmeb.payment.vo.wechat; +package com.zbkj.common.vo; -import com.constants.WeChatConstants; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; -import java.math.BigDecimal; - /** * 调用微信退款所需要的参数 * +---------------------------------------------------------------------- diff --git a/crmeb/src/main/java/com/utils/vo/dateLimitUtilVo.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/dateLimitUtilVo.java similarity index 97% rename from crmeb/src/main/java/com/utils/vo/dateLimitUtilVo.java rename to crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/dateLimitUtilVo.java index 0cd32e40..70e65593 100644 --- a/crmeb/src/main/java/com/utils/vo/dateLimitUtilVo.java +++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/vo/dateLimitUtilVo.java @@ -1,4 +1,4 @@ -package com.utils.vo; +package com.zbkj.common.vo; import lombok.Data; diff --git a/crmeb/crmeb-front/pom.xml b/crmeb/crmeb-front/pom.xml new file mode 100644 index 00000000..af88cbb4 --- /dev/null +++ b/crmeb/crmeb-front/pom.xml @@ -0,0 +1,76 @@ + + + + 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 + + + + 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 00000000..b895fd72 --- /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~2020 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 00000000..9387192c --- /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 00000000..a85aa4ff --- /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~2020 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 00000000..66e2f9bd --- /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~2020 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 00000000..a7f01aaa --- /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~2020 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); + } + +} \ No newline at end of file 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 00000000..10f770d6 --- /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~2020 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 00000000..85e139fa --- /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~2020 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 00000000..0925b43b --- /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~2020 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/src/main/java/com/zbkj/crmeb/config/WebConfig.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/config/WebConfig.java similarity index 65% rename from crmeb/src/main/java/com/zbkj/crmeb/config/WebConfig.java rename to crmeb/crmeb-front/src/main/java/com/zbkj/front/config/WebConfig.java index 3133d20d..aa29d77c 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/config/WebConfig.java +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/config/WebConfig.java @@ -1,10 +1,8 @@ -package com.zbkj.crmeb.config; +package com.zbkj.front.config; -import com.filter.ResponseFilter; -import com.interceptor.AdminAuthInterceptor; -import com.interceptor.AdminTokenInterceptor; -import com.interceptor.FrontTokenInterceptor; -import com.interceptor.SwaggerInterceptor; +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; @@ -34,17 +32,6 @@ public class WebConfig implements WebMvcConfigurer { // 这里使用一个Bean为的是可以在拦截器中自由注入,也可以在拦截器中使用SpringUtil.getBean 获取 // 但是觉得这样更优雅 - @Bean - public HandlerInterceptor adminAuthInterceptor(){ - return new AdminAuthInterceptor(); - } - - - @Bean - public HandlerInterceptor adminTokenInterceptor(){ - return new AdminTokenInterceptor(); - } - @Bean public HandlerInterceptor frontTokenInterceptor(){ return new FrontTokenInterceptor(); @@ -67,35 +54,10 @@ public class WebConfig implements WebMvcConfigurer { //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/**"); - - //前端用户登录token registry.addInterceptor(frontTokenInterceptor()). addPathPatterns("/api/front/**"). + excludePathPatterns("/api/front/index"). excludePathPatterns("/api/front/qrcode/**"). excludePathPatterns("/api/front/login/mobile"). excludePathPatterns("/api/front/login"). @@ -106,12 +68,12 @@ public class WebConfig implements WebMvcConfigurer { 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/index"). excludePathPatterns("/api/front/config"). excludePathPatterns("/api/front/category"). excludePathPatterns("/api/front/seckill/*"). @@ -124,7 +86,9 @@ public class WebConfig implements WebMvcConfigurer { excludePathPatterns("api/front/bargain/index"). excludePathPatterns("api/front/combination/index"). excludePathPatterns("api/front/index/product/*"). -// excludePathPatterns("/api/front/cart/count"). + excludePathPatterns("api/front/index/color/config"). + excludePathPatterns("api/front/image/domain"). + excludePathPatterns("api/front/product/leaderboard"). excludePathPatterns("/swagger-resources/**", "/webjars/**", "/v2/**", "/swagger-ui.html/**"); } @@ -150,21 +114,6 @@ public class WebConfig implements WebMvcConfigurer { @Bean @ConditionalOnProperty(name = "swagger.basic.enable", havingValue = "true") public MappedInterceptor getMappedInterceptor() { - return new MappedInterceptor(new String[]{"/doc.html", "/webjars/**"}, new SwaggerInterceptor(username, password, check)); } - // 验证参数是否完全匹配 -// @Override -// public void configureMessageConverters(List> converters) { -// WebMvcConfigurer.super.configureMessageConverters(converters); -// MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter(getObjectMapper()); -// converters.add(jackson2HttpMessageConverter); -// } -// @Bean -// public ObjectMapper getObjectMapper() { -// ObjectMapper mapper = new ObjectMapper(); -// mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, true); -// mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); -// return mapper; -// } } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/controller/ArticleController.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/ArticleController.java similarity index 83% rename from crmeb/src/main/java/com/zbkj/crmeb/front/controller/ArticleController.java rename to crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/ArticleController.java index 6522697a..1cc2ac3e 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/controller/ArticleController.java +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/ArticleController.java @@ -1,12 +1,12 @@ -package com.zbkj.crmeb.front.controller; +package com.zbkj.front.controller; -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.PageParamRequest; -import com.zbkj.crmeb.article.model.Article; -import com.zbkj.crmeb.article.service.ArticleService; -import com.zbkj.crmeb.category.model.Category; -import com.zbkj.crmeb.front.response.ArticleResponse; +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; @@ -32,7 +32,6 @@ import org.springframework.web.bind.annotation.*; @RestController("ArticleFrontController") @RequestMapping("api/front/article") @Api(tags = "文章") - public class ArticleController { @Autowired @@ -40,12 +39,11 @@ public class ArticleController { /** * 分页列表 - * @return */ @ApiOperation(value = "分页列表") @RequestMapping(value = "/list/{cid}", method = RequestMethod.GET) public CommonResult> getList(@PathVariable(name="cid") String cid, - @Validated PageParamRequest pageParamRequest){ + @Validated PageParamRequest pageParamRequest) { return CommonResult.success(CommonPage.restPage(articleService.getList(cid, pageParamRequest))); } @@ -54,7 +52,7 @@ public class ArticleController { */ @ApiOperation(value = "热门列表") @RequestMapping(value = "/hot/list", method = RequestMethod.GET) - public CommonResult> getHotList(){ + public CommonResult> getHotList() { return CommonResult.success(CommonPage.restPage(articleService.getHotList())); } @@ -63,7 +61,7 @@ public class ArticleController { */ @ApiOperation(value = "轮播列表") @RequestMapping(value = "/banner/list", method = RequestMethod.GET) - public CommonResult> getList(){ + public CommonResult> getList() { return CommonResult.success(CommonPage.restPage(articleService.getBannerList())); } @@ -72,7 +70,7 @@ public class ArticleController { */ @ApiOperation(value = "文章分类列表") @RequestMapping(value = "/category/list", method = RequestMethod.GET) - public CommonResult> categoryList(){ + public CommonResult> categoryList() { return CommonResult.success(CommonPage.restPage(articleService.getCategoryList())); } @@ -83,7 +81,7 @@ public class ArticleController { @ApiOperation(value = "详情") @RequestMapping(value = "/info", method = RequestMethod.GET) @ApiImplicitParam(name="id", value="文章ID") - public CommonResult info(@RequestParam(value = "id") Integer id){ + public CommonResult info(@RequestParam(value = "id") Integer id) { return CommonResult.success(articleService.getVoByFront(id)); } } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/controller/BargainController.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/BargainController.java similarity index 90% rename from crmeb/src/main/java/com/zbkj/crmeb/front/controller/BargainController.java rename to crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/BargainController.java index b2ec522a..fc794a50 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/controller/BargainController.java +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/BargainController.java @@ -1,14 +1,13 @@ -package com.zbkj.crmeb.front.controller; +package com.zbkj.front.controller; -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.PageParamRequest; +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.crmeb.bargain.service.StoreBargainService; -import com.zbkj.crmeb.bargain.service.StoreBargainUserHelpService; -import com.zbkj.crmeb.bargain.service.StoreBargainUserService; -import com.zbkj.crmeb.front.request.BargainFrontRequest; -import com.zbkj.crmeb.front.response.*; +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; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/controller/CartController.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/CartController.java similarity index 74% rename from crmeb/src/main/java/com/zbkj/crmeb/front/controller/CartController.java rename to crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/CartController.java index 1242388e..dcb3dcdf 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/controller/CartController.java +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/CartController.java @@ -1,22 +1,19 @@ -package com.zbkj.crmeb.front.controller; +package com.zbkj.front.controller; -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.PageParamRequest; -import com.exception.CrmebException; -import com.zbkj.crmeb.front.request.CartNumRequest; -import com.zbkj.crmeb.front.request.CartRequest; -import com.zbkj.crmeb.front.request.CartResetRequest; -import com.zbkj.crmeb.front.response.CartInfoResponse; -import com.zbkj.crmeb.store.model.StoreCart; -import com.zbkj.crmeb.store.service.StoreCartService; +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.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -57,8 +54,7 @@ public class CartController { @ApiImplicitParam(name="page", value="页码", required = true), @ApiImplicitParam(name="limit", value="每页数量", required = true) }) - public CommonResult> getList(@RequestParam Boolean isValid, @Validated PageParamRequest pageParamRequest){ - + public CommonResult> getList(@RequestParam Boolean isValid, @Validated PageParamRequest pageParamRequest) { CommonPage restPage = CommonPage.restPage(storeCartService.getList(pageParamRequest, isValid)); return CommonResult.success(restPage); } @@ -69,15 +65,13 @@ public class CartController { */ @ApiOperation(value = "新增") @RequestMapping(value = "/save", method = RequestMethod.POST) - public CommonResult> save(@RequestBody @Validated CartRequest storeCartRequest){ - StoreCart storeCart = new StoreCart(); - BeanUtils.copyProperties(storeCartRequest, storeCart); - String cartId = storeCartService.saveCate(storeCart); - if(StringUtils.isNotBlank(cartId)){ + 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{ + } else { return CommonResult.failed(); } } @@ -88,10 +82,10 @@ public class CartController { */ @ApiOperation(value = "删除") @RequestMapping(value = "/delete", method = RequestMethod.POST) - public CommonResult delete(@RequestParam(value = "ids") List ids){ - if(storeCartService.removeByIds(ids)){ + public CommonResult delete(@RequestParam(value = "ids") List ids) { + if (storeCartService.deleteCartByIds(ids)) { return CommonResult.success(); - }else{ + } else { return CommonResult.failed(); } } @@ -103,27 +97,20 @@ public class CartController { */ @ApiOperation(value = "修改") @RequestMapping(value = "/num", method = RequestMethod.POST) - public CommonResult update(@RequestParam Integer id, @RequestParam Integer number){ - if(null == number) throw new CrmebException("商品数量不合法"); - if(number <=0 || number > 99) throw new CrmebException("商品数量不能小于1大于99"); - StoreCart storeCart = storeCartService.getById(id); - if(null == storeCart) throw new CrmebException("当前购物车不存在"); - storeCart.setId(Long.valueOf(id)); - storeCart.setCartNum(number); - if(storeCartService.updateById(storeCart)){ + public CommonResult update(@RequestParam Integer id, @RequestParam Integer number) { + if (storeCartService.updateCartNum(id, number)) { return CommonResult.success(); - }else{ + } else { return CommonResult.failed(); } } - /** * 获取购物车数量 */ @ApiOperation(value = "获取购物车数量") @RequestMapping(value = "/count", method = RequestMethod.GET) - public CommonResult> count(@Validated CartNumRequest request){ + public CommonResult> count(@Validated CartNumRequest request) { return CommonResult.success(storeCartService.getUserCount(request)); } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/controller/CityController.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/CityController.java similarity index 89% rename from crmeb/src/main/java/com/zbkj/crmeb/front/controller/CityController.java rename to crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/CityController.java index 7b4de3c8..5c45b24d 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/controller/CityController.java +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/CityController.java @@ -1,8 +1,8 @@ -package com.zbkj.crmeb.front.controller; +package com.zbkj.front.controller; -import com.common.CommonResult; -import com.zbkj.crmeb.system.service.SystemCityService; +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; @@ -34,8 +34,6 @@ public class CityController { /** * 城市服务树形结构数据 - * @author Mr.Zhang - * @since 2020-06-01 */ @ApiOperation(value = "树形结构") @RequestMapping(value = "/list", method = RequestMethod.GET) diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/controller/CombinationController.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/CombinationController.java similarity index 89% rename from crmeb/src/main/java/com/zbkj/crmeb/front/controller/CombinationController.java rename to crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/CombinationController.java index 4a2dc31f..40b41b22 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/controller/CombinationController.java +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/CombinationController.java @@ -1,13 +1,12 @@ -package com.zbkj.crmeb.front.controller; +package com.zbkj.front.controller; -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.PageParamRequest; +import com.zbkj.common.page.CommonPage; +import com.zbkj.common.request.PageParamRequest; import com.github.pagehelper.PageInfo; -import com.zbkj.crmeb.combination.model.StoreCombination; -import com.zbkj.crmeb.combination.request.StorePinkRequest; -import com.zbkj.crmeb.combination.service.StoreCombinationService; -import com.zbkj.crmeb.front.response.*; +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; @@ -50,12 +49,12 @@ public class CombinationController { */ @ApiOperation(value = "拼团商品列表header") @RequestMapping(value = "/header", method = RequestMethod.GET) - public CommonResult header(){ + public CommonResult header() { return CommonResult.success(storeCombinationService.getHeader()); } /** - * 砍价商品列表 + * 拼团商品列表 */ @ApiOperation(value = "拼团商品列表") @RequestMapping(value = "/list", method = RequestMethod.GET) diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/controller/CouponController.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/CouponController.java similarity index 85% rename from crmeb/src/main/java/com/zbkj/crmeb/front/controller/CouponController.java rename to crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/CouponController.java index 15c12939..51efaa0d 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/controller/CouponController.java +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/CouponController.java @@ -1,11 +1,11 @@ -package com.zbkj.crmeb.front.controller; +package com.zbkj.front.controller; -import com.common.CommonResult; -import com.common.PageParamRequest; -import com.zbkj.crmeb.marketing.response.StoreCouponFrontResponse; -import com.zbkj.crmeb.marketing.response.StoreCouponUserOrder; -import com.zbkj.crmeb.marketing.service.StoreCouponService; -import com.zbkj.crmeb.marketing.service.StoreCouponUserService; +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; @@ -58,7 +58,7 @@ public class CouponController { @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){ + @RequestParam(value = "productId", defaultValue = "0") int productId, @Validated PageParamRequest pageParamRequest) { return CommonResult.success(storeCouponService.getH5List(type, productId, pageParamRequest)); } @@ -67,7 +67,7 @@ public class CouponController { */ @ApiOperation(value = "当前订单可用优惠券") @RequestMapping(value = "coupons/order/{preOrderNo}", method = RequestMethod.GET) - public CommonResult> getCouponsListByPreOrderNo(@PathVariable String preOrderNo){ + public CommonResult> getCouponsListByPreOrderNo(@PathVariable String preOrderNo) { return CommonResult.success(storeCouponUserService.getListByPreOrderNo(preOrderNo)); } } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/controller/IndexController.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/IndexController.java similarity index 63% rename from crmeb/src/main/java/com/zbkj/crmeb/front/controller/IndexController.java rename to crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/IndexController.java index b2bd3c62..0b340e76 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/controller/IndexController.java +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/IndexController.java @@ -1,14 +1,13 @@ -package com.zbkj.crmeb.front.controller; +package com.zbkj.front.controller; -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.PageParamRequest; -import com.constants.Constants; -import com.zbkj.crmeb.front.response.IndexInfoResponse; -import com.zbkj.crmeb.front.response.IndexProductBannerResponse; -import com.zbkj.crmeb.front.response.IndexProductResponse; -import com.zbkj.crmeb.front.service.IndexService; +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; @@ -21,6 +20,7 @@ import org.springframework.web.bind.annotation.RestController; import java.util.HashMap; import java.util.List; +import java.util.Map; /** * 用户 -- 用户中心 @@ -43,25 +43,12 @@ public class IndexController { @Autowired private IndexService indexService; - /** - * 首页产品的轮播图和产品信息 - */ - @ApiOperation(value = "首页产品的轮播图和产品信息") - @RequestMapping(value = "/groom/list/{type}", method = RequestMethod.GET) - @ApiImplicitParam(name = "type", value = "类型 【1 精品推荐 2 热门榜单 3首发新品 4促销单品】", dataType = "int", required = true) - public CommonResult getProductBanner(@PathVariable(value = "type") int type, PageParamRequest pageParamRequest){ - if(type < Constants.INDEX_RECOMMEND_BANNER || type > Constants.INDEX_BENEFIT_BANNER){ - return CommonResult.validateFailed(); - } - return CommonResult.success(indexService.getProductBanner(type, pageParamRequest)); - } - /** * 首页数据 */ @ApiOperation(value = "首页数据") @RequestMapping(value = "/index", method = RequestMethod.GET) - public CommonResult getIndexInfo(){ + public CommonResult getIndexInfo() { return CommonResult.success(indexService.getIndexInfo()); } @@ -71,10 +58,8 @@ public class IndexController { @ApiOperation(value = "首页商品列表") @RequestMapping(value = "/index/product/{type}", method = RequestMethod.GET) @ApiImplicitParam(name = "type", value = "类型 【1 精品推荐 2 热门榜单 3首发新品 4促销单品】", dataType = "int", required = true) - public CommonResult> getProductBanner(@PathVariable(value = "type") Integer type, PageParamRequest pageParamRequest){ - if(type < Constants.INDEX_RECOMMEND_BANNER || type > Constants.INDEX_BENEFIT_BANNER){ - return CommonResult.validateFailed(); - } + public CommonResult> getProductList(@PathVariable(value = "type") Integer type, PageParamRequest pageParamRequest) { + return CommonResult.success(indexService.findIndexProductList(type, pageParamRequest)); } @@ -83,7 +68,7 @@ public class IndexController { */ @ApiOperation(value = "热门搜索") @RequestMapping(value = "/search/keyword", method = RequestMethod.GET) - public CommonResult>> hotKeywords(){ + public CommonResult>> hotKeywords() { return CommonResult.success(indexService.hotKeywords()); } @@ -92,10 +77,36 @@ public class IndexController { */ @ApiOperation(value = "分享配置") @RequestMapping(value = "/share", method = RequestMethod.GET) - public CommonResult> share(){ + 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/src/main/java/com/zbkj/crmeb/front/controller/LoginController.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/LoginController.java similarity index 78% rename from crmeb/src/main/java/com/zbkj/crmeb/front/controller/LoginController.java rename to crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/LoginController.java index d7df62c7..7b1ab010 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/controller/LoginController.java +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/LoginController.java @@ -1,15 +1,12 @@ -package com.zbkj.crmeb.front.controller; +package com.zbkj.front.controller; -import com.common.CheckAdminToken; -import com.common.CommonResult; -import com.utils.ValidateFormUtil; -import com.zbkj.crmeb.front.request.LoginMobileRequest; -import com.zbkj.crmeb.front.request.LoginRequest; -import com.zbkj.crmeb.front.response.LoginResponse; -import com.zbkj.crmeb.front.service.LoginService; -import com.zbkj.crmeb.sms.service.SmsService; -import com.zbkj.crmeb.user.service.UserService; +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; @@ -39,25 +36,18 @@ import javax.servlet.http.HttpServletRequest; @Api(tags = "用户 -- 登录注册") public class LoginController { - @Autowired - private UserService userService; - - @Autowired - CheckAdminToken checkAdminToken; - @Autowired private SmsService smsService; @Autowired private LoginService loginService; - /** * 手机号登录接口 */ @ApiOperation(value = "手机号登录接口") @RequestMapping(value = "/login/mobile", method = RequestMethod.POST) - public CommonResult phoneLogin(@RequestBody @Validated LoginMobileRequest loginRequest) throws Exception { + public CommonResult phoneLogin(@RequestBody @Validated LoginMobileRequest loginRequest) { return CommonResult.success(loginService.phoneLogin(loginRequest)); } @@ -66,7 +56,7 @@ public class LoginController { */ @ApiOperation(value = "账号密码登录") @RequestMapping(value = "/login", method = RequestMethod.POST) - public CommonResult login(@RequestBody @Validated LoginRequest loginRequest) throws Exception { + public CommonResult login(@RequestBody @Validated LoginRequest loginRequest) { return CommonResult.success(loginService.login(loginRequest)); } @@ -77,7 +67,7 @@ public class LoginController { @ApiOperation(value = "退出") @RequestMapping(value = "/logout", method = RequestMethod.GET) public CommonResult loginOut(HttpServletRequest request){ - userService.loginOut(checkAdminToken.getTokenFormRequest(request)); + loginService.loginOut(request); return CommonResult.success(); } @@ -92,7 +82,6 @@ public class LoginController { @ApiImplicitParam(name="phone", value="手机号码", required = true) }) public CommonResult sendCode(@RequestParam String phone){ - ValidateFormUtil.isPhone(phone,"手机号码错误"); if(smsService.sendCommonCode(phone)){ return CommonResult.success("发送成功"); }else{ diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/controller/PayController.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/PayController.java similarity index 86% rename from crmeb/src/main/java/com/zbkj/crmeb/front/controller/PayController.java rename to crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/PayController.java index d3f77020..a7d31b8b 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/controller/PayController.java +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/PayController.java @@ -1,11 +1,11 @@ -package com.zbkj.crmeb.front.controller; +package com.zbkj.front.controller; -import com.common.CommonResult; -import com.utils.CrmebUtil; -import com.zbkj.crmeb.front.request.OrderPayRequest; -import com.zbkj.crmeb.front.response.OrderPayResultResponse; -import com.zbkj.crmeb.payment.service.OrderPayService; -import com.zbkj.crmeb.payment.wechat.WeChatPayService; +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; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/controller/ProductController.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/ProductController.java similarity index 67% rename from crmeb/src/main/java/com/zbkj/crmeb/front/controller/ProductController.java rename to crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/ProductController.java index 296fe01a..d61f1748 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/controller/ProductController.java +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/ProductController.java @@ -1,13 +1,14 @@ -package com.zbkj.crmeb.front.controller; +package com.zbkj.front.controller; -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.PageParamRequest; -import com.zbkj.crmeb.category.vo.CategoryTreeVo; -import com.zbkj.crmeb.front.request.ProductRequest; -import com.zbkj.crmeb.front.response.*; -import com.zbkj.crmeb.front.service.ProductService; +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; @@ -44,7 +45,7 @@ public class ProductController { */ @ApiOperation(value = "热门商品推荐") @RequestMapping(value = "/product/hot", method = RequestMethod.GET) - public CommonResult> getHotProductList(@Validated PageParamRequest pageParamRequest){ + public CommonResult> getHotProductList(@Validated PageParamRequest pageParamRequest) { return CommonResult.success(productService.getHotProductList(pageParamRequest)); } @@ -53,7 +54,7 @@ public class ProductController { */ @ApiOperation(value = "优选商品推荐") @RequestMapping(value = "/product/good", method = RequestMethod.GET) - public CommonResult> getGoodProductList(){ + public CommonResult> getGoodProductList() { return CommonResult.success(productService.getGoodProductList()); } @@ -62,7 +63,7 @@ public class ProductController { */ @ApiOperation(value = "获取分类") @RequestMapping(value = "/category", method = RequestMethod.GET) - public CommonResult> getCategory(){ + public CommonResult> getCategory() { return CommonResult.success(productService.getCategory()); } @@ -71,7 +72,7 @@ public class ProductController { */ @ApiOperation(value = "商品列表") @RequestMapping(value = "/products", method = RequestMethod.GET) - public CommonResult> getList(@Validated ProductRequest request, @Validated PageParamRequest pageParamRequest){ + public CommonResult> getList(@Validated ProductRequest request, @Validated PageParamRequest pageParamRequest) { return CommonResult.success(productService.getList(request, pageParamRequest)); } @@ -81,7 +82,7 @@ public class ProductController { @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){ + public CommonResult getDetail(@PathVariable Integer id, @RequestParam(value = "type", defaultValue = "normal") String type) { return CommonResult.success(productService.getDetail(id, type)); } @@ -91,10 +92,8 @@ public class ProductController { @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){ + public CommonResult> getReplyList(@PathVariable Integer id, + @RequestParam(value = "type") Integer type, @Validated PageParamRequest pageParamRequest) { return CommonResult.success(CommonPage.restPage(productService.getReplyList(id, type, pageParamRequest))); } @@ -103,7 +102,7 @@ public class ProductController { */ @ApiOperation(value = "商品评论数量") @RequestMapping(value = "/reply/config/{id}", method = RequestMethod.GET) - public CommonResult getReplyCount(@PathVariable Integer id){ + public CommonResult getReplyCount(@PathVariable Integer id) { return CommonResult.success(productService.getReplyCount(id)); } @@ -112,9 +111,36 @@ public class ProductController { */ @ApiOperation(value = "商品详情评论") @RequestMapping(value = "/reply/product/{id}", method = RequestMethod.GET) - public CommonResult getProductReply(@PathVariable Integer id){ + 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/src/main/java/com/zbkj/crmeb/front/controller/QrCodeController.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/QrCodeController.java similarity index 84% rename from crmeb/src/main/java/com/zbkj/crmeb/front/controller/QrCodeController.java rename to crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/QrCodeController.java index 8c45c5ff..37a639d8 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/controller/QrCodeController.java +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/QrCodeController.java @@ -1,17 +1,16 @@ -package com.zbkj.crmeb.front.controller; +package com.zbkj.front.controller; import com.alibaba.fastjson.JSONObject; -import com.common.CommonResult; -import com.constants.Constants; -import com.exception.CrmebException; -import com.zbkj.crmeb.front.service.QrCodeService; +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.io.IOException; import java.util.Map; @@ -38,20 +37,16 @@ public class QrCodeController { private QrCodeService qrCodeService; /** * 获取二维码 - * @author Mr.Zhang - * @since 2020-04-16 * @return CommonResult */ @ApiOperation(value="获取二维码") @RequestMapping(value = "/get", method = RequestMethod.POST) - public CommonResult> get(@RequestBody JSONObject data) throws IOException { + public CommonResult> get(@RequestBody JSONObject data) { return CommonResult.success(qrCodeService.get(data)); } /** * 远程图片转base64 - * @author Mr.Zhang - * @since 2020-04-16 * @return CommonResult */ @ApiOperation(value="远程图片转base64") @@ -61,9 +56,7 @@ public class QrCodeController { } /** - * 远程图片转base64 - * @author Mr.Zhang - * @since 2020-04-16 + * 将字符串 转base64 * @return CommonResult */ @ApiOperation(value="将字符串 转base64") diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/controller/SecKillController.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/SecKillController.java similarity index 79% rename from crmeb/src/main/java/com/zbkj/crmeb/front/controller/SecKillController.java rename to crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/SecKillController.java index 344cac15..0a9bc554 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/controller/SecKillController.java +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/SecKillController.java @@ -1,13 +1,9 @@ -package com.zbkj.crmeb.front.controller; +package com.zbkj.front.controller; -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.PageParamRequest; -import com.zbkj.crmeb.front.response.SecKillResponse; -import com.zbkj.crmeb.front.response.SeckillIndexResponse; -import com.zbkj.crmeb.front.response.StoreSecKillH5Response; -import com.zbkj.crmeb.seckill.response.StoreSeckillDetailResponse; -import com.zbkj.crmeb.seckill.service.StoreSeckillService; +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; @@ -43,7 +39,7 @@ public class SecKillController { */ @ApiOperation(value = "秒杀首页数据") @RequestMapping(value = "/index", method = RequestMethod.GET) - public CommonResult index(){ + public CommonResult index() { return CommonResult.success(storeSeckillService.getIndexInfo()); } @@ -53,7 +49,7 @@ public class SecKillController { */ @ApiOperation(value = "秒杀Header") @RequestMapping(value = "/header", method = RequestMethod.GET) - public CommonResult> header(){ + public CommonResult> header() { return CommonResult.success(storeSeckillService.getForH5Index()); } @@ -63,14 +59,14 @@ public class SecKillController { */ @ApiOperation(value = "秒杀列表") @RequestMapping(value = "/list/{timeId}", method = RequestMethod.GET) - public CommonResult> list(@PathVariable("timeId") String timeId, @ModelAttribute PageParamRequest pageParamRequest){ + 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){ + public CommonResult info(@PathVariable(value = "id") Integer id) { StoreSeckillDetailResponse storeSeckill = storeSeckillService.getDetailH5(id); return CommonResult.success(storeSeckill); } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/controller/StoreController.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/StoreController.java similarity index 83% rename from crmeb/src/main/java/com/zbkj/crmeb/front/controller/StoreController.java rename to crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/StoreController.java index feff773d..c0700f96 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/controller/StoreController.java +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/StoreController.java @@ -1,11 +1,11 @@ -package com.zbkj.crmeb.front.controller; +package com.zbkj.front.controller; -import com.common.CommonResult; -import com.common.PageParamRequest; -import com.zbkj.crmeb.front.request.StoreNearRequest; -import com.zbkj.crmeb.front.response.StoreNearResponse; -import com.zbkj.crmeb.system.service.SystemStoreService; +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; @@ -37,8 +37,6 @@ public class StoreController { /** * 附近的提货点 - * @author Mr.Zhang - * @since 2020-06-01 */ @ApiOperation(value = "附近的提货点") @RequestMapping(value = "/list", method = RequestMethod.POST) diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/controller/StoreOrderController.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/StoreOrderController.java similarity index 79% rename from crmeb/src/main/java/com/zbkj/crmeb/front/controller/StoreOrderController.java rename to crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/StoreOrderController.java index 69533898..56ccc12f 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/controller/StoreOrderController.java +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/StoreOrderController.java @@ -1,13 +1,9 @@ -package com.zbkj.crmeb.front.controller; +package com.zbkj.front.controller; -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.MyRecord; -import com.common.PageParamRequest; -import com.zbkj.crmeb.front.request.*; -import com.zbkj.crmeb.front.response.*; -import com.zbkj.crmeb.front.service.OrderService; -import com.zbkj.crmeb.store.request.StoreProductReplyAddRequest; +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; @@ -47,8 +43,7 @@ public class StoreOrderController { @ApiOperation(value = "预下单") @RequestMapping(value = "/pre/order", method = RequestMethod.POST) public CommonResult> preOrder(@RequestBody @Validated PreOrderRequest request) { - MyRecord record = orderService.preOrder(request); - return CommonResult.success(record); + return CommonResult.success(orderService.preOrder(request)); } /** @@ -56,7 +51,7 @@ public class StoreOrderController { */ @ApiOperation(value = "加载预下单") @RequestMapping(value = "load/pre/{preOrderNo}", method = RequestMethod.GET) - public CommonResult preOrder(@PathVariable String preOrderNo) { + public CommonResult loadPreOrder(@PathVariable String preOrderNo) { return CommonResult.success(orderService.loadPreOrder(preOrderNo)); } @@ -65,7 +60,7 @@ public class StoreOrderController { */ @ApiOperation(value = "计算订单价格") @RequestMapping(value = "/computed/price", method = RequestMethod.POST) - public CommonResult computedPrice(@Validated @RequestBody OrderComputedPriceRequest request){ + public CommonResult computedPrice(@Validated @RequestBody OrderComputedPriceRequest request) { return CommonResult.success(orderService.computedOrderPrice(request)); } @@ -74,7 +69,7 @@ public class StoreOrderController { */ @ApiOperation(value = "创建订单") @RequestMapping(value = "/create", method = RequestMethod.POST) - public CommonResult> createOrder(@Validated @RequestBody CreateOrderRequest orderRequest){ + public CommonResult> createOrder(@Validated @RequestBody CreateOrderRequest orderRequest) { return CommonResult.success(orderService.createOrder(orderRequest)); } @@ -89,9 +84,8 @@ public class StoreOrderController { @ApiImplicitParams ({ @ApiImplicitParam(name = "type", value = "评价等级|0=未支付,1=待发货,2=待收货,3=待评价,4=已完成,-3=售后/退款", required = true) }) - public CommonResult> orderList( - @RequestParam(name = "type") Integer type, - @ModelAttribute PageParamRequest pageRequest){ + public CommonResult> orderList(@RequestParam(name = "type") Integer type, + @ModelAttribute PageParamRequest pageRequest) { return CommonResult.success(orderService.list(type, pageRequest)); } @@ -102,7 +96,7 @@ public class StoreOrderController { */ @ApiOperation(value = "订单详情") @RequestMapping(value = "/detail/{orderId}", method = RequestMethod.GET) - public CommonResult orderDetail(@PathVariable String orderId){ + public CommonResult orderDetail(@PathVariable String orderId) { return CommonResult.success(orderService.detailOrder(orderId)); } @@ -112,7 +106,7 @@ public class StoreOrderController { */ @ApiOperation(value = "订单头部数量") @RequestMapping(value = "/data", method = RequestMethod.GET) - public CommonResult orderData(){ + public CommonResult orderData() { return CommonResult.success(orderService.orderData()); } @@ -123,8 +117,8 @@ public class StoreOrderController { */ @ApiOperation(value = "删除订单") @RequestMapping(value = "/del", method = RequestMethod.POST) - public CommonResult delete(@RequestParam Integer id){ - if( orderService.delete(id)){ + public CommonResult delete(@RequestParam Integer id) { + if( orderService.delete(id)) { return CommonResult.success(); }else{ return CommonResult.failed(); @@ -137,8 +131,8 @@ public class StoreOrderController { */ @ApiOperation(value = "评价订单") @RequestMapping(value = "/comment", method = RequestMethod.POST) - public CommonResult comment(@RequestBody @Validated StoreProductReplyAddRequest request){ - if(orderService.reply(request)){ + public CommonResult comment(@RequestBody @Validated StoreProductReplyAddRequest request) { + if(orderService.reply(request)) { return CommonResult.success(); }else{ return CommonResult.failed(); @@ -151,8 +145,8 @@ public class StoreOrderController { */ @ApiOperation(value = "订单收货") @RequestMapping(value = "/take", method = RequestMethod.POST) - public CommonResult take(@RequestParam(value = "id") Integer id){ - if(orderService.take(id)){ + public CommonResult take(@RequestParam(value = "id") Integer id) { + if(orderService.take(id)) { return CommonResult.success(); }else{ return CommonResult.failed(); @@ -165,8 +159,8 @@ public class StoreOrderController { */ @ApiOperation(value = "订单取消") @RequestMapping(value = "/cancel", method = RequestMethod.POST) - public CommonResult cancel(@RequestParam(value = "id") Integer id){ - if(orderService.cancel(id)){ + public CommonResult cancel(@RequestParam(value = "id") Integer id) { + if(orderService.cancel(id)) { return CommonResult.success(); }else{ return CommonResult.failed(); @@ -174,12 +168,12 @@ public class StoreOrderController { } /** - * 申请订单退款 + * 获取申请订单退款信息 * @param orderId 订单编号 */ - @ApiOperation(value = "订单退款申请") + @ApiOperation(value = "获取申请订单退款信息") @RequestMapping(value = "/apply/refund/{orderId}", method = RequestMethod.GET) - public CommonResult refundApplyOrder(@PathVariable String orderId){ + public CommonResult refundApplyOrder(@PathVariable String orderId) { return CommonResult.success(orderService.applyRefundOrderInfo(orderId)); } @@ -189,8 +183,8 @@ public class StoreOrderController { */ @ApiOperation(value = "订单退款申请") @RequestMapping(value = "/refund", method = RequestMethod.POST) - public CommonResult refundApply(@RequestBody @Validated OrderRefundApplyRequest request){ - if(orderService.refundApply(request)){ + public CommonResult refundApply(@RequestBody @Validated OrderRefundApplyRequest request) { + if(orderService.refundApply(request)) { return CommonResult.success(); }else{ return CommonResult.failed(); @@ -201,9 +195,9 @@ public class StoreOrderController { * 查询订单退款理由 * @return 退款理由 */ - @ApiOperation(value = "订单退款理由") + @ApiOperation(value = "订单退款理由(商家提供)") @RequestMapping(value = "/refund/reason", method = RequestMethod.GET) - public CommonResult> refundReason(){ + public CommonResult> refundReason() { return CommonResult.success(orderService.getRefundReason()); } @@ -214,13 +208,22 @@ public class StoreOrderController { */ @ApiOperation(value = "物流信息查询") @RequestMapping(value = "/express/{orderId}", method = RequestMethod.GET) - public CommonResult getExpressInfo(@PathVariable String orderId){ + 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){ + 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/src/main/java/com/zbkj/crmeb/front/controller/UploadFrontController.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/UploadFrontController.java similarity index 84% rename from crmeb/src/main/java/com/zbkj/crmeb/front/controller/UploadFrontController.java rename to crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/UploadFrontController.java index ae5f0257..1ce2d9f8 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/controller/UploadFrontController.java +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/UploadFrontController.java @@ -1,8 +1,8 @@ -package com.zbkj.crmeb.front.controller; +package com.zbkj.front.controller; -import com.common.CommonResult; -import com.zbkj.crmeb.upload.service.UploadService; -import com.zbkj.crmeb.upload.vo.FileResultVo; +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; @@ -34,7 +34,6 @@ import java.io.IOException; @RestController @RequestMapping("api/front/user/upload") @Api(tags = "上传文件") - public class UploadFrontController { @Autowired @@ -42,8 +41,6 @@ public class UploadFrontController { /** * 图片上传 - * @author Mr.Zhang - * @since 2020-05-06 */ @ApiOperation(value = "图片上传") @RequestMapping(value = "/image", method = RequestMethod.POST) @@ -51,10 +48,9 @@ public class UploadFrontController { @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, + public CommonResult image(MultipartFile multipart,@RequestParam(value = "model") String model, @RequestParam(value = "pid") Integer pid) throws IOException { - return CommonResult.success(uploadService.image(multipart, model, pid)); + return CommonResult.success(uploadService.imageUpload(multipart, model, pid)); } } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/controller/UserAddressController.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/UserAddressController.java similarity index 81% rename from crmeb/src/main/java/com/zbkj/crmeb/front/controller/UserAddressController.java rename to crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/UserAddressController.java index 43801d18..48c4a769 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/controller/UserAddressController.java +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/UserAddressController.java @@ -1,12 +1,12 @@ -package com.zbkj.crmeb.front.controller; +package com.zbkj.front.controller; -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.PageParamRequest; -import com.zbkj.crmeb.front.request.UserAddressDelRequest; -import com.zbkj.crmeb.front.request.UserAddressRequest; -import com.zbkj.crmeb.user.model.UserAddress; -import com.zbkj.crmeb.user.service.UserAddressService; +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; @@ -36,13 +36,12 @@ public class UserAddressController { @Autowired private UserAddressService userAddressService; - /** * 分页显示用户地址 */ @ApiOperation(value = "列表") @RequestMapping(value = "/list", method = RequestMethod.GET) - public CommonResult> getList(PageParamRequest pageParamRequest){ + public CommonResult> getList(PageParamRequest pageParamRequest) { return CommonResult.success(CommonPage.restPage(userAddressService.getList(pageParamRequest))); } @@ -52,7 +51,7 @@ public class UserAddressController { */ @ApiOperation(value = "保存") @RequestMapping(value = "/edit", method = RequestMethod.POST) - public CommonResult save(@RequestBody @Validated UserAddressRequest request){ + public CommonResult save(@RequestBody @Validated UserAddressRequest request) { return CommonResult.success(userAddressService.create(request)); } @@ -62,10 +61,10 @@ public class UserAddressController { */ @ApiOperation(value = "删除") @RequestMapping(value = "/del", method = RequestMethod.POST) - public CommonResult delete(@RequestBody UserAddressDelRequest request){ - if(userAddressService.delete(request.getId())){ + public CommonResult delete(@RequestBody UserAddressDelRequest request) { + if (userAddressService.delete(request.getId())) { return CommonResult.success(); - }else{ + } else { return CommonResult.failed(); } } @@ -75,7 +74,7 @@ public class UserAddressController { */ @ApiOperation(value = "地址详情") @RequestMapping(value = "/detail/{id}", method = RequestMethod.GET) - public CommonResult info(@PathVariable("id") Integer id){ + public CommonResult info(@PathVariable("id") Integer id) { return CommonResult.success(userAddressService.getDetail(id)); } @@ -84,7 +83,7 @@ public class UserAddressController { */ @ApiOperation(value = "获取默认地址") @RequestMapping(value = "/default", method = RequestMethod.GET) - public CommonResult getDefault(){ + public CommonResult getDefault() { return CommonResult.success(userAddressService.getDefault()); } @@ -95,10 +94,10 @@ public class UserAddressController { */ @ApiOperation(value = "设置默认地址") @RequestMapping(value = "/default/set", method = RequestMethod.POST) - public CommonResult def(@RequestBody UserAddressDelRequest request){ - if(userAddressService.def(request.getId())){ + public CommonResult def(@RequestBody UserAddressDelRequest request) { + if (userAddressService.def(request.getId())) { return CommonResult.success(); - }else{ + } else { return CommonResult.failed(); } } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/controller/UserCollectController.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/UserCollectController.java similarity index 71% rename from crmeb/src/main/java/com/zbkj/crmeb/front/controller/UserCollectController.java rename to crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/UserCollectController.java index 345b9854..3d300ccd 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/controller/UserCollectController.java +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/UserCollectController.java @@ -1,18 +1,15 @@ -package com.zbkj.crmeb.front.controller; +package com.zbkj.front.controller; -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.PageParamRequest; -import com.zbkj.crmeb.front.request.UserCollectAllRequest; -import com.zbkj.crmeb.front.request.UserCollectRequest; -import com.zbkj.crmeb.front.response.UserRelationResponse; -import com.zbkj.crmeb.store.model.StoreProductRelation; -import com.zbkj.crmeb.store.service.StoreProductRelationService; -import com.zbkj.crmeb.user.service.UserService; +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.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -34,21 +31,17 @@ import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("api/front/collect") @Api(tags = "用户 -- 点赞/收藏") - public class UserCollectController { @Autowired private StoreProductRelationService storeProductRelationService; - @Autowired - private UserService userService; - /** * 我的收藏列表 */ @ApiOperation(value = "我的收藏列表") @RequestMapping(value = "/user", method = RequestMethod.GET) - public CommonResult> getList(@Validated PageParamRequest pageParamRequest){ + public CommonResult> getList(@Validated PageParamRequest pageParamRequest) { return CommonResult.success(CommonPage.restPage(storeProductRelationService.getUserList(pageParamRequest))); } @@ -58,13 +51,10 @@ public class UserCollectController { */ @ApiOperation(value = "添加收藏产品") @RequestMapping(value = "/add", method = RequestMethod.POST) - public CommonResult save(@RequestBody @Validated UserCollectRequest request){ - StoreProductRelation storeProductRelation = new StoreProductRelation(); - BeanUtils.copyProperties(request, storeProductRelation); - storeProductRelation.setUid(userService.getUserIdException()); - if(storeProductRelationService.save(storeProductRelation)){ + public CommonResult save(@RequestBody @Validated UserCollectRequest request) { + if (storeProductRelationService.add(request)) { return CommonResult.success(); - }else{ + } else { return CommonResult.failed(); } } @@ -75,10 +65,10 @@ public class UserCollectController { */ @ApiOperation(value = "批量收藏") @RequestMapping(value = "/all", method = RequestMethod.POST) - public CommonResult all(@RequestBody @Validated UserCollectAllRequest request){ - if(storeProductRelationService.all(request)){ + public CommonResult all(@RequestBody @Validated UserCollectAllRequest request) { + if (storeProductRelationService.all(request)) { return CommonResult.success(); - }else{ + } else { return CommonResult.failed(); } } @@ -88,10 +78,10 @@ public class UserCollectController { */ @ApiOperation(value = "取消收藏产品") @RequestMapping(value = "/delete", method = RequestMethod.POST) - public CommonResult delete(@RequestBody String requestJson){ - if(storeProductRelationService.delete(requestJson)){ + public CommonResult delete(@RequestBody String requestJson) { + if (storeProductRelationService.delete(requestJson)) { return CommonResult.success(); - }else{ + } else { return CommonResult.failed(); } } @@ -101,10 +91,10 @@ public class UserCollectController { */ @ApiOperation(value = "取消收藏产品(通过商品)") @RequestMapping(value = "/cancel/{proId}", method = RequestMethod.POST) - public CommonResult cancel(@PathVariable Integer proId){ - if(storeProductRelationService.deleteByProId(proId)){ + public CommonResult cancel(@PathVariable Integer proId) { + if (storeProductRelationService.deleteByProIdAndUid(proId)) { return CommonResult.success(); - }else{ + } else { return CommonResult.failed(); } } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/controller/UserController.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/UserController.java similarity index 77% rename from crmeb/src/main/java/com/zbkj/crmeb/front/controller/UserController.java rename to crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/UserController.java index c81ea71d..fa595b70 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/controller/UserController.java +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/UserController.java @@ -1,24 +1,17 @@ -package com.zbkj.crmeb.front.controller; +package com.zbkj.front.controller; -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.PageParamRequest; +import com.zbkj.common.page.CommonPage; import com.github.pagehelper.PageInfo; -import com.zbkj.crmeb.finance.request.UserExtractRequest; -import com.zbkj.crmeb.front.request.PasswordRequest; -import com.zbkj.crmeb.front.request.UserBindingPhoneUpdateRequest; -import com.zbkj.crmeb.front.request.UserEditRequest; -import com.zbkj.crmeb.front.request.UserSpreadPeopleRequest; -import com.zbkj.crmeb.front.response.*; -import com.zbkj.crmeb.front.service.UserCenterService; -import com.zbkj.crmeb.system.model.SystemUserLevel; -import com.zbkj.crmeb.system.service.SystemAttachmentService; -import com.zbkj.crmeb.system.service.SystemGroupDataService; -import com.zbkj.crmeb.user.model.User; -import com.zbkj.crmeb.user.model.UserBill; -import com.zbkj.crmeb.user.model.UserIntegralRecord; -import com.zbkj.crmeb.user.service.UserService; +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; @@ -59,32 +52,25 @@ public class UserController { @Autowired private UserCenterService userCenterService; - @Autowired - private SystemAttachmentService systemAttachmentService; - /** * 修改密码 - * @author Mr.Zhang - * @since 2020-04-28 */ @ApiOperation(value = "手机号修改密码") @RequestMapping(value = "/register/reset", method = RequestMethod.POST) - public CommonResult password(@RequestBody @Validated PasswordRequest request){ + public CommonResult password(@RequestBody @Validated PasswordRequest request) { return CommonResult.success(userService.password(request)); } /** * 修改个人资料 - * @author Mr.Zhang - * @since 2020-04-28 */ @ApiOperation(value = "修改个人资料") @RequestMapping(value = "/user/edit", method = RequestMethod.POST) - public CommonResult personInfo(@RequestBody @Validated UserEditRequest request){ - User user = userService.getInfo(); - user.setAvatar(systemAttachmentService.clearPrefix(request.getAvatar())); - user.setNickname(request.getNickname()); - return CommonResult.success(userService.updateById(user)); + public CommonResult personInfo(@RequestBody @Validated UserEditRequest request) { + if (userService.editUser(request)) { + return CommonResult.success(); + } + return CommonResult.failed(); } /** @@ -92,7 +78,7 @@ public class UserController { */ @ApiOperation(value = "个人中心-用户信息") @RequestMapping(value = "/user", method = RequestMethod.GET) - public CommonResult getUserCenter(){ + public CommonResult getUserCenter() { return CommonResult.success(userService.getUserCenter()); } @@ -101,7 +87,7 @@ public class UserController { */ @ApiOperation(value = "换绑手机号校验") @RequestMapping(value = "update/binding/verify", method = RequestMethod.POST) - public CommonResult updatePhoneVerify(@RequestBody @Validated UserBindingPhoneUpdateRequest request){ + public CommonResult updatePhoneVerify(@RequestBody @Validated UserBindingPhoneUpdateRequest request) { return CommonResult.success(userService.updatePhoneVerify(request)); } @@ -110,18 +96,16 @@ public class UserController { */ @ApiOperation(value = "换绑手机号") @RequestMapping(value = "update/binding", method = RequestMethod.POST) - public CommonResult updatePhone(@RequestBody @Validated UserBindingPhoneUpdateRequest request){ + public CommonResult updatePhone(@RequestBody @Validated UserBindingPhoneUpdateRequest request) { return CommonResult.success(userService.updatePhone(request)); } /** * 用户中心菜单 - * @author Mr.Zhang - * @since 2020-04-28 */ @ApiOperation(value = "获取个人中心菜单") @RequestMapping(value = "/menu/user", method = RequestMethod.GET) - public CommonResult> getMenuUser(){ + public CommonResult> getMenuUser() { return CommonResult.success(systemGroupDataService.getMenuUser()); } @@ -130,7 +114,7 @@ public class UserController { */ @ApiOperation(value = "推广数据接口(昨天的佣金 累计提现金额 当前佣金)") @RequestMapping(value = "/commission", method = RequestMethod.GET) - public CommonResult getCommission(){ + public CommonResult getCommission() { return CommonResult.success(userCenterService.getCommission()); } @@ -139,20 +123,18 @@ public class UserController { */ @ApiOperation(value = "推广佣金明细") @RequestMapping(value = "/spread/commission/detail", method = RequestMethod.GET) - public CommonResult> getSpreadCommissionDetail(@Validated PageParamRequest pageParamRequest){ + public CommonResult> getSpreadCommissionDetail(@Validated PageParamRequest pageParamRequest) { PageInfo commissionDetail = userCenterService.getSpreadCommissionDetail(pageParamRequest); return CommonResult.success(CommonPage.restPage(commissionDetail)); } /** * 推广佣金/提现总和 - * @author Mr.Zhang - * @since 2020-06-08 */ @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 int type){ + public CommonResult> getSpreadCountByType(@PathVariable Integer type) { Map map = new HashMap<>(); map.put("count", userCenterService.getSpreadCountByType(type)); return CommonResult.success(map); @@ -160,12 +142,10 @@ public class UserController { /** * 提现申请 - * @author Mr.Zhang - * @since 2020-06-08 */ @ApiOperation(value = "提现申请") @RequestMapping(value = "/extract/cash", method = RequestMethod.POST) - public CommonResult extractCash(@RequestBody @Validated UserExtractRequest request){ + public CommonResult extractCash(@RequestBody @Validated UserExtractRequest request) { return CommonResult.success(userCenterService.extractCash(request)); } @@ -174,7 +154,7 @@ public class UserController { */ @ApiOperation(value = "提现记录") @RequestMapping(value = "/extract/record", method = RequestMethod.GET) - public CommonResult> getExtractRecord(@Validated PageParamRequest pageParamRequest){ + public CommonResult> getExtractRecord(@Validated PageParamRequest pageParamRequest) { return CommonResult.success(CommonPage.restPage(userCenterService.getExtractRecord(pageParamRequest))); } @@ -183,7 +163,7 @@ public class UserController { */ @ApiOperation(value = "提现用户信息") @RequestMapping(value = "/extract/user", method = RequestMethod.GET) - public CommonResult getExtractUser(){ + public CommonResult getExtractUser() { return CommonResult.success(userCenterService.getExtractUser()); } @@ -192,18 +172,16 @@ public class UserController { */ @ApiOperation(value = "提现银行/提现最低金额") @RequestMapping(value = "/extract/bank", method = RequestMethod.GET) - public CommonResult> getExtractBank(){ + public CommonResult> getExtractBank() { return CommonResult.success(userCenterService.getExtractBank()); } /** * 会员等级列表 - * @author Mr.Zhang - * @since 2020-05-18 */ @ApiOperation(value = "会员等级列表") @RequestMapping(value = "/user/level/grade", method = RequestMethod.GET) - public CommonResult> getUserLevelList(){ + public CommonResult> getUserLevelList() { return CommonResult.success(userCenterService.getUserLevelList()); } @@ -212,7 +190,7 @@ public class UserController { */ @ApiOperation(value = "推广人统计") @RequestMapping(value = "/spread/people/count", method = RequestMethod.GET) - public CommonResult getSpreadPeopleCount(){ + public CommonResult getSpreadPeopleCount() { return CommonResult.success(userCenterService.getSpreadPeopleCount()); } @@ -232,7 +210,7 @@ public class UserController { */ @ApiOperation(value = "用户积分信息") @RequestMapping(value = "/integral/user", method = RequestMethod.GET) - public CommonResult getIntegralUser(){ + public CommonResult getIntegralUser() { return CommonResult.success(userCenterService.getIntegralUser()); } @@ -241,7 +219,7 @@ public class UserController { */ @ApiOperation(value = "积分记录") @RequestMapping(value = "/integral/list", method = RequestMethod.GET) - public CommonResult> getIntegralList(@Validated PageParamRequest pageParamRequest){ + public CommonResult> getIntegralList(@Validated PageParamRequest pageParamRequest) { return CommonResult.success(CommonPage.restPage(userCenterService.getUserIntegralRecordList(pageParamRequest))); } @@ -250,29 +228,25 @@ public class UserController { */ @ApiOperation(value = "经验记录") @RequestMapping(value = "/user/expList", method = RequestMethod.GET) - public CommonResult> getExperienceList(@Validated PageParamRequest pageParamRequest){ + public CommonResult> getExperienceList(@Validated PageParamRequest pageParamRequest) { return CommonResult.success(CommonPage.restPage(userCenterService.getUserExperienceList(pageParamRequest))); } /** * 用户资金统计 - * @author Mr.Zhang - * @since 2020-06-10 */ @ApiOperation(value = "用户资金统计") @RequestMapping(value = "/user/balance", method = RequestMethod.GET) - public CommonResult getUserBalance(){ + public CommonResult getUserBalance() { return CommonResult.success(userCenterService.getUserBalance()); } /** * 推广订单 - * @author Mr.Zhang - * @since 2020-06-10 */ @ApiOperation(value = "推广订单") @RequestMapping(value = "/spread/order", method = RequestMethod.GET) - public CommonResult getSpreadOrder(@Validated PageParamRequest pageParamRequest){ + public CommonResult getSpreadOrder(@Validated PageParamRequest pageParamRequest) { return CommonResult.success(userCenterService.getSpreadOrder(pageParamRequest)); } @@ -282,7 +256,7 @@ public class UserController { */ @ApiOperation(value = "推广人排行") @RequestMapping(value = "/rank", method = RequestMethod.GET) - public CommonResult> getTopSpreadPeopleListByDate(@RequestParam(required = false) String type, @Validated PageParamRequest pageParamRequest){ + public CommonResult> getTopSpreadPeopleListByDate(@RequestParam(required = false) String type, @Validated PageParamRequest pageParamRequest) { return CommonResult.success(userCenterService.getTopSpreadPeopleListByDate(type, pageParamRequest)); } @@ -292,29 +266,26 @@ public class UserController { */ @ApiOperation(value = "佣金排行") @RequestMapping(value = "/brokerage_rank", method = RequestMethod.GET) - public CommonResult> getTopBrokerageListByDate(@RequestParam String type, @Validated PageParamRequest pageParamRequest){ + public CommonResult> getTopBrokerageListByDate(@RequestParam String type, @Validated PageParamRequest pageParamRequest) { return CommonResult.success(userCenterService.getTopBrokerageListByDate(type, pageParamRequest)); } /** * 当前用户在佣金排行第几名 - * @return 优惠券集合 */ @ApiOperation(value = "当前用户在佣金排行第几名") @RequestMapping(value = "/user/brokerageRankNumber", method = RequestMethod.GET) - public CommonResult getNumberByTop(@RequestParam String type){ + public CommonResult getNumberByTop(@RequestParam String type) { return CommonResult.success(userCenterService.getNumberByTop(type)); } /** * 海报背景图 - * @author Mr.Zhang - * @since 2020-06-10 */ @ApiOperation(value = "推广海报图") @RequestMapping(value = "/user/spread/banner", method = RequestMethod.GET) - public CommonResult> getSpreadBannerList(@Validated PageParamRequest pageParamRequest){ - return CommonResult.success(userCenterService.getSpreadBannerList(pageParamRequest)); + public CommonResult> getSpreadBannerList() { + return CommonResult.success(userCenterService.getSpreadBannerList()); } /** @@ -324,7 +295,7 @@ public class UserController { */ @ApiOperation(value = "绑定推广关系(登录状态)") @RequestMapping(value = "/user/bindSpread", method = RequestMethod.GET) - public CommonResult bindsSpread(Integer spreadPid){ + public CommonResult bindsSpread(Integer spreadPid) { userService.bindSpread(spreadPid); return CommonResult.success(); } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/controller/UserCouponController.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/UserCouponController.java similarity index 82% rename from crmeb/src/main/java/com/zbkj/crmeb/front/controller/UserCouponController.java rename to crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/UserCouponController.java index 7b8935aa..c954dfbb 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/controller/UserCouponController.java +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/UserCouponController.java @@ -1,11 +1,11 @@ -package com.zbkj.crmeb.front.controller; +package com.zbkj.front.controller; -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.PageParamRequest; -import com.zbkj.crmeb.front.request.UserCouponReceiveRequest; -import com.zbkj.crmeb.marketing.response.StoreCouponUserResponse; -import com.zbkj.crmeb.marketing.service.StoreCouponUserService; +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; @@ -47,7 +47,7 @@ public class UserCouponController { @ApiImplicitParam(name="limit", value="每页数量", required = true) }) public CommonResult> getList(@RequestParam(value = "type") String type, - @Validated PageParamRequest pageParamRequest){ + @Validated PageParamRequest pageParamRequest) { return CommonResult.success(storeCouponUserService.getMyCouponList(type, pageParamRequest)); } @@ -57,10 +57,10 @@ public class UserCouponController { */ @ApiOperation(value = "领券") @RequestMapping(value = "/receive", method = RequestMethod.POST) - public CommonResult receive(@RequestBody @Validated UserCouponReceiveRequest request){ - if(storeCouponUserService.receiveCoupon(request)){ + public CommonResult receive(@RequestBody @Validated UserCouponReceiveRequest request) { + if (storeCouponUserService.receiveCoupon(request)) { return CommonResult.success(); - }else{ + } else { return CommonResult.failed(); } } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/controller/UserRechargeController.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/UserRechargeController.java similarity index 74% rename from crmeb/src/main/java/com/zbkj/crmeb/front/controller/UserRechargeController.java rename to crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/UserRechargeController.java index 4ddc088c..440833fa 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/controller/UserRechargeController.java +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/UserRechargeController.java @@ -1,15 +1,15 @@ -package com.zbkj.crmeb.front.controller; +package com.zbkj.front.controller; -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.PageParamRequest; -import com.constants.Constants; -import com.utils.CrmebUtil; -import com.zbkj.crmeb.front.request.UserRechargeRequest; -import com.zbkj.crmeb.front.response.OrderPayResultResponse; -import com.zbkj.crmeb.front.response.UserRechargeBillRecordResponse; -import com.zbkj.crmeb.front.response.UserRechargeResponse; -import com.zbkj.crmeb.front.service.UserCenterService; +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; @@ -23,7 +23,6 @@ import java.math.BigDecimal; import java.util.HashMap; import java.util.Map; - /** * 用户 -- 充值 * +---------------------------------------------------------------------- @@ -49,20 +48,19 @@ public class UserRechargeController { */ @ApiOperation(value = "充值额度选择") @RequestMapping(value = "/index", method = RequestMethod.GET) - public CommonResult getRechargeConfig(){ + 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){ + public CommonResult> routineRecharge(HttpServletRequest httpServletRequest, @RequestBody @Validated UserRechargeRequest request) { request.setFromType(Constants.PAY_TYPE_WE_CHAT_FROM_PROGRAM); - OrderPayResultResponse recharge = userCenterService.recharge(request); request.setClientIp(CrmebUtil.getClientIp(httpServletRequest)); - + OrderPayResultResponse recharge = userCenterService.recharge(request); Map map = new HashMap<>(); map.put("data", recharge); map.put("type", request.getFromType()); @@ -70,21 +68,11 @@ public class UserRechargeController { } /** - * 充值 + * 公众号充值 */ @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)); - } - - /** - * App充值 - */ - @ApiOperation(value = "App充值") - @RequestMapping(value = "/wechat/app", method = RequestMethod.POST) - public CommonResult weChatAppRecharge(HttpServletRequest httpServletRequest, @RequestBody @Validated UserRechargeRequest request){ + public CommonResult weChatRecharge(HttpServletRequest httpServletRequest, @RequestBody @Validated UserRechargeRequest request) { request.setClientIp(CrmebUtil.getClientIp(httpServletRequest)); return CommonResult.success(userCenterService.recharge(request)); } @@ -94,7 +82,7 @@ public class UserRechargeController { */ @ApiOperation(value = "佣金转入余额") @RequestMapping(value = "/transferIn", method = RequestMethod.POST) - public CommonResult transferIn(@RequestParam(name = "price") BigDecimal price){ + public CommonResult transferIn(@RequestParam(name = "price") BigDecimal price) { return CommonResult.success(userCenterService.transferIn(price)); } @@ -104,7 +92,7 @@ public class UserRechargeController { @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){ + public CommonResult> billRecord(@RequestParam(name = "type") String type, @ModelAttribute PageParamRequest pageRequest) { return CommonResult.success(userCenterService.nowMoneyBillRecord(type, pageRequest)); } } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/controller/UserSignController.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/UserSignController.java similarity index 73% rename from crmeb/src/main/java/com/zbkj/crmeb/front/controller/UserSignController.java rename to crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/UserSignController.java index e16b9d8e..88d4af24 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/controller/UserSignController.java +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/UserSignController.java @@ -1,13 +1,13 @@ -package com.zbkj.crmeb.front.controller; +package com.zbkj.front.controller; -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.PageParamRequest; -import com.zbkj.crmeb.front.response.UserSignInfoResponse; -import com.zbkj.crmeb.system.vo.SystemGroupDataSignConfigVo; -import com.zbkj.crmeb.user.service.UserSignService; -import com.zbkj.crmeb.user.vo.UserSignMonthVo; -import com.zbkj.crmeb.user.vo.UserSignVo; +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; @@ -18,6 +18,7 @@ import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import java.util.HashMap; +import java.util.List; /** @@ -47,7 +48,7 @@ public class UserSignController { */ @ApiOperation(value = "分页列表") @RequestMapping(value = "/list", method = RequestMethod.GET) - public CommonResult> getList(@Validated PageParamRequest pageParamRequest){ + public CommonResult> getList(@Validated PageParamRequest pageParamRequest) { CommonPage userSignCommonPage = CommonPage.restPage(userSignService.getList(pageParamRequest)); return CommonResult.success(userSignCommonPage); } @@ -58,7 +59,7 @@ public class UserSignController { */ @ApiOperation(value = "分页列表") @RequestMapping(value = "/month", method = RequestMethod.GET) - public CommonResult> getListGroupMonth(@Validated PageParamRequest pageParamRequest){ + public CommonResult> getListGroupMonth(@Validated PageParamRequest pageParamRequest) { CommonPage userSignCommonPage = CommonPage.restPage(userSignService.getListGroupMonth(pageParamRequest)); return CommonResult.success(userSignCommonPage); } @@ -68,26 +69,25 @@ public class UserSignController { */ @ApiOperation(value = "配置") @RequestMapping(value = "/config", method = RequestMethod.GET) - public CommonResult> config(){ - CommonPage systemSignConfigVoCommonPage = CommonPage.restPage(userSignService.config()); - return CommonResult.success(systemSignConfigVoCommonPage); + public CommonResult> config() { + return CommonResult.success(userSignService.getSignConfig()); } /** - * 查询签到记录表信息 + * 签到 */ @ApiOperation(value = "签到") @RequestMapping(value = "/integral", method = RequestMethod.GET) - public CommonResult info(){ + public CommonResult info() { return CommonResult.success(userSignService.sign()); } /** - * 查询签到记录表信息 + * 今日记录详情 */ - @ApiOperation(value = "详情") + @ApiOperation(value = "今日记录详情") @RequestMapping(value = "/get", method = RequestMethod.GET) - public CommonResult> get(){ + public CommonResult> get() { return CommonResult.success(userSignService.get()); } @@ -96,7 +96,7 @@ public class UserSignController { */ @ApiOperation(value = "签到用户信息") @RequestMapping(value = "/user", method = RequestMethod.POST) - public CommonResult getUserInfo(){ + public CommonResult getUserInfo() { return CommonResult.success(userSignService.getUserSignInfo()); } } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/controller/WeChatController.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/WeChatController.java similarity index 70% rename from crmeb/src/main/java/com/zbkj/crmeb/front/controller/WeChatController.java rename to crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/WeChatController.java index ae3b3daf..0818de38 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/controller/WeChatController.java +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/controller/WeChatController.java @@ -1,16 +1,18 @@ -package com.zbkj.crmeb.front.controller; +package com.zbkj.front.controller; -import com.common.CommonResult; -import com.zbkj.crmeb.front.request.RegisterAppWxRequest; -import com.zbkj.crmeb.front.request.WxBindingPhoneRequest; -import com.zbkj.crmeb.front.response.LoginResponse; -import com.zbkj.crmeb.front.service.UserCenterService; -import com.zbkj.crmeb.user.request.RegisterThirdUserRequest; -import com.zbkj.crmeb.wechat.model.TemplateMessage; -import com.zbkj.crmeb.wechat.service.TemplateMessageService; -import com.zbkj.crmeb.wechat.service.WeChatService; +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; @@ -40,31 +42,31 @@ import java.util.Map; @Api(tags = "微信 -- 开放平台") public class WeChatController { - @Autowired - private WeChatService weChatService; - @Autowired private UserCenterService userCenterService; @Autowired - private TemplateMessageService templateMessageService; + private WechatNewService wechatNewService; + + @Autowired + private SystemNotificationService systemNotificationService; /** * 通过微信code登录 - * @author Mr.Zhang - * @since 2020-05-25 */ @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)); } /** - * 通过小程序code登录 - * @author Mr.Zhang - * @since 2020-05-25 + * 微信登录小程序授权登录 */ @ApiOperation(value = "微信登录小程序授权登录") @RequestMapping(value = "/authorize/program/login", method = RequestMethod.POST) @@ -74,8 +76,6 @@ public class WeChatController { /** * 微信注册绑定手机号 - * @author Mr.Zhang - * @since 2020-05-25 */ @ApiOperation(value = "微信注册绑定手机号") @RequestMapping(value = "/register/binding/phone", method = RequestMethod.POST) @@ -85,20 +85,16 @@ public class WeChatController { /** * 获取微信公众号js配置 - * @author Mr.Zhang - * @since 2020-05-25 */ @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(weChatService.getJsSdkConfig(url)); + public CommonResult configJs(@RequestParam(value = "url") String url){ + return CommonResult.success(wechatNewService.getJsSdkConfig(url)); } /** * 小程序获取授权logo - * @author Mr.Zhang - * @since 2020-05-25 */ @ApiOperation(value = "小程序获取授权logo") @RequestMapping(value = "/getLogo", method = RequestMethod.GET) @@ -108,19 +104,6 @@ public class WeChatController { return CommonResult.success(map); } - /** - * 查询微信模板信息 - * @param id Integer - * @author Mr.Zhang - * @since 2020-06-03 - */ - @ApiOperation(value = "详情") - @RequestMapping(value = "/info/{id}", method = RequestMethod.GET) - public CommonResult info(@PathVariable Integer id){ - TemplateMessage templateMessage = templateMessageService.infoException(id); - return CommonResult.success(templateMessage); - } - /** * 订阅消息模板列表 */ @@ -128,7 +111,7 @@ public class WeChatController { @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(templateMessageService.getMiniTempList(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 00000000..c44ff5fe --- /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~2020 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/src/main/java/com/filter/ResponseRouter.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/filter/ResponseRouter.java similarity index 73% rename from crmeb/src/main/java/com/filter/ResponseRouter.java rename to crmeb/crmeb-front/src/main/java/com/zbkj/front/filter/ResponseRouter.java index 5ed5f328..b1ffc4c2 100644 --- a/crmeb/src/main/java/com/filter/ResponseRouter.java +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/filter/ResponseRouter.java @@ -1,7 +1,8 @@ -package com.filter; +package com.zbkj.front.filter; -import com.utils.SpringUtil; -import com.zbkj.crmeb.system.service.SystemAttachmentService; +import com.zbkj.common.constants.Constants; +import com.zbkj.common.utils.SpringUtil; +import com.zbkj.service.service.SystemAttachmentService; /** * response路径处理 @@ -17,9 +18,9 @@ import com.zbkj.crmeb.system.service.SystemAttachmentService; */ public class ResponseRouter { - public String filter(String data, String path){ + public String filter(String data, String path) { boolean result = un().contains(path); - if(result){ + if (result) { return data; } @@ -27,21 +28,19 @@ public class ResponseRouter { return data; } - //根据需要处理返回值 -// if(data.contains("image/") && !data.contains("data:image/png;base64")){ - if(data.contains("crmebimage/") && !data.contains("data:image/png;base64")){ + if (data.contains(Constants.UPLOAD_TYPE_IMAGE+"/") && !data.contains("data:image/png;base64")) { data = SpringUtil.getBean(SystemAttachmentService.class).prefixImage(data); } - if(data.contains("file/")){ + if (data.contains("file/")) { data = SpringUtil.getBean(SystemAttachmentService.class).prefixFile(data); } return data; } - public static String un(){ + 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 00000000..04df4007 --- /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~2020 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) { + + } + } +} \ No newline at end of file diff --git a/crmeb/src/main/java/com/interceptor/FrontTokenInterceptor.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/interceptor/FrontTokenInterceptor.java similarity index 82% rename from crmeb/src/main/java/com/interceptor/FrontTokenInterceptor.java rename to crmeb/crmeb-front/src/main/java/com/zbkj/front/interceptor/FrontTokenInterceptor.java index 916924bc..e0b07944 100644 --- a/crmeb/src/main/java/com/interceptor/FrontTokenInterceptor.java +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/interceptor/FrontTokenInterceptor.java @@ -1,9 +1,9 @@ -package com.interceptor; +package com.zbkj.front.interceptor; import com.alibaba.fastjson.JSONObject; -import com.common.CheckFrontToken; -import com.common.CommonResult; -import com.utils.RequestUtil; +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; @@ -24,16 +24,17 @@ import javax.servlet.http.HttpServletResponse; * +---------------------------------------------------------------------- */ public class FrontTokenInterceptor implements HandlerInterceptor { + @Autowired - private CheckFrontToken checkFrontToken; + private FrontTokenComponent frontTokenComponent; //程序处理之前需要处理的业务 public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { response.setCharacterEncoding("UTF-8"); - String token = checkFrontToken.getTokenFormRequest(request); + String token = frontTokenComponent.getToken(request); if(token == null || token.isEmpty()){ //判断路由,部分路由不管用户是否登录都可以访问 - boolean result = checkFrontToken.checkRouter(RequestUtil.getUri(request)); + boolean result = frontTokenComponent.checkRouter(RequestUtil.getUri(request)); if(result){ return true; } @@ -41,7 +42,7 @@ public class FrontTokenInterceptor implements HandlerInterceptor { return false; } - Boolean result = checkFrontToken.check(token, request); + Boolean result = frontTokenComponent.check(token, request); if(!result){ response.getWriter().write(JSONObject.toJSONString(CommonResult.unauthorized())); return false; 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 00000000..53b8d804 --- /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 00000000..f1911c66 --- /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~2020 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 00000000..175cd2c4 --- /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~2020 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/src/main/java/com/zbkj/crmeb/front/service/IndexService.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/service/IndexService.java similarity index 64% rename from crmeb/src/main/java/com/zbkj/crmeb/front/service/IndexService.java rename to crmeb/crmeb-front/src/main/java/com/zbkj/front/service/IndexService.java index 72426de1..7d8e8495 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/service/IndexService.java +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/service/IndexService.java @@ -1,10 +1,11 @@ -package com.zbkj.crmeb.front.service; +package com.zbkj.front.service; -import com.common.CommonPage; -import com.common.PageParamRequest; -import com.zbkj.crmeb.front.response.IndexInfoResponse; -import com.zbkj.crmeb.front.response.IndexProductBannerResponse; -import com.zbkj.crmeb.front.response.IndexProductResponse; +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; @@ -23,16 +24,21 @@ import java.util.List; */ public interface IndexService{ - IndexProductBannerResponse getProductBanner(int type, PageParamRequest pageParamRequest); - /** * 首页信息 * @return IndexInfoResponse */ IndexInfoResponse getIndexInfo(); + /** + * 热门搜索 + * @return List + */ List> hotKeywords(); + /** + * 分享配置信息 + */ HashMap getShareConfig(); /** @@ -42,4 +48,22 @@ public interface IndexService{ * @return List */ CommonPage findIndexProductList(Integer type, PageParamRequest pageParamRequest); + + /** + * 获取颜色配置 + * @return SystemConfig + */ + SystemConfig getColorConfig(); + + /** + * 获取版本信息 + * @return MyRecord + */ + MyRecord getVersion(); + + /** + * 获取全局本地图片域名 + * @return String + */ + String getImageDomain(); } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/service/LoginService.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/service/LoginService.java similarity index 67% rename from crmeb/src/main/java/com/zbkj/crmeb/front/service/LoginService.java rename to crmeb/crmeb-front/src/main/java/com/zbkj/front/service/LoginService.java index 8d80d988..eb9ad036 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/service/LoginService.java +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/service/LoginService.java @@ -1,9 +1,11 @@ -package com.zbkj.crmeb.front.service; +package com.zbkj.front.service; -import com.zbkj.crmeb.front.request.LoginMobileRequest; -import com.zbkj.crmeb.front.request.LoginRequest; -import com.zbkj.crmeb.front.response.LoginResponse; -import com.zbkj.crmeb.user.model.User; +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; /** * 移动端登录服务类 @@ -23,12 +25,12 @@ public interface LoginService { * 账号密码登录 * @return LoginResponse */ - LoginResponse login(LoginRequest loginRequest) throws Exception; + LoginResponse login(LoginRequest loginRequest); /** * 手机号验证码登录 */ - LoginResponse phoneLogin(LoginMobileRequest loginRequest) throws Exception; + LoginResponse phoneLogin(LoginMobileRequest loginRequest); /** * 老绑定分销关系 @@ -37,4 +39,10 @@ public interface LoginService { * @return Boolean */ Boolean bindSpread(User user, Integer spreadUid); + + /** + * 推出登录 + * @param request HttpServletRequest + */ + void loginOut(HttpServletRequest request); } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/service/ProductService.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/service/ProductService.java similarity index 63% rename from crmeb/src/main/java/com/zbkj/crmeb/front/service/ProductService.java rename to crmeb/crmeb-front/src/main/java/com/zbkj/front/service/ProductService.java index 3b3532df..29429b35 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/service/ProductService.java +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/service/ProductService.java @@ -1,12 +1,13 @@ -package com.zbkj.crmeb.front.service; +package com.zbkj.front.service; -import com.common.CommonPage; -import com.common.PageParamRequest; +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.crmeb.category.vo.CategoryTreeVo; -import com.zbkj.crmeb.front.request.IndexStoreProductSearchRequest; -import com.zbkj.crmeb.front.request.ProductRequest; -import com.zbkj.crmeb.front.response.*; +import com.zbkj.common.response.*; +import com.zbkj.common.vo.CategoryTreeVo; import java.util.List; @@ -24,10 +25,18 @@ import java.util.List; */ public interface ProductService { - CommonPage getIndexProduct(IndexStoreProductSearchRequest request, PageParamRequest pageParamRequest); - + /** + * 商品分类 + * @return List + */ List getCategory(); + /** + * 商品列表 + * @param request 请求参数 + * @param pageParamRequest 分页参数 + * @return CommonPage + */ CommonPage getList(ProductRequest request, PageParamRequest pageParamRequest); /** @@ -38,6 +47,13 @@ public interface ProductService { */ ProductDetailResponse getDetail(Integer id, String type); + /** + * 获取商品SKU详情 + * @param id 商品编号 + * @return 商品详情信息 + */ + ProductDetailResponse getSkuDetail(Integer id); + /** * 商品评论列表 * @param proId 商品编号 @@ -47,6 +63,11 @@ public interface ProductService { */ PageInfo getReplyList(Integer proId, Integer type, PageParamRequest pageParamRequest); + /** + * 商品评论数量 + * @param id 商品id + * @return StoreProductReplayCountResponse + */ StoreProductReplayCountResponse getReplyCount(Integer id); /** @@ -68,4 +89,18 @@ public interface ProductService { * @return CommonPage */ CommonPage getGoodProductList(); + + /** + * 商品列表(个别分类模型使用) + * @param request 列表请求参数 + * @param pageParamRequest 分页参数 + * @return CommonPage + */ + CommonPage getCategoryProductList(ProductListRequest request, PageParamRequest pageParamRequest); + + /** + * 获取商品排行榜 + * @return List + */ + List getLeaderboard(); } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/service/QrCodeService.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/service/QrCodeService.java similarity index 72% rename from crmeb/src/main/java/com/zbkj/crmeb/front/service/QrCodeService.java rename to crmeb/crmeb-front/src/main/java/com/zbkj/front/service/QrCodeService.java index 749aae42..0c53569d 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/service/QrCodeService.java +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/service/QrCodeService.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.front.service; +package com.zbkj.front.service; import com.alibaba.fastjson.JSONObject; @@ -18,10 +18,25 @@ import java.util.Map; * +---------------------------------------------------------------------- */ public interface QrCodeService { - Map get(JSONObject data) throws IOException; + /** + * 获取二维码 + * @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/src/main/java/com/zbkj/crmeb/front/service/UserCenterService.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/service/UserCenterService.java similarity index 60% rename from crmeb/src/main/java/com/zbkj/crmeb/front/service/UserCenterService.java rename to crmeb/crmeb-front/src/main/java/com/zbkj/front/service/UserCenterService.java index 071048ca..59790aeb 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/service/UserCenterService.java +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/service/UserCenterService.java @@ -1,20 +1,14 @@ -package com.zbkj.crmeb.front.service; +package com.zbkj.front.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.common.CommonPage; -import com.common.PageParamRequest; import com.github.pagehelper.PageInfo; -import com.zbkj.crmeb.finance.request.UserExtractRequest; -import com.zbkj.crmeb.front.request.RegisterAppWxRequest; -import com.zbkj.crmeb.front.request.UserRechargeRequest; -import com.zbkj.crmeb.front.request.UserSpreadPeopleRequest; -import com.zbkj.crmeb.front.request.WxBindingPhoneRequest; -import com.zbkj.crmeb.front.response.*; -import com.zbkj.crmeb.system.model.SystemUserLevel; -import com.zbkj.crmeb.user.model.User; -import com.zbkj.crmeb.user.model.UserBill; -import com.zbkj.crmeb.user.model.UserIntegralRecord; -import com.zbkj.crmeb.user.request.RegisterThirdUserRequest; +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; @@ -33,10 +27,24 @@ import java.util.List; */ public interface UserCenterService extends IService { + /** + * 推广数据接口(昨天的佣金 累计提现金额 当前佣金) + * @return UserCommissionResponse + */ UserCommissionResponse getCommission(); - BigDecimal getSpreadCountByType(int type); + /** + * 推广佣金/提现总和 + * @param type 类型 佣金类型3=佣金,4=提现 + * @return BigDecimal + */ + BigDecimal getSpreadCountByType(Integer type); + /** + * 提现申请 + * @param request 申请参数 + * @return Boolean + */ Boolean extractCash(UserExtractRequest request); /** @@ -45,6 +53,9 @@ public interface UserCenterService extends IService { */ List getExtractBank(); + /** + * 会员等级列表 + */ List getUserLevelList(); /** @@ -55,30 +66,91 @@ public interface UserCenterService extends IService { */ List getSpreadPeopleList(UserSpreadPeopleRequest request, PageParamRequest pageParamRequest); - UserRechargeResponse getRechargeConfig(); + /** + * 充值额度选择 + * @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); - List getSpreadBannerList(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); /** @@ -117,9 +189,9 @@ public interface UserCenterService extends IService { /** * 获取用户经验记录 * @param pageParamRequest 分页参数 - * @return List + * @return List */ - List getUserExperienceList(PageParamRequest pageParamRequest); + List getUserExperienceList(PageParamRequest pageParamRequest); /** * 提现用户信息 diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/service/impl/IndexServiceImpl.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/service/impl/IndexServiceImpl.java similarity index 59% rename from crmeb/src/main/java/com/zbkj/crmeb/front/service/impl/IndexServiceImpl.java rename to crmeb/crmeb-front/src/main/java/com/zbkj/front/service/impl/IndexServiceImpl.java index a388335b..770ce425 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/service/impl/IndexServiceImpl.java +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/service/impl/IndexServiceImpl.java @@ -1,34 +1,27 @@ -package com.zbkj.crmeb.front.service.impl; +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 com.common.CommonPage; -import com.common.PageParamRequest; -import com.constants.Constants; -import com.constants.SysConfigConstants; -import com.constants.SysGroupDataConstants; -import com.exception.CrmebException; -import com.utils.CrmebUtil; -import com.zbkj.crmeb.front.request.IndexStoreProductSearchRequest; -import com.zbkj.crmeb.front.response.IndexInfoResponse; -import com.zbkj.crmeb.front.response.IndexProductBannerResponse; -import com.zbkj.crmeb.front.response.IndexProductResponse; -import com.zbkj.crmeb.front.response.ProductActivityItemResponse; -import com.zbkj.crmeb.front.service.IndexService; -import com.zbkj.crmeb.front.service.ProductService; -import com.zbkj.crmeb.marketing.model.StoreCoupon; -import com.zbkj.crmeb.marketing.model.StoreCouponUser; -import com.zbkj.crmeb.marketing.response.StoreCouponFrontResponse; -import com.zbkj.crmeb.marketing.service.StoreCouponService; -import com.zbkj.crmeb.marketing.service.StoreCouponUserService; -import com.zbkj.crmeb.store.model.StoreProduct; -import com.zbkj.crmeb.store.service.StoreProductService; -import com.zbkj.crmeb.store.utilService.ProductUtils; -import com.zbkj.crmeb.system.service.SystemConfigService; -import com.zbkj.crmeb.system.service.SystemGroupDataService; -import com.zbkj.crmeb.user.model.User; -import com.zbkj.crmeb.user.service.UserService; -import org.apache.commons.lang3.StringUtils; +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; @@ -55,18 +48,12 @@ public class IndexServiceImpl implements IndexService { @Autowired private SystemGroupDataService systemGroupDataService; - @Autowired - private ProductService productService; - @Autowired private SystemConfigService systemConfigService; @Autowired private UserService userService; - @Autowired - private StoreCouponService storeCouponService; - @Autowired private StoreProductService storeProductService; @@ -74,57 +61,7 @@ public class IndexServiceImpl implements IndexService { private ProductUtils productUtils; @Autowired - private StoreCouponUserService storeCouponUserService; - - /** - * 首页产品的轮播图和产品信息 - * @param type integer 类型 - * @return HashMap - */ - @Override - public IndexProductBannerResponse getProductBanner(int type, PageParamRequest pageParamRequest) { - - IndexProductBannerResponse indexProductBannerResponse = new IndexProductBannerResponse(); - IndexStoreProductSearchRequest request = new IndexStoreProductSearchRequest(); - int gid; - String key; - switch (type){ - case Constants.INDEX_RECOMMEND_BANNER: //精品推荐 - gid = Constants.GROUP_DATA_ID_INDEX_RECOMMEND_BANNER; - key = Constants.INDEX_BAST_LIMIT; - request.setIsBest(true); - break; - case Constants.INDEX_HOT_BANNER: //热门榜单 - gid = Constants.GROUP_DATA_ID_INDEX_HOT_BANNER; - key = Constants.INDEX_HOT_LIMIT; - request.setIsHot(true); - break; - case Constants.INDEX_NEW_BANNER: //首发新品 - gid = Constants.GROUP_DATA_ID_INDEX_NEW_BANNER; - key = Constants.INDEX_FIRST_LIMIT; - request.setIsNew(true); - break; - case Constants.INDEX_BENEFIT_BANNER: //促销单品 - gid = Constants.GROUP_DATA_ID_INDEX_BENEFIT_BANNER; - key = Constants.INDEX_SALES_LIMIT; - request.setIsBenefit(true); - break; - default: - return null; - } - - if(StringUtils.isNotBlank(key)){ - String num = systemConfigService.getValueByKey(Constants.INDEX_BAST_LIMIT); - if(pageParamRequest.getLimit() == 0){ - //首页limit传0,则读取默认数据, 否则后台设置的首页配置不起作用 - pageParamRequest.setLimit(Integer.parseInt(num)); - } - } - - indexProductBannerResponse.setBanner(systemGroupDataService.getListMapByGid(gid)); - indexProductBannerResponse.setList(productService.getIndexProduct(request, pageParamRequest).getList()); - return indexProductBannerResponse; - } + private UserVisitRecordService userVisitRecordService; /** * 首页数据 @@ -139,26 +76,24 @@ public class IndexServiceImpl implements IndexService { 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()){ + if(ObjectUtil.isNotNull(user) && user.getSubscribe()) { indexInfoResponse.setSubscribe(user.getSubscribe()); } - // 获取首页优惠券列表 - List couponList = storeCouponService.getHomeIndexCoupon(); - //获取用户当前已领取未使用的优惠券 - if (ObjectUtil.isNotNull(user) && CollUtil.isNotEmpty(couponList)) { - HashMap couponUserMap = storeCouponUserService.getMapByUserId(user.getUid()); - for (StoreCoupon storeCoupon : couponList) { - if (CollUtil.isNotEmpty(couponUserMap) && couponUserMap.containsKey(storeCoupon.getId())) { - storeCoupon.setIsGet(true); - } - } - } - indexInfoResponse.setCouponList(couponList); - indexInfoResponse.setExplosiveMoney(systemGroupDataService.getListMapByGid(Constants.GROUP_DATA_ID_INDEX_EX_BANNER));//首页超值爆款 - indexInfoResponse.setBastBanner(systemGroupDataService.getListMapByGid(Constants.GROUP_DATA_ID_INDEX_BEST_BANNER)); //首页精品推荐图片 + // 保存用户访问记录 + UserVisitRecord visitRecord = new UserVisitRecord(); + visitRecord.setDate(DateUtil.date().toString("yyyy-MM-dd")); + visitRecord.setUid(userService.getUserId()); + visitRecord.setVisitType(1); + userVisitRecordService.save(visitRecord); return indexInfoResponse; } @@ -179,7 +114,7 @@ public class IndexServiceImpl implements IndexService { public HashMap getShareConfig() { HashMap map = new HashMap<>(); HashMap info = systemConfigService.info(Constants.CONFIG_FORM_ID_PUBLIC); - if(info == null){ + if(info == null) { throw new CrmebException("请配置公众号分享信息!"); } map.put("img", info.get(SysConfigConstants.CONFIG_KEY_ADMIN_WECHAT_SHARE_IMAGE)); @@ -196,8 +131,11 @@ public class IndexServiceImpl implements IndexService { */ @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)){ + if(CollUtil.isEmpty(storeProductList)) { return CommonPage.restPage(new ArrayList<>()); } CommonPage storeProductCommonPage = CommonPage.restPage(storeProductList); @@ -250,5 +188,39 @@ public class IndexServiceImpl implements IndexService { 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/src/main/java/com/zbkj/crmeb/front/service/impl/LoginServiceImpl.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/service/impl/LoginServiceImpl.java similarity index 83% rename from crmeb/src/main/java/com/zbkj/crmeb/front/service/impl/LoginServiceImpl.java rename to crmeb/crmeb-front/src/main/java/com/zbkj/front/service/impl/LoginServiceImpl.java index 0f79c696..28e9ccc5 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/service/impl/LoginServiceImpl.java +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/service/impl/LoginServiceImpl.java @@ -1,25 +1,26 @@ -package com.zbkj.crmeb.front.service.impl; +package com.zbkj.front.service.impl; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import com.constants.Constants; -import com.constants.SmsConstants; -import com.exception.CrmebException; -import com.utils.CrmebUtil; -import com.utils.DateUtil; -import com.utils.RedisUtil; -import com.zbkj.crmeb.front.request.LoginMobileRequest; -import com.zbkj.crmeb.front.request.LoginRequest; -import com.zbkj.crmeb.front.response.LoginResponse; -import com.zbkj.crmeb.front.service.LoginService; -import com.zbkj.crmeb.user.model.User; -import com.zbkj.crmeb.user.service.UserService; +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; /** @@ -48,13 +49,16 @@ public class LoginServiceImpl implements LoginService { @Autowired private RedisUtil redisUtil; + @Autowired + private FrontTokenComponent tokenComponent; + /** * 账号密码登录 * * @return LoginResponse */ @Override - public LoginResponse login(LoginRequest loginRequest) throws Exception { + public LoginResponse login(LoginRequest loginRequest) { User user = userService.getByPhone(loginRequest.getPhone()); if (ObjectUtil.isNull(user)) { throw new CrmebException("此账号未注册"); @@ -70,7 +74,7 @@ public class LoginServiceImpl implements LoginService { } LoginResponse loginResponse = new LoginResponse(); - String token = userService.token(user); + String token = tokenComponent.createToken(user); loginResponse.setToken(token); //绑定推广关系 @@ -95,7 +99,7 @@ public class LoginServiceImpl implements LoginService { * @return LoginResponse */ @Override - public LoginResponse phoneLogin(LoginMobileRequest loginRequest) throws Exception { + public LoginResponse phoneLogin(LoginMobileRequest loginRequest) { //检测验证码 checkValidateCode(loginRequest.getPhone(), loginRequest.getCaptcha()); Integer spreadPid = Optional.ofNullable(loginRequest.getSpreadPid()).orElse(0); @@ -121,7 +125,7 @@ public class LoginServiceImpl implements LoginService { //生成token LoginResponse loginResponse = new LoginResponse(); - String token = userService.token(user); + String token = tokenComponent.createToken(user); loginResponse.setToken(token); loginResponse.setUid(user.getUid()); loginResponse.setNikeName(user.getNickname()); @@ -144,7 +148,7 @@ public class LoginServiceImpl implements LoginService { throw new CrmebException("验证码错误"); } //删除验证码 - redisUtil.remove(SmsConstants.SMS_VALIDATE_PHONE + phone); + redisUtil.delete(SmsConstants.SMS_VALIDATE_PHONE + phone); } /** @@ -178,4 +182,13 @@ public class LoginServiceImpl implements LoginService { } return execute; } + + /** + * 推出登录 + * @param request HttpServletRequest + */ + @Override + public void loginOut(HttpServletRequest request) { + tokenComponent.logout(request); + } } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/service/impl/ProductServiceImpl.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/service/impl/ProductServiceImpl.java similarity index 74% rename from crmeb/src/main/java/com/zbkj/crmeb/front/service/impl/ProductServiceImpl.java rename to crmeb/crmeb-front/src/main/java/com/zbkj/front/service/impl/ProductServiceImpl.java index 27f9972d..bcd507d1 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/service/impl/ProductServiceImpl.java +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/service/impl/ProductServiceImpl.java @@ -1,33 +1,32 @@ -package com.zbkj.crmeb.front.service.impl; +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 com.alibaba.fastjson.JSONObject; -import com.common.CommonPage; -import com.common.MyRecord; -import com.common.PageParamRequest; -import com.constants.CategoryConstants; -import com.constants.Constants; -import com.constants.SysConfigConstants; +import cn.hutool.core.util.StrUtil; import com.github.pagehelper.PageInfo; -import com.utils.CrmebUtil; -import com.utils.RedisUtil; -import com.zbkj.crmeb.category.service.CategoryService; -import com.zbkj.crmeb.category.vo.CategoryTreeVo; -import com.zbkj.crmeb.front.request.IndexStoreProductSearchRequest; -import com.zbkj.crmeb.front.request.ProductRequest; -import com.zbkj.crmeb.front.response.*; -import com.zbkj.crmeb.front.service.ProductService; -import com.zbkj.crmeb.store.model.StoreProduct; -import com.zbkj.crmeb.store.model.StoreProductAttr; -import com.zbkj.crmeb.store.model.StoreProductAttrValue; -import com.zbkj.crmeb.store.response.StoreProductAttrValueResponse; -import com.zbkj.crmeb.store.service.*; -import com.zbkj.crmeb.store.utilService.ProductUtils; -import com.zbkj.crmeb.system.service.SystemConfigService; -import com.zbkj.crmeb.user.model.User; -import com.zbkj.crmeb.user.service.UserService; -import org.apache.commons.lang3.StringUtils; +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; @@ -35,7 +34,6 @@ import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.ArrayList; -import java.util.Arrays; import java.util.HashMap; import java.util.List; @@ -84,52 +82,14 @@ public class ProductServiceImpl implements ProductService { @Autowired private StoreProductAttrValueService storeProductAttrValueService; - /** - * 首页产品的轮播图和产品信息 - * @param request IndexStoreProductSearchRequest 参数 - * @author Mr.Zhang - * @since 2020-06-02 - * @return CommonPage - */ - @Override - public CommonPage getIndexProduct(IndexStoreProductSearchRequest request, PageParamRequest pageParamRequest){ - List storeProductList = storeProductService.getList(request, pageParamRequest); - CommonPage storeProductCommonPage = CommonPage.restPage(storeProductList); + @Autowired + private SystemUserLevelService systemUserLevelService; - if(storeProductList.size() < 1){ - return CommonPage.restPage(new ArrayList<>()); - } - List productResponseArrayList = new ArrayList<>(); - for (StoreProduct storeProduct : storeProductList) { - ProductResponse productResponse = new ProductResponse(); - // 根据参与活动添加对应商品活动标示 - if(StringUtils.isNotBlank(storeProduct.getActivity())){ - HashMap activityByProduct = - productUtils.getActivityByProduct(storeProduct.getId(), storeProduct.getActivity()); - List activityList = CrmebUtil.stringToArrayInt(storeProduct.getActivity()); - if (CollUtil.isNotEmpty(activityByProduct) && activityList.size() > 0) { - if(activityList.get(0).equals(Constants.PRODUCT_TYPE_SECKILL)){ - productResponse.setActivityH5(activityByProduct.get(Constants.PRODUCT_TYPE_SECKILL)); - } - if(activityList.get(0).equals(Constants.PRODUCT_TYPE_BARGAIN)){ - productResponse.setActivityH5(activityByProduct.get(Constants.PRODUCT_TYPE_BARGAIN)); - } - if(activityList.get(0).equals(Constants.PRODUCT_TYPE_PINGTUAN)){ - productResponse.setActivityH5(activityByProduct.get(Constants.PRODUCT_TYPE_PINGTUAN)); - } - } - } + @Autowired + private StoreCartService cartService; - BeanUtils.copyProperties(storeProduct, productResponse); - - productResponse.setCateId(CrmebUtil.stringToArray(storeProduct.getCateId())); - productResponseArrayList.add(productResponse); - } - CommonPage productResponseCommonPage = CommonPage.restPage(productResponseArrayList); - BeanUtils.copyProperties(storeProductCommonPage, productResponseCommonPage, "list"); - - return productResponseCommonPage; - } + @Autowired + private UserVisitRecordService userVisitRecordService; /** * 获取分类 @@ -156,7 +116,7 @@ public class ProductServiceImpl implements ProductService { @Override public CommonPage getList(ProductRequest request, PageParamRequest pageRequest) { List storeProductList = storeProductService.findH5List(request, pageRequest); - if(CollUtil.isEmpty(storeProductList)){ + if (CollUtil.isEmpty(storeProductList)) { return CommonPage.restPage(new ArrayList<>()); } CommonPage storeProductCommonPage = CommonPage.restPage(storeProductList); @@ -218,47 +178,52 @@ public class ProductServiceImpl implements ProductService { */ @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); // 获取商品规格 - StoreProductAttr spaPram = new StoreProductAttr(); - spaPram.setProductId(storeProduct.getId()).setType(Constants.PRODUCT_TYPE_NORMAL); - List attrList = attrService.getByEntity(spaPram); + List attrList = attrService.getListByProductIdAndType(storeProduct.getId(), Constants.PRODUCT_TYPE_NORMAL); // 根据制式设置attr属性 - List skuAttr = getSkuAttr(attrList); - productDetailResponse.setProductAttr(skuAttr); + productDetailResponse.setProductAttr(attrList); // 根据制式设置sku属性 HashMap skuMap = CollUtil.newHashMap(); - StoreProductAttrValue spavPram = new StoreProductAttrValue(); - spavPram.setProductId(id).setType(Constants.PRODUCT_TYPE_NORMAL); - List storeProductAttrValues = storeProductAttrValueService.getByEntity(spavPram); + 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); // 用户收藏、分销返佣 - User user = userService.getInfo(); 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); - String storeBrokerageStatus = systemConfigService.getValueByKey(SysConfigConstants.CONFIG_KEY_STORE_BROKERAGE_STATUS); - if (brokerageFuncStatus.equals(Constants.COMMON_SWITCH_OPEN)) {// 分销开启 - if (storeBrokerageStatus.equals(SysConfigConstants.STORE_BROKERAGE_STATUS_APPOINT)) {// 指定分销 + // 判断是否开启气泡 + 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.setPriceName(getPacketPriceRange(storeProduct.getIsSub(),storeProductAttrValues, true)); } } } else { @@ -274,13 +239,55 @@ public class ProductServiceImpl implements ProductService { updateProduct.setBrowse(storeProduct.getBrowse() + 1); storeProductService.updateById(updateProduct); - // 记录添加(加入到redis队列中) - HashMap map = CollUtil.newHashMap(); - map.put("product_id", productDetailResponse.getProductInfo().getId()); - map.put("uid", ObjectUtil.isNotNull(user) ? user.getUid() : 0); - map.put("type", "visit"); - map.put("add_time", System.currentTimeMillis()); - redisUtil.lPush(Constants.PRODUCT_LOG_KEY, JSONObject.toJSONString(map)); + // 保存用户访问记录 + 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; } @@ -322,31 +329,31 @@ public class ProductServiceImpl implements ProductService { */ private String getPacketPriceRange(Boolean isSub, List attrValueList, Boolean isPromoter) { String priceName = "0"; - if(!isPromoter) return priceName; + 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){ // 是否单独分拥 + 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{ + } 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){ + 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){ + } 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){ + } else if (minPrice.compareTo(BigDecimal.ZERO) > 0 && maxPrice.compareTo(BigDecimal.ZERO) > 0) { priceName = minPrice.toString(); - }else if(minPrice.compareTo(maxPrice) == 0){ + } else if (minPrice.compareTo(maxPrice) == 0) { priceName = minPrice.toString(); - }else{ + } else { priceName = minPrice.toString() + "~" + maxPrice.toString(); } return priceName; @@ -360,7 +367,7 @@ public class ProductServiceImpl implements ProductService { @Override public CommonPage getHotProductList(PageParamRequest pageRequest) { List storeProductList = storeProductService.getIndexProduct(Constants.INDEX_HOT_BANNER, pageRequest); - if(CollUtil.isEmpty(storeProductList)){ + if (CollUtil.isEmpty(storeProductList)) { return CommonPage.restPage(new ArrayList<>()); } CommonPage storeProductCommonPage = CommonPage.restPage(storeProductList); @@ -436,7 +443,7 @@ public class ProductServiceImpl implements ProductService { PageParamRequest pageRequest = new PageParamRequest(); pageRequest.setLimit(9); List storeProductList = storeProductService.getIndexProduct(Constants.INDEX_RECOMMEND_BANNER, pageRequest); - if(CollUtil.isEmpty(storeProductList)){ + if (CollUtil.isEmpty(storeProductList)) { return CommonPage.restPage(new ArrayList<>()); } CommonPage storeProductCommonPage = CommonPage.restPage(storeProductList); @@ -490,33 +497,46 @@ public class ProductServiceImpl implements ProductService { 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; + } /** - * 设置制式结构给attr属性 - * @param attrList attr列表 - * @return List + * 获取商品排行榜 + * @return List */ - private List getSkuAttr(List attrList) { - List attrResponseList = new ArrayList<>(); - for (StoreProductAttr attr : attrList) { - ProductAttrResponse attrResponse = new ProductAttrResponse(); - attrResponse.setProductId(attr.getProductId()); - attrResponse.setAttrName(attr.getAttrName()); - attrResponse.setType(attr.getType()); - List attrValues = new ArrayList<>(); - String trimAttr = attr.getAttrValues() - .replace("[","") - .replace("]",""); - if(attr.getAttrValues().contains(",")){ - attrValues = Arrays.asList(trimAttr.split(",")); - }else{ - attrValues.add(trimAttr); - } - attrResponse.setAttrValues(attrValues); - attrResponseList.add(attrResponse); - } - return attrResponseList; + @Override + public List getLeaderboard() { + return storeProductService.getLeaderboard(); } + } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/service/impl/QrCodeServiceImpl.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/service/impl/QrCodeServiceImpl.java similarity index 85% rename from crmeb/src/main/java/com/zbkj/crmeb/front/service/impl/QrCodeServiceImpl.java rename to crmeb/crmeb-front/src/main/java/com/zbkj/front/service/impl/QrCodeServiceImpl.java index ea027f6f..ba77f080 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/service/impl/QrCodeServiceImpl.java +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/service/impl/QrCodeServiceImpl.java @@ -1,14 +1,13 @@ -package com.zbkj.crmeb.front.service.impl; +package com.zbkj.front.service.impl; import com.alibaba.fastjson.JSONObject; -import com.exception.CrmebException; -import com.utils.CrmebUtil; -import com.utils.QRCodeUtil; -import com.utils.RestTemplateUtil; -import com.zbkj.crmeb.front.service.QrCodeService; -import com.zbkj.crmeb.wechat.service.WeChatService; +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.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -29,16 +28,16 @@ import java.util.Map; */ @Service public class QrCodeServiceImpl implements QrCodeService { - @Autowired - private WeChatService weChatService; +// @Autowired +// private WeChatService weChatService; @Autowired private RestTemplateUtil restTemplateUtil; + @Autowired + private WechatNewService wechatNewService; /** * 二维码 - * @author Mr.Zhang - * @since 2020-05-25 * @return Object */ @Override @@ -65,7 +64,7 @@ public class QrCodeServiceImpl implements QrCodeService { }catch (Exception e){ throw new CrmebException("url参数错误 " + e.getMessage()); } - map.put("code", weChatService.qrCode(page, scene.length() > 0 ? scene.toString() : "")); + map.put("code", wechatNewService.createQrCode(page, scene.length() > 0 ? scene.toString() : "")); return map; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/service/impl/UserCenterServiceImpl.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/service/impl/UserCenterServiceImpl.java similarity index 87% rename from crmeb/src/main/java/com/zbkj/crmeb/front/service/impl/UserCenterServiceImpl.java rename to crmeb/crmeb-front/src/main/java/com/zbkj/front/service/impl/UserCenterServiceImpl.java index 86a43e93..388638e4 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/service/impl/UserCenterServiceImpl.java +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/service/impl/UserCenterServiceImpl.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.front.service.impl; +package com.zbkj.front.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateTime; @@ -9,44 +9,26 @@ 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.common.CommonPage; -import com.common.MyRecord; -import com.common.PageParamRequest; -import com.constants.*; -import com.exception.CrmebException; import com.github.pagehelper.PageInfo; -import com.utils.*; -import com.zbkj.crmeb.finance.model.UserRecharge; -import com.zbkj.crmeb.finance.request.UserExtractRequest; -import com.zbkj.crmeb.finance.service.UserExtractService; -import com.zbkj.crmeb.finance.service.UserRechargeService; -import com.zbkj.crmeb.front.request.UserRechargeRequest; -import com.zbkj.crmeb.front.request.UserSpreadPeopleRequest; -import com.zbkj.crmeb.front.request.WxBindingPhoneRequest; -import com.zbkj.crmeb.front.response.*; -import com.zbkj.crmeb.front.service.LoginService; -import com.zbkj.crmeb.front.service.UserCenterService; -import com.zbkj.crmeb.front.vo.WxPayJsResultVo; -import com.zbkj.crmeb.marketing.model.StoreCoupon; -import com.zbkj.crmeb.marketing.model.StoreCouponUser; -import com.zbkj.crmeb.marketing.service.StoreCouponService; -import com.zbkj.crmeb.marketing.service.StoreCouponUserService; -import com.zbkj.crmeb.payment.wechat.WeChatPayService; -import com.zbkj.crmeb.store.model.StoreOrder; -import com.zbkj.crmeb.store.service.StoreOrderService; -import com.zbkj.crmeb.system.model.SystemUserLevel; -import com.zbkj.crmeb.system.service.SystemConfigService; -import com.zbkj.crmeb.system.service.SystemGroupDataService; -import com.zbkj.crmeb.system.service.SystemUserLevelService; -import com.zbkj.crmeb.system.vo.SystemGroupDataRechargeConfigVo; -import com.zbkj.crmeb.user.dao.UserDao; -import com.zbkj.crmeb.user.model.*; -import com.zbkj.crmeb.user.request.RegisterThirdUserRequest; -import com.zbkj.crmeb.user.service.*; -import com.zbkj.crmeb.wechat.response.WeChatAuthorizeLoginGetOpenIdResponse; -import com.zbkj.crmeb.wechat.response.WeChatAuthorizeLoginUserInfoResponse; -import com.zbkj.crmeb.wechat.response.WeChatProgramAuthorizeLoginGetOpenIdResponse; -import com.zbkj.crmeb.wechat.service.WeChatService; +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; @@ -61,7 +43,6 @@ import java.util.*; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; - /** * 用户中心 服务实现类 * +---------------------------------------------------------------------- @@ -106,9 +87,6 @@ public class UserCenterServiceImpl extends ServiceImpl implements @Autowired private UserTokenService userTokenService; - @Autowired - private WeChatService weChatService; - @Autowired private UserBrokerageRecordService userBrokerageRecordService; @@ -133,6 +111,15 @@ public class UserCenterServiceImpl extends ServiceImpl implements @Autowired private UserIntegralRecordService userIntegralRecordService; + @Autowired + private WechatNewService wechatNewService; + + @Autowired + private UserExperienceRecordService experienceRecordService; + + @Autowired + private FrontTokenComponent tokenComponent; + /** * 推广数据接口(昨天的佣金 累计提现金额 当前佣金) @@ -140,7 +127,6 @@ public class UserCenterServiceImpl extends ServiceImpl implements @Override public UserCommissionResponse getCommission() { User user = userService.getInfoException(); - // 昨天得佣金 BigDecimal yesterdayIncomes = userBrokerageRecordService.getYesterdayIncomes(user.getUid()); //累计已提取佣金 @@ -155,22 +141,20 @@ public class UserCenterServiceImpl extends ServiceImpl implements /** * 推广佣金/提现总和 - * @author Mr.Zhang - * @since 2020-06-08 * @return BigDecimal */ @Override - public BigDecimal getSpreadCountByType(int type) { + public BigDecimal getSpreadCountByType(Integer type) { //推广佣金/提现总和 Integer userId = userService.getUserIdException(); - if(type == 3){ + 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){ + if (type == 4) { return userExtractService.getWithdrawn(null,null); } @@ -179,15 +163,13 @@ public class UserCenterServiceImpl extends ServiceImpl implements /** * 提现申请 - * @author Mr.Zhang - * @since 2020-06-08 * @return Boolean */ @Override public Boolean extractCash(UserExtractRequest request) { - switch (request.getExtractType()){ + switch (request.getExtractType()) { case "weixin": - if(StringUtils.isBlank(request.getWechat())){ + if (StringUtils.isBlank(request.getWechat())) { throw new CrmebException("请填写微信号!"); } request.setAlipayCode(null); @@ -195,7 +177,7 @@ public class UserCenterServiceImpl extends ServiceImpl implements request.setBankName(null); break; case "alipay": - if(StringUtils.isBlank(request.getAlipayCode())){ + if (StringUtils.isBlank(request.getAlipayCode())) { throw new CrmebException("请填写支付宝账号!"); } request.setWechat(null); @@ -203,10 +185,10 @@ public class UserCenterServiceImpl extends ServiceImpl implements request.setBankName(null); break; case "bank": - if(StringUtils.isBlank(request.getBankName())){ + if (StringUtils.isBlank(request.getBankName())) { throw new CrmebException("请填写银行名称!"); } - if(StringUtils.isBlank(request.getBankCode())){ + if (StringUtils.isBlank(request.getBankCode())) { throw new CrmebException("请填写银行卡号!"); } request.setWechat(null); @@ -220,8 +202,6 @@ public class UserCenterServiceImpl extends ServiceImpl implements /** * 提现银行/提现最低金额 - * @author Mr.Zhang - * @since 2020-06-08 * @return UserExtractCashResponse */ @Override @@ -229,7 +209,7 @@ public class UserCenterServiceImpl extends ServiceImpl implements // 获取提现银行 String bank = systemConfigService.getValueByKeyException(Constants.CONFIG_BANK_LIST).replace("\r\n", "\n"); List bankArr = new ArrayList<>(); - if(bank.indexOf("\n") > 0){ + if (bank.indexOf("\n") > 0) { bankArr.addAll(Arrays.asList(bank.split("\n"))); }else{ bankArr.add(bank); @@ -239,8 +219,6 @@ public class UserCenterServiceImpl extends ServiceImpl implements /** * 会员等级列表 - * @author Mr.Zhang - * @since 2020-06-19 * @return List */ @Override @@ -270,22 +248,26 @@ public class UserCenterServiceImpl extends ServiceImpl implements userIdList.clear(); userIdList.addAll(secondSpreadIdList); } - return userService.getSpreadPeopleList(userIdList, request.getKeyword(), request.getSortKey(), request.getIsAsc(), pageParamRequest); + 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; } /** * 充值额度选择 - * @author Mr.Zhang - * @since 2020-06-10 * @return UserRechargeResponse */ @Override - public UserRechargeResponse getRechargeConfig() { - UserRechargeResponse userRechargeResponse = new UserRechargeResponse(); + 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)){ + if (StringUtils.isNotBlank(rechargeAttention)) { rechargeAttentionList = CrmebUtil.stringToArrayStrRegex(rechargeAttention, "\n"); } userRechargeResponse.setRechargeAttention(rechargeAttentionList); @@ -294,15 +276,14 @@ public class UserCenterServiceImpl extends ServiceImpl implements /** * 用户资金统计 - * @author Mr.Zhang - * @since 2020-06-10 * @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 = storeOrderService.getSumBigDecimal(info.getUid(), 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); } @@ -350,7 +331,7 @@ public class UserCenterServiceImpl extends ServiceImpl implements if (monthList.contains(month)) { //如果在已有的数据中找到当前月份数据则追加 for (UserSpreadOrderItemResponse userSpreadOrderItemResponse : userSpreadOrderItemResponseList) { - if(userSpreadOrderItemResponse.getTime().equals(month)){ + if (userSpreadOrderItemResponse.getTime().equals(month)) { userSpreadOrderItemResponse.getChild().add(userSpreadOrderItemChildResponse); break; } @@ -377,8 +358,6 @@ public class UserCenterServiceImpl extends ServiceImpl implements /** * 充值 - * @author Mr.Zhang - * @since 2020-06-10 * @return UserSpreadOrderResponse; */ @Override @@ -390,26 +369,23 @@ public class UserCenterServiceImpl extends ServiceImpl implements String rechargeMinAmountStr = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_RECHARGE_MIN_AMOUNT); BigDecimal rechargeMinAmount = new BigDecimal(rechargeMinAmountStr); int compareResult = rechargeMinAmount.compareTo(request.getPrice()); - if(compareResult > 0){ + if (compareResult > 0) { throw new CrmebException("充值金额不能低于" + rechargeMinAmountStr); } request.setGivePrice(BigDecimal.ZERO); - if(request.getGroupDataId() > 0){ + if (request.getGroupDataId() > 0) { SystemGroupDataRechargeConfigVo systemGroupData = systemGroupDataService.getNormalInfo(request.getGroupDataId(), SystemGroupDataRechargeConfigVo.class); - if(null == systemGroupData){ + 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")); @@ -437,9 +413,6 @@ public class UserCenterServiceImpl extends ServiceImpl implements vo.setMwebUrl(unifiedorder.get("mweb_url")); response.setPayType(PayConstants.PAY_CHANNEL_WE_CHAT_H5); } - if (userRecharge.getRechargeType().equals(PayConstants.PAY_CHANNEL_WE_CHAT_APP_IOS) || userRecharge.getRechargeType().equals(PayConstants.PAY_CHANNEL_WE_CHAT_APP_ANDROID)) {// - vo.setPartnerid(unifiedorder.get("partnerid")); - } response.setJsConfig(vo); response.setOrderNo(userRecharge.getOrderId()); return response; @@ -447,16 +420,14 @@ public class UserCenterServiceImpl extends ServiceImpl implements /** * 微信登录 - * @author Mr.Zhang - * @since 2020-06-10 - * @return UserSpreadOrderResponse; + * @return LoginResponse; */ @Override public LoginResponse weChatAuthorizeLogin(String code, Integer spreadUid) { // 通过code获取获取公众号授权信息 - WeChatAuthorizeLoginGetOpenIdResponse response = weChatService.authorizeLogin(code); + WeChatOauthToken oauthToken = wechatNewService.getOauth2AccessToken(code); //检测是否存在 - UserToken userToken = userTokenService.getByOpenidAndType(response.getOpenId(), Constants.THIRD_LOGIN_TOKEN_TYPE_PUBLIC); + 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()); @@ -481,7 +452,7 @@ public class UserCenterServiceImpl extends ServiceImpl implements logger.error(StrUtil.format("公众号登录绑定分销关系失败,uid={},spreadUid={}", user.getUid(), spreadUid)); } try { - String token = userService.token(user); + String token = tokenComponent.createToken(user); loginResponse.setToken(token); } catch (Exception e) { logger.error(StrUtil.format("公众号登录生成token失败,uid={}", user.getUid())); @@ -495,14 +466,13 @@ public class UserCenterServiceImpl extends ServiceImpl implements } // 没有用户,走创建用户流程 // 从微信获取用户信息,存入Redis中,将key返回给前端,前端在下一步绑定手机号的时候下发 -// WeChatAuthorizeLoginUserInfoResponse userInfo = weChatService.getUserInfo(response.getOpenId(), response.getAccessToken()); - WeChatAuthorizeLoginUserInfoResponse userInfo = weChatService.getUserInfo(response.getAccessToken(), response.getOpenId()); + 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(response.getOpenId()); - String key = SecureUtil.md5(response.getOpenId()); + registerThirdUserRequest.setOpenId(oauthToken.getOpenId()); + String key = SecureUtil.md5(oauthToken.getOpenId()); redisUtil.set(key, JSONObject.toJSONString(registerThirdUserRequest), (long) (60 * 2), TimeUnit.MINUTES); loginResponse.setType("register"); @@ -512,8 +482,6 @@ public class UserCenterServiceImpl extends ServiceImpl implements /** * 获取微信授权logo - * @author Mr.Zhang - * @since 2020-06-29 * @return String; */ @Override @@ -529,13 +497,13 @@ public class UserCenterServiceImpl extends ServiceImpl implements */ @Override public LoginResponse weChatAuthorizeProgramLogin(String code, RegisterThirdUserRequest request) { - WeChatProgramAuthorizeLoginGetOpenIdResponse response = weChatService.programAuthorizeLogin(code); + 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)) {// 已存在,正常登录 + if (ObjectUtil.isNotNull(userToken)) {// 已存在,正常登录 User user = userService.getById(userToken.getUid()); if (!user.getStatus()) { throw new CrmebException("当前账户已禁用,请联系管理员!"); @@ -558,7 +526,7 @@ public class UserCenterServiceImpl extends ServiceImpl implements } try { - String token = userService.token(user); + String token = tokenComponent.createToken(user); loginResponse.setToken(token); } catch (Exception e) { logger.error(StrUtil.format("小程序登录生成token失败,uid={}", user.getUid())); @@ -606,7 +574,19 @@ public class UserCenterServiceImpl extends ServiceImpl implements @Override public List getTopBrokerageListByDate(String type, PageParamRequest pageParamRequest) { // 获取佣金排行榜(周、月) - List recordList = userBrokerageRecordService.getBrokerageTopByDate(type, 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; } @@ -624,7 +604,7 @@ public class UserCenterServiceImpl extends ServiceImpl implements user.setUid(record.getUid()); user.setAvatar(userVo.getAvatar()); user.setBrokeragePrice(record.getPrice()); - if(StrUtil.isBlank(userVo.getNickname())){ + if (StrUtil.isBlank(userVo.getNickname())) { user.setNickname(userVo.getPhone().substring(0, 2) + "****" + userVo.getPhone().substring(7)); }else{ user.setNickname(userVo.getNickname()); @@ -636,12 +616,10 @@ public class UserCenterServiceImpl extends ServiceImpl implements /** * 推广海报图 - * @author Mr.Zhang - * @since 2020-06-10 * @return List */ @Override - public List getSpreadBannerList(PageParamRequest pageParamRequest) { + public List getSpreadBannerList() { return systemGroupDataService.getListByGid(Constants.GROUP_DATA_ID_SPREAD_BANNER_LIST, UserSpreadBannerResponse.class); } @@ -657,7 +635,7 @@ public class UserCenterServiceImpl extends ServiceImpl implements PageParamRequest pageParamRequest = new PageParamRequest(); pageParamRequest.setLimit(100); - List recordList = userBrokerageRecordService.getBrokerageTopByDate(type, pageParamRequest); + List recordList = userBrokerageRecordService.getBrokerageTopByDate(type); if (CollUtil.isEmpty(recordList)) { return number; } @@ -673,23 +651,20 @@ public class UserCenterServiceImpl extends ServiceImpl implements /** * 佣金转入余额 - * @author Mr.Zhang - * @since 2020-05-18 * @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 (price.compareTo(BigDecimal.ZERO) <= 0) { - throw new CrmebException("转入金额不能为0"); - } - if(subtract.compareTo(price) < 0){ + if (subtract.compareTo(price) < 0) { throw new CrmebException("您当前可充值余额为 " + subtract + "元"); } // userBill现金增加记录 @@ -733,8 +708,6 @@ public class UserCenterServiceImpl extends ServiceImpl implements /** * 提现记录 - * @author HZE - * @since 2020-10-27 */ @Override public PageInfo getExtractRecord(PageParamRequest pageParamRequest) { @@ -860,14 +833,14 @@ public class UserCenterServiceImpl extends ServiceImpl implements }); if (!execute) { logger.error("微信用户注册生成失败,nickName = " + registerThirdUserRequest.getNickName()); - } else if (!isNew){// 老用户绑定推广人 + } else if (!isNew) {// 老用户绑定推广人 if (ObjectUtil.isNotNull(registerThirdUserRequest.getSpreadPid()) && registerThirdUserRequest.getSpreadPid() > 0) { loginService.bindSpread(finalUser, registerThirdUserRequest.getSpreadPid()); } } LoginResponse loginResponse = new LoginResponse(); try { - String token = userService.token(finalUser); + String token = tokenComponent.createToken(finalUser); loginResponse.setToken(token); } catch (Exception e) { logger.error(StrUtil.format("绑定手机号,自动登录生成token失败,uid={}", finalUser.getUid())); @@ -915,12 +888,12 @@ public class UserCenterServiceImpl extends ServiceImpl implements /** * 获取用户经验记录 * @param pageParamRequest 分页参数 - * @return List + * @return List */ @Override - public List getUserExperienceList(PageParamRequest pageParamRequest) { + public List getUserExperienceList(PageParamRequest pageParamRequest) { Integer userId = userService.getUserIdException(); - return userBillService.getH5List(userId, Constants.USER_BILL_CATEGORY_EXPERIENCE, pageParamRequest); + return experienceRecordService.getH5List(userId, pageParamRequest); } /** @@ -978,19 +951,19 @@ public class UserCenterServiceImpl extends ServiceImpl implements * 绑定手机号数据校验 */ private void checkBindingPhone(WxBindingPhoneRequest request) { - if (!request.getType().equals("public") && !request.getType().equals("routine")) { + if (!request.getType().equals("public") && !request.getType().equals("routine") && !request.getType().equals("iosWx") && !request.getType().equals("androidWx")) { throw new CrmebException("未知的用户类型"); } if (request.getType().equals("public")) { if (StrUtil.isBlank(request.getCaptcha())) { throw new CrmebException("验证码不能为空"); } - boolean matchPhone = ReUtil.isMatch(RegularConstants.PHONE, request.getPhone()); + boolean matchPhone = ReUtil.isMatch(RegularConstants.PHONE_TWO, request.getPhone()); if (!matchPhone) { throw new CrmebException("手机号格式错误,请输入正确得手机号"); } // 公众号用户校验验证码 - boolean match = ReUtil.isMatch(RegularConstants.SMS_VALIDATE_CODE_NUM, request.getCaptcha()); + boolean match = ReUtil.isMatch(RegularConstants.VALIDATE_CODE_NUM_SIX, request.getCaptcha()); if (!match) { throw new CrmebException("验证码格式错误,验证码必须为6位数字"); } @@ -1007,12 +980,13 @@ public class UserCenterServiceImpl extends ServiceImpl implements throw new CrmebException("小程序获取手机号加密算法的初始向量不能为空"); } // 获取appid - String programAppId = systemConfigService.getValueByKey("routine_appid"); - if(StringUtils.isBlank(programAppId)){ + String programAppId = systemConfigService.getValueByKey(WeChatConstants.WECHAT_MINI_APPID); + if (StringUtils.isBlank(programAppId)) { throw new CrmebException("微信小程序appId未设置"); } - WeChatProgramAuthorizeLoginGetOpenIdResponse response = weChatService.programAuthorizeLogin(request.getCode()); + 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)) { @@ -1037,7 +1011,7 @@ public class UserCenterServiceImpl extends ServiceImpl implements if (CollUtil.isNotEmpty(couponList)) { couponList.forEach(storeCoupon -> { //是否有固定的使用时间 - if(!storeCoupon.getIsFixedTime()){ + 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)); @@ -1082,13 +1056,13 @@ public class UserCenterServiceImpl extends ServiceImpl implements */ private void checkValidateCode(String phone, String code) { Object validateCode = redisUtil.get(SmsConstants.SMS_VALIDATE_PHONE + phone); - if(validateCode == null){ + if (validateCode == null) { throw new CrmebException("验证码已过期"); } - if(!validateCode.toString().equals(code)){ + if (!validateCode.toString().equals(code)) { throw new CrmebException("验证码错误"); } //删除验证码 - redisUtil.remove(SmsConstants.SMS_VALIDATE_PHONE + phone); + redisUtil.delete(SmsConstants.SMS_VALIDATE_PHONE + phone); } } diff --git a/crmeb/src/main/resources/application-beta.yml b/crmeb/crmeb-front/src/main/resources/application-beta.yml similarity index 73% rename from crmeb/src/main/resources/application-beta.yml rename to crmeb/crmeb-front/src/main/resources/application-beta.yml index 6c4a65ce..0c7fb90f 100644 --- a/crmeb/src/main/resources/application-beta.yml +++ b/crmeb/crmeb-front/src/main/resources/application-beta.yml @@ -1,11 +1,9 @@ -# 配置端口 +# CRMEB 相关配置 +crmeb: + version: CRMEB-JAVA-SY-v2.0 # 当前代码版本 + server: - port: 20001 - domain: #配合swagger使用 # 待部署域名 - version: CRMEB-JAVA-KY-v1.3.3.1 # 当前代码版本 - wechat-api-url: - asyncConfig: false - asyncWeChatProgramTempList: false + port: 20009 spring: profiles: @@ -16,14 +14,14 @@ spring: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/crmeb_java_beta?characterEncoding=utf-8&useSSL=false&serverTimeZone=GMT+8 - username: roor + username: root password: 123456 redis: host: 127.0.0.1 #地址 port: 6379 #端口 password: 123456 - timeout: 1000 # 连接超时时间(毫秒) - database: 0 #默认数据库 + timeout: 10000 # 连接超时时间(毫秒) + database: 3 #默认数据库 jedis: pool: max-active: 200 # 连接池最大连接数(使用负值表示没有限制) diff --git a/crmeb/src/main/resources/application-dev.yml b/crmeb/crmeb-front/src/main/resources/application-dev.yml similarity index 77% rename from crmeb/src/main/resources/application-dev.yml rename to crmeb/crmeb-front/src/main/resources/application-dev.yml index 36e68676..77894ff8 100644 --- a/crmeb/src/main/resources/application-dev.yml +++ b/crmeb/crmeb-front/src/main/resources/application-dev.yml @@ -1,11 +1,9 @@ -# 配置端口 +# CRMEB 相关配置 +crmeb: + version: CRMEB-JAVA-SY-v2.0 # 当前代码版本 + server: - port: 20002 - domain: #配合swagger使用 # 待部署域名 - version: CRMEB-JAVA-KY-v1.3.3.1 # 当前代码版本 - wechat-api-url: - asyncConfig: false - asyncWeChatProgramTempList: false + port: 20011 spring: profiles: @@ -22,7 +20,7 @@ spring: host: 127.0.0.1 #地址 port: 6379 #端口 password: 123456 - timeout: 1000 # 连接超时时间(毫秒) + timeout: 10000 # 连接超时时间(毫秒) database: 10 #默认数据库 jedis: pool: diff --git a/crmeb/src/main/resources/application-prod.yml b/crmeb/crmeb-front/src/main/resources/application-prod.yml similarity index 78% rename from crmeb/src/main/resources/application-prod.yml rename to crmeb/crmeb-front/src/main/resources/application-prod.yml index 2267283e..5f0ba5e6 100644 --- a/crmeb/src/main/resources/application-prod.yml +++ b/crmeb/crmeb-front/src/main/resources/application-prod.yml @@ -1,13 +1,9 @@ -# 配置端口 +# CRMEB 相关配置 +crmeb: + version: CRMEB-JAVA-SY-v2.0 # 当前代码版本 + server: - port: 20000 - domain: api.java.crmeb.net #配合swagger使用 # 待部署域名 - version: CRMEB-JAVA-KY-v1.3.3.1 # 当前代码版本 - wechat-api-url: - wechat-js-api-debug: false - wechat-js-api-beta: false - asyncConfig: true - asyncWeChatProgramTempList: true + port: 20001 spring: profiles: @@ -24,7 +20,7 @@ spring: host: 127.0.0.1 #地址 port: 6379 #端口 password: 123456 - timeout: 1000 # 连接超时时间(毫秒) + timeout: 10000 # 连接超时时间(毫秒) database: 15 #默认数据库 jedis: pool: @@ -56,4 +52,4 @@ swagger: enable: true #是否开启界面 check: true #是否打开验证 username: crmeb #访问swagger的账号 - password: 123456 #访问swagger的密码 + password: ZeypRDYBfM #访问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 00000000..81ea5b44 --- /dev/null +++ b/crmeb/crmeb-front/src/main/resources/application.yml @@ -0,0 +1,82 @@ +# CRMEB 相关配置 +crmeb: + version: CRMEB-JAVA-SY-v2.0 # 当前代码版本 + +# 配置端口 +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_java_beta?characterEncoding=utf-8&useSSL=false&serverTimeZone=GMT+8 + username: root + password: 123456 + redis: + host: 127.0.0.1 #地址 + port: 6379 #端口 + password: 123456 + 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 00000000..373ff0e4 --- /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/src/main/resources/logback-spring.xml b/crmeb/crmeb-front/src/main/resources/logback-spring.xml similarity index 98% rename from crmeb/src/main/resources/logback-spring.xml rename to crmeb/crmeb-front/src/main/resources/logback-spring.xml index 7a1f40dd..a4e705a2 100644 --- a/crmeb/src/main/resources/logback-spring.xml +++ b/crmeb/crmeb-front/src/main/resources/logback-spring.xml @@ -1,8 +1,9 @@ + - + @@ -224,7 +225,7 @@ - + diff --git a/crmeb/crmeb-service/pom.xml b/crmeb/crmeb-service/pom.xml new file mode 100644 index 00000000..0ebfeab2 --- /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/src/main/java/com/zbkj/crmeb/article/dao/ArticleDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/ArticleDao.java similarity index 90% rename from crmeb/src/main/java/com/zbkj/crmeb/article/dao/ArticleDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/ArticleDao.java index c416f92e..220f64b7 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/article/dao/ArticleDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/ArticleDao.java @@ -1,6 +1,6 @@ -package com.zbkj.crmeb.article.dao; +package com.zbkj.service.dao; -import com.zbkj.crmeb.article.model.Article; +import com.zbkj.common.model.article.Article; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/crmeb/src/main/java/com/zbkj/crmeb/category/dao/CategoryDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/CategoryDao.java similarity index 90% rename from crmeb/src/main/java/com/zbkj/crmeb/category/dao/CategoryDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/CategoryDao.java index 55507e13..6be65132 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/category/dao/CategoryDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/CategoryDao.java @@ -1,7 +1,7 @@ -package com.zbkj.crmeb.category.dao; +package com.zbkj.service.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.zbkj.crmeb.category.model.Category; +import com.zbkj.common.model.category.Category; /** * 分类表 Mapper 接口 diff --git a/crmeb/src/main/java/com/zbkj/crmeb/express/dao/ExpressDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/ExpressDao.java similarity index 90% rename from crmeb/src/main/java/com/zbkj/crmeb/express/dao/ExpressDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/ExpressDao.java index aea1ca69..01396772 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/express/dao/ExpressDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/ExpressDao.java @@ -1,6 +1,6 @@ -package com.zbkj.crmeb.express.dao; +package com.zbkj.service.dao; -import com.zbkj.crmeb.express.model.Express; +import com.zbkj.common.model.express.Express; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/crmeb/src/main/java/com/zbkj/crmeb/express/dao/ShippingTemplatesDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/ShippingTemplatesDao.java similarity index 89% rename from crmeb/src/main/java/com/zbkj/crmeb/express/dao/ShippingTemplatesDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/ShippingTemplatesDao.java index cdd0fb23..b88a12fa 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/express/dao/ShippingTemplatesDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/ShippingTemplatesDao.java @@ -1,6 +1,6 @@ -package com.zbkj.crmeb.express.dao; +package com.zbkj.service.dao; -import com.zbkj.crmeb.express.model.ShippingTemplates; +import com.zbkj.common.model.express.ShippingTemplates; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/crmeb/src/main/java/com/zbkj/crmeb/express/dao/ShippingTemplatesFreeDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/ShippingTemplatesFreeDao.java similarity index 84% rename from crmeb/src/main/java/com/zbkj/crmeb/express/dao/ShippingTemplatesFreeDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/ShippingTemplatesFreeDao.java index df50b802..940fc5a5 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/express/dao/ShippingTemplatesFreeDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/ShippingTemplatesFreeDao.java @@ -1,8 +1,8 @@ -package com.zbkj.crmeb.express.dao; +package com.zbkj.service.dao; -import com.zbkj.crmeb.express.model.ShippingTemplatesFree; +import com.zbkj.common.model.express.ShippingTemplatesFree; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.zbkj.crmeb.express.request.ShippingTemplatesFreeRequest; +import com.zbkj.common.request.ShippingTemplatesFreeRequest; import java.util.List; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/express/dao/ShippingTemplatesRegionDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/ShippingTemplatesRegionDao.java similarity index 84% rename from crmeb/src/main/java/com/zbkj/crmeb/express/dao/ShippingTemplatesRegionDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/ShippingTemplatesRegionDao.java index 20de49bb..c3054cb6 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/express/dao/ShippingTemplatesRegionDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/ShippingTemplatesRegionDao.java @@ -1,8 +1,8 @@ -package com.zbkj.crmeb.express.dao; +package com.zbkj.service.dao; -import com.zbkj.crmeb.express.model.ShippingTemplatesRegion; +import com.zbkj.common.model.express.ShippingTemplatesRegion; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.zbkj.crmeb.express.request.ShippingTemplatesRegionRequest; +import com.zbkj.common.request.ShippingTemplatesRegionRequest; import java.util.List; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/sms/dao/SmsRecordDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SmsRecordDao.java similarity index 91% rename from crmeb/src/main/java/com/zbkj/crmeb/sms/dao/SmsRecordDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SmsRecordDao.java index cfcfe329..18076612 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/sms/dao/SmsRecordDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SmsRecordDao.java @@ -1,6 +1,6 @@ -package com.zbkj.crmeb.sms.dao; +package com.zbkj.service.dao; -import com.zbkj.crmeb.sms.model.SmsRecord; +import com.zbkj.common.model.sms.SmsRecord; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreOrderInfoDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SmsTemplateDao.java similarity index 78% rename from crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreOrderInfoDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SmsTemplateDao.java index 9d0ebc7b..df406143 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreOrderInfoDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SmsTemplateDao.java @@ -1,10 +1,10 @@ -package com.zbkj.crmeb.store.dao; +package com.zbkj.service.dao; -import com.zbkj.crmeb.store.model.StoreOrderInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zbkj.common.model.sms.SmsTemplate; /** - * 订单购物详情表 Mapper 接口 + * 短信模板表 Mapper 接口 * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -15,6 +15,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; * | Author: CRMEB Team * +---------------------------------------------------------------------- */ -public interface StoreOrderInfoDao extends BaseMapper { +public interface SmsTemplateDao extends BaseMapper { } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreOrderStatusDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreBargainDao.java similarity index 77% rename from crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreOrderStatusDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreBargainDao.java index aed7bc6e..53b95891 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreOrderStatusDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreBargainDao.java @@ -1,10 +1,10 @@ -package com.zbkj.crmeb.store.dao; +package com.zbkj.service.dao; -import com.zbkj.crmeb.store.model.StoreOrderStatus; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zbkj.common.model.bargain.StoreBargain; /** - * 订单操作记录表 Mapper 接口 + * 砍价表 Mapper 接口 * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -15,6 +15,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; * | Author: CRMEB Team * +---------------------------------------------------------------------- */ -public interface StoreOrderStatusDao extends BaseMapper { +public interface StoreBargainDao extends BaseMapper { } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/bargain/dao/StoreBargainUserDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreBargainUserDao.java similarity index 90% rename from crmeb/src/main/java/com/zbkj/crmeb/bargain/dao/StoreBargainUserDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreBargainUserDao.java index 4b99db3c..407b3a5a 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/bargain/dao/StoreBargainUserDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreBargainUserDao.java @@ -1,6 +1,6 @@ -package com.zbkj.crmeb.bargain.dao; +package com.zbkj.service.dao; -import com.zbkj.crmeb.bargain.model.StoreBargainUser; +import com.zbkj.common.model.bargain.StoreBargainUser; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/crmeb/src/main/java/com/zbkj/crmeb/bargain/dao/StoreBargainUserHelpDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreBargainUserHelpDao.java similarity index 89% rename from crmeb/src/main/java/com/zbkj/crmeb/bargain/dao/StoreBargainUserHelpDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreBargainUserHelpDao.java index 6f703659..291e8087 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/bargain/dao/StoreBargainUserHelpDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreBargainUserHelpDao.java @@ -1,6 +1,6 @@ -package com.zbkj.crmeb.bargain.dao; +package com.zbkj.service.dao; -import com.zbkj.crmeb.bargain.model.StoreBargainUserHelp; +import com.zbkj.common.model.bargain.StoreBargainUserHelp; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreCartDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreCartDao.java similarity index 90% rename from crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreCartDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreCartDao.java index f8dc36e2..ecde1da1 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreCartDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreCartDao.java @@ -1,6 +1,6 @@ -package com.zbkj.crmeb.store.dao; +package com.zbkj.service.dao; -import com.zbkj.crmeb.store.model.StoreCart; +import com.zbkj.common.model.cat.StoreCart; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/crmeb/src/main/java/com/zbkj/crmeb/combination/dao/StoreCombinationDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreCombinationDao.java similarity index 89% rename from crmeb/src/main/java/com/zbkj/crmeb/combination/dao/StoreCombinationDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreCombinationDao.java index d9e3af1f..e1e7ff89 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/combination/dao/StoreCombinationDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreCombinationDao.java @@ -1,6 +1,6 @@ -package com.zbkj.crmeb.combination.dao; +package com.zbkj.service.dao; -import com.zbkj.crmeb.combination.model.StoreCombination; +import com.zbkj.common.model.combination.StoreCombination; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/crmeb/src/main/java/com/zbkj/crmeb/marketing/dao/StoreCouponDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreCouponDao.java similarity index 89% rename from crmeb/src/main/java/com/zbkj/crmeb/marketing/dao/StoreCouponDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreCouponDao.java index 1a024038..223d1f85 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/marketing/dao/StoreCouponDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreCouponDao.java @@ -1,7 +1,7 @@ -package com.zbkj.crmeb.marketing.dao; +package com.zbkj.service.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.zbkj.crmeb.marketing.model.StoreCoupon; +import com.zbkj.common.model.coupon.StoreCoupon; /** * 优惠券表 Mapper 接口 diff --git a/crmeb/src/main/java/com/zbkj/crmeb/marketing/dao/StoreCouponUserDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreCouponUserDao.java similarity index 89% rename from crmeb/src/main/java/com/zbkj/crmeb/marketing/dao/StoreCouponUserDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreCouponUserDao.java index fd05f624..71540094 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/marketing/dao/StoreCouponUserDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreCouponUserDao.java @@ -1,7 +1,7 @@ -package com.zbkj.crmeb.marketing.dao; +package com.zbkj.service.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.zbkj.crmeb.marketing.model.StoreCouponUser; +import com.zbkj.common.model.coupon.StoreCouponUser; /** * 优惠券记录表 Mapper 接口 diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreOrderDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreOrderDao.java similarity index 68% rename from crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreOrderDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreOrderDao.java index d3dd1c19..8ba4e90c 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreOrderDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreOrderDao.java @@ -1,12 +1,13 @@ -package com.zbkj.crmeb.store.dao; +package com.zbkj.service.dao; -import com.common.PageParamRequest; -import com.zbkj.crmeb.store.model.StoreOrder; +import com.zbkj.common.model.order.StoreOrder; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.zbkj.crmeb.store.request.StoreDateRangeSqlPram; -import com.zbkj.crmeb.store.request.StoreOrderStaticsticsRequest; -import com.zbkj.crmeb.store.response.StoreOrderStatisticsChartItemResponse; -import com.zbkj.crmeb.store.response.StoreStaffDetail; +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; @@ -25,10 +26,19 @@ import java.util.List; */ public interface StoreOrderDao extends BaseMapper { + /** + * 订单总金额 + */ BigDecimal getTotalPrice(String where); + /** + * 退款总金额 + */ BigDecimal getRefundPrice(String where); + /** + * 获取退款总单数 + */ Integer getRefundTotal(String where); /** @@ -52,4 +62,10 @@ public interface StoreOrderDao extends BaseMapper { */ 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 00000000..ecb77206 --- /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~2020 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/src/main/java/com/zbkj/crmeb/bargain/dao/StoreBargainDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreOrderStatusDao.java similarity index 59% rename from crmeb/src/main/java/com/zbkj/crmeb/bargain/dao/StoreBargainDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreOrderStatusDao.java index c6af2217..520a5669 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/bargain/dao/StoreBargainDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreOrderStatusDao.java @@ -1,16 +1,13 @@ -package com.zbkj.crmeb.bargain.dao; +package com.zbkj.service.dao; -import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.zbkj.common.model.order.StoreOrderStatus; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.core.toolkit.Constants; -import com.zbkj.crmeb.bargain.model.StoreBargain; -import org.apache.ibatis.annotations.Select; -import org.springframework.data.repository.query.Param; +import org.apache.ibatis.annotations.Param; -import java.util.List; +import java.math.BigDecimal; /** - * 砍价表 Mapper 接口 + * 订单操作记录表 Mapper 接口 * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -21,6 +18,13 @@ import java.util.List; * | Author: CRMEB Team * +---------------------------------------------------------------------- */ -public interface StoreBargainDao extends BaseMapper { +public interface StoreOrderStatusDao extends BaseMapper { + + /** + * 通过日期获取订单退款金额 + * @param date 日期,yyyy-MM-dd格式 + * @return BigDecimal + */ + BigDecimal getRefundOrderAmountByDate(@Param("date") String date); } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/combination/dao/StorePinkDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StorePinkDao.java similarity index 89% rename from crmeb/src/main/java/com/zbkj/crmeb/combination/dao/StorePinkDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StorePinkDao.java index 3b8ae145..86c1bdab 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/combination/dao/StorePinkDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StorePinkDao.java @@ -1,6 +1,6 @@ -package com.zbkj.crmeb.combination.dao; +package com.zbkj.service.dao; -import com.zbkj.crmeb.combination.model.StorePink; +import com.zbkj.common.model.combination.StorePink; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreProductAttrDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductAttrDao.java similarity index 77% rename from crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreProductAttrDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductAttrDao.java index 652b6212..925f33b9 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreProductAttrDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductAttrDao.java @@ -1,9 +1,7 @@ -package com.zbkj.crmeb.store.dao; +package com.zbkj.service.dao; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.zbkj.crmeb.store.model.StoreProductAttr; +import com.zbkj.common.model.product.StoreProductAttr; /** * 商品属性表 Mapper 接口 diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreProductAttrResultDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductAttrResultDao.java similarity index 89% rename from crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreProductAttrResultDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductAttrResultDao.java index 0fba8a0c..3ee58977 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreProductAttrResultDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductAttrResultDao.java @@ -1,7 +1,7 @@ -package com.zbkj.crmeb.store.dao; +package com.zbkj.service.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.zbkj.crmeb.store.model.StoreProductAttrResult; +import com.zbkj.common.model.product.StoreProductAttrResult; /** * 商品属性详情表 Mapper 接口 diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreProductAttrValueDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductAttrValueDao.java similarity index 90% rename from crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreProductAttrValueDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductAttrValueDao.java index 014c808c..3203b7d4 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreProductAttrValueDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductAttrValueDao.java @@ -1,7 +1,7 @@ -package com.zbkj.crmeb.store.dao; +package com.zbkj.service.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.zbkj.crmeb.store.model.StoreProductAttrValue; +import com.zbkj.common.model.product.StoreProductAttrValue; /** * 商品属性值表 Mapper 接口 diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreProductCateDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductCateDao.java similarity index 90% rename from crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreProductCateDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductCateDao.java index d7071bd1..f2f35856 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreProductCateDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductCateDao.java @@ -1,7 +1,7 @@ -package com.zbkj.crmeb.store.dao; +package com.zbkj.service.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.zbkj.crmeb.store.model.StoreProductCate; +import com.zbkj.common.model.product.StoreProductCate; /** * 商品分类辅助表 Mapper 接口 diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreProductCouponDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductCouponDao.java similarity index 90% rename from crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreProductCouponDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductCouponDao.java index 8122f4dd..b2a652b2 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreProductCouponDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductCouponDao.java @@ -1,8 +1,8 @@ -package com.zbkj.crmeb.store.dao; +package com.zbkj.service.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.zbkj.crmeb.store.model.StoreProductCoupon; +import com.zbkj.common.model.product.StoreProductCoupon; /** * Mapper 接口 diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreProductDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductDao.java similarity index 90% rename from crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreProductDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductDao.java index b5a00785..e8fc6aca 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreProductDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductDao.java @@ -1,6 +1,6 @@ -package com.zbkj.crmeb.store.dao; +package com.zbkj.service.dao; -import com.zbkj.crmeb.store.model.StoreProduct; +import com.zbkj.common.model.product.StoreProduct; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreProductDescriptionDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductDescriptionDao.java similarity index 89% rename from crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreProductDescriptionDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductDescriptionDao.java index 51eb9d28..7687aa99 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreProductDescriptionDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductDescriptionDao.java @@ -1,7 +1,7 @@ -package com.zbkj.crmeb.store.dao; +package com.zbkj.service.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.zbkj.crmeb.store.model.StoreProductDescription; +import com.zbkj.common.model.product.StoreProductDescription; /** * Mapper 接口 diff --git a/crmeb/src/main/java/com/zbkj/crmeb/log/dao/StoreProductLogDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductLogDao.java similarity index 90% rename from crmeb/src/main/java/com/zbkj/crmeb/log/dao/StoreProductLogDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductLogDao.java index 778e32ac..cfb706c4 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/log/dao/StoreProductLogDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductLogDao.java @@ -1,7 +1,7 @@ -package com.zbkj.crmeb.log.dao; +package com.zbkj.service.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.zbkj.crmeb.log.model.StoreProductLog; +import com.zbkj.common.model.log.StoreProductLog; /** * 商品统计 Mapper 接口 diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreProductRelationDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductRelationDao.java similarity index 72% rename from crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreProductRelationDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductRelationDao.java index f7510cf5..0386e3d6 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreProductRelationDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductRelationDao.java @@ -1,11 +1,9 @@ -package com.zbkj.crmeb.store.dao; +package com.zbkj.service.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.zbkj.crmeb.front.response.UserRelationResponse; -import com.zbkj.crmeb.store.model.StoreProductRelation; -import com.zbkj.crmeb.store.vo.StoreProductRelationCountVo; +import com.zbkj.common.model.product.StoreProductRelation; +import com.zbkj.common.response.UserRelationResponse; -import java.util.HashMap; import java.util.List; /** @@ -22,7 +20,9 @@ import java.util.List; */ public interface StoreProductRelationDao extends BaseMapper { - List getCountInProductId(HashMap objectObjectHashMap); - + /** + * 用户收藏列表 + * @param uid 用户uid + */ List getUserList(Integer uid); } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreProductReplyDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductReplyDao.java similarity index 90% rename from crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreProductReplyDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductReplyDao.java index 578503c6..8643fcd4 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreProductReplyDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductReplyDao.java @@ -1,7 +1,7 @@ -package com.zbkj.crmeb.store.dao; +package com.zbkj.service.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.zbkj.crmeb.store.model.StoreProductReply; +import com.zbkj.common.model.product.StoreProductReply; /** * 评论表 Mapper 接口 diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreProductRuleDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductRuleDao.java similarity index 90% rename from crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreProductRuleDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductRuleDao.java index e36c47b9..2ec8a300 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreProductRuleDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreProductRuleDao.java @@ -1,7 +1,7 @@ -package com.zbkj.crmeb.store.dao; +package com.zbkj.service.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.zbkj.crmeb.store.model.StoreProductRule; +import com.zbkj.common.model.product.StoreProductRule; /** * 商品规则值(规格)表 Mapper 接口 diff --git a/crmeb/src/main/java/com/zbkj/crmeb/seckill/dao/StoreSeckillDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreSeckillDao.java similarity index 90% rename from crmeb/src/main/java/com/zbkj/crmeb/seckill/dao/StoreSeckillDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreSeckillDao.java index d3294ecb..ef667629 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/seckill/dao/StoreSeckillDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreSeckillDao.java @@ -1,7 +1,7 @@ -package com.zbkj.crmeb.seckill.dao; +package com.zbkj.service.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.zbkj.crmeb.seckill.model.StoreSeckill; +import com.zbkj.common.model.seckill.StoreSeckill; /** * 商品秒杀产品表 Mapper 接口 diff --git a/crmeb/src/main/java/com/zbkj/crmeb/seckill/dao/StoreSeckillMangerDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreSeckillMangerDao.java similarity index 89% rename from crmeb/src/main/java/com/zbkj/crmeb/seckill/dao/StoreSeckillMangerDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreSeckillMangerDao.java index b0a9b428..abdf2a03 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/seckill/dao/StoreSeckillMangerDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/StoreSeckillMangerDao.java @@ -1,7 +1,7 @@ -package com.zbkj.crmeb.seckill.dao; +package com.zbkj.service.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.zbkj.crmeb.seckill.model.StoreSeckillManger; +import com.zbkj.common.model.seckill.StoreSeckillManger; /** * Mapper 接口 diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/dao/SystemAdminDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemAdminDao.java similarity index 84% rename from crmeb/src/main/java/com/zbkj/crmeb/system/dao/SystemAdminDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemAdminDao.java index b26b3ade..bd5a7433 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/dao/SystemAdminDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemAdminDao.java @@ -1,8 +1,7 @@ -package com.zbkj.crmeb.system.dao; +package com.zbkj.service.dao; -import com.zbkj.crmeb.system.model.SystemAdmin; +import com.zbkj.common.model.system.SystemAdmin; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.zbkj.crmeb.system.response.SystemAdminResponse; /** * 后台管理员表 Mapper 接口 diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/dao/SystemAttachmentDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemAttachmentDao.java similarity index 90% rename from crmeb/src/main/java/com/zbkj/crmeb/system/dao/SystemAttachmentDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemAttachmentDao.java index 3d3522e3..62bb8baa 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/dao/SystemAttachmentDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemAttachmentDao.java @@ -1,6 +1,6 @@ -package com.zbkj.crmeb.system.dao; +package com.zbkj.service.dao; -import com.zbkj.crmeb.system.model.SystemAttachment; +import com.zbkj.common.model.system.SystemAttachment; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/dao/SystemCityDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemCityDao.java similarity index 90% rename from crmeb/src/main/java/com/zbkj/crmeb/system/dao/SystemCityDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemCityDao.java index 7dd4bcc9..51395c40 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/dao/SystemCityDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemCityDao.java @@ -1,6 +1,6 @@ -package com.zbkj.crmeb.system.dao; +package com.zbkj.service.dao; -import com.zbkj.crmeb.system.model.SystemCity; +import com.zbkj.common.model.system.SystemCity; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/dao/SystemConfigDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemConfigDao.java similarity index 90% rename from crmeb/src/main/java/com/zbkj/crmeb/system/dao/SystemConfigDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemConfigDao.java index a2c85b41..7f70210e 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/dao/SystemConfigDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemConfigDao.java @@ -1,6 +1,6 @@ -package com.zbkj.crmeb.system.dao; +package com.zbkj.service.dao; -import com.zbkj.crmeb.system.model.SystemConfig; +import com.zbkj.common.model.system.SystemConfig; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/dao/SystemFormTempDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemFormTempDao.java similarity index 90% rename from crmeb/src/main/java/com/zbkj/crmeb/system/dao/SystemFormTempDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemFormTempDao.java index 2ca3416c..d184ba29 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/dao/SystemFormTempDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemFormTempDao.java @@ -1,6 +1,6 @@ -package com.zbkj.crmeb.system.dao; +package com.zbkj.service.dao; -import com.zbkj.crmeb.system.model.SystemFormTemp; +import com.zbkj.common.model.system.SystemFormTemp; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/dao/SystemGroupDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemGroupDao.java similarity index 90% rename from crmeb/src/main/java/com/zbkj/crmeb/system/dao/SystemGroupDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemGroupDao.java index 63be1746..de1d6441 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/dao/SystemGroupDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemGroupDao.java @@ -1,6 +1,6 @@ -package com.zbkj.crmeb.system.dao; +package com.zbkj.service.dao; -import com.zbkj.crmeb.system.model.SystemGroup; +import com.zbkj.common.model.system.SystemGroup; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/dao/SystemGroupDataDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemGroupDataDao.java similarity index 90% rename from crmeb/src/main/java/com/zbkj/crmeb/system/dao/SystemGroupDataDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemGroupDataDao.java index bfc334e0..7d59869e 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/dao/SystemGroupDataDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemGroupDataDao.java @@ -1,6 +1,6 @@ -package com.zbkj.crmeb.system.dao; +package com.zbkj.service.dao; -import com.zbkj.crmeb.system.model.SystemGroupData; +import com.zbkj.common.model.system.SystemGroupData; import com.baomidou.mybatisplus.core.mapper.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 00000000..25beaf25 --- /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/src/main/java/com/zbkj/crmeb/wechat/dao/WechatProgramPublicTempDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemNotificationDao.java similarity index 75% rename from crmeb/src/main/java/com/zbkj/crmeb/wechat/dao/WechatProgramPublicTempDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemNotificationDao.java index 3f8d218b..974491ac 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/dao/WechatProgramPublicTempDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemNotificationDao.java @@ -1,20 +1,20 @@ -package com.zbkj.crmeb.wechat.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.zbkj.crmeb.wechat.model.WechatProgramPublicTemp; - -/** - * Mapper 接口 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -public interface WechatProgramPublicTempDao extends BaseMapper { - -} +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~2020 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface SystemNotificationDao extends BaseMapper { + +} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/dao/SystemRoleDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemRoleDao.java similarity index 90% rename from crmeb/src/main/java/com/zbkj/crmeb/system/dao/SystemRoleDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemRoleDao.java index aa6ebbad..fe8670c7 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/dao/SystemRoleDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemRoleDao.java @@ -1,7 +1,7 @@ -package com.zbkj.crmeb.system.dao; +package com.zbkj.service.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.zbkj.crmeb.system.model.SystemRole; +import com.zbkj.common.model.system.SystemRole; /** * 身份管理表 Mapper 接口 diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/dao/WechatProgramMyTempDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemRoleMenuDao.java similarity index 75% rename from crmeb/src/main/java/com/zbkj/crmeb/wechat/dao/WechatProgramMyTempDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemRoleMenuDao.java index e3677f51..4ccebbe5 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/dao/WechatProgramMyTempDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemRoleMenuDao.java @@ -1,20 +1,20 @@ -package com.zbkj.crmeb.wechat.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.zbkj.crmeb.wechat.model.WechatProgramMyTemp; - -/** - * 小程序我的模板 Mapper 接口 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -public interface WechatProgramMyTempDao extends BaseMapper { - -} +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~2020 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface SystemRoleMenuDao extends BaseMapper { + +} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/dao/SystemStoreDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemStoreDao.java similarity index 82% rename from crmeb/src/main/java/com/zbkj/crmeb/system/dao/SystemStoreDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemStoreDao.java index 4b573945..6ce82202 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/dao/SystemStoreDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemStoreDao.java @@ -1,9 +1,9 @@ -package com.zbkj.crmeb.system.dao; +package com.zbkj.service.dao; -import com.zbkj.crmeb.front.request.StoreNearRequest; -import com.zbkj.crmeb.system.model.SystemStore; +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 com.zbkj.crmeb.system.vo.SystemStoreNearVo; import java.util.List; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/dao/SystemStoreStaffDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemStoreStaffDao.java similarity index 90% rename from crmeb/src/main/java/com/zbkj/crmeb/system/dao/SystemStoreStaffDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemStoreStaffDao.java index e46a3751..140711fb 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/dao/SystemStoreStaffDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemStoreStaffDao.java @@ -1,6 +1,6 @@ -package com.zbkj.crmeb.system.dao; +package com.zbkj.service.dao; -import com.zbkj.crmeb.system.model.SystemStoreStaff; +import com.zbkj.common.model.system.SystemStoreStaff; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/dao/SystemUserLevelDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemUserLevelDao.java similarity index 90% rename from crmeb/src/main/java/com/zbkj/crmeb/system/dao/SystemUserLevelDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemUserLevelDao.java index 7216350a..9d8d9495 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/dao/SystemUserLevelDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SystemUserLevelDao.java @@ -1,6 +1,6 @@ -package com.zbkj.crmeb.system.dao; +package com.zbkj.service.dao; -import com.zbkj.crmeb.system.model.SystemUserLevel; +import com.zbkj.common.model.system.SystemUserLevel; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/dao/TemplateMessageDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/TemplateMessageDao.java similarity index 90% rename from crmeb/src/main/java/com/zbkj/crmeb/wechat/dao/TemplateMessageDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/TemplateMessageDao.java index 14de54de..918b0e19 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/dao/TemplateMessageDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/TemplateMessageDao.java @@ -1,8 +1,8 @@ -package com.zbkj.crmeb.wechat.dao; +package com.zbkj.service.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.zbkj.crmeb.wechat.model.TemplateMessage; +import com.zbkj.common.model.wechat.TemplateMessage; /** * 微信模板 Mapper 接口 diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/dao/UserAddressDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserAddressDao.java similarity index 91% rename from crmeb/src/main/java/com/zbkj/crmeb/user/dao/UserAddressDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserAddressDao.java index e4af2b74..4ae1f444 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/dao/UserAddressDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserAddressDao.java @@ -1,6 +1,6 @@ -package com.zbkj.crmeb.user.dao; +package com.zbkj.service.dao; -import com.zbkj.crmeb.user.model.UserAddress; +import com.zbkj.common.model.user.UserAddress; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/dao/UserBillDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserBillDao.java similarity index 74% rename from crmeb/src/main/java/com/zbkj/crmeb/user/dao/UserBillDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserBillDao.java index f8afa5ba..25a14a5b 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/dao/UserBillDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserBillDao.java @@ -1,10 +1,9 @@ -package com.zbkj.crmeb.user.dao; +package com.zbkj.service.dao; -import com.zbkj.crmeb.user.model.UserBill; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.zbkj.crmeb.user.response.UserBillResponse; +import com.zbkj.common.model.user.UserBill; +import com.zbkj.common.response.UserBillResponse; -import java.math.BigDecimal; import java.util.List; import java.util.Map; @@ -22,9 +21,5 @@ import java.util.Map; */ public interface UserBillDao extends BaseMapper { - List getListAdmin(Map map); - - List getListAdminAndIntegeal(Map map); - List fundMonitoring(Map map); } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/dao/UserBrokerageRecordDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserBrokerageRecordDao.java similarity index 90% rename from crmeb/src/main/java/com/zbkj/crmeb/user/dao/UserBrokerageRecordDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserBrokerageRecordDao.java index 6dc4f105..84e7dd8f 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/dao/UserBrokerageRecordDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserBrokerageRecordDao.java @@ -1,7 +1,7 @@ -package com.zbkj.crmeb.user.dao; +package com.zbkj.service.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.zbkj.crmeb.user.model.UserBrokerageRecord; +import com.zbkj.common.model.user.UserBrokerageRecord; /** * 用户佣金记录表 Mapper 接口 diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/dao/UserDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserDao.java similarity index 79% rename from crmeb/src/main/java/com/zbkj/crmeb/user/dao/UserDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserDao.java index ddaa6b3d..6e4ab8fe 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/dao/UserDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserDao.java @@ -1,9 +1,8 @@ -package com.zbkj.crmeb.user.dao; +package com.zbkj.service.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.zbkj.crmeb.front.response.UserSpreadPeopleItemResponse; -import com.zbkj.crmeb.user.model.User; -import com.zbkj.crmeb.user.vo.UserOperateFundsVo; +import com.zbkj.common.model.user.User; +import com.zbkj.common.response.UserSpreadPeopleItemResponse; import java.util.List; import java.util.Map; @@ -21,7 +20,6 @@ import java.util.Map; * +---------------------------------------------------------------------- */ public interface UserDao extends BaseMapper { - Boolean updateFounds(UserOperateFundsVo userOperateFundsVo); List getSpreadPeopleList(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 00000000..b1324292 --- /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~2020 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface UserExperienceRecordDao extends BaseMapper { + +} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/finance/dao/UserExtractDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserExtractDao.java similarity index 85% rename from crmeb/src/main/java/com/zbkj/crmeb/finance/dao/UserExtractDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserExtractDao.java index 5fff25ca..453a7a81 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/finance/dao/UserExtractDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserExtractDao.java @@ -1,11 +1,8 @@ -package com.zbkj.crmeb.finance.dao; +package com.zbkj.service.dao; -import com.zbkj.crmeb.finance.model.UserExtract; +import com.zbkj.common.model.finance.UserExtract; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import java.math.BigDecimal; -import java.util.HashMap; - /** * 用户提现表 Mapper 接口 * +---------------------------------------------------------------------- diff --git a/crmeb/src/main/java/com/zbkj/crmeb/finance/dao/UserFundsMonitorDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserFundsMonitorDao.java similarity index 71% rename from crmeb/src/main/java/com/zbkj/crmeb/finance/dao/UserFundsMonitorDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserFundsMonitorDao.java index d0c5f738..8f079e08 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/finance/dao/UserFundsMonitorDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserFundsMonitorDao.java @@ -1,10 +1,7 @@ -package com.zbkj.crmeb.finance.dao; +package com.zbkj.service.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.zbkj.crmeb.finance.model.UserFundsMonitor; - -import java.util.HashMap; -import java.util.List; +import com.zbkj.common.vo.UserFundsMonitor; /** * 用户充值表 Mapper 接口 @@ -20,11 +17,4 @@ import java.util.List; */ public interface UserFundsMonitorDao extends BaseMapper { - /** - * 佣金列表 - * @author Mr.Zhang - * @since 2020-04-28 - * @return List - */ - List getFundsMonitor(HashMap map); } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/dao/UserGroupDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserGroupDao.java similarity index 91% rename from crmeb/src/main/java/com/zbkj/crmeb/user/dao/UserGroupDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserGroupDao.java index 7dc0905a..c9a565a3 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/dao/UserGroupDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserGroupDao.java @@ -1,6 +1,6 @@ -package com.zbkj.crmeb.user.dao; +package com.zbkj.service.dao; -import com.zbkj.crmeb.user.model.UserGroup; +import com.zbkj.common.model.user.UserGroup; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/dao/UserIntegralRecordDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserIntegralRecordDao.java similarity index 90% rename from crmeb/src/main/java/com/zbkj/crmeb/user/dao/UserIntegralRecordDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserIntegralRecordDao.java index b21650e9..dd48e1bd 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/dao/UserIntegralRecordDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserIntegralRecordDao.java @@ -1,7 +1,7 @@ -package com.zbkj.crmeb.user.dao; +package com.zbkj.service.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.zbkj.crmeb.user.model.UserIntegralRecord; +import com.zbkj.common.model.user.UserIntegralRecord; /** * 用户积分记录表 Mapper 接口 diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/dao/UserLevelDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserLevelDao.java similarity index 91% rename from crmeb/src/main/java/com/zbkj/crmeb/user/dao/UserLevelDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserLevelDao.java index 3bf14311..e0b717a6 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/dao/UserLevelDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserLevelDao.java @@ -1,6 +1,6 @@ -package com.zbkj.crmeb.user.dao; +package com.zbkj.service.dao; -import com.zbkj.crmeb.user.model.UserLevel; +import com.zbkj.common.model.user.UserLevel; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/crmeb/src/main/java/com/zbkj/crmeb/finance/dao/UserRechargeDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserRechargeDao.java similarity index 92% rename from crmeb/src/main/java/com/zbkj/crmeb/finance/dao/UserRechargeDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserRechargeDao.java index fdf1bade..960d0a0e 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/finance/dao/UserRechargeDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserRechargeDao.java @@ -1,6 +1,6 @@ -package com.zbkj.crmeb.finance.dao; +package com.zbkj.service.dao; -import com.zbkj.crmeb.finance.model.UserRecharge; +import com.zbkj.common.model.finance.UserRecharge; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import java.math.BigDecimal; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/dao/UserSignDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserSignDao.java similarity index 91% rename from crmeb/src/main/java/com/zbkj/crmeb/user/dao/UserSignDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserSignDao.java index 7e606d98..4dd07c91 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/dao/UserSignDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserSignDao.java @@ -1,7 +1,7 @@ -package com.zbkj.crmeb.user.dao; +package com.zbkj.service.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.zbkj.crmeb.user.model.UserSign; +import com.zbkj.common.model.user.UserSign; /** * 签到记录表 Mapper 接口 diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/dao/UserTagDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserTagDao.java similarity index 89% rename from crmeb/src/main/java/com/zbkj/crmeb/user/dao/UserTagDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserTagDao.java index a7791e0f..d454bb35 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/dao/UserTagDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserTagDao.java @@ -1,20 +1,20 @@ -package com.zbkj.crmeb.user.dao; - -import com.zbkj.crmeb.user.model.UserTag; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** - * 用户分组表 Mapper 接口 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -public interface UserTagDao extends BaseMapper { - -} +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~2020 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface UserTagDao extends BaseMapper { + +} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/dao/UserTokenDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserTokenDao.java similarity index 91% rename from crmeb/src/main/java/com/zbkj/crmeb/user/dao/UserTokenDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserTokenDao.java index b6cdf054..dbb4411e 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/dao/UserTokenDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/UserTokenDao.java @@ -1,6 +1,6 @@ -package com.zbkj.crmeb.user.dao; +package com.zbkj.service.dao; -import com.zbkj.crmeb.user.model.UserToken; +import com.zbkj.common.model.user.UserToken; import com.baomidou.mybatisplus.core.mapper.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 00000000..ee2d2579 --- /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~2020 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 00000000..2f25c239 --- /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 00000000..a8a3199d --- /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~2020 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 00000000..b6f7c8b1 --- /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~2020 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface WechatPayInfoDao extends BaseMapper { + +} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/dao/WechatQrcodeDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/WechatQrcodeDao.java similarity index 90% rename from crmeb/src/main/java/com/zbkj/crmeb/wechat/dao/WechatQrcodeDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/WechatQrcodeDao.java index 2a3ad0db..810dfb04 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/dao/WechatQrcodeDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/WechatQrcodeDao.java @@ -1,6 +1,6 @@ -package com.zbkj.crmeb.wechat.dao; +package com.zbkj.service.dao; -import com.zbkj.crmeb.wechat.model.WechatQrcode; +import com.zbkj.common.model.wechat.WechatQrcode; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/dao/WechatReplyDao.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/WechatReplyDao.java similarity index 90% rename from crmeb/src/main/java/com/zbkj/crmeb/wechat/dao/WechatReplyDao.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/WechatReplyDao.java index 34ce1fef..c1c1695c 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/dao/WechatReplyDao.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/WechatReplyDao.java @@ -1,6 +1,6 @@ -package com.zbkj.crmeb.wechat.dao; +package com.zbkj.service.dao; -import com.zbkj.crmeb.wechat.model.WechatReply; +import com.zbkj.common.model.wechat.WechatReply; import com.baomidou.mybatisplus.core.mapper.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 00000000..5a33ee1e --- /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~2020 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 = systemConfigService.getValueByKey(SysConfigConstants.CONFIG_PAY_WEIXIN_OPEN).equals("1"); + break; + case PayConstants.PAY_TYPE_YUE: + result = (systemConfigService.getValueByKey(SysConfigConstants.CONFIG_YUE_PAY_STATUS).equals("1")); + break; + case PayConstants.PAY_TYPE_ALI_PAY: + result = (systemConfigService.getValueByKey(SysConfigConstants.CONFIG_ALI_PAY_STATUS).equals("1")); + 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/src/main/java/com/zbkj/crmeb/store/utilService/ProductUtils.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/delete/ProductUtils.java similarity index 75% rename from crmeb/src/main/java/com/zbkj/crmeb/store/utilService/ProductUtils.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/delete/ProductUtils.java index 912ed705..1fdd5056 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/utilService/ProductUtils.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/delete/ProductUtils.java @@ -1,30 +1,21 @@ -package com.zbkj.crmeb.store.utilService; +package com.zbkj.service.delete; import cn.hutool.core.collection.CollUtil; import com.alibaba.fastjson.JSON; -import com.constants.Constants; -import com.exception.CrmebException; -import com.utils.CrmebUtil; -import com.utils.DateUtil; -import com.utils.UrlUtil; -import com.zbkj.crmeb.bargain.model.StoreBargain; -import com.zbkj.crmeb.bargain.service.StoreBargainService; -import com.zbkj.crmeb.combination.model.StoreCombination; -import com.zbkj.crmeb.combination.request.StoreCombinationRequest; -import com.zbkj.crmeb.combination.service.StoreCombinationService; -import com.zbkj.crmeb.front.response.ProductActivityItemResponse; -import com.zbkj.crmeb.seckill.model.StoreSeckill; -import com.zbkj.crmeb.seckill.model.StoreSeckillManger; -import com.zbkj.crmeb.seckill.request.StoreSeckillRequest; -import com.zbkj.crmeb.seckill.service.StoreSeckillMangerService; -import com.zbkj.crmeb.seckill.service.StoreSeckillService; -import com.zbkj.crmeb.store.model.StoreProduct; -import com.zbkj.crmeb.store.model.StoreProductAttr; -import com.zbkj.crmeb.store.model.StoreProductCoupon; -import com.zbkj.crmeb.store.request.StoreProductAttrValueRequest; -import com.zbkj.crmeb.store.request.StoreProductRequest; -import com.zbkj.crmeb.store.service.StoreProductCouponService; -import com.zbkj.crmeb.system.service.SystemConfigService; +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; @@ -38,8 +29,10 @@ import java.math.BigDecimal; import java.net.URL; import java.net.URLConnection; import java.nio.charset.Charset; -import java.util.*; -import java.util.stream.Collectors; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; /** * 商品工具类 @@ -77,24 +70,6 @@ public class ProductUtils { @Autowired private StoreCombinationService storeCombinationService; - - /** - * 设置优惠券信息 - * @param storeProductRequest 商品request信息 - * @param storeProduct 商品信息 - */ - public void shipProductCoupons(StoreProductRequest storeProductRequest, StoreProduct storeProduct) { - if(null != storeProductRequest.getCouponIds() && storeProductRequest.getCouponIds().size() > 0){ - storeProductCouponService.deleteByProductId(storeProduct.getId()); - List spcs = new ArrayList<>(); - for (Integer couponId : storeProductRequest.getCouponIds()) { - StoreProductCoupon spc = new StoreProductCoupon(storeProduct.getId(), couponId, DateUtil.getNowTime()); - spcs.add(spc); - } - storeProductCouponService.saveCoupons(spcs); - } - } - /** * 解析淘宝产品数据 * @param url @@ -319,7 +294,8 @@ public class ProductUtils { return productRequest; } - /** TODO 苏宁返回的数据不一致,暂放 + /** + * *** 苏宁返回的数据不一致,暂放 * 解析苏宁产品数据 * @param url * @param tag @@ -438,76 +414,6 @@ public class ProductUtils { } } - /** - * 计算产品属性之中最大和最小的价格,新增和编辑使用 - * @param storeProductRequest 分析的参数 - * @param storeProduct 当前操作的产品 - */ - public void calcPriceForAttrValues(StoreProductRequest storeProductRequest, StoreProduct storeProduct) { - // 设置商品成本价和市场价,2020-8-28日更 商品本身价钱取sku列表中最低的价格 - List attrValuesSortAsc = storeProductRequest.getAttrValue().stream() - .sorted(Comparator.comparing(StoreProductAttrValueRequest::getPrice)) - .collect(Collectors.toList()); - if(attrValuesSortAsc.size() == 0){ - return; - } - storeProduct.setPrice(attrValuesSortAsc.get(0).getPrice()); - storeProduct.setOtPrice(attrValuesSortAsc.get(0).getOtPrice()); - storeProduct.setStock(attrValuesSortAsc.stream().mapToInt(e -> e.getStock()).sum()); - List attrValuesSortAsc1 = storeProductRequest.getAttrValue().stream() - .sorted(Comparator.comparing(StoreProductAttrValueRequest::getCost)) - .collect(Collectors.toList()); - storeProduct.setCost(attrValuesSortAsc1.get(0).getCost()); - } - /** - * 计算产品属性之中最大和最小的价格,新增和编辑使用 - * @param storeProductRequest 分析的参数 - * @param storeProduct 当前操作的产品 - */ - public void calcPriceForAttrValuesSeckill(StoreSeckillRequest storeProductRequest, StoreSeckill storeProduct) { - // 设置商品成本价和市场价,2020-8-28日更 商品本身价钱取sku列表中最低的价格 - List attrValuesSortAsc = storeProductRequest.getAttrValue().stream() - .sorted(Comparator.comparing(StoreProductAttrValueRequest::getPrice)) - .collect(Collectors.toList()); - if(attrValuesSortAsc.size() == 0){ - return; - } - storeProduct.setPrice(attrValuesSortAsc.get(0).getPrice()); - storeProduct.setOtPrice(attrValuesSortAsc.get(0).getOtPrice()); - storeProduct.setStock(attrValuesSortAsc.stream().mapToInt(e -> e.getStock()).sum()); - - // 计算限购总数 - int skillLimit = storeProductRequest.getAttrValue().stream().mapToInt(e -> e.getQuota()).sum(); - storeProduct.setQuota(skillLimit); - storeProduct.setQuotaShow(skillLimit); - - } - - /** - * 计算产品属性之中最大和最小的价格,新增和编辑使用 - * @param storeProductRequest 分析的参数 - * @param storeProduct 当前操作的产品 - */ - public void calcPriceForAttrValuesCombination(StoreCombinationRequest storeProductRequest, StoreCombination storeProduct) { - // 设置商品成本价和市场价 - List attrValuesSortAsc = storeProductRequest.getAttrValue().stream() - .sorted(Comparator.comparing(StoreProductAttrValueRequest::getPrice)) - .collect(Collectors.toList()); - if(attrValuesSortAsc.size() == 0){ - return; - } - storeProduct.setPrice(attrValuesSortAsc.get(0).getPrice()); - storeProduct.setOtPrice(attrValuesSortAsc.get(0).getOtPrice()); - storeProduct.setCost(attrValuesSortAsc.get(0).getOtPrice()); - storeProduct.setStock(attrValuesSortAsc.stream().mapToInt(StoreProductAttrValueRequest::getStock).sum()); - - // 计算限购总数 - int skillLimit = storeProductRequest.getAttrValue().stream().mapToInt(StoreProductAttrValueRequest::getQuota).sum(); - storeProduct.setQuota(skillLimit); - storeProduct.setQuotaShow(skillLimit); - - } - /** * 根据商品参加的活动次序查找对应活动明细 * @param productId 商品id @@ -591,55 +497,11 @@ public class ProductUtils { HashMap currentActivityList = getActivityByProduct(storeProduct.getId(), storeProduct.getActivity()); if(StringUtils.isBlank(storeProduct.getActivity())) return null; - List activityH5 = new ArrayList<>(); List activityList = CrmebUtil.stringToArrayInt(storeProduct.getActivity()); return currentActivityList.get(activityList.get(0)); } - /** - * 设置商品参与的活动 - * @param storeProductRequest 商品参数 - * @param storeProduct 设置后的商品 - */ - public void setProductActivity(StoreProductRequest storeProductRequest, StoreProduct storeProduct) { - List _activity = new ArrayList<>(); - if(null != storeProductRequest.getActivity() && storeProductRequest.getActivity().size() >0){ - storeProductRequest.getActivity().stream().map(e->{ - switch (e) { - case Constants.PRODUCT_TYPE_NORMAL_STR: - _activity.add(Constants.PRODUCT_TYPE_NORMAL); - break; - case Constants.PRODUCT_TYPE_SECKILL_STR: - _activity.add(Constants.PRODUCT_TYPE_SECKILL); - break; - case Constants.PRODUCT_TYPE_BARGAIN_STR: - _activity.add(Constants.PRODUCT_TYPE_BARGAIN); - break; - case Constants.PRODUCT_TYPE_PINGTUAN_STR: - _activity.add(Constants.PRODUCT_TYPE_PINGTUAN); - break; - } - return e; - }).collect(Collectors.toList()); - storeProduct.setActivity(_activity.toString() - .replace("[","").replace("]","") - .replaceAll("\\\\s*","")); - } - } - - /** - * 产品保存和更新时设置attr和attrValues属性 - * @param storeProductRequest 产品属性 - * @return 设置后的数据对象 - */ - public HashMap setAttrValueByRequest(StoreProductRequest storeProductRequest) { - HashMap attrValues = new HashMap<>(); - attrValues.put("attr", storeProductRequest.getAttr()); - attrValues.put("attrValue", storeProductRequest.getAttrValue()); - return attrValues; - } - /** * 一号通复制商品转公共商品参数 * @param jsonObject 一号通复制商品 diff --git a/crmeb/src/main/java/com/zbkj/crmeb/article/service/ArticleService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/ArticleService.java similarity index 60% rename from crmeb/src/main/java/com/zbkj/crmeb/article/service/ArticleService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/ArticleService.java index 0e99fc05..393d86e3 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/article/service/ArticleService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/ArticleService.java @@ -1,13 +1,14 @@ -package com.zbkj.crmeb.article.service; +package com.zbkj.service.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.common.PageParamRequest; +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 com.zbkj.crmeb.article.model.Article; -import com.zbkj.crmeb.article.request.ArticleSearchRequest; -import com.zbkj.crmeb.article.vo.ArticleVo; -import com.zbkj.crmeb.category.model.Category; -import com.zbkj.crmeb.front.response.ArticleResponse; import java.util.List; @@ -33,10 +34,14 @@ public interface ArticleService extends IService
{ */ PageInfo getList(String cid, PageParamRequest pageParamRequest); + /** + * 获取文章列表 + * @param request 请求参数 + * @param pageParamRequest 分页参数 + * @return PageInfo + */ PageInfo getAdminList(ArticleSearchRequest request, PageParamRequest pageParamRequest); - boolean update(Integer id, Integer productId); - /** * 文章详情 * @param id 文章id @@ -61,4 +66,32 @@ public interface ArticleService extends IService
{ * @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/src/main/java/com/zbkj/crmeb/payment/service/CallbackService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/CallbackService.java similarity index 86% rename from crmeb/src/main/java/com/zbkj/crmeb/payment/service/CallbackService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/CallbackService.java index 646ff081..e887fd9f 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/payment/service/CallbackService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/CallbackService.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.payment.service; +package com.zbkj.service.service; /** * 订单支付回调 service @@ -20,13 +20,6 @@ public interface CallbackService { */ String weChat(String xmlInfo); - /** - * 支付宝支付回调 - * @param request - * @return - */ - boolean aliPay(String request); - /** * 微信退款回调 * @param request 微信回调json diff --git a/crmeb/src/main/java/com/zbkj/crmeb/category/service/CategoryService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/CategoryService.java similarity index 74% rename from crmeb/src/main/java/com/zbkj/crmeb/category/service/CategoryService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/CategoryService.java index f1194d87..a939d7c2 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/category/service/CategoryService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/CategoryService.java @@ -1,11 +1,11 @@ -package com.zbkj.crmeb.category.service; +package com.zbkj.service.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.common.PageParamRequest; -import com.zbkj.crmeb.category.model.Category; -import com.zbkj.crmeb.category.request.CategoryRequest; -import com.zbkj.crmeb.category.request.CategorySearchRequest; -import com.zbkj.crmeb.category.vo.CategoryTreeVo; +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; @@ -23,13 +23,27 @@ import java.util.List; * +---------------------------------------------------------------------- */ public interface CategoryService extends IService { + List getList(CategorySearchRequest request, PageParamRequest pageParamRequest); int delete(Integer id); - String getPathByPId(Integer pid); - + /** + * 获取树形结构数据 + * @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); @@ -42,8 +56,6 @@ public interface CategoryService extends IService { List getChildVoListByPid(Integer pid); - int checkName(String name, Integer type); - boolean checkUrl(String uri); boolean updateStatus(Integer id); diff --git a/crmeb/src/main/java/com/zbkj/crmeb/upload/service/CosService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/CosService.java similarity index 70% rename from crmeb/src/main/java/com/zbkj/crmeb/upload/service/CosService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/CosService.java index 4d3f7a0e..8492edc0 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/upload/service/CosService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/CosService.java @@ -1,7 +1,8 @@ -package com.zbkj.crmeb.upload.service; +package com.zbkj.service.service; +import com.zbkj.common.vo.CloudVo; import com.qcloud.cos.COSClient; -import com.zbkj.crmeb.upload.vo.CloudVo; +import java.io.File; /** * CosService 接口 @@ -16,5 +17,8 @@ import com.zbkj.crmeb.upload.vo.CloudVo; * +---------------------------------------------------------------------- */ public interface CosService { - void upload(CloudVo cloudVo, String webPth, String localFile, Integer id, COSClient cosClient); + + void uploadFile(CloudVo cloudVo, String webPth, String localFile, Integer id, COSClient cosClient); + + void uploadFile(CloudVo cloudVo, String webPth, String localFile, File file, COSClient cosClient); } \ No newline at end of file diff --git a/crmeb/src/main/java/com/zbkj/crmeb/export/service/ExcelService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/ExcelService.java similarity index 50% rename from crmeb/src/main/java/com/zbkj/crmeb/export/service/ExcelService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/ExcelService.java index 29c36d5c..97784e4a 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/export/service/ExcelService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/ExcelService.java @@ -1,13 +1,9 @@ -package com.zbkj.crmeb.export.service; +package com.zbkj.service.service; -import com.zbkj.crmeb.bargain.request.StoreBargainSearchRequest; -import com.zbkj.crmeb.combination.request.StoreCombinationSearchRequest; -import com.zbkj.crmeb.export.vo.BargainProductExcelVo; -import com.zbkj.crmeb.export.vo.ProductExcelVo; -import com.zbkj.crmeb.store.request.StoreProductSearchRequest; - -import javax.servlet.http.HttpServletResponse; -import java.util.List; +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 接口 @@ -23,9 +19,31 @@ import java.util.List; */ public interface ExcelService{ - String exportBargainProduct(StoreBargainSearchRequest request, HttpServletResponse response); + /** + * 导出砍价商品 + * @param request 请求参数 + * @return 导出地址 + */ + String exportBargainProduct(StoreBargainSearchRequest request); - String exportCombinationProduct(StoreCombinationSearchRequest request, HttpServletResponse response); + /** + * 导出拼团商品 + * @param request 请求参数 + * @return 导出地址 + */ + String exportCombinationProduct(StoreCombinationSearchRequest request); - String exportProduct(StoreProductSearchRequest request, HttpServletResponse response); + /** + * 商品导出 + * @param request 请求参数 + * @return 导出地址 + */ + String exportProduct(StoreProductSearchRequest request); + + /** + * 订单导出 + * @param request 查询条件 + * @return 文件名称 + */ + String exportOrder(StoreOrderSearchRequest request); } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/express/service/ExpressService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/ExpressService.java similarity index 82% rename from crmeb/src/main/java/com/zbkj/crmeb/express/service/ExpressService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/ExpressService.java index d3d20b74..c9cccb89 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/express/service/ExpressService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/ExpressService.java @@ -1,12 +1,12 @@ -package com.zbkj.crmeb.express.service; +package com.zbkj.service.service; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.IService; -import com.common.PageParamRequest; -import com.zbkj.crmeb.express.model.Express; -import com.zbkj.crmeb.express.request.ExpressSearchRequest; -import com.zbkj.crmeb.express.request.ExpressUpdateRequest; -import com.zbkj.crmeb.express.request.ExpressUpdateShowRequest; +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; @@ -28,14 +28,10 @@ public interface ExpressService extends IService { * 列表 * @param request 搜索条件 * @param pageParamRequest 分页类参数 - * @author Mr.Zhang - * @since 2020-04-17 * @return List */ List getList(ExpressSearchRequest request, PageParamRequest pageParamRequest); - Express info(Integer id); - /** * 编辑 */ @@ -75,4 +71,10 @@ public interface ExpressService extends IService { * @param name 物流公司名称 */ Express getByName(String name); + + /** + * 获取快递公司详情 + * @param id 快递公司id + */ + Express getInfo(Integer id); } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/statistics/service/HomeService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/HomeService.java similarity index 68% rename from crmeb/src/main/java/com/zbkj/crmeb/statistics/service/HomeService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/HomeService.java index 2e81a412..77786cfb 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/statistics/service/HomeService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/HomeService.java @@ -1,6 +1,6 @@ -package com.zbkj.crmeb.statistics.service; +package com.zbkj.service.service; -import com.zbkj.crmeb.statistics.response.HomeRateResponse; +import com.zbkj.common.response.HomeRateResponse; import java.util.Map; @@ -17,23 +17,40 @@ import java.util.Map; * +---------------------------------------------------------------------- */ public interface HomeService{ - HomeRateResponse sales(); - - HomeRateResponse user(); - - HomeRateResponse views(); - - HomeRateResponse order(); + /** + * 用户曲线图 + */ Map chartUser(); + /** + * 30天订单量趋势 + */ Map chartOrder(); + /** + * 用户购买统计 + */ Map chartUserBuy(); + /** + * 周订单量趋势 + */ Map chartOrderInWeek(); + /** + * 月订单量趋势 + */ Map chartOrderInMonth(); + /** + * 年订单量趋势 + */ Map chartOrderInYear(); + + /** + * 首页数据 + * @return HomeRateResponse + */ + HomeRateResponse indexDate(); } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/express/service/LogisticService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/LogisticService.java similarity index 89% rename from crmeb/src/main/java/com/zbkj/crmeb/express/service/LogisticService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/LogisticService.java index c950a9fd..07e36fcd 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/express/service/LogisticService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/LogisticService.java @@ -1,6 +1,7 @@ -package com.zbkj.crmeb.express.service; +package com.zbkj.service.service; -import com.zbkj.crmeb.express.vo.LogisticsResultVo; + +import com.zbkj.common.vo.LogisticsResultVo; /** * ExpressService 接口 diff --git a/crmeb/src/main/java/com/zbkj/crmeb/pass/service/OnePassService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/OnePassService.java similarity index 94% rename from crmeb/src/main/java/com/zbkj/crmeb/pass/service/OnePassService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/OnePassService.java index 34d4a22d..fd5ed855 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/pass/service/OnePassService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/OnePassService.java @@ -1,9 +1,9 @@ -package com.zbkj.crmeb.pass.service; +package com.zbkj.service.service; import com.alibaba.fastjson.JSONObject; -import com.common.MyRecord; -import com.zbkj.crmeb.pass.request.*; -import com.zbkj.crmeb.pass.vo.OnePassLogisticsQueryVo; +import com.zbkj.common.request.*; +import com.zbkj.common.vo.MyRecord; +import com.zbkj.common.vo.OnePassLogisticsQueryVo; /** * 一号通 OnePassService 接口 diff --git a/crmeb/src/main/java/com/zbkj/crmeb/payment/service/OrderPayService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/OrderPayService.java similarity index 75% rename from crmeb/src/main/java/com/zbkj/crmeb/payment/service/OrderPayService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/OrderPayService.java index 46dd2978..28615ef1 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/payment/service/OrderPayService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/OrderPayService.java @@ -1,8 +1,8 @@ -package com.zbkj.crmeb.payment.service; +package com.zbkj.service.service; -import com.zbkj.crmeb.front.request.OrderPayRequest; -import com.zbkj.crmeb.front.response.OrderPayResultResponse; -import com.zbkj.crmeb.store.model.StoreOrder; +import com.zbkj.common.model.order.StoreOrder; +import com.zbkj.common.request.OrderPayRequest; +import com.zbkj.common.response.OrderPayResultResponse; /** * 订单支付 @@ -24,13 +24,6 @@ public interface OrderPayService{ */ Boolean paySuccess(StoreOrder storeOrder); - /** - * 余额支付 - * @param storeOrder 订单 - * @return Boolean - */ - Boolean yuePay(StoreOrder storeOrder); - /** * 订单支付 * @param orderPayRequest 支付参数 diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/service/OrderService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/OrderService.java similarity index 77% rename from crmeb/src/main/java/com/zbkj/crmeb/front/service/OrderService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/OrderService.java index 1c2eb5c4..4ad658b3 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/service/OrderService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/OrderService.java @@ -1,13 +1,10 @@ -package com.zbkj.crmeb.front.service; +package com.zbkj.service.service; -import com.common.CommonPage; -import com.common.MyRecord; -import com.common.PageParamRequest; -import com.zbkj.crmeb.front.request.*; -import com.zbkj.crmeb.front.response.*; -import com.zbkj.crmeb.store.request.StoreProductReplyAddRequest; +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.HashMap; import java.util.List; /** @@ -36,7 +33,7 @@ public interface OrderService { * 订单详情 * @param orderId 订单id */ - StoreOrderDetailResponse detailOrder(String orderId); + StoreOrderDetailInfoResponse detailOrder(String orderId); /** * 订单状态数量 @@ -50,6 +47,11 @@ public interface OrderService { */ List getRefundReason(); + /** + * 订单删除 + * @param id 订单id + * @return Boolean + */ Boolean delete(Integer id); /** @@ -59,11 +61,26 @@ public interface OrderService { */ Boolean reply(StoreProductReplyAddRequest request); - boolean take(Integer id); + /** + * 订单收货 + * @param id 订单id + * @return Boolean + */ + Boolean take(Integer id); - boolean cancel(Integer id); + /** + * 订单取消 + * @param id 订单id + * @return Boolean + */ + Boolean cancel(Integer id); - boolean refundApply(OrderRefundApplyRequest request); + /** + * 订单退款申请 + * @param request 申请参数 + * @return Boolean + */ + Boolean refundApply(OrderRefundApplyRequest request); /** * 订单退款申请Task使用 @@ -119,4 +136,9 @@ public interface OrderService { */ MyRecord createOrder(CreateOrderRequest orderRequest); + /** + * 获取支付配置 + * @return PreOrderResponse + */ + PreOrderResponse getPayConfig(); } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/service/OrderTaskService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/OrderTaskService.java similarity index 96% rename from crmeb/src/main/java/com/zbkj/crmeb/store/service/OrderTaskService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/OrderTaskService.java index 9ed0787b..894e8d2e 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/service/OrderTaskService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/OrderTaskService.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.store.service; +package com.zbkj.service.service; /** diff --git a/crmeb/src/main/java/com/zbkj/crmeb/upload/service/OssService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/OssService.java similarity index 87% rename from crmeb/src/main/java/com/zbkj/crmeb/upload/service/OssService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/OssService.java index 9b36e87a..19f628b1 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/upload/service/OssService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/OssService.java @@ -1,6 +1,9 @@ -package com.zbkj.crmeb.upload.service; +package com.zbkj.service.service; -import com.zbkj.crmeb.upload.vo.CloudVo; + +import com.zbkj.common.vo.CloudVo; + +import java.io.File; /** * OssService 接口 @@ -15,5 +18,7 @@ import com.zbkj.crmeb.upload.vo.CloudVo; * +---------------------------------------------------------------------- */ public interface OssService { - void upload(CloudVo cloudVo, String webPth, String localFile, Integer id); + + void upload(CloudVo cloudVo, String webPth, String localFile, File file); + } \ No newline at end of file diff --git a/crmeb/src/main/java/com/zbkj/crmeb/upload/service/QiNiuService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/QiNiuService.java similarity index 79% rename from crmeb/src/main/java/com/zbkj/crmeb/upload/service/QiNiuService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/QiNiuService.java index ea460137..879f8545 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/upload/service/QiNiuService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/QiNiuService.java @@ -1,7 +1,9 @@ -package com.zbkj.crmeb.upload.service; +package com.zbkj.service.service; +import com.zbkj.common.vo.CloudVo; import com.qiniu.storage.UploadManager; -import com.zbkj.crmeb.upload.vo.CloudVo; + +import java.io.File; /** * QiNiuService 接口 @@ -17,4 +19,6 @@ import com.zbkj.crmeb.upload.vo.CloudVo; */ 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); } \ No newline at end of file diff --git a/crmeb/src/main/java/com/zbkj/crmeb/payment/service/RechargePayService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/RechargePayService.java similarity index 90% rename from crmeb/src/main/java/com/zbkj/crmeb/payment/service/RechargePayService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/RechargePayService.java index f364b893..5d1dce3e 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/payment/service/RechargePayService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/RechargePayService.java @@ -1,6 +1,6 @@ -package com.zbkj.crmeb.payment.service; +package com.zbkj.service.service; -import com.zbkj.crmeb.finance.model.UserRecharge; +import com.zbkj.common.model.finance.UserRecharge; /** * 订单支付 diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/service/RetailShopService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/RetailShopService.java similarity index 70% rename from crmeb/src/main/java/com/zbkj/crmeb/store/service/RetailShopService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/RetailShopService.java index ce0374de..42164a4a 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/service/RetailShopService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/RetailShopService.java @@ -1,12 +1,11 @@ -package com.zbkj.crmeb.store.service; +package com.zbkj.service.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.common.CommonPage; -import com.common.PageParamRequest; -import com.zbkj.crmeb.store.request.RetailShopRequest; -import com.zbkj.crmeb.store.response.RetailShopStatisticsResponse; -import com.zbkj.crmeb.user.model.User; -import com.zbkj.crmeb.user.response.SpreadUserResponse; +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; /** * 分销业务 @@ -27,7 +26,7 @@ public interface RetailShopService extends IService { * @param keywords 搜索参数 * @param dateLimit 时间参数 * @param pageRequest 分页参数 - * @return + * @return CommonPage */ CommonPage getSpreadPeopleList(String keywords, String dateLimit, PageParamRequest pageRequest); @@ -44,11 +43,4 @@ public interface RetailShopService extends IService { */ boolean setManageInfo(RetailShopRequest retailShopRequest); - /** - * 获取分销统计数据 - * @param keywords 模糊搜索参数 - * @param dateLimit 时间参数 - * @return - */ - RetailShopStatisticsResponse getAdminStatistics(String keywords, String dateLimit); } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/express/service/ShippingTemplatesFreeService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/ShippingTemplatesFreeService.java similarity index 80% rename from crmeb/src/main/java/com/zbkj/crmeb/express/service/ShippingTemplatesFreeService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/ShippingTemplatesFreeService.java index ea0672d3..63e8fce5 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/express/service/ShippingTemplatesFreeService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/ShippingTemplatesFreeService.java @@ -1,9 +1,8 @@ -package com.zbkj.crmeb.express.service; +package com.zbkj.service.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.common.PageParamRequest; -import com.zbkj.crmeb.express.model.ShippingTemplatesFree; -import com.zbkj.crmeb.express.request.ShippingTemplatesFreeRequest; +import com.zbkj.common.model.express.ShippingTemplatesFree; +import com.zbkj.common.request.ShippingTemplatesFreeRequest; import java.util.List; @@ -21,13 +20,15 @@ import java.util.List; */ public interface ShippingTemplatesFreeService extends IService { - List getList(PageParamRequest pageParamRequest); - void saveAll(List shippingTemplatesFreeRequestList, Integer type, Integer id); List getListGroup(Integer tempId); - void delete(Integer id); + /** + * 删除 + * @param tempId 运费模板id + */ + Boolean delete(Integer tempId); /** * 根据模板编号、城市ID查询 diff --git a/crmeb/src/main/java/com/zbkj/crmeb/express/service/ShippingTemplatesRegionService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/ShippingTemplatesRegionService.java similarity index 79% rename from crmeb/src/main/java/com/zbkj/crmeb/express/service/ShippingTemplatesRegionService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/ShippingTemplatesRegionService.java index d3f646f1..7177d958 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/express/service/ShippingTemplatesRegionService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/ShippingTemplatesRegionService.java @@ -1,9 +1,9 @@ -package com.zbkj.crmeb.express.service; +package com.zbkj.service.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.common.PageParamRequest; -import com.zbkj.crmeb.express.model.ShippingTemplatesRegion; -import com.zbkj.crmeb.express.request.ShippingTemplatesRegionRequest; +import com.zbkj.common.model.express.ShippingTemplatesRegion; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.request.ShippingTemplatesRegionRequest; import java.util.List; @@ -21,13 +21,16 @@ import java.util.List; */ public interface ShippingTemplatesRegionService extends IService { - List getList(PageParamRequest pageParamRequest); - void saveAll(List shippingTemplatesRegionRequestList, Integer type, Integer id); List getListGroup(Integer tempId); - void delete(Integer tempId); + /** + * 删除 + * @param tempId 运费模板id + * @return Boolean + */ + Boolean delete(Integer tempId); /** * 根据模板编号、城市ID查询 diff --git a/crmeb/src/main/java/com/zbkj/crmeb/express/service/ShippingTemplatesService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/ShippingTemplatesService.java similarity index 65% rename from crmeb/src/main/java/com/zbkj/crmeb/express/service/ShippingTemplatesService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/ShippingTemplatesService.java index 4084b55c..29553c67 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/express/service/ShippingTemplatesService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/ShippingTemplatesService.java @@ -1,10 +1,10 @@ -package com.zbkj.crmeb.express.service; +package com.zbkj.service.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.common.PageParamRequest; -import com.zbkj.crmeb.express.model.ShippingTemplates; -import com.zbkj.crmeb.express.request.ShippingTemplatesRequest; -import com.zbkj.crmeb.express.request.ShippingTemplatesSearchRequest; +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; @@ -31,8 +31,19 @@ public interface ShippingTemplatesService extends IService { */ Boolean create(ShippingTemplatesRequest request); - boolean update(Integer id, ShippingTemplatesRequest request); + Boolean update(Integer id, ShippingTemplatesRequest request); - boolean remove(Integer id); + /** + * 删除模板 + * @param id 模板id + * @return Boolean + */ + Boolean remove(Integer id); + /** + * 获取模板信息 + * @param id 模板id + * @return ShippingTemplates + */ + ShippingTemplates getInfo(Integer id); } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/service/UserTagService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SmsRecordService.java similarity index 67% rename from crmeb/src/main/java/com/zbkj/crmeb/user/service/UserTagService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SmsRecordService.java index 0d06ec4d..82e27ecd 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/service/UserTagService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SmsRecordService.java @@ -1,13 +1,10 @@ -package com.zbkj.crmeb.user.service; +package com.zbkj.service.service; -import com.common.PageParamRequest; -import com.zbkj.crmeb.user.model.UserTag; import com.baomidou.mybatisplus.extension.service.IService; - -import java.util.List; +import com.zbkj.common.model.sms.SmsRecord; /** - * UserTagService 接口实现 + * SmsRecordService 接口 * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -18,9 +15,13 @@ import java.util.List; * | Author: CRMEB Team * +---------------------------------------------------------------------- */ -public interface UserTagService extends IService { +public interface SmsRecordService extends IService { - List getList(PageParamRequest pageParamRequest); + /** + * 保存短信记录 + * @param smsRecord 待保存短信记录 + * @return 保存结果 + */ + boolean save(SmsRecord smsRecord); - String getGroupNameInId(String tagIdValue); -} \ No newline at end of file +} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/sms/service/SmsService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SmsService.java similarity index 79% rename from crmeb/src/main/java/com/zbkj/crmeb/sms/service/SmsService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SmsService.java index b5ad0c62..12bb39d0 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/sms/service/SmsService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SmsService.java @@ -1,13 +1,11 @@ -package com.zbkj.crmeb.sms.service; +package com.zbkj.service.service; -import com.common.MyRecord; -import com.common.PageParamRequest; -import com.zbkj.crmeb.sms.request.SendSmsVo; -import com.zbkj.crmeb.sms.request.SmsApplyTempRequest; -import com.zbkj.crmeb.sms.request.SmsModifySignRequest; +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; -import java.util.HashMap; /** * SmsService 接口 @@ -23,12 +21,6 @@ import java.util.HashMap; */ public interface SmsService { - void push(String phone, String tempKey, Integer msgTempId, HashMap mapPram); - - void consume(); - - Boolean sendCode(SendSmsVo sendSmsVo); - /** * 修改签名 */ @@ -63,49 +55,55 @@ public interface SmsService { * @param phone 手机号 * @param orderNo 订单编号 * @param payPrice 支付金额 + * @param msgTempId 短信模板id * @return Boolean */ - Boolean sendPaySuccess(String phone, String orderNo, BigDecimal payPrice); + 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); + 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); + 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); + 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); + 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); + Boolean sendOrderEditPriceNotice(String phone, String orderNo, BigDecimal price, Integer msgTempId); /** * 发送订单发货提醒短信 @@ -113,6 +111,7 @@ public interface SmsService { * @param nickName 用户昵称 * @param storeName 商品名称 * @param orderNo 订单编号 + * @param msgTempId 短信模板id */ - Boolean sendOrderDeliverNotice(String phone, String nickName, String storeName, String orderNo); + Boolean sendOrderDeliverNotice(String phone, String nickName, String storeName, String orderNo, Integer msgTempId); } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/service/UserGroupService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SmsTemplateService.java similarity index 66% rename from crmeb/src/main/java/com/zbkj/crmeb/user/service/UserGroupService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SmsTemplateService.java index b7b2ff47..081ebda8 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/service/UserGroupService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SmsTemplateService.java @@ -1,13 +1,10 @@ -package com.zbkj.crmeb.user.service; +package com.zbkj.service.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.common.PageParamRequest; -import com.zbkj.crmeb.user.model.UserGroup; - -import java.util.List; +import com.zbkj.common.model.sms.SmsTemplate; /** - * UserGroupService 接口实现 + * SmsTemplateService 接口 * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -18,9 +15,12 @@ import java.util.List; * | Author: CRMEB Team * +---------------------------------------------------------------------- */ -public interface UserGroupService extends IService { +public interface SmsTemplateService extends IService { - List getList(PageParamRequest pageParamRequest); - - String getGroupNameInId(String groupIdValue); + /** + * 获取详情 + * @param id 模板id + * @return SmsTemplate + */ + SmsTemplate getDetail(Integer id); } \ No newline at end of file diff --git a/crmeb/src/main/java/com/zbkj/crmeb/bargain/service/StoreBargainService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreBargainService.java similarity index 75% rename from crmeb/src/main/java/com/zbkj/crmeb/bargain/service/StoreBargainService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreBargainService.java index aa634ff8..2ea86993 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/bargain/service/StoreBargainService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreBargainService.java @@ -1,24 +1,17 @@ -package com.zbkj.crmeb.bargain.service; +package com.zbkj.service.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.common.MyRecord; -import com.common.PageParamRequest; +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.crmeb.bargain.model.StoreBargain; -import com.zbkj.crmeb.bargain.request.StoreBargainRequest; -import com.zbkj.crmeb.bargain.request.StoreBargainSearchRequest; -import com.zbkj.crmeb.bargain.response.StoreBargainResponse; -import com.zbkj.crmeb.front.request.BargainFrontRequest; -import com.zbkj.crmeb.front.response.BargainDetailH5Response; -import com.zbkj.crmeb.front.response.BargainHeaderResponse; -import com.zbkj.crmeb.front.response.BargainIndexResponse; -import com.zbkj.crmeb.front.response.StoreBargainDetailResponse; -import com.zbkj.crmeb.store.request.StoreProductStockRequest; -import com.zbkj.crmeb.store.response.StoreProductResponse; +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; -import java.util.Map; /** * 砍价 Service @@ -62,7 +55,7 @@ public interface StoreBargainService extends IService { /** * 查询砍价商品详情 */ - StoreProductResponse getAdminDetail(Integer id); + StoreProductInfoResponse getAdminDetail(Integer id); /** * H5 砍价商品列表 @@ -88,17 +81,6 @@ public interface StoreBargainService extends IService { */ MyRecord start(BargainFrontRequest bargainFrontRequest); - /** - * 砍价商品根据实体查询 - * @return Boolean - */ - List getByEntity(StoreBargain storeBargainParam); - - /** - * 添加库存 - */ - Boolean stockAddRedis(StoreProductStockRequest stockRequest); - /** * 后台任务批量操作库存 */ diff --git a/crmeb/src/main/java/com/zbkj/crmeb/bargain/service/StoreBargainUserHelpService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreBargainUserHelpService.java similarity index 83% rename from crmeb/src/main/java/com/zbkj/crmeb/bargain/service/StoreBargainUserHelpService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreBargainUserHelpService.java index 1f0c1e74..227c6f56 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/bargain/service/StoreBargainUserHelpService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreBargainUserHelpService.java @@ -1,11 +1,10 @@ -package com.zbkj.crmeb.bargain.service; +package com.zbkj.service.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.zbkj.crmeb.bargain.model.StoreBargainUserHelp; -import com.zbkj.crmeb.bargain.response.StoreBargainUserHelpResponse; -import com.zbkj.crmeb.front.request.BargainFrontRequest; +import com.zbkj.common.model.bargain.StoreBargainUserHelp; +import com.zbkj.common.request.BargainFrontRequest; +import com.zbkj.common.response.StoreBargainUserHelpResponse; -import java.math.BigDecimal; import java.util.List; import java.util.Map; @@ -52,14 +51,6 @@ public interface StoreBargainUserHelpService extends IService help(BargainFrontRequest bargainFrontRequest); - /** - * 获取用户还剩余的砍价金额 - * @param bargainId 砍价商品编号 - * @param bargainUserUid 砍价发起用户uid - * @return BigDecimal - */ - BigDecimal getSurplusPrice(Integer bargainId, Integer bargainUserUid); - /** * 获取参与砍价总人数(次) * @return Integer diff --git a/crmeb/src/main/java/com/zbkj/crmeb/bargain/service/StoreBargainUserService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreBargainUserService.java similarity index 70% rename from crmeb/src/main/java/com/zbkj/crmeb/bargain/service/StoreBargainUserService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreBargainUserService.java index c71a6450..ffeb2475 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/bargain/service/StoreBargainUserService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreBargainUserService.java @@ -1,14 +1,14 @@ -package com.zbkj.crmeb.bargain.service; +package com.zbkj.service.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.common.PageParamRequest; +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.crmeb.bargain.model.StoreBargainUser; -import com.zbkj.crmeb.bargain.request.StoreBargainUserSearchRequest; -import com.zbkj.crmeb.bargain.response.StoreBargainUserResponse; -import com.zbkj.crmeb.front.request.BargainFrontRequest; -import com.zbkj.crmeb.front.response.BargainRecordResponse; -import com.zbkj.crmeb.front.response.BargainUserInfoResponse; +import com.zbkj.common.model.bargain.StoreBargainUser; +import com.zbkj.common.request.StoreBargainUserSearchRequest; +import com.zbkj.common.response.StoreBargainUserResponse; import java.util.List; @@ -35,22 +35,6 @@ public interface StoreBargainUserService extends IService { */ List getListByBargainId(Integer bargainId); - /** - * 获取砍价商品 - * @param bargainId 砍价商品编号 - * @param uid 参与用户uid - * @return StoreBargainUser - */ - StoreBargainUser getByBargainIdAndUid(Integer bargainId, Integer uid); - - /** - * 获取砍价中商品 - * @param bargainId 砍价商品编号 - * @param uid 参与用户uid - * @return StoreBargainUser - */ - StoreBargainUser getByBargainIdAndUidAndPink(Integer bargainId, Integer uid); - /** * 获取用户砍价活动列表 * @param bargainId 砍价商品编号 diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreCartService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreCartService.java similarity index 60% rename from crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreCartService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreCartService.java index 605a4490..5291c174 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreCartService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreCartService.java @@ -1,15 +1,14 @@ -package com.zbkj.crmeb.store.service; +package com.zbkj.service.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.common.PageParamRequest; +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.crmeb.front.request.CartNumRequest; -import com.zbkj.crmeb.front.request.CartResetRequest; -import com.zbkj.crmeb.front.response.CartInfoResponse; -import com.zbkj.crmeb.store.model.StoreCart; -import com.zbkj.crmeb.store.response.StoreCartResponse; +import com.zbkj.common.model.cat.StoreCart; -import java.math.BigDecimal; import java.util.List; import java.util.Map; @@ -35,29 +34,6 @@ public interface StoreCartService extends IService { */ PageInfo getList(PageParamRequest pageParamRequest, boolean isValid); - /** - * 根据用户id和购物车ids查询购物车集合 - * @param userId 用户id - * @param cartIds 购物车id集合 - * @return 购物车列表 - */ - List getListByUserIdAndCartIds(Integer userId, List cartIds,Boolean isNew); - - /** - * 根据用户id和购物车id集合获取列表 - * @param userId 用户id - * @param cartIds 购物车id集合 - * @return 购物车列表 - */ - List getList(Integer userId, List cartIds); - - /** - * 购物车基本获取 - * @param storeCart 购物车参数 - * @return 购物车数据 - */ - List getByEntity(StoreCart storeCart); - /** * 获取当前购物车数量 * @param request 请求参数 @@ -67,26 +43,17 @@ public interface StoreCartService extends IService { /** * 新增购物车数据 - * @param storeCart 新增购物车参数 + * @param storeCartRequest 新增购物车参数 * @return 新增结果 */ - String saveCate(StoreCart storeCart); - - /** - * 设置会员价 - * @param price 原来价格 - * @param userId 会员id - * @param isSingle 是否普通用户,true普通用户,false会员 - * @return BigDecimal - */ - BigDecimal setVipPrice(BigDecimal price,Integer userId,boolean isSingle); + String saveCate(CartRequest storeCartRequest); /** * 删除购物车 * @param ids 待删除id * @return 返回删除状态 */ - boolean deleteCartByIds(List ids); + Boolean deleteCartByIds(List ids); /** @@ -101,7 +68,7 @@ public interface StoreCartService extends IService { * @param resetRequest 重选数据 * @return 提交结果 */ - boolean resetCart(CartResetRequest resetRequest); + Boolean resetCart(CartResetRequest resetRequest); /** * 对应sku购物车生效 @@ -122,4 +89,18 @@ public interface StoreCartService extends IService { * @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/src/main/java/com/zbkj/crmeb/combination/service/StoreCombinationService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreCombinationService.java similarity index 79% rename from crmeb/src/main/java/com/zbkj/crmeb/combination/service/StoreCombinationService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreCombinationService.java index 6638bbf6..9bb39de2 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/combination/service/StoreCombinationService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreCombinationService.java @@ -1,16 +1,13 @@ -package com.zbkj.crmeb.combination.service; +package com.zbkj.service.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.common.PageParamRequest; +import com.zbkj.common.request.PageParamRequest; import com.github.pagehelper.PageInfo; -import com.zbkj.crmeb.combination.model.StoreCombination; -import com.zbkj.crmeb.combination.request.StoreCombinationRequest; -import com.zbkj.crmeb.combination.request.StoreCombinationSearchRequest; -import com.zbkj.crmeb.combination.request.StorePinkRequest; -import com.zbkj.crmeb.combination.response.StoreCombinationResponse; -import com.zbkj.crmeb.front.response.*; -import com.zbkj.crmeb.store.request.StoreProductStockRequest; -import com.zbkj.crmeb.store.response.StoreProductResponse; +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; @@ -53,8 +50,9 @@ public interface StoreCombinationService extends IService { /** * 查询拼团商品详情 + * @return StoreProductInfoResponse */ - StoreProductResponse getAdminDetail(Integer id); + StoreProductInfoResponse getAdminDetail(Integer id); /** * 修改拼团商品状态 @@ -93,16 +91,6 @@ public interface StoreCombinationService extends IService { */ Boolean removePink(StorePinkRequest storePinkRequest); - /** - * 条件查询 - */ - List getByEntity(StoreCombination storeCombination); - - /** - * 添加库存 - */ - Boolean stockAddRedis(StoreProductStockRequest stockRequest); - /** * 后台任务批量操作库存 */ diff --git a/crmeb/src/main/java/com/zbkj/crmeb/marketing/service/StoreCouponService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreCouponService.java similarity index 79% rename from crmeb/src/main/java/com/zbkj/crmeb/marketing/service/StoreCouponService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreCouponService.java index 537bb138..7b3cc1a5 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/marketing/service/StoreCouponService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreCouponService.java @@ -1,13 +1,13 @@ -package com.zbkj.crmeb.marketing.service; +package com.zbkj.service.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.common.PageParamRequest; -import com.common.SearchAndPageRequest; -import com.zbkj.crmeb.marketing.model.StoreCoupon; -import com.zbkj.crmeb.marketing.request.StoreCouponRequest; -import com.zbkj.crmeb.marketing.request.StoreCouponSearchRequest; -import com.zbkj.crmeb.marketing.response.StoreCouponFrontResponse; -import com.zbkj.crmeb.marketing.response.StoreCouponInfoResponse; +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; @@ -31,8 +31,6 @@ public interface StoreCouponService extends IService { StoreCoupon getInfoException(Integer id); - void checkException(StoreCoupon storeCoupon); - StoreCouponInfoResponse info(Integer id); /** @@ -70,11 +68,6 @@ public interface StoreCouponService extends IService { */ Boolean delete(Integer id); - /** - * 获取首页优惠券列表(最多两条,不够两条不返回) - */ - List getHomeIndexCoupon(); - /** * 移动端优惠券列表 * @param type 类型,1-通用,2-商品,3-品类 @@ -83,4 +76,11 @@ public interface StoreCouponService extends IService { * @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/src/main/java/com/zbkj/crmeb/marketing/service/StoreCouponUserService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreCouponUserService.java similarity index 70% rename from crmeb/src/main/java/com/zbkj/crmeb/marketing/service/StoreCouponUserService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreCouponUserService.java index 57dca788..67b7ac0f 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/marketing/service/StoreCouponUserService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreCouponUserService.java @@ -1,18 +1,17 @@ -package com.zbkj.crmeb.marketing.service; +package com.zbkj.service.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.common.CommonPage; -import com.common.MyRecord; -import com.common.PageParamRequest; +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.crmeb.front.request.UserCouponReceiveRequest; -import com.zbkj.crmeb.marketing.model.StoreCouponUser; -import com.zbkj.crmeb.marketing.request.StoreCouponUserRequest; -import com.zbkj.crmeb.marketing.request.StoreCouponUserSearchRequest; -import com.zbkj.crmeb.marketing.response.StoreCouponUserOrder; -import com.zbkj.crmeb.marketing.response.StoreCouponUserResponse; +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.math.BigDecimal; import java.util.HashMap; import java.util.List; @@ -30,26 +29,21 @@ import java.util.List; */ public interface StoreCouponUserService extends IService { + /** + * 优惠券发放记录 + * @param request 查询参数 + * @param pageParamRequest 分页参数 + * @return PageInfo + */ PageInfo getList(StoreCouponUserSearchRequest request, PageParamRequest pageParamRequest); /** - * 基本条件查询 - * @param storeCouponUser 基本参数 - * @return 查询的优惠券结果 + * PC领取优惠券 + * @param storeCouponUserRequest 优惠券参数 + * @return Boolean */ - List getList(StoreCouponUser storeCouponUser); - Boolean receive(StoreCouponUserRequest storeCouponUserRequest); - /** - * 检测优惠券是否可用,计算订单价格时使用 - * @param id 优惠券id - * @param productIdList 商品id集合 - * @param price 价格 - * @return 可用状态 - */ - boolean canUse(Integer id, List productIdList, BigDecimal price); - HashMap getMapByUserId(Integer userId); /** diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreOrderInfoService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreOrderInfoService.java similarity index 65% rename from crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreOrderInfoService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreOrderInfoService.java index a9bb38ec..c063ebca 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreOrderInfoService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreOrderInfoService.java @@ -1,12 +1,11 @@ -package com.zbkj.crmeb.store.service; +package com.zbkj.service.service; -import com.common.PageParamRequest; -import com.zbkj.crmeb.store.model.StoreOrderInfo; import com.baomidou.mybatisplus.extension.service.IService; -import com.zbkj.crmeb.store.request.StoreOrderInfoSearchRequest; -import com.zbkj.crmeb.store.vo.StoreOrderInfoOldVo; -import com.zbkj.crmeb.store.vo.StoreOrderInfoVo; +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; @@ -24,8 +23,6 @@ import java.util.List; */ public interface StoreOrderInfoService extends IService { - List getList(StoreOrderInfoSearchRequest request, PageParamRequest pageParamRequest); - HashMap> getMapInId(List orderIdList); List getOrderListByOrderId(Integer orderId); @@ -51,4 +48,27 @@ public interface StoreOrderInfoService extends IService { * @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/src/main/java/com/zbkj/crmeb/store/service/StoreOrderRefundService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreOrderRefundService.java similarity index 85% rename from crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreOrderRefundService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreOrderRefundService.java index 241fb8ed..b8dfb854 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreOrderRefundService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreOrderRefundService.java @@ -1,8 +1,8 @@ -package com.zbkj.crmeb.store.service; +package com.zbkj.service.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.zbkj.crmeb.store.model.StoreOrder; -import com.zbkj.crmeb.store.request.StoreOrderRefundRequest; +import com.zbkj.common.model.order.StoreOrder; +import com.zbkj.common.request.StoreOrderRefundRequest; /** diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreOrderService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreOrderService.java similarity index 67% rename from crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreOrderService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreOrderService.java index 3bcf86fe..4cdbdb97 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreOrderService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreOrderService.java @@ -1,15 +1,12 @@ -package com.zbkj.crmeb.store.service; +package com.zbkj.service.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.common.CommonPage; -import com.common.PageParamRequest; -import com.zbkj.crmeb.express.vo.ExpressSheetVo; -import com.zbkj.crmeb.express.vo.LogisticsResultVo; -import com.zbkj.crmeb.store.model.StoreOrder; -import com.zbkj.crmeb.store.request.*; -import com.zbkj.crmeb.store.response.*; -import com.zbkj.crmeb.system.request.SystemWriteOffOrderSearchRequest; -import com.zbkj.crmeb.system.response.SystemWriteOffOrderResponse; +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; @@ -41,8 +38,6 @@ public interface StoreOrderService extends IService { * 核销列表 * @param request 请求参数 * @param pageParamRequest 分页类参数 - * @author Mr.Zhang - * @since 2020-05-28 * @return List */ SystemWriteOffOrderResponse getWriteOffList(SystemWriteOffOrderSearchRequest request, PageParamRequest pageParamRequest); @@ -56,15 +51,6 @@ public interface StoreOrderService extends IService { */ BigDecimal getSumBigDecimal(Integer userId, String date); - /** - * 订单列表返回map - * @param orderIdList Integer 订单id - * @author Mr.Zhang - * @since 2020-06-10 - * @return Map - */ - Map getMapInId(List orderIdList); - /** * H5订单列表 * @param uid 用户uid @@ -80,13 +66,6 @@ public interface StoreOrderService extends IService { */ boolean create(StoreOrder storeOrder); - /** - * 订单基本查询 - * @param storeOrder 订单参数 - * @return 订单查询结果 - */ - List getByEntity(StoreOrder storeOrder); - /** * 根据属性仅仅获取一条 * @param storeOrder 参数 @@ -101,8 +80,6 @@ public interface StoreOrderService extends IService { */ Integer getTopDataUtil(Integer status, Integer userId); - int getOrderCount(Integer userId, String date); - List getOrderGroupByDate(String dateLimit, int lefTime); boolean refund(StoreOrderRefundRequest request); @@ -132,8 +109,6 @@ public interface StoreOrderService extends IService { */ Boolean refundRefuse(String orderNo, String reason); - List getOrderByUserIdsForRetailShop(List ids); - StoreOrder getInfoByEntity(StoreOrder storeOrder); /** @@ -143,22 +118,13 @@ public interface StoreOrderService extends IService { */ LogisticsResultVo getLogisticsInfo(String orderNo); - Map getStatus(StoreOrder storeOrder); - - /** - * 更改订单价格 - * @param request 订单改价对象 - * @return 更改结果 - */ - boolean editPrice(StoreOrderEditPriceRequest request); - /** * 根据时间参数统计订单价格 * @param dateLimit 时间区间 * @param type 1=price 2=订单量 * @return 统计订单信息 */ - StoreOrderStatisticsResponse orderStatisticsByTime(String dateLimit,Integer type); + StoreOrderStatisticsResponse orderStatisticsByTime(String dateLimit, Integer type); /** * 获取用户当天的秒杀数量 @@ -191,13 +157,6 @@ public interface StoreOrderService extends IService { */ ExpressSheetVo getDeliveryInfo(); - /** - * 根据用户uid集合获取订单号集合 - * @param userIds 用户uid集合 - * @return 订单号集合 - */ - List getOrderListStrByUids(List userIds, RetailShopStairUserRequest request); - /** * 更新支付结果 * @param orderNo 订单编号 @@ -278,9 +237,10 @@ public interface StoreOrderService extends IService { /** * 获取订单状态数量 * @param dateLimit 时间端 + * @param type 订单类型:0普通订单,1-视频号订单, 2-全部订单 * @return StoreOrderCountItemResponse */ - StoreOrderCountItemResponse getOrderStatusNum(String dateLimit); + StoreOrderCountItemResponse getOrderStatusNum(String dateLimit, Integer type); /** * 获取订单统计数据 @@ -295,4 +255,127 @@ public interface StoreOrderService extends IService { * @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/src/main/java/com/zbkj/crmeb/store/service/StoreOrderStatusService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreOrderStatusService.java similarity index 58% rename from crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreOrderStatusService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreOrderStatusService.java index 08537577..69183fbe 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreOrderStatusService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreOrderStatusService.java @@ -1,9 +1,9 @@ -package com.zbkj.crmeb.store.service; +package com.zbkj.service.service; -import com.common.PageParamRequest; -import com.zbkj.crmeb.store.model.StoreOrderStatus; import com.baomidou.mybatisplus.extension.service.IService; -import com.zbkj.crmeb.store.request.StoreOrderStatusSearchRequest; +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; @@ -22,14 +22,32 @@ import java.util.List; */ 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); - Boolean addLog(Integer orderId, String type, String message); - /** * 根据实体参数获取 * @param storeOrderStatus 订单状态参数 @@ -40,7 +58,21 @@ public interface StoreOrderStatusService extends IService { /** * 根据订单id获取最后一条记录 * @param orderId 订单id - * @return + * @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/src/main/java/com/zbkj/crmeb/store/service/StoreOrderTaskService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreOrderTaskService.java similarity index 91% rename from crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreOrderTaskService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreOrderTaskService.java index c4e20850..da0231b0 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreOrderTaskService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreOrderTaskService.java @@ -1,7 +1,7 @@ -package com.zbkj.crmeb.store.service; +package com.zbkj.service.service; -import com.zbkj.crmeb.store.model.StoreOrder; +import com.zbkj.common.model.order.StoreOrder; /** * 订单任务服务 diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreOrderVerification.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreOrderVerification.java similarity index 82% rename from crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreOrderVerification.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreOrderVerification.java index 9e1f3382..2272a00e 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreOrderVerification.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreOrderVerification.java @@ -1,9 +1,10 @@ -package com.zbkj.crmeb.store.service; +package com.zbkj.service.service; -import com.zbkj.crmeb.store.request.StoreOrderStaticsticsRequest; -import com.zbkj.crmeb.store.response.StoreOrderVerificationConfirmResponse; -import com.zbkj.crmeb.store.response.StoreStaffDetail; -import com.zbkj.crmeb.store.response.StoreStaffTopDetail; + +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; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/combination/service/StorePinkService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StorePinkService.java similarity index 83% rename from crmeb/src/main/java/com/zbkj/crmeb/combination/service/StorePinkService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StorePinkService.java index e75ce601..bee15573 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/combination/service/StorePinkService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StorePinkService.java @@ -1,12 +1,12 @@ -package com.zbkj.crmeb.combination.service; +package com.zbkj.service.service; -import com.common.PageParamRequest; +import com.zbkj.common.request.PageParamRequest; import com.github.pagehelper.PageInfo; -import com.zbkj.crmeb.combination.model.StorePink; +import com.zbkj.common.model.combination.StorePink; import com.baomidou.mybatisplus.extension.service.IService; -import com.zbkj.crmeb.combination.request.StorePinkSearchRequest; -import com.zbkj.crmeb.combination.response.StorePinkAdminListResponse; -import com.zbkj.crmeb.combination.response.StorePinkDetailResponse; +import com.zbkj.common.request.StorePinkSearchRequest; +import com.zbkj.common.response.StorePinkAdminListResponse; +import com.zbkj.common.response.StorePinkDetailResponse; import java.util.List; @@ -97,10 +97,4 @@ public interface StorePinkService extends IService { * @return Integer */ Integer getTotalPeople(); - - /** - * 获取拼团详情 - * @return StorePink - */ - StorePink getByUidAndKid(Integer uid, Integer kid); } \ No newline at end of file diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreProductAttrResultService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductAttrResultService.java similarity index 71% rename from crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreProductAttrResultService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductAttrResultService.java index 1fc7252d..d845af03 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreProductAttrResultService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductAttrResultService.java @@ -1,9 +1,7 @@ -package com.zbkj.crmeb.store.service; +package com.zbkj.service.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.common.PageParamRequest; -import com.zbkj.crmeb.store.model.StoreProductAttrResult; -import com.zbkj.crmeb.store.request.StoreProductAttrResultSearchRequest; +import com.zbkj.common.model.product.StoreProductAttrResult; import java.util.List; @@ -21,12 +19,6 @@ import java.util.List; */ public interface StoreProductAttrResultService extends IService { - List getList(StoreProductAttrResultSearchRequest request, PageParamRequest pageParamRequest); - - StoreProductAttrResult getByProductId(int productId); - - void deleteByProductId(int productId, int type); - /** * 根据商品属性值集合查询 * @param storeProductAttrResult 查询参数 diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreProductAttrService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductAttrService.java similarity index 73% rename from crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreProductAttrService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductAttrService.java index 67703b33..b9086717 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreProductAttrService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductAttrService.java @@ -1,9 +1,7 @@ -package com.zbkj.crmeb.store.service; +package com.zbkj.service.service; -import com.common.PageParamRequest; import com.baomidou.mybatisplus.extension.service.IService; -import com.zbkj.crmeb.store.model.StoreProductAttr; -import com.zbkj.crmeb.store.request.StoreProductAttrSearchRequest; +import com.zbkj.common.model.product.StoreProductAttr; import java.util.List; @@ -21,8 +19,6 @@ import java.util.List; */ public interface StoreProductAttrService extends IService { - List getList(StoreProductAttrSearchRequest request, PageParamRequest pageParamRequest); - /** * 根据基本属性查询商品属性详情 * @param storeProductAttr 商品属性 @@ -30,13 +26,6 @@ public interface StoreProductAttrService extends IService { */ List getByEntity(StoreProductAttr storeProductAttr); - /** - * 根据id查询商品属性详情 - * @param productId 商品id - * @return 查询结果 - */ - List getByProductId(int productId); - /** * 根据id删除商品 * @param productId 待删除商品id @@ -44,4 +33,19 @@ public interface StoreProductAttrService extends IService { */ 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/src/main/java/com/zbkj/crmeb/store/service/StoreProductAttrValueService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductAttrValueService.java similarity index 74% rename from crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreProductAttrValueService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductAttrValueService.java index 8b22d68f..2ee2bba2 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreProductAttrValueService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductAttrValueService.java @@ -1,9 +1,7 @@ -package com.zbkj.crmeb.store.service; +package com.zbkj.service.service; -import com.common.PageParamRequest; import com.baomidou.mybatisplus.extension.service.IService; -import com.zbkj.crmeb.store.model.StoreProductAttrValue; -import com.zbkj.crmeb.store.request.StoreProductAttrValueSearchRequest; +import com.zbkj.common.model.product.StoreProductAttrValue; import java.util.List; @@ -21,21 +19,6 @@ import java.util.List; */ public interface StoreProductAttrValueService extends IService { - /** - * 商品属性分页李贝奥 - * @param request 条件参数 - * @param pageParamRequest 分页参数 - * @return 商品属性集合 - */ - List getList(StoreProductAttrValueSearchRequest request, PageParamRequest pageParamRequest); - - /** - * 根据商品id获取 - * @param productId 商品id - * @return 商品属性集合 - */ - List getListByProductId(Integer productId); - /** * 根据商品id和attrId获取列表集合 * @param productId 商品id @@ -52,16 +35,6 @@ public interface StoreProductAttrValueService extends IService getByEntity(StoreProductAttrValue storeProductAttrValue); - /** - * 加销量,减库存 - * @param productId 商品id - * @param attrValueId 商品attrValue id - * @param num 销售数量 - * @param type 是否限购 - * @return - */ - boolean decProductAttrStock(Integer productId, Integer attrValueId, Integer num, Integer type); - /** * 根据商品删除attrValue * @param productId 商品id @@ -95,4 +68,20 @@ public interface StoreProductAttrValueService extends IService getListByProductIdAndType(Integer productId, Integer type); } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreProductCouponService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductCouponService.java similarity index 79% rename from crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreProductCouponService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductCouponService.java index 10da7827..8796d832 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreProductCouponService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductCouponService.java @@ -1,7 +1,7 @@ -package com.zbkj.crmeb.store.service; +package com.zbkj.service.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.zbkj.crmeb.store.model.StoreProductCoupon; +import com.zbkj.common.model.product.StoreProductCoupon; import java.util.List; @@ -24,13 +24,6 @@ public interface StoreProductCouponService extends IService */ boolean deleteByProductId(Integer productId); - /** - * 批量保存商品优惠券关联信息 - * @param storeProductCoupons 优惠券关联信息 - * @return 保存结果 - */ - void saveCoupons(List storeProductCoupons); - /** * 根据商品id获取已关联优惠券信息 * @param productId 商品id diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreProductDescriptionService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductDescriptionService.java similarity index 74% rename from crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreProductDescriptionService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductDescriptionService.java index bc0cec70..faf33213 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreProductDescriptionService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductDescriptionService.java @@ -1,11 +1,7 @@ -package com.zbkj.crmeb.store.service; +package com.zbkj.service.service; -import com.common.PageParamRequest; import com.baomidou.mybatisplus.extension.service.IService; -import com.zbkj.crmeb.store.model.StoreProductDescription; -import com.zbkj.crmeb.store.request.StoreProductDescriptionSearchRequest; - -import java.util.List; +import com.zbkj.common.model.product.StoreProductDescription; /** * StoreProductDescriptionService 接口 @@ -21,12 +17,18 @@ import java.util.List; */ public interface StoreProductDescriptionService extends IService { - List getList(StoreProductDescriptionSearchRequest request, PageParamRequest pageParamRequest); - /** * 根据商品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/src/main/java/com/zbkj/crmeb/log/service/StoreProductLogService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductLogService.java similarity index 82% rename from crmeb/src/main/java/com/zbkj/crmeb/log/service/StoreProductLogService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductLogService.java index 6c7c0c8a..9f094c60 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/log/service/StoreProductLogService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductLogService.java @@ -1,7 +1,7 @@ -package com.zbkj.crmeb.log.service; +package com.zbkj.service.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.zbkj.crmeb.log.model.StoreProductLog; +import com.zbkj.common.model.log.StoreProductLog; /** * StoreProductLogService 接口 @@ -17,7 +17,4 @@ import com.zbkj.crmeb.log.model.StoreProductLog; */ public interface StoreProductLogService extends IService { - Integer getCountByTimeAndType(String time, String type); - - void addLogTask(); } \ No newline at end of file diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreProductRelationService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductRelationService.java similarity index 60% rename from crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreProductRelationService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductRelationService.java index ceb3a488..4b0e835c 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreProductRelationService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductRelationService.java @@ -1,12 +1,11 @@ -package com.zbkj.crmeb.store.service; +package com.zbkj.service.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.common.PageParamRequest; -import com.zbkj.crmeb.front.request.UserCollectAllRequest; -import com.zbkj.crmeb.front.response.UserRelationResponse; -import com.zbkj.crmeb.store.model.StoreProduct; -import com.zbkj.crmeb.store.model.StoreProductRelation; -import com.zbkj.crmeb.store.request.StoreProductRelationSearchRequest; +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; @@ -24,8 +23,6 @@ import java.util.List; */ public interface StoreProductRelationService extends IService { - List getList(StoreProductRelationSearchRequest request, PageParamRequest pageParamRequest); - List getList(Integer productId, String type); /** @@ -35,7 +32,12 @@ public interface StoreProductRelationService extends IService getLikeOrCollectByUser(Integer userId, Integer productId,boolean isLike); @@ -59,4 +61,32 @@ public interface StoreProductRelationService extends IService { + /** + * 商品评论列表 + * @param request 请求参数 + * @param pageParamRequest 分页参数 + * @return PageInfo + */ PageInfo getList(StoreProductReplySearchRequest request, PageParamRequest pageParamRequest); - Integer getSumStar(Integer productId); - /** * 创建订单商品评价 * @param request 请求参数 @@ -45,14 +48,6 @@ public interface StoreProductReplyService extends IService { */ boolean virtualCreate(StoreProductReplyAddRequest request); - /** - * 查询是否已经回复 - * @param unique - * @param replayType - * @return - */ - List isReply(String unique,String replayType, Integer orderId); - /** * 查询是否已经回复 * @param unique skuId @@ -61,14 +56,6 @@ public interface StoreProductReplyService extends IService { */ Boolean isReply(String unique, Integer orderId); - /** - * 获取商品评论列表 - * @param productId 商品ID - * @param type 商品类型 - * @return List - */ - List getAllByPidAndType(Integer productId, String type); - /** * H5商品评论统计 * @param productId 商品编号 @@ -91,4 +78,17 @@ public interface StoreProductReplyService extends IService { * @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/src/main/java/com/zbkj/crmeb/store/service/StoreProductRuleService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductRuleService.java similarity index 66% rename from crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreProductRuleService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductRuleService.java index 5dea5ff2..b31ddfa9 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreProductRuleService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductRuleService.java @@ -1,10 +1,10 @@ -package com.zbkj.crmeb.store.service; +package com.zbkj.service.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.common.PageParamRequest; -import com.zbkj.crmeb.store.model.StoreProductRule; -import com.zbkj.crmeb.store.request.StoreProductRuleRequest; -import com.zbkj.crmeb.store.request.StoreProductRuleSearchRequest; +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; @@ -22,6 +22,12 @@ import java.util.List; */ public interface StoreProductRuleService extends IService { + /** + * 商品规格列表 + * @param request 查询参数 + * @param pageParamRequest 分页参数 + * @return List + */ List getList(StoreProductRuleSearchRequest request, PageParamRequest pageParamRequest); /** @@ -30,4 +36,11 @@ public interface StoreProductRuleService extends IService { * @return 新增结果 */ boolean save(StoreProductRuleRequest storeProductRuleRequest); + + /** + * 修改规格 + * @param storeProductRuleRequest 规格参数 + * @return Boolean + */ + Boolean updateRule(StoreProductRuleRequest storeProductRuleRequest); } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreProductService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductService.java similarity index 60% rename from crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreProductService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductService.java index ba7e17c6..88554b9a 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreProductService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreProductService.java @@ -1,17 +1,13 @@ -package com.zbkj.crmeb.store.service; +package com.zbkj.service.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.common.MyRecord; -import com.common.PageParamRequest; +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 com.zbkj.crmeb.front.request.IndexStoreProductSearchRequest; -import com.zbkj.crmeb.front.request.ProductRequest; -import com.zbkj.crmeb.store.model.StoreProduct; -import com.zbkj.crmeb.store.request.StoreProductRequest; -import com.zbkj.crmeb.store.request.StoreProductSearchRequest; -import com.zbkj.crmeb.store.request.StoreProductStockRequest; -import com.zbkj.crmeb.store.response.StoreProductResponse; -import com.zbkj.crmeb.store.response.StoreProductTabsHeader; import org.json.JSONException; import java.io.IOException; @@ -33,29 +29,11 @@ public interface StoreProductService extends IService { /** * 获取产品列表Admin - * @param request - * @param pageParamRequest - * @return + * @param request 筛选参数 + * @param pageParamRequest 分页参数 + * @return PageInfo */ - PageInfo getList(StoreProductSearchRequest request, PageParamRequest pageParamRequest); - - /** - * H5端使用 - * @param request - * @param pageParamRequest - * @param productIdList - * @return - */ - List getList(StoreProductSearchRequest request, PageParamRequest pageParamRequest, - List productIdList); - - /** - * 获取产品列表H5 - * @param request - * @param pageParamRequest - * @return - */ - List getList(IndexStoreProductSearchRequest request, PageParamRequest pageParamRequest); + PageInfo getAdminList(StoreProductSearchRequest request, PageParamRequest pageParamRequest); /** * 根据id集合获取商品信息 @@ -63,47 +41,41 @@ public interface StoreProductService extends IService { * @return 商品信息 */ List getListInIds(List productIds); - /** - * 基本参数获取 - * @param storeProduct 产品参数 - * @return 商品结果 - */ - StoreProduct getByEntity(StoreProduct storeProduct); /** - * 保存产品信息 - * @param storeProductRequest - * @return + * 新增商品 + * @param request 商品请求对象 + * @return Boolean */ - boolean save(StoreProductRequest storeProductRequest); + Boolean save(StoreProductAddRequest request); /** - * 更新产品信息 - * @param storeProductRequest - * @return + * 更新商品信息 + * @param storeProductRequest 商品参数 + * @return 更新结果 */ - boolean update(StoreProductRequest storeProductRequest); + Boolean update(StoreProductAddRequest storeProductRequest); /** * 产品详情 - * @param id - * @return + * @param id 商品id + * @return StoreProductResponse */ - StoreProductResponse getByProductId(int id); + StoreProductResponse getByProductId(Integer id); + + /** + * 商品详情(管理端) + * @param id 商品id + * @return StoreProductInfoResponse + */ + StoreProductInfoResponse getInfo(Integer id); /** * 获取tabsHeader对应数量 - * @return + * @return List */ List getTabsHeader(); - /** - * 添加库存 - * @param request - * @return - */ - boolean stockAddRedis(StoreProductStockRequest request); - /** * 根据其他平台url导入产品信息 * @param url 待倒入平台的url @@ -112,22 +84,6 @@ public interface StoreProductService extends IService { */ StoreProductRequest importProductFromUrl(String url, int tag) throws IOException, JSONException; - /** - * 获取推荐商品 - * @param limit 最大数据量 - * @return 推荐商品集合 - */ - List getRecommendStoreProduct(Integer limit); - - /** - * 扣减库存加销量 - * @param productId 产品id - * @param num 商品数量 - * @param type 是否限购 0=不限购 - * @return 扣减结果 - */ - boolean decProductStock(Integer productId, Integer num, Integer attrValueId, Integer type); - List getSecondaryCategoryByProductId(String productId); /** @@ -136,14 +92,14 @@ public interface StoreProductService extends IService { * @param type 类型:recycle——回收站 delete——彻底删除 * @return 删除结果 */ - boolean deleteProduct(Integer productId, String type); + Boolean deleteProduct(Integer productId, String type); /** * 恢复已删除商品 * @param productId 商品id * @return 恢复结果 */ - boolean reStoreProduct(Integer productId); + Boolean reStoreProduct(Integer productId); /** * 后台任务批量操作库存 @@ -221,9 +177,46 @@ public interface StoreProductService extends IService { StoreProduct getCartByProId(Integer productId); /** - * 根据商品ids获取对应的列表 - * @param productIdList 商品id列表 + * 根据日期获取新增商品数量 + * @param date 日期,yyyy-MM-dd格式 + * @return Integer + */ + Integer getNewProductByDate(String date); + + /** + * 获取所有未删除的商品 * @return List */ - List findH5ListByProIds(List productIdList); + 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/src/main/java/com/zbkj/crmeb/seckill/service/StoreSeckillMangerService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreSeckillMangerService.java similarity index 58% rename from crmeb/src/main/java/com/zbkj/crmeb/seckill/service/StoreSeckillMangerService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreSeckillMangerService.java index 5a26cf48..1684dbc4 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/seckill/service/StoreSeckillMangerService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreSeckillMangerService.java @@ -1,13 +1,11 @@ -package com.zbkj.crmeb.seckill.service; +package com.zbkj.service.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.common.PageParamRequest; -import com.zbkj.crmeb.seckill.model.StoreSeckillManger; -import com.zbkj.crmeb.seckill.request.StoreSeckillMangerRequest; -import com.zbkj.crmeb.seckill.request.StoreSeckillMangerSearchRequest; -import com.zbkj.crmeb.seckill.response.StoreSeckillManagerResponse; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.RequestBody; +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; @@ -25,7 +23,13 @@ import java.util.List; */ public interface StoreSeckillMangerService extends IService { - List getList(StoreSeckillManger request, PageParamRequest pageParamRequest); + /** + * 秒杀配置列表 + * @param request 查询参数 + * @param pageParamRequest 分页参数 + * @return List + */ + List getList(StoreSeckillMangerSearchRequest request, PageParamRequest pageParamRequest); /** * 删除秒杀配置 逻辑删除 @@ -34,20 +38,6 @@ public interface StoreSeckillMangerService extends IService */ boolean deleteLogicById(int id); - /** - * 检查时间段是否已经存在 - * @param storeSeckillManger 查询秒杀配置 - * @return 查询结果 - */ - List checkTimeRangeUnique(StoreSeckillManger storeSeckillManger); - - /** - * 更新秒杀配置 - * @param storeSeckillManger 待更新秒杀配置 - * @return 更新结果 - */ - boolean updateByCondition(StoreSeckillManger storeSeckillManger); - /** * 详情 * @param id 配置id @@ -67,7 +57,7 @@ public interface StoreSeckillMangerService extends IService * @param status 待更新状态 * @return 结果 */ - boolean updateStatus(int id, boolean status); + Boolean updateStatus(Integer id, Boolean status); /** * 更新秒杀配置 @@ -75,13 +65,23 @@ public interface StoreSeckillMangerService extends IService * @param storeSeckillMangerRequest 秒杀配置 * @return 结果 */ - boolean update(Integer id,StoreSeckillMangerRequest storeSeckillMangerRequest); - void setTimeRangeFromRequest(@Validated @RequestBody StoreSeckillMangerRequest storeSeckillMangerRequest, StoreSeckillManger storeSeckillManger); - void setTimeRangeFromRequest(@Validated @RequestBody StoreSeckillMangerSearchRequest request, StoreSeckillManger storeSeckillManger); + Boolean update(Integer id, StoreSeckillMangerRequest storeSeckillMangerRequest); /** * 获取移动端列表(正在进行和马上开始的秒杀) * @return List */ List getH5List(); + + /** + * 获取所有秒杀配置 + * @return List + */ + List getAllList(); + + /** + * 添加秒杀配置 + * @param storeSeckillMangerRequest 配置参数 + */ + Boolean saveManger(StoreSeckillMangerRequest storeSeckillMangerRequest); } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/seckill/service/StoreSeckillService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreSeckillService.java similarity index 72% rename from crmeb/src/main/java/com/zbkj/crmeb/seckill/service/StoreSeckillService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreSeckillService.java index 336f61df..39f687cf 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/seckill/service/StoreSeckillService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/StoreSeckillService.java @@ -1,18 +1,12 @@ -package com.zbkj.crmeb.seckill.service; +package com.zbkj.service.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.common.PageParamRequest; +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.crmeb.front.response.SecKillResponse; -import com.zbkj.crmeb.front.response.SeckillIndexResponse; -import com.zbkj.crmeb.front.response.StoreSecKillH5Response; -import com.zbkj.crmeb.seckill.model.StoreSeckill; -import com.zbkj.crmeb.seckill.request.StoreSeckillRequest; -import com.zbkj.crmeb.seckill.request.StoreSeckillSearchRequest; -import com.zbkj.crmeb.seckill.response.StoreSeckillDetailResponse; -import com.zbkj.crmeb.seckill.response.StoreSeckillResponse; -import com.zbkj.crmeb.store.request.StoreProductStockRequest; -import com.zbkj.crmeb.store.response.StoreProductResponse; +import com.zbkj.common.model.seckill.StoreSeckill; +import com.zbkj.common.response.*; import java.util.List; @@ -30,6 +24,12 @@ import java.util.List; */ public interface StoreSeckillService extends IService { + /** + * 秒杀产品列表 + * @param request 查询参数 + * @param pageParamRequest 分页参数 + * @return PageInfo + */ PageInfo getList(StoreSeckillSearchRequest request, PageParamRequest pageParamRequest); /** @@ -44,7 +44,7 @@ public interface StoreSeckillService extends IService { * @param request 待新增秒杀商品 * @return 新增结果 */ - Boolean saveSeckill(StoreSeckillRequest request); + Boolean saveSeckill(StoreSeckillAddRequest request); /** * 秒杀商品详情 H5 @@ -58,14 +58,14 @@ public interface StoreSeckillService extends IService { * @param skillId 秒杀id * @return 详情数据 */ - StoreProductResponse getDetailAdmin(int skillId); + StoreProductInfoResponse getDetailAdmin(Integer skillId); /** * 更新秒杀商品 * @param request 待更新秒杀商品 * @return 更新结果 */ - Boolean updateSeckill(StoreSeckillRequest request); + Boolean updateSeckill(StoreSeckillAddRequest request); /** * 更新秒杀状态 @@ -88,13 +88,6 @@ public interface StoreSeckillService extends IService { */ List getKillListByTimeId(String timeId, PageParamRequest pageParamRequest); - /** - * 秒杀基础查询 - * @param storeSeckill 秒杀基本参数 - * @return 查询到的秒杀商品 - */ - List getByEntity(StoreSeckill storeSeckill); - /** * 根据商品id查询正在秒杀的商品信息 * @param productId 商品id @@ -102,13 +95,6 @@ public interface StoreSeckillService extends IService { */ List getCurrentSecKillByProductId(Integer productId); - /** - * 添加库存 - * @param request 添加库存请求参数 - * @return Boolean - */ - Boolean stockAddRedis(StoreProductStockRequest request); - /** * 后台任务批量操作库存 */ diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/service/SystemAdminService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemAdminService.java similarity index 55% rename from crmeb/src/main/java/com/zbkj/crmeb/system/service/SystemAdminService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemAdminService.java index 00ee286f..d47ae4ac 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/service/SystemAdminService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemAdminService.java @@ -1,16 +1,15 @@ -package com.zbkj.crmeb.system.service; +package com.zbkj.service.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.common.PageParamRequest; -import com.zbkj.crmeb.system.model.SystemAdmin; -import com.zbkj.crmeb.system.request.SystemAdminAddRequest; -import com.zbkj.crmeb.system.request.SystemAdminLoginRequest; -import com.zbkj.crmeb.system.request.SystemAdminRequest; -import com.zbkj.crmeb.system.response.SystemAdminResponse; +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; -import java.util.Map; /** * SystemAdminService 接口 @@ -25,45 +24,38 @@ import java.util.Map; * +---------------------------------------------------------------------- */ public interface SystemAdminService extends IService { + + /** + * 后台管理员列表 + * @param request 请求参数 + * @param pageParamRequest 分页参数 + * @return List + */ List getList(SystemAdminRequest request, PageParamRequest pageParamRequest); - SystemAdminResponse getInfo(SystemAdminRequest request) throws Exception; - - /** - * PC登录 - */ - SystemAdminResponse login(SystemAdminLoginRequest request, String ip) throws Exception; - - /** - * 根据Token获取对应用户信息 - */ - SystemAdminResponse getInfoByToken(String token) throws Exception; - - /** - * 用户登出 - */ - Boolean logout(String token) throws Exception; - /** * 新增管理员 */ - SystemAdminResponse saveAdmin(SystemAdminAddRequest systemAdminAddRequest) throws Exception; + Boolean saveAdmin(SystemAdminAddRequest systemAdminAddRequest); /** * 更新管理员 */ - SystemAdminResponse updateAdmin(SystemAdminRequest systemAdminRequest) throws Exception; - - Integer getAdminId(); - - SystemAdmin getInfo(Integer adminId); - - SystemAdmin getInfo(); - - void bind(String wxCode, Integer adminId); + 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); /** @@ -79,8 +71,16 @@ public interface SystemAdminService extends IService { List findIsSmsList(); /** - * 获取登录页图片 - * @return Map + * 管理员详情 + * @param id 管理员id + * @return SystemAdmin */ - Map getLoginPic(); + 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 00000000..e172f188 --- /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~2020 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/src/main/java/com/zbkj/crmeb/system/service/SystemCityAsyncService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemCityAsyncService.java similarity index 85% rename from crmeb/src/main/java/com/zbkj/crmeb/system/service/SystemCityAsyncService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemCityAsyncService.java index 51f5fc18..5f375abb 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/service/SystemCityAsyncService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemCityAsyncService.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.system.service; +package com.zbkj.service.service; /** * SystemCityAsyncService 接口 @@ -14,7 +14,13 @@ package com.zbkj.crmeb.system.service; */ public interface SystemCityAsyncService { + /** + * 数据整体刷入redis + */ void async(Integer id); + /** + * 设置属性列表进入redis + */ void setListTree(); } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/service/SystemCityService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemCityService.java similarity index 57% rename from crmeb/src/main/java/com/zbkj/crmeb/system/service/SystemCityService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemCityService.java index 959a0e0a..b02547e4 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/service/SystemCityService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemCityService.java @@ -1,9 +1,10 @@ -package com.zbkj.crmeb.system.service; +package com.zbkj.service.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.zbkj.crmeb.system.model.SystemCity; -import com.zbkj.crmeb.system.request.SystemCityRequest; -import com.zbkj.crmeb.system.request.SystemCitySearchRequest; +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; @@ -21,17 +22,44 @@ import java.util.List; */ public interface SystemCityService extends IService { + /** + * 分页城市列表 + * @param request 搜索条件 + */ Object getList(SystemCitySearchRequest request); - boolean updateStatus(Integer id, Boolean status); + /** + * 修改状态 + * @param id 城市id + * @param status 状态 + */ + Boolean updateStatus(Integer id, Boolean status); - boolean update(Integer id, SystemCityRequest request); + /** + * 修改城市 + * @param id 城市id + * @param request 修改参数 + */ + Boolean update(Integer id, SystemCityRequest request); - Object getListTree(); + /** + * 获取城市树 + */ + List getListTree(); + /** + * 获取所有城市cityId + * @return List + */ List getCityIdList(); + /** + * 获取城市 + * @param cityId 城市id + * @return SystemCity + */ SystemCity getCityByCityId(Integer cityId); + /** * 根据城市名称获取城市详细数据 * @param 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 00000000..da77c14a --- /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~2020 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/src/main/java/com/zbkj/crmeb/system/service/SystemFormTempService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemFormTempService.java similarity index 52% rename from crmeb/src/main/java/com/zbkj/crmeb/system/service/SystemFormTempService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemFormTempService.java index 272c445e..5f9a0c9c 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/service/SystemFormTempService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemFormTempService.java @@ -1,10 +1,11 @@ -package com.zbkj.crmeb.system.service; +package com.zbkj.service.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.common.PageParamRequest; -import com.zbkj.crmeb.system.model.SystemFormTemp; -import com.zbkj.crmeb.system.request.SystemFormCheckRequest; -import com.zbkj.crmeb.system.request.SystemFormTempSearchRequest; +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; @@ -22,7 +23,30 @@ import java.util.List; */ 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); } \ No newline at end of file diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/service/SystemGroupDataService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemGroupDataService.java similarity index 51% rename from crmeb/src/main/java/com/zbkj/crmeb/system/service/SystemGroupDataService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemGroupDataService.java index 2f7c1036..49731f44 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/service/SystemGroupDataService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemGroupDataService.java @@ -1,10 +1,10 @@ -package com.zbkj.crmeb.system.service; +package com.zbkj.service.service; -import com.common.PageParamRequest; -import com.zbkj.crmeb.system.model.SystemGroupData; import com.baomidou.mybatisplus.extension.service.IService; -import com.zbkj.crmeb.system.request.SystemGroupDataRequest; -import com.zbkj.crmeb.system.request.SystemGroupDataSearchRequest; +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; @@ -23,16 +23,40 @@ import java.util.List; */ public interface SystemGroupDataService extends IService { + /** + * 分页组合数据详情 + * @param request 搜索条件 + * @param pageParamRequest 分页参数 + */ List getList(SystemGroupDataSearchRequest request, PageParamRequest pageParamRequest); - boolean create(SystemGroupDataRequest systemGroupDataRequest); + /** + * 新增组合数据详情 + * @param systemGroupDataRequest SystemFormCheckRequest 新增参数 + */ + Boolean create(SystemGroupDataRequest systemGroupDataRequest); - boolean update(Integer id, SystemGroupDataRequest request); + /** + * 修改组合数据详情表 + * @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); /** @@ -40,4 +64,18 @@ public interface SystemGroupDataService extends IService { * @return HashMap */ HashMap getMenuUser(); + + /** + * 获取列表通过gid + * @param gid gid + * @return 列表 + */ + List findListByGid(Integer gid); + + /** + * 删除通过gid + * @param gid gid + * @return Boolean + */ + Boolean deleteByGid(Integer gid); } \ No newline at end of file diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/service/SystemGroupService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemGroupService.java similarity index 53% rename from crmeb/src/main/java/com/zbkj/crmeb/system/service/SystemGroupService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemGroupService.java index 783126e7..baf74451 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/service/SystemGroupService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemGroupService.java @@ -1,10 +1,10 @@ -package com.zbkj.crmeb.system.service; +package com.zbkj.service.service; -import com.common.PageParamRequest; -import com.zbkj.crmeb.system.model.SystemGroup; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.model.system.SystemGroup; import com.baomidou.mybatisplus.extension.service.IService; -import com.zbkj.crmeb.system.model.SystemGroupData; -import com.zbkj.crmeb.system.request.SystemGroupSearchRequest; +import com.zbkj.common.request.SystemGroupRequest; +import com.zbkj.common.request.SystemGroupSearchRequest; import java.util.List; @@ -22,5 +22,29 @@ import java.util.List; */ 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 00000000..c10d7055 --- /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~2020 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); +} \ No newline at end of file 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 00000000..fc4ad205 --- /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~2020 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); +} \ No newline at end of file diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/service/WechatQrcodeService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemRoleMenuService.java similarity index 60% rename from crmeb/src/main/java/com/zbkj/crmeb/wechat/service/WechatQrcodeService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemRoleMenuService.java index e32f6806..3c23adab 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/service/WechatQrcodeService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemRoleMenuService.java @@ -1,14 +1,13 @@ -package com.zbkj.crmeb.wechat.service; +package com.zbkj.service.service; -import com.common.PageParamRequest; -import com.zbkj.crmeb.wechat.model.WechatQrcode; import com.baomidou.mybatisplus.extension.service.IService; -import com.zbkj.crmeb.wechat.request.WechatQrcodeSearchRequest; +import com.zbkj.common.model.system.SystemRoleMenu; import java.util.List; /** - * WechatQrcodeService 接口 + * SystemRoleMenuService 接口 + * 角色菜单关联服务 * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -19,7 +18,18 @@ import java.util.List; * | Author: CRMEB Team * +---------------------------------------------------------------------- */ -public interface WechatQrcodeService extends IService { +public interface SystemRoleMenuService extends IService { - List getList(WechatQrcodeSearchRequest request, PageParamRequest pageParamRequest); + /** + * 通过角色id删除 + * @param rid 角色id + */ + Boolean deleteByRid(Integer rid); + + /** + * 通过角色id获取菜单列表 + * @param rid 角色id + * @return List + */ + List getMenuListByRid(Integer rid); } \ No newline at end of file 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 00000000..f8bee5cf --- /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~2020 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/src/main/java/com/zbkj/crmeb/system/service/SystemStoreService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemStoreService.java similarity index 57% rename from crmeb/src/main/java/com/zbkj/crmeb/system/service/SystemStoreService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemStoreService.java index b9fe5457..4653d97d 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/service/SystemStoreService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemStoreService.java @@ -1,11 +1,11 @@ -package com.zbkj.crmeb.system.service; +package com.zbkj.service.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.common.PageParamRequest; -import com.zbkj.crmeb.front.request.StoreNearRequest; -import com.zbkj.crmeb.front.response.StoreNearResponse; -import com.zbkj.crmeb.system.model.SystemStore; -import com.zbkj.crmeb.system.request.SystemStoreRequest; +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; @@ -24,7 +24,14 @@ import java.util.List; */ public interface SystemStoreService extends IService { - List getList(String keywords, int status, PageParamRequest pageParamRequest); + /** + * 门店自提分页列表 + * @param keywords 搜索条件 + * @param status 状态 + * @param pageParamRequest 分页参数 + * @return List + */ + List getList(String keywords, Integer status, PageParamRequest pageParamRequest); /** * 根据基本参数获取 @@ -33,18 +40,40 @@ public interface SystemStoreService extends IService { */ SystemStore getByCondition(SystemStore systemStore); - Boolean updateStatus(Integer id, boolean status); + /** + * 修改门店显示状态 + * @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); /** @@ -58,4 +87,11 @@ public interface SystemStoreService extends IService { * @param id 提货点编号 */ Boolean recovery(Integer id); + + /** + * 门店自提详情 + * @param id Integer + * @return SystemStore + */ + SystemStore getInfo(Integer id); } \ No newline at end of file diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/service/SystemStoreStaffService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemStoreStaffService.java similarity index 58% rename from crmeb/src/main/java/com/zbkj/crmeb/system/service/SystemStoreStaffService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemStoreStaffService.java index 049e17e5..00d42fb9 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/service/SystemStoreStaffService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemStoreStaffService.java @@ -1,14 +1,11 @@ -package com.zbkj.crmeb.system.service; +package com.zbkj.service.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.common.PageParamRequest; +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.crmeb.system.model.SystemStoreStaff; -import com.zbkj.crmeb.system.request.SystemStoreStaffRequest; -import com.zbkj.crmeb.system.response.SystemStoreStaffResponse; - -import java.util.HashMap; -import java.util.List; +import com.zbkj.common.model.system.SystemStoreStaff; /** * SystemStoreStaffService 接口 @@ -24,21 +21,32 @@ import java.util.List; */ public interface SystemStoreStaffService extends IService { - PageInfo getList(Integer storeId, PageParamRequest pageParamRequest); - - HashMap getMapInId(List clerkIdList); - /** - * 根据用户id获取核销信息 - * @param userIds 用户id集合 - * @return 核销信息 + * 分页显示门店核销员列表 + * @param storeId 门店id + * @param pageParamRequest 分页参数 */ - List getByAdminUserIds(List userIds); + PageInfo getList(Integer storeId, PageParamRequest pageParamRequest); /** * 添加核销员 唯一验证 * @param request 当前添加参数 * @return 添加结果 */ - boolean saveUnique(SystemStoreStaffRequest request); + 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); } \ No newline at end of file diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/service/SystemUserLevelService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemUserLevelService.java similarity index 50% rename from crmeb/src/main/java/com/zbkj/crmeb/system/service/SystemUserLevelService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemUserLevelService.java index 92abcd4c..bcc84d63 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/service/SystemUserLevelService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SystemUserLevelService.java @@ -1,10 +1,9 @@ -package com.zbkj.crmeb.system.service; +package com.zbkj.service.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.common.PageParamRequest; -import com.zbkj.crmeb.system.model.SystemUserLevel; -import com.zbkj.crmeb.system.request.SystemUserLevelRequest; -import com.zbkj.crmeb.system.request.SystemUserLevelSearchRequest; +import com.zbkj.common.model.system.SystemUserLevel; +import com.zbkj.common.request.SystemUserLevelRequest; +import com.zbkj.common.request.SystemUserLevelUpdateShowRequest; import java.util.List; @@ -22,11 +21,25 @@ import java.util.List; */ public interface SystemUserLevelService extends IService { - List getList(SystemUserLevelSearchRequest request, PageParamRequest pageParamRequest); + /** + * 获取等级列表 + */ + List getList(); - boolean create(SystemUserLevelRequest request); + /** + * 系统等级新增 + * @param request request + * @return Boolean + */ + Boolean create(SystemUserLevelRequest request); - boolean update(Integer id, SystemUserLevelRequest request); + /** + * 系统等级更新 + * @param id 等级id + * @param request 等级数据 + * @return Boolean + */ + Boolean update(Integer id, SystemUserLevelRequest request); SystemUserLevel getByLevelId(Integer levelId); @@ -34,4 +47,23 @@ public interface SystemUserLevelService extends IService { * 获取系统等级列表(移动端) */ 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/src/main/java/com/zbkj/crmeb/wechat/service/TemplateMessageService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/TemplateMessageService.java similarity index 50% rename from crmeb/src/main/java/com/zbkj/crmeb/wechat/service/TemplateMessageService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/TemplateMessageService.java index 8d139a68..2f38291c 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/service/TemplateMessageService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/TemplateMessageService.java @@ -1,10 +1,7 @@ -package com.zbkj.crmeb.wechat.service; +package com.zbkj.service.service; -import com.common.PageParamRequest; import com.baomidou.mybatisplus.extension.service.IService; -import com.zbkj.crmeb.wechat.model.TemplateMessage; -import com.zbkj.crmeb.wechat.request.TemplateMessageSearchRequest; -import com.zbkj.crmeb.wechat.vo.TemplateMessageIndustryVo; +import com.zbkj.common.model.wechat.TemplateMessage; import java.util.HashMap; import java.util.List; @@ -23,38 +20,61 @@ import java.util.List; */ public interface TemplateMessageService extends IService { - List getList(TemplateMessageSearchRequest request, PageParamRequest pageParamRequest); - - void push(String tempKey, HashMap map, Integer userId, String type); - - TemplateMessage infoException(Integer id); - + /** + * 公众号消费队列消费 + */ void consumePublic(); + /** + * 小程序消费队列消费 + */ void consumeProgram(); - TemplateMessageIndustryVo getIndustry(); - /** * 发送公众号模板消息 - * @param templateNo 模板消息编号 + * @param templateId 模板消息编号 * @param temMap 内容Map * @param openId 微信用户openId */ - void pushTemplateMessage(String templateNo, HashMap temMap, String openId); + void pushTemplateMessage(Integer templateId, HashMap temMap, String openId); /** * 发送小程序订阅消息 - * @param templateNo 模板消息编号 + * @param templateId 模板消息编号 * @param temMap 内容Map * @param openId 微信用户openId */ - void pushMiniTemplateMessage(String templateNo, HashMap temMap, String openId); + void pushMiniTemplateMessage(Integer templateId, HashMap temMap, String openId); /** - * 获取小程序订阅模板编号 - * @param type 场景类型(支付之前:beforePay|支付成功:afterPay|申请退款:refundApply|充值之前:beforeRecharge|创建砍价:createBargain|参与拼团:pink|取消拼团:cancelPink) - * @return + * 修改模板状态 + * @param id 模板id + * @param status 状态 */ - List getMiniTempList(String type); + 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); } \ No newline at end of file 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 00000000..adef8695 --- /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~2020 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/src/main/java/com/zbkj/crmeb/user/service/UserAddressService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserAddressService.java similarity index 73% rename from crmeb/src/main/java/com/zbkj/crmeb/user/service/UserAddressService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserAddressService.java index fe2c0139..fc7dac1d 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/service/UserAddressService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserAddressService.java @@ -1,9 +1,9 @@ -package com.zbkj.crmeb.user.service; +package com.zbkj.service.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.common.PageParamRequest; -import com.zbkj.crmeb.front.request.UserAddressRequest; -import com.zbkj.crmeb.user.model.UserAddress; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.model.user.UserAddress; +import com.zbkj.common.request.UserAddressRequest; import java.util.List; @@ -29,17 +29,25 @@ public interface UserAddressService extends IService { List getList(PageParamRequest pageParamRequest); /** - * 根据基本条件查询 - * @param address 查询条件 - * @return 查询到的地址 + * 添加用户地址 + * @param request 地址请求参数 + * @return UserAddress */ - UserAddress getUserAddress(UserAddress address); - UserAddress create(UserAddressRequest request); - boolean def(Integer id); + /** + * 设置默认地址 + * @param id 地址id + * @return Boolean + */ + Boolean def(Integer id); - boolean delete(Integer id); + /** + * 删除用户地址 + * @param id 地址id + * @return Boolean + */ + Boolean delete(Integer id); UserAddress getDefault(); 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 00000000..a1367b11 --- /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~2020 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); +} \ No newline at end of file diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/service/UserBrokerageRecordService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserBrokerageRecordService.java similarity index 75% rename from crmeb/src/main/java/com/zbkj/crmeb/user/service/UserBrokerageRecordService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserBrokerageRecordService.java index d7fbdc29..ddc24191 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/service/UserBrokerageRecordService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserBrokerageRecordService.java @@ -1,10 +1,12 @@ -package com.zbkj.crmeb.user.service; +package com.zbkj.service.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.common.PageParamRequest; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.response.SpreadCommissionDetailResponse; import com.github.pagehelper.PageInfo; -import com.zbkj.crmeb.front.response.SpreadCommissionDetailResponse; -import com.zbkj.crmeb.user.model.UserBrokerageRecord; +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; @@ -73,6 +75,14 @@ public interface UserBrokerageRecordService extends IService findSpreadListByUid(Integer uid, PageParamRequest pageParamRequest); + /** + * 获取推广记录列表 + * @param request 用户uid + * @param pageParamRequest 分页参数 + * @return PageInfo + */ + PageInfo findAdminSpreadListByUid(RetailShopStairUserRequest request, PageParamRequest pageParamRequest); + /** * 获取月份对应的推广订单数 * @param uid 用户uid @@ -84,10 +94,9 @@ public interface UserBrokerageRecordService extends IService getBrokerageTopByDate(String type, PageParamRequest pageParamRequest); + List getBrokerageTopByDate(String type); /** * 根据Uid和时间参数获取分佣记录列表 @@ -110,15 +119,6 @@ public interface UserBrokerageRecordService extends IService getFundsMonitorDetail(Integer uid, String dateLimit, PageParamRequest pageParamRequest); - /** * 获取冻结期佣金 * @param uid uid @@ -127,12 +127,23 @@ public interface UserBrokerageRecordService extends IService findListByLinkIdsAndLinkTypeAndUid(List linkIds, String linkType, Integer uid, PageParamRequest pageParamRequest); + PageInfo getAdminList(BrokerageRecordRequest request, PageParamRequest pageParamRequest); + + /** + * 根据日期获取支付佣金金额(确认到账佣金) + * @param date 日期,yyyy-MM-dd格式 + * @return BigDecimal + */ + BigDecimal getBrokerageAmountByDate(String date); + + /** + * 获取累计佣金转余额金额 + * @return BigDecimal + */ + BigDecimal getTotalYuePrice(); } \ No newline at end of file diff --git a/crmeb/src/main/java/com/zbkj/crmeb/sms/service/SmsRecordService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserExperienceRecordService.java similarity index 51% rename from crmeb/src/main/java/com/zbkj/crmeb/sms/service/SmsRecordService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserExperienceRecordService.java index 06ef495d..8a2077e7 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/sms/service/SmsRecordService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserExperienceRecordService.java @@ -1,14 +1,13 @@ -package com.zbkj.crmeb.sms.service; +package com.zbkj.service.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.common.PageParamRequest; -import com.zbkj.crmeb.sms.model.SmsRecord; -import com.zbkj.crmeb.sms.request.SmsRecordRequest; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.model.user.UserExperienceRecord; import java.util.List; /** - * SmsRecordService 接口 + * 用户经验记录服务接口 * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -19,23 +18,21 @@ import java.util.List; * | Author: CRMEB Team * +---------------------------------------------------------------------- */ -public interface SmsRecordService extends IService { +public interface UserExperienceRecordService extends IService { /** - * 列表 - * @param request 请求参数 - * @param pageParamRequest 分页类参数 - * @author Mr.Zhang - * @since 2020-04-16 - * @return List - */ - List getList(SmsRecordRequest request, PageParamRequest pageParamRequest); - - /** - * 保存短信记录 - * @param smsRecord 待保存短信记录 - * @return 保存结果 + * 获取用户经验列表(移动端) + * @param userId 用户id + * @param pageParamRequest 分页参数 + * @return List */ - boolean save(SmsRecord smsRecord); + List getH5List(Integer userId, PageParamRequest pageParamRequest); -} + /** + * 通过订单编号获取记录 + * @param orderNo 订单编号 + * @param uid uid + * @return UserExperienceRecord + */ + UserExperienceRecord getByOrderNoAndUid(String orderNo, Integer uid); +} \ No newline at end of file diff --git a/crmeb/src/main/java/com/zbkj/crmeb/finance/service/UserExtractService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserExtractService.java similarity index 68% rename from crmeb/src/main/java/com/zbkj/crmeb/finance/service/UserExtractService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserExtractService.java index ede5be50..74c5ba3c 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/finance/service/UserExtractService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserExtractService.java @@ -1,14 +1,14 @@ -package com.zbkj.crmeb.finance.service; +package com.zbkj.service.service; -import com.common.PageParamRequest; -import com.github.pagehelper.PageInfo; -import com.zbkj.crmeb.finance.model.UserExtract; import com.baomidou.mybatisplus.extension.service.IService; -import com.zbkj.crmeb.finance.request.UserExtractRequest; -import com.zbkj.crmeb.finance.request.UserExtractSearchRequest; -import com.zbkj.crmeb.finance.response.BalanceResponse; -import com.zbkj.crmeb.finance.response.UserExtractResponse; -import com.zbkj.crmeb.front.response.UserExtractRecordResponse; +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; @@ -42,22 +42,8 @@ public interface UserExtractService extends IService { */ BigDecimal getWithdrawn(String startTime,String endTime); - /** - * 审核中总金额 - * @author Mr.Zhang - * @since 2020-05-11 - * @return BalanceResponse - */ - BigDecimal getWithdrawning(String startTime, String endTime); - - Boolean create(UserExtractRequest request, Integer userId); - - BigDecimal getFreeze(Integer userId); - UserExtractResponse getUserExtractByUserId(Integer userId); - List getListByUserIds(List userIds); - /** * 提现审核 * @param id 提现申请id @@ -67,13 +53,32 @@ public interface UserExtractService extends IService { */ 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 + * @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/src/main/java/com/zbkj/crmeb/finance/service/UserFundsMonitorService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserFundsMonitorService.java similarity index 55% rename from crmeb/src/main/java/com/zbkj/crmeb/finance/service/UserFundsMonitorService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserFundsMonitorService.java index 8c9a3108..629f0788 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/finance/service/UserFundsMonitorService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserFundsMonitorService.java @@ -1,13 +1,11 @@ -package com.zbkj.crmeb.finance.service; +package com.zbkj.service.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.common.PageParamRequest; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.vo.UserFundsMonitor; import com.github.pagehelper.PageInfo; -import com.zbkj.crmeb.finance.model.UserFundsMonitor; -import com.zbkj.crmeb.finance.request.FundsMonitorUserSearchRequest; -import com.zbkj.crmeb.user.model.UserBrokerageRecord; - -import java.util.List; +import com.zbkj.common.request.BrokerageRecordRequest; +import com.zbkj.common.model.user.UserBrokerageRecord; /** * UserRechargeService 接口 @@ -24,19 +22,10 @@ import java.util.List; public interface UserFundsMonitorService extends IService { /** - * 佣金列表 - * @author Mr.Zhang - * @since 2020-04-28 - * @return List - */ - List getFundsMonitor(FundsMonitorUserSearchRequest request, PageParamRequest pageParamRequest); - - /** - * 佣金详细记录 - * @param uid 用户uid - * @param dateLimit 时间参数 + * 佣金记录 + * @param request 筛选条件 * @param pageParamRequest 分页参数 - * @return + * @return PageInfo */ - PageInfo getFundsMonitorDetail(Integer uid, String dateLimit, PageParamRequest pageParamRequest); + 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 00000000..d644d0c6 --- /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~2020 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); +} \ No newline at end of file diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/service/UserIntegralRecordService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserIntegralRecordService.java similarity index 88% rename from crmeb/src/main/java/com/zbkj/crmeb/user/service/UserIntegralRecordService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserIntegralRecordService.java index fcf0e694..7728637a 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/service/UserIntegralRecordService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserIntegralRecordService.java @@ -1,11 +1,11 @@ -package com.zbkj.crmeb.user.service; +package com.zbkj.service.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.common.PageParamRequest; +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.crmeb.user.model.UserIntegralRecord; -import com.zbkj.crmeb.user.request.AdminIntegralSearchRequest; -import com.zbkj.crmeb.user.response.UserIntegralRecordResponse; +import com.zbkj.common.model.user.UserIntegralRecord; import java.util.List; @@ -58,7 +58,7 @@ public interface UserIntegralRecordService extends IService * H5用户积分列表 * @param uid 用户uid * @param pageParamRequest 分页参数 - * @return + * @return List */ List findUserIntegralRecordList(Integer uid, PageParamRequest pageParamRequest); diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/service/UserLevelService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserLevelService.java similarity index 58% rename from crmeb/src/main/java/com/zbkj/crmeb/user/service/UserLevelService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserLevelService.java index 43fdac09..872972eb 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/service/UserLevelService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserLevelService.java @@ -1,10 +1,9 @@ -package com.zbkj.crmeb.user.service; +package com.zbkj.service.service; -import com.common.PageParamRequest; -import com.zbkj.crmeb.user.model.User; -import com.zbkj.crmeb.user.model.UserLevel; import com.baomidou.mybatisplus.extension.service.IService; -import com.zbkj.crmeb.user.request.UserLevelSearchRequest; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.model.user.User; +import com.zbkj.common.model.user.UserLevel; import java.util.List; @@ -22,21 +21,32 @@ import java.util.List; */ public interface UserLevelService extends IService { - List getList(UserLevelSearchRequest request, PageParamRequest pageParamRequest); - - boolean level(Integer userId, int levelId); - /** - * 根据用户id获取用户等级 - * @param userId 用户id - * @return 用户等级 + * 用户等级列表 + * @param pageParamRequest 分页参数 + * @return List */ - UserLevel getUserLevelByUserId(Integer userId); + List getList(PageParamRequest pageParamRequest); /** * 经验升级 - * @param user - * @return + * @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); + } \ No newline at end of file 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 00000000..1f46097d --- /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~2020 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/src/main/java/com/zbkj/crmeb/user/service/UserService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserService.java similarity index 68% rename from crmeb/src/main/java/com/zbkj/crmeb/user/service/UserService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserService.java index 1c91fea6..809e774a 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/service/UserService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserService.java @@ -1,21 +1,10 @@ -package com.zbkj.crmeb.user.service; +package com.zbkj.service.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.common.PageParamRequest; import com.github.pagehelper.PageInfo; -import com.zbkj.crmeb.front.request.LoginRequest; -import com.zbkj.crmeb.front.request.PasswordRequest; -import com.zbkj.crmeb.front.request.RegisterRequest; -import com.zbkj.crmeb.front.request.UserBindingPhoneUpdateRequest; -import com.zbkj.crmeb.front.response.LoginResponse; -import com.zbkj.crmeb.front.response.UserCenterResponse; -import com.zbkj.crmeb.front.response.UserSpreadPeopleItemResponse; -import com.zbkj.crmeb.store.request.RetailShopStairUserRequest; -import com.zbkj.crmeb.store.response.SpreadOrderResponse; -import com.zbkj.crmeb.user.model.User; -import com.zbkj.crmeb.user.request.*; -import com.zbkj.crmeb.user.response.TopDetail; -import com.zbkj.crmeb.user.response.UserResponse; +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; @@ -36,18 +25,18 @@ import java.util.Map; */ public interface UserService extends IService { + /** + * 用户分页列表 + * @param request 查询参数 + * @param pageParamRequest 分页参数 + * @return PageInfo + */ PageInfo getList(UserSearchRequest request, PageParamRequest pageParamRequest); - boolean updateIntegralMoney(UserOperateIntegralMoneyRequest request); - /** - * 用户基本更新 - * @param user 用户参数 - * @return 更新结果 + * 操作积分、余额 */ - boolean updateBase(User user); - - boolean userPayCountPlus(User user); + Boolean updateIntegralMoney(UserOperateIntegralMoneyRequest request); /** * 更新余额 @@ -63,28 +52,33 @@ public interface UserService extends IService { * @param id String id * @param groupId Integer 分组Id */ - boolean group(String id, String groupId); + Boolean group(String id, String groupId); - boolean password(PasswordRequest request); - - void loginOut(String token); + /** + * 修改密码 + * @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(); - Integer getAddUserCountByDate(String date); - Map getAddUserCountGroupDate(String date); - boolean bind(UserBindingPhoneUpdateRequest request); - /** * 换绑手机号校验 */ @@ -101,34 +95,50 @@ public interface UserService extends IService { */ UserCenterResponse getUserCenter(); + /** + * 根据用户id获取用户列表 map模式 + * @param uidList uidList + * @return HashMap + */ HashMap getMapListInUid(List uidList); - HashMap getMapByList(List list); - void repeatSignNum(Integer userId); - boolean tag(String id, String tagId); + /** + * 会员标签 + * + * @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 token(User user) throws Exception; - String getValidateCodeRedisKey(String phone); - boolean spread(Integer currentUserId, Integer spreadUserId); - 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); @@ -139,8 +149,6 @@ public interface UserService extends IService { */ void bindSpread(Integer spreadUid); - boolean updateBrokeragePrice(User user, BigDecimal newBrokeragePrice); - /** * 更新推广人 * @param request 请求参数 @@ -157,24 +165,6 @@ public interface UserService extends IService { */ Boolean updateIntegral(User user, Integer integral, String type); - /** - * 获取分销人员列表 - * @param keywords 搜索参数 - * @param dateLimit 时间参数 - * @param storeBrokerageStatus 分销状态:1-指定分销,2-人人分销 - */ - List findDistributionList(String keywords, String dateLimit, String storeBrokerageStatus); - - /** - * 获取发展会员人数 - * @param ids 推广人id集合 - * @param dateLimit 时间参数 - * @return Integer - */ - Integer getDevelopDistributionPeopleNum(List ids, String dateLimit); - - User getUserByAccount(String account); - /** * 手机号注册用户 * @param phone 手机号 @@ -229,13 +219,12 @@ public interface UserService extends IService { /** * PC后台分销员列表 - * @param storeBrokerageStatus 分销模式 1-指定分销,2-人人分销 * @param keywords 搜索参数 * @param dateLimit 时间参数 * @param pageRequest 分页参数 * @return */ - PageInfo getAdminSpreadPeopleList(String storeBrokerageStatus, String keywords, String dateLimit, PageParamRequest pageRequest); + PageInfo getAdminSpreadPeopleList(String keywords, String dateLimit, PageParamRequest pageRequest); /** * 清除User Group id @@ -270,4 +259,67 @@ public interface UserService extends IService { * @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/src/main/java/com/zbkj/crmeb/user/service/UserSignService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserSignService.java similarity index 57% rename from crmeb/src/main/java/com/zbkj/crmeb/user/service/UserSignService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserSignService.java index c54c6a65..88ea2bae 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/service/UserSignService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserSignService.java @@ -1,12 +1,12 @@ -package com.zbkj.crmeb.user.service; +package com.zbkj.service.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.common.PageParamRequest; -import com.zbkj.crmeb.front.response.UserSignInfoResponse; -import com.zbkj.crmeb.system.vo.SystemGroupDataSignConfigVo; -import com.zbkj.crmeb.user.model.UserSign; -import com.zbkj.crmeb.user.vo.UserSignMonthVo; -import com.zbkj.crmeb.user.vo.UserSignVo; +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; @@ -25,16 +25,38 @@ import java.util.List; */ public interface UserSignService extends IService { + /** + * 用户积分列表 + * @param pageParamRequest 分页参数 + * @return List + */ List getList(PageParamRequest pageParamRequest); - List getListByCondition(UserSign sign,PageParamRequest pageParamRequest); + List getListByCondition(UserSign sign, PageParamRequest pageParamRequest); + /** + * 签到 + * @return SystemGroupDataSignConfigVo + */ SystemGroupDataSignConfigVo sign(); + /** + * 今日记录详情 + * @return HashMap + */ HashMap get(); - List config(); + /** + * 签到配置 + * @return List + */ + List getSignConfig(); + /** + * 积分月度列表 + * @param pageParamRequest 分页参数 + * @return List + */ List getListGroupMonth(PageParamRequest pageParamRequest); /** 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 00000000..212e9048 --- /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~2020 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); +} \ No newline at end of file diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/service/UserTokenService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserTokenService.java similarity index 82% rename from crmeb/src/main/java/com/zbkj/crmeb/user/service/UserTokenService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserTokenService.java index bb9026fd..8b45e38f 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/service/UserTokenService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserTokenService.java @@ -1,9 +1,7 @@ -package com.zbkj.crmeb.user.service; +package com.zbkj.service.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.zbkj.crmeb.user.model.UserToken; - -import java.util.List; +import com.zbkj.common.model.user.UserToken; /** * UserTokenService 接口实现 @@ -19,13 +17,16 @@ import java.util.List; */ 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); - List getList(List userIdList); - - UserToken getByUid(Integer uid); } \ No newline at end of file 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 00000000..78a83ddf --- /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~2020 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); +} \ No newline at end of file diff --git a/crmeb/src/main/java/com/zbkj/crmeb/payment/wechat/WeChatPayService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/WeChatPayService.java similarity index 67% rename from crmeb/src/main/java/com/zbkj/crmeb/payment/wechat/WeChatPayService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/WeChatPayService.java index d378b086..490270d9 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/payment/wechat/WeChatPayService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/WeChatPayService.java @@ -1,9 +1,6 @@ -package com.zbkj.crmeb.payment.wechat; +package com.zbkj.service.service; -import com.zbkj.crmeb.finance.model.UserRecharge; -import com.zbkj.crmeb.payment.vo.wechat.CreateOrderResponseVo; -import com.zbkj.crmeb.payment.vo.wechat.PayParamsVo; -import com.zbkj.crmeb.store.model.StoreOrder; +import com.zbkj.common.model.finance.UserRecharge; import java.util.Map; @@ -20,15 +17,6 @@ import java.util.Map; * +---------------------------------------------------------------------- */ public interface WeChatPayService { - CreateOrderResponseVo create(PayParamsVo payParamsVo); - - /** - * 微信预下单接口 - * @param storeOrder 订单 - * @param ip ip - * @return 获取wechat.requestPayment()参数 - */ - Map unifiedorder(StoreOrder storeOrder, String ip); /** * 查询支付结果 diff --git a/crmeb/src/main/java/com/zbkj/crmeb/upload/service/AsyncService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/WechatCallbackService.java similarity index 63% rename from crmeb/src/main/java/com/zbkj/crmeb/upload/service/AsyncService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/WechatCallbackService.java index 8d33b561..aa514ff3 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/upload/service/AsyncService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/WechatCallbackService.java @@ -1,11 +1,10 @@ -package com.zbkj.crmeb.upload.service; +package com.zbkj.service.service; -import com.zbkj.crmeb.system.model.SystemAttachment; - -import java.util.List; +import com.baomidou.mybatisplus.extension.service.IService; +import com.zbkj.common.model.wechat.WechatCallback; /** - * AsyncService 接口 + * 微信小程序回调Service * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -16,8 +15,12 @@ import java.util.List; * | Author: CRMEB Team * +---------------------------------------------------------------------- */ -public interface AsyncService { - void async(List systemAttachmentList); +public interface WechatCallbackService extends IService { - String getCurrentBaseUrl(); + /** + * 微信回调 + * @param request request + * @return String + */ + String callback(String request); } \ No newline at end of file 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 00000000..7ab5682e --- /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~2020 https://www.crmeb.com All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 + * +---------------------------------------------------------------------- + * | Author: CRMEB Team + * +---------------------------------------------------------------------- + */ +public interface WechatExceptionsService extends IService { + + /** + * 删除历史日志 + */ + void autoDeleteLog(); +} \ No newline at end of file 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 00000000..dece3347 --- /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 00000000..db84c55d --- /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~2020 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 00000000..1015e773 --- /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~2020 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); +} \ No newline at end of file diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/service/WechatPublicService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/WechatPublicService.java similarity index 83% rename from crmeb/src/main/java/com/zbkj/crmeb/wechat/service/WechatPublicService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/WechatPublicService.java index bdf74bda..54443107 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/service/WechatPublicService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/WechatPublicService.java @@ -1,6 +1,4 @@ -package com.zbkj.crmeb.wechat.service; - -import com.alibaba.fastjson.JSONObject; +package com.zbkj.service.service; /** * 微信公众号service @@ -24,13 +22,13 @@ public interface WechatPublicService { /** * 保存自定义菜单 * @param data 菜单json - * @return + * @return Boolean */ - JSONObject createMenus(String data); + Boolean createMenus(String data); /** * 删除自定义菜单 - * @return + * @return Boolean */ - JSONObject deleteMenus(); + Boolean deleteMenus(); } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/service/WechatReplyService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/WechatReplyService.java similarity index 51% rename from crmeb/src/main/java/com/zbkj/crmeb/wechat/service/WechatReplyService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/WechatReplyService.java index 01738c28..417e6bc5 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/service/WechatReplyService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/WechatReplyService.java @@ -1,10 +1,10 @@ -package com.zbkj.crmeb.wechat.service; +package com.zbkj.service.service; -import com.common.PageParamRequest; -import com.sun.org.apache.xpath.internal.operations.Bool; -import com.zbkj.crmeb.wechat.model.WechatReply; import com.baomidou.mybatisplus.extension.service.IService; -import com.zbkj.crmeb.wechat.request.WechatReplySearchRequest; +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; @@ -22,15 +22,43 @@ import java.util.List; */ public interface WechatReplyService extends IService { + /** + * 列表 + * @param request 请求参数 + * @param pageParamRequest 分页类参数 + * @return List + */ List getList(WechatReplySearchRequest request, PageParamRequest pageParamRequest); + /** + * 新增微信关键字回复表 + * @param wechatReply 新增参数 + */ Boolean create(WechatReply wechatReply); - Boolean updateVo(WechatReply wechatReply); - + /** + * 根据关键字查询数据 + * @param keywords 新增参数 + * @return WechatReply + */ WechatReply getVoByKeywords(String keywords); - WechatReply getInfoException(Integer id, boolean isTrue); - + /** + * 查询微信关键字回复表信息 + * @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); } \ No newline at end of file diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/service/WechatUserService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/WechatUserService.java similarity index 89% rename from crmeb/src/main/java/com/zbkj/crmeb/wechat/service/WechatUserService.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/WechatUserService.java index 317a5313..aa8490a6 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/service/WechatUserService.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/WechatUserService.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.wechat.service; +package com.zbkj.service.service; /** * 微信用户表 服务类 @@ -13,5 +13,5 @@ package com.zbkj.crmeb.wechat.service; * +---------------------------------------------------------------------- */ public interface WechatUserService{ - void push(String userId, Integer newsId); +// void push(String userId, Integer newsId); } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/seckill/request/StoreSeckillAttrResultRequest.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/YlyPrintService.java similarity index 70% rename from crmeb/src/main/java/com/zbkj/crmeb/seckill/request/StoreSeckillAttrResultRequest.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/YlyPrintService.java index 413a6022..a90ead10 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/seckill/request/StoreSeckillAttrResultRequest.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/YlyPrintService.java @@ -1,7 +1,7 @@ -package com.zbkj.crmeb.seckill.request; +package com.zbkj.service.service; /** - * 商品秒杀属性结果Requst对象 + * 易联云打印订单 service * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -12,5 +12,11 @@ package com.zbkj.crmeb.seckill.request; * | Author: CRMEB Team * +---------------------------------------------------------------------- */ -public class StoreSeckillAttrResultRequest { +public interface YlyPrintService { + /** + * 易联云打印商品信息 + * @param ordId 订单id + * @param isAuto 是否自动打印 + */ + void YlyPrint(String ordId,boolean isAuto); } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/article/service/impl/ArticleServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/ArticleServiceImpl.java similarity index 68% rename from crmeb/src/main/java/com/zbkj/crmeb/article/service/impl/ArticleServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/ArticleServiceImpl.java index 08a964f7..1d1ff9d9 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/article/service/impl/ArticleServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/ArticleServiceImpl.java @@ -1,26 +1,29 @@ -package com.zbkj.crmeb.article.service.impl; +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.common.CommonPage; -import com.common.PageParamRequest; -import com.exception.CrmebException; +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.utils.CrmebUtil; -import com.zbkj.crmeb.article.dao.ArticleDao; -import com.zbkj.crmeb.article.model.Article; -import com.zbkj.crmeb.article.request.ArticleSearchRequest; -import com.zbkj.crmeb.article.service.ArticleService; -import com.zbkj.crmeb.article.vo.ArticleVo; -import com.zbkj.crmeb.category.model.Category; -import com.zbkj.crmeb.category.service.CategoryService; -import com.zbkj.crmeb.front.response.ArticleResponse; -import com.zbkj.crmeb.system.service.SystemConfigService; +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; @@ -31,11 +34,8 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; -import java.util.Optional; import java.util.stream.Collectors; -import static com.constants.Constants.ARTICLE_BANNER_LIMIT; - /** * ArticleServiceImpl 接口实现 * +---------------------------------------------------------------------- @@ -61,6 +61,10 @@ public class ArticleServiceImpl extends ServiceImpl impleme @Autowired private SystemConfigService systemConfigService; + + @Autowired + private SystemAttachmentService systemAttachmentService; + /** * 列表 * @param cid 文章分类id @@ -88,67 +92,46 @@ public class ArticleServiceImpl extends ServiceImpl impleme 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())){ + if (StringUtils.isNotBlank(request.getCid())) { lambdaQueryWrapper.eq(Article::getCid, request.getCid()); } - - if(!StringUtils.isBlank(request.getKeywords())){ + 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()) - .or().like(Article::getShareTitle, request.getKeywords()) - .or().like(Article::getShareSynopsis, request.getKeywords())); + .or().like(Article::getSynopsis, request.getKeywords())); } - - lambdaQueryWrapper.orderByDesc(Article::getSort).orderByDesc(Article::getVisit).orderByDesc(Article::getCreateTime); + lambdaQueryWrapper.orderByDesc(Article::getVisit).orderByDesc(Article::getId); List
articleList = dao.selectList(lambdaQueryWrapper); ArrayList articleVoArrayList = new ArrayList<>(); - if(articleList.size() < 1){ + if (articleList.size() < 1) { return CommonPage.copyPageInfo(articlePage, articleVoArrayList); } - for (Article article : articleList) { ArticleVo articleVo = new ArticleVo(); BeanUtils.copyProperties(article, articleVo); - if(!StringUtils.isBlank(article.getImageInput()) ){ - articleVo.setImageInput(CrmebUtil.jsonToListString(article.getImageInput())); - articleVo.setImageInputs(article.getImageInput()); + if (!StrUtil.isBlank(article.getImageInput()) ) { + articleVo.setImageInput(article.getImageInput()); } articleVoArrayList.add(articleVo); } - return CommonPage.copyPageInfo(articlePage, articleVoArrayList); } - /** - * 关联产品 - * @param id Integer - * @param productId 产品id - * @author Mr.Zhang - * @since 2020-04-18 - * @return bool - */ - @Override - public boolean update(Integer id, Integer productId) { - Article article = new Article(); - article.setId(id); - article.setProductId(productId); - updateById(article); - return true; - } - /** * 查询文章详情 * @param id Integer - * @author Mr.Zhang - * @since 2020-04-18 * @return ArticleVo */ @Override @@ -158,22 +141,17 @@ public class ArticleServiceImpl extends ServiceImpl impleme throw new CrmebException("文章不存在"); } - if(article.getStatus()){ + if (article.getStatus()) { throw new CrmebException("文章不存在"); } ArticleResponse articleResponse = new ArticleResponse(); BeanUtils.copyProperties(article, articleResponse); - try { - String visit = Optional.ofNullable(article.getVisit()).orElse("0"); - int num = Integer.parseInt(visit) + 1; - article.setVisit(String.valueOf(num)); - dao.updateById(article); - } catch (Exception e) { - e.printStackTrace(); - logger.error("查看文章详情,更新浏览量失败,errorMsg = " + e.getMessage()); - } + 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; } @@ -184,7 +162,7 @@ public class ArticleServiceImpl extends ServiceImpl impleme @Override public List
getBannerList() { // 根据配置控制banner的数量 - String articleBannerLimitString = systemConfigService.getValueByKey(ARTICLE_BANNER_LIMIT); + String articleBannerLimitString = systemConfigService.getValueByKey(Constants.ARTICLE_BANNER_LIMIT); int articleBannerLimit = Integer.parseInt(articleBannerLimitString); LambdaQueryWrapper
lambdaQueryWrapper = Wrappers.lambdaQuery(); @@ -230,5 +208,63 @@ public class ArticleServiceImpl extends ServiceImpl impleme 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/src/main/java/com/zbkj/crmeb/payment/service/impl/CallbackServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/CallbackServiceImpl.java similarity index 86% rename from crmeb/src/main/java/com/zbkj/crmeb/payment/service/impl/CallbackServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/CallbackServiceImpl.java index 10d5e7b8..9e50f23c 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/payment/service/impl/CallbackServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/CallbackServiceImpl.java @@ -1,51 +1,40 @@ -package com.zbkj.crmeb.payment.service.impl; +package com.zbkj.service.service.impl; -import cn.hutool.core.codec.Base64; 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.common.MyRecord; -import com.constants.Constants; -import com.exception.CrmebException; -import com.utils.CrmebUtil; -import com.utils.DateUtil; -import com.utils.RedisUtil; -import com.utils.WxPayUtil; -import com.zbkj.crmeb.combination.model.StoreCombination; -import com.zbkj.crmeb.combination.model.StorePink; -import com.zbkj.crmeb.combination.service.StoreCombinationService; -import com.zbkj.crmeb.combination.service.StorePinkService; -import com.zbkj.crmeb.finance.model.UserRecharge; -import com.zbkj.crmeb.finance.service.UserRechargeService; -import com.zbkj.crmeb.payment.service.CallbackService; -import com.zbkj.crmeb.payment.service.OrderPayService; -import com.zbkj.crmeb.payment.service.RechargePayService; -import com.zbkj.crmeb.payment.vo.wechat.AttachVo; -import com.zbkj.crmeb.payment.vo.wechat.CallbackVo; -import com.zbkj.crmeb.store.model.StoreOrder; -import com.zbkj.crmeb.store.service.StoreOrderService; -import com.zbkj.crmeb.system.service.SystemConfigService; -import com.zbkj.crmeb.user.model.User; -import com.zbkj.crmeb.user.service.UserService; -import com.zbkj.crmeb.user.service.UserTokenService; +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.context.annotation.Lazy; 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.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; /** @@ -68,13 +57,6 @@ public class CallbackServiceImpl implements CallbackService { @Autowired private RechargePayService rechargePayService; - @Lazy - @Autowired - private OrderPayService orderPayService; - - @Autowired - private UserTokenService userTokenService; - @Autowired private StoreOrderService storeOrderService; @@ -99,10 +81,11 @@ public class CallbackServiceImpl implements CallbackService { @Autowired private StorePinkService storePinkService; + @Autowired + private WechatPayInfoService wechatPayInfoService; + /** * 微信支付回调 - * @author Mr.Zhang - * @since 2020-05-06 */ @Override public String weChat(String xmlInfo) { @@ -117,7 +100,6 @@ public class CallbackServiceImpl implements CallbackService { } try{ -// HashMap map = XmlUtil.xmlToMap(xmlInfo); HashMap map = WxPayUtil.processResponseXml(xmlInfo); // 通信是否成功 String returnCode = (String) map.get("return_code"); @@ -157,7 +139,7 @@ public class CallbackServiceImpl implements CallbackService { // 订单 if (Constants.SERVICE_PAY_TYPE_ORDER.equals(attachVo.getType())) { StoreOrder orderParam = new StoreOrder(); - orderParam.setOrderId(callbackVo.getOutTradeNo()); + orderParam.setOutTradeNo(callbackVo.getOutTradeNo()); orderParam.setUid(attachVo.getUserId()); StoreOrder storeOrder = storeOrderService.getInfoByEntity(orderParam); @@ -172,15 +154,27 @@ public class CallbackServiceImpl implements CallbackService { 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 -> { -// storeOrderService.updatePaid(storeOrder.getOrderId()); 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) { @@ -246,7 +240,7 @@ public class CallbackServiceImpl implements CallbackService { sb.append(""); return sb.toString(); } - redisUtil.lPush(Constants.ORDER_TASK_PAY_SUCCESS_AFTER, storeOrder.getOrderId()); + redisUtil.lPush(TaskConstants.ORDER_TASK_PAY_SUCCESS_AFTER, storeOrder.getOrderId()); } // 充值 if (Constants.SERVICE_PAY_TYPE_RECHARGE.equals(attachVo.getType())) { @@ -282,17 +276,6 @@ public class CallbackServiceImpl implements CallbackService { return sb.toString(); } - /** - * 支付宝支付回调 - * @author Mr.Zhang - * @since 2020-05-06 - */ - @Override - public boolean aliPay(String request) { - //根据类型判断是订单或者充值 - return false; - } - /** * 微信退款回调 * @param xmlInfo 微信回调json @@ -393,8 +376,9 @@ public class CallbackServiceImpl implements CallbackService { 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)) { + 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)) { @@ -403,6 +387,9 @@ public class CallbackServiceImpl implements CallbackService { 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; } @@ -414,7 +401,8 @@ public class CallbackServiceImpl implements CallbackService { */ public static String decryptToStr(String reqInfo, String signKey) throws Exception { Security.addProvider(new BouncyCastleProvider()); - byte[] decodeReqInfo = Base64.decode(reqInfo); +// 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"); @@ -453,4 +441,20 @@ public class CallbackServiceImpl implements CallbackService { } 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/src/main/java/com/zbkj/crmeb/category/service/impl/CategoryServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/CategoryServiceImpl.java similarity index 94% rename from crmeb/src/main/java/com/zbkj/crmeb/category/service/impl/CategoryServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/CategoryServiceImpl.java index 4e91f52c..4de29d0d 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/category/service/impl/CategoryServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/CategoryServiceImpl.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.category.service.impl; +package com.zbkj.service.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; @@ -8,19 +8,19 @@ 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.common.PageParamRequest; -import com.constants.CategoryConstants; -import com.constants.Constants; -import com.exception.CrmebException; +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.utils.CrmebUtil; -import com.zbkj.crmeb.category.dao.CategoryDao; -import com.zbkj.crmeb.category.model.Category; -import com.zbkj.crmeb.category.request.CategoryRequest; -import com.zbkj.crmeb.category.request.CategorySearchRequest; -import com.zbkj.crmeb.category.service.CategoryService; -import com.zbkj.crmeb.category.vo.CategoryTreeVo; -import com.zbkj.crmeb.system.service.SystemAttachmentService; +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; @@ -220,8 +220,7 @@ public class CategoryServiceImpl extends ServiceImpl impl return dao.update(category, objectQueryWrapper); } - @Override - public String getPathByPId(Integer pid) { + private String getPathByPId(Integer pid) { Category category = getById(pid); if(null != category){ return category.getPath() + pid + "/"; @@ -241,8 +240,6 @@ public class CategoryServiceImpl extends ServiceImpl impl /** * 带权限的属性结构 - * @author Mr.Zhang - * @since 2020-04-16 */ @Override public List getListTree(Integer type, Integer status, List categoryIdList) { @@ -363,8 +360,7 @@ public class CategoryServiceImpl extends ServiceImpl impl * @since 2020-04-16 * @return int */ - @Override - public int checkName(String name, Integer type) { + private int checkName(String name, Integer type) { LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.eq(Category::getName, name); if (ObjectUtil.isNotNull(type)) { @@ -401,7 +397,7 @@ public class CategoryServiceImpl extends ServiceImpl impl @Override public Boolean create(CategoryRequest categoryRequest) { //检测标题是否存在 - if(checkName(categoryRequest.getName(), null) > 0){ + if(checkName(categoryRequest.getName(), categoryRequest.getType()) > 0){ throw new CrmebException("此分类已存在"); } Category category = new Category(); diff --git a/crmeb/src/main/java/com/zbkj/crmeb/upload/service/impl/CosServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/CosServiceImpl.java similarity index 60% rename from crmeb/src/main/java/com/zbkj/crmeb/upload/service/impl/CosServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/CosServiceImpl.java index 6170f71b..10781f59 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/upload/service/impl/CosServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/CosServiceImpl.java @@ -1,17 +1,16 @@ -package com.zbkj.crmeb.upload.service.impl; +package com.zbkj.service.service.impl; -import com.exception.CrmebException; +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.crmeb.system.service.SystemAttachmentService; -import com.zbkj.crmeb.upload.service.CosService; -import com.zbkj.crmeb.upload.vo.CloudVo; +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.scheduling.annotation.Async; import org.springframework.stereotype.Service; import java.io.File; @@ -38,19 +37,8 @@ public class CosServiceImpl implements CosService { @Autowired private SystemAttachmentService systemAttachmentService; - /** - * 同步到腾讯云cos - * @param cloudVo CloudVo - * @param webPth String web可访问目录 - * @param localFile String 服务器文件绝对地址 - * @param id Integer 文件id - * @author Mr.Zhang - * @since 2020-05-06 - */ - - @Async @Override - public void upload(CloudVo cloudVo, String webPth, String localFile, Integer id, COSClient cosClient) { + public void uploadFile(CloudVo cloudVo, String webPth, String localFile, Integer id, COSClient cosClient) { logger.info("上传文件" + id + "开始:" + localFile); try { @@ -76,12 +64,39 @@ public class CosServiceImpl implements CosService { PutObjectResult putObjectResult = cosClient.putObject(putObjectRequest); logger.info("上传文件" + id + " -- 结束:" + putObjectResult.getETag()); - //更新数据库 - systemAttachmentService.updateCloudType(id, 4); } 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/src/main/java/com/zbkj/crmeb/export/service/impl/ExcelServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/ExcelServiceImpl.java similarity index 61% rename from crmeb/src/main/java/com/zbkj/crmeb/export/service/impl/ExcelServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/ExcelServiceImpl.java index cc96b930..18e638cb 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/export/service/impl/ExcelServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/ExcelServiceImpl.java @@ -1,34 +1,29 @@ -package com.zbkj.crmeb.export.service.impl; +package com.zbkj.service.service.impl; import cn.hutool.core.collection.CollUtil; -import com.common.PageParamRequest; -import com.constants.Constants; -import com.exception.CrmebException; +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.utils.CrmebUtil; -import com.utils.DateUtil; -import com.utils.ExportUtil; -import com.zbkj.crmeb.bargain.request.StoreBargainSearchRequest; -import com.zbkj.crmeb.bargain.response.StoreBargainResponse; -import com.zbkj.crmeb.bargain.service.StoreBargainService; -import com.zbkj.crmeb.category.service.CategoryService; -import com.zbkj.crmeb.combination.request.StoreCombinationSearchRequest; -import com.zbkj.crmeb.combination.response.StoreCombinationResponse; -import com.zbkj.crmeb.combination.service.StoreCombinationService; -import com.zbkj.crmeb.export.service.ExcelService; -import com.zbkj.crmeb.export.vo.BargainProductExcelVo; -import com.zbkj.crmeb.export.vo.CombinationProductExcelVo; -import com.zbkj.crmeb.export.vo.ProductExcelVo; -import com.zbkj.crmeb.store.request.StoreProductSearchRequest; -import com.zbkj.crmeb.store.response.StoreProductResponse; -import com.zbkj.crmeb.store.service.StoreProductService; -import com.zbkj.crmeb.system.service.SystemConfigService; +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 javax.servlet.http.HttpServletResponse; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; @@ -64,14 +59,19 @@ public class ExcelServiceImpl implements ExcelService { @Autowired private StoreCombinationService storeCombinationService; + @Autowired + private StoreOrderService storeOrderService; + + @Autowired + private CrmebConfig crmebConfig; + /** * 导出砍价商品 - * @param request - * @param response - * @return + * @param request 请求参数 + * @return 导出地址 */ @Override - public String exportBargainProduct(StoreBargainSearchRequest request, HttpServletResponse response) { + public String exportBargainProduct(StoreBargainSearchRequest request) { PageParamRequest pageParamRequest = new PageParamRequest(); pageParamRequest.setPage(Constants.DEFAULT_PAGE); pageParamRequest.setLimit(Constants.EXPORT_MAX_LIMIT); @@ -90,7 +90,7 @@ public class ExcelServiceImpl implements ExcelService { }).collect(Collectors.toList()); // 上传设置 - ExportUtil.setUpload(systemConfigService.getValueByKey(Constants.UPLOAD_ROOT_PATH_CONFIG_KEY), Constants.UPLOAD_MODEL_PATH_EXCEL, Constants.UPLOAD_TYPE_FILE); + 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"); @@ -114,12 +114,11 @@ public class ExcelServiceImpl implements ExcelService { /** * 导出拼团商品 - * @param request - * @param response - * @return + * @param request 请求参数 + * @return 导出地址 */ @Override - public String exportCombinationProduct(StoreCombinationSearchRequest request, HttpServletResponse response) { + public String exportCombinationProduct(StoreCombinationSearchRequest request) { PageParamRequest pageParamRequest = new PageParamRequest(); pageParamRequest.setPage(Constants.DEFAULT_PAGE); pageParamRequest.setLimit(Constants.EXPORT_MAX_LIMIT); @@ -135,7 +134,7 @@ public class ExcelServiceImpl implements ExcelService { }).collect(Collectors.toList()); // 上传设置 - ExportUtil.setUpload(systemConfigService.getValueByKey(Constants.UPLOAD_ROOT_PATH_CONFIG_KEY), Constants.UPLOAD_MODEL_PATH_EXCEL, Constants.UPLOAD_TYPE_FILE); + 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"); @@ -159,16 +158,15 @@ public class ExcelServiceImpl implements ExcelService { /** * 商品导出 - * @param request - * @param response - * @return + * @param request 请求参数 + * @return 导出地址 */ @Override - public String exportProduct(StoreProductSearchRequest request, HttpServletResponse response) { + public String exportProduct(StoreProductSearchRequest request) { PageParamRequest pageParamRequest = new PageParamRequest(); pageParamRequest.setPage(Constants.DEFAULT_PAGE); pageParamRequest.setLimit(Constants.EXPORT_MAX_LIMIT); - PageInfo storeProductResponsePageInfo = storeProductService.getList(request, pageParamRequest); + PageInfo storeProductResponsePageInfo = storeProductService.getAdminList(request, pageParamRequest); List list = storeProductResponsePageInfo.getList(); if(list.size() < 1){ throw new CrmebException("没有可导出的数据!"); @@ -202,7 +200,7 @@ public class ExcelServiceImpl implements ExcelService { * =============================== */ // 上传设置 - ExportUtil.setUpload(systemConfigService.getValueByKey(Constants.UPLOAD_ROOT_PATH_CONFIG_KEY), Constants.UPLOAD_MODEL_PATH_EXCEL, Constants.UPLOAD_TYPE_FILE); + 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"); @@ -219,5 +217,77 @@ public class ExcelServiceImpl implements ExcelService { 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/src/main/java/com/zbkj/crmeb/express/service/impl/ExpressServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/ExpressServiceImpl.java similarity index 85% rename from crmeb/src/main/java/com/zbkj/crmeb/express/service/impl/ExpressServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/ExpressServiceImpl.java index 108a28c7..15e6bb84 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/express/service/impl/ExpressServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/ExpressServiceImpl.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.express.service.impl; +package com.zbkj.service.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; @@ -7,18 +7,18 @@ 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.common.PageParamRequest; -import com.constants.OnePassConstants; -import com.exception.CrmebException; +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.utils.OnePassUtil; -import com.utils.RedisUtil; -import com.zbkj.crmeb.express.dao.ExpressDao; -import com.zbkj.crmeb.express.model.Express; -import com.zbkj.crmeb.express.request.ExpressSearchRequest; -import com.zbkj.crmeb.express.request.ExpressUpdateRequest; -import com.zbkj.crmeb.express.request.ExpressUpdateShowRequest; -import com.zbkj.crmeb.express.service.ExpressService; +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; @@ -60,42 +60,27 @@ public class ExpressServiceImpl extends ServiceImpl impleme * 分页显示快递公司表 * @param request 搜索条件 * @param pageParamRequest 分页参数 - * @author Mr.Zhang - * @since 2020-04-17 */ @Override public List getList(ExpressSearchRequest request, PageParamRequest pageParamRequest) { PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - if(StrUtil.isNotBlank(request.getKeywords())){ + if (StrUtil.isNotBlank(request.getKeywords())) { lambdaQueryWrapper.like(Express::getCode, request.getKeywords()).or().like(Express::getName, request.getKeywords()); } - lambdaQueryWrapper.orderByDesc(Express::getSort, Express::getId); + // 排序:sort字段倒序,正常id正序,方便展示常用物流公司 + lambdaQueryWrapper.orderByDesc(Express::getSort); + lambdaQueryWrapper.orderByAsc(Express::getId); return dao.selectList(lambdaQueryWrapper); } - /** 详情 - * @param id Integer 订单id - * @author Mr.Zhang - * @since 2020-06-10 - * @return Express - */ - @Override - public Express info(Integer id) { - Express info = getById(id); - if(null == info){ - throw new CrmebException("没有找到快递公司信息"); - } - return info; - } - /** * 编辑 */ @Override public Boolean updateExpress(ExpressUpdateRequest expressRequest) { Express temp = getById(expressRequest.getId()); - if (ObjectUtil.isNull(temp)) throw new CrmebException("编辑的记录不存在!"); + if (ObjectUtil.isNull(temp)) throw new CrmebException("快递公司不存在!"); if (StrUtil.isBlank(expressRequest.getAccount()) && temp.getPartnerId().equals(true)) { throw new CrmebException("请输入月结账号"); @@ -151,7 +136,8 @@ public class ExpressServiceImpl extends ServiceImpl impleme if (type.equals("elec")) { lqw.eq(Express::getStatus, true); } - lqw.orderByDesc(Express::getSort, Express::getId); + lqw.orderByDesc(Express::getSort); + lqw.orderByAsc(Express::getId); return dao.selectList(lqw); } @@ -191,6 +177,19 @@ public class ExpressServiceImpl extends ServiceImpl impleme 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; + } + /** * 从平台获取物流公司 * 并存入数据库 @@ -199,7 +198,7 @@ public class ExpressServiceImpl extends ServiceImpl impleme String token = onePassUtil.getToken(); HashMap header = onePassUtil.getCommonHeader(token); MultiValueMap param = new LinkedMultiValueMap<>(); - param.add("type", 1);// 国内运输商 + // param.add("type", 1);// 快递类型:1,国内运输商;2,国际运输商;3,国际邮政 不传获取全部 param.add("page", 0); param.add("limit", 1000); @@ -256,8 +255,5 @@ public class ExpressServiceImpl extends ServiceImpl impleme } return expressList.stream().map(Express::getCode).collect(Collectors.toList()); } - - public static String st = "mnc7Yay0RsvF70LWX7i6k"; - public static String sk = "¥bugJEjOmF01hxGr~qj5"; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/statistics/service/impl/HomeServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/HomeServiceImpl.java similarity index 59% rename from crmeb/src/main/java/com/zbkj/crmeb/statistics/service/impl/HomeServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/HomeServiceImpl.java index c64eb011..378c461c 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/statistics/service/impl/HomeServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/HomeServiceImpl.java @@ -1,20 +1,16 @@ -package com.zbkj.crmeb.statistics.service.impl; +package com.zbkj.service.service.impl; -import com.constants.Constants; -import com.utils.CrmebUtil; -import com.utils.DateUtil; -import com.zbkj.crmeb.log.service.StoreProductLogService; -import com.zbkj.crmeb.statistics.response.HomeRateResponse; -import com.zbkj.crmeb.statistics.service.HomeService; -import com.zbkj.crmeb.store.model.StoreOrder; -import com.zbkj.crmeb.store.service.StoreOrderService; -import com.zbkj.crmeb.user.service.UserService; -import io.swagger.models.auth.In; +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.math.BigDecimal; -import java.math.RoundingMode; import java.util.*; /** @@ -39,158 +35,7 @@ public class HomeServiceImpl implements HomeService { private UserService userService; @Autowired - private StoreProductLogService storeProductLogService; - - /** - * 销售额 - * @author Mr.Zhang - * @since 2020-05-16 - * @return HashMap - */ - @Override - public HomeRateResponse sales() { - //今日销售额 - BigDecimal today = storeOrderService.getSumBigDecimal(null, Constants.SEARCH_DATE_DAY); - - //昨天销售额 - BigDecimal yesterday = storeOrderService.getSumBigDecimal(null, Constants.SEARCH_DATE_YESTERDAY); - - //本周销售额 - BigDecimal week = storeOrderService.getSumBigDecimal(null, Constants.SEARCH_DATE_WEEK); - - //上周销售额 - BigDecimal preWeek = storeOrderService.getSumBigDecimal(null, Constants.SEARCH_DATE_PRE_WEEK); - - //总销售额 - BigDecimal all = storeOrderService.getSumBigDecimal(null, null); - - //同比公式 即:同比增长率=(本年的指标值-去年同期的值)/ 去年同期的值 * 100% - - - //日同比 - BigDecimal dayRate = CrmebUtil.getRateBig(today, yesterday); - - //周同比 - BigDecimal weekRate = CrmebUtil.getRateBig(week, preWeek); - - - return new HomeRateResponse(yesterday, dayRate, weekRate, all); - } - - /** - * 订单量 - * @author Mr.Zhang - * @since 2020-05-16 - * @return HashMap - */ - @Override - public HomeRateResponse order() { - ///今日数量 - int today = storeOrderService.getOrderCount(null, Constants.SEARCH_DATE_DAY); - - //昨日数量 - int yesterday = storeOrderService.getOrderCount(null, Constants.SEARCH_DATE_YESTERDAY); - - //本周数量 - int week = storeOrderService.getOrderCount(null, Constants.SEARCH_DATE_WEEK); - - //上周数量 - int preWeek = storeOrderService.getOrderCount(null, Constants.SEARCH_DATE_PRE_WEEK); - - //总数量 - int all = storeOrderService.getOrderCount(null, null); - - //同比公式 即:同比增长率=(本年的指标值-去年同期的值)/ 去年同期的值 * 100% - - - //日同比 - BigDecimal dayRate = CrmebUtil.getRateBig(today, yesterday); - - //周同比 - BigDecimal weekRate = CrmebUtil.getRateBig(week, preWeek); - - - return new HomeRateResponse(yesterday, dayRate, weekRate, all); - } - - /** - * 新增用户 - * @author Mr.Zhang - * @since 2020-07-30 - * @return UserCreateResponse - */ - @Override - public HomeRateResponse user() { - //今日数量 - Integer today = userService.getAddUserCountByDate(Constants.SEARCH_DATE_DAY); - - //昨日数量 - Integer yesterday = userService.getAddUserCountByDate(Constants.SEARCH_DATE_YESTERDAY); - - //本周数量 - Integer week = userService.getAddUserCountByDate(Constants.SEARCH_DATE_WEEK); - - //上周数量 - Integer preWeek = userService.getAddUserCountByDate(Constants.SEARCH_DATE_PRE_WEEK); - - //总数量 - Integer all = userService.getAddUserCountByDate(null); - - //同比公式 即:同比增长率=(本年的指标值-去年同期的值)/ 去年同期的值 * 100% - - - //日同比 - BigDecimal dayRate = CrmebUtil.getRateBig(today, yesterday); - - //周同比 - BigDecimal weekRate = CrmebUtil.getRateBig(week, preWeek); - - - return new HomeRateResponse(yesterday, dayRate, weekRate, all); - } - - /** - * 用户访问量 - * @author Mr.Zhang - * @since 2020-05-16 - * @return HashMap - */ - @Override - public HomeRateResponse views() { - //今日访问量 - Integer today = storeProductLogService.getCountByTimeAndType(Constants.SEARCH_DATE_DAY, "visit"); - - //昨日访问量 - Integer yesterday = storeProductLogService.getCountByTimeAndType(Constants.SEARCH_DATE_YESTERDAY, "visit"); - - //本周访问量 - Integer week = storeProductLogService.getCountByTimeAndType(Constants.SEARCH_DATE_WEEK, "visit"); - - //上周访问量 - Integer preWeek = storeProductLogService.getCountByTimeAndType(Constants.SEARCH_DATE_PRE_WEEK, "visit"); - - //日同比 - BigDecimal dayRate = CrmebUtil.getRateBig(today, yesterday); - - //周同比 - BigDecimal weekRate = CrmebUtil.getRateBig(week, preWeek); - - //总访问量 - Integer all = storeProductLogService.getCountByTimeAndType(Constants.SEARCH_DATE_MONTH, "visit"); - return new HomeRateResponse(yesterday, dayRate, weekRate, all); - } - - /** - * 增长率计算 - */ - private Double growth(Integer nowValuem, Integer lastValue) { - if (nowValuem == 0 && lastValue == 0) return 0D; - if (lastValue == 0) return nowValuem.doubleValue(); - if (nowValuem == 0) return -lastValue.doubleValue(); - double v = (nowValuem - lastValue) / lastValue.doubleValue(); - BigDecimal bigDecimal = new BigDecimal(v * 100).setScale(2, RoundingMode.UP); - return bigDecimal.doubleValue(); - } + private UserVisitRecordService userVisitRecordService; /** * 用户曲线图 @@ -232,7 +77,7 @@ public class HomeServiceImpl implements HomeService { private Map getOrderCountGroupByDate(List list) { Map map = new HashMap<>(); - if(list.size() < 1){ + if (list.size() < 1) { return map; } @@ -253,7 +98,7 @@ public class HomeServiceImpl implements HomeService { private Map getOrderPriceGroupByDate(List list) { Map map = new HashMap<>(); - if(list.size() < 1){ + if (list.size() < 1) { return map; } @@ -270,7 +115,7 @@ public class HomeServiceImpl implements HomeService { * @since 2020-05-16 * @return Map */ - private Map dataFormat(Map countGroupDate, String dateLimit){ + private Map dataFormat(Map countGroupDate, String dateLimit) { Map map = new LinkedHashMap<>(); List listDate = DateUtil.getListDate(dateLimit); @@ -279,13 +124,13 @@ public class HomeServiceImpl implements HomeService { int i = 0; for (String date : listDate) { Object count = 0; - if(countGroupDate.containsKey(date)){ + if (countGroupDate.containsKey(date)) { count = countGroupDate.get(date); } String key; //周格式化 - switch(dateLimit){ + switch(dateLimit) { //格式化周 case Constants.SEARCH_DATE_WEEK: case Constants.SEARCH_DATE_PRE_WEEK: @@ -312,23 +157,23 @@ public class HomeServiceImpl implements HomeService { * @since 2020-05-16 * @return Map */ - private Map dataFormatYear(Map countGroupDate, String dateLimit){ + private Map dataFormatYear(Map countGroupDate, String dateLimit) { Map map = new LinkedHashMap<>(); List listDate = new ArrayList<>(); String year = ""; - if(dateLimit.equals(Constants.SEARCH_DATE_YEAR)) { + if (dateLimit.equals(Constants.SEARCH_DATE_YEAR)) { year = DateUtil.nowYear(); } - if(dateLimit.equals(Constants.SEARCH_DATE_PRE_YEAR)) { + if (dateLimit.equals(Constants.SEARCH_DATE_PRE_YEAR)) { year = DateUtil.lastYear(); } //处理年 //12个月份数据 - for (int i = 1; i <= 12; i++){ + for (int i = 1; i <= 12; i++) { String month = i + ""; - if(i < 10){ + if (i < 10) { month = "0" + i; } listDate.add(year + "-" + month); @@ -339,7 +184,7 @@ public class HomeServiceImpl implements HomeService { int i = 0; for (Object date : listDate) { Object count = 0; - if(countGroupDate.containsKey(date)){ + if (countGroupDate.containsKey(date)) { count = countGroupDate.get(date); } map.put(monthList[i], count); @@ -428,13 +273,38 @@ public class HomeServiceImpl implements HomeService { 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){ + private Map returnOrderDate(String dateLimit, String preDateLimit, int leftTime) { Map map = new HashMap<>(); //查询本周周订单量 diff --git a/crmeb/src/main/java/com/zbkj/crmeb/express/service/impl/LogisticsServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/LogisticsServiceImpl.java similarity index 91% rename from crmeb/src/main/java/com/zbkj/crmeb/express/service/impl/LogisticsServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/LogisticsServiceImpl.java index 7041c5d4..9772c8ac 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/express/service/impl/LogisticsServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/LogisticsServiceImpl.java @@ -1,20 +1,20 @@ -package com.zbkj.crmeb.express.service.impl; +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.constants.Constants; -import com.exception.CrmebException; -import com.utils.RedisUtil; -import com.utils.RestTemplateUtil; -import com.zbkj.crmeb.express.service.LogisticService; -import com.zbkj.crmeb.express.vo.LogisticsResultListVo; -import com.zbkj.crmeb.express.vo.LogisticsResultVo; -import com.zbkj.crmeb.pass.service.OnePassService; -import com.zbkj.crmeb.pass.vo.OnePassLogisticsQueryVo; -import com.zbkj.crmeb.system.service.SystemConfigService; +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; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/pass/service/impl/OnePassServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/OnePassServiceImpl.java similarity index 97% rename from crmeb/src/main/java/com/zbkj/crmeb/pass/service/impl/OnePassServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/OnePassServiceImpl.java index 72c60872..64d9ef18 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/pass/service/impl/OnePassServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/OnePassServiceImpl.java @@ -1,26 +1,24 @@ -package com.zbkj.crmeb.pass.service.impl; +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.JSONArray; import com.alibaba.fastjson.JSONObject; -import com.common.MyRecord; -import com.constants.OnePassConstants; -import com.exception.CrmebException; -import com.qiniu.util.Json; -import com.utils.DateUtil; -import com.utils.OnePassUtil; -import com.utils.RedisUtil; -import com.utils.ValidateFormUtil; -import com.zbkj.crmeb.express.model.Express; -import com.zbkj.crmeb.express.service.ExpressService; -import com.zbkj.crmeb.pass.request.*; -import com.zbkj.crmeb.pass.service.OnePassService; -import com.zbkj.crmeb.pass.vo.OnePassLoginVo; -import com.zbkj.crmeb.pass.vo.OnePassLogisticsQueryVo; -import com.zbkj.crmeb.system.service.SystemConfigService; +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; @@ -184,7 +182,7 @@ public class OnePassServiceImpl implements OnePassService { OnePassLoginVo loginVo = onePassUtil.getLoginVo(); boolean exists = redisUtil.exists(StrUtil.format(OnePassConstants.ONE_PASS_TOKEN_KEY_PREFIX, loginVo.getSecret())); if (exists) { - redisUtil.remove(StrUtil.format(OnePassConstants.ONE_PASS_TOKEN_KEY_PREFIX, loginVo.getSecret())); + redisUtil.delete(StrUtil.format(OnePassConstants.ONE_PASS_TOKEN_KEY_PREFIX, loginVo.getSecret())); } setConfigSmsInfo("", ""); return true; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/payment/service/impl/OrderPayServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/OrderPayServiceImpl.java similarity index 67% rename from crmeb/src/main/java/com/zbkj/crmeb/payment/service/impl/OrderPayServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/OrderPayServiceImpl.java index 3d6cdbe1..2bbac9c4 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/payment/service/impl/OrderPayServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/OrderPayServiceImpl.java @@ -1,44 +1,33 @@ -package com.zbkj.crmeb.payment.service.impl; +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.common.MyRecord; -import com.constants.*; -import com.exception.CrmebException; -import com.utils.DateUtil; -import com.utils.RedisUtil; -import com.zbkj.crmeb.bargain.service.StoreBargainService; -import com.zbkj.crmeb.bargain.service.StoreBargainUserService; -import com.zbkj.crmeb.combination.model.StoreCombination; -import com.zbkj.crmeb.combination.model.StorePink; -import com.zbkj.crmeb.combination.service.StoreCombinationService; -import com.zbkj.crmeb.combination.service.StorePinkService; -import com.zbkj.crmeb.front.request.OrderPayRequest; -import com.zbkj.crmeb.front.response.OrderPayResultResponse; -import com.zbkj.crmeb.front.vo.WxPayJsResultVo; -import com.zbkj.crmeb.marketing.model.StoreCouponUser; -import com.zbkj.crmeb.marketing.service.StoreCouponService; -import com.zbkj.crmeb.marketing.service.StoreCouponUserService; -import com.zbkj.crmeb.payment.service.OrderPayService; -import com.zbkj.crmeb.payment.vo.wechat.PayParamsVo; -import com.zbkj.crmeb.payment.wechat.WeChatPayService; -import com.zbkj.crmeb.sms.service.SmsService; -import com.zbkj.crmeb.store.model.StoreOrder; -import com.zbkj.crmeb.store.model.StoreProduct; -import com.zbkj.crmeb.store.model.StoreProductAttrValue; -import com.zbkj.crmeb.store.model.StoreProductCoupon; -import com.zbkj.crmeb.store.service.*; -import com.zbkj.crmeb.store.utilService.OrderUtils; -import com.zbkj.crmeb.store.vo.StoreOrderInfoOldVo; -import com.zbkj.crmeb.system.model.SystemAdmin; -import com.zbkj.crmeb.system.service.SystemAdminService; -import com.zbkj.crmeb.system.service.SystemConfigService; -import com.zbkj.crmeb.user.model.*; -import com.zbkj.crmeb.user.service.*; -import com.zbkj.crmeb.wechat.service.TemplateMessageService; -import com.zbkj.crmeb.wechat.service.WeChatService; +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; @@ -105,18 +94,12 @@ public class OrderPayServiceImpl implements OrderPayService { @Autowired private StoreCouponUserService storeCouponUserService; - @Autowired - private WeChatService weChatService; - @Autowired private OrderUtils orderUtils; //订单类 private StoreOrder order; - //支付类参参数 - private PayParamsVo payParamsVo; - @Autowired private TransactionTemplate transactionTemplate; @@ -162,6 +145,21 @@ public class OrderPayServiceImpl implements OrderPayService { @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 订单 @@ -189,15 +187,15 @@ public class OrderPayServiceImpl implements OrderPayService { experience = storeOrder.getPayPrice().setScale(0, BigDecimal.ROUND_DOWN).intValue(); user.setExperience(user.getExperience() + experience); // 经验添加记录 - UserBill experienceBill = experienceBillInit(storeOrder, user.getExperience(), experience); - billList.add(experienceBill); + 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)) { + 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) { @@ -210,15 +208,17 @@ public class OrderPayServiceImpl implements OrderPayService { // 商品赠送积分 // 查询订单详情 // 获取商品额外赠送积分 - List orderInfoList = storeOrderInfoService.getOrderListByOrderId(storeOrder.getId()); - List productIds = orderInfoList.stream().map(StoreOrderInfoOldVo::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); + 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); + } } } @@ -230,9 +230,21 @@ public class OrderPayServiceImpl implements OrderPayService { */ List recordList = assignCommission(storeOrder); + // 分销员逻辑 + if (!user.getIsPromoter()) { + String funcStatus = systemConfigService.getValueByKey(SysConfigConstants.CONFIG_KEY_BROKERAGE_FUNC_STATUS); + if (funcStatus.equals("1")) { + String broQuota = systemConfigService.getValueByKey(SysConfigConstants.CONFIG_KEY_STORE_BROKERAGE_QUOTA); + if (!broQuota.equals("-1") && 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.addLog(storeOrder.getId(), Constants.ORDER_LOG_PAY_SUCCESS, Constants.ORDER_LOG_MESSAGE_PAY_SUCCESS); + storeOrderStatusService.createLog(storeOrder.getId(), Constants.ORDER_LOG_PAY_SUCCESS, Constants.ORDER_LOG_MESSAGE_PAY_SUCCESS); // 用户信息变更 userService.updateById(user); @@ -243,6 +255,9 @@ public class OrderPayServiceImpl implements OrderPayService { // 积分记录 userIntegralRecordService.saveBatch(integralList); + // 经验记录 + userExperienceRecordService.save(experienceRecord); + //经验升级 userLevelService.upLevel(user); @@ -254,13 +269,6 @@ public class OrderPayServiceImpl implements OrderPayService { userBrokerageRecordService.saveBatch(recordList); } - // 如果是砍价商品,修改砍价状态 - if (storeOrder.getBargainId() > 0) { -// StoreBargainUser storeBargainUser = storeBargainUserService.getByBargainIdAndUid(storeOrder.getBargainId(), user.getUid()); -// storeBargainUser.setStatus(3); -// storeBargainUserService.updateById(storeBargainUser); - } - // 如果是拼团订单进行拼团后置处理 if (storeOrder.getCombinationId() > 0) { pinkProcessing(storeOrder); @@ -270,37 +278,41 @@ public class OrderPayServiceImpl implements OrderPayService { if (execute) { try { + SystemNotification payNotification = systemNotificationService.getByMark(NotifyConstants.PAY_SUCCESS_MARK); // 发送短信 - if (StrUtil.isNotBlank(user.getPhone())) { - // 支付成功提醒开关 - String lowerOrderSwitch = systemConfigService.getValueByKey(SmsConstants.SMS_CONFIG_LOWER_ORDER_SWITCH); - if (StrUtil.isNotBlank(lowerOrderSwitch) && lowerOrderSwitch.equals("1")) { - smsService.sendPaySuccess(user.getPhone(), storeOrder.getOrderId(), storeOrder.getPayPrice()); - } + 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())); } // 发送用户支付成功管理员提醒短信 - String smsSwitch = systemConfigService.getValueByKey(SmsConstants.SMS_CONFIG_ADMIN_PAY_SUCCESS_SWITCH); - if (StrUtil.isNotBlank(smsSwitch) && smsSwitch.equals("1")) { + 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()); + smsService.sendOrderPaySuccessNotice(admin.getPhone(), storeOrder.getOrderId(), admin.getRealName(), Integer.valueOf(smsTemplate.getTempId())); }); } } - //下发模板通知 - pushMessageOrder(storeOrder, user); + 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("短信、模板通知或优惠券异常"); + logger.error("短信、模板通知、优惠券或打印小票异常"); } } return execute; @@ -310,7 +322,6 @@ public class OrderPayServiceImpl implements OrderPayService { private Boolean pinkProcessing(StoreOrder storeOrder) { // 判断拼团是否成功 StorePink storePink = storePinkService.getById(storeOrder.getPinkId()); - if (storePink.getKId() <= 0) { return true; } @@ -331,18 +342,21 @@ public class OrderPayServiceImpl implements OrderPayService { logger.error("拼团订单支付成功后更新拼团状态失败,orderNo = " + storeOrder.getOrderId()); return false; } - 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); - }); + 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; } @@ -351,7 +365,7 @@ public class OrderPayServiceImpl implements OrderPayService { * @param record 信息参数 * @param user 用户 */ - private void pushMessagePink(MyRecord record, User user) { + private void pushMessagePink(MyRecord record, User user, SystemNotification notification) { if (!record.getStr("payType").equals(Constants.PAY_TYPE_WE_CHAT)) { return ; } @@ -362,7 +376,7 @@ public class OrderPayServiceImpl implements OrderPayService { UserToken userToken; HashMap temMap = new HashMap<>(); // 公众号 - if (record.getInt("isChannel").equals(Constants.ORDER_PAY_CHANNEL_PUBLIC)) { + 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 ; @@ -372,19 +386,22 @@ public class OrderPayServiceImpl implements OrderPayService { temMap.put("keyword1", record.getStr("orderNo")); temMap.put("keyword2", record.getStr("proName")); temMap.put(Constants.WE_CHAT_TEMP_KEY_END, "感谢你的使用!"); - templateMessageService.pushTemplateMessage(Constants.WE_CHAT_TEMP_KEY_COMBINATION_SUCCESS, temMap, userToken.getToken()); - return; + 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()); } - // 小程序发送订阅消息 - 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", "恭喜您拼团成功!我们将尽快为您发货。"); - templateMessageService.pushMiniTemplateMessage(Constants.WE_CHAT_PROGRAM_TEMP_KEY_COMBINATION_SUCCESS, temMap, userToken.getToken()); } @@ -430,6 +447,7 @@ public class OrderPayServiceImpl implements OrderPayService { 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()); @@ -483,7 +501,11 @@ public class OrderPayServiceImpl implements OrderPayService { if(!rateBigDecimal.equals(BigDecimal.ZERO)){ // 商品没有分销金额, 并且有设置对应等级的分佣比例 // 舍入模式向零舍入。 - brokeragePrice = orderInfoVo.getInfo().getPrice().multiply(rateBigDecimal).setScale(2, BigDecimal.ROUND_DOWN); + 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; } @@ -543,8 +565,7 @@ public class OrderPayServiceImpl implements OrderPayService { * @param storeOrder 订单 * @return Boolean Boolean */ - @Override - public Boolean yuePay(StoreOrder storeOrder) { + private Boolean yuePay(StoreOrder storeOrder) { // 用户余额扣除 User user = userService.getById(storeOrder.getUid()); @@ -567,7 +588,7 @@ public class OrderPayServiceImpl implements OrderPayService { userService.updateIntegral(user, storeOrder.getUseIntegral(), "sub"); } // 添加支付成功redis队列 - redisUtil.lPush(Constants.ORDER_TASK_PAY_SUCCESS_AFTER, storeOrder.getOrderId()); + redisUtil.lPush(TaskConstants.ORDER_TASK_PAY_SUCCESS_AFTER, storeOrder.getOrderId()); // 处理拼团 if (storeOrder.getCombinationId() > 0) { @@ -701,7 +722,8 @@ public class OrderPayServiceImpl implements OrderPayService { // 微信支付,调用微信预下单,返回拉起微信支付需要的信息 if (storeOrder.getPayType().equals(PayConstants.PAY_TYPE_WE_CHAT)) { - Map unifiedorder = weChatPayService.unifiedorder(storeOrder, ip); + // 预下单 + Map unifiedorder = unifiedorder(storeOrder, ip); response.setStatus(true); WxPayJsResultVo vo = new WxPayJsResultVo(); vo.setAppId(unifiedorder.get("appId")); @@ -714,6 +736,12 @@ public class OrderPayServiceImpl implements OrderPayService { 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; } @@ -723,9 +751,6 @@ public class OrderPayServiceImpl implements OrderPayService { response.setStatus(yueBoolean); return response; } - if (storeOrder.getPayType().equals(PayConstants.PAY_TYPE_ALI_PAY)) { - throw new CrmebException("暂时不支持支付宝支付"); - } if (storeOrder.getPayType().equals(PayConstants.PAY_TYPE_OFFLINE)) { throw new CrmebException("暂时不支持线下支付"); } @@ -733,6 +758,115 @@ public class OrderPayServiceImpl implements OrderPayService { 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(); @@ -765,18 +899,18 @@ public class OrderPayServiceImpl implements OrderPayService { /** * 经验添加记录 */ - private UserBill experienceBillInit(StoreOrder storeOrder, Integer balance, Integer experience) { - UserBill userBill = new UserBill(); - userBill.setPm(1); - userBill.setUid(storeOrder.getUid()); - userBill.setLinkId(storeOrder.getId().toString()); - userBill.setTitle(Constants.ORDER_LOG_MESSAGE_PAY_SUCCESS); - userBill.setCategory(Constants.USER_BILL_CATEGORY_EXPERIENCE); - userBill.setType(Constants.USER_BILL_TYPE_PAY_ORDER); - userBill.setNumber(new BigDecimal(experience)); - userBill.setBalance(new BigDecimal(balance)); - userBill.setMark("用户付款成功增加" + experience + "经验"); - 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; } /** @@ -812,7 +946,7 @@ public class OrderPayServiceImpl implements OrderPayService { * 公众号模板消息 * 小程序订阅消息 */ - private void pushMessageOrder(StoreOrder storeOrder, User user) { + private void pushMessageOrder(StoreOrder storeOrder, User user, SystemNotification payNotification) { if (storeOrder.getIsChannel().equals(2)) {// H5 return; } @@ -822,30 +956,33 @@ public class OrderPayServiceImpl implements OrderPayService { return; } // 公众号 - if (storeOrder.getIsChannel().equals(Constants.ORDER_PAY_CHANNEL_PUBLIC)) { + 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.getOrderId()); - temMap.put("keyword2", storeOrder.getPayPrice().toString()); + temMap.put("keyword1", storeOrder.getPayPrice().toString()); + temMap.put("keyword2", storeOrder.getOrderId()); temMap.put(Constants.WE_CHAT_TEMP_KEY_END, "欢迎下次再来!"); - templateMessageService.pushTemplateMessage(Constants.WE_CHAT_TEMP_KEY_ORDER_PAY, temMap, userToken.getToken()); + templateMessageService.pushTemplateMessage(payNotification.getWechatId(), temMap, userToken.getToken()); return; } - if (storeOrder.getIsChannel().equals(Constants.ORDER_PAY_CHANNEL_PROGRAM)) { + 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", "您的订单已支付成功"); - templateMessageService.pushMiniTemplateMessage(Constants.WE_CHAT_PROGRAM_TEMP_KEY_ORDER_PAY, temMap, userToken.getToken()); +// 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()); } } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/service/impl/OrderServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/OrderServiceImpl.java similarity index 85% rename from crmeb/src/main/java/com/zbkj/crmeb/front/service/impl/OrderServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/OrderServiceImpl.java index dcdce976..7bbc8d81 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/service/impl/OrderServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/OrderServiceImpl.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.front.service.impl; +package com.zbkj.service.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateTime; @@ -6,53 +6,40 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.common.CommonPage; -import com.common.MyRecord; -import com.common.PageParamRequest; -import com.constants.*; -import com.exception.CrmebException; -import com.utils.CrmebUtil; -import com.utils.DateUtil; -import com.utils.RedisUtil; -import com.zbkj.crmeb.bargain.model.StoreBargain; -import com.zbkj.crmeb.bargain.model.StoreBargainUser; -import com.zbkj.crmeb.bargain.service.StoreBargainService; -import com.zbkj.crmeb.bargain.service.StoreBargainUserService; -import com.zbkj.crmeb.combination.model.StoreCombination; -import com.zbkj.crmeb.combination.service.StoreCombinationService; -import com.zbkj.crmeb.express.model.Express; -import com.zbkj.crmeb.express.model.ShippingTemplates; -import com.zbkj.crmeb.express.model.ShippingTemplatesFree; -import com.zbkj.crmeb.express.model.ShippingTemplatesRegion; -import com.zbkj.crmeb.express.service.*; -import com.zbkj.crmeb.express.vo.LogisticsResultVo; -import com.zbkj.crmeb.front.request.*; -import com.zbkj.crmeb.front.response.*; -import com.zbkj.crmeb.front.service.OrderService; -import com.zbkj.crmeb.front.vo.OrderInfoDetailVo; -import com.zbkj.crmeb.front.vo.OrderInfoVo; -import com.zbkj.crmeb.marketing.model.StoreCouponUser; -import com.zbkj.crmeb.marketing.service.StoreCouponUserService; -import com.zbkj.crmeb.seckill.model.StoreSeckill; -import com.zbkj.crmeb.seckill.model.StoreSeckillManger; -import com.zbkj.crmeb.seckill.service.StoreSeckillMangerService; -import com.zbkj.crmeb.seckill.service.StoreSeckillService; -import com.zbkj.crmeb.sms.service.SmsService; -import com.zbkj.crmeb.store.model.*; -import com.zbkj.crmeb.store.request.StoreOrderInfoSearchRequest; -import com.zbkj.crmeb.store.request.StoreProductReplyAddRequest; -import com.zbkj.crmeb.store.service.*; -import com.zbkj.crmeb.store.utilService.OrderUtils; -import com.zbkj.crmeb.store.vo.StoreOrderInfoOldVo; -import com.zbkj.crmeb.store.vo.StoreOrderInfoVo; -import com.zbkj.crmeb.system.model.SystemAdmin; -import com.zbkj.crmeb.system.model.SystemStore; -import com.zbkj.crmeb.system.response.SystemGroupDataOrderStatusPicResponse; -import com.zbkj.crmeb.system.service.*; -import com.zbkj.crmeb.user.model.User; -import com.zbkj.crmeb.user.model.UserAddress; -import com.zbkj.crmeb.user.service.UserAddressService; -import com.zbkj.crmeb.user.service.UserService; +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; @@ -176,6 +163,14 @@ public class OrderServiceImpl implements OrderService { @Autowired private ExpressService expressService; + @Autowired + private SystemUserLevelService systemUserLevelService; + + @Autowired + private SystemNotificationService systemNotificationService; + + @Autowired + private SmsTemplateService smsTemplateService; /** * 发送后台管理员下单提醒通知短信 @@ -184,18 +179,19 @@ public class OrderServiceImpl implements OrderService { @Async public void sendAdminOrderNotice(String orderNo) { // 系统是否开启用户下单管理员提醒开关 - String smsSwitch = systemConfigService.getValueByKey(SmsConstants.SMS_CONFIG_ADMIN_LOWER_ORDER_SWITCH); - if (StrUtil.isBlank(smsSwitch) || smsSwitch.equals("0")) { - return ; + 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 ; } - // 发送短信 - systemAdminList.forEach(admin -> smsService.sendCreateOrderNotice(admin.getPhone(), orderNo, admin.getRealName())); + SmsTemplate smsTemplate = smsTemplateService.getDetail(notification.getSmsId()); + Integer tempId = Integer.valueOf(smsTemplate.getTempId()); + systemAdminList.forEach(admin -> smsService.sendCreateOrderNotice(admin.getPhone(), orderNo, admin.getRealName(), tempId)); } /** @@ -207,7 +203,7 @@ public class OrderServiceImpl implements OrderService { public Boolean delete(Integer id) { StoreOrder storeOrder = storeOrderService.getById(id); Integer userId = userService.getUserIdException(); - if (ObjectUtil.isNull(storeOrder) || !userId.equals(storeOrder.getUid())){ + if (ObjectUtil.isNull(storeOrder) || !userId.equals(storeOrder.getUid())) { throw new CrmebException("没有找到相关订单信息!"); } if (storeOrder.getIsDel() || storeOrder.getIsSystemDel()) { @@ -242,7 +238,7 @@ public class OrderServiceImpl implements OrderService { */ @Override public Boolean reply(StoreProductReplyAddRequest request) { - if(StrUtil.isBlank(request.getOrderNo())){ + if (StrUtil.isBlank(request.getOrderNo())) { throw new CrmebException("订单号参数不能为空"); } return storeProductReplyService.create(request); @@ -253,23 +249,19 @@ public class OrderServiceImpl implements OrderService { * @param id Integer 订单id */ @Override - public boolean take(Integer id) { - try{ - 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); - - //后续操作放入redis - redisUtil.lPush(Constants.ORDER_TASK_REDIS_KEY_AFTER_TAKE_BY_USER, id); - return result; - }catch (Exception e){ - throw new CrmebException("收货失败" + e.getMessage()); + 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; } /** @@ -277,7 +269,7 @@ public class OrderServiceImpl implements OrderService { * @param id Integer 订单id */ @Override - public boolean cancel(Integer id) { + public Boolean cancel(Integer id) { StoreOrder storeOrder = orderUtils.getInfoById(id); //已收货,待评价 storeOrder.setIsDel(true); @@ -294,22 +286,22 @@ public class OrderServiceImpl implements OrderService { * @param request OrderRefundApplyRequest 退款参数 */ @Override - public boolean refundApply(OrderRefundApplyRequest request) { + 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){ + if (null == existStoreOrder) throw new CrmebException("支付订单不存在"); + if (existStoreOrder.getRefundStatus() == 1) { throw new CrmebException("正在申请退款中"); } - if(existStoreOrder.getRefundStatus() == 2){ + if (existStoreOrder.getRefundStatus() == 2) { throw new CrmebException("订单已退款"); } - if(existStoreOrder.getRefundStatus() == 3){ + if (existStoreOrder.getRefundStatus() == 3) { throw new CrmebException("订单退款中"); } @@ -328,17 +320,21 @@ public class OrderServiceImpl implements OrderService { if (execute) { // 发送用户退款管理员提醒短信 - String smsSwitch = systemConfigService.getValueByKey(SmsConstants.SMS_CONFIG_ADMIN_CONFIRM_TAKE_OVER_SWITCH); - if (StrUtil.isNotBlank(smsSwitch) && smsSwitch.equals("1")) { + 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())); + systemAdminList.forEach(admin -> { + smsService.sendOrderRefundApplyNotice(admin.getPhone(), existStoreOrder.getOrderId(), admin.getRealName(), tempId); + }); } } } - if(!execute) throw new CrmebException("申请退款失败"); + if (!execute) throw new CrmebException("申请退款失败"); return execute; } @@ -352,26 +348,29 @@ public class OrderServiceImpl implements OrderService { if (CollUtil.isEmpty(applyList)) { return false; } - String smsSwitch = systemConfigService.getValueByKey(SmsConstants.SMS_CONFIG_ADMIN_CONFIRM_TAKE_OVER_SWITCH); + 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)){ + if (ObjectUtil.isNull(storeOrder)) { //订单号错误 logger.error("拼团自动处理订单申请退款:没有找到相关订单信息!"); continue; } - if(storeOrder.getRefundStatus() == 1){ + if (storeOrder.getRefundStatus() == 1) { logger.error("拼团自动处理订单申请退款:正在申请退款中!"); continue; } - if(storeOrder.getRefundStatus() == 2){ + if (storeOrder.getRefundStatus() == 2) { logger.error("拼团自动处理订单申请退款:订单已退款!"); continue; } - if(storeOrder.getRefundStatus() == 3){ + if (storeOrder.getRefundStatus() == 3) { logger.error("拼团自动处理订单申请退款:订单退款中!"); continue; } @@ -385,13 +384,9 @@ public class OrderServiceImpl implements OrderService { orderList.add(storeOrder); // 发送用户退款管理员提醒短信 - if (StrUtil.isNotBlank(smsSwitch) || smsSwitch.equals("1")) { - // 查询可已发送短信的管理员 - List systemAdminList = systemAdminService.findIsSmsList(); - if (CollUtil.isNotEmpty(systemAdminList)) { - // 发送短信 - systemAdminList.forEach(admin -> smsService.sendOrderRefundApplyNotice(admin.getPhone(), storeOrder.getOrderId(), admin.getRealName())); - } + if (notification.getIsSms().equals(1) && CollUtil.isNotEmpty(systemAdminList)) { + // 发送短信 + systemAdminList.forEach(admin -> smsService.sendOrderRefundApplyNotice(admin.getPhone(), storeOrder.getOrderId(), admin.getRealName(), tempId)); } } @@ -419,14 +414,14 @@ public class OrderServiceImpl implements OrderService { // 活动类型 infoResponse.setActivityType(getOrderActivityType(storeOrder)); // 订单详情对象列表 - List infoVoList = storeOrderInfoService.getOrderListByOrderId(storeOrder.getId()); + List orderInfoList = storeOrderInfoService.getListByOrderNo(storeOrder.getOrderId()); List infoResponseList = CollUtil.newArrayList(); - infoVoList.forEach(e -> { + orderInfoList.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.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); }); @@ -453,6 +448,9 @@ public class OrderServiceImpl implements OrderService { if (storeOrder.getBargainId() > 0) { return "砍价"; } + if (storeOrder.getType().equals(1)) { + return "视频号"; + } if (storeOrder.getShippingType().equals(2)) { return "核销"; } @@ -496,10 +494,10 @@ public class OrderServiceImpl implements OrderService { * @param orderId 订单id */ @Override - public StoreOrderDetailResponse detailOrder(String orderId) { + public StoreOrderDetailInfoResponse detailOrder(String orderId) { User currentUser = userService.getInfoException(); - StoreOrderDetailResponse storeOrderDetailResponse = new StoreOrderDetailResponse(); + StoreOrderDetailInfoResponse storeOrderDetailResponse = new StoreOrderDetailInfoResponse(); // 查询订单 StoreOrder storeOrder = storeOrderService.getByOderId(orderId); if (ObjectUtil.isNull(storeOrder) || storeOrder.getIsDel() || storeOrder.getIsSystemDel()) { @@ -512,18 +510,18 @@ public class OrderServiceImpl implements OrderService { BeanUtils.copyProperties(storeOrder, storeOrderDetailResponse); MyRecord orderStatusVo = getOrderStatusVo(storeOrder); // 订单详情对象列表 - List infoVoList = storeOrderInfoService.getOrderListByOrderId(storeOrder.getId()); List infoResponseList = CollUtil.newArrayList(); - infoVoList.forEach(e -> { + List infoList = storeOrderInfoService.getListByOrderNo(storeOrder.getOrderId()); + infoList.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.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.getInfo().getIsReply()); - orderInfoResponse.setAttrId(e.getInfo().getAttrValueId()); - orderInfoResponse.setSku(e.getInfo().getSku()); + orderInfoResponse.setIsReply(e.getIsReply() ? 1 : 0); + orderInfoResponse.setAttrId(e.getAttrValueId()); + orderInfoResponse.setSku(e.getSku()); infoResponseList.add(orderInfoResponse); }); storeOrderDetailResponse.setOrderInfoList(infoResponseList); @@ -553,7 +551,6 @@ public class OrderServiceImpl implements OrderService { record.set("type", 0); record.set("title", "未支付"); record.set("msg", "订单未支付"); - // 系统预设取消订单时间段 TODO List configKeys = new ArrayList<>(); configKeys.add("order_cancel_time"); configKeys.add("order_activity_time"); @@ -561,7 +558,6 @@ public class OrderServiceImpl implements OrderService { configKeys.add("order_seckill_time"); configKeys.add("order_pink_time"); List configValues = systemConfigService.getValuesByKes(configKeys); - // 拼团秒杀砍价逻辑处理 TODO Date timeSpace; timeSpace = DateUtil.addSecond(storeOrder.getCreateTime(),Double.valueOf(configValues.get(0)).intValue() * 3600); record.set("msg", "请在" + DateUtil.dateToStr(timeSpace, Constants.DATE_FORMAT) +"前完成支付"); @@ -588,7 +584,7 @@ public class OrderServiceImpl implements OrderService { storeOrderStatus.setOid(storeOrder.getId()); storeOrderStatus.setChangeType(Constants.ORDER_LOG_DELIVERY); List sOrderStatusResults = storeOrderStatusService.getByEntity(storeOrderStatus); - if(sOrderStatusResults.size()>0){ + if (sOrderStatusResults.size()>0) { record.set("type", 2); record.set("title", "待收货"); record.set("msg", "商家已送货,请耐心等待"); @@ -598,7 +594,7 @@ public class OrderServiceImpl implements OrderService { storeOrderStatus.setOid(storeOrder.getId()); storeOrderStatus.setChangeType(Constants.ORDER_LOG_EXPRESS); List sOrderStatusResults = storeOrderStatusService.getByEntity(storeOrderStatus); - if(sOrderStatusResults.size()>0){ + if (sOrderStatusResults.size()>0) { record.set("type", 2); record.set("title", "待收货"); record.set("msg", "商家已发货,请耐心等待"); @@ -608,7 +604,7 @@ public class OrderServiceImpl implements OrderService { storeOrderStatus.setOid(storeOrder.getId()); storeOrderStatus.setChangeType(Constants.ORDER_LOG_DELIVERY_VI); List sOrderStatusResults = storeOrderStatusService.getByEntity(storeOrderStatus); - if(sOrderStatusResults.size()>0){ + if (sOrderStatusResults.size()>0) { record.set("type", 2); record.set("title", "待收货"); record.set("msg", "服务商已虚拟发货"); @@ -618,11 +614,11 @@ public class OrderServiceImpl implements OrderService { record.set("msg", "退款拒绝订单已发货"); } } - }else if(storeOrder.getStatus() == 2){ + }else if (storeOrder.getStatus() == 2) { record.set("type", 3); record.set("title", "待评价"); record.set("msg", "已收货,快去评价一下吧"); - }else if(storeOrder.getStatus() == 3){ + }else if (storeOrder.getStatus() == 3) { record.set("type", 4); record.set("title", "交易完成"); record.set("msg", "交易完成,感谢您的支持"); @@ -631,14 +627,14 @@ public class OrderServiceImpl implements OrderService { // 支付方式 String orderPayTypeStr = orderUtils.getOrderPayTypeStr(storeOrder.getPayType()); record.set("payTypeStr", orderPayTypeStr); - if(StringUtils.isNotBlank(storeOrder.getDeliveryType())){ + 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")){ + if (picList.getOrderStatus() == record.getInt("type")) { record.set("statusPic", picList.getUrl()); break; } @@ -696,7 +692,7 @@ public class OrderServiceImpl implements OrderService { * @return 退款理由集合 */ @Override - public List getRefundReason(){ + public List getRefundReason() { String reasonString = systemConfigService.getValueByKey(SysConfigConstants.CONFIG_KEY_STOR_REASON); reasonString = CrmebUtil.UnicodeToCN(reasonString); reasonString = reasonString.replace("rn", "n"); @@ -713,16 +709,20 @@ public class OrderServiceImpl implements OrderService { StoreOrder storeOrderPram = new StoreOrder(); storeOrderPram.setOrderId(orderId); StoreOrder existOrder = storeOrderService.getByEntityOne(storeOrderPram); - if(null== existOrder) throw new CrmebException("未找到该订单信息"); - if(!existOrder.getDeliveryType().equals(Constants.ORDER_LOG_EXPRESS) || StringUtils.isBlank(existOrder.getDeliveryType())) + 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()); - PageParamRequest page = new PageParamRequest(); - page.setPage(1); page.setLimit(999); - StoreOrderInfoSearchRequest storeOrderInfoPram = new StoreOrderInfoSearchRequest(); - storeOrderInfoPram.setOrderId(existOrder.getId()); List list = storeOrderInfoService.getVoListByOrderId(existOrder.getId()); List> cartInfos = CollUtil.newArrayList(); for (StoreOrderInfoVo infoVo : list) { @@ -802,7 +802,13 @@ public class OrderServiceImpl implements OrderService { // 校验预下单商品信息 OrderInfoVo orderInfoVo = validatePreOrderRequest(request, user); // 商品总计金额 - BigDecimal totalPrice = orderInfoVo.getOrderDetailList().stream().map(e -> e.getPrice().multiply(new BigDecimal(e.getPayNum()))).reduce(BigDecimal.ZERO, BigDecimal::add); + 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(); @@ -852,11 +858,21 @@ public class OrderServiceImpl implements OrderService { 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; } @@ -897,7 +913,7 @@ public class OrderServiceImpl implements OrderService { OrderInfoVo orderInfoVo = JSONObject.parseObject(orderVoString, OrderInfoVo.class); // 检测支付方式 - if(!orderUtils.checkPayType(request.getPayType())) throw new CrmebException("暂不支持该支付方式,请刷新页面或者联系管理员"); + if (!orderUtils.checkPayType(request.getPayType())) throw new CrmebException("暂不支持该支付方式,请刷新页面或者联系管理员"); if (request.getPayType().equals(PayConstants.PAY_TYPE_WE_CHAT)) { // 检测支付渠道 @@ -911,17 +927,17 @@ public class OrderServiceImpl implements OrderService { // 校验收货信息 String verifyCode = ""; String userAddressStr = ""; - if(request.getShippingType() == 1){ // 快递配送 - if(request.getAddressId() <= 0) throw new CrmebException("请选择收货地址"); + if (request.getShippingType() == 1) { // 快递配送 + if (request.getAddressId() <= 0) throw new CrmebException("请选择收货地址"); UserAddress userAddress = userAddressService.getById(request.getAddressId()); - if(ObjectUtil.isNull(userAddress) || userAddress.getIsDel()){ + 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())) { + }else if (request.getShippingType() == 2) { // 到店自提 + if (StringUtils.isBlank(request.getRealName()) || StringUtils.isBlank(request.getPhone())) { throw new CrmebException("请填写姓名和电话"); } // 自提开关是否打开 @@ -937,6 +953,21 @@ public class OrderServiceImpl implements OrderService { 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()); @@ -945,6 +976,9 @@ public class OrderServiceImpl implements OrderService { orderComputedPriceRequest.setUseIntegral(request.getUseIntegral()); ComputedOrderPriceResponse computedOrderPriceResponse = computedPrice(orderComputedPriceRequest, orderInfoVo, user); + // 生成订单号 + String orderNo = CrmebUtil.getOrderNo("order"); + // 购买赠送的积分 int gainIntegral = 0; List storeOrderInfos = new ArrayList<>(); @@ -958,6 +992,29 @@ public class OrderServiceImpl implements OrderService { 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); } @@ -978,7 +1035,7 @@ public class OrderServiceImpl implements OrderService { // 支付渠道 默认:余额支付 int isChannel = 3; if (request.getPayType().equals(PayConstants.PAY_TYPE_WE_CHAT)) { - switch (request.getPayChannel()){ + switch (request.getPayChannel()) { case PayConstants.PAY_CHANNEL_WE_CHAT_H5:// H5 isChannel = 2; break; @@ -988,11 +1045,20 @@ public class OrderServiceImpl implements OrderService { 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; } } - - // 生成订单号 - String orderNo = CrmebUtil.getOrderNo("order"); StoreOrder storeOrder = new StoreOrder(); storeOrder.setUid(user.getUid()); @@ -1001,7 +1067,7 @@ public class OrderServiceImpl implements OrderService { storeOrder.setUserPhone(request.getPhone()); storeOrder.setUserAddress(userAddressStr); // 如果是自提 - if(request.getShippingType() == 2){ + if (request.getShippingType() == 2) { storeOrder.setVerifyCode(verifyCode); storeOrder.setStoreId(request.getStoreId()); } @@ -1012,6 +1078,7 @@ public class OrderServiceImpl implements OrderService { 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()); @@ -1032,6 +1099,9 @@ public class OrderServiceImpl implements OrderService { storeOrder.setPaid(false); storeOrder.setCost(BigDecimal.ZERO); storeOrder.setType(0); + if (orderInfoVo.getIsVideo()) { + storeOrder.setType(1);// 视频号订单 + } StoreCouponUser storeCouponUser = new StoreCouponUser(); // 优惠券修改 @@ -1107,7 +1177,7 @@ public class OrderServiceImpl implements OrderService { // 删除缓存订单 if (redisUtil.exists(key)) { - redisUtil.remove(key); + redisUtil.delete(key); } // 加入自动未支付自动取消队列 @@ -1121,6 +1191,24 @@ public class OrderServiceImpl implements OrderService { 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 @@ -1296,6 +1384,10 @@ public class OrderServiceImpl implements OrderService { 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()); @@ -1308,12 +1400,18 @@ public class OrderServiceImpl implements OrderService { 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 (request.getPreOrderType().equals("again")) {// 再次购买 PreOrderDetailRequest detailRequest = request.getOrderDetails().get(0); - detailVoList = validatePreOrderAgain(detailRequest); + detailVoList = validatePreOrderAgain(detailRequest, user); } orderInfoVo.setOrderDetailList(detailVoList); return orderInfoVo; @@ -1327,6 +1425,11 @@ public class OrderServiceImpl implements OrderService { */ 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("购物车编号不能为空"); @@ -1370,6 +1473,12 @@ public class OrderServiceImpl implements OrderService { 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; @@ -1384,6 +1493,9 @@ public class OrderServiceImpl implements OrderService { 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("秒杀商品规格不存在"); @@ -1401,6 +1513,7 @@ public class OrderServiceImpl implements OrderService { detailVo.setVolume(seckillAttrValue.getVolume()); detailVo.setWeight(seckillAttrValue.getWeight()); detailVo.setTempId(storeSeckill.getTempId()); + detailVo.setProductType(Constants.PRODUCT_TYPE_SECKILL); return detailVo; } @@ -1459,12 +1572,12 @@ public class OrderServiceImpl implements OrderService { if (CollUtil.isNotEmpty(userCurrentDaySecKillOrders)) { // 判断是否有待支付订单 List unPayOrders = userCurrentDaySecKillOrders.stream().filter(e -> !e.getPaid()).collect(Collectors.toList()); - if(unPayOrders.size() > 0) { + if (unPayOrders.size() > 0) { throw new CrmebException("您有秒杀待支付订单,请支付后再购买"); } - // 判断是否达到上线 - if(userCurrentDaySecKillOrders.size() >= storeSeckill.getNum()){ + // 判断是否达到上限 + if (userCurrentDaySecKillOrders.size() >= storeSeckill.getNum()) { throw new CrmebException("您已经达到当前秒杀活动上限"); } } @@ -1505,6 +1618,7 @@ public class OrderServiceImpl implements OrderService { detailVo.setVolume(bargainAttrValue.getVolume()); detailVo.setWeight(bargainAttrValue.getWeight()); detailVo.setTempId(storeBargain.getTempId()); + detailVo.setProductType(Constants.PRODUCT_TYPE_BARGAIN); return detailVo; } @@ -1553,7 +1667,7 @@ public class OrderServiceImpl implements OrderService { if (unPayOrders.size() > 0) throw new CrmebException("您有砍价待支付订单,请支付后再购买"); // 判断是否达到上限 - if (CollUtil.isNotEmpty(userCurrentBargainOrders) && userCurrentBargainOrders.size() >= storeBargain.getNum()){ + if (CollUtil.isNotEmpty(userCurrentBargainOrders) && userCurrentBargainOrders.size() >= storeBargain.getNum()) { throw new CrmebException("您已经达到当前砍价活动上限"); } } @@ -1613,6 +1727,7 @@ public class OrderServiceImpl implements OrderService { detailVo.setVolume(combinationAttrValue.getVolume()); detailVo.setWeight(combinationAttrValue.getWeight()); detailVo.setTempId(storeCombination.getTempId()); + detailVo.setProductType(Constants.PRODUCT_TYPE_PINGTUAN); return detailVo; } @@ -1663,9 +1778,9 @@ public class OrderServiceImpl implements OrderService { if (CollUtil.isNotEmpty(userCombinationOrders)) { // 判断是否有待支付订单 List unPayOrders = userCombinationOrders.stream().filter(e -> !e.getPaid()).collect(Collectors.toList()); - if(unPayOrders.size() > 0) throw new CrmebException("您有拼团待支付订单,请支付后再购买"); + if (unPayOrders.size() > 0) throw new CrmebException("您有拼团待支付订单,请支付后再购买"); int payNum = userCombinationOrders.stream().mapToInt(StoreOrder::getTotalNum).sum(); - if (storeCombination.getNum() <= payNum){ + if (storeCombination.getNum() <= payNum) { throw new CrmebException("您已达到该商品拼团活动上限"); } if ((payNum + productNum) > storeCombination.getNum()) { @@ -1683,7 +1798,7 @@ public class OrderServiceImpl implements OrderService { * @param detailRequest 请求参数 * @return List */ - private List validatePreOrderAgain(PreOrderDetailRequest detailRequest) { + private List validatePreOrderAgain(PreOrderDetailRequest detailRequest, User user) { List detailVoList = CollUtil.newArrayList(); if (StrUtil.isBlank(detailRequest.getOrderNo())) { throw new CrmebException("再次购买订单编号不能为空"); @@ -1703,6 +1818,11 @@ public class OrderServiceImpl implements OrderService { 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(); // 查询商品信息 @@ -1740,6 +1860,11 @@ public class OrderServiceImpl implements OrderService { 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; @@ -1768,7 +1893,7 @@ public class OrderServiceImpl implements OrderService { BigDecimal storePostage = BigDecimal.ZERO; if (postageSwitchString.equals("true") && (storeFreePostageString.equals("0") || orderInfoVo.getProTotalFee().compareTo(new BigDecimal(storeFreePostageString)) >= 0)) { storePostage = BigDecimal.ZERO; - } else if(ObjectUtil.isNull(userAddress) || userAddress.getCityId() <= 0) { + } else if (ObjectUtil.isNull(userAddress) || userAddress.getCityId() <= 0) { // 用户地址不存在,默认运费为0元 storePostage = BigDecimal.ZERO; } else { @@ -1902,28 +2027,28 @@ public class OrderServiceImpl implements OrderService { if (ObjectUtil.isNull(storeCouponUser) || !storeCouponUser.getUid().equals(user.getUid())) { throw new CrmebException("优惠券领取记录不存在!"); } - if(storeCouponUser.getStatus() == 1){ + if (storeCouponUser.getStatus() == 1) { throw new CrmebException("此优惠券已使用!"); } - if(storeCouponUser.getStatus() == 2){ + if (storeCouponUser.getStatus() == 2) { throw new CrmebException("此优惠券已失效!"); } //判断是否在使用时间内 Date date = DateUtil.nowDateTime(); - if(storeCouponUser.getStartTime().compareTo(date) > 0){ + if (storeCouponUser.getStartTime().compareTo(date) > 0) { throw new CrmebException("此优惠券还未到达使用时间范围之内!"); } - if(date.compareTo(storeCouponUser.getEndTime()) > 0){ + if (date.compareTo(storeCouponUser.getEndTime()) > 0) { throw new CrmebException("此优惠券已经失效了"); } - if(storeCouponUser.getMinPrice().compareTo(orderInfoVo.getProTotalFee()) > 0){ + if (storeCouponUser.getMinPrice().compareTo(orderInfoVo.getProTotalFee()) > 0) { throw new CrmebException("总金额小于优惠券最小使用金额"); } //检测优惠券信息 - if(storeCouponUser.getUseType() > 1){ + if (storeCouponUser.getUseType() > 1) { List productIdList = orderInfoVo.getOrderDetailList().stream().map(OrderInfoDetailVo::getProductId).collect(Collectors.toList()); - if(productIdList.size() < 1){ + if (productIdList.size() < 1) { throw new CrmebException("没有找到商品"); } @@ -1933,14 +2058,14 @@ public class OrderServiceImpl implements OrderService { //取两个集合的交集,如果是false则证明没有相同的值 //oldList.retainAll(newList)返回值代表oldList是否保持原样,如果old和new完全相同,那old保持原样并返回false。 //交集:listA.retainAll(listB) ——listA内容变为listA和listB都存在的对象;listB不变 - if(storeCouponUser.getUseType() == 2){ + if (storeCouponUser.getUseType() == 2) { primaryKeyIdList.retainAll(productIdList); if (CollUtil.isEmpty(primaryKeyIdList)) { throw new CrmebException("此优惠券为商品券,请购买相关商品之后再使用!"); } } - if(storeCouponUser.getUseType() == 3){ + if (storeCouponUser.getUseType() == 3) { //拿出需要使用优惠券的商品分类集合 List categoryIdList = storeProductService.getSecondaryCategoryByProductId(StringUtils.join(productIdList, ",")); @@ -1978,15 +2103,15 @@ public class OrderServiceImpl implements OrderService { // 查询积分使用比例 String integralRatio = systemConfigService.getValueByKey(SysConfigConstants.CONFIG_KEY_INTEGRAL_RATE); BigDecimal deductionPrice = new BigDecimal(user.getIntegral()).multiply(new BigDecimal(integralRatio)); - if(request.getUseIntegral()){ + if (request.getUseIntegral()) { // 积分兑换金额小于实际支付金额 - if(deductionPrice.compareTo(payPrice) < 0){ + if (deductionPrice.compareTo(payPrice) < 0) { payPrice = payPrice.subtract(deductionPrice); priceResponse.setSurplusIntegral(0); priceResponse.setUsedIntegral(user.getIntegral()); - }else{ + } else { deductionPrice = payPrice; - if(payPrice.compareTo(BigDecimal.ZERO) > 0){ + 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); diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/OrderTaskServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/OrderTaskServiceImpl.java similarity index 82% rename from crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/OrderTaskServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/OrderTaskServiceImpl.java index a9196507..20869638 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/OrderTaskServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/OrderTaskServiceImpl.java @@ -1,24 +1,20 @@ -package com.zbkj.crmeb.store.service.impl; +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.constants.Constants; -import com.exception.CrmebException; -import com.utils.DateUtil; -import com.utils.RedisUtil; -import com.zbkj.crmeb.payment.service.OrderPayService; -import com.zbkj.crmeb.store.model.StoreOrder; -import com.zbkj.crmeb.store.model.StoreOrderStatus; -import com.zbkj.crmeb.store.model.StoreProductReply; -import com.zbkj.crmeb.store.service.*; -import com.zbkj.crmeb.store.utilService.OrderUtils; -import com.zbkj.crmeb.store.vo.StoreOrderInfoOldVo; -import com.zbkj.crmeb.user.model.User; -import com.zbkj.crmeb.user.service.UserService; -import com.zbkj.crmeb.wechat.service.impl.WechatSendMessageForMinService; -import com.zbkj.crmeb.wechat.vo.WechatSendMessageForOrderCancel; +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; @@ -53,12 +49,6 @@ public class OrderTaskServiceImpl implements OrderTaskService { @Autowired private StoreOrderService storeOrderService; - @Autowired - private WechatSendMessageForMinService wechatSendMessageForMinService; - - @Autowired - private OrderUtils orderUtils; - @Autowired private StoreOrderStatusService storeOrderStatusService; @@ -87,31 +77,23 @@ public class OrderTaskServiceImpl implements OrderTaskService { 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){ + if (size < 1) { return; } for (int i = 0; i < size; i++) { //如果10秒钟拿不到一个数据,那么退出循环 Object data = redisUtil.getRightPop(redisKey, 10L); - if(null == data){ + if (null == data) { continue; } - try{ + try { // StoreOrder storeOrder = getJavaBeanStoreOrder(data); StoreOrder storeOrder = storeOrderService.getById(Integer.valueOf(data.toString())); boolean result = storeOrderTaskService.cancelByUser(storeOrder); - if(!result){ + if (!result) { redisUtil.lPush(redisKey, data); - }else{ - WechatSendMessageForOrderCancel orderCancel = new WechatSendMessageForOrderCancel( - "暂无",DateUtil.nowDateTimeStr(),"","暂无",orderUtils.getPayTypeStrByOrder(storeOrder), - orderUtils.getStoreNameAndCarNumString(storeOrder.getId()),storeOrder.getOrderId(), - storeOrder.getStatus()+"",storeOrder.getPayPrice()+"",storeOrder.getCreateTime()+"", - "CRMEB","暂无",storeOrder.getOrderId(),"CRMEB","暂无" - ); - wechatSendMessageForMinService.sendOrderCancelMessage(orderCancel,storeOrder.getUid()); } - }catch (Exception e){ + } catch (Exception e) { redisUtil.lPush(redisKey, data); } } @@ -131,27 +113,27 @@ public class OrderTaskServiceImpl implements OrderTaskService { 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){ + if (size < 1) { return; } for (int i = 0; i < size; i++) { //如果10秒钟拿不到一个数据,那么退出循环 Object orderId = redisUtil.getRightPop(redisKey, 10L); - if(null == orderId){ + if (null == orderId) { continue; } - try{ + 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){ + if (!result) { logger.error("订单退款错误:result = " + result); redisUtil.lPush(redisKey, orderId); } - }catch (Exception e){ + } catch (Exception e) { logger.error("订单退款错误:" + e.getMessage()); redisUtil.lPush(redisKey, orderId); } @@ -168,22 +150,22 @@ public class OrderTaskServiceImpl implements OrderTaskService { 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){ + if (size < 1) { return; } for (int i = 0; i < size; i++) { //如果10秒钟拿不到一个数据,那么退出循环 Object data = redisUtil.getRightPop(redisKey, 10L); - if(null == data){ + if (null == data) { continue; } - try{ + try { StoreOrder storeOrder = getJavaBeanStoreOrder(data); boolean result = storeOrderTaskService.complete(storeOrder); - if(!result){ + if (!result) { redisUtil.lPush(redisKey, data); } - }catch (Exception e){ + } catch (Exception e) { redisUtil.lPush(redisKey, data); } } @@ -194,29 +176,29 @@ public class OrderTaskServiceImpl implements OrderTaskService { */ @Override public void orderPaySuccessAfter() { - String redisKey = Constants.ORDER_TASK_PAY_SUCCESS_AFTER; + String redisKey = TaskConstants.ORDER_TASK_PAY_SUCCESS_AFTER; Long size = redisUtil.getListSize(redisKey); logger.info("OrderTaskServiceImpl.orderPaySuccessAfter | size:" + size); - if(size < 1){ + if (size < 1) { return; } for (int i = 0; i < size; i++) { //如果10秒钟拿不到一个数据,那么退出循环 Object data = redisUtil.getRightPop(redisKey, 10L); - if(null == data){ + if (ObjectUtil.isNull(data)) { continue; } - try{ + 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){ + if (!result) { redisUtil.lPush(redisKey, data); } - }catch (Exception e){ + } catch (Exception e) { e.printStackTrace(); redisUtil.lPush(redisKey, data); } @@ -231,26 +213,26 @@ public class OrderTaskServiceImpl implements OrderTaskService { String redisKey = Constants.ORDER_AUTO_CANCEL_KEY; Long size = redisUtil.getListSize(redisKey); logger.info("OrderTaskServiceImpl.autoCancel | size:" + size); - if(size < 1){ + if (size < 1) { return; } for (int i = 0; i < size; i++) { //如果10秒钟拿不到一个数据,那么退出循环 Object data = redisUtil.getRightPop(redisKey, 10L); - if(null == data){ + if (null == data) { continue; } - try{ + 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){ + if (!result) { redisUtil.lPush(redisKey, data); } - }catch (Exception e){ + } catch (Exception e) { e.printStackTrace(); redisUtil.lPush(redisKey, data); } @@ -262,24 +244,24 @@ public class OrderTaskServiceImpl implements OrderTaskService { */ @Override public void orderReceiving() { - String redisKey = Constants.ORDER_TASK_REDIS_KEY_AFTER_TAKE_BY_USER; + 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){ + if (size < 1) { return; } for (int i = 0; i < size; i++) { //如果10秒钟拿不到一个数据,那么退出循环 Object id = redisUtil.getRightPop(redisKey, 10L); - if(null == id){ + if (null == id) { continue; } - try{ + try { Boolean result = storeOrderTaskService.orderReceiving(Integer.valueOf(id.toString())); - if(!result){ + if (!result) { redisUtil.lPush(redisKey, id); } - }catch (Exception e){ + } catch (Exception e) { redisUtil.lPush(redisKey, id); } } @@ -331,6 +313,15 @@ public class OrderTaskServiceImpl implements OrderTaskService { 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()); diff --git a/crmeb/src/main/java/com/zbkj/crmeb/upload/service/impl/OssServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/OssServiceImpl.java similarity index 61% rename from crmeb/src/main/java/com/zbkj/crmeb/upload/service/impl/OssServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/OssServiceImpl.java index 73bb2e40..1a7bf41a 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/upload/service/impl/OssServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/OssServiceImpl.java @@ -1,18 +1,14 @@ -package com.zbkj.crmeb.upload.service.impl; +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.exception.CrmebException; -import com.zbkj.crmeb.system.service.SystemAttachmentService; -import com.zbkj.crmeb.upload.service.OssService; -import com.zbkj.crmeb.upload.vo.CloudVo; +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.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; @@ -35,23 +31,9 @@ public class OssServiceImpl implements OssService { private static final Logger logger = LoggerFactory.getLogger(OssServiceImpl.class); - @Lazy - @Autowired - private SystemAttachmentService systemAttachmentService; - - /** - * 同步到阿里云oss - * @param cloudVo CloudVo - * @param webPth String web可访问目录 - * @param localFile String 服务器文件绝对地址 - * @param id Integer 文件id - * @author Mr.Zhang - * @since 2020-05-06 - */ - @Async //多线程不可传递对象模式,后面的赋值会覆盖前面的数据 @Override - public void upload(CloudVo cloudVo, String webPth, String localFile, Integer id){ - logger.info("上传文件" + id + "开始:" + localFile); + 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是否存在 @@ -59,25 +41,20 @@ public class OssServiceImpl implements OssService { ossClient.createBucket(cloudVo.getBucketName()); } - File file = new File(localFile); if(!file.exists()){ - logger.info("上传文件"+ id + localFile + "不存在:"); + logger.info("上传文件" + localFile + "不存在:"); return; } PutObjectRequest putObjectRequest = new PutObjectRequest(cloudVo.getBucketName(), webPth, file); // 上传文件。 PutObjectResult putObjectResult = ossClient.putObject(putObjectRequest); - logger.info("上传文件" + id + " -- 结束:" + putObjectResult.getETag()); + logger.info("上传文件 -- 结束:" + putObjectResult.getETag()); - //更新数据库 - systemAttachmentService.updateCloudType(id, 3); } catch (Exception e){ throw new CrmebException(e.getMessage()); } finally { ossClient.shutdown(); } } - - } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/upload/service/impl/QiNiuServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/QiNiuServiceImpl.java similarity index 69% rename from crmeb/src/main/java/com/zbkj/crmeb/upload/service/impl/QiNiuServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/QiNiuServiceImpl.java index 1d1e6284..4e2022f8 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/upload/service/impl/QiNiuServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/QiNiuServiceImpl.java @@ -1,12 +1,12 @@ -package com.zbkj.crmeb.upload.service.impl; +package com.zbkj.service.service.impl; -import com.exception.CrmebException; +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.crmeb.system.service.SystemAttachmentService; -import com.zbkj.crmeb.upload.service.QiNiuService; -import com.zbkj.crmeb.upload.vo.CloudVo; +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; @@ -61,7 +61,26 @@ public class QiNiuServiceImpl implements QiNiuService { //更新数据库 systemAttachmentService.updateCloudType(id, 2); } catch (QiniuException ex) { - //TODO + 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/src/main/java/com/zbkj/crmeb/payment/service/impl/RechargePayServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/RechargePayServiceImpl.java similarity index 85% rename from crmeb/src/main/java/com/zbkj/crmeb/payment/service/impl/RechargePayServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/RechargePayServiceImpl.java index d488b78b..8aa0d47d 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/payment/service/impl/RechargePayServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/RechargePayServiceImpl.java @@ -1,15 +1,15 @@ -package com.zbkj.crmeb.payment.service.impl; +package com.zbkj.service.service.impl; import cn.hutool.core.util.StrUtil; -import com.constants.Constants; -import com.utils.DateUtil; -import com.zbkj.crmeb.finance.model.UserRecharge; -import com.zbkj.crmeb.finance.service.UserRechargeService; -import com.zbkj.crmeb.payment.service.RechargePayService; -import com.zbkj.crmeb.user.model.User; -import com.zbkj.crmeb.user.model.UserBill; -import com.zbkj.crmeb.user.service.UserBillService; -import com.zbkj.crmeb.user.service.UserService; +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; diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/RetailShopServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/RetailShopServiceImpl.java similarity index 54% rename from crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/RetailShopServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/RetailShopServiceImpl.java index cfed2d78..23a8530c 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/RetailShopServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/RetailShopServiceImpl.java @@ -1,35 +1,26 @@ -package com.zbkj.crmeb.store.service.impl; +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.common.CommonPage; -import com.common.PageParamRequest; -import com.exception.CrmebException; +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.crmeb.finance.model.UserExtract; -import com.zbkj.crmeb.finance.response.UserExtractResponse; -import com.zbkj.crmeb.finance.service.UserExtractService; -import com.zbkj.crmeb.store.model.StoreOrder; -import com.zbkj.crmeb.store.request.RetailShopRequest; -import com.zbkj.crmeb.store.response.RetailShopStatisticsResponse; -import com.zbkj.crmeb.store.service.RetailShopService; -import com.zbkj.crmeb.store.service.StoreOrderService; -import com.zbkj.crmeb.system.service.SystemConfigService; -import com.zbkj.crmeb.user.dao.UserDao; -import com.zbkj.crmeb.user.model.User; -import com.zbkj.crmeb.user.model.UserBrokerageRecord; -import com.zbkj.crmeb.user.response.SpreadUserResponse; -import com.zbkj.crmeb.user.service.UserBrokerageRecordService; -import com.zbkj.crmeb.user.service.UserService; +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.ArrayList; import java.util.List; import java.util.Optional; import java.util.stream.Collectors; @@ -69,19 +60,15 @@ public class RetailShopServiceImpl extends ServiceImpl implements * @param keywords 搜索参数 * @param dateLimit 时间参数 * @param pageRequest 分页参数 - * @return */ @Override public CommonPage getSpreadPeopleList(String keywords, String dateLimit, PageParamRequest pageRequest) { - // 获取分销模式 storeBrokerageStatus 1-指定分销,2-人人分销 - String storeBrokerageStatus = systemConfigService.getValueByKeyException("store_brokerage_status"); Page pageUserPage = PageHelper.startPage(pageRequest.getPage(), pageRequest.getLimit()); // id,头像,昵称,姓名,电话,推广用户数,推广订单数,推广订单额,佣金总金额,已提现金额,提现次数,未提现金额,上级推广人 - PageInfo userPageInfo = userService.getAdminSpreadPeopleList(storeBrokerageStatus, keywords, dateLimit, pageRequest); + PageInfo userPageInfo = userService.getAdminSpreadPeopleList(keywords, dateLimit, pageRequest); if (CollUtil.isEmpty(userPageInfo.getList())) { return CommonPage.restPage(new PageInfo<>()); -// return CommonPage.restPage(userPageInfo); } List userList = userPageInfo.getList(); List responseList = CollUtil.newArrayList(); @@ -92,7 +79,7 @@ public class RetailShopServiceImpl extends ServiceImpl implements userResponse.setSpreadNickname("无"); if (ObjectUtil.isNotNull(user.getSpreadUid()) && user.getSpreadUid() > 0) { User spreadUser = userService.getById(user.getSpreadUid()); - userResponse.setSpreadNickname(Optional.ofNullable(spreadUser.getNickname()).orElse("")); + userResponse.setSpreadNickname(Optional.ofNullable(spreadUser.getNickname()).orElse("--")); } List recordList = userBrokerageRecordService.getSpreadListByUid(user.getUid()); @@ -107,6 +94,8 @@ public class RetailShopServiceImpl extends ServiceImpl implements userResponse.setExtractCountPrice(BigDecimal.ZERO); // 提现次数 userResponse.setExtractCountNum(0); + // 冻结中佣金 + userResponse.setFreezeBrokeragePrice(BigDecimal.ZERO); } else { // 推广订单数 userResponse.setSpreadOrderNum(recordList.size()); @@ -122,6 +111,8 @@ public class RetailShopServiceImpl extends ServiceImpl implements userResponse.setExtractCountPrice(extractResponse.getExtractCountPrice()); // 提现次数 userResponse.setExtractCountNum(extractResponse.getExtractCountNum()); + // 冻结中佣金 + userResponse.setFreezeBrokeragePrice(userBrokerageRecordService.getFreezePrice(user.getUid())); } responseList.add(userResponse); }); @@ -137,16 +128,18 @@ public class RetailShopServiceImpl extends ServiceImpl implements */ @Override public RetailShopRequest getManageInfo() { - List keys = initKeys(); +// List keys = initKeys(); RetailShopRequest response = new RetailShopRequest(); - response.setBrokerageFuncStatus(systemConfigService.getValueByKey(keys.get(0))); - response.setStoreBrokerageStatus(systemConfigService.getValueByKey(keys.get(1))); - response.setStoreBrokerageRatio(Integer.parseInt(systemConfigService.getValueByKey(keys.get(2)))); - response.setStoreBrokerageTwo(Integer.parseInt(systemConfigService.getValueByKey(keys.get(3)))); - response.setUserExtractMinPrice(new BigDecimal(systemConfigService.getValueByKey(keys.get(4)))); - response.setUserExtractBank(systemConfigService.getValueByKey(keys.get(5)).replace("\\n","\n")); - response.setExtractTime(Integer.parseInt(systemConfigService.getValueByKey(keys.get(6)))); - response.setBrokerageBindind(systemConfigService.getValueByKey(keys.get(7))); + 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; } @@ -161,71 +154,19 @@ public class RetailShopServiceImpl extends ServiceImpl implements int ration = retailShopRequest.getStoreBrokerageTwo() + retailShopRequest.getStoreBrokerageRatio(); if (ration > 100 || ration < 0) throw new CrmebException("返佣比例加起来不能超过100%"); - List keys = initKeys(); - systemConfigService.updateOrSaveValueByName(keys.get(0), retailShopRequest.getBrokerageFuncStatus()); - systemConfigService.updateOrSaveValueByName(keys.get(1), retailShopRequest.getStoreBrokerageStatus()); - systemConfigService.updateOrSaveValueByName(keys.get(2), retailShopRequest.getStoreBrokerageRatio().toString()); - systemConfigService.updateOrSaveValueByName(keys.get(3), retailShopRequest.getStoreBrokerageTwo().toString()); - systemConfigService.updateOrSaveValueByName(keys.get(4), retailShopRequest.getUserExtractMinPrice().toString()); - systemConfigService.updateOrSaveValueByName(keys.get(5), retailShopRequest.getUserExtractBank()); - systemConfigService.updateOrSaveValueByName(keys.get(6), retailShopRequest.getExtractTime().toString()); +// 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(keys.get(7), retailShopRequest.getBrokerageBindind()); + 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; } - /** - * 获取分销统计数据 - * @param keywords 模糊搜索参数 - * @param dateLimit 时间参数 - * @return RetailShopStatisticsResponse - */ - @Override - public RetailShopStatisticsResponse getAdminStatistics(String keywords, String dateLimit) { - - // 获取分销模式 storeBrokerageStatus 1-指定分销,2-人人分销 - String storeBrokerageStatus = systemConfigService.getValueByKeyException("store_brokerage_status"); - - // 获取分销人数 - List userDisList = userService.findDistributionList(keywords, dateLimit, storeBrokerageStatus); - if (CollUtil.isEmpty(userDisList)) { - return new RetailShopStatisticsResponse(0, 0, 0, BigDecimal.ZERO, 0, BigDecimal.ZERO); - } - // 分销人员人数 - Integer distributionNum = userDisList.size(); - - // 发展会员人数 - List ids = userDisList.stream().map(User::getUid).collect(Collectors.toList()); - Integer developNum = userService.getDevelopDistributionPeopleNum(ids, dateLimit); - - List storeOrders = storeOrderService.getOrderByUserIdsForRetailShop(ids); - // 订单总数 - Integer orderNum = storeOrders.size(); - // 订单金额 - BigDecimal orderPriceCount = storeOrders.stream().map(StoreOrder::getPayPrice).reduce(BigDecimal.ZERO, BigDecimal::add); - // 提现次数 - List extractList = userExtractService.getListByUserIds(ids); - extractList = extractList.stream().filter(e -> e.getStatus().equals(1)).collect(Collectors.toList()); - Integer withdrawCount = CollUtil.isEmpty(extractList) ? 0 : extractList.size(); - // 未提现金额 - BigDecimal noWithdrawPrice = userDisList.stream().map(User::getBrokeragePrice).reduce(BigDecimal.ZERO, BigDecimal::add); - - return new RetailShopStatisticsResponse(distributionNum, developNum, orderNum, orderPriceCount, withdrawCount, noWithdrawPrice); - } - - ///////////////////////////////////////////////////// 自定义 - - public List initKeys(){ - List keys = new ArrayList<>(); - keys.add("brokerage_func_status"); - keys.add("store_brokerage_status"); - keys.add("store_brokerage_ratio"); - keys.add("store_brokerage_two"); - keys.add("user_extract_min_price"); - keys.add("user_extract_bank"); - keys.add("extract_time"); -// keys.add("store_brokerage_price"); - keys.add("brokerage_bindind"); - return keys; - } } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/express/service/impl/ShippingTemplatesFreeServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/ShippingTemplatesFreeServiceImpl.java similarity index 84% rename from crmeb/src/main/java/com/zbkj/crmeb/express/service/impl/ShippingTemplatesFreeServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/ShippingTemplatesFreeServiceImpl.java index 039ae874..b19a164a 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/express/service/impl/ShippingTemplatesFreeServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/ShippingTemplatesFreeServiceImpl.java @@ -1,15 +1,13 @@ -package com.zbkj.crmeb.express.service.impl; +package com.zbkj.service.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.common.PageParamRequest; -import com.github.pagehelper.PageHelper; -import com.utils.CrmebUtil; -import com.zbkj.crmeb.express.dao.ShippingTemplatesFreeDao; -import com.zbkj.crmeb.express.model.ShippingTemplatesFree; -import com.zbkj.crmeb.express.request.ShippingTemplatesFreeRequest; -import com.zbkj.crmeb.express.service.ShippingTemplatesFreeService; -import com.zbkj.crmeb.system.service.SystemCityService; +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; @@ -42,20 +40,6 @@ public class ShippingTemplatesFreeServiceImpl extends ServiceImpl cityIdList; - - /** - * 列表 - * @param pageParamRequest 分页类参数 - * @author Mr.Zhang - * @since 2020-04-17 - * @return List - */ - @Override - public List getList(PageParamRequest pageParamRequest) { - PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); - return dao.selectList(null); - } - /** * 保存配送区域 * @param shippingTemplatesFreeRequestList List 运费集合 @@ -131,15 +115,13 @@ public class ShippingTemplatesFreeServiceImpl extends ServiceImpl lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.eq(ShippingTemplatesFree::getTempId, tempId); lambdaQueryWrapper.eq(ShippingTemplatesFree::getStatus, false); - dao.delete(lambdaQueryWrapper); + return dao.delete(lambdaQueryWrapper) > 0; } /** @@ -162,14 +144,11 @@ public class ShippingTemplatesFreeServiceImpl extends ServiceImpl */ @Override public List getListGroup(Integer tempId) { return dao.getListGroup(tempId); } - } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/express/service/impl/ShippingTemplatesRegionServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/ShippingTemplatesRegionServiceImpl.java similarity index 86% rename from crmeb/src/main/java/com/zbkj/crmeb/express/service/impl/ShippingTemplatesRegionServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/ShippingTemplatesRegionServiceImpl.java index 9b91210f..431b2529 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/express/service/impl/ShippingTemplatesRegionServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/ShippingTemplatesRegionServiceImpl.java @@ -1,15 +1,13 @@ -package com.zbkj.crmeb.express.service.impl; +package com.zbkj.service.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.common.PageParamRequest; -import com.github.pagehelper.PageHelper; -import com.utils.CrmebUtil; -import com.zbkj.crmeb.express.dao.ShippingTemplatesRegionDao; -import com.zbkj.crmeb.express.model.ShippingTemplatesRegion; -import com.zbkj.crmeb.express.request.ShippingTemplatesRegionRequest; -import com.zbkj.crmeb.express.service.ShippingTemplatesRegionService; -import com.zbkj.crmeb.system.service.SystemCityService; +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; @@ -44,19 +42,6 @@ public class ShippingTemplatesRegionServiceImpl extends ServiceImpl cityIdList; - /** - * 列表 - * @param pageParamRequest 分页类参数 - * @author Mr.Zhang - * @since 2020-04-17 - * @return List - */ - @Override - public List getList(PageParamRequest pageParamRequest) { - PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); - return dao.selectList(null); - } - @Override public List listByIds(Collection idList) { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); @@ -142,15 +127,14 @@ public class ShippingTemplatesRegionServiceImpl extends ServiceImpl lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.eq(ShippingTemplatesRegion::getTempId, tempId); lambdaQueryWrapper.eq(ShippingTemplatesRegion::getStatus, false); - dao.delete(lambdaQueryWrapper); + return dao.delete(lambdaQueryWrapper) > 0; } /** @@ -173,14 +157,11 @@ public class ShippingTemplatesRegionServiceImpl extends ServiceImpl */ @Override public List getListGroup(Integer tempId) { return dao.getListGroup(tempId); } - } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/express/service/impl/ShippingTemplatesServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/ShippingTemplatesServiceImpl.java similarity index 80% rename from crmeb/src/main/java/com/zbkj/crmeb/express/service/impl/ShippingTemplatesServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/ShippingTemplatesServiceImpl.java index df26c0e5..22e03e51 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/express/service/impl/ShippingTemplatesServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/ShippingTemplatesServiceImpl.java @@ -1,24 +1,25 @@ -package com.zbkj.crmeb.express.service.impl; +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.common.PageParamRequest; -import com.exception.CrmebException; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.exception.CrmebException; import com.github.pagehelper.PageHelper; -import com.zbkj.crmeb.express.dao.ShippingTemplatesDao; -import com.zbkj.crmeb.express.model.ShippingTemplates; -import com.zbkj.crmeb.express.request.ShippingTemplatesFreeRequest; -import com.zbkj.crmeb.express.request.ShippingTemplatesRegionRequest; -import com.zbkj.crmeb.express.request.ShippingTemplatesRequest; -import com.zbkj.crmeb.express.request.ShippingTemplatesSearchRequest; -import com.zbkj.crmeb.express.service.ShippingTemplatesFreeService; -import com.zbkj.crmeb.express.service.ShippingTemplatesRegionService; -import com.zbkj.crmeb.express.service.ShippingTemplatesService; +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; @@ -47,6 +48,9 @@ public class ShippingTemplatesServiceImpl extends ServiceImpl { + 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/src/main/java/com/zbkj/crmeb/sms/service/impl/SmsRecordServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SmsRecordServiceImpl.java similarity index 53% rename from crmeb/src/main/java/com/zbkj/crmeb/sms/service/impl/SmsRecordServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SmsRecordServiceImpl.java index 886908f3..af6f8bd5 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/sms/service/impl/SmsRecordServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SmsRecordServiceImpl.java @@ -1,17 +1,12 @@ -package com.zbkj.crmeb.sms.service.impl; +package com.zbkj.service.service.impl; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.common.PageParamRequest; -import com.github.pagehelper.PageHelper; -import com.zbkj.crmeb.sms.dao.SmsRecordDao; -import com.zbkj.crmeb.sms.model.SmsRecord; -import com.zbkj.crmeb.sms.request.SmsRecordRequest; -import com.zbkj.crmeb.sms.service.SmsRecordService; +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; -import java.util.List; /** * SmsRecordServiceImpl 接口实现 @@ -31,23 +26,6 @@ public class SmsRecordServiceImpl extends ServiceImpl i @Resource private SmsRecordDao dao; - /** - * 短信发送记录 - * - * @param request 请求参数 - * @param pageParamRequest 分页类参数 - */ - @Override - public List getList(SmsRecordRequest request, PageParamRequest pageParamRequest) { - PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - if (null != request.getResultCode()) { - queryWrapper.eq(SmsRecord::getResultcode, request.getResultCode()); - } - queryWrapper.orderByDesc(SmsRecord::getId); - return dao.selectList(queryWrapper); - } - /** * 短信发送记录保存 * diff --git a/crmeb/src/main/java/com/zbkj/crmeb/sms/service/impl/SmsServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SmsServiceImpl.java similarity index 78% rename from crmeb/src/main/java/com/zbkj/crmeb/sms/service/impl/SmsServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SmsServiceImpl.java index fcf7cb91..47de71de 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/sms/service/impl/SmsServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SmsServiceImpl.java @@ -1,34 +1,30 @@ -package com.zbkj.crmeb.sms.service.impl; +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.common.MyRecord; -import com.common.PageParamRequest; -import com.constants.Constants; -import com.constants.OnePassConstants; -import com.constants.SmsConstants; -import com.exception.CrmebException; -import com.utils.*; -import com.zbkj.crmeb.pass.service.OnePassService; -import com.zbkj.crmeb.pass.vo.OnePassLoginVo; -import com.zbkj.crmeb.sms.model.SmsRecord; -import com.zbkj.crmeb.sms.request.SendSmsVo; -import com.zbkj.crmeb.sms.request.SmsApplyTempRequest; -import com.zbkj.crmeb.sms.request.SmsModifySignRequest; -import com.zbkj.crmeb.sms.service.SmsRecordService; -import com.zbkj.crmeb.sms.service.SmsService; -import com.zbkj.crmeb.system.service.SystemConfigService; -import com.zbkj.crmeb.user.service.UserService; -import org.apache.commons.lang3.StringUtils; +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.scheduling.annotation.Async; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; @@ -78,20 +74,20 @@ public class SmsServiceImpl implements SmsService { private static final Logger logger = LoggerFactory.getLogger(SmsServiceImpl.class); /** - * 添加到短信队列 - * 验证码特殊处理其他的参数自行根据要求处理 - * 参数处理逻辑 {code:value,code1:value1} - * - * @param phone String 手机号码 - * @return boolean + * 发送短信 + * @param phone 手机号 + * @param tag 短信标识 + * @param msgTempId 短信模板id + * @param pram 参数 + * @return Boolean */ - private Boolean pushCodeToList(String phone, Integer tag, HashMap pram) { + 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 (StringUtils.isBlank(codeExpireStr) || Integer.parseInt(codeExpireStr) == 0) { + if (StrUtil.isBlank(codeExpireStr) || Integer.parseInt(codeExpireStr) == 0) { codeExpireStr = Constants.NUM_FIVE + "";// 默认5分钟过期 } Integer code = CrmebUtil.randomCount(111111, 999999); @@ -105,47 +101,40 @@ public class SmsServiceImpl implements SmsService { 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, SmsConstants.SMS_CONFIG_LOWER_ORDER_SWITCH, - SmsConstants.SMS_CONFIG_LOWER_ORDER_SWITCH_TEMP_ID, pram); + push(phone, msgTempId, pram); break; case SmsConstants.SMS_CONFIG_TYPE_DELIVER_GOODS_SWITCH: // 发货短信提醒 nickname store_name - push(phone, SmsConstants.SMS_CONFIG_DELIVER_GOODS_SWITCH, - SmsConstants.SMS_CONFIG_DELIVER_GOODS_SWITCH_TEMP_ID, pram); + 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, SmsConstants.SMS_CONFIG_ADMIN_LOWER_ORDER_SWITCH, - SmsConstants.SMS_CONFIG_ADMIN_LOWER_ORDER_SWITCH_TEMP_ID, pram); + push(phone, msgTempId, pram); break; case SmsConstants.SMS_CONFIG_TYPE_ADMIN_PAY_SUCCESS_SWITCH: // 支付成功管理员短信提醒 admin_name order_id - push(phone, SmsConstants.SMS_CONFIG_ADMIN_PAY_SUCCESS_SWITCH, - SmsConstants.SMS_CONFIG_ADMIN_PAY_SUCCESS_SWITCH_TEMP_ID, pram); + push(phone, msgTempId, pram); break; case SmsConstants.SMS_CONFIG_TYPE_ADMIN_REFUND_SWITCH: // 用户确认收货管理员短信提醒 admin_name order_id - push(phone, SmsConstants.SMS_CONFIG_ADMIN_REFUND_SWITCH, - SmsConstants.SMS_CONFIG_ADMIN_REFUND_SWITCH_TEMP_ID, pram); + push(phone, msgTempId, pram); break; case SmsConstants.SMS_CONFIG_TYPE_ADMIN_CONFIRM_TAKE_OVER_SWITCH: // 用户发起退款管理员短信提醒 admin_name order_id - push(phone, SmsConstants.SMS_CONFIG_ADMIN_CONFIRM_TAKE_OVER_SWITCH, - SmsConstants.SMS_CONFIG_ADMIN_CONFIRM_TAKE_OVER_SWITCH_TEMP_ID, pram); + 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; - case SmsConstants.SMS_CONFIG_TYPE_ORDER_PAY_FALSE: // 订单未支付 order_id - push(phone, SmsConstants.SMS_CONFIG_ORDER_PAY_FALSE, - SmsConstants.SMS_CONFIG_ORDER_PAY_FALSE_TEMP_ID, pram); - break; } return true; } - @Override - public Boolean sendCode(SendSmsVo sendSmsVo) { + /** + * 发送短信 + * @param sendSmsVo 短信参数 + */ + private Boolean sendCode(SendSmsVo sendSmsVo) { String result; try { String token = onePassUtil.getToken(); @@ -169,32 +158,24 @@ public class SmsServiceImpl implements SmsService { } /** - * 短信队列消费者 + * 组装发送对象 + * + * @param phone 手机号 + * @param msgTempId 模板id + * @param mapPram 参数map */ - @Async - @Transactional - public void consume() { - Long size = redisUtil.getListSize(SmsConstants.SMS_SEND_KEY); - logger.info("SmsServiceImpl.consume | size:" + size); - if (size > 0) { - for (int i = 0; i < size; i++) { - //如果10秒钟拿不到一个数据,那么退出循环 - Object data = redisUtil.getRightPop(SmsConstants.SMS_SEND_KEY, 10L); - if (null == data) { - continue; - } - try { - JSONObject jsonObject = JSONObject.parseObject(data.toString()); - SendSmsVo smsVo = JSONObject.toJavaObject(jsonObject, SendSmsVo.class); - boolean result = sendCode(smsVo); - logger.error("发送短信失败,data = " + data); - } catch (Exception e) { - e.printStackTrace(); - logger.error(e.getMessage()); - logger.error("发送短信失败,data = " + data); - } - } + 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); } /** @@ -205,21 +186,18 @@ public class SmsServiceImpl implements SmsService { * @param msgTempId 模板id * @param mapPram 参数map */ - @Override - public void push(String phone, String tempKey, Integer msgTempId, HashMap mapPram) { - if (StringUtils.isBlank(phone) || StringUtils.isBlank(tempKey) || msgTempId <= 0) { - return; + 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(); - - HashMap mParam = new HashMap<>(); - mParam.put("uid", loginVo.getAccount()); - mParam.put("token", loginVo.getSecret()); - mParam.put("mobile", phone); - mParam.put("template", msgTempId); - mParam.put("param", JSONObject.toJSONString(mapPram)); - - redisUtil.lPush(SmsConstants.SMS_SEND_KEY, JSONObject.toJSONString(mParam)); + 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); } /** @@ -352,6 +330,7 @@ public class SmsServiceImpl implements SmsService { */ @Override public Boolean sendCommonCode(String phone) { + ValidateFormUtil.isPhone(phone,"手机号码错误"); Boolean checkAccount = onePassService.checkAccount(); if (!checkAccount) { throw new CrmebException("发送短信请先登录一号通账号"); @@ -367,7 +346,6 @@ public class SmsServiceImpl implements SmsService { } return sendSms(phone, SmsConstants.SMS_CONFIG_TYPE_VERIFICATION_CODE, null); -// return pushCodeToList(phone, SmsConstants.SMS_CONFIG_TYPE_VERIFICATION_CODE, null); } /** @@ -376,14 +354,15 @@ public class SmsServiceImpl implements SmsService { * @param phone 手机号 * @param orderNo 订单编号 * @param payPrice 支付金额 + * @param msgTempId 短信模板id * @return Boolean */ @Override - public Boolean sendPaySuccess(String phone, String orderNo, BigDecimal payPrice) { + 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 pushCodeToList(phone, SmsConstants.SMS_CONFIG_TYPE_LOWER_ORDER_SWITCH, map); + return sendMessages(phone, SmsConstants.SMS_CONFIG_TYPE_LOWER_ORDER_SWITCH, msgTempId, map); } /** @@ -392,14 +371,15 @@ public class SmsServiceImpl implements SmsService { * @param phone 手机号 * @param orderNo 订单编号 * @param realName 管理员名称 + * @param msgTempId 短信模板id * @return Boolean */ @Override - public Boolean sendCreateOrderNotice(String phone, String orderNo, String realName) { + 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 pushCodeToList(phone, SmsConstants.SMS_CONFIG_TYPE_ADMIN_LOWER_ORDER_SWITCH, map); + return sendMessages(phone, SmsConstants.SMS_CONFIG_TYPE_ADMIN_LOWER_ORDER_SWITCH, msgTempId, map); } /** @@ -408,14 +388,15 @@ public class SmsServiceImpl implements SmsService { * @param phone 手机号 * @param orderNo 订单编号 * @param realName 管理员名称 + * @param msgTempId 短信模板id * @return Boolean */ @Override - public Boolean sendOrderPaySuccessNotice(String phone, String orderNo, String realName) { + 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 pushCodeToList(phone, SmsConstants.SMS_CONFIG_TYPE_ADMIN_PAY_SUCCESS_SWITCH, map); + return sendMessages(phone, SmsConstants.SMS_CONFIG_TYPE_ADMIN_PAY_SUCCESS_SWITCH, msgTempId, map); } /** @@ -424,30 +405,30 @@ public class SmsServiceImpl implements SmsService { * @param phone 手机号 * @param orderNo 订单编号 * @param realName 管理员名称 + * @param msgTempId 短信模板id * @return Boolean */ @Override - public Boolean sendOrderRefundApplyNotice(String phone, String orderNo, String realName) { + 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 pushCodeToList(phone, SmsConstants.SMS_CONFIG_TYPE_ADMIN_CONFIRM_TAKE_OVER_SWITCH, map); + return sendMessages(phone, SmsConstants.SMS_CONFIG_TYPE_ADMIN_CONFIRM_TAKE_OVER_SWITCH, msgTempId, map); } /** * 发送用户确认收货管理员提醒短信 - * - * @param phone 手机号 - * @param orderNo 订单编号 + * @param phone 手机号 + * @param orderNo 订单编号 * @param realName 管理员名称 - * @return Boolean + * @param msgTempId 短信模板id */ @Override - public Boolean sendOrderReceiptNotice(String phone, String orderNo, String realName) { + 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 pushCodeToList(phone, SmsConstants.SMS_CONFIG_TYPE_ADMIN_REFUND_SWITCH, map); + return sendMessages(phone, SmsConstants.SMS_CONFIG_TYPE_ADMIN_REFUND_SWITCH, msgTempId, map); } /** @@ -456,14 +437,15 @@ public class SmsServiceImpl implements SmsService { * @param phone 手机号 * @param orderNo 订单编号 * @param price 修改后的支付金额 + * @param msgTempId 短信模板id * @return Boolean */ @Override - public Boolean sendOrderEditPriceNotice(String phone, String orderNo, BigDecimal price) { + 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 pushCodeToList(phone, SmsConstants.SMS_CONFIG_TYPE_PRICE_REVISION_SWITCH, map); + return sendMessages(phone, SmsConstants.SMS_CONFIG_TYPE_PRICE_REVISION_SWITCH, msgTempId, map); } /** @@ -473,14 +455,15 @@ public class SmsServiceImpl implements SmsService { * @param nickName 用户昵称 * @param storeName 商品名称 * @param orderNo 订单编号 + * @param msgTempId 短信模板id */ @Override - public Boolean sendOrderDeliverNotice(String phone, String nickName, String storeName, String orderNo) { + 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 pushCodeToList(phone, SmsConstants.SMS_CONFIG_TYPE_DELIVER_GOODS_SWITCH, map); + return sendMessages(phone, SmsConstants.SMS_CONFIG_TYPE_DELIVER_GOODS_SWITCH, msgTempId, map); } /** @@ -500,7 +483,7 @@ public class SmsServiceImpl implements SmsService { * @since 2020-04-16 */ private JSONObject checkResult(String result) { - if (StringUtils.isBlank(result)) { + if (StrUtil.isBlank(result)) { throw new CrmebException("短信平台接口异常,没任何数据返回!"); } @@ -530,7 +513,7 @@ public class SmsServiceImpl implements SmsService { if (tag.equals(SmsConstants.SMS_CONFIG_TYPE_VERIFICATION_CODE)) {// 验证码 特殊处理 code //获取短信验证码过期时间 String codeExpireStr = systemConfigService.getValueByKey(Constants.CONFIG_KEY_SMS_CODE_EXPIRE); - if (StringUtils.isBlank(codeExpireStr) || Integer.parseInt(codeExpireStr) == 0) { + if (StrUtil.isBlank(codeExpireStr) || Integer.parseInt(codeExpireStr) == 0) { codeExpireStr = Constants.NUM_FIVE + "";// 默认5分钟过期 } Integer code = CrmebUtil.randomCount(111111, 999999); 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 00000000..b5a6ff37 --- /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~2020 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/src/main/java/com/zbkj/crmeb/bargain/service/impl/StoreBargainServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreBargainServiceImpl.java similarity index 70% rename from crmeb/src/main/java/com/zbkj/crmeb/bargain/service/impl/StoreBargainServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreBargainServiceImpl.java index 8d13aa33..8f7bfc20 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/bargain/service/impl/StoreBargainServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreBargainServiceImpl.java @@ -1,60 +1,46 @@ -package com.zbkj.crmeb.bargain.service.impl; +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.parser.Feature; 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.common.CommonPage; -import com.common.MyRecord; -import com.common.PageParamRequest; -import com.constants.BargainConstants; -import com.constants.Constants; -import com.constants.ProductConstants; -import com.exception.CrmebException; +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.utils.DateUtil; -import com.utils.RedisUtil; -import com.zbkj.crmeb.bargain.dao.StoreBargainDao; -import com.zbkj.crmeb.bargain.model.StoreBargain; -import com.zbkj.crmeb.bargain.model.StoreBargainUser; -import com.zbkj.crmeb.bargain.request.StoreBargainRequest; -import com.zbkj.crmeb.bargain.request.StoreBargainSearchRequest; -import com.zbkj.crmeb.bargain.response.StoreBargainResponse; -import com.zbkj.crmeb.bargain.service.StoreBargainService; -import com.zbkj.crmeb.bargain.service.StoreBargainUserHelpService; -import com.zbkj.crmeb.bargain.service.StoreBargainUserService; -import com.zbkj.crmeb.front.request.BargainFrontRequest; -import com.zbkj.crmeb.front.response.BargainDetailH5Response; -import com.zbkj.crmeb.front.response.BargainHeaderResponse; -import com.zbkj.crmeb.front.response.BargainIndexResponse; -import com.zbkj.crmeb.front.response.StoreBargainDetailResponse; -import com.zbkj.crmeb.store.model.*; -import com.zbkj.crmeb.store.request.StoreProductAttrValueRequest; -import com.zbkj.crmeb.store.request.StoreProductStockRequest; -import com.zbkj.crmeb.store.response.StoreProductAttrValueResponse; -import com.zbkj.crmeb.store.response.StoreProductResponse; -import com.zbkj.crmeb.store.service.*; -import com.zbkj.crmeb.system.service.SystemAttachmentService; -import com.zbkj.crmeb.user.model.User; -import com.zbkj.crmeb.user.service.UserService; +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.ArrayList; -import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.stream.Collectors; @@ -101,15 +87,18 @@ public class StoreBargainServiceImpl extends ServiceImpl 0; + + + 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; } /** @@ -197,13 +203,12 @@ public class StoreBargainServiceImpl extends ServiceImpl 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.setProductId(bargain.getId()).setType(ProductConstants.PRODUCT_TYPE_BARGAIN); + singleAttrValue.setType(ProductConstants.PRODUCT_TYPE_BARGAIN); singleAttrValue.setImage(systemAttachmentService.clearPrefix(singleAttrValue.getImage())); - boolean saveAttrValue = attrValueService.save(singleAttrValue); - if(!saveAttrValue) throw new CrmebException("新增属性详情失败"); - - // 处理商品属性值result - StoreProductAttrResult attrResult = new StoreProductAttrResult( - 0, - bargain.getId(), - systemAttachmentService.clearPrefix(JSON.toJSONString(request.getAttrValue())), - DateUtil.getNowTime(),ProductConstants.PRODUCT_TYPE_BARGAIN); - boolean saveResult = storeProductAttrResultService.save(attrResult); - if(!saveResult) throw new CrmebException("新增商品属性详情详情失败"); // 处理富文本 - StoreProductDescription spd = new StoreProductDescription( - bargain.getId(), request.getContent().length() > 0 - ? systemAttachmentService.clearPrefix(request.getContent()) : "" , ProductConstants.PRODUCT_TYPE_BARGAIN); - storeProductDescriptionService.deleteByProductId(spd.getProductId(), ProductConstants.PRODUCT_TYPE_BARGAIN); - boolean saveDesc = storeProductDescriptionService.save(spd); - if (!saveDesc) throw new CrmebException("新增商品富文本失败"); + StoreProductDescription spd = new StoreProductDescription(); + spd.setDescription(request.getContent().length() > 0 ? systemAttachmentService.clearPrefix(request.getContent()) : ""); + spd.setType(Constants.PRODUCT_TYPE_BARGAIN); - return save; + 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; } /** @@ -281,17 +285,23 @@ public class StoreBargainServiceImpl extends ServiceImpl 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( - bargain.getId(), request.getContent().length() > 0 - ? systemAttachmentService.clearPrefix(request.getContent()) : "" , ProductConstants.PRODUCT_TYPE_BARGAIN); - storeProductDescriptionService.deleteByProductId(spd.getProductId(), ProductConstants.PRODUCT_TYPE_BARGAIN); - boolean saveDesc = storeProductDescriptionService.save(spd); - if (!saveDesc) throw new CrmebException("编辑商品富文本失败"); + StoreProductDescription spd = new StoreProductDescription(); + spd.setDescription(request.getContent().length() > 0 ? systemAttachmentService.clearPrefix(request.getContent()) : ""); + spd.setType(Constants.PRODUCT_TYPE_BARGAIN); + spd.setProductId(bargain.getId()); - // attrResult整存整取,不做更新 - storeProductAttrResultService.deleteByProductId(bargain.getId(),ProductConstants.PRODUCT_TYPE_BARGAIN); - StoreProductAttrResult attrResult = new StoreProductAttrResult( - 0, - bargain.getId(), - systemAttachmentService.clearPrefix(JSON.toJSONString(request.getAttrValue())), - DateUtil.getNowTime(),ProductConstants.PRODUCT_TYPE_BARGAIN); - storeProductAttrResultService.save(attrResult); + Boolean execute = transactionTemplate.execute(e -> { + dao.updateById(bargain); - return saveCount > 0; + // 先删除原用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; } /** @@ -383,19 +429,17 @@ public class StoreBargainServiceImpl extends ServiceImpl attrs = attrService.getByEntity(spaPram); + List attrs = attrService.getListByProductIdAndType(storeBargain.getId(), ProductConstants.PRODUCT_TYPE_BARGAIN); storeProductResponse.setAttr(attrs); storeProductResponse.setSliderImage(String.join(",",storeBargain.getImages())); @@ -406,58 +450,34 @@ public class StoreBargainServiceImpl extends ServiceImpl storeProductAttrValuesBargain = attrValueService.getByEntity(spavPramBargain); - List> attrValuesBargain = genratorSkuInfo(bargainId, specType, storeBargain, storeProductAttrValuesBargain, ProductConstants.PRODUCT_TYPE_BARGAIN); + List bargainAttrValueList = attrValueService.getListByProductIdAndType(bargainId, ProductConstants.PRODUCT_TYPE_BARGAIN); + // 查询主商品sku + List attrValueList = attrValueService.getListByProductIdAndType(storeBargain.getProductId(), Constants.PRODUCT_TYPE_NORMAL); - // 查询attrValue - StoreProductAttrValue spavPramProduct = new StoreProductAttrValue(); - spavPramProduct.setProductId(storeBargain.getProductId()).setType(ProductConstants.PRODUCT_TYPE_NORMAL); - List storeProductAttrValuesProduct = attrValueService.getByEntity(spavPramProduct); - List> attrValuesProduct = genratorSkuInfo(storeBargain.getProductId(), specType, storeBargain, storeProductAttrValuesProduct, ProductConstants.PRODUCT_TYPE_NORMAL); - - // H5 端用于生成skuList - List sPAVResponses = new ArrayList<>(); - - for (StoreProductAttrValue storeProductAttrValue : storeProductAttrValuesBargain) { - StoreProductAttrValueResponse atr = new StoreProductAttrValueResponse(); - BeanUtils.copyProperties(storeProductAttrValue, atr); - // 单规格秒杀限量数据处理 - atr.setQuota(storeProductResponse.getQuota()); - atr.setMinPrice(storeBargain.getMinPrice()); - atr.setChecked(true); - sPAVResponses.add(atr); - } - - for (int k = 0; k < attrValuesProduct.size(); k++) { - for (int i = 0; i < attrValuesBargain.size(); i++) { - HashMap bargainMap = attrValuesBargain.get(i); - HashMap productMap = attrValuesProduct.get(k); - productMap.put("checked", false); - productMap.put("quota", productMap.get("stock")); - productMap.put("price", productMap.get("price")); - if(bargainMap.get("suk").equals(productMap.get("suk"))){ - productMap.put("checked", true); - productMap.put("quota", bargainMap.get("quota")); - productMap.put("price",bargainMap.get("price")); + 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); - storeProductResponse.setAttrValues(attrValuesProduct); - storeProductResponse.setAttrValue(sPAVResponses); - - StoreProductDescription sd = storeProductDescriptionService.getOne( - new LambdaQueryWrapper() - .eq(StoreProductDescription::getProductId, bargainId) - .eq(StoreProductDescription::getType, ProductConstants.PRODUCT_TYPE_BARGAIN)); - if(null != sd){ - storeProductResponse.setContent(StrUtil.isBlank(sd.getDescription()) ? "" : sd.getDescription()); - } - if (StrUtil.isNotBlank(storeProductResponse.getRule())) { - storeProductResponse.setRule(systemAttachmentService.clearPrefix(storeBargain.getRule())); + StoreProductDescription sd = storeProductDescriptionService.getByProductIdAndType(bargainId, Constants.PRODUCT_TYPE_BARGAIN); + if(ObjectUtil.isNotNull(sd)){ + storeProductResponse.setContent(ObjectUtil.isNull(sd.getDescription()) ? "" : sd.getDescription()); } return storeProductResponse; } @@ -506,10 +526,18 @@ public class StoreBargainServiceImpl extends ServiceImpl storeProductAttrValuesBargain = storeProductAttrValueService.getByEntity(spavPramBargain); + List storeProductAttrValuesBargain = attrValueService.getListByProductIdAndType(id, ProductConstants.PRODUCT_TYPE_BARGAIN); if (CollUtil.isEmpty(storeProductAttrValuesBargain)) { throw new CrmebException("砍价商品规格属性值未找到"); } @@ -524,6 +552,12 @@ public class StoreBargainServiceImpl extends ServiceImpl 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); @@ -599,30 +634,6 @@ public class StoreBargainServiceImpl extends ServiceImpl getByEntity(StoreBargain storeBargainParam) { - LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); - lqw.setEntity(storeBargainParam); - return dao.selectList(lqw); - } - - /** - * 添加库存 - * @param stockRequest StoreProductStockRequest 参数对象 - * @return Boolean - */ - @Override - public Boolean stockAddRedis(StoreProductStockRequest stockRequest) { - String _productString = JSON.toJSONString(stockRequest); - redisUtil.lPush(Constants.PRODUCT_BARGAIN_STOCK_UPDATE, _productString); - return true; - } - /** * 后台任务批量操作库存 */ @@ -794,6 +805,10 @@ public class StoreBargainServiceImpl extends ServiceImpl 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()); @@ -857,69 +872,12 @@ public class StoreBargainServiceImpl extends ServiceImpl> genratorSkuInfo(int productId, boolean specType, StoreBargain storeBargain, - List storeProductAttrValues, - int productType) { - List> attrValues = new ArrayList<>(); - if (specType) { - StoreProductAttrResult sparPram = new StoreProductAttrResult(); - sparPram.setProductId(productId).setType(productType); - 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++) { - 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.parse(storeProductAttrValues.get(i).getAttrValue(), Feature.OrderedField)); - attrValue.put("brokerage", currentAttrValue.getBrokerage()); - attrValue.put("brokerageTwo", currentAttrValue.getBrokerageTwo()); - attrValue.put("quota", currentAttrValue.getQuota()); - attrValue.put("minPrice", storeBargain.getMinPrice()); - String[] skus = currentSku.split(","); - for (int k = 0; k < skus.length; k++) { - attrValue.put("value" + k, skus[k]); - } - attrValues.add(attrValue); - } - - } - } - return attrValues; - } - // 砍价操作库存 private boolean doProductStock(StoreProductStockRequest storeProductStockRequest){ // 砍价商品信息回滚 StoreBargain existProduct = getById(storeProductStockRequest.getBargainId()); List existAttr = - storeProductAttrValueService.getListByProductIdAndAttrId( + attrValueService.getListByProductIdAndAttrId( storeProductStockRequest.getBargainId(), storeProductStockRequest.getAttrId().toString(), storeProductStockRequest.getType()); @@ -942,7 +900,7 @@ public class StoreBargainServiceImpl extends ServiceImpl temMap = new HashMap<>(); // 公众号 - 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(Constants.WE_CHAT_TEMP_KEY_BARGAIN_SUCCESS, temMap, userToken.getToken()); - return; + 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; + } } - // 小程序发送订阅消息 - userToken = userTokenService.getTokenByUserId(user.getUid(), UserConstants.USER_TOKEN_TYPE_ROUTINE); - if (ObjectUtil.isNull(userToken)) { - 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()); } - // 组装数据 - temMap.put("thing6", storeBargain.getTitle()); - temMap.put("amount3", storeBargain.getMinPrice().toString() + "元"); - temMap.put("thing7", "好腻害!你的朋友们已经帮你砍到底价了!"); - templateMessageService.pushMiniTemplateMessage(Constants.WE_CHAT_PROGRAM_TEMP_KEY_BARGAIN_SUCCESS, temMap, userToken.getToken()); - } - - /** - * 获取用户还剩余的砍价金额 - * @param bargainId 砍价商品编号 - * @param bargainUserUid 砍价发起用户uid - * @return surplusPrice 剩余的砍价金额 - */ - @Override - public BigDecimal getSurplusPrice(Integer bargainId, Integer bargainUserUid) { - StoreBargainUser storeBargainUser = storeBargainUserService.getByBargainIdAndUid(bargainId, bargainUserUid); - if (ObjectUtil.isNull(storeBargainUser)) throw new CrmebException("砍价用户信息不存在"); - BigDecimal coverPrice = storeBargainUser.getBargainPrice().subtract(storeBargainUser.getBargainPriceMin()); - BigDecimal alreadyPrice = storeBargainUser.getPrice(); - return coverPrice.subtract(alreadyPrice); } /** diff --git a/crmeb/src/main/java/com/zbkj/crmeb/bargain/service/impl/StoreBargainUserServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreBargainUserServiceImpl.java similarity index 90% rename from crmeb/src/main/java/com/zbkj/crmeb/bargain/service/impl/StoreBargainUserServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreBargainUserServiceImpl.java index b0cc167c..66ccf8e4 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/bargain/service/impl/StoreBargainUserServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreBargainUserServiceImpl.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.bargain.service.impl; +package com.zbkj.service.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; @@ -7,33 +7,28 @@ 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.common.CommonPage; -import com.common.PageParamRequest; -import com.constants.BargainConstants; -import com.constants.Constants; -import com.exception.CrmebException; +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.utils.CrmebUtil; -import com.utils.DateUtil; -import com.utils.vo.dateLimitUtilVo; -import com.zbkj.crmeb.bargain.dao.StoreBargainUserDao; -import com.zbkj.crmeb.bargain.model.StoreBargain; -import com.zbkj.crmeb.bargain.model.StoreBargainUser; -import com.zbkj.crmeb.bargain.model.StoreBargainUserHelp; -import com.zbkj.crmeb.bargain.request.StoreBargainUserSearchRequest; -import com.zbkj.crmeb.bargain.response.StoreBargainUserResponse; -import com.zbkj.crmeb.bargain.service.StoreBargainService; -import com.zbkj.crmeb.bargain.service.StoreBargainUserHelpService; -import com.zbkj.crmeb.bargain.service.StoreBargainUserService; -import com.zbkj.crmeb.front.request.BargainFrontRequest; -import com.zbkj.crmeb.front.response.BargainRecordResponse; -import com.zbkj.crmeb.front.response.BargainUserInfoResponse; -import com.zbkj.crmeb.store.model.StoreOrder; -import com.zbkj.crmeb.store.service.StoreOrderService; -import com.zbkj.crmeb.user.model.User; -import com.zbkj.crmeb.user.service.UserService; +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; @@ -134,47 +129,6 @@ public class StoreBargainUserServiceImpl extends ServiceImpl lqw = new LambdaQueryWrapper<>(); - lqw.eq(StoreBargainUser::getBargainId, bargainId); - lqw.eq(StoreBargainUser::getUid, uid); - lqw.eq(StoreBargainUser::getIsDel, false); - lqw.orderByDesc(StoreBargainUser::getId); - List userList = dao.selectList(lqw); - if (CollUtil.isEmpty(userList)) { - return null; - } - return userList.get(0); - } - - /** - * 通过砍价商品ID + 用户uid 获取用户砍价中砍价商品信息 - * @param bargainId 砍价商品编号 - * @param uid 参与用户uid - * @return StoreBargainUser - */ - @Override - public StoreBargainUser getByBargainIdAndUidAndPink(Integer bargainId, Integer uid) { - LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); - lqw.eq(StoreBargainUser::getBargainId, bargainId); - lqw.eq(StoreBargainUser::getUid, uid); - lqw.eq(StoreBargainUser::getIsDel, false); - lqw.eq(StoreBargainUser::getStatus, BargainConstants.BARGAIN_USER_STATUS_PARTICIPATE); - lqw.orderByDesc(StoreBargainUser::getId); - List userList = dao.selectList(lqw); - if (CollUtil.isEmpty(userList)) { - return null; - } - return userList.get(0); - } - /** * 通过砍价商品ID + 用户uid 获取用户砍价中砍价商品信息 * @param bargainId 砍价商品编号 @@ -273,6 +227,9 @@ public class StoreBargainUserServiceImpl extends ServiceImpl + * +---------------------------------------------------------------------- + */ +@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 (request.getType().equals("total")) { + 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/src/main/java/com/zbkj/crmeb/combination/service/impl/StoreCombinationServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreCombinationServiceImpl.java similarity index 62% rename from crmeb/src/main/java/com/zbkj/crmeb/combination/service/impl/StoreCombinationServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreCombinationServiceImpl.java index 7a94245b..e1ac6e78 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/combination/service/impl/StoreCombinationServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreCombinationServiceImpl.java @@ -1,59 +1,44 @@ -package com.zbkj.crmeb.combination.service.impl; +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.parser.Feature; 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.common.CommonPage; -import com.common.PageParamRequest; -import com.constants.Constants; -import com.exception.CrmebException; +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.utils.CrmebUtil; -import com.utils.DateUtil; -import com.utils.RedisUtil; -import com.zbkj.crmeb.combination.dao.StoreCombinationDao; -import com.zbkj.crmeb.combination.model.StoreCombination; -import com.zbkj.crmeb.combination.model.StorePink; -import com.zbkj.crmeb.combination.request.StoreCombinationRequest; -import com.zbkj.crmeb.combination.request.StoreCombinationSearchRequest; -import com.zbkj.crmeb.combination.request.StorePinkRequest; -import com.zbkj.crmeb.combination.response.StoreCombinationResponse; -import com.zbkj.crmeb.combination.response.StorePinkResponse; -import com.zbkj.crmeb.combination.service.StoreCombinationService; -import com.zbkj.crmeb.combination.service.StorePinkService; -import com.zbkj.crmeb.front.request.OrderRefundApplyRequest; -import com.zbkj.crmeb.front.response.*; -import com.zbkj.crmeb.front.service.OrderService; -import com.zbkj.crmeb.store.model.*; -import com.zbkj.crmeb.store.request.StoreProductAttrValueRequest; -import com.zbkj.crmeb.store.request.StoreProductStockRequest; -import com.zbkj.crmeb.store.response.StoreProductAttrValueResponse; -import com.zbkj.crmeb.store.response.StoreProductResponse; -import com.zbkj.crmeb.store.service.*; -import com.zbkj.crmeb.store.utilService.ProductUtils; -import com.zbkj.crmeb.system.service.SystemAttachmentService; -import com.zbkj.crmeb.system.service.SystemGroupDataService; -import com.zbkj.crmeb.user.model.User; -import com.zbkj.crmeb.user.service.UserService; -import org.apache.commons.lang3.StringUtils; +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.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.*; import java.util.stream.Collectors; @@ -81,9 +66,6 @@ public class StoreCombinationServiceImpl extends ServiceImpl 1) { + throw new CrmebException("单规格商品属性值不能大于1"); + } + } // 过滤掉checked=false的数据 - clearNotCheckedAndValidationPrice(request); +// clearNotCheckedAndValidationPrice(request); StoreCombination storeCombination = new StoreCombination(); BeanUtils.copyProperties(request, storeCombination); @@ -197,94 +189,58 @@ public class StoreCombinationServiceImpl extends ServiceImpl attrValueAddRequestList = request.getAttrValue(); // 计算价格 - productUtils.calcPriceForAttrValuesCombination(request, storeCombination); - // 保存数据 - boolean save = save(storeCombination); - if (!save) throw new CrmebException("新增拼团商品失败"); + 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); - // sku处理 - if (request.getSpecType()) { // 多规格 - if (CollUtil.isNotEmpty(request.getAttr()) && request.getAttr().size() > 0) { - request.getAttr().forEach(e -> { - e.setId(null); - e.setProductId(storeCombination.getId()); - e.setAttrValues(StringUtils.strip(e.getAttrValues().replace("\"", ""), "[]")); - e.setType(Constants.PRODUCT_TYPE_PINGTUAN); - }); - boolean attrSave = storeProductAttrService.saveBatch(request.getAttr()); - if (!attrSave) throw new CrmebException("新增拼团商品属性名失败"); - } - } else { //单规格 - StoreProductAttr singleAttr = new StoreProductAttr(); - singleAttr.setProductId(storeCombination.getId()).setAttrName("规格").setAttrValues("默认").setType(Constants.PRODUCT_TYPE_PINGTUAN); - boolean attrAddResult = storeProductAttrService.save(singleAttr); - if (!attrAddResult) throw new CrmebException("新增属性名失败"); - StoreProductAttrValue singleAttrValue = new StoreProductAttrValue(); - BigDecimal commissionL1 = BigDecimal.ZERO; - BigDecimal commissionL2 = BigDecimal.ZERO; - if (request.getAttrValue().size() > 0) { - commissionL1 = null != request.getAttrValue().get(0).getBrokerage() ? - request.getAttrValue().get(0).getBrokerage() : BigDecimal.ZERO; - commissionL2 = null != request.getAttrValue().get(0).getBrokerageTwo() ? - request.getAttrValue().get(0).getBrokerageTwo() : BigDecimal.ZERO; - } + 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()); - singleAttrValue.setProductId(storeCombination.getId()).setStock(storeCombination.getStock()).setSuk("默认") - .setSales(storeCombination.getSales()).setPrice(storeCombination.getPrice()) - .setImage(systemAttachmentService.clearPrefix(storeCombination.getImage())) - .setCost(storeCombination.getCost()) - .setType(Constants.PRODUCT_TYPE_PINGTUAN) - .setOtPrice(storeCombination.getOtPrice()).setBrokerage(commissionL1) - .setBrokerageTwo(commissionL2).setQuota(storeCombination.getQuota()) - .setQuotaShow(storeCombination.getQuota()); - boolean saveOrUpdateResult = storeProductAttrValueService.save(singleAttrValue); - if (!saveOrUpdateResult) throw new CrmebException("新增属性详情失败"); - } + 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()); - if (null != request.getAttrValue() && request.getAttrValue().size() > 0) { - // 批量设置attrValues对象的商品id - List storeCombinationAttrValueRequests = request.getAttrValue(); - storeCombinationAttrValueRequests.forEach(e -> e.setProductId(storeCombination.getId())); - List storeProductAttrValues = new ArrayList<>(); - for (StoreProductAttrValueRequest attrValuesRequest : storeCombinationAttrValueRequests) { - StoreProductAttrValue spav = new StoreProductAttrValue(); - BeanUtils.copyProperties(attrValuesRequest, spav); - //设置sku字段 - if (null == attrValuesRequest.getAttrValue()) { - break; - } - List skuList = new ArrayList<>(); - for (Map.Entry vo : attrValuesRequest.getAttrValue().entrySet()) { - skuList.add(vo.getValue()); - spav.setSuk(String.join(",", skuList)); - } - spav.setImage(systemAttachmentService.clearPrefix(spav.getImage())); - spav.setAttrValue(JSON.toJSONString(attrValuesRequest.getAttrValue())); - spav.setQuotaShow(spav.getQuota()); - spav.setType(Constants.PRODUCT_TYPE_PINGTUAN); - storeProductAttrValues.add(spav); - } - // 保存属性 - if (storeProductAttrValues.size() > 0) { - boolean saveOrUpdateResult = storeProductAttrValueService.saveBatch(storeProductAttrValues); - StoreProductAttrResult attrResult = new StoreProductAttrResult( - 0, - storeCombination.getId(), - systemAttachmentService.clearPrefix(JSON.toJSONString(request.getAttrValue())), - DateUtil.getNowTime(), Constants.PRODUCT_TYPE_PINGTUAN); - storeProductAttrResultService.save(attrResult); - if (!saveOrUpdateResult) throw new CrmebException("新增拼团商品属性详情失败"); - } - } // 处理富文本 - StoreProductDescription spd = new StoreProductDescription( - storeCombination.getId(), request.getContent().length() > 0 - ? systemAttachmentService.clearPrefix(request.getContent()) : "", Constants.PRODUCT_TYPE_PINGTUAN); - storeProductDescriptionService.deleteByProductId(spd.getProductId(), Constants.PRODUCT_TYPE_PINGTUAN); - boolean descSave = storeProductDescriptionService.save(spd); - if (!descSave) throw new CrmebException("新增拼团商品详情失败"); - return save; + 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; } /** @@ -310,19 +266,19 @@ public class StoreCombinationServiceImpl extends ServiceImpl attrValueAddRequestList = request.getAttrValue(); // 计算价格 - productUtils.calcPriceForAttrValuesCombination(request, storeCombination); - // 保存数据 - boolean update = updateById(storeCombination); - if (!update) throw new CrmebException("编辑拼团商品失败"); + 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表做覆盖式更新,删除原有数据保存现有数据 - if (request.getSpecType()) { // 单规格不处理规格属性 - storeProductAttrService.removeByProductId(request.getId(), Constants.PRODUCT_TYPE_PINGTUAN); - request.getAttr().forEach(e -> { - e.setProductId(request.getId()); - e.setAttrValues(StringUtils.strip(e.getAttrValues().replace("\"", ""), "[]")); - e.setType(Constants.PRODUCT_TYPE_PINGTUAN); - }); - boolean updateAttr = storeProductAttrService.saveBatch(request.getAttr()); - if (!updateAttr) throw new CrmebException("编辑拼团商品属性失败"); - } - - if (null != request.getAttrValue() && request.getAttrValue().size() > 0) { - storeProductAttrValueService.removeByProductId(request.getId(), Constants.PRODUCT_TYPE_PINGTUAN); - List storeProductAttrValuesRequest = request.getAttrValue(); - // 批量设置attrValues对象的商品id - storeProductAttrValuesRequest.forEach(e -> e.setProductId(request.getId())); - List storeProductAttrValues = new ArrayList<>(); - for (StoreProductAttrValueRequest attrValuesRequest : storeProductAttrValuesRequest) { - StoreProductAttrValue spav = new StoreProductAttrValue(); - BeanUtils.copyProperties(attrValuesRequest, spav); - //设置sku字段 - if (null != attrValuesRequest.getAttrValue()) { - List skuList = new ArrayList<>(); - for (Map.Entry vo : attrValuesRequest.getAttrValue().entrySet()) { - skuList.add(vo.getValue()); - } - spav.setSuk(String.join(",", skuList)); - } - String attrValue = null; - if (null != attrValuesRequest.getAttrValue() && attrValuesRequest.getAttrValue().size() > 0) { - attrValue = JSON.toJSONString(attrValuesRequest.getAttrValue()); - } - spav.setAttrValue(attrValue); - spav.setImage(systemAttachmentService.clearPrefix(spav.getImage())); - spav.setType(Constants.PRODUCT_TYPE_PINGTUAN); - spav.setQuotaShow(spav.getQuota()); - storeProductAttrValues.add(spav); + // 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); } - boolean saveOrUpdateResult = storeProductAttrValueService.saveBatch(storeProductAttrValues); - if (!saveOrUpdateResult) throw new CrmebException("编辑属性详情失败"); - // attrResult整存整取,不做更新 - storeProductAttrResultService.deleteByProductId(storeCombination.getId(), Constants.PRODUCT_TYPE_PINGTUAN); - StoreProductAttrResult attrResult = new StoreProductAttrResult( - 0, - storeCombination.getId(), - systemAttachmentService.clearPrefix(JSON.toJSONString(request.getAttrValue())), - DateUtil.getNowTime(), Constants.PRODUCT_TYPE_PINGTUAN); - boolean resultSave = storeProductAttrResultService.save(attrResult); - if (!resultSave) throw new CrmebException("编辑属性详情结果失败"); - } + }); + + // 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); + } + }); + // 处理富文本 - if (StrUtil.isNotBlank(request.getContent())) { - StoreProductDescription spd = new StoreProductDescription( - storeCombination.getId(), - request.getContent().length() > 0 - ? systemAttachmentService.clearPrefix(request.getContent()) : "", - Constants.PRODUCT_TYPE_PINGTUAN); + 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); - boolean saveDesc = storeProductDescriptionService.save(spd); - if (!saveDesc) throw new CrmebException("编辑拼团商品详情失败"); - } - return update; + storeProductDescriptionService.save(spd); + + return Boolean.TRUE; + }); + + return execute; } /** * 拼团商品详情 * * @param id 拼团商品ID + * @return StoreProductInfoResponse */ @Override - public StoreProductResponse getAdminDetail(Integer id) { + public StoreProductInfoResponse getAdminDetail(Integer id) { StoreCombination storeCombination = dao.selectById(id); - if (ObjectUtil.isNull(storeCombination)) throw new CrmebException("未找到对应商品信息"); - StoreProductResponse storeProductResponse = new StoreProductResponse(); + 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)); - +// storeProductResponse.setStartTimeStr(DateUtil.timestamp2DateStr(storeCombination.getStartTime(), Constants.DATE_FORMAT_DATE)); +// storeProductResponse.setStopTimeStr(DateUtil.timestamp2DateStr(storeCombination.getStopTime(), Constants.DATE_FORMAT_DATE)); // 查询attr - StoreProductAttr spaPram = new StoreProductAttr(); - spaPram.setProductId(id).setType(Constants.PRODUCT_TYPE_PINGTUAN); - List attrs = storeProductAttrService.getByEntity(spaPram); + List attrs = storeProductAttrService.getListByProductIdAndType(id, Constants.PRODUCT_TYPE_PINGTUAN); storeProductResponse.setAttr(attrs); storeProductResponse.setSliderImage(String.join(",", storeCombination.getImages())); boolean specType = false; - StoreProductAttr proPram = new StoreProductAttr(); - proPram.setProductId(storeCombination.getProductId()).setType(Constants.PRODUCT_TYPE_NORMAL); - List proAttrs = storeProductAttrService.getByEntity(proPram); - if (proAttrs.size() > 1) { + if (attrs.size() > 1) { specType = true; - } else if (proAttrs.size() == 1) { - if (!proAttrs.get(0).getAttrValues().equals("默认")) { - specType = true; - } } storeProductResponse.setSpecType(specType); - // 拼装数据 - StoreProductAttrValue spavPramCombination = new StoreProductAttrValue(); - spavPramCombination.setProductId(id).setType(Constants.PRODUCT_TYPE_PINGTUAN); - List storeProductAttrValuesCombination = storeProductAttrValueService.getByEntity(spavPramCombination); - List> attrValuesCombination = genratorSkuInfo(id, storeCombination, storeProductAttrValuesCombination, Constants.PRODUCT_TYPE_PINGTUAN, specType); + List comAttrValueList = storeProductAttrValueService.getListByProductIdAndType(id, ProductConstants.PRODUCT_TYPE_PINGTUAN); + // 查询主商品sku + List attrValueList = storeProductAttrValueService.getListByProductIdAndType(storeCombination.getProductId(), Constants.PRODUCT_TYPE_NORMAL); - // 查询attrValue - StoreProductAttrValue spavPramProduct = new StoreProductAttrValue(); - spavPramProduct.setProductId(storeCombination.getProductId()).setType(Constants.PRODUCT_TYPE_NORMAL); - List storeProductAttrValuesProduct = storeProductAttrValueService.getByEntity(spavPramProduct); - List> attrValuesProduct = genratorSkuInfo(storeCombination.getProductId(), storeCombination, storeProductAttrValuesProduct, Constants.PRODUCT_TYPE_NORMAL, specType); - - // H5 端用于生成skuList - List sPAVResponses = new ArrayList<>(); - - for (StoreProductAttrValue storeProductAttrValue : storeProductAttrValuesCombination) { - StoreProductAttrValueResponse atr = new StoreProductAttrValueResponse(); - BeanUtils.copyProperties(storeProductAttrValue, atr); - // 单规格拼团限量数据处理 - atr.setQuota(storeProductResponse.getQuota()); - atr.setChecked(true); - sPAVResponses.add(atr); - } - - for (int k = 0; k < attrValuesProduct.size(); k++) { - for (int i = 0; i < attrValuesCombination.size(); i++) { - HashMap skill = attrValuesCombination.get(i); - HashMap product = attrValuesProduct.get(k); - product.put("checked", false); - product.put("quota", product.get("stock")); - product.put("price", product.get("price")); - if (skill.get("suk").equals(product.get("suk"))) { - product.put("checked", true); - product.put("quota", skill.get("quota")); - product.put("price", skill.get("price")); + 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); - storeProductResponse.setAttrValues(attrValuesProduct); - storeProductResponse.setAttrValue(sPAVResponses); - StoreProductDescription sd = storeProductDescriptionService.getOne( - new LambdaQueryWrapper() - .eq(StoreProductDescription::getProductId, id) - .eq(StoreProductDescription::getType, Constants.PRODUCT_TYPE_PINGTUAN)); - if (null != sd) { - storeProductResponse.setContent(null == sd.getDescription() ? "" : sd.getDescription()); + StoreProductDescription sd = storeProductDescriptionService.getByProductIdAndType(id, Constants.PRODUCT_TYPE_PINGTUAN); + if (ObjectUtil.isNotNull(sd)) { + storeProductResponse.setContent(ObjectUtil.isNull(sd.getDescription()) ? "" : sd.getDescription()); } return storeProductResponse; } @@ -589,29 +533,34 @@ public class StoreCombinationServiceImpl extends ServiceImpl attrList = storeProductAttrService.getByEntity(spaPram); + List attrList = storeProductAttrService.getListByProductIdAndType(comId, Constants.PRODUCT_TYPE_PINGTUAN); // 根据制式设置attr属性 - List skuAttr = getSkuAttr(attrList); - detailResponse.setProductAttr(skuAttr); +// List skuAttr = getSkuAttr(attrList); + detailResponse.setProductAttr(attrList); // 根据制式设置sku属性 HashMap skuMap = CollUtil.newHashMap(); // 获取主商品sku - StoreProductAttrValue spavPram = new StoreProductAttrValue(); - spavPram.setProductId(storeCombination.getProductId()).setType(Constants.PRODUCT_TYPE_NORMAL); - List storeProductAttrValues = storeProductAttrValueService.getByEntity(spavPram); + List storeProductAttrValues = storeProductAttrValueService.getListByProductIdAndType(storeCombination.getProductId(), Constants.PRODUCT_TYPE_NORMAL); // 获取拼团商品sku - StoreProductAttrValue spavPram1 = new StoreProductAttrValue(); - spavPram1.setProductId(storeCombination.getId()).setType(Constants.PRODUCT_TYPE_PINGTUAN); - List combinationAttrValues = storeProductAttrValueService.getByEntity(spavPram1); + List combinationAttrValues = storeProductAttrValueService.getListByProductIdAndType(storeCombination.getId(), Constants.PRODUCT_TYPE_PINGTUAN); for (StoreProductAttrValue productAttrValue : storeProductAttrValues) { StoreProductAttrValueResponse atr = new StoreProductAttrValueResponse(); @@ -694,36 +643,15 @@ public class StoreCombinationServiceImpl extends ServiceImpl - */ - private List getSkuAttr(List attrList) { - List attrResponseList = new ArrayList<>(); - for (StoreProductAttr attr : attrList) { - ProductAttrResponse attrResponse = new ProductAttrResponse(); - attrResponse.setProductId(attr.getProductId()); - attrResponse.setAttrName(attr.getAttrName()); - attrResponse.setType(attr.getType()); - List attrValues = new ArrayList<>(); - String trimAttr = attr.getAttrValues() - .replace("[","") - .replace("]",""); - if(attr.getAttrValues().contains(",")){ - attrValues = Arrays.asList(trimAttr.split(",")); - }else{ - attrValues.add(trimAttr); - } - attrResponse.setAttrValues(attrValues); - attrResponseList.add(attrResponse); - } - return attrResponseList; - } - /** * 去拼团 * @@ -755,11 +683,13 @@ public class StoreCombinationServiceImpl extends ServiceImpl 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() - 1 - Optional.ofNullable(pinkList.size()).orElse(0); + int count = teamPink.getPeople() - ( CollUtil.isEmpty(pinkList) ? 0 : pinkList.size() ); if (teamPink.getStatus() == 2) {//已完成 isOk = 1; @@ -781,48 +711,43 @@ public class StoreCombinationServiceImpl extends ServiceImpl pinkResponseList = pinkList.stream().map(i -> { + 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(i, storePinkResponse); - User userOne = userService.getById(i.getUid()); + BeanUtils.copyProperties(pink, storePinkResponse); + User userOne = userService.getById(pink.getUid()); storePinkResponse.setNickname(userOne.getNickname()); storePinkResponse.setAvatar(userOne.getAvatar()); - return storePinkResponse; - }).collect(Collectors.toList()); - // 团长 - StorePinkResponse storePinkResponse = new StorePinkResponse(); - if (teamPink.getKId().equals(0)) { - BeanUtils.copyProperties(teamPink, storePinkResponse); - if (teamPink.getUid().equals(user.getUid())) { - storePinkResponse.setNickname(user.getNickname()); - storePinkResponse.setAvatar(user.getAvatar()); - } else { - User teamUser = userService.getById(teamPink.getUid()); - storePinkResponse.setNickname(teamUser.getNickname()); - storePinkResponse.setAvatar(teamUser.getAvatar()); - } - } else { - StorePink pinkT = storePinkService.getById(teamPink.getKId()); - User teamUser = userService.getById(pinkT.getUid()); - BeanUtils.copyProperties(pinkT, storePinkResponse); - storePinkResponse.setNickname(teamUser.getNickname()); - storePinkResponse.setAvatar(teamUser.getAvatar()); + pinkResponseList.add(storePinkResponse); } - goPinkResponse.setCount(count); - goPinkResponse.setCurrentPinkOrder(teamPink.getOrderId()); goPinkResponse.setIsOk(isOk); goPinkResponse.setPinkBool(pinkBool); goPinkResponse.setUserBool(userBool); if (userBool == 1) { - if (!teamPink.getUid().equals(user.getUid())) { - StorePink itemPink = storePinkService.getByUidAndKid(user.getUid(), teamPink.getId()); - goPinkResponse.setCurrentPinkOrder(itemPink.getOrderId()); - } + pinkList.forEach(e -> { + if (e.getUid().equals(user.getUid())) { + goPinkResponse.setCurrentPinkOrder(e.getOrderId()); + } + }); } goPinkResponse.setPinkAll(pinkResponseList); - goPinkResponse.setPinkT(storePinkResponse); + goPinkResponse.setPinkT(storePinkTResponse); goPinkResponse.setUserInfo(user); // storeCombination部分 @@ -863,7 +788,6 @@ public class StoreCombinationServiceImpl extends ServiceImpl getByEntity(StoreCombination storeCombination) { - LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); - lqw.setEntity(storeCombination); - return dao.selectList(lqw); - } - - /** - * 添加库存 - */ - @Override - public Boolean stockAddRedis(StoreProductStockRequest request) { - String _productString = JSON.toJSONString(request); - redisUtil.lPush(Constants.PRODUCT_COMBINATION_STOCK_UPDATE, _productString); - return true; - } - @Override public void consumeProductStock() { String redisKey = Constants.PRODUCT_COMBINATION_STOCK_UPDATE; @@ -1200,86 +1104,6 @@ public class StoreCombinationServiceImpl extends ServiceImpl> genratorSkuInfo(Integer id, StoreCombination storeCombination, List storeProductAttrValues, int productType, boolean specType) { - List> attrValues = new ArrayList<>(); - if (specType) { - - StoreProductAttrResult sparPram = new StoreProductAttrResult(); - sparPram.setProductId(id).setType(productType); - 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++) { - 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.parse(storeProductAttrValues.get(i).getAttrValue(), Feature.OrderedField)); - attrValue.put("brokerage", currentAttrValue.getBrokerage()); - attrValue.put("brokerageTwo", currentAttrValue.getBrokerageTwo()); - attrValue.put("quota", currentAttrValue.getQuota()); - String[] skus = currentSku.split(","); - for (int k = 0; k < skus.length; k++) { - attrValue.put("value" + k, skus[k]); - } - attrValues.add(attrValue); - } - - } - } - return attrValues; - } - - /** - * 过滤没被选中的数据,并校验参数 - */ - private void clearNotCheckedAndValidationPrice(StoreCombinationRequest request) { - if (request.getSpecType()) { - request.setAttrValue(request.getAttrValue().stream().filter(StoreProductAttrValueRequest::getChecked).collect(Collectors.toList())); - } - if (CollUtil.isEmpty(request.getAttrValue())) { - throw new CrmebException("请选择 规格"); - } - for (StoreProductAttrValueRequest attr : request.getAttrValue()) { - if (ObjectUtil.isNull(attr.getPrice()) || attr.getPrice().compareTo(BigDecimal.ZERO) <= 0) { - throw new CrmebException("请正确输入 拼团价格"); - } - if (ObjectUtil.isNull(attr.getQuota()) || attr.getQuota() <= 0) { - throw new CrmebException("请正确输入 限量"); - } - if (attr.getQuota() > attr.getStock()) { - throw new CrmebException("限量 不能大于库存"); - } - - } - } - /** * 获取制式结构给attr属性 */ diff --git a/crmeb/src/main/java/com/zbkj/crmeb/marketing/service/impl/StoreCouponServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreCouponServiceImpl.java similarity index 71% rename from crmeb/src/main/java/com/zbkj/crmeb/marketing/service/impl/StoreCouponServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreCouponServiceImpl.java index 1d907a0a..e8b6f3b1 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/marketing/service/impl/StoreCouponServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreCouponServiceImpl.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.marketing.service.impl; +package com.zbkj.service.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; @@ -6,30 +6,24 @@ 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.common.PageParamRequest; -import com.common.SearchAndPageRequest; -import com.constants.Constants; -import com.constants.CouponConstants; -import com.exception.CrmebException; +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.utils.CrmebUtil; -import com.utils.DateUtil; -import com.zbkj.crmeb.category.model.Category; -import com.zbkj.crmeb.category.service.CategoryService; -import com.zbkj.crmeb.marketing.dao.StoreCouponDao; -import com.zbkj.crmeb.marketing.model.StoreCoupon; -import com.zbkj.crmeb.marketing.model.StoreCouponUser; -import com.zbkj.crmeb.marketing.request.StoreCouponRequest; -import com.zbkj.crmeb.marketing.request.StoreCouponSearchRequest; -import com.zbkj.crmeb.marketing.response.StoreCouponFrontResponse; -import com.zbkj.crmeb.marketing.response.StoreCouponInfoResponse; -import com.zbkj.crmeb.marketing.service.StoreCouponService; -import com.zbkj.crmeb.marketing.service.StoreCouponUserService; -import com.zbkj.crmeb.store.model.StoreProduct; -import com.zbkj.crmeb.store.request.StoreProductSearchRequest; -import com.zbkj.crmeb.store.service.StoreProductService; -import com.zbkj.crmeb.user.service.UserService; -import org.apache.commons.lang3.StringUtils; +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; @@ -76,8 +70,6 @@ public class StoreCouponServiceImpl extends ServiceImpl */ @Override @@ -88,22 +80,18 @@ public class StoreCouponServiceImpl extends ServiceImpl lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.eq(StoreCoupon::getIsDel, false); - if(null != request.getType()){ + if (null != request.getType()) { lambdaQueryWrapper.eq(StoreCoupon::getType, request.getType()); } - if(null != request.getStatus()){ + if (null != request.getStatus()) { lambdaQueryWrapper.eq(StoreCoupon::getStatus, request.getStatus()); } - if(StringUtils.isNotBlank(request.getName())){ + if (StrUtil.isNotBlank(request.getName())) { lambdaQueryWrapper.like(StoreCoupon::getName, request.getName()); } - if(StringUtils.isNotBlank(request.getPrimaryKey())){ - lambdaQueryWrapper.apply(CrmebUtil.getFindInSetSql("primary_key", request.getPrimaryKey()) + " and use_type = " + request.getUseType()); - } - lambdaQueryWrapper.orderByDesc(StoreCoupon::getSort).orderByDesc(StoreCoupon::getId); return dao.selectList(lambdaQueryWrapper); } @@ -118,31 +106,31 @@ public class StoreCouponServiceImpl extends ServiceImpl 1 && (StringUtils.isBlank(request.getPrimaryKey()))){ + if (request.getUseType() > 1 && (StrUtil.isBlank(request.getPrimaryKey()))) { throw new CrmebException("请选择商品/分类!"); } storeCoupon.setLastTotal(storeCoupon.getTotal()); - if(!request.getIsForever()){ + if (!request.getIsForever()) { storeCoupon.setReceiveStartTime(DateUtil.nowDateTime()); //开始时间设置为当前时间 }else{ - if(storeCoupon.getReceiveStartTime() == null || storeCoupon.getReceiveEndTime() == null){ + 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){ + if (compareDate > -1) { throw new CrmebException("请选择正确的领取时间范围!"); } } //非固定时间, 领取后多少天 - if(!request.getIsFixedTime()){ - if(storeCoupon.getDay() == null || storeCoupon.getDay() == 0){ + if (!request.getIsFixedTime()) { + if (storeCoupon.getDay() == null || storeCoupon.getDay() == 0) { throw new CrmebException("请输入天数!"); } storeCoupon.setUseStartTime(null); @@ -154,8 +142,6 @@ public class StoreCouponServiceImpl extends ServiceImpl productList = null; - List categoryList = null; - if(StringUtils.isNotBlank(storeCoupon.getPrimaryKey()) && storeCoupon.getUseType() > 1){ - List primaryIdList = CrmebUtil.stringToArray(storeCoupon.getPrimaryKey()); - if(storeCoupon.getUseType() == 2){ - productList = storeProductService.getList(new StoreProductSearchRequest(), new PageParamRequest(), primaryIdList); - } - if(storeCoupon.getUseType() == 3){ - categoryList = categoryService.getByIds(primaryIdList); - } - } - - StoreCouponRequest coupon = new StoreCouponRequest(); - BeanUtils.copyProperties(storeCoupon, coupon); - coupon.setIsForever(false); - if(null != coupon.getReceiveEndTime()){ - coupon.setIsForever(true); - } - - return new StoreCouponInfoResponse(coupon, productList, categoryList); - }catch (Exception e){ - throw new CrmebException(e.getMessage()); + 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); } /** @@ -293,7 +274,7 @@ public class StoreCouponServiceImpl extends ServiceImpl o.eq(StoreCoupon::getIsLimited, false).or().ge(StoreCoupon::getLastTotal, 0)); @@ -355,29 +336,6 @@ public class StoreCouponServiceImpl extends ServiceImpl 0; } - @Override - public List getHomeIndexCoupon() { - Date date = DateUtil.nowDateTime(); - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.select(StoreCoupon::getId, StoreCoupon::getName, StoreCoupon::getMoney, StoreCoupon::getMinPrice); - lambdaQueryWrapper.eq(StoreCoupon::getIsDel, false); - lambdaQueryWrapper.eq(StoreCoupon::getStatus, 1); - //剩余数量大于0 或者不设置上限 - lambdaQueryWrapper.and(i -> i.gt(StoreCoupon::getLastTotal, 0).or().eq(StoreCoupon::getIsLimited, false)); - //领取时间范围, 结束时间为null则是不限时 - lambdaQueryWrapper.and(i -> i.isNull(StoreCoupon::getReceiveEndTime).or( p -> p.lt(StoreCoupon::getReceiveStartTime, date).gt(StoreCoupon::getReceiveEndTime, date))); - // 用户使用时间范围,结束时间为null则是不限时 - lambdaQueryWrapper.and(i -> i.isNull(StoreCoupon::getUseEndTime).or(p -> p.gt(StoreCoupon::getUseEndTime, date))); - lambdaQueryWrapper.eq(StoreCoupon::getType, CouponConstants.COUPON_TYPE_RECEIVE); - lambdaQueryWrapper.orderByDesc(StoreCoupon::getSort).orderByDesc(StoreCoupon::getId); - lambdaQueryWrapper.last(" limit 2"); - List couponList = dao.selectList(lambdaQueryWrapper); - if (CollUtil.isEmpty(couponList) || couponList.size() < 2) { - return null; - } - return couponList; - } - /** * 移动端优惠券列表 * @param type 类型,1-通用,2-商品,3-品类 @@ -389,13 +347,13 @@ public class StoreCouponServiceImpl extends ServiceImpl getH5List(Integer type, Integer productId, PageParamRequest pageParamRequest) { // 获取优惠券列表 List list = getListByReceive(type, productId, pageParamRequest); - if(ObjectUtil.isNull(list)){ + if (ObjectUtil.isNull(list)) { return null; } //获取用户当前已领取未使用的优惠券 HashMap couponUserMap = null; Integer userId = userService.getUserId(); - if(userId > 0){ + if (userId > 0) { couponUserMap = storeCouponUserService.getMapByUserId(userId); } List storeCouponFrontResponseArrayList = new ArrayList<>(); @@ -404,12 +362,12 @@ public class StoreCouponServiceImpl extends ServiceImpl 0) { - if(CollUtil.isNotEmpty(couponUserMap) && couponUserMap.containsKey(storeCoupon.getId())){ + if (CollUtil.isNotEmpty(couponUserMap) && couponUserMap.containsKey(storeCoupon.getId())) { response.setIsUse(true); } } - if(response.getReceiveEndTime() == null){ + if (response.getReceiveEndTime() == null) { response.setReceiveStartTime(null); } @@ -422,6 +380,26 @@ public class StoreCouponServiceImpl extends ServiceImpl @@ -440,7 +418,7 @@ public class StoreCouponServiceImpl extends ServiceImpl i.isNull(StoreCoupon::getUseEndTime).or(p -> p.gt(StoreCoupon::getUseEndTime, date))); lqw.eq(StoreCoupon::getType, 1); - if(productId > 0){ + if (productId > 0) { //有商品id 通用券可以领取,商品券可以领取,分类券可以领取 getPrimaryKeySql(lqw, productId.toString()); } @@ -460,8 +438,8 @@ public class StoreCouponServiceImpl extends ServiceImpl lambdaQueryWrapper, String productIdStr){ - if(StringUtils.isBlank(productIdStr)){ + private void getPrimaryKeySql(LambdaQueryWrapper lambdaQueryWrapper, String productIdStr) { + if (StrUtil.isBlank(productIdStr)) { return; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/marketing/service/impl/StoreCouponUserServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreCouponUserServiceImpl.java similarity index 77% rename from crmeb/src/main/java/com/zbkj/crmeb/marketing/service/impl/StoreCouponUserServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreCouponUserServiceImpl.java index f3449546..0846b339 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/marketing/service/impl/StoreCouponUserServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreCouponUserServiceImpl.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.marketing.service.impl; +package com.zbkj.service.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; @@ -6,33 +6,33 @@ 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.common.CommonPage; -import com.common.MyRecord; -import com.common.PageParamRequest; -import com.constants.Constants; -import com.constants.CouponConstants; -import com.exception.CrmebException; +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.utils.CrmebUtil; -import com.utils.DateUtil; -import com.utils.RedisUtil; -import com.zbkj.crmeb.front.request.UserCouponReceiveRequest; -import com.zbkj.crmeb.front.vo.OrderInfoDetailVo; -import com.zbkj.crmeb.front.vo.OrderInfoVo; -import com.zbkj.crmeb.marketing.dao.StoreCouponUserDao; -import com.zbkj.crmeb.marketing.model.StoreCoupon; -import com.zbkj.crmeb.marketing.model.StoreCouponUser; -import com.zbkj.crmeb.marketing.request.StoreCouponUserRequest; -import com.zbkj.crmeb.marketing.request.StoreCouponUserSearchRequest; -import com.zbkj.crmeb.marketing.response.StoreCouponUserOrder; -import com.zbkj.crmeb.marketing.response.StoreCouponUserResponse; -import com.zbkj.crmeb.marketing.service.StoreCouponService; -import com.zbkj.crmeb.marketing.service.StoreCouponUserService; -import com.zbkj.crmeb.store.service.StoreProductService; -import com.zbkj.crmeb.user.model.User; -import com.zbkj.crmeb.user.service.UserService; +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; @@ -84,8 +84,6 @@ public class StoreCouponUserServiceImpl extends ServiceImpl */ @Override @@ -94,24 +92,24 @@ public class StoreCouponUserServiceImpl extends ServiceImpl lambdaQueryWrapper = new LambdaQueryWrapper<>(); - if(!StringUtils.isBlank(request.getName())){ + if (!StringUtils.isBlank(request.getName())) { lambdaQueryWrapper.like(StoreCouponUser::getName, request.getName()); } - if(request.getUid() !=null && request.getUid() > 0){ + if (request.getUid() !=null && request.getUid() > 0) { lambdaQueryWrapper.eq(StoreCouponUser::getUid, request.getUid()); } - if(request.getStatus() !=null){ + if (request.getStatus() !=null) { lambdaQueryWrapper.eq(StoreCouponUser::getStatus, request.getStatus()); } - if(request.getCouponId() != null){ + if (request.getCouponId() != null) { lambdaQueryWrapper.eq(StoreCouponUser::getCouponId, request.getCouponId()); } lambdaQueryWrapper.orderByDesc(StoreCouponUser::getId); List storeCouponUserList = dao.selectList(lambdaQueryWrapper); - if(storeCouponUserList.size() < 1){ + if (storeCouponUserList.size() < 1) { return new PageInfo<>(); } ArrayList storeCouponUserResponseList = new ArrayList<>(); @@ -122,7 +120,7 @@ public class StoreCouponUserServiceImpl extends ServiceImpl getList(StoreCouponUser storeCouponUser) { - LambdaQueryWrapper lwq = new LambdaQueryWrapper<>(); - lwq.setEntity(storeCouponUser); - return dao.selectList(lwq); - } - /** * 领券/批量领券 * @param request 新增参数 - * @author Mr.Zhang - * @since 2020-05-18 * @return boolean */ @Override @@ -156,27 +140,27 @@ public class StoreCouponUserServiceImpl extends ServiceImpl uidList = CrmebUtil.stringToArray(request.getUid()); - if(uidList.size() < 1){ + if (uidList.size() < 1) { throw new CrmebException("请选择用户!"); } //看是否有剩余数量 - if(storeCoupon.getIsLimited()){ + if (storeCoupon.getIsLimited()) { //看剩余的是否够给当前用户 - if(storeCoupon.getLastTotal() < uidList.size()){ + if (storeCoupon.getLastTotal() < uidList.size()) { throw new CrmebException("当前剩余数量不够领取!"); } } //过滤掉已经领取过的用户 filterReceiveUserInUid(storeCoupon.getId(), uidList); - if(uidList.size() < 1){ + if (uidList.size() < 1) { //都已经领取过了 throw new CrmebException("当前用户已经领取过此优惠券了!"); } //是否有固定的使用时间 - if(!storeCoupon.getIsFixedTime()){ + 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)); @@ -216,91 +200,18 @@ public class StoreCouponUserServiceImpl extends ServiceImpl 用户id集合 - * @author Mr.Zhang - * @since 2020-05-18 */ private void filterReceiveUserInUid(Integer couponId, List uidList) { LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper - .eq(StoreCouponUser::getCouponId, couponId) - .in(StoreCouponUser::getUid, uidList) - .eq(StoreCouponUser::getStatus,0); + lambdaQueryWrapper.eq(StoreCouponUser::getCouponId, couponId); + lambdaQueryWrapper.in(StoreCouponUser::getUid, uidList); List storeCouponUserList = dao.selectList(lambdaQueryWrapper); - if(storeCouponUserList != null){ + if (storeCouponUserList != null) { List receiveUidList = storeCouponUserList.stream().map(StoreCouponUser::getUid).distinct().collect(Collectors.toList()); uidList.removeAll(receiveUidList); } } - /** - * 检测优惠券是否可用,计算订单价格时使用 - * - * @param id 优惠券id - * @param productIdList 商品id集合 - * @param price 价格 - * @return 可用状态 - */ - @Override - public boolean canUse(Integer id, List productIdList, BigDecimal price) { - StoreCouponUser storeCouponUser = getById(id); - if(storeCouponUser == null || !storeCouponUser.getUid().equals(userService.getUserIdException())){ - 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(price) > 0){ - throw new CrmebException("总金额小于优惠券最小使用金额"); - } - - //检测优惠券信息 - if(storeCouponUser.getUseType() > 1){ - if(productIdList.size() < 1){ - throw new CrmebException("没有找到商品"); - } - - //拿出需要使用优惠券的商品分类集合 - List categoryIdList = storeProductService.getSecondaryCategoryByProductId(StringUtils.join(productIdList, ",")); - - //设置优惠券所提供的集合 - 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){ - primaryKeyIdList.retainAll(categoryIdList); - if (CollUtil.isEmpty(primaryKeyIdList)) { - throw new CrmebException("此优惠券为分类券,请购买相关分类下的商品之后再使用!"); - } - } - } - return true; - } - /** * 用户已领取的优惠券 * @param userId Integer 用户id @@ -312,7 +223,7 @@ public class StoreCouponUserServiceImpl extends ServiceImpl getMapByUserId(Integer userId) { List list = findListByUid(userId); - if(list.size() < 1){ + if (list.size() < 1) { return null; } @@ -359,13 +270,13 @@ public class StoreCouponUserServiceImpl extends ServiceImpl storeCouponUserOrderArrayList = new ArrayList<>(); List storeCouponUserList = dao.selectList(lambdaQueryWrapper); - if(storeCouponUserList.size() < 1){ + if (storeCouponUserList.size() < 1) { return storeCouponUserOrderArrayList; } - + //前端组件统一 转化数据 for (StoreCouponUser storeCouponUser : storeCouponUserList) { StoreCouponUserOrder storeCouponUserOrder = new StoreCouponUserOrder(); BeanUtils.copyProperties(storeCouponUser, storeCouponUserOrder); @@ -447,27 +358,23 @@ public class StoreCouponUserServiceImpl extends ServiceImpl uidList = CollUtil.newArrayList(); uidList.add(userId); filterReceiveUserInUid(storeCoupon.getId(), uidList); - if(uidList.size() < 1){ + if (uidList.size() < 1) { //都已经领取过了 throw new CrmebException("当前用户已经领取过此优惠券了!"); - } - //是否有固定的使用时间 - if(!storeCoupon.getIsFixedTime()){ + 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); @@ -481,7 +388,6 @@ public class StoreCouponUserServiceImpl extends ServiceImpl 1) { storeCouponUser.setPrimaryKey(storeCoupon.getPrimaryKey()); } - Boolean execute = transactionTemplate.execute(e -> { save(storeCouponUser); storeCouponService.deduction(storeCoupon.getId(), 1, storeCoupon.getIsLimited()); @@ -503,7 +409,7 @@ public class StoreCouponUserServiceImpl extends ServiceImpl uidList = CollUtil.newArrayList(); uidList.add(uid); filterReceiveUserInUid(storeCoupon.getId(), uidList); - if(uidList.size() < 1){ + if (uidList.size() < 1) { //都已经领取过了 record.set("errMsg", "当前用户已经领取过此优惠券了!"); return record; } //是否有固定的使用时间 - if(!storeCoupon.getIsFixedTime()){ + 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)); @@ -603,15 +509,15 @@ public class StoreCouponUserServiceImpl extends ServiceImpl storeCouponUserList = dao.selectList(lambdaQueryWrapper); - if(CollUtil.isEmpty(storeCouponUserList)){ + 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){ + if (ObjectUtil.isNotNull(couponUser.getStartTime()) && ObjectUtil.isNotNull(couponUser.getEndTime())) { + if (date.compareTo(couponUser.getEndTime()) >= 0) { storeCouponUserList.remove(i); continue; } @@ -633,7 +539,7 @@ public class StoreCouponUserServiceImpl extends ServiceImpl couponUserList = getH5List(type, userId, pageParamRequest); - if(CollUtil.isEmpty(couponUserList)) { + if (CollUtil.isEmpty(couponUserList)) { return null; } Date date = DateUtil.nowDateTime(); @@ -650,16 +556,14 @@ public class StoreCouponUserServiceImpl extends ServiceImpl 0){ + if (null != storeCouponUserResponse.getStartTime() && null != storeCouponUserResponse.getEndTime()) { + if (storeCouponUserResponse.getStartTime().compareTo(date) > 0) { validStr = "notStart";// 未开始 } - - if(date.compareTo(storeCouponUserResponse.getEndTime()) >= 0){ + if (date.compareTo(storeCouponUserResponse.getEndTime()) >= 0) { validStr = "overdue";// 过期 } } - storeCouponUserResponse.setValidStr(validStr); // 更改使用时间格式,去掉时分秒 @@ -670,8 +574,8 @@ public class StoreCouponUserServiceImpl extends ServiceImpl lambdaQueryWrapper, String productIdStr){ - if(StringUtils.isBlank(productIdStr)){ + private void getPrimaryKeySql(LambdaQueryWrapper lambdaQueryWrapper, String productIdStr) { + if (StringUtils.isBlank(productIdStr)) { return; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreOrderInfoServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreOrderInfoServiceImpl.java similarity index 80% rename from crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreOrderInfoServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreOrderInfoServiceImpl.java index c7d0556b..27e5d9f8 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreOrderInfoServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreOrderInfoServiceImpl.java @@ -1,25 +1,22 @@ -package com.zbkj.crmeb.store.service.impl; +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.common.PageParamRequest; -import com.github.pagehelper.PageHelper; -import com.zbkj.crmeb.front.vo.OrderInfoDetailVo; -import com.zbkj.crmeb.store.dao.StoreOrderInfoDao; -import com.zbkj.crmeb.store.model.StoreOrderInfo; -import com.zbkj.crmeb.store.request.StoreOrderInfoSearchRequest; -import com.zbkj.crmeb.store.response.StoreCartResponse; -import com.zbkj.crmeb.store.service.StoreOrderInfoService; -import com.zbkj.crmeb.store.service.StoreProductReplyService; -import com.zbkj.crmeb.store.vo.StoreOrderInfoOldVo; -import com.zbkj.crmeb.store.vo.StoreOrderInfoVo; +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; @@ -46,27 +43,6 @@ public class StoreOrderInfoServiceImpl extends ServiceImpl - */ - @Override - public List getList(StoreOrderInfoSearchRequest request, PageParamRequest pageParamRequest) { - PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); - - //带 StoreOrderInfo 类的多条件查询 - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - StoreOrderInfo model = new StoreOrderInfo(); - BeanUtils.copyProperties(request, model); - lambdaQueryWrapper.setEntity(model); - return dao.selectList(lambdaQueryWrapper); - } - /** * 根据id集合查询数据,返回 map * @param orderList List id集合 @@ -152,15 +128,45 @@ public class StoreOrderInfoServiceImpl extends ServiceImpl 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 订单详情集合 diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreOrderRefundServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreOrderRefundServiceImpl.java similarity index 57% rename from crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreOrderRefundServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreOrderRefundServiceImpl.java index e1475b27..2c252cf6 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreOrderRefundServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreOrderRefundServiceImpl.java @@ -1,29 +1,21 @@ -package com.zbkj.crmeb.store.service.impl; +package com.zbkj.service.service.impl; -import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.constants.Constants; -import com.constants.PayConstants; -import com.constants.WeChatConstants; -import com.exception.CrmebException; -import com.utils.CrmebUtil; -import com.utils.RestTemplateUtil; -import com.utils.WxPayUtil; -import com.utils.XmlUtil; -import com.zbkj.crmeb.payment.vo.wechat.WxRefundResponseVo; -import com.zbkj.crmeb.payment.vo.wechat.WxRefundVo; -import com.zbkj.crmeb.store.dao.StoreOrderDao; -import com.zbkj.crmeb.store.model.StoreOrder; -import com.zbkj.crmeb.store.request.StoreOrderRefundRequest; -import com.zbkj.crmeb.store.service.StoreOrderRefundService; -import com.zbkj.crmeb.system.service.SystemConfigService; -import org.apache.commons.codec.digest.DigestUtils; +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.scheduling.annotation.Async; import org.springframework.stereotype.Service; import java.math.BigDecimal; -import java.util.HashMap; /** * StoreOrderServiceImpl 接口实现 @@ -45,6 +37,8 @@ public class StoreOrderRefundServiceImpl extends ServiceImpl map = CollUtil.newHashMap(); - String xml = ""; - System.out.println("微信申请退款xmlStr = " + xmlStr); - 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(responseVo.getReturnCode().toUpperCase().equals("FAIL")){ - throw new CrmebException("微信申请退款失败1!" + responseVo.getReturnMsg()); - } - - if(responseVo.getResultCode().toUpperCase().equals("FAIL")){ - throw new CrmebException("微信申请退款失败2!" + responseVo.getErrCodeDes()); - } - System.out.println("================微信申请退款结束========================="); - System.out.println("xml = " + xml); - return responseVo; - } } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreOrderServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreOrderServiceImpl.java similarity index 78% rename from crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreOrderServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreOrderServiceImpl.java index 3bda675f..a7a7dad9 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreOrderServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreOrderServiceImpl.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.store.service.impl; +package com.zbkj.service.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; @@ -8,58 +8,33 @@ 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.common.CommonPage; -import com.common.MyRecord; -import com.common.PageParamRequest; -import com.constants.Constants; -import com.constants.SmsConstants; -import com.constants.UserConstants; -import com.exception.CrmebException; import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; -import com.utils.DateUtil; -import com.utils.RedisUtil; -import com.utils.ValidateFormUtil; -import com.utils.vo.dateLimitUtilVo; -import com.zbkj.crmeb.combination.model.StorePink; -import com.zbkj.crmeb.combination.service.StorePinkService; -import com.zbkj.crmeb.express.model.Express; -import com.zbkj.crmeb.express.service.ExpressService; -import com.zbkj.crmeb.express.service.LogisticService; -import com.zbkj.crmeb.express.vo.ExpressSheetVo; -import com.zbkj.crmeb.express.vo.LogisticsResultVo; -import com.zbkj.crmeb.pass.service.OnePassService; -import com.zbkj.crmeb.sms.service.SmsService; -import com.zbkj.crmeb.store.dao.StoreOrderDao; -import com.zbkj.crmeb.store.model.StoreOrder; -import com.zbkj.crmeb.store.model.StoreOrderStatus; -import com.zbkj.crmeb.store.request.*; -import com.zbkj.crmeb.store.response.*; -import com.zbkj.crmeb.store.service.StoreOrderInfoService; -import com.zbkj.crmeb.store.service.StoreOrderRefundService; -import com.zbkj.crmeb.store.service.StoreOrderService; -import com.zbkj.crmeb.store.service.StoreOrderStatusService; -import com.zbkj.crmeb.store.utilService.OrderUtils; -import com.zbkj.crmeb.store.vo.StoreOrderInfoOldVo; -import com.zbkj.crmeb.system.model.SystemAdmin; -import com.zbkj.crmeb.system.model.SystemStore; -import com.zbkj.crmeb.system.request.SystemWriteOffOrderSearchRequest; -import com.zbkj.crmeb.system.response.StoreOrderItemResponse; -import com.zbkj.crmeb.system.response.SystemWriteOffOrderResponse; -import com.zbkj.crmeb.system.service.SystemAdminService; -import com.zbkj.crmeb.system.service.SystemConfigService; -import com.zbkj.crmeb.system.service.SystemStoreService; -import com.zbkj.crmeb.user.model.User; -import com.zbkj.crmeb.user.model.UserBill; -import com.zbkj.crmeb.user.model.UserBrokerageRecord; -import com.zbkj.crmeb.user.model.UserToken; -import com.zbkj.crmeb.user.service.UserBillService; -import com.zbkj.crmeb.user.service.UserBrokerageRecordService; -import com.zbkj.crmeb.user.service.UserService; -import com.zbkj.crmeb.user.service.UserTokenService; -import com.zbkj.crmeb.wechat.service.TemplateMessageService; -import com.zbkj.crmeb.wechat.vo.WechatSendMessageForPaySuccess; +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; @@ -68,7 +43,6 @@ import org.springframework.transaction.support.TransactionTemplate; import javax.annotation.Resource; import java.math.BigDecimal; -import java.math.BigInteger; import java.util.*; import java.util.stream.Collectors; @@ -150,6 +124,12 @@ public class StoreOrderServiceImpl extends ServiceImpl 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" -// , "total_price", "mark" , "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_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 (ObjectUtil.isNotNull(request.getType())) { + 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)){ + if (CollUtil.isNotEmpty(orderList)) { detailResponseList = formatOrder1(orderList); } return CommonPage.restPage(CommonPage.copyPageInfo(startPage, detailResponseList)); @@ -209,18 +188,6 @@ public class StoreOrderServiceImpl extends ServiceImpl 0; } - /** - * 订单基本查询 - * @param storeOrder 订单参数 - * @return 订单查询结果 - */ - @Override - public List getByEntity(StoreOrder storeOrder) { - LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); - lqw.setEntity(storeOrder); - return dao.selectList(lqw); - } - /** * 订单基本查询一条 * @param storeOrder 参数 @@ -237,52 +204,47 @@ public class StoreOrderServiceImpl extends ServiceImpl */ @Override public SystemWriteOffOrderResponse getWriteOffList(SystemWriteOffOrderSearchRequest request, PageParamRequest pageParamRequest) { LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); String where = " is_del = 0 and shipping_type = 2"; -// String where = " is_del = 0 and paid = 1"; //时间 - if(!StringUtils.isBlank(request.getDateLimit())){ + 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())){ + 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){ + if (request.getStoreId() != null && request.getStoreId() > 0) { where += " and store_id = " + request.getStoreId(); } SystemWriteOffOrderResponse systemWriteOffOrderResponse = new SystemWriteOffOrderResponse(); BigDecimal totalPrice = dao.getTotalPrice(where); - BigDecimal price = new BigDecimal(BigInteger.ZERO); - if(totalPrice == null){ - totalPrice = price; + if (ObjectUtil.isNull(totalPrice)) { + totalPrice = BigDecimal.ZERO; } systemWriteOffOrderResponse.setOrderTotalPrice(totalPrice); //订单总金额 BigDecimal refundPrice = dao.getRefundPrice(where); - if(refundPrice == null){ - refundPrice = price; + 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){ + if (storeOrderList.size() < 1) { systemWriteOffOrderResponse.setList(CommonPage.restPage(new PageInfo<>())); return systemWriteOffOrderResponse; } @@ -324,7 +286,7 @@ public class StoreOrderServiceImpl extends ServiceImpl formatOrder(List storeOrderList) { List storeOrderItemResponseArrayList = new ArrayList<>(); - if(null == storeOrderList || storeOrderList.size() < 1){ + if (null == storeOrderList || storeOrderList.size() < 1) { return storeOrderItemResponseArrayList; } //门店id @@ -412,13 +374,13 @@ public class StoreOrderServiceImpl extends ServiceImpl spreadPeopleUidList = new ArrayList<>(); - for(Map.Entry entry : userList.entrySet()){ + for(Map.Entry entry : userList.entrySet()) { spreadPeopleUidList.add(entry.getValue().getSpreadUid()); } //推广信息 HashMap mapListInUid = new HashMap<>(); - if(userIdList.size() > 0 && spreadPeopleUidList.size() > 0) { + if (userIdList.size() > 0 && spreadPeopleUidList.size() > 0) { //推广人信息 mapListInUid = userService.getMapListInUid(spreadPeopleUidList); } @@ -427,14 +389,14 @@ public class StoreOrderServiceImpl extends ServiceImpl getMapInId(List orderIdList) { - Map map = new HashMap<>(); - if (null == orderIdList || orderIdList.size() < 1) { - return map; - } - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.in(StoreOrder::getId, orderIdList); - List orderList = dao.selectList(lambdaQueryWrapper); - - if (null == orderList || orderList.size() < 1) { - return map; - } - - for (StoreOrder storeOrder : orderList) { - map.put(storeOrder.getId(), storeOrder); - } - return map; - } - - /** 获取订单数量 - * @param userId 用户id - * @param date 字符串月份 moth - * @return 对应时间段的订单数量 - */ - @Override - public int getOrderCount(Integer userId, String date) { - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(StoreOrder::getPaid,1) - .eq(StoreOrder::getIsDel, 0); - - if(null != userId){ - lambdaQueryWrapper.eq(StoreOrder::getUid, userId); - } - if(StringUtils.isNotBlank(date)){ - dateLimitUtilVo dateLimit = DateUtil.getDateLimit(date); - lambdaQueryWrapper.between(StoreOrder::getCreateTime, dateLimit.getStartTime(), dateLimit.getEndTime()); - } - return dao.selectCount(lambdaQueryWrapper); - } - /** * 按开始结束时间分组订单 * @param date String 时间范围 @@ -580,7 +494,7 @@ public class StoreOrderServiceImpl extends ServiceImpl 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)){ + if (StringUtils.isNotBlank(date)) { dateLimitUtilVo dateLimit = DateUtil.getDateLimit(date); queryWrapper.between("create_time", dateLimit.getStartTime(), dateLimit.getEndTime()); } @@ -649,53 +563,15 @@ public class StoreOrderServiceImpl extends ServiceImpl temMap = new HashMap<>(); - temMap.put(Constants.WE_CHAT_TEMP_KEY_FIRST, "您的订单退款申请被通过,钱款将退还至您的支付账户,请耐心等待。"); - temMap.put("keyword1", storeOrder.getOrderId()); - temMap.put("keyword2", storeOrder.getPayPrice().toString()); - temMap.put("keyword3", DateUtil.dateToStr(storeOrder.getCreateTime(), Constants.DATE_FORMAT)); - temMap.put(Constants.WE_CHAT_TEMP_KEY_END, "感谢你的使用。"); - pushMessageRefundOrder(storeOrder, user, temMap); return execute; } - /** - * 发送消息通知 - * 根据用户类型发送 - * 公众号模板消息 - * 小程序订阅消息 - */ - private void pushMessageRefundOrder(StoreOrder storeOrder, User user, HashMap temMap) { - if (user.getUserType().equals(UserConstants.USER_TYPE_H5)) { - return; - } - UserToken userToken; - // 公众号 - if (user.getUserType().equals(UserConstants.USER_TYPE_WECHAT)) { - userToken = userTokenService.getTokenByUserId(user.getUid(), UserConstants.USER_TOKEN_TYPE_WECHAT); - if (ObjectUtil.isNull(userToken)) { - return ; - } - // 发送微信模板消息 - templateMessageService.pushTemplateMessage(Constants.WE_CHAT_TEMP_KEY_ORDER_REFUND, temMap, userToken.getToken()); - return; - } - // 小程序发送订阅消息 - String storeNameAndCarNumString = orderUtils.getStoreNameAndCarNumString(storeOrder.getId()); - if(StringUtils.isNotBlank(storeNameAndCarNumString)){ - WechatSendMessageForPaySuccess paySuccess = new WechatSendMessageForPaySuccess( - storeOrder.getId()+"",storeOrder.getPayPrice()+"",storeOrder.getPayTime()+"","暂无", - storeOrder.getTotalPrice()+"",storeNameAndCarNumString); - orderUtils.sendWeiChatMiniMessageForPaySuccess(paySuccess, userService.getById(storeOrder).getUid()); - } - } - /** * 订单详情(PC) * @param orderNo 订单编号 @@ -747,7 +623,7 @@ public class StoreOrderServiceImpl extends ServiceImpl 0) throw new CrmebException("订单已发货请勿重复操作!"); request.setId(storeOrder.getId()); - switch (request.getType()){ + switch (request.getType()) { case "1":// 发货 express(request, storeOrder); break; @@ -807,14 +683,6 @@ public class StoreOrderServiceImpl extends ServiceImpl temMap = new HashMap<>(); - temMap.put(Constants.WE_CHAT_TEMP_KEY_FIRST, "您的订单退款申请被拒绝!"); - temMap.put("keyword1", storeOrder.getOrderId()); - temMap.put("keyword2", storeOrder.getPayPrice().toString()); - temMap.put("keyword3", DateUtil.dateToStr(storeOrder.getCreateTime(), Constants.DATE_FORMAT)); - temMap.put(Constants.WE_CHAT_TEMP_KEY_END, "拒绝原因:"+ reason); - pushMessageRefundOrder(storeOrder, user, temMap); } return execute; } @@ -852,21 +720,6 @@ public class StoreOrderServiceImpl extends ServiceImpl getOrderByUserIdsForRetailShop(List ids) { - LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); - lqw.in(StoreOrder::getUid,ids); - lqw.eq(StoreOrder::getPaid, 1); - lqw.eq(StoreOrder::getRefundStatus, 0); - lqw.eq(StoreOrder::getIsDel, false); - return dao.selectList(lqw); - } - /** * 订单 top 查询参数 * @param status 状态参数 @@ -880,67 +733,17 @@ public class StoreOrderServiceImpl extends ServiceImpl { - // 修改订单价格 - orderEditPrice(request.getOrderNo(), request.getPrice()); - // 订单修改状态操作 - storeOrderStatusService.createLog(existOrder.getId(), Constants.ORDER_LOG_EDIT, - Constants.RESULT_ORDER_EDIT_PRICE_LOGS.replace("${orderPrice}", oldPrice) - .replace("${price}", request.getPrice() + "")); - return Boolean.TRUE; - }); - if(!execute) { - throw new CrmebException(Constants.RESULT_ORDER_EDIT_PRICE_SUCCESS - .replace("${orderNo}", existOrder.getOrderId()).replace("${price}", request.getPrice()+"")); - } - // 发送改价短信提醒 - User user = userService.getById(existOrder.getUid()); - if (StrUtil.isNotBlank(user.getPhone())) { - // 改价短信开关是否开启 - String smsSwitch = systemConfigService.getValueByKey(SmsConstants.SMS_CONFIG_PRICE_REVISION_SWITCH); - if (StrUtil.isNotBlank(smsSwitch) && smsSwitch.equals("1")) { - // 发送改价短信提醒 - smsService.sendOrderEditPriceNotice(user.getPhone(), existOrder.getOrderId(), request.getPrice()); - } - } - - return execute; - } - /** * 改价 * @param orderNo 订单编号 * @param price 修改后的价格 + * @param oldPrice 原支付金额 */ - private Boolean orderEditPrice(String orderNo, BigDecimal price) { + 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); @@ -954,7 +757,7 @@ public class StoreOrderServiceImpl extends ServiceImpl orderCurrentList = getOrderPayedByDateLimit(dateStart, dateEnd); double increasePrice = 0; - if(type == 1){ + if (type == 1) { double perSumPrice = orderPerList.stream().mapToDouble(e -> e.getPayPrice().doubleValue()).sum(); double currentSumPrice = orderCurrentList.stream().mapToDouble(e -> e.getPayPrice().doubleValue()).sum(); @@ -987,15 +790,15 @@ public class StoreOrderServiceImpl extends ServiceImpl getOrderListStrByUids(List userIds, RetailShopStairUserRequest request) { - LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); - lqw.in(StoreOrder::getUid, userIds); - lqw.ge(StoreOrder::getPaid, 1); -// lqw.ge(StoreOrder::getRefundStatus, 0); - if(StrUtil.isNotBlank(request.getDateLimit())){ - dateLimitUtilVo dateLimit = DateUtil.getDateLimit(request.getDateLimit()); - lqw.between(StoreOrder::getCreateTime, dateLimit.getStartTime(), dateLimit.getEndTime()); - } - if(StrUtil.isNotBlank(request.getNickName())){ - lqw.eq(StoreOrder::getOrderId, request.getNickName()); - } - lqw.orderByDesc(StoreOrder::getId); - return dao.selectList(lqw); - } - /** * 更新支付结果 * @param orderNo 订单编号 @@ -1165,6 +946,7 @@ public class StoreOrderServiceImpl extends ServiceImpl { // 修改订单价格 - orderEditPrice(existOrder.getOrderId(), request.getPayPrice()); + 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) { + if (!execute) { throw new CrmebException(Constants.RESULT_ORDER_EDIT_PRICE_SUCCESS .replace("${orderNo}", existOrder.getOrderId()).replace("${price}", request.getPayPrice()+"")); } // 发送改价短信提醒 - User user = userService.getById(existOrder.getUid()); - if (StrUtil.isNotBlank(user.getPhone())) { - // 改价短信开关是否开启 - String smsSwitch = systemConfigService.getValueByKey(SmsConstants.SMS_CONFIG_PRICE_REVISION_SWITCH); - if (StrUtil.isNotBlank(smsSwitch) && smsSwitch.equals("1")) { + 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()); + smsService.sendOrderEditPriceNotice(user.getPhone(), existOrder.getOrderId(), request.getPayPrice(), Integer.valueOf(smsTemplate.getTempId())); } } @@ -1309,28 +1092,31 @@ public class StoreOrderServiceImpl extends ServiceImpl 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); + } ///////////////////////////////////////////////////////////////////////////////////////////////////// 以下为自定义方法 @@ -1378,35 +1429,14 @@ public class StoreOrderServiceImpl extends ServiceImpl getOrderPayedByDateLimit(String startTime, String endTime){ + 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); } - - /** 发货 - * @param id Integer id - * @author Mr.Zhang - * @since 2020-06-10 - * @return Boolean - */ - public StoreOrder getInfoException(Integer id) { - StoreOrder info = getById(id); - if(null == info){ - throw new CrmebException("没有找到订单信息"); - } - return info; - } - - public StoreOrder getInfo(String orderNo) { - LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.eq(StoreOrder::getOrderId, orderNo); - return dao.selectOne(lqw); - } - - public StoreOrder getInfoException(String orderNo) { + private StoreOrder getInfoException(String orderNo) { LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); lqw.eq(StoreOrder::getOrderId, orderNo); StoreOrder storeOrder = dao.selectOne(lqw); @@ -1419,8 +1449,6 @@ public class StoreOrderServiceImpl extends ServiceImpl 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()); + smsService.sendOrderDeliverNotice(user.getPhone(), user.getNickname(), proName, storeOrder.getOrderId(), Integer.valueOf(smsTemplate.getTempId())); } } // 发送消息通知 - pushMessageOrder(storeOrder, user); + pushMessageOrder(storeOrder, user, notification); } /** @@ -1475,7 +1514,7 @@ public class StoreOrderServiceImpl extends ServiceImpl temMap = new HashMap<>(); // 公众号 - if (storeOrder.getIsChannel().equals(Constants.ORDER_PAY_CHANNEL_PUBLIC)) { + 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 ; @@ -1494,23 +1533,31 @@ public class StoreOrderServiceImpl extends ServiceImpl orderIdList = new ArrayList<>(); orderIdList.add(storeOrder.getId()); HashMap> orderInfoMap = StoreOrderInfoService.getMapInId(orderIdList); - if(orderInfoMap.isEmpty() || !orderInfoMap.containsKey(storeOrder.getId())){ + if (orderInfoMap.isEmpty() || !orderInfoMap.containsKey(storeOrder.getId())) { throw new CrmebException("没有找到购买的商品信息"); } List productNameList = new ArrayList<>(); @@ -1567,7 +1614,7 @@ public class StoreOrderServiceImpl extends ServiceImpl orderIdList = new ArrayList<>(); orderIdList.add(storeOrder.getId()); HashMap> orderInfoMap = StoreOrderInfoService.getMapInId(orderIdList); - if(orderInfoMap.isEmpty() || !orderInfoMap.containsKey(storeOrder.getId())){ + if (orderInfoMap.isEmpty() || !orderInfoMap.containsKey(storeOrder.getId())) { throw new CrmebException("没有找到购买的商品信息"); } List productNameList = new ArrayList<>(); @@ -1645,6 +1692,7 @@ public class StoreOrderServiceImpl extends ServiceImpl map = new HashMap<>(); String proName = ""; @@ -1652,7 +1700,7 @@ public class StoreOrderServiceImpl extends ServiceImpl 20) { - proName = proName.substring(0, 15) + "***"; + 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()); } - map.put("thing8", proName); - map.put("character_string1", storeOrder.getOrderId()); - map.put("name4", request.getDeliveryName()); - map.put("phone_number10", request.getDeliveryTel()); - templateMessageService.pushMiniTemplateMessage(Constants.WE_CHAT_PROGRAM_TEMP_KEY_DELIVERY, map, userToken.getToken()); } /** 虚拟 @@ -1703,45 +1755,6 @@ public class StoreOrderServiceImpl extends ServiceImpl 0){ - Integer useIntegral = storeOrder.getUseIntegral(); - currentUser.setIntegral(currentUser.getIntegral() - useIntegral); - userService.updateBase(currentUser); - } - userService.userPayCountPlus(currentUser); - return orderUpdate2PayResult; - } /** * 获取订单总数 @@ -1760,6 +1773,26 @@ public class StoreOrderServiceImpl extends ServiceImpl 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 时间端 @@ -1803,10 +1836,10 @@ public class StoreOrderServiceImpl extends ServiceImpl queryWrapper, String status) { - if(StrUtil.isBlank(status)) { + if (StrUtil.isBlank(status)) { return; } - switch (status){ + switch (status) { case Constants.ORDER_STATUS_ALL: //全部 break; case Constants.ORDER_STATUS_UNPAID: //未支付 @@ -1876,7 +1909,7 @@ public class StoreOrderServiceImpl extends ServiceImpl getStatus(StoreOrder storeOrder) { + private Map getStatus(StoreOrder storeOrder) { Map map = new HashMap<>(); map.put("key", ""); map.put("value", ""); - if(null == storeOrder){ + if (null == storeOrder) { return map; } // 未支付 - if(!storeOrder.getPaid() + if (!storeOrder.getPaid() && storeOrder.getStatus() == 0 && storeOrder.getRefundStatus() == 0 && !storeOrder.getIsDel() - && !storeOrder.getIsSystemDel()){ + && !storeOrder.getIsSystemDel()) { map.put("key", Constants.ORDER_STATUS_UNPAID); map.put("value", Constants.ORDER_STATUS_STR_UNPAID); return map; } // 未发货 - if(storeOrder.getPaid() + if (storeOrder.getPaid() && storeOrder.getStatus() == 0 && storeOrder.getRefundStatus() == 0 && storeOrder.getShippingType() == 1 && !storeOrder.getIsDel() - && !storeOrder.getIsSystemDel()){ + && !storeOrder.getIsSystemDel()) { map.put("key", Constants.ORDER_STATUS_NOT_SHIPPED); map.put("value", Constants.ORDER_STATUS_STR_NOT_SHIPPED); return map; } // 待收货 - if(storeOrder.getPaid() + if (storeOrder.getPaid() && storeOrder.getStatus() == 1 && storeOrder.getRefundStatus() == 0 && storeOrder.getShippingType() == 1 && !storeOrder.getIsDel() - && !storeOrder.getIsSystemDel()){ + && !storeOrder.getIsSystemDel()) { map.put("key", Constants.ORDER_STATUS_SPIKE); map.put("value", Constants.ORDER_STATUS_STR_SPIKE); return map; } // 待评价 - if(storeOrder.getPaid() + if (storeOrder.getPaid() && storeOrder.getStatus() == 2 && storeOrder.getRefundStatus() == 0 && !storeOrder.getIsDel() - && !storeOrder.getIsSystemDel()){ + && !storeOrder.getIsSystemDel()) { map.put("key", Constants.ORDER_STATUS_BARGAIN); map.put("value", Constants.ORDER_STATUS_STR_BARGAIN); return map; } // 交易完成 - if(storeOrder.getPaid() + if (storeOrder.getPaid() && storeOrder.getStatus() == 3 && storeOrder.getRefundStatus() == 0 && !storeOrder.getIsDel() - && !storeOrder.getIsSystemDel()){ + && !storeOrder.getIsSystemDel()) { map.put("key", Constants.ORDER_STATUS_COMPLETE); map.put("value", Constants.ORDER_STATUS_STR_COMPLETE); return map; } // 待核销 - if(storeOrder.getPaid() + if (storeOrder.getPaid() && storeOrder.getStatus() == 0 && storeOrder.getRefundStatus() == 0 && storeOrder.getShippingType() == 2 && !storeOrder.getIsDel() - && !storeOrder.getIsSystemDel()){ + && !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() + if (storeOrder.getPaid() && storeOrder.getRefundStatus() == 1 && !storeOrder.getIsDel() - && !storeOrder.getIsSystemDel()){ + && !storeOrder.getIsSystemDel()) { map.put("key", Constants.ORDER_STATUS_APPLY_REFUNDING); map.put("value", Constants.ORDER_STATUS_STR_APPLY_REFUNDING); return map; } //退款中 - if(storeOrder.getPaid() + if (storeOrder.getPaid() && storeOrder.getRefundStatus() == 3 && !storeOrder.getIsDel() - && !storeOrder.getIsSystemDel()){ + && !storeOrder.getIsSystemDel()) { map.put("key", Constants.ORDER_STATUS_REFUNDING); map.put("value", Constants.ORDER_STATUS_STR_REFUNDING); return map; } //已退款 - if(storeOrder.getPaid() + if (storeOrder.getPaid() && storeOrder.getRefundStatus() == 2 && !storeOrder.getIsDel() - && !storeOrder.getIsSystemDel()){ + && !storeOrder.getIsSystemDel()) { map.put("key", Constants.ORDER_STATUS_REFUNDED); map.put("value", Constants.ORDER_STATUS_STR_REFUNDED); } //已删除 - if(storeOrder.getIsDel() || storeOrder.getIsSystemDel()){ + if (storeOrder.getIsDel() || storeOrder.getIsSystemDel()) { map.put("key", Constants.ORDER_STATUS_DELETED); map.put("value", Constants.ORDER_STATUS_STR_DELETED); } @@ -2054,11 +2087,13 @@ public class StoreOrderServiceImpl extends ServiceImpl 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()); @@ -112,23 +116,40 @@ public class StoreOrderStatusServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper<>(); queryWrapper.eq("oid", orderId); - queryWrapper.orderByDesc("oid"); + queryWrapper.orderByDesc("create_time"); queryWrapper.last(" limit 1"); return dao.selectOne(queryWrapper); } - public Boolean addLog(Integer orderId, String type, String message) { - StoreOrderStatus storeOrderStatus = new StoreOrderStatus(); - storeOrderStatus.setOid(orderId); - storeOrderStatus.setChangeType(type); - storeOrderStatus.setChangeMessage(message); - return save(storeOrderStatus); + /** + * 通过日期获取订单退款数量 + * @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/src/main/java/com/zbkj/crmeb/store/service/impl/StoreOrderTaskServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreOrderTaskServiceImpl.java similarity index 61% rename from crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreOrderTaskServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreOrderTaskServiceImpl.java index 2588d8e0..3c731ab2 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreOrderTaskServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreOrderTaskServiceImpl.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.store.service.impl; +package com.zbkj.service.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateField; @@ -6,28 +6,23 @@ 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.constants.*; -import com.exception.CrmebException; -import com.utils.DateUtil; -import com.zbkj.crmeb.bargain.service.StoreBargainService; -import com.zbkj.crmeb.combination.model.StorePink; -import com.zbkj.crmeb.combination.service.StoreCombinationService; -import com.zbkj.crmeb.combination.service.StorePinkService; -import com.zbkj.crmeb.marketing.model.StoreCouponUser; -import com.zbkj.crmeb.marketing.service.StoreCouponUserService; -import com.zbkj.crmeb.seckill.service.StoreSeckillService; -import com.zbkj.crmeb.sms.service.SmsService; -import com.zbkj.crmeb.store.model.StoreOrder; -import com.zbkj.crmeb.store.request.StoreProductStockRequest; -import com.zbkj.crmeb.store.service.*; -import com.zbkj.crmeb.store.utilService.OrderUtils; -import com.zbkj.crmeb.store.vo.StoreOrderInfoOldVo; -import com.zbkj.crmeb.system.model.SystemAdmin; -import com.zbkj.crmeb.system.service.SystemAdminService; -import com.zbkj.crmeb.system.service.SystemConfigService; -import com.zbkj.crmeb.user.model.*; -import com.zbkj.crmeb.user.service.*; -import com.zbkj.crmeb.wechat.service.TemplateMessageService; +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; @@ -36,7 +31,6 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.support.TransactionTemplate; -import java.math.BigDecimal; import java.util.Date; import java.util.HashMap; import java.util.List; @@ -86,9 +80,6 @@ public class StoreOrderTaskServiceImpl implements StoreOrderTaskService { @Autowired private StoreCombinationService storeCombinationService; - @Autowired - private UserBillService userBillService; - @Autowired private TransactionTemplate transactionTemplate; @@ -119,9 +110,21 @@ public class StoreOrderTaskServiceImpl implements StoreOrderTaskService { @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 @@ -141,7 +144,12 @@ public class StoreOrderTaskServiceImpl implements StoreOrderTaskService { //写订单日志 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; @@ -175,82 +183,61 @@ public class StoreOrderTaskServiceImpl implements StoreOrderTaskService { private Boolean rollbackStock(StoreOrder storeOrder) { try{ // 查找出商品详情 - List orderInfoVoList = storeOrderInfoService.getOrderListByOrderId(storeOrder.getId()); - if(null == orderInfoVoList || orderInfoVoList.size() < 1){ + List orderInfoList = storeOrderInfoService.getListByOrderNo(storeOrder.getOrderId()); + if(null == orderInfoList || orderInfoList.size() < 1){ return true; } // 兼容处理秒杀数据退款 // 秒杀商品回滚库存和销量 if(null != storeOrder.getSeckillId() && storeOrder.getSeckillId() > 0){ - for (StoreOrderInfoOldVo orderInfoVo : orderInfoVoList) { - StoreProductStockRequest stockRequest = new StoreProductStockRequest(); - stockRequest.setSeckillId(storeOrder.getSeckillId()); - stockRequest.setProductId(orderInfoVo.getProductId()); - stockRequest.setAttrId(orderInfoVo.getInfo().getAttrValueId()); - stockRequest.setOperationType("add"); - stockRequest.setType(1); - stockRequest.setSuk(orderInfoVo.getInfo().getSku()); - if(orderInfoVo.getInfo().getPayNum() < 1){ - //如果取不到值,则跳过 - continue; + // 秒杀只会有一个商品 + 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); } - stockRequest.setNum(orderInfoVo.getInfo().getPayNum()); - storeSeckillService.stockAddRedis(stockRequest); - } - + }); } else if (ObjectUtil.isNotNull(storeOrder.getBargainId()) && storeOrder.getBargainId() > 0) { // 砍价商品回滚销量库存 - for (StoreOrderInfoOldVo orderInfoVo : orderInfoVoList) { - StoreProductStockRequest stockRequest = new StoreProductStockRequest(); - stockRequest.setBargainId(storeOrder.getBargainId()); - stockRequest.setProductId(orderInfoVo.getProductId()); - stockRequest.setAttrId(orderInfoVo.getInfo().getAttrValueId()); - stockRequest.setOperationType("add"); - stockRequest.setType(2); - stockRequest.setSuk(orderInfoVo.getInfo().getSku()); - if(orderInfoVo.getInfo().getPayNum() < 1){ - //如果取不到值,则跳过 - continue; + 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); } - stockRequest.setNum(orderInfoVo.getInfo().getPayNum()); - storeBargainService.stockAddRedis(stockRequest); - } + }); } else if (ObjectUtil.isNotNull(storeOrder.getCombinationId()) && storeOrder.getCombinationId() > 0) { // 拼团商品回滚销量库存 - for (StoreOrderInfoOldVo orderInfoVo : orderInfoVoList) { - StoreProductStockRequest stockRequest = new StoreProductStockRequest(); - stockRequest.setCombinationId(storeOrder.getCombinationId()); - stockRequest.setProductId(orderInfoVo.getProductId()); - stockRequest.setAttrId(orderInfoVo.getInfo().getAttrValueId()); - stockRequest.setOperationType("add"); - stockRequest.setType(3); - stockRequest.setSuk(orderInfoVo.getInfo().getSku()); - if(orderInfoVo.getInfo().getPayNum() < 1){ - //如果取不到值,则跳过 - continue; + 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); } - stockRequest.setNum(orderInfoVo.getInfo().getPayNum()); - storeCombinationService.stockAddRedis(stockRequest); - } + }); } else { // 正常商品回滚销量库存 - for (StoreOrderInfoOldVo orderInfoVo : orderInfoVoList) { - StoreProductStockRequest stockRequest = new StoreProductStockRequest(); - stockRequest.setProductId(orderInfoVo.getProductId()); - stockRequest.setAttrId(orderInfoVo.getInfo().getAttrValueId()); - stockRequest.setOperationType("add"); - stockRequest.setType(0); - stockRequest.setSuk(orderInfoVo.getInfo().getSku()); - if(orderInfoVo.getInfo().getPayNum() < 1){ - //如果取不到值,则跳过 - continue; - } - stockRequest.setNum(orderInfoVo.getInfo().getPayNum()); - storeProductService.stockAddRedis(stockRequest); + 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()); +// throw new CrmebException(e.getMessage()); + logger.error("回滚库存失败,error = " + e.getMessage()); + return true; } - return true; } @@ -277,29 +264,18 @@ public class StoreOrderTaskServiceImpl implements StoreOrderTaskService { return Boolean.FALSE; } - List userBillList = CollUtil.newArrayList(); - - // 回滚积分 消耗和获得 - // 通过userBill记录获取订单之前处理的记录 - List userBills = userBillService.findListByOrderIdAndUid(storeOrder.getId(), storeOrder.getUid()); - // 回滚经验 - List experienceList = userBills.stream().filter(e -> e.getCategory().equals(Constants.USER_BILL_CATEGORY_EXPERIENCE)).collect(Collectors.toList()); - experienceList.forEach(bill -> { - user.setExperience(user.getExperience() - bill.getNumber().intValue()); + UserExperienceRecord userExperienceRecord = userExperienceRecordService.getByOrderNoAndUid(storeOrder.getOrderId(), storeOrder.getUid()); + user.setExperience(user.getExperience() - userExperienceRecord.getExperience()); - UserBill userBill = new UserBill(); - BeanUtils.copyProperties(bill, userBill); - userBill.setId(null); - userBill.setTitle(Constants.ORDER_STATUS_STR_REFUNDED); - userBill.setPm(0); - userBill.setType(Constants.USER_BILL_TYPE_PAY_PRODUCT_REFUND); - userBill.setNumber(bill.getNumber()); - userBill.setBalance(new BigDecimal(user.getExperience()).setScale(2)); - userBill.setMark(StrUtil.format("订单退款,扣除{}赠送经验", bill.getNumber().intValue())); - userBill.setStatus(1); - userBillList.add(userBill); - }); + 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()); @@ -312,9 +288,10 @@ public class StoreOrderTaskServiceImpl implements StoreOrderTaskService { record.setBalance(user.getIntegral()); record.setMark(StrUtil.format("订单退款,返还支付扣除得{}积分", record.getIntegral())); record.setStatus(IntegralRecordConstants.INTEGRAL_RECORD_STATUS_COMPLETE); - } - if (record.getType().equals(IntegralRecordConstants.INTEGRAL_RECORD_TYPE_ADD)) {// 冻结积分部分 + 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()); @@ -344,9 +321,6 @@ public class StoreOrderTaskServiceImpl implements StoreOrderTaskService { // 更新用户数据 userService.updateById(user); - // 用户账单记录处理 - userBillService.saveBatch(userBillList); - // 积分部分 if (CollUtil.isNotEmpty(addIntegralList)) { userIntegralRecordService.saveBatch(addIntegralList); @@ -361,7 +335,8 @@ public class StoreOrderTaskServiceImpl implements StoreOrderTaskService { } // 经验处理 - userLevelService.upLevel(user); + userExperienceRecordService.save(experienceRecord); + userLevelService.downLevel(user); // 回滚库存 rollbackStock(storeOrder); @@ -384,7 +359,6 @@ public class StoreOrderTaskServiceImpl implements StoreOrderTaskService { } return Boolean.TRUE; }); - return execute; } @@ -403,26 +377,35 @@ public class StoreOrderTaskServiceImpl implements StoreOrderTaskService { // 获取过期时间 String cancelStr; DateTime cancelTime; - if (storeOrder.getBargainId() > 0 || storeOrder.getSeckillId() > 0 || storeOrder.getCombinationId() > 0) { - cancelStr = systemConfigService.getValueByKey("order_activity_time"); + if (storeOrder.getType().equals(1)) { + cancelStr = "3"; + cancelTime = cn.hutool.core.date.DateUtil.offset(storeOrder.getCreateTime(), DateField.MINUTE, Integer.parseInt(cancelStr)); } else { - cancelStr = systemConfigService.getValueByKey("order_cancel_time"); + 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)); } - 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 = false; - - execute = transactionTemplate.execute(e -> { + 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) { @@ -468,7 +451,8 @@ public class StoreOrderTaskServiceImpl implements StoreOrderTaskService { // 获取积分记录 List integralRecordList = userIntegralRecordService.findListByOrderIdAndUid(storeOrder.getOrderId(), storeOrder.getUid()); logger.info("收货处理积分条数:" + integralRecordList.size()); - for (UserIntegralRecord record : integralRecordList) { + 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)); } @@ -491,21 +475,23 @@ public class StoreOrderTaskServiceImpl implements StoreOrderTaskService { userBrokerageRecordService.updateBatchById(recordList); } // 积分进入冻结期 - if (CollUtil.isNotEmpty(integralRecordList)) { - userIntegralRecordService.updateBatchById(integralRecordList); + if (CollUtil.isNotEmpty(userIntegralRecordList)) { + userIntegralRecordService.updateBatchById(userIntegralRecordList); } return Boolean.TRUE; }); if (execute) { // 发送用户确认收货管理员提醒短信 - String smsSwitch = systemConfigService.getValueByKey(SmsConstants.SMS_CONFIG_ADMIN_REFUND_SWITCH); - if (StrUtil.isNotBlank(smsSwitch) && smsSwitch.equals("1")) { + 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()); + smsService.sendOrderReceiptNotice(admin.getPhone(), storeOrder.getOrderId(), admin.getRealName(), tempId); }); } } @@ -524,6 +510,7 @@ public class StoreOrderTaskServiceImpl implements StoreOrderTaskService { * 小程序订阅消息 */ private void pushMessageOrder(StoreOrder storeOrder, User user) { + SystemNotification notification = systemNotificationService.getByMark(NotifyConstants.RECEIPT_GOODS_MARK); if (storeOrder.getIsChannel().equals(2)) { return; } @@ -533,7 +520,7 @@ public class StoreOrderTaskServiceImpl implements StoreOrderTaskService { UserToken userToken; HashMap temMap = new HashMap<>(); // 公众号 - if (storeOrder.getIsChannel().equals(Constants.ORDER_PAY_CHANNEL_PUBLIC)) { + 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 ; @@ -545,28 +532,31 @@ public class StoreOrderTaskServiceImpl implements StoreOrderTaskService { temMap.put("keyword3", DateUtil.nowDateTimeStr()); temMap.put("keyword4", "详情请进入订单查看"); temMap.put(Constants.WE_CHAT_TEMP_KEY_END, "感谢你的使用。"); - templateMessageService.pushTemplateMessage(Constants.WE_CHAT_TEMP_KEY_ORDER_RECEIVING, temMap, userToken.getToken()); - return; + 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()); } - // 小程序发送订阅消息 - 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", "您购买的商品已确认收货!"); - templateMessageService.pushMiniTemplateMessage(Constants.WE_CHAT_PROGRAM_TEMP_KEY_ORDER_RECEIVING, temMap, userToken.getToken()); } } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreOrderVerificationImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreOrderVerificationImpl.java similarity index 83% rename from crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreOrderVerificationImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreOrderVerificationImpl.java index f7f91d03..79d7a05b 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreOrderVerificationImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreOrderVerificationImpl.java @@ -1,27 +1,26 @@ -package com.zbkj.crmeb.store.service.impl; +package com.zbkj.service.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.constants.Constants; -import com.exception.CrmebException; -import com.utils.DateUtil; -import com.utils.RedisUtil; -import com.utils.vo.dateLimitUtilVo; -import com.zbkj.crmeb.store.dao.StoreOrderDao; -import com.zbkj.crmeb.store.model.StoreOrder; -import com.zbkj.crmeb.store.request.StoreOrderStaticsticsRequest; -import com.zbkj.crmeb.store.response.StoreOrderVerificationConfirmResponse; -import com.zbkj.crmeb.store.response.StoreStaffDetail; -import com.zbkj.crmeb.store.response.StoreStaffTopDetail; -import com.zbkj.crmeb.store.service.StoreOrderInfoService; -import com.zbkj.crmeb.store.service.StoreOrderService; -import com.zbkj.crmeb.store.service.StoreOrderVerification; -import com.zbkj.crmeb.store.utilService.OrderUtils; -import com.zbkj.crmeb.system.model.SystemAdmin; -import com.zbkj.crmeb.system.service.SystemAdminService; -import com.zbkj.crmeb.system.service.SystemStoreStaffService; -import com.zbkj.crmeb.wechat.service.impl.WechatSendMessageForMinService; -import com.zbkj.crmeb.wechat.vo.WechatSendMessageForVerSuccess; +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; @@ -58,12 +57,6 @@ public class StoreOrderVerificationImpl implements StoreOrderVerification { @Autowired private StoreOrderInfoService storeOrderInfoService; - @Autowired - private SystemAdminService systemAdminService; - - @Autowired - private WechatSendMessageForMinService wechatSendMessageForMinService; - @Autowired private RedisUtil redisUtil; @@ -179,7 +172,8 @@ public class StoreOrderVerificationImpl implements StoreOrderVerification { public boolean verificationOrderByCode(String vCode) { StoreOrderVerificationConfirmResponse existOrder = getVerificationOrderByCode(vCode); // 判断当前用户是否有权限核销 - SystemAdmin currentAdmin = systemAdminService.getInfo(); + LoginUserVo loginUserVo = SecurityUtil.getLoginUserVo(); + SystemAdmin currentAdmin = loginUserVo.getUser(); // 添加核销人员后执行核销操作 StoreOrder storeOrder = new StoreOrder(); BeanUtils.copyProperties(existOrder,storeOrder); @@ -190,13 +184,7 @@ public class StoreOrderVerificationImpl implements StoreOrderVerification { // 小程序订阅消息发送 if(saveStatus){ //后续操作放入redis - redisUtil.lPush(Constants.ORDER_TASK_REDIS_KEY_AFTER_TAKE_BY_USER, storeOrder.getId()); - - WechatSendMessageForVerSuccess ver = new WechatSendMessageForVerSuccess( - "CRMEB",orderUtils.getStoreNameAndCarNumString(storeOrder.getId()),storeOrder.getOrderId(), - DateUtil.nowDateTimeStr(),storeOrder.getPayPrice()+"","暂无","CRMEB" - ); - wechatSendMessageForMinService.sendVerSuccessMessage(ver,currentAdmin.getId()); + redisUtil.lPush(TaskConstants.ORDER_TASK_REDIS_KEY_AFTER_TAKE_BY_USER, storeOrder.getId()); } return saveStatus; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/combination/service/impl/StorePinkServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StorePinkServiceImpl.java similarity index 80% rename from crmeb/src/main/java/com/zbkj/crmeb/combination/service/impl/StorePinkServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StorePinkServiceImpl.java index f7524957..7b36bd36 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/combination/service/impl/StorePinkServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StorePinkServiceImpl.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.combination.service.impl; +package com.zbkj.service.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; @@ -6,34 +6,30 @@ 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.common.CommonPage; -import com.common.MyRecord; -import com.common.PageParamRequest; -import com.constants.Constants; -import com.constants.UserConstants; -import com.exception.CrmebException; +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.utils.DateUtil; -import com.utils.vo.dateLimitUtilVo; -import com.zbkj.crmeb.combination.dao.StorePinkDao; -import com.zbkj.crmeb.combination.model.StoreCombination; -import com.zbkj.crmeb.combination.model.StorePink; -import com.zbkj.crmeb.combination.request.StorePinkSearchRequest; -import com.zbkj.crmeb.combination.response.StorePinkAdminListResponse; -import com.zbkj.crmeb.combination.response.StorePinkDetailResponse; -import com.zbkj.crmeb.combination.service.StoreCombinationService; -import com.zbkj.crmeb.combination.service.StorePinkService; -import com.zbkj.crmeb.front.request.OrderRefundApplyRequest; -import com.zbkj.crmeb.front.service.OrderService; -import com.zbkj.crmeb.store.model.StoreOrder; -import com.zbkj.crmeb.store.service.StoreOrderService; -import com.zbkj.crmeb.user.model.User; -import com.zbkj.crmeb.user.model.UserToken; -import com.zbkj.crmeb.user.service.UserService; -import com.zbkj.crmeb.user.service.UserTokenService; -import com.zbkj.crmeb.wechat.service.TemplateMessageService; +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; @@ -80,6 +76,9 @@ public class StorePinkServiceImpl extends ServiceImpl i @Autowired private UserTokenService userTokenService; + @Autowired + private SystemNotificationService systemNotificationService; + /** * 列表 @@ -265,18 +264,21 @@ public class StorePinkServiceImpl extends ServiceImpl i if (CollUtil.isNotEmpty(pinkSuccessList) && pinkSuccessList.size() > 0) { boolean successUpdate = updateBatchById(pinkSuccessList, 100); if (!successUpdate) throw new CrmebException("批量更新拼团状态,拼团成功部分,失败"); - 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); - }); + 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); + }); + } } } @@ -285,7 +287,7 @@ public class StorePinkServiceImpl extends ServiceImpl i * @param record 参数 * @param user 拼团用户 */ - private void pushMessageOrder(MyRecord record, User user) { + private void pushMessageOrder(MyRecord record, User user, SystemNotification notification) { if (!record.getStr("payType").equals(Constants.PAY_TYPE_WE_CHAT)) { return ; } @@ -296,7 +298,7 @@ public class StorePinkServiceImpl extends ServiceImpl i UserToken userToken; HashMap temMap = new HashMap<>(); // 公众号 - if (record.getInt("isChannel").equals(Constants.ORDER_PAY_CHANNEL_PUBLIC)) { + 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 ; @@ -306,21 +308,22 @@ public class StorePinkServiceImpl extends ServiceImpl i temMap.put("keyword1", record.getStr("orderNo")); temMap.put("keyword2", record.getStr("proName")); temMap.put(Constants.WE_CHAT_TEMP_KEY_END, "感谢你的使用!"); - templateMessageService.pushTemplateMessage(Constants.WE_CHAT_TEMP_KEY_COMBINATION_SUCCESS, temMap, userToken.getToken()); - return; + 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()); } - // 小程序发送订阅消息 - 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", "恭喜您拼团成功!我们将尽快为您发货。"); - templateMessageService.pushMiniTemplateMessage(Constants.WE_CHAT_PROGRAM_TEMP_KEY_COMBINATION_SUCCESS, temMap, userToken.getToken()); - - } /** @@ -383,18 +386,6 @@ public class StorePinkServiceImpl extends ServiceImpl i return dao.selectCount(lqw); } - /** - * 获取拼团详情 - * @return StorePink - */ - @Override - public StorePink getByUidAndKid(Integer uid, Integer kid) { - LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); - lqw.eq(StorePink::getUid, uid); - lqw.in(StorePink::getKId, kid); - return dao.selectOne(lqw); - } - private Integer getCountByKidAndCid(Integer cid, Integer kid) { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.select(StorePink::getId); 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 00000000..0b368786 --- /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~2020 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/src/main/java/com/zbkj/crmeb/store/service/impl/StoreProductAttrServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductAttrServiceImpl.java similarity index 64% rename from crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreProductAttrServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductAttrServiceImpl.java index 5921a360..e006542b 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreProductAttrServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductAttrServiceImpl.java @@ -1,16 +1,13 @@ -package com.zbkj.crmeb.store.service.impl; +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.common.PageParamRequest; -import com.github.pagehelper.PageHelper; -import com.zbkj.crmeb.store.dao.StoreProductAttrDao; -import com.zbkj.crmeb.store.model.StoreProductAttr; -import com.zbkj.crmeb.store.request.StoreProductAttrSearchRequest; -import com.zbkj.crmeb.store.service.StoreProductAttrService; -import org.springframework.beans.BeanUtils; +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; @@ -35,27 +32,6 @@ public class StoreProductAttrServiceImpl extends ServiceImpl - */ - @Override - public List getList(StoreProductAttrSearchRequest request, PageParamRequest pageParamRequest) { - PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); - - //带 StoreProductAttr 类的多条件查询 - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - StoreProductAttr model = new StoreProductAttr(); - BeanUtils.copyProperties(request, model); - lambdaQueryWrapper.setEntity(model); - return dao.selectList(lambdaQueryWrapper); - } - /** * 根据基本属性查询商品属性详情 * @@ -75,19 +51,6 @@ public class StoreProductAttrServiceImpl extends ServiceImpl getByProductId(int productId) { - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(StoreProductAttr::getProductId, productId); - List storeProductAttrs = dao.selectList(lambdaQueryWrapper); - return storeProductAttrs; - } - /** * 根据id删除商品 * @param productId 待删除商品id @@ -99,5 +62,35 @@ public class StoreProductAttrServiceImpl extends ServiceImpl 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/src/main/java/com/zbkj/crmeb/store/service/impl/StoreProductAttrValueServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductAttrValueServiceImpl.java similarity index 60% rename from crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreProductAttrValueServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductAttrValueServiceImpl.java index 944c82bb..ee0cbe37 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreProductAttrValueServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductAttrValueServiceImpl.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.store.service.impl; +package com.zbkj.service.service.impl; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -6,17 +6,11 @@ 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.common.PageParamRequest; -import com.constants.Constants; -import com.exception.CrmebException; -import com.github.pagehelper.PageHelper; -import com.zbkj.crmeb.store.dao.StoreProductAttrValueDao; -import com.zbkj.crmeb.store.model.StoreProductAttrValue; -import com.zbkj.crmeb.store.request.StoreProductAttrValueSearchRequest; -import com.zbkj.crmeb.store.service.StoreProductAttrValueService; -import com.zbkj.crmeb.system.service.SystemConfigService; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.BeanUtils; +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; @@ -45,39 +39,6 @@ public class StoreProductAttrValueServiceImpl extends ServiceImpl - */ - @Override - public List getList(StoreProductAttrValueSearchRequest request, PageParamRequest pageParamRequest) { - PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); - - //带 StoreProductAttrValue 类的多条件查询 - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - StoreProductAttrValue model = new StoreProductAttrValue(); - BeanUtils.copyProperties(request, model); - lambdaQueryWrapper.setEntity(model); - return dao.selectList(lambdaQueryWrapper); - } - - /** - * 根据商品id获取attrValues - * @param productId 商品id - * @return 包含商品id的Attrvalues - */ - @Override - public List getListByProductId(Integer productId) { - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(StoreProductAttrValue::getProductId, productId); - return dao.selectList(lambdaQueryWrapper); - } - /** * * @param productId 商品id @@ -92,6 +53,7 @@ public class StoreProductAttrValueServiceImpl extends ServiceImpl existAttrValues = getListByProductIdAndAttrId(productId, attrValueId+"",type); - if(existAttrValues.size() == 0) throw new CrmebException("商品不存在"); - - StoreProductAttrValue attrValue = existAttrValues.get(0); - boolean result = false; - - LambdaUpdateWrapper lambdaUpdateWrapper = new LambdaUpdateWrapper<>(); - lambdaUpdateWrapper.eq(StoreProductAttrValue::getProductId, productId); - lambdaUpdateWrapper.eq(StoreProductAttrValue::getId, attrValueId); - lambdaUpdateWrapper.eq(StoreProductAttrValue::getType, type); - - - if(type == Constants.PRODUCT_TYPE_NORMAL){ - if(num > attrValue.getStock()){ - throw new CrmebException("库存不足"); - } - lambdaUpdateWrapper.set(StoreProductAttrValue::getStock, attrValue.getStock()-num); - lambdaUpdateWrapper.set(StoreProductAttrValue::getSales, attrValue.getSales()+num); - result = update(lambdaUpdateWrapper); - }else{ - if(num > attrValue.getQuota()){ - throw new CrmebException("库存不足"); - } - lambdaUpdateWrapper.set(StoreProductAttrValue::getStock, attrValue.getStock()-num); - lambdaUpdateWrapper.set(StoreProductAttrValue::getSales, attrValue.getSales()+num); - lambdaUpdateWrapper.set(StoreProductAttrValue::getQuota, attrValue.getQuota()-num); - result = update(lambdaUpdateWrapper); - } - - if(result){ //判断库存警戒值 - Integer alterNumI=0; - String alterNum = systemConfigService.getValueByKey("store_stock"); - if(StringUtils.isNotBlank(alterNum)) alterNumI = Integer.parseInt(alterNum); - if(alterNumI >= attrValue.getStock()){ - // todo socket 发送库存警告 - } - } - return true; - } - /** * 根据商品id删除AttrValue * @param productId 商品id @@ -182,6 +94,7 @@ public class StoreProductAttrValueServiceImpl extends ServiceImpl 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/src/main/java/com/zbkj/crmeb/store/service/impl/StoreProductCouponServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductCouponServiceImpl.java similarity index 78% rename from crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreProductCouponServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductCouponServiceImpl.java index 044354b3..d164ebe0 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreProductCouponServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductCouponServiceImpl.java @@ -1,10 +1,10 @@ -package com.zbkj.crmeb.store.service.impl; +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.crmeb.store.dao.StoreProductCouponDao; -import com.zbkj.crmeb.store.model.StoreProductCoupon; -import com.zbkj.crmeb.store.service.StoreProductCouponService; +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; @@ -39,18 +39,6 @@ public class StoreProductCouponServiceImpl extends ServiceImpl 0; } - /** - * - * @param storeProductCoupons 优惠券关联信息 - * @return - */ - @Override - public void saveCoupons(List storeProductCoupons) { - for (StoreProductCoupon storeProductCoupon : storeProductCoupons) { - dao.insert(storeProductCoupon); - } - } - /** * 根据商品id获取已关联优惠券信息 * @param productId 商品id diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreProductDescriptionServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductDescriptionServiceImpl.java similarity index 57% rename from crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreProductDescriptionServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductDescriptionServiceImpl.java index be435e3b..a8f2625a 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreProductDescriptionServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductDescriptionServiceImpl.java @@ -1,19 +1,14 @@ -package com.zbkj.crmeb.store.service.impl; +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.common.PageParamRequest; -import com.github.pagehelper.PageHelper; -import com.zbkj.crmeb.store.dao.StoreProductDescriptionDao; -import com.zbkj.crmeb.store.model.StoreProductDescription; -import com.zbkj.crmeb.store.request.StoreProductDescriptionSearchRequest; -import com.zbkj.crmeb.store.service.StoreProductDescriptionService; -import org.springframework.beans.BeanUtils; +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; -import java.util.List; /** * StoreProductDescriptionServiceImpl 接口实现 @@ -33,27 +28,6 @@ public class StoreProductDescriptionServiceImpl extends ServiceImpl - */ - @Override - public List getList(StoreProductDescriptionSearchRequest request, PageParamRequest pageParamRequest) { - PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); - - //带 StoreProductDescription 类的多条件查询 - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - StoreProductDescription model = new StoreProductDescription(); - BeanUtils.copyProperties(request, model); - lambdaQueryWrapper.setEntity(model); - return dao.selectList(lambdaQueryWrapper); - } - /** * 根据商品id和type删除对应描述 * @param productId 商品id @@ -65,5 +39,19 @@ public class StoreProductDescriptionServiceImpl extends ServiceImpl lqw = Wrappers.lambdaQuery(); + lqw.eq(StoreProductDescription::getProductId, productId); + lqw.eq(StoreProductDescription::getType,type); + return dao.selectOne(lqw); + } } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/vo/OrderAgainItemVo.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductLogServiceImpl.java similarity index 52% rename from crmeb/src/main/java/com/zbkj/crmeb/front/vo/OrderAgainItemVo.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductLogServiceImpl.java index 8d6c659d..f36f0e49 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/vo/OrderAgainItemVo.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductLogServiceImpl.java @@ -1,9 +1,15 @@ -package com.zbkj.crmeb.front.vo; +package com.zbkj.service.service.impl; -import lombok.Data; +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; /** - * 再次下单ItemVO对象 + * StoreProductLogServiceImpl 接口实现 * +---------------------------------------------------------------------- * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] * +---------------------------------------------------------------------- @@ -14,22 +20,11 @@ import lombok.Data; * | Author: CRMEB Team * +---------------------------------------------------------------------- */ -@Data -public class OrderAgainItemVo { +@Service +public class StoreProductLogServiceImpl extends ServiceImpl implements StoreProductLogService { - public OrderAgainItemVo() { - } - - public OrderAgainItemVo(Integer type, String title, String msg) { - this.type = type; - this.title = title; - this.msg = msg; - } - - private Integer type; - private String title; - private String msg; - private String payType; - private String deliveryType; + @Resource + private StoreProductLogDao dao; } + diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreProductRelationServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductRelationServiceImpl.java similarity index 73% rename from crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreProductRelationServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductRelationServiceImpl.java index b493b2b0..af9b4f09 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreProductRelationServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductRelationServiceImpl.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.store.service.impl; +package com.zbkj.service.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; @@ -6,20 +6,18 @@ 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.common.PageParamRequest; -import com.exception.CrmebException; +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.utils.CrmebUtil; -import com.zbkj.crmeb.front.request.UserCollectAllRequest; -import com.zbkj.crmeb.front.response.UserRelationResponse; -import com.zbkj.crmeb.store.dao.StoreProductRelationDao; -import com.zbkj.crmeb.store.model.StoreProduct; -import com.zbkj.crmeb.store.model.StoreProductRelation; -import com.zbkj.crmeb.store.request.StoreProductRelationSearchRequest; -import com.zbkj.crmeb.store.request.StoreProductSearchRequest; -import com.zbkj.crmeb.store.service.StoreProductRelationService; -import com.zbkj.crmeb.store.service.StoreProductService; -import com.zbkj.crmeb.user.service.UserService; +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; @@ -27,7 +25,6 @@ import javax.annotation.Resource; import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import java.util.stream.Collectors; /** * StoreProductRelationServiceImpl 接口实现 @@ -51,46 +48,13 @@ public class StoreProductRelationServiceImpl extends ServiceImpl - */ - @Override - public List getList(StoreProductRelationSearchRequest request, PageParamRequest pageParamRequest) { - //带 StoreProductRelation 类的多条件查询 - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(StoreProductRelation::getUid, request.getUid()); - List storeProductRelationList = dao.selectList(lambdaQueryWrapper); - if(storeProductRelationList == null || storeProductRelationList.size() < 1){ - return new ArrayList<>(); - } - - List productIdList = storeProductRelationList.stream().map(StoreProductRelation::getProductId).distinct().collect(Collectors.toList()); - - if(productIdList.size() < 1){ - return new ArrayList<>(); - } - StoreProductSearchRequest storeProductSearchRequest = new StoreProductSearchRequest(); - storeProductSearchRequest.setType(1); //上架的商品 - return storeProductService.getList(storeProductSearchRequest, pageParamRequest, productIdList); - } - /** * 添加收藏产品 * @param request UserCollectAllRequest 新增参数 - * @author Mr.Zhang - * @since 2020-05-06 * @return boolean */ @Override - public boolean all(UserCollectAllRequest request) { + public Boolean all(UserCollectAllRequest request) { Integer[] arr = request.getProductId(); if(arr.length < 1){ throw new CrmebException("请选择产品"); @@ -139,8 +103,6 @@ public class StoreProductRelationServiceImpl extends ServiceImpl lambdaQueryWrapper = new LambdaQueryWrapper<>(); @@ -213,6 +175,19 @@ public class StoreProductRelationServiceImpl extends ServiceImpl 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); @@ -221,5 +196,44 @@ public class StoreProductRelationServiceImpl extends ServiceImpl 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/src/main/java/com/zbkj/crmeb/store/service/impl/StoreProductReplyServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductReplyServiceImpl.java similarity index 74% rename from crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreProductReplyServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductReplyServiceImpl.java index 6115800a..a1858cf8 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreProductReplyServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductReplyServiceImpl.java @@ -1,45 +1,37 @@ -package com.zbkj.crmeb.store.service.impl; +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.common.CommonPage; -import com.common.MyRecord; -import com.common.PageParamRequest; -import com.constants.Constants; -import com.exception.CrmebException; import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; -import com.sun.org.apache.xpath.internal.operations.Bool; -import com.utils.CrmebUtil; -import com.utils.DateUtil; -import com.utils.RedisUtil; -import com.utils.vo.dateLimitUtilVo; -import com.zbkj.crmeb.bargain.model.StoreBargain; -import com.zbkj.crmeb.combination.model.StoreCombination; -import com.zbkj.crmeb.front.request.IndexStoreProductSearchRequest; -import com.zbkj.crmeb.front.response.ProductDetailReplyResponse; -import com.zbkj.crmeb.front.response.ProductReplyResponse; -import com.zbkj.crmeb.seckill.model.StoreSeckill; -import com.zbkj.crmeb.store.dao.StoreProductReplyDao; -import com.zbkj.crmeb.store.model.StoreOrder; -import com.zbkj.crmeb.store.model.StoreProduct; -import com.zbkj.crmeb.store.model.StoreProductReply; -import com.zbkj.crmeb.store.request.StoreProductReplyAddRequest; -import com.zbkj.crmeb.store.request.StoreProductReplySearchRequest; -import com.zbkj.crmeb.store.response.StoreProductReplyResponse; -import com.zbkj.crmeb.store.service.StoreOrderInfoService; -import com.zbkj.crmeb.store.service.StoreOrderService; -import com.zbkj.crmeb.store.service.StoreProductReplyService; -import com.zbkj.crmeb.store.service.StoreProductService; -import com.zbkj.crmeb.store.vo.StoreOrderInfoOldVo; -import com.zbkj.crmeb.system.service.SystemAttachmentService; -import com.zbkj.crmeb.user.model.User; -import com.zbkj.crmeb.user.service.UserService; +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; @@ -98,70 +90,28 @@ public class StoreProductReplyServiceImpl extends ServiceImpl */ @Override public PageInfo getList(StoreProductReplySearchRequest request, PageParamRequest pageParamRequest) { Page pageStoreReply = PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); - //带 StoreProductReply 类的多条件查询 LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - if(null != request.getIsDel()){ - lambdaQueryWrapper.eq(StoreProductReply::getIsDel, request.getIsDel()); - } - if(null != request.getIsReply()){ + lambdaQueryWrapper.eq(StoreProductReply::getIsDel, false); + if (ObjectUtil.isNotNull(request.getIsReply())) { lambdaQueryWrapper.eq(StoreProductReply::getIsReply, request.getIsReply()); } - if(null != request.getOid()){ - lambdaQueryWrapper.eq(StoreProductReply::getOid, request.getOid()); - } - if(!StringUtils.isBlank(request.getProductId())){ - lambdaQueryWrapper.in(StoreProductReply::getProductId, CrmebUtil.stringToArray(request.getProductId())); - } - if(StrUtil.isNotBlank(request.getProductSearch())){ - IndexStoreProductSearchRequest storeProductPram = new IndexStoreProductSearchRequest(); - storeProductPram.setKeywords(request.getProductSearch()); - List storeProducts = storeProductService.getList(storeProductPram, new PageParamRequest()); - List productIds = storeProducts.stream().map(StoreProduct::getId).collect(Collectors.toList()); - if(productIds.size() > 0){ + 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.isBlank(request.getUid())){ - lambdaQueryWrapper.in(StoreProductReply::getUid, CrmebUtil.stringToArray(request.getUid())); - } - if(StringUtils.isNotBlank(request.getNickname())){ + if (StringUtils.isNotBlank(request.getNickname())) { lambdaQueryWrapper.like(StoreProductReply::getNickname,request.getNickname()); } - //评价等级|0=全部,1=好评,2=中评,3=差评 - List typeList = new ArrayList<>(); - switch (request.getType()){ - case 1: - typeList.add(5); - typeList.add(4); - break; - case 2: - typeList.add(3); - break; - case 3: - typeList.add(2); - typeList.add(1); - break; - default: - break; - - } - if(typeList.size() > 0 ){ - lambdaQueryWrapper.in(StoreProductReply::getProductScore, typeList); - } - - if(request.getStar() > 0){ - lambdaQueryWrapper.eq(StoreProductReply::getProductScore, request.getStar()); - } - - if(StringUtils.isNotBlank(request.getDateLimit())){ + if (StringUtils.isNotBlank(request.getDateLimit())) { dateLimitUtilVo dateLimit = DateUtil.getDateLimit(request.getDateLimit()); lambdaQueryWrapper.between(StoreProductReply::getCreateTime, dateLimit.getStartTime(), dateLimit.getEndTime()); } @@ -183,14 +133,13 @@ public class StoreProductReplyServiceImpl extends ServiceImpl 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)){ + if (ObjectUtil.isNull(storeProductReply)) { return 0; } if (storeProductReply.getProductScore() == 0 || storeProductReply.getServiceScore() == 0) { @@ -220,13 +169,13 @@ public class StoreProductReplyServiceImpl extends ServiceImpl { - boolean result = save(storeProductReply); + save(storeProductReply); //修改订单信息 completeOrder(storeProductReply, count, storeOrder); return Boolean.TRUE; @@ -246,7 +195,7 @@ public class StoreProductReplyServiceImpl extends ServiceImpl isReply(String unique, String replayType, Integer orderId) { - LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); - lqw.eq(StoreProductReply::getUnique, unique); - lqw.eq(StoreProductReply::getReplyType, replayType); - lqw.eq(StoreProductReply::getOid, orderId); - return dao.selectList(lqw); - } - /** * 订单是否已回复 * @param unique skuId @@ -291,22 +225,6 @@ public class StoreProductReplyServiceImpl extends ServiceImpl getAllByPidAndType(Integer productId, String type) { - LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); - lqw.eq(StoreProductReply::getProductId, productId); - lqw.eq(StoreProductReply::getReplyType, type); - lqw.eq(StoreProductReply::getIsDel, false); - lqw.orderByDesc(StoreProductReply::getId); - return dao.selectList(lqw); - } - /** * H5商品评论统计 * @param productId 商品编号 @@ -324,7 +242,7 @@ public class StoreProductReplyServiceImpl extends ServiceImpl 0 && goodCount > 0){ + if (sumCount > 0 && goodCount > 0) { replyChance = String.format("%.2f", ((goodCount.doubleValue() / sumCount.doubleValue()))); } // 评分星数(商品评星 + 服务评星)/2 @@ -363,7 +281,7 @@ public class StoreProductReplyServiceImpl extends ServiceImpl 0 && goodCount > 0){ + if (sumCount > 0 && goodCount > 0) { replyChance = String.format("%.2f", ((goodCount.doubleValue() / sumCount.doubleValue()))); } @@ -417,8 +335,7 @@ public class StoreProductReplyServiceImpl extends ServiceImpl typeList = new ArrayList<>(); - switch (type){ + switch (type) { case 1: lqw.apply(" (product_score + service_score) >= 8"); break; @@ -462,6 +379,33 @@ public class StoreProductReplyServiceImpl extends ServiceImpl 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<>(); @@ -473,33 +417,17 @@ public class StoreProductReplyServiceImpl extends ServiceImpl= 8"); -// lqw.in(StoreProductReply::getProductScore, 4, 5); break; case "medium": lqw.apply( " (product_score + service_score) < 8 and (product_score + service_score) > 4"); -// lqw.eq(StoreProductReply::getProductScore, 3); break; case "poor": lqw.apply( " (product_score + service_score) <= 4"); -// lqw.in(StoreProductReply::getProductScore, 2, 1); break; } return dao.selectCount(lqw); } - - private StoreOrder getOrder(StoreProductReply storeProductReply) { - //订单信息 - StoreOrder storeOrder = new StoreOrder(); - storeOrder.setId(storeProductReply.getOid()); - storeOrder.setUid(storeProductReply.getUid()); - storeOrder = storeOrderService.getInfoByEntity(storeOrder); - if(null == storeOrder){ - throw new CrmebException("订单信息不存在"); - } - return storeOrder; - } - /** * 如果所有的都已评价,那么订单完成 * @author Mr.Zhang @@ -509,7 +437,7 @@ public class StoreProductReplyServiceImpl extends ServiceImpl orderInfoVoList = storeOrderInfoService.getOrderListByOrderId(storeProductReply.getOid()); - if(null == orderInfoVoList || orderInfoVoList.size() < 1){ + if (null == orderInfoVoList || orderInfoVoList.size() < 1) { throw new CrmebException("没有找到商品信息"); } @@ -535,23 +463,23 @@ public class StoreProductReplyServiceImpl extends ServiceImpl 0){ + if (replyCount > 0) { throw new CrmebException("该商品已评价"); } @@ -568,10 +496,10 @@ public class StoreProductReplyServiceImpl extends ServiceImpl lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.eq(StoreProductReply::getOid, request.getOid()); // .eq(StoreProductReply::getUnique, request.getUnique()); - if(null != request.getUid()){ + if (null != request.getUid()) { lambdaQueryWrapper.eq(StoreProductReply::getUid, request.getUid()); } - if(!isAll){ + if (!isAll) { lambdaQueryWrapper.eq(StoreProductReply::getProductId, request.getProductId()); } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreProductRuleServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductRuleServiceImpl.java similarity index 78% rename from crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreProductRuleServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductRuleServiceImpl.java index c8a9b1a6..911b8463 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreProductRuleServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductRuleServiceImpl.java @@ -1,15 +1,15 @@ -package com.zbkj.crmeb.store.service.impl; +package com.zbkj.service.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.common.PageParamRequest; -import com.exception.CrmebException; +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.crmeb.store.dao.StoreProductRuleDao; -import com.zbkj.crmeb.store.model.StoreProductRule; -import com.zbkj.crmeb.store.request.StoreProductRuleRequest; -import com.zbkj.crmeb.store.request.StoreProductRuleSearchRequest; -import com.zbkj.crmeb.store.service.StoreProductRuleService; +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; @@ -41,8 +41,6 @@ public class StoreProductRuleServiceImpl extends ServiceImpl */ @Override @@ -74,6 +72,19 @@ public class StoreProductRuleServiceImpl extends ServiceImpl getList(StoreProductSearchRequest request, PageParamRequest pageParamRequest, List productIdList) { - PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - if(request.getIsBest() != null){ - lambdaQueryWrapper.eq(StoreProduct::getIsBest, request.getIsBest()); - } - - if(request.getIsHot() != null){ - lambdaQueryWrapper.eq(StoreProduct::getIsHot, request.getIsHot()); - } - - if(request.getIsNew() != null){ - lambdaQueryWrapper.eq(StoreProduct::getIsNew, request.getIsNew()); - } - - if(request.getIsBenefit() != null){ - lambdaQueryWrapper.eq(StoreProduct::getIsBest, request.getIsBenefit()); - } - - if(null != productIdList && productIdList.size() > 0){ - lambdaQueryWrapper.in(StoreProduct::getId, productIdList); - } - - lambdaQueryWrapper.eq(StoreProduct::getIsDel, false) - .eq(StoreProduct::getMerId, false) - .gt(StoreProduct::getStock, 0) - .eq(StoreProduct::getIsShow, true) - .orderByDesc(StoreProduct::getSort) - .orderByDesc(StoreProduct::getId); - return dao.selectList(lambdaQueryWrapper); - } - - /** - * 列表 - * @param request 请求参数 - * @param pageParamRequest 分页类参数 - * @author Mr.Zhang - * @since 2020-05-27 - * @return List - */ - @Override - public PageInfo getList(StoreProductSearchRequest request, PageParamRequest pageParamRequest) { - Page storeProductPage = PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); - + public PageInfo getAdminList(StoreProductSearchRequest request, PageParamRequest pageParamRequest) { //带 StoreProduct 类的多条件查询 LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); //类型搜索 - switch (request.getType()){ + 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::getIsDel, true); + lambdaQueryWrapper.eq(StoreProduct::getIsRecycle, true); + lambdaQueryWrapper.eq(StoreProduct::getIsDel, false); break; default: break; } //关键字搜索 - if(!StringUtils.isBlank(request.getKeywords())){ + if (StrUtil.isNotBlank(request.getKeywords())) { lambdaQueryWrapper.and(i -> i .or().eq(StoreProduct::getId, request.getKeywords()) .or().like(StoreProduct::getStoreName, request.getKeywords()) - .or().like(StoreProduct::getStoreInfo, request.getKeywords()) - .or().like(StoreProduct::getKeyword, request.getKeywords()) - .or().like(StoreProduct::getBarCode, request.getKeywords())); - } - if(StringUtils.isNotBlank(request.getCateId())){ - lambdaQueryWrapper.apply(CrmebUtil.getFindInSetSql("cate_id", request.getCateId())); + .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); -// List attrs = attrService.getByProductId(product.getId()); StoreProductAttr storeProductAttrPram = new StoreProductAttr(); storeProductAttrPram.setProductId(product.getId()).setType(Constants.PRODUCT_TYPE_NORMAL); List attrs = attrService.getByEntity(storeProductAttrPram); - - if(attrs.size() > 0){ + if (attrs.size() > 0) { storeProductResponse.setAttr(attrs); } List storeProductAttrValueResponse = new ArrayList<>(); @@ -262,7 +202,7 @@ public class StoreProductServiceImpl extends ServiceImpl() .eq(StoreProductDescription::getProductId, product.getId()) .eq(StoreProductDescription::getType, Constants.PRODUCT_TYPE_NORMAL)); - if(null != sd){ + if (null != sd) { storeProductResponse.setContent(null == sd.getDescription()?"":sd.getDescription()); } // 处理分类中文 @@ -290,219 +230,217 @@ public class StoreProductServiceImpl extends ServiceImpl getListInIds(List productIds) { LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.in(StoreProduct::getId,productIds); + lambdaQueryWrapper.eq(StoreProduct::getIsDel, false); return dao.selectList(lambdaQueryWrapper); } - /** - * 根据产品属性查询 - * @param storeProduct 产品参数 - * @return 产品结果 - */ - @Override - public StoreProduct getByEntity(StoreProduct storeProduct) { - LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); - lqw.setEntity(storeProduct); - return dao.selectOne(lqw); - } - /** * 新增产品 - * @param storeProductRequest 新增产品request对象 + * @param request 新增产品request对象 * @return 新增结果 */ @Override - public boolean save(StoreProductRequest storeProductRequest) { + public Boolean save(StoreProductAddRequest request) { // 多规格需要校验规格参数 - if (storeProductRequest.getSpecType()) { - if (CollUtil.isEmpty(storeProductRequest.getAttr())) { - throw new CrmebException("商品属性不能为空"); + if (!request.getSpecType()) { + if (request.getAttrValue().size() > 1) { + throw new CrmebException("单规格商品属性值不能大于1"); } - if (CollUtil.isEmpty(storeProductRequest.getAttrValue())) { - throw new CrmebException("商品属性详情不能为空"); - } - // 校验商品属性详情参数 - checkAttrValue(storeProductRequest.getAttrValue()); } StoreProduct storeProduct = new StoreProduct(); - BeanUtils.copyProperties(storeProductRequest, storeProduct); + BeanUtils.copyProperties(request, storeProduct); + storeProduct.setId(null); storeProduct.setAddTime(DateUtil.getNowTime()); + storeProduct.setIsShow(false); // 设置Acticity活动 - productUtils.setProductActivity(storeProductRequest, storeProduct); + 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(); //计算价格 - productUtils.calcPriceForAttrValues(storeProductRequest, storeProduct); + 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()); - // 商品活动默认值 - storeProduct.setActivity("0, 1, 2, 3"); - - //保存数据 - boolean save = save(storeProduct); - if(storeProductRequest.getSpecType()) { // 多属性 - storeProductRequest.getAttr().forEach(e->{ - e.setProductId(storeProduct.getId()); - e.setAttrValues(StringUtils.strip(e.getAttrValues().replace("\"",""),"[]")); - e.setType(Constants.PRODUCT_TYPE_NORMAL); - }); - boolean attrAddResult = attrService.saveOrUpdateBatch(storeProductRequest.getAttr()); - if (!attrAddResult) throw new CrmebException("新增属性名失败"); - }else{ // 单属性 - StoreProductAttr singleAttr = new StoreProductAttr(); - singleAttr.setProductId(storeProduct.getId()).setAttrName("规格").setAttrValues("默认").setType(Constants.PRODUCT_TYPE_NORMAL); - boolean attrAddResult = attrService.save(singleAttr); - if (!attrAddResult) throw new CrmebException("新增属性名失败"); - StoreProductAttrValue singleAttrValue = new StoreProductAttrValue(); - BigDecimal commissionL1= BigDecimal.ZERO; - BigDecimal commissionL2= BigDecimal.ZERO; - if(storeProductRequest.getAttrValue().size()>0){ - commissionL1 = null != storeProductRequest.getAttrValue().get(0).getBrokerage() ? - storeProductRequest.getAttrValue().get(0).getBrokerage():BigDecimal.ZERO; - commissionL2 = null != storeProductRequest.getAttrValue().get(0).getBrokerageTwo() ? - storeProductRequest.getAttrValue().get(0).getBrokerageTwo():BigDecimal.ZERO; - } - - singleAttrValue.setProductId(storeProduct.getId()).setStock(storeProduct.getStock()).setSuk("默认") - .setSales(storeProduct.getSales()).setPrice(storeProduct.getPrice()) - .setImage(systemAttachmentService.clearPrefix(storeProduct.getImage())) - .setCost(storeProduct.getCost()).setBarCode(storeProduct.getBarCode()) - .setOtPrice(storeProduct.getOtPrice()).setBrokerage(commissionL1).setBrokerageTwo(commissionL2) - .setType(Constants.PRODUCT_TYPE_NORMAL); - boolean saveOrUpdateResult = storeProductAttrValueService.save(singleAttrValue); - if(!saveOrUpdateResult) throw new CrmebException("新增属性详情失败"); + // 默认值设置 + if (ObjectUtil.isNull(request.getSort())) { + storeProduct.setSort(0); } - if (null != storeProductRequest.getAttrValue() && storeProductRequest.getAttrValue().size() > 0) { - // 批量设置attrValues对象的商品id - List storeProductAttrValuesRequest = storeProductRequest.getAttrValue(); - storeProductAttrValuesRequest.forEach(e->{ - e.setProductId(storeProduct.getId()); - }); - List storeProductAttrValues = new ArrayList<>(); - for (StoreProductAttrValueRequest attrValuesRequest : storeProductAttrValuesRequest) { - StoreProductAttrValue spav = new StoreProductAttrValue(); - BeanUtils.copyProperties(attrValuesRequest,spav); - //设置sku字段 - if(null == attrValuesRequest.getAttrValue()){ - break; - } - List skuList = new ArrayList<>(); - for(Map.Entry vo: attrValuesRequest.getAttrValue().entrySet()){ - skuList.add(vo.getValue()); - spav.setSuk(String.join(",",skuList)); - } - spav.setImage(systemAttachmentService.clearPrefix(spav.getImage())); - spav.setAttrValue(JSON.toJSONString(attrValuesRequest.getAttrValue())); - spav.setType(Constants.PRODUCT_TYPE_NORMAL); - storeProductAttrValues.add(spav); - } - // 保存属性 - if(storeProductAttrValues.size() > 0){ - boolean saveOrUpdateResult = storeProductAttrValueService.saveOrUpdateBatch(storeProductAttrValues); - StoreProductAttrResult attrResult = new StoreProductAttrResult( - 0, - storeProduct.getId(), - systemAttachmentService.clearPrefix(JSON.toJSONString(storeProductRequest.getAttrValue())), - DateUtil.getNowTime(),Constants.PRODUCT_TYPE_NORMAL); - storeProductAttrResultService.save(attrResult); - if(!saveOrUpdateResult) throw new CrmebException("新增属性详情失败"); - } + 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( - storeProduct.getId(), storeProductRequest.getContent().length() > 0 - ? systemAttachmentService.clearPrefix(storeProductRequest.getContent()):"",Constants.PRODUCT_TYPE_NORMAL); - storeProductDescriptionService.deleteByProductId(spd.getProductId(),Constants.PRODUCT_TYPE_NORMAL); - storeProductDescriptionService.save(spd); + StoreProductDescription spd = new StoreProductDescription(); + spd.setDescription(request.getContent().length() > 0 ? systemAttachmentService.clearPrefix(request.getContent()) : ""); + spd.setType(Constants.PRODUCT_TYPE_NORMAL); - // 处理优惠券关联信息 - productUtils.shipProductCoupons(storeProductRequest, storeProduct); - return save; + 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; } /** - * 校验商品属性详情参数 - * @param attrValue 商品属性详情 + * 商品sku + * @param attrValue json字符串 + * @return sku */ - private void checkAttrValue(List attrValue) { - for (StoreProductAttrValueRequest attr : attrValue) { - if (CollUtil.isEmpty(attr.getAttrValue())) { - throw new CrmebException("商品属性详情sku不能为空"); - } - if (ObjectUtil.isNull(attr.getStock())) { - throw new CrmebException("商品属性详情库存不能为空"); - } - if (attr.getStock() < 0) { - throw new CrmebException("商品属性详情库存不能小于0"); - } - if (ObjectUtil.isNull(attr.getPrice())) { - throw new CrmebException("商品属性详情金额不能为空"); - } - if (attr.getPrice().compareTo(BigDecimal.ZERO) <= 0) { - throw new CrmebException("商品属性详情金额必须大于0"); - } - if (ObjectUtil.isNull(attr.getCost()) || attr.getCost().compareTo(BigDecimal.ZERO) < 0) { - throw new CrmebException("商品属性详情成本价 不能为空或者小于0"); - } - if (ObjectUtil.isNull(attr.getOtPrice()) || attr.getOtPrice().compareTo(BigDecimal.ZERO) < 0) { - throw new CrmebException("商品属性详情原价 不能为空或者小于0"); - } - if (ObjectUtil.isNull(attr.getWeight()) || attr.getWeight().compareTo(BigDecimal.ZERO) < 0) { - throw new CrmebException("商品属性详情重量 不能为空或者小于0"); - } - if (ObjectUtil.isNull(attr.getVolume()) || attr.getVolume().compareTo(BigDecimal.ZERO) < 0) { - throw new CrmebException("商品属性详情体积 不能为空或者小于0"); - } -// if (ObjectUtil.isNull(attr.getBrokerage()) || attr.getBrokerage().compareTo(BigDecimal.ZERO) < 0) { -// throw new CrmebException("商品属性详情一级返佣 不能为空或者小于0"); -// } -// if (ObjectUtil.isNull(attr.getBrokerageTwo()) || attr.getBrokerageTwo().compareTo(BigDecimal.ZERO) < 0) { -// throw new CrmebException("商品属性详情二级返佣 不能为空或者小于0"); -// } -// if (ObjectUtil.isNull(attr.getType())) { -// throw new CrmebException("商品属性详情活动类型不能为空"); -// } + 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 storeProductRequest 更新产品request对象 + * 商品活动字符串 + * @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(StoreProductRequest storeProductRequest) { - // 多规格需要校验规格参数 - if (storeProductRequest.getSpecType()) { - if (CollUtil.isEmpty(storeProductRequest.getAttr())) { - throw new CrmebException("商品属性不能为空"); + 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"); } - if (CollUtil.isEmpty(storeProductRequest.getAttrValue())) { - throw new CrmebException("商品属性详情不能为空"); - } - // 校验商品属性详情参数 - checkAttrValue(storeProductRequest.getAttrValue()); } 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); - // 设置Acticity活动 - productUtils.setProductActivity(storeProductRequest, storeProduct); - storeProduct.setAddTime(DateUtil.getNowTime()); + // 设置Activity活动 + storeProduct.setActivity(getProductActivityStr(storeProductRequest.getActivity())); //主图 storeProduct.setImage(systemAttachmentService.clearPrefix(storeProduct.getImage())); @@ -510,111 +448,98 @@ public class StoreProductServiceImpl extends ServiceImpl attrValueList = storeProductAttrValueService.getListByProductIdAndAttrId( - storeProduct.getId(), null, Constants.PRODUCT_TYPE_NORMAL); - Map valueMap = CollUtil.newHashMap(); - attrValueList.forEach(e -> { - valueMap.put(e.getSuk(), e.getId()); + 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); + } }); - storeProductAttrValueService.removeByProductId(storeProduct.getId(),Constants.PRODUCT_TYPE_NORMAL); - - // 处理attr - if(storeProductRequest.getSpecType()) {// 多规格 - storeProductRequest.getAttr().forEach(e -> { - e.setProductId(storeProductRequest.getId()); - e.setAttrValues(StringUtils.strip(e.getAttrValues().replace("\"", ""), "[]")); - e.setType(Constants.PRODUCT_TYPE_NORMAL); - }); - attrService.saveOrUpdateBatch(storeProductRequest.getAttr()); - } - - // 处理attrValue - - if(storeProductRequest.getSpecType()) {// 多规格 - storeProductRequest.getAttr().forEach(e->{ - e.setProductId(storeProductRequest.getId()); - e.setAttrValues(StringUtils.strip(e.getAttrValues().replace("\"",""),"[]")); - e.setType(Constants.PRODUCT_TYPE_NORMAL); - }); - attrService.saveOrUpdateBatch(storeProductRequest.getAttr()); - if(null != storeProductRequest.getAttrValue() && storeProductRequest.getAttrValue().size() > 0){ - - List storeProductAttrValuesRequest = storeProductRequest.getAttrValue(); - // 批量设置attrValues对象的商品id - storeProductAttrValuesRequest.forEach(e->e.setProductId(storeProductRequest.getId())); - List storeProductAttrValues = new ArrayList<>(); - for (StoreProductAttrValueRequest attrValuesRequest : storeProductAttrValuesRequest) { - StoreProductAttrValue spav = new StoreProductAttrValue(); - BeanUtils.copyProperties(attrValuesRequest,spav); - //设置sku字段 - if(null != attrValuesRequest.getAttrValue()){ - List skuList = new ArrayList<>(); - for(Map.Entry vo: attrValuesRequest.getAttrValue().entrySet()){ - skuList.add(vo.getValue()); - } - spav.setSuk(String.join(",",skuList)); - } - spav.setAttrValue(JSON.toJSONString(attrValuesRequest.getAttrValue())); - spav.setImage(systemAttachmentService.clearPrefix(spav.getImage())); - spav.setType(Constants.PRODUCT_TYPE_NORMAL); - storeProductAttrValues.add(spav); - } - storeProductAttrValues.forEach(e -> { - if (valueMap.containsKey(e.getSuk())) { - e.setId(valueMap.get(e.getSuk())); - } - }); - - boolean saveOrUpdateResult = storeProductAttrValueService.saveBatch(storeProductAttrValues); - - // attrResult整存整取,不做更新 - storeProductAttrResultService.deleteByProductId(storeProduct.getId(),Constants.PRODUCT_TYPE_NORMAL); - StoreProductAttrResult attrResult = new StoreProductAttrResult( - 0, - storeProduct.getId(), - systemAttachmentService.clearPrefix(JSON.toJSONString(storeProductRequest.getAttrValue())), - DateUtil.getNowTime(),Constants.PRODUCT_TYPE_NORMAL); - storeProductAttrResultService.save(attrResult); - if(!saveOrUpdateResult) throw new CrmebException("编辑属性详情失败"); + // 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); } - }else{ - StoreProductAttr singleAttr = new StoreProductAttr(); - singleAttr.setProductId(storeProduct.getId()).setAttrName("规格").setAttrValues("默认").setType(0); - - boolean attrAddResult = attrService.save(singleAttr); - if (!attrAddResult) throw new CrmebException("新增属性名失败"); - StoreProductAttrValue singleAttrValue = new StoreProductAttrValue(); - if(storeProductRequest.getAttrValue().size() == 0) throw new CrmebException("attrValue不能为空"); - StoreProductAttrValueRequest attrValueRequest = storeProductRequest.getAttrValue().get(0); - BeanUtils.copyProperties(attrValueRequest,singleAttrValue); - singleAttrValue.setProductId(storeProduct.getId()); - singleAttrValue.setSuk("默认"); - singleAttrValue.setImage(systemAttachmentService.clearPrefix(singleAttrValue.getImage())); - singleAttrValue.setType(Constants.PRODUCT_TYPE_NORMAL); - if (valueMap.containsKey(singleAttrValue.getSuk())) { - singleAttrValue.setId(valueMap.get(singleAttrValue.getSuk())); - } - boolean saveOrUpdateResult = storeProductAttrValueService.save(singleAttrValue); - if(!saveOrUpdateResult) throw new CrmebException("新增属性详情失败"); - } + }); // 处理富文本 - StoreProductDescription spd = new StoreProductDescription( - storeProduct.getId(), - storeProductRequest.getContent().length() > 0 - ? systemAttachmentService.clearPrefix(storeProductRequest.getContent()):storeProductRequest.getContent() - ,Constants.PRODUCT_TYPE_NORMAL); - storeProductDescriptionService.deleteByProductId(spd.getProductId(),Constants.PRODUCT_TYPE_NORMAL); - storeProductDescriptionService.save(spd); + StoreProductDescription spd = new StoreProductDescription(); + spd.setDescription(storeProductRequest.getContent().length() > 0 ? systemAttachmentService.clearPrefix(storeProductRequest.getContent()) : ""); + spd.setType(Constants.PRODUCT_TYPE_NORMAL); + spd.setProductId(storeProduct.getId()); - // 处理优惠券关联信息 - productUtils.shipProductCoupons(storeProductRequest, storeProduct); - return saveCount > 0; + 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; } /** @@ -623,9 +548,9 @@ public class StoreProductServiceImpl extends ServiceImpl> attrValues = new ArrayList<>(); - if(storeProduct.getSpecType()){ + 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){ + 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){ + if (null != storeProductAttrValueRequests) { for (int i = 0; i < storeProductAttrValueRequests.size(); i++) { // StoreProductAttrValueRequest storeProductAttrValueRequest = storeProductAttrValueRequests.get(i); HashMap attrValue = new HashMap<>(); @@ -692,18 +617,18 @@ public class StoreProductServiceImpl extends ServiceImpl() .eq(StoreProductDescription::getProductId, storeProduct.getId()) .eq(StoreProductDescription::getType, Constants.PRODUCT_TYPE_NORMAL)); - if(null != sd){ + if (null != sd) { storeProductResponse.setContent(null == sd.getDescription()?"":sd.getDescription()); } // } // 获取已关联的优惠券 List storeProductCoupons = storeProductCouponService.getListByProductId(storeProduct.getId()); - if(null != storeProductCoupons && storeProductCoupons.size() > 0){ + if (null != storeProductCoupons && storeProductCoupons.size() > 0) { List ids = storeProductCoupons.stream().map(StoreProductCoupon::getIssueCouponId).collect(Collectors.toList()); List shipCoupons = storeCouponService.getByIds(ids); storeProductResponse.setCoupons(shipCoupons); @@ -713,76 +638,85 @@ public class StoreProductServiceImpl extends ServiceImpl getList(IndexStoreProductSearchRequest request, PageParamRequest pageParamRequest) { - PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); - LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(); - if(request.getIsBest() != null){ - lambdaQueryWrapper.eq(StoreProduct::getIsBest, request.getIsBest()); + public StoreProductInfoResponse getInfo(Integer id) { + StoreProduct storeProduct = dao.selectById(id); + if (ObjectUtil.isNull(storeProduct)) { + throw new CrmebException("未找到对应商品信息"); } - if(request.getIsHot() != null){ - lambdaQueryWrapper.eq(StoreProduct::getIsHot, request.getIsHot()); + 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()); } - if(request.getIsNew() != null){ - lambdaQueryWrapper.eq(StoreProduct::getIsNew, request.getIsNew()); + // 获取已关联的优惠券 + 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; + } - if(request.getIsBenefit() != null){ - lambdaQueryWrapper.eq(StoreProduct::getIsBenefit, request.getIsBenefit()); + /** + * 商品活动字符列表 + * @param activityStr 商品活动字符串 + * @return 商品活动字符列表 + */ + private List getProductActivityList(String activityStr) { + List activityList = CollUtil.newArrayList(); + if (activityStr.equals("0, 1, 2, 3")) { + 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; } - - lambdaQueryWrapper.eq(StoreProduct::getIsDel, false) - .eq(StoreProduct::getMerId, false) - .gt(StoreProduct::getStock, 0) - .eq(StoreProduct::getIsShow, true); - - if(null != request.getCateId() && request.getCateId().size() > 0 ){ - lambdaQueryWrapper.apply(CrmebUtil.getFindInSetSql("cate_id", (ArrayList) request.getCateId())); - } - - if(StringUtils.isNotBlank(request.getKeywords())){ - if(CrmebUtil.isString2Num(request.getKeywords())){ - Integer productId = Integer.valueOf(request.getKeywords()); - lambdaQueryWrapper.like(StoreProduct::getId, productId); - }else{ - lambdaQueryWrapper - .like(StoreProduct::getStoreName, request.getKeywords()) - .or().like(StoreProduct::getStoreInfo, request.getKeywords()) - .or().like(StoreProduct::getBarCode, request.getKeywords()); + 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); } } - - if (StrUtil.isNotBlank(request.getSalesOrder())) { - if(request.getSalesOrder().equals(Constants.SORT_DESC)){ - lambdaQueryWrapper.last(" order by (sales + ficti) desc, sort desc, id desc"); - }else{ - lambdaQueryWrapper.last(" order by (sales + ficti) asc, sort asc, id asc"); - } - } else { - if(!StringUtils.isBlank(request.getPriceOrder())){ - if(request.getPriceOrder().equals(Constants.SORT_DESC)){ - lambdaQueryWrapper.orderByDesc(StoreProduct::getPrice); - }else{ - lambdaQueryWrapper.orderByAsc(StoreProduct::getPrice); - } - } - - lambdaQueryWrapper.orderByDesc(StoreProduct::getSort); - lambdaQueryWrapper.orderByDesc(StoreProduct::getId); - } - return dao.selectList(lambdaQueryWrapper); + return activityList; } /** * 根据商品tabs获取对应类型的产品数量 - * @return + * @return List */ @Override public List getTabsHeader() { @@ -797,33 +731,38 @@ public class StoreProductServiceImpl extends ServiceImpl lambdaQueryWrapper = new LambdaQueryWrapper<>(); - switch (h.getType()){ + 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.or().eq(StoreProduct::getIsDel, true); + lambdaQueryWrapper.eq(StoreProduct::getIsRecycle, true); + lambdaQueryWrapper.eq(StoreProduct::getIsDel, false); break; default: break; @@ -835,20 +774,6 @@ public class StoreProductServiceImpl extends ServiceImpl lqwuper = new LambdaUpdateWrapper<>(); - lqwuper.set(StoreProduct::getStock, storeProduct.getStock()-num); - lqwuper.set(StoreProduct::getSales, storeProduct.getSales()+num); - lqwuper.eq(StoreProduct::getId, productId); - lqwuper.apply(StrUtil.format(" (stock - {} >= 0) ", num)); - result = update(lqwuper); - if(result){ //判断库存警戒值 - Integer alterNumI=0; - String alterNum = systemConfigService.getValueByKey("store_stock"); - if(StringUtils.isNotBlank(alterNum)) alterNumI = Integer.parseInt(alterNum); - if(alterNumI >= productsInAttrValue.getStock()){ - // todo socket 发送库存警告 - } - } - return result; - } - /** * 根据商品id取出二级分类 * @param productIdStr String 商品分类 @@ -920,14 +813,14 @@ public class StoreProductServiceImpl extends ServiceImpl getSecondaryCategoryByProductId(String productIdStr) { List idList = new ArrayList<>(); - if(StringUtils.isBlank(productIdStr)){ + 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){ + if (productIdList.size() < 1) { return idList; } @@ -939,27 +832,25 @@ public class StoreProductServiceImpl extends ServiceImpl cateIdList = idList.stream().distinct().collect(Collectors.toList()); - if(cateIdList.size() < 1){ + if (cateIdList.size() < 1) { return idList; } //取出所有的二级分类 List categoryList = categoryService.getByIds(cateIdList); - if(categoryList.size() < 1){ + if (categoryList.size() < 1) { return idList; } for (Category category: categoryList) { List parentIdList = CrmebUtil.stringToArrayByRegex(category.getPath(), "/"); - if(parentIdList.size() > 2){ + if (parentIdList.size() > 2) { Integer secondaryCategoryId = parentIdList.get(2); - if(secondaryCategoryId > 0){ + if (secondaryCategoryId > 0) { idList.add(secondaryCategoryId); } } - } - return idList; } @@ -967,13 +858,13 @@ public class StoreProductServiceImpl extends ServiceImpl getRecommendStoreProduct(Integer limit) { - if(limit <0 || limit > 20) throw new CrmebException("获取推荐商品数量不合法 limit > 0 || limit < 20"); - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper(); - lambdaQueryWrapper.eq(StoreProduct::getIsGood,1); - lambdaQueryWrapper.eq(StoreProduct::getIsShow,1); - lambdaQueryWrapper.eq(StoreProduct::getIsDel,false); - - lambdaQueryWrapper.orderByDesc(StoreProduct::getSort).orderByDesc(StoreProduct::getId); - return dao.selectList(lambdaQueryWrapper); - } - /** * * @param productId 商品id * @param type 类型:recycle——回收站 delete——彻底删除 - * @return + * @return Boolean */ @Override - public boolean deleteProduct(Integer productId, String type) { + public Boolean deleteProduct(Integer productId, String type) { StoreProduct product = getById(productId); if (ObjectUtil.isNull(product)) { throw new CrmebException("商品不存在"); @@ -1036,11 +909,11 @@ public class StoreProductServiceImpl extends ServiceImpl 0; + lambdaUpdateWrapper.set(StoreProduct::getIsDel, true); + return update(lambdaUpdateWrapper); } lambdaUpdateWrapper.eq(StoreProduct::getId, productId); - lambdaUpdateWrapper.set(StoreProduct::getIsDel, true); + lambdaUpdateWrapper.set(StoreProduct::getIsRecycle, true); return update(lambdaUpdateWrapper); } @@ -1073,10 +946,10 @@ public class StoreProductServiceImpl extends ServiceImpl lambdaUpdateWrapper = new LambdaUpdateWrapper<>(); lambdaUpdateWrapper.eq(StoreProduct::getId, productId); - lambdaUpdateWrapper.set(StoreProduct::getIsDel, false); + lambdaUpdateWrapper.set(StoreProduct::getIsRecycle, false); return update(lambdaUpdateWrapper); } @@ -1088,7 +961,7 @@ public class StoreProductServiceImpl extends ServiceImpl existAttr = @@ -1096,7 +969,7 @@ public class StoreProductServiceImpl extends ServiceImpl { dao.updateById(storeProduct); storeCartService.productStatusNotEnable(id); + // 商品下架时,清除用户收藏 + storeProductRelationService.deleteByProId(storeProduct.getId()); return Boolean.TRUE; }); @@ -1247,7 +1122,7 @@ public class StoreProductServiceImpl extends ServiceImpl lambdaQueryWrapper = Wrappers.lambdaQuery(); lambdaQueryWrapper.select(StoreProduct::getId, StoreProduct::getImage, StoreProduct::getStoreName, StoreProduct::getPrice, StoreProduct::getOtPrice, StoreProduct::getActivity); - switch (type){ + switch (type) { case Constants.INDEX_RECOMMEND_BANNER: //精品推荐 lambdaQueryWrapper.eq(StoreProduct::getIsBest, true); break; @@ -1266,6 +1141,7 @@ public class StoreProductServiceImpl extends ServiceImpl findH5List(ProductRequest request, PageParamRequest pageRequest) { - PageHelper.startPage(pageRequest.getPage(), pageRequest.getLimit()); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); // id、名称、图片、价格、销量、活动 lqw.select(StoreProduct::getId, StoreProduct::getStoreName, StoreProduct::getImage, StoreProduct::getPrice, - StoreProduct::getActivity, StoreProduct::getSales, StoreProduct::getFicti, StoreProduct::getUnitName); + 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); @@ -1301,27 +1179,27 @@ public class StoreProductServiceImpl extends ServiceImpl) categoryIdList)); } - if(StrUtil.isNotBlank(request.getKeyword())){ - if(CrmebUtil.isString2Num(request.getKeyword())){ + if (StrUtil.isNotBlank(request.getKeyword())) { + if (CrmebUtil.isString2Num(request.getKeyword())) { Integer productId = Integer.valueOf(request.getKeyword()); lqw.like(StoreProduct::getId, productId); - }else{ + } else { lqw.like(StoreProduct::getStoreName, request.getKeyword()); } } // 排序部分 if (StrUtil.isNotBlank(request.getSalesOrder())) { - if(request.getSalesOrder().equals(Constants.SORT_DESC)){ + if (request.getSalesOrder().equals(Constants.SORT_DESC)) { lqw.last(" order by (sales + ficti) desc, sort desc, id desc"); - }else{ + } 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)){ + if (StrUtil.isNotBlank(request.getPriceOrder())) { + if (request.getPriceOrder().equals(Constants.SORT_DESC)) { lqw.orderByDesc(StoreProduct::getPrice); - }else{ + } else { lqw.orderByAsc(StoreProduct::getPrice); } } @@ -1329,6 +1207,7 @@ public class StoreProductServiceImpl extends ServiceImpl() .eq(StoreProductDescription::getProductId, storeProduct.getId()) .eq(StoreProductDescription::getType, Constants.PRODUCT_TYPE_NORMAL)); - if(ObjectUtil.isNotNull(sd)) { + if (ObjectUtil.isNotNull(sd)) { storeProduct.setContent(StrUtil.isBlank(sd.getDescription()) ? "" : sd.getDescription()); } return storeProduct; @@ -1375,17 +1255,106 @@ public class StoreProductServiceImpl extends ServiceImpl 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 findH5ListByProIds(List productIdList) { + public List findAllProductByNotDelte() { LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.select(StoreProduct::getId, StoreProduct::getImage, StoreProduct::getStoreName, StoreProduct::getPrice); - lqw.in(StoreProduct::getId, productIdList); + 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/src/main/java/com/zbkj/crmeb/seckill/service/impl/StoreSeckillMangerServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreSeckillMangerServiceImpl.java similarity index 76% rename from crmeb/src/main/java/com/zbkj/crmeb/seckill/service/impl/StoreSeckillMangerServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreSeckillMangerServiceImpl.java index dae251a9..3c947fd6 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/seckill/service/impl/StoreSeckillMangerServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreSeckillMangerServiceImpl.java @@ -1,21 +1,21 @@ -package com.zbkj.crmeb.seckill.service.impl; +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.StringUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.common.PageParamRequest; -import com.exception.CrmebException; +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.utils.DateUtil; -import com.zbkj.crmeb.seckill.dao.StoreSeckillMangerDao; -import com.zbkj.crmeb.seckill.model.StoreSeckillManger; -import com.zbkj.crmeb.seckill.request.StoreSeckillMangerRequest; -import com.zbkj.crmeb.seckill.request.StoreSeckillMangerSearchRequest; -import com.zbkj.crmeb.seckill.response.StoreSeckillManagerResponse; -import com.zbkj.crmeb.seckill.service.StoreSeckillMangerService; -import com.zbkj.crmeb.system.service.SystemAttachmentService; +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; @@ -51,21 +51,14 @@ public class StoreSeckillMangerServiceImpl extends ServiceImpl */ @Override - public List getList(StoreSeckillManger request, PageParamRequest pageParamRequest) { + public List getList(StoreSeckillMangerSearchRequest request, PageParamRequest pageParamRequest) { PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); //带 StoreSeckillManger 类的多条件查询 LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(); - if(null != request.getId()) lambdaQueryWrapper.eq(StoreSeckillManger::getId, request.getId()); - if(null != request.getIsDel()) lambdaQueryWrapper.eq(StoreSeckillManger::getIsDel, request.getIsDel()); - if(null != request.getEndTime()) lambdaQueryWrapper.le(StoreSeckillManger::getEndTime, request.getEndTime()); - if(null != request.getStartTime()) lambdaQueryWrapper.ge(StoreSeckillManger::getStartTime, request.getStartTime()); - if(null != request.getSort()) lambdaQueryWrapper.eq(StoreSeckillManger::getSort, request.getSort()); if(null != request.getName()) lambdaQueryWrapper.like(StoreSeckillManger::getName, request.getName()); if(null != request.getStatus()) lambdaQueryWrapper.eq(StoreSeckillManger::getStatus, request.getStatus()); @@ -95,8 +88,7 @@ public class StoreSeckillMangerServiceImpl extends ServiceImpl checkTimeRangeUnique(StoreSeckillManger storeSeckillManger) { + private List checkTimeRangeUnique(StoreSeckillManger storeSeckillManger) { LambdaQueryWrapper lqTimeUnique = Wrappers.lambdaQuery(); lqTimeUnique.ge(StoreSeckillManger::getStartTime, storeSeckillManger.getStartTime()); lqTimeUnique.lt(StoreSeckillManger::getStartTime, storeSeckillManger.getEndTime()); @@ -116,14 +108,13 @@ public class StoreSeckillMangerServiceImpl extends ServiceImpl 0; } @@ -179,7 +170,7 @@ public class StoreSeckillMangerServiceImpl extends ServiceImpl @@ -285,5 +257,42 @@ public class StoreSeckillMangerServiceImpl extends ServiceImpl 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/src/main/java/com/zbkj/crmeb/seckill/service/impl/StoreSeckillServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreSeckillServiceImpl.java similarity index 52% rename from crmeb/src/main/java/com/zbkj/crmeb/seckill/service/impl/StoreSeckillServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreSeckillServiceImpl.java index 5279336d..c191921a 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/seckill/service/impl/StoreSeckillServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreSeckillServiceImpl.java @@ -1,55 +1,44 @@ -package com.zbkj.crmeb.seckill.service.impl; +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.parser.Feature; 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.common.CommonPage; -import com.common.PageParamRequest; -import com.constants.Constants; -import com.exception.CrmebException; +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.utils.CrmebUtil; -import com.utils.DateUtil; -import com.utils.RedisUtil; -import com.zbkj.crmeb.front.response.*; -import com.zbkj.crmeb.seckill.dao.StoreSeckillDao; -import com.zbkj.crmeb.seckill.model.StoreSeckill; -import com.zbkj.crmeb.seckill.model.StoreSeckillManger; -import com.zbkj.crmeb.seckill.request.StoreSeckillRequest; -import com.zbkj.crmeb.seckill.request.StoreSeckillSearchRequest; -import com.zbkj.crmeb.seckill.response.StoreSeckillDetailResponse; -import com.zbkj.crmeb.seckill.response.StoreSeckillManagerResponse; -import com.zbkj.crmeb.seckill.response.StoreSeckillResponse; -import com.zbkj.crmeb.seckill.service.StoreSeckillMangerService; -import com.zbkj.crmeb.seckill.service.StoreSeckillService; -import com.zbkj.crmeb.store.model.*; -import com.zbkj.crmeb.store.request.StoreProductAttrValueRequest; -import com.zbkj.crmeb.store.request.StoreProductStockRequest; -import com.zbkj.crmeb.store.response.StoreProductAttrValueResponse; -import com.zbkj.crmeb.store.response.StoreProductResponse; -import com.zbkj.crmeb.store.service.*; -import com.zbkj.crmeb.store.utilService.ProductUtils; -import com.zbkj.crmeb.system.service.SystemAttachmentService; -import com.zbkj.crmeb.task.order.OrderRefundTask; -import com.zbkj.crmeb.user.model.User; -import com.zbkj.crmeb.user.service.UserService; +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.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; @@ -69,6 +58,8 @@ import java.util.stream.Collectors; public class StoreSeckillServiceImpl extends ServiceImpl implements StoreSeckillService { + private static final Logger logger = LoggerFactory.getLogger(StoreSeckillServiceImpl.class); + @Resource private StoreSeckillDao dao; @@ -99,13 +90,14 @@ public class StoreSeckillServiceImpl extends ServiceImpl lambdaQueryWrapper = Wrappers.lambdaQuery(); StoreSeckill model = new StoreSeckill(); BeanUtils.copyProperties(request, model); - if(null != request.getStatus()){ + if (null != request.getStatus()) { lambdaQueryWrapper.eq(StoreSeckill::getStatus,request.getStatus()); } - if(StringUtils.isNotBlank(request.getKeywords())){ + if (StringUtils.isNotBlank(request.getKeywords())) { lambdaQueryWrapper.like(StoreSeckill::getTitle,request.getKeywords()) .or().like(StoreSeckill::getId,request.getKeywords()); } - if(null != request.getTimeId()){ + if (null != request.getTimeId()) { lambdaQueryWrapper.eq(StoreSeckill::getTimeId,request.getTimeId()); } lambdaQueryWrapper.eq(StoreSeckill::getIsDel,false); @@ -140,23 +132,23 @@ public class StoreSeckillServiceImpl extends ServiceImpl currentSeckillManager = storeSeckillMangerService.getCurrentSeckillManager(); Integer currentSkillTimeId = 0; // String currentSkillTime = null; - if(null != currentSeckillManager && currentSeckillManager.size() > 0){ + if (null != currentSeckillManager && currentSeckillManager.size() > 0) { currentSkillTimeId = currentSeckillManager.get(0).getId(); } // 查询所有秒杀配置后根据关系添加到秒杀商品列表中 - List storeSeckillMangerServiceList = - storeSeckillMangerService.getList(new StoreSeckillManger(), new PageParamRequest()); + 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){ + if (attrs.size() > 0) { storeProductResponse.setAttr(attrs); } // 处理富文本 @@ -164,7 +156,7 @@ public class StoreSeckillServiceImpl extends ServiceImpl() .eq(StoreProductDescription::getProductId, product.getId()) .eq(StoreProductDescription::getType, Constants.PRODUCT_TYPE_SECKILL)); - if(null != sd){ + if (null != sd) { storeProductResponse.setContent(null == sd.getDescription()?"":sd.getDescription()); } // 添加秒杀配置关系 @@ -181,6 +173,40 @@ public class StoreSeckillServiceImpl extends ServiceImpl= 0 && dateTime.compareTo(stopDate) <= 0) { + // 开始时间 <= 当前时间 <= 结束时间 + if (seckill.getTimeId().equals(currentSkillTimeId)) { + return "进行中"; + } + return "未开始"; + } + // 当前时间 > 结束时间 + return "已结束"; + } + /** * 逻辑删除 * @@ -200,12 +226,17 @@ public class StoreSeckillServiceImpl extends ServiceImpl { + if ((ObjectUtil.isNull(e.getQuota()) || e.getQuota() <= 0)) { + throw new CrmebException("请正确输入限量"); + } + }); + + if (isExistTile(request.getTitle())) { + throw new CrmebException("活动标题已经存在"); + } - // 当前商品是否已经存在秒杀中 - checkProductInSeamTime(request); StoreSeckill storeSeckill = new StoreSeckill(); BeanUtils.copyProperties(request, storeSeckill); // 主图 @@ -217,90 +248,71 @@ public class StoreSeckillServiceImpl extends ServiceImpl 0){ - request.getAttr().forEach(e->{ - e.setProductId(storeSeckill.getId()); - e.setAttrValues(StringUtils.strip(e.getAttrValues().replace("\"",""),"[]")); - e.setType(Constants.PRODUCT_TYPE_SECKILL); - }); - boolean attrAddResult = attrService.saveBatch(request.getAttr()); - if (!attrAddResult) throw new CrmebException("新增属性名失败"); - } - }else{ // 单属性 - StoreProductAttr singleAttr = new StoreProductAttr(); - singleAttr.setProductId(storeSeckill.getId()).setAttrName("规格").setAttrValues("默认").setType(Constants.PRODUCT_TYPE_SECKILL); - boolean attrAddResult = attrService.save(singleAttr); - if (!attrAddResult) throw new CrmebException("新增属性名失败"); - StoreProductAttrValue singleAttrValue = new StoreProductAttrValue(); - BigDecimal commissionL1= BigDecimal.ZERO; - BigDecimal commissionL2= BigDecimal.ZERO; - if(request.getAttrValue().size()>0){ - commissionL1 = null != request.getAttrValue().get(0).getBrokerage() ? - request.getAttrValue().get(0).getBrokerage():BigDecimal.ZERO; - commissionL2 = null != request.getAttrValue().get(0).getBrokerageTwo() ? - request.getAttrValue().get(0).getBrokerageTwo():BigDecimal.ZERO; - } + 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()); - singleAttrValue.setProductId(storeSeckill.getId()).setStock(storeSeckill.getStock()).setSuk("默认") - .setSales(storeSeckill.getSales()).setPrice(storeSeckill.getPrice()) - .setImage(systemAttachmentService.clearPrefix(storeSeckill.getImage())) - .setCost(storeSeckill.getCost()) -// .setBarCode(storeSeckill.getBarCode()) - .setType(Constants.PRODUCT_TYPE_SECKILL) - .setOtPrice(storeSeckill.getOtPrice()).setBrokerage(commissionL1) - .setBrokerageTwo(commissionL2).setQuota(storeSeckill.getQuota()) - .setQuotaShow(storeSeckill.getQuota()); - boolean saveOrUpdateResult = storeProductAttrValueService.save(singleAttrValue); - if(!saveOrUpdateResult) throw new CrmebException("新增属性详情失败"); - } - if (null != request.getAttrValue() && request.getAttrValue().size() > 0) { - // 批量设置attrValues对象的商品id - List storeSeckillAttrValueRequests = request.getAttrValue(); - storeSeckillAttrValueRequests.forEach(e->{ - e.setProductId(storeSeckill.getId()); - }); - List storeProductAttrValues = new ArrayList<>(); - for (StoreProductAttrValueRequest attrValuesRequest : storeSeckillAttrValueRequests) { - StoreProductAttrValue spav = new StoreProductAttrValue(); - BeanUtils.copyProperties(attrValuesRequest,spav); - //设置sku字段 - if(null == attrValuesRequest.getAttrValue()){ - break; - } - List skuList = new ArrayList<>(); - for(Map.Entry vo: attrValuesRequest.getAttrValue().entrySet()){ - skuList.add(vo.getValue()); - spav.setSuk(String.join(",",skuList)); - } - spav.setImage(systemAttachmentService.clearPrefix(spav.getImage())); - spav.setAttrValue(JSON.toJSONString(attrValuesRequest.getAttrValue())); - spav.setQuotaShow(spav.getQuota()); - spav.setType(Constants.PRODUCT_TYPE_SECKILL); - storeProductAttrValues.add(spav); - } - // 保存属性 - if(storeProductAttrValues.size() > 0){ - boolean saveOrUpdateResult = storeProductAttrValueService.saveBatch(storeProductAttrValues); - StoreProductAttrResult attrResult = new StoreProductAttrResult( - 0, - storeSeckill.getId(), - systemAttachmentService.clearPrefix(JSON.toJSONString(request.getAttrValue())), - DateUtil.getNowTime(),Constants.PRODUCT_TYPE_SECKILL); - storeProductAttrResultService.save(attrResult); - if(!saveOrUpdateResult) throw new CrmebException("新增属性详情失败"); - } - } // 处理富文本 - StoreProductDescription spd = new StoreProductDescription( - storeSeckill.getId(), request.getContent().length() > 0 - ? systemAttachmentService.clearPrefix(request.getContent()):"",Constants.PRODUCT_TYPE_SECKILL); - storeProductDescriptionService.deleteByProductId(spd.getProductId(),Constants.PRODUCT_TYPE_SECKILL); - storeProductDescriptionService.save(spd); - return save; + 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); } /** @@ -310,84 +322,111 @@ public class StoreSeckillServiceImpl extends ServiceImpl{ - e.setProductId(request.getId()); - e.setAttrValues(StringUtils.strip(e.getAttrValues().replace("\"",""),"[]")); - e.setType(Constants.PRODUCT_TYPE_SECKILL); - }); - attrService.saveBatch(request.getAttr()); - if(null != request.getAttrValue() && request.getAttrValue().size() > 0){ - List storeProductAttrValuesRequest = request.getAttrValue(); - // 批量设置attrValues对象的商品id - storeProductAttrValuesRequest.forEach(e->e.setProductId(request.getId())); - List storeProductAttrValues = new ArrayList<>(); - for (StoreProductAttrValueRequest attrValuesRequest : storeProductAttrValuesRequest) { - StoreProductAttrValue spav = new StoreProductAttrValue(); - BeanUtils.copyProperties(attrValuesRequest,spav); - //设置sku字段 - if(null != attrValuesRequest.getAttrValue()){ - List skuList = new ArrayList<>(); - for(Map.Entry vo: attrValuesRequest.getAttrValue().entrySet()){ - skuList.add(vo.getValue()); - } - spav.setSuk(String.join(",",skuList)); - } - String attrValue = null; - if(null != attrValuesRequest.getAttrValue() && attrValuesRequest.getAttrValue().size() > 0){ - attrValue = JSON.toJSONString(attrValuesRequest.getAttrValue()); - } - spav.setAttrValue(attrValue); - spav.setImage(systemAttachmentService.clearPrefix(spav.getImage())); - spav.setType(Constants.PRODUCT_TYPE_SECKILL); - spav.setQuotaShow(spav.getQuota()); - storeProductAttrValues.add(spav); - } - boolean saveOrUpdateResult = storeProductAttrValueService.saveBatch(storeProductAttrValues); - // attrResult整存整取,不做更新 - storeProductAttrResultService.deleteByProductId(storeProduct.getId(),Constants.PRODUCT_TYPE_SECKILL); - StoreProductAttrResult attrResult = new StoreProductAttrResult( - 0, - storeProduct.getId(), - systemAttachmentService.clearPrefix(JSON.toJSONString(request.getAttrValue())), - DateUtil.getNowTime(),Constants.PRODUCT_TYPE_SECKILL); - storeProductAttrResultService.save(attrResult); - if(!saveOrUpdateResult) throw new CrmebException("编辑属性详情失败"); + public Boolean updateSeckill(StoreSeckillAddRequest request) { + StoreSeckill storeSeckill = getById(request.getId()); + if (ObjectUtil.isNull(storeSeckill) || storeSeckill.getIsDel()) { + throw new CrmebException("秒杀商品不存在"); } - // 处理富文本 - StoreProductDescription spd = new StoreProductDescription( - storeProduct.getId(), - request.getContent().length() > 0 - ? systemAttachmentService.clearPrefix(request.getContent()):"", - Constants.PRODUCT_TYPE_SECKILL); - storeProductDescriptionService.deleteByProductId(storeProduct.getId(),Constants.PRODUCT_TYPE_SECKILL); - storeProductDescriptionService.save(spd); + if (storeSeckill.getStatus().equals(1)) { + throw new CrmebException("请先关闭秒杀商品,再修改商品信息"); + } - return saveCount > 0; + + 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; } /** @@ -423,8 +462,6 @@ public class StoreSeckillServiceImpl extends ServiceImpl() @@ -451,42 +487,46 @@ public class StoreSeckillServiceImpl extends ServiceImpl attrList = attrService.getByEntity(spaPram); + List attrList = attrService.getListByProductIdAndType(skillId, Constants.PRODUCT_TYPE_SECKILL); // 根据制式设置attr属性 - List skuAttr = getSkuAttr(attrList); - productDetailResponse.setProductAttr(skuAttr); + productDetailResponse.setProductAttr(attrList); // 根据制式设置sku属性 HashMap skuMap = CollUtil.newHashMap(); // 获取主商品sku - StoreProductAttrValue spavPram = new StoreProductAttrValue(); - spavPram.setProductId(storeSeckill.getProductId()).setType(Constants.PRODUCT_TYPE_NORMAL); - List storeProductAttrValues = storeProductAttrValueService.getByEntity(spavPram); + List storeProductAttrValues = storeProductAttrValueService.getListByProductIdAndType(storeSeckill.getProductId(), Constants.PRODUCT_TYPE_NORMAL); // 获取秒杀商品sku - StoreProductAttrValue spavPram1 = new StoreProductAttrValue(); - spavPram1.setProductId(storeSeckill.getId()).setType(Constants.PRODUCT_TYPE_SECKILL); - List seckillAttrValues = storeProductAttrValueService.getByEntity(spavPram1); + 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 -> { - return productAttrValue.getSuk().equals(e.getSuk()); - }).collect(Collectors.toList()); + List valueList = seckillAttrValues.stream().filter(e -> productAttrValue.getSuk().equals(e.getSuk())).collect(Collectors.toList()); if (CollUtil.isEmpty(valueList)) { BeanUtils.copyProperties(productAttrValue, atr); } else { @@ -498,65 +538,53 @@ public class StoreSeckillServiceImpl extends ServiceImpl 0); - }else{ + } 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 attrList 秒杀规格列表 - * @return List - */ - private List getSkuAttr(List attrList) { - List attrResponseList = new ArrayList<>(); - for (StoreProductAttr attr : attrList) { - ProductAttrResponse attrResponse = new ProductAttrResponse(); - attrResponse.setProductId(attr.getProductId()); - attrResponse.setAttrName(attr.getAttrName()); - attrResponse.setType(attr.getType()); - List attrValues = new ArrayList<>(); - String trimAttr = attr.getAttrValues() - .replace("[","") - .replace("]",""); - if(attr.getAttrValues().contains(",")){ - attrValues = Arrays.asList(trimAttr.split(",")); - }else{ - attrValues.add(trimAttr); - } - attrResponse.setAttrValues(attrValues); - attrResponseList.add(attrResponse); - } - return attrResponseList; - } - /** * 获取秒杀状态 * @param storeSeckill 秒杀商品 * @return 秒杀状态 */ - private Integer getSeckillStatus(StoreSeckill storeSeckill) { - if(storeSeckill.getStatus() == 1 && DateUtil.nowDateTime().compareTo(storeSeckill.getStartTime()) < 0){ - // 即将开始 - return 1; - } - else if(storeSeckill.getStatus() == 0) { + private Integer getSeckillStatus(StoreSeckill storeSeckill, StoreSeckillManger seckillManger) { + if (storeSeckill.getStatus() == 0) { // 关闭 return 0; } - else if(storeSeckill.getStatus() == 1 && DateUtil.nowDateTime().compareTo(storeSeckill.getStartTime())>0 - && DateUtil.nowDateTime().compareTo(storeSeckill.getStopTime()) < 0) { - // 进行中 - return 2; - } - else if(storeSeckill.getStatus() == 1 && DateUtil.nowDateTime().compareTo(storeSeckill.getStopTime()) >= 0){ - // 已结束 - return -1; + 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; } @@ -567,67 +595,55 @@ public class StoreSeckillServiceImpl extends ServiceImpl attrList = attrService.getListByProductIdAndType(skillId, Constants.PRODUCT_TYPE_SECKILL); + infoResponse.setAttr(attrList); // 注意:数据瓶装步骤:分别查询秒杀和商品本山信息组装sku信息之后,再对比sku属性是否相等来赋值是否秒杀sku信息 - StoreProductAttrValue spavPramSkill = new StoreProductAttrValue(); - spavPramSkill.setProductId(skillId).setType(Constants.PRODUCT_TYPE_SECKILL); - List storeProductAttrValuesSkill = storeProductAttrValueService.getByEntity(spavPramSkill); - List> attrValuesSkill = genratorSkuInfo(skillId,storeProduct, storeProductAttrValuesSkill, Constants.PRODUCT_TYPE_SECKILL); + List seckillAttrValueList = storeProductAttrValueService.getListByProductIdAndType(skillId, Constants.PRODUCT_TYPE_SECKILL); + // 查询主商品sku + List attrValueList = storeProductAttrValueService.getListByProductIdAndType(storeSeckill.getProductId(), Constants.PRODUCT_TYPE_NORMAL); - // 查询attrValue - StoreProductAttrValue spavPramProduct = new StoreProductAttrValue(); - spavPramProduct.setProductId(storeProduct.getProductId()).setType(Constants.PRODUCT_TYPE_NORMAL); - List storeProductAttrValuesProduct = storeProductAttrValueService.getByEntity(spavPramProduct); - List> attrValuesProduct = genratorSkuInfo(storeProduct.getProductId(),storeProduct, storeProductAttrValuesProduct, Constants.PRODUCT_TYPE_NORMAL); - - // H5 端用于生成skuList - List sPAVResponses = new ArrayList<>(); - - for (StoreProductAttrValue storeProductAttrValue : storeProductAttrValuesSkill) { - StoreProductAttrValueResponse atr = new StoreProductAttrValueResponse(); - BeanUtils.copyProperties(storeProductAttrValue,atr); - // 单规格秒杀限量数据处理 - atr.setQuota(storeProductResponse.getQuota()); - sPAVResponses.add(atr); - } - - for (int k = 0; k < attrValuesProduct.size(); k++) { - for (int i = 0; i < attrValuesSkill.size(); i++) { - HashMap skill = attrValuesSkill.get(i); - HashMap product = attrValuesProduct.get(k); - product.put("checked", false); - product.put("quota", product.get("stock")); - product.put("price", product.get("price")); - if(skill.get("suk").equals(product.get("suk"))){ - product.put("checked", true); - product.put("quota", skill.get("quota")); - product.put("price",skill.get("price")); + 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); - storeProductResponse.setAttrValues(attrValuesProduct); - storeProductResponse.setAttrValue(sPAVResponses); - StoreProductDescription sd = storeProductDescriptionService.getOne( - new LambdaQueryWrapper() - .eq(StoreProductDescription::getProductId, skillId) - .eq(StoreProductDescription::getType, Constants.PRODUCT_TYPE_SECKILL)); - if(null != sd){ - storeProductResponse.setContent(null == sd.getDescription()?"":sd.getDescription()); + StoreProductDescription sd = storeProductDescriptionService.getByProductIdAndType(skillId, Constants.PRODUCT_TYPE_SECKILL); + if (ObjectUtil.isNotNull(sd)) { + infoResponse.setContent(ObjectUtil.isNull(sd.getDescription()) ? "" : sd.getDescription()); } - return storeProductResponse; + return infoResponse; } /** @@ -649,7 +665,7 @@ public class StoreSeckillServiceImpl extends ServiceImpl getByEntity(StoreSeckill storeSeckill) { - LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.setEntity(storeSeckill); - return dao.selectList(lqw); - } - /** * 根据商品id查询正在秒杀的商品信息 * @@ -734,11 +737,10 @@ public class StoreSeckillServiceImpl extends ServiceImpl storeSeckillManagerResponses = - storeSeckillMangerService.getList(new StoreSeckillManger(), pageParamRequest); + List storeSeckillManagerResponses = storeSeckillMangerService.getAllList(); List currentSsmr = storeSeckillManagerResponses.stream().filter(e -> e.getKillStatus() == 2).collect(Collectors.toList()); - if(currentSsmr.size() == 0){ + if (currentSsmr.size() == 0) { return result; } List skillManagerIds = currentSsmr.stream().map(StoreSeckillManagerResponse::getId).collect(Collectors.toList()); @@ -746,24 +748,12 @@ public class StoreSeckillServiceImpl extends ServiceImpl 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; } - - /** - * 库存变动写入redis队列 - * @param request StoreProductStockRequest 参数对象 - * @return Boolean - */ - @Override - public Boolean stockAddRedis(StoreProductStockRequest request) { - String _productString = JSON.toJSONString(request); - redisUtil.lPush(Constants.PRODUCT_SECKILL_STOCK_UPDATE, _productString); - return true; - } - /** * 后台任务批量操作库存 */ @@ -772,23 +762,23 @@ public class StoreSeckillServiceImpl extends ServiceImpl existAttr = @@ -920,7 +910,7 @@ public class StoreSeckillServiceImpl extends ServiceImpl lqw = Wrappers.lambdaQuery(); - lqw.eq(StoreSeckill::getTimeId,request.getTimeId()) - .eq(StoreSeckill::getProductId,request.getProductId()) - .eq(StoreSeckill::getIsDel,false) - .eq(StoreSeckill::getTimeId, request.getTimeId()); - List seckills = dao.selectList(lqw); - if(null != seckills && seckills.size() == 1 && null != request.getId() && request.getId().equals(seckills.get(0).getId())){ // 排除更新秒杀操作 - return; - } - if(null != seckills && seckills.size() >= 1) throw new CrmebException("当前商品已经存在"+seckills.get(0).getTitle()+"的秒杀中"); - } - - /** - * 根据配置生成sku配置信息 - * @param productId 商品id - * @param storeProduct 秒杀商品信息 - * @param storeProductAttrValues 属性信息 - * @param productType 秒杀和正常数据 - * @return sku信息 - */ - private List> genratorSkuInfo(int productId,StoreSeckill storeProduct, - List storeProductAttrValues, - int productType) { - List> attrValues = new ArrayList<>(); - if(storeProduct.getSpecType()){ - - StoreProductAttrResult sparPram = new StoreProductAttrResult(); - sparPram.setProductId(productId).setType(productType); - 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++) { - 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.parse(storeProductAttrValues.get(i).getAttrValue(), Feature.OrderedField)); - attrValue.put("brokerage", currentAttrValue.getBrokerage()); - attrValue.put("brokerageTwo", currentAttrValue.getBrokerageTwo()); - attrValue.put("quota", currentAttrValue.getQuota()); - String[] skus = currentSku.split(","); - for (int k = 0; k < skus.length; k++) { - attrValue.put("value"+k,skus[k]); - } - attrValues.add(attrValue); - } - - } - } - return attrValues; - } - - // 过滤AttrValue数据中checked=false的数据 - private void clearNotCheckedAndValidationPrice(StoreSeckillRequest request){ - if(request.getSpecType()){ - request.setAttrValue(request.getAttrValue().stream().filter(StoreProductAttrValueRequest::getChecked).collect(Collectors.toList())); - } - for (StoreProductAttrValueRequest attr : request.getAttrValue()) { - if((null == attr.getPrice() || attr.getPrice().compareTo(BigDecimal.ZERO) <= 0) - || (null == attr.getQuota() || attr.getQuota() <= 0)){ - throw new CrmebException("请正确输入 秒杀价格和限量"); - } - } - } } 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 00000000..12361437 --- /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~2020 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/src/main/java/com/zbkj/crmeb/system/service/impl/SystemAttachmentServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemAttachmentServiceImpl.java similarity index 54% rename from crmeb/src/main/java/com/zbkj/crmeb/system/service/impl/SystemAttachmentServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemAttachmentServiceImpl.java index 03bf8dc9..ff518266 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/service/impl/SystemAttachmentServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemAttachmentServiceImpl.java @@ -1,20 +1,22 @@ -package com.zbkj.crmeb.system.service.impl; +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.common.PageParamRequest; -import com.constants.Constants; +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.crmeb.system.dao.SystemAttachmentDao; -import com.zbkj.crmeb.system.model.SystemAttachment; -import com.zbkj.crmeb.system.service.SystemAttachmentService; -import com.zbkj.crmeb.system.service.SystemConfigService; -import com.zbkj.crmeb.upload.service.AsyncService; -import com.zbkj.crmeb.upload.vo.FileResultVo; +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 org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.List; @@ -38,76 +40,13 @@ public class SystemAttachmentServiceImpl extends ServiceImpl asyncList = getAsyncList(); - if(asyncList.size() < 1){ - //没有需要处理的数据 - return; - } - - asyncService.async(asyncList); - } - - /** - * 查询本地文件,同步到云服务 - * @author Mr.Zhang - * @since 2020-05-08 - */ - private List getAsyncList() { - PageHelper.startPage(Constants.DEFAULT_PAGE, Constants.DEFAULT_LIMIT); - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(SystemAttachment::getImageType, 1); - lambdaQueryWrapper.isNotNull(SystemAttachment::getAttDir); - lambdaQueryWrapper.orderByDesc(SystemAttachment::getAttId); - return dao.selectList(lambdaQueryWrapper); - } - /** * 同步到云服务, 更新图片上传类型 * @param attId Integer 主键id * @param type int 图片上传类型 1本地 2七牛云 3OSS 4COS - * @author Mr.Zhang - * @since 2020-05-08 */ @Override public void updateCloudType(Integer attId, int type) { @@ -124,10 +63,13 @@ public class SystemAttachmentServiceImpl extends ServiceImpl */ @Override - public List getList(Integer pid, PageParamRequest pageParamRequest) { + 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); } @@ -140,7 +82,7 @@ public class SystemAttachmentServiceImpl extends ServiceImpl getByEntity(SystemAttachment systemAttachment) { - LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); - lqw.setEntity(systemAttachment); - return dao.selectList(lqw); + 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/src/main/java/com/zbkj/crmeb/system/service/impl/SystemCityAsyncServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemCityAsyncServiceImpl.java similarity index 85% rename from crmeb/src/main/java/com/zbkj/crmeb/system/service/impl/SystemCityAsyncServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemCityAsyncServiceImpl.java index da185ea8..de9b93ed 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/service/impl/SystemCityAsyncServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemCityAsyncServiceImpl.java @@ -1,13 +1,14 @@ -package com.zbkj.crmeb.system.service.impl; +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.constants.Constants; -import com.utils.RedisUtil; -import com.zbkj.crmeb.system.dao.SystemCityDao; -import com.zbkj.crmeb.system.model.SystemCity; -import com.zbkj.crmeb.system.service.SystemCityAsyncService; -import com.zbkj.crmeb.system.vo.SystemCityTreeVo; +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; @@ -40,12 +41,8 @@ public class SystemCityAsyncServiceImpl extends ServiceImpl treeList = new ArrayList<>(); LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.select(SystemCity::getCityId, SystemCity::getParentId, SystemCity::getName); + lambdaQueryWrapper.select(SystemCity::getId, SystemCity::getCityId, SystemCity::getParentId, SystemCity::getName); lambdaQueryWrapper.eq(SystemCity::getIsShow, true); List allTree = dao.selectList(lambdaQueryWrapper); - - if (allTree == null) { + if (CollUtil.isEmpty(allTree)) { return; } @@ -66,16 +62,12 @@ public class SystemCityAsyncServiceImpl extends ServiceImpl map = new HashMap<>(); //cityId 为 key 存储到map 中 for (SystemCityTreeVo systemCityTreeVo1 : treeList) { map.put(systemCityTreeVo1.getCityId(), systemCityTreeVo1); } - - List list = new ArrayList<>(); for (SystemCityTreeVo tree : treeList) { //子集ID返回对象,有则添加。 @@ -91,9 +83,6 @@ public class SystemCityAsyncServiceImpl extends ServiceImpl lambdaQueryWrapper = new LambdaQueryWrapper<>(); @@ -107,9 +96,6 @@ public class SystemCityAsyncServiceImpl extends ServiceImpl */ @Override public Object getList(SystemCitySearchRequest request) { - if(redisUtil.hmGet(Constants.CITY_LIST, request.getParentId().toString()) == null){ - asyncRedis(request.getParentId()); - } Object list = redisUtil.hmGet(Constants.CITY_LIST, request.getParentId().toString()); - if(null == list){ + if (ObjectUtil.isNull(list)) { //城市数据,异步同步到redis,第一次拿不到数据,去数据库读取 list = getList(request.getParentId()); } - return list; } @@ -80,49 +77,45 @@ public class SystemCityServiceImpl extends ServiceImpl getListTree() { + List cityList = redisUtil.get(Constants.CITY_LIST_TREE); + if (CollUtil.isEmpty(cityList)) { systemCityAsyncService.setListTree(); } return redisUtil.get(Constants.CITY_LIST_TREE); @@ -130,15 +123,13 @@ public class SystemCityServiceImpl extends ServiceImpl */ @Override public List getCityIdList() { Object data = redisUtil.get(Constants.CITY_LIST_LEVEL_1); List collect; - if(data == null || data.equals("")){ + if (data == null || data.equals("")) { LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.select(SystemCity::getCityId); lambdaQueryWrapper.eq(SystemCity::getLevel, 1); @@ -146,7 +137,7 @@ public class SystemCityServiceImpl extends ServiceImpl 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{ + } else { collect = (List) data; } @@ -155,8 +146,6 @@ public class SystemCityServiceImpl extends ServiceImpl systemCityLambdaQueryWrapper = Wrappers.lambdaQuery(); systemCityLambdaQueryWrapper .eq(SystemCity::getName,cityName) - .eq(SystemCity::getIsShow,1); + .eq(SystemCity::getIsShow,1) + .eq(SystemCity::getLevel, 1); return getOne(systemCityLambdaQueryWrapper); } } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/service/impl/SystemConfigServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemConfigServiceImpl.java similarity index 74% rename from crmeb/src/main/java/com/zbkj/crmeb/system/service/impl/SystemConfigServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemConfigServiceImpl.java index d4f31896..5541734b 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/service/impl/SystemConfigServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemConfigServiceImpl.java @@ -1,21 +1,25 @@ -package com.zbkj.crmeb.system.service.impl; +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.common.PageParamRequest; -import com.constants.Constants; -import com.exception.CrmebException; -import com.github.pagehelper.PageHelper; -import com.utils.RedisUtil; -import com.zbkj.crmeb.express.vo.ExpressSheetVo; -import com.zbkj.crmeb.system.dao.SystemConfigDao; -import com.zbkj.crmeb.system.model.SystemConfig; -import com.zbkj.crmeb.system.request.SystemFormCheckRequest; -import com.zbkj.crmeb.system.request.SystemFormItemCheckRequest; -import com.zbkj.crmeb.system.service.SystemAttachmentService; -import com.zbkj.crmeb.system.service.SystemConfigService; -import com.zbkj.crmeb.system.service.SystemFormTempService; -import org.apache.commons.lang3.StringUtils; +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; @@ -53,39 +57,14 @@ public class SystemConfigServiceImpl extends ServiceImpl - */ - @Override - public List getList(PageParamRequest pageParamRequest) { - PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.select( - SystemConfig::getId, - SystemConfig::getTitle, - SystemConfig::getName, - SystemConfig::getValue, - SystemConfig::getStatus - - ); - lambdaQueryWrapper.eq(SystemConfig::getStatus, false); - return dao.selectList(lambdaQueryWrapper); - } - /** * 根据menu name 获取 value * @param name menu name - * @author Mr.Zhang - * @since 2020-04-16 * @return String */ @Override @@ -111,14 +90,12 @@ public class SystemConfigServiceImpl extends ServiceImpl lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.eq(SystemConfig::getFormId, formId).eq(SystemConfig::getStatus, false); @@ -196,7 +168,7 @@ public class SystemConfigServiceImpl extends ServiceImpl lambdaQueryWrapper = new LambdaQueryWrapper<>(); //删除已经隐藏的数据 lambdaQueryWrapper.eq(SystemConfig::getFormId, formId).eq(SystemConfig::getStatus, true); @@ -213,20 +185,20 @@ public class SystemConfigServiceImpl extends ServiceImpl lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.eq(SystemConfig::getName, name); List systemConfigs = dao.selectList(lambdaQueryWrapper); - if(systemConfigs.size() >= 2){ + if (systemConfigs.size() >= 2) { throw new CrmebException("配置名称存在多个请检查配置 eb_system_config 重复数据:"+name+"条数:"+systemConfigs.size()); - }else if(systemConfigs.size() == 1){ + } else if (systemConfigs.size() == 1) { systemConfigs.get(0).setValue(value); updateById(systemConfigs.get(0)); asyncRedis(name); return true; - }else { + } else { save(new SystemConfig().setName(name).setValue(value)); asyncRedis(name); return true; @@ -237,18 +209,15 @@ public class SystemConfigServiceImpl extends ServiceImpl */ @Override - public HashMap info(Integer formId){ + public HashMap info(Integer formId) { LambdaQueryWrapper lambdaQueryWrapper1 = new LambdaQueryWrapper<>(); -// lambdaQueryWrapper1.eq(SystemConfig::getStatus, false).eq(SystemConfig::getFormId, formId); lambdaQueryWrapper1.eq(SystemConfig::getFormId, formId); List systemConfigList = dao.selectList(lambdaQueryWrapper1); - if(systemConfigList.size() < 1){ - return null; + if (ObjectUtil.isNull(systemConfigList)) { + return CollUtil.newHashMap(); } HashMap map = new HashMap<>(); for (SystemConfig systemConfig : systemConfigList) { @@ -261,14 +230,24 @@ public class SystemConfigServiceImpl extends ServiceImpl getListByKey(String key) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(SystemConfig::getName, key); + return dao.selectList(lqw); } /** @@ -288,6 +267,33 @@ public class SystemConfigServiceImpl extends ServiceImpl 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 @@ -295,11 +301,11 @@ public class SystemConfigServiceImpl extends ServiceImpl lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.eq(SystemConfig::getName, name); List systemConfigList = dao.selectList(lambdaQueryWrapper); - if(systemConfigList.size() == 0){ + if (systemConfigList.size() == 0) { //说明数据已经被删除了 deleteRedis(name); return; @@ -311,15 +317,12 @@ public class SystemConfigServiceImpl extends ServiceImpl 需要同步的数据 - * @author Mr.Zhang - * @since 2020-04-16 */ - private void async(List systemConfigList){ - if (!asyncConfig) { + private void async(List systemConfigList) { + if (!crmebConfig.isAsyncConfig()) { //如果配置没有开启 return; } - for (SystemConfig systemConfig : systemConfigList) { redisUtil.hmSet(redisKey, systemConfig.getName(), systemConfig.getValue()); } @@ -331,8 +334,8 @@ public class SystemConfigServiceImpl extends ServiceImpl lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.eq(SystemConfig::getStatus, false).eq(SystemConfig::getName, name); SystemConfig systemConfig = dao.selectOne(lambdaQueryWrapper); - if(null == systemConfig || StringUtils.isBlank(systemConfig.getValue())){ - return null; + if (ObjectUtil.isNull(systemConfig) || StrUtil.isBlank(systemConfig.getValue())) { + return ""; } - return systemConfig.getValue(); - } setRedisByVoList(); Object data = redisUtil.hmGet(redisKey, name); - if(null == data || StringUtils.isBlank(data.toString())){ + if (ObjectUtil.isNull(data) || StrUtil.isBlank(data.toString())) { //没有找到数据 - return null; + return ""; } - //去数据库查找,然后写入redis return data.toString(); } /** * 把数据同步到redis, 此方法适用于redis为空的时候进行一次批量输入 - * @author Mr.Zhang - * @since 2020-04-16 */ - private void setRedisByVoList(){ + private void setRedisByVoList() { //检测redis是否为空 Long size = redisUtil.getHashSize(redisKey); - if(size > 0 || !asyncConfig){ + if (size > 0 || !crmebConfig.isAsyncConfig()) { return; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/service/impl/SystemFormTempServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemFormTempServiceImpl.java similarity index 67% rename from crmeb/src/main/java/com/zbkj/crmeb/system/service/impl/SystemFormTempServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemFormTempServiceImpl.java index 99e5975a..d5800957 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/service/impl/SystemFormTempServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemFormTempServiceImpl.java @@ -1,22 +1,20 @@ -package com.zbkj.crmeb.system.service.impl; +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.common.PageParamRequest; -import com.exception.CrmebException; +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.utils.ValidateFormUtil; -import com.zbkj.crmeb.system.dao.SystemFormTempDao; -import com.zbkj.crmeb.system.model.SystemFormTemp; -import com.zbkj.crmeb.system.request.SystemFormCheckRequest; -import com.zbkj.crmeb.system.request.SystemFormItemCheckRequest; -import com.zbkj.crmeb.system.request.SystemFormTempSearchRequest; -import com.zbkj.crmeb.system.service.SystemFormTempService; -import com.zbkj.crmeb.system.vo.SystemConfigFormItemConfigRegListVo; -import com.zbkj.crmeb.system.vo.SystemConfigFormItemVo; -import com.zbkj.crmeb.system.vo.SystemConfigFormVo; +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; @@ -41,13 +39,10 @@ public class SystemFormTempServiceImpl extends ServiceImpl */ @Override @@ -56,7 +51,7 @@ public class SystemFormTempServiceImpl extends ServiceImpl lambdaQueryWrapper = new LambdaQueryWrapper<>(); - if(!StringUtils.isBlank(request.getKeywords())){ + if(!StringUtils.isBlank(request.getKeywords())) { lambdaQueryWrapper.eq(SystemFormTemp::getId, request.getKeywords()). or().like(SystemFormTemp::getName, request.getKeywords()). or().like(SystemFormTemp::getInfo, request.getKeywords()); @@ -68,11 +63,9 @@ public class SystemFormTempServiceImpl extends ServiceImpl val 的map格式 HashMap map = new HashMap<>(); for (SystemFormItemCheckRequest systemFormItemCheckRequest : systemFormCheckRequest.getFields()) { @@ -82,31 +75,63 @@ public class SystemFormTempServiceImpl extends ServiceImpl regList, String value, String name){ - if(regList.size() > 0){ + private void checkRule(List regList, String value, String name) { + if(regList.size() > 0) { for (SystemConfigFormItemConfigRegListVo systemConfigFormItemConfigRegListVo : regList) { - if(!ValidateFormUtil.regular(value, name, systemConfigFormItemConfigRegListVo.getPattern())){ + if(!ValidateFormUtil.regular(value, name, systemConfigFormItemConfigRegListVo.getPattern())) { throw new CrmebException(systemConfigFormItemConfigRegListVo.getMessage()); } } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/service/impl/SystemGroupDataServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemGroupDataServiceImpl.java similarity index 79% rename from crmeb/src/main/java/com/zbkj/crmeb/system/service/impl/SystemGroupDataServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemGroupDataServiceImpl.java index 75250a10..d41f5b9d 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/service/impl/SystemGroupDataServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemGroupDataServiceImpl.java @@ -1,20 +1,22 @@ -package com.zbkj.crmeb.system.service.impl; +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.common.PageParamRequest; -import com.constants.SysGroupDataConstants; +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.utils.CrmebUtil; -import com.zbkj.crmeb.system.dao.SystemGroupDataDao; -import com.zbkj.crmeb.system.model.SystemGroupData; -import com.zbkj.crmeb.system.request.SystemFormItemCheckRequest; -import com.zbkj.crmeb.system.request.SystemGroupDataRequest; -import com.zbkj.crmeb.system.request.SystemGroupDataSearchRequest; -import com.zbkj.crmeb.system.service.SystemAttachmentService; -import com.zbkj.crmeb.system.service.SystemFormTempService; -import com.zbkj.crmeb.system.service.SystemGroupDataService; +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; @@ -52,8 +54,6 @@ public class SystemGroupDataServiceImpl extends ServiceImpl */ @Override @@ -72,12 +72,10 @@ public class SystemGroupDataServiceImpl extends ServiceImpl */ @Override @@ -135,14 +126,14 @@ public class SystemGroupDataServiceImpl extends ServiceImpl list = getList(systemGroupDataSearchRequest, new PageParamRequest()); List arrayList = new ArrayList<>(); - if(list.size() < 1){ + 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){ + if (systemFormItemCheckRequestList.size() < 1) { continue; } HashMap map = new HashMap<>(); @@ -173,14 +164,14 @@ public class SystemGroupDataServiceImpl extends ServiceImpl list = getList(systemGroupDataSearchRequest, new PageParamRequest()); List> arrayList = new ArrayList<>(); - if(list.size() < 1){ + 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){ + if (systemFormItemCheckRequestList.size() < 1) { continue; } HashMap map = new HashMap<>(); @@ -198,19 +189,17 @@ public class SystemGroupDataServiceImpl extends ServiceImpl> + * @return */ - public T getNormalInfo(Integer groupDataId, Class cls){ + public T getNormalInfo(Integer groupDataId, Class cls) { SystemGroupData systemGroupData = getById(groupDataId); - if(null == systemGroupData || !systemGroupData.getStatus()){ + 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){ + if (systemFormItemCheckRequestList.size() < 1) { return null; } HashMap map = new HashMap<>(); @@ -236,5 +225,34 @@ public class SystemGroupDataServiceImpl extends ServiceImpl 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/src/main/java/com/zbkj/crmeb/system/service/impl/SystemGroupServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemGroupServiceImpl.java similarity index 52% rename from crmeb/src/main/java/com/zbkj/crmeb/system/service/impl/SystemGroupServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemGroupServiceImpl.java index 2700ac9e..0f4bfd67 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/service/impl/SystemGroupServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemGroupServiceImpl.java @@ -1,14 +1,18 @@ -package com.zbkj.crmeb.system.service.impl; +package com.zbkj.service.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.common.PageParamRequest; +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.crmeb.system.dao.SystemGroupDao; -import com.zbkj.crmeb.system.model.SystemGroup; -import com.zbkj.crmeb.system.request.SystemGroupSearchRequest; -import com.zbkj.crmeb.system.service.SystemGroupService; +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; @@ -32,13 +36,13 @@ public class SystemGroupServiceImpl extends ServiceImpl */ @Override @@ -54,5 +58,43 @@ public class SystemGroupServiceImpl extends ServiceImpl + * +---------------------------------------------------------------------- + */ +@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 (request.getMenuType().equals("C") && StrUtil.isEmpty(request.getComponent())) { + throw new CrmebException("菜单类型的组件路径不能为空"); + } + if (request.getMenuType().equals("A") && 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 (systemMenu.getMenuType().equals("A")) { + 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 (request.getMenuType().equals("C") && StrUtil.isEmpty(request.getComponent())) { + throw new CrmebException("菜单类型的组件路径不能为空"); + } + if (request.getMenuType().equals("A") && 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 00000000..42b4009b --- /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~2020 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 (request.getDetailType().equals("wechat")) { + if (notification.getIsWechat().equals(0)) { + throw new CrmebException("请先配置公众号模板消息"); + } + TemplateMessage templateMessage = templateMessageService.info(notification.getWechatId()); + BeanUtils.copyProperties(templateMessage, response); + response.setStatus(notification.getIsWechat()); + } + if (request.getDetailType().equals("routine")) { + if (notification.getIsRoutine().equals(0)) { + throw new CrmebException("请先配置小程序订阅消息"); + } + TemplateMessage templateMessage = templateMessageService.info(notification.getRoutineId()); + BeanUtils.copyProperties(templateMessage, response); + response.setStatus(notification.getIsRoutine()); + } + if (request.getDetailType().equals("sms")) { + 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 (!request.getDetailType().equals("sms") && StrUtil.isEmpty(request.getTempId())) { + throw new CrmebException("模板id不能为空"); + } + SystemNotification notification = getByIdException(request.getId()); + if (request.getDetailType().equals("wechat")) { + 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 (request.getDetailType().equals("routine")) { + 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 (request.getDetailType().equals("sms") && !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 00000000..afaa9c5a --- /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~2020 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 00000000..a9fd7f67 --- /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~2020 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/src/main/java/com/zbkj/crmeb/system/service/impl/SystemStoreServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemStoreServiceImpl.java similarity index 77% rename from crmeb/src/main/java/com/zbkj/crmeb/system/service/impl/SystemStoreServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemStoreServiceImpl.java index a91da2e0..281db30e 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/service/impl/SystemStoreServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemStoreServiceImpl.java @@ -1,22 +1,22 @@ -package com.zbkj.crmeb.system.service.impl; +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.common.PageParamRequest; -import com.constants.Constants; -import com.exception.CrmebException; +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.utils.CrmebUtil; -import com.zbkj.crmeb.front.request.StoreNearRequest; -import com.zbkj.crmeb.front.response.StoreNearResponse; -import com.zbkj.crmeb.system.dao.SystemStoreDao; -import com.zbkj.crmeb.system.model.SystemStore; -import com.zbkj.crmeb.system.request.SystemStoreRequest; -import com.zbkj.crmeb.system.service.SystemAttachmentService; -import com.zbkj.crmeb.system.service.SystemConfigService; -import com.zbkj.crmeb.system.service.SystemStoreService; -import com.zbkj.crmeb.system.vo.SystemStoreNearVo; +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; @@ -58,22 +58,19 @@ public class SystemStoreServiceImpl extends ServiceImpl getList(String keywords, int status, PageParamRequest pageParamRequest) { + public List getList(String keywords, Integer status, PageParamRequest pageParamRequest) { PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - if(status == 1){ // 显示中 + if (status == 1) { // 显示中 lambdaQueryWrapper.eq(SystemStore::getIsShow, true).eq(SystemStore::getIsDel, false); - }else if(status == 2){ // 回收站中 + }else if (status == 2) { // 回收站中 lambdaQueryWrapper.eq(SystemStore::getIsDel, true); - }else{ // 隐藏中的 + } else { // 隐藏中的 lambdaQueryWrapper.eq(SystemStore::getIsShow, false).eq(SystemStore::getIsDel, false); } - if(!StringUtils.isBlank(keywords)){ + if (!StringUtils.isBlank(keywords)) { lambdaQueryWrapper.and(i -> i.or().like(SystemStore::getName, keywords) - .or().like(SystemStore::getIntroduction, keywords) - .or().like(SystemStore::getPhone, keywords) - .or().like(SystemStore::getAddress, keywords) - .or().like(SystemStore::getDetailedAddress, keywords)); + .or().like(SystemStore::getPhone, keywords)); } lambdaQueryWrapper.orderByDesc(SystemStore::getUpdateTime).orderByDesc(SystemStore::getId); return dao.selectList(lambdaQueryWrapper); @@ -98,12 +95,16 @@ public class SystemStoreServiceImpl extends ServiceImpl getCount() { HashMap map = new HashMap<>(); - map.put("show", getCountByStatus(1)); - map.put("hide", getCountByStatus(0)); - map.put("recycle", getCountByStatus(2)); + map.put("show", getCountByStatus(1));// 显示中 + map.put("hide", getCountByStatus(0));// 隐藏 + map.put("recycle", getCountByStatus(2));// 回收站 return map; } @@ -137,11 +138,11 @@ public class SystemStoreServiceImpl extends ServiceImpl */ - private Integer getCountByStatus(int status) { + private Integer getCountByStatus(Integer status) { LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - if(status == 2){ + if (status == 2) { lambdaQueryWrapper.eq(SystemStore::getIsDel, true); - }else{ + } else { lambdaQueryWrapper.eq(SystemStore::getIsShow, status).eq(SystemStore::getIsDel, false); } lambdaQueryWrapper.orderByDesc(SystemStore::getUpdateTime).orderByDesc(SystemStore::getId); @@ -154,15 +155,15 @@ public class SystemStoreServiceImpl extends ServiceImpl */ @Override - public HashMap getMapInId(List storeIdList){ + public HashMap getMapInId(List storeIdList) { HashMap map = new HashMap<>(); - if(storeIdList.size() < 1){ + if (storeIdList.size() < 1) { return map; } LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.in(SystemStore::getId, storeIdList); List systemStoreList = dao.selectList(lambdaQueryWrapper); - if(systemStoreList.size() < 1){ + if (systemStoreList.size() < 1) { return map; } for (SystemStore systemStore : systemStoreList) { @@ -186,9 +187,9 @@ public class SystemStoreServiceImpl extends ServiceImpl storeNearVoArrayList = new ArrayList<>(); - if(StringUtils.isNotBlank(request.getLatitude()) && StringUtils.isNotBlank(request.getLongitude())){ + if (StringUtils.isNotBlank(request.getLatitude()) && StringUtils.isNotBlank(request.getLongitude())) { storeNearVoArrayList = dao.getNearList(request); - }else{ + } else { List list = getList(null, 1, pageParamRequest); for (SystemStore systemStore : list) { SystemStoreNearVo systemStoreNearVo = new SystemStoreNearVo(); @@ -258,6 +259,21 @@ public class SystemStoreServiceImpl extends ServiceImpl list = CrmebUtil.stringToArrayStr(systemStore.getLatitude()); systemStore.setLatitude(list.get(0)); systemStore.setLongitude(list.get(1)); diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/service/impl/SystemStoreStaffServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemStoreStaffServiceImpl.java similarity index 64% rename from crmeb/src/main/java/com/zbkj/crmeb/system/service/impl/SystemStoreStaffServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemStoreStaffServiceImpl.java index a130ce58..41b590bd 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/service/impl/SystemStoreStaffServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemStoreStaffServiceImpl.java @@ -1,24 +1,26 @@ -package com.zbkj.crmeb.system.service.impl; +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.common.CommonPage; -import com.common.PageParamRequest; -import com.constants.Constants; -import com.exception.CrmebException; +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.crmeb.system.dao.SystemStoreStaffDao; -import com.zbkj.crmeb.system.model.SystemStore; -import com.zbkj.crmeb.system.model.SystemStoreStaff; -import com.zbkj.crmeb.system.request.SystemStoreStaffRequest; -import com.zbkj.crmeb.system.response.SystemStoreStaffResponse; -import com.zbkj.crmeb.system.service.SystemStoreService; -import com.zbkj.crmeb.system.service.SystemStoreStaffService; -import com.zbkj.crmeb.user.model.User; -import com.zbkj.crmeb.user.service.UserService; +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; @@ -52,94 +54,58 @@ public class SystemStoreStaffServiceImpl extends ServiceImpl */ @Override public PageInfo getList(Integer storeId, PageParamRequest pageParamRequest) { Page systemStorePage = PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - if(storeId > 0){ + if (storeId > 0) { lambdaQueryWrapper.eq(SystemStoreStaff::getStoreId, storeId); } ArrayList systemStoreStaffResponseArrayList = new ArrayList<>(); List systemStoreStaffList = dao.selectList(lambdaQueryWrapper); - if(systemStoreStaffList.size() < 1){ + if (CollUtil.isEmpty(systemStoreStaffList)) { return new PageInfo<>(); } //用户信息 List userIdList = systemStoreStaffList.stream().map(SystemStoreStaff::getUid).collect(Collectors.toList()); HashMap userList = null; - if(userIdList.size() >= 1){ + 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){ + if (storeIdList.size() >= 1) { storeList = systemStoreService.getMapInId(storeIdList); } - for (SystemStoreStaff systemStoreStaff : systemStoreStaffList) { SystemStoreStaffResponse systemStoreStaffResponse = new SystemStoreStaffResponse(); BeanUtils.copyProperties(systemStoreStaff, systemStoreStaffResponse); - - if(null != userList && userList.containsKey(systemStoreStaff.getUid())){ + if (CollUtil.isNotEmpty(userList) && userList.containsKey(systemStoreStaff.getUid())) { systemStoreStaffResponse.setUser(userList.get(systemStoreStaff.getUid())); } - - if(null != storeList && storeList.containsKey(systemStoreStaff.getStoreId())){ + if (CollUtil.isNotEmpty(storeList) && storeList.containsKey(systemStoreStaff.getStoreId())) { systemStoreStaffResponse.setSystemStore(storeList.get(systemStoreStaff.getStoreId())); } - systemStoreStaffResponseArrayList.add(systemStoreStaffResponse); } - return CommonPage.copyPageInfo(systemStorePage, systemStoreStaffResponseArrayList); } /** - * 根据id集合查询数据,返回 map - * @param clerkIdList List id集合 - * @author Mr.Zhang - * @since 2020-04-17 - * @return HashMap + * 查询核销员列表 + * @param userIds uidList + * @return storeList */ - @Override - public HashMap getMapInId(List clerkIdList){ - HashMap map = new HashMap<>(); - if(clerkIdList.size() < 1){ - return map; - } - LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(); - lambdaQueryWrapper.in(SystemStoreStaff::getId, clerkIdList); - List systemStoreStaffList = dao.selectList(lambdaQueryWrapper); - if(systemStoreStaffList.size() < 1){ - return map; - } - for (SystemStoreStaff systemStoreStaff : systemStoreStaffList) { - map.put(systemStoreStaff.getId(), systemStoreStaff); - } - return map; - } - - /** - * 根据用户id获取核销信息 - * - * @param userIds 用户id集合 - * @return 核销人员id集合 - */ - @Override - public List getByAdminUserIds(List userIds) { + private List getByAdminUserIds(List userIds) { LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(); lambdaQueryWrapper.in(SystemStoreStaff::getUid, userIds); List existStaffs = dao.selectList(lambdaQueryWrapper); @@ -153,14 +119,46 @@ public class SystemStoreStaffServiceImpl extends ServiceImpl userIds = new ArrayList<>(); userIds.add(request.getUid()); List existStaffs = getByAdminUserIds(userIds); - if(null != existStaffs && existStaffs.size() > 0) throw new CrmebException(Constants.RESULT_VERIFICATION_USER_EXIST); + 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/src/main/java/com/zbkj/crmeb/system/service/impl/SystemUserLevelServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemUserLevelServiceImpl.java similarity index 61% rename from crmeb/src/main/java/com/zbkj/crmeb/system/service/impl/SystemUserLevelServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemUserLevelServiceImpl.java index 9be487f4..49dea565 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/service/impl/SystemUserLevelServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SystemUserLevelServiceImpl.java @@ -1,22 +1,22 @@ -package com.zbkj.crmeb.system.service.impl; +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.common.PageParamRequest; -import com.exception.CrmebException; -import com.github.pagehelper.PageHelper; -import com.zbkj.crmeb.system.dao.SystemUserLevelDao; -import com.zbkj.crmeb.system.model.SystemUserLevel; -import com.zbkj.crmeb.system.request.SystemUserLevelRequest; -import com.zbkj.crmeb.system.request.SystemUserLevelSearchRequest; -import com.zbkj.crmeb.system.service.SystemAttachmentService; -import com.zbkj.crmeb.system.service.SystemUserLevelService; -import org.apache.commons.lang3.StringUtils; +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; @@ -41,28 +41,21 @@ public class SystemUserLevelServiceImpl extends ServiceImpl */ @Override - public List getList(SystemUserLevelSearchRequest request, PageParamRequest pageParamRequest) { - PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); + public List getList() { LambdaQueryWrapper levelLambdaQueryWrapper = new LambdaQueryWrapper<>(); - if(!StringUtils.isBlank(request.getName())){ - levelLambdaQueryWrapper.like(SystemUserLevel::getName, request.getName()); - } - - if(request.getIsShow() != null){ - levelLambdaQueryWrapper.eq(SystemUserLevel::getIsShow, request.getIsShow()); - } - levelLambdaQueryWrapper.eq(SystemUserLevel::getIsDel, false); levelLambdaQueryWrapper.orderByAsc(SystemUserLevel::getGrade); return dao.selectList(levelLambdaQueryWrapper); @@ -76,11 +69,11 @@ public class SystemUserLevelServiceImpl extends ServiceImpl { + dao.updateById(systemUserLevel); + // 删除对应的用户等级数据 + userLevelService.deleteByLevelId(id); + // 清除对应的用户等级 + userService.removeLevelByLevelId(id); + return Boolean.TRUE; + }); } @Override @@ -194,5 +186,67 @@ public class SystemUserLevelServiceImpl extends ServiceImpl { + 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 00000000..5ed05cfc --- /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~2020 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 00000000..fd4b3ee2 --- /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~2020 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(cloudVo.getRegion().equals("huabei")){ + cfg = new Configuration(Region.huabei()); + } + if(cloudVo.getRegion().equals("huanan")){ + cfg = new Configuration(Region.huanan()); + } + if(cloudVo.getRegion().equals("beimei")){ + cfg = new Configuration(Region.beimei()); + } + if(cloudVo.getRegion().equals("dongnanya")){ + 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 (!fileIsSave.equals("1")) { + // 删除本地文件 + 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 (fileIsSave.equals("1")) { + 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(cloudVo.getRegion().equals("huabei")){ + cfg = new Configuration(Region.huabei()); + } + if(cloudVo.getRegion().equals("huanan")){ + cfg = new Configuration(Region.huanan()); + } + if(cloudVo.getRegion().equals("beimei")){ + cfg = new Configuration(Region.beimei()); + } + if(cloudVo.getRegion().equals("dongnanya")){ + 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/src/main/java/com/zbkj/crmeb/user/service/impl/UserAddressServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserAddressServiceImpl.java similarity index 81% rename from crmeb/src/main/java/com/zbkj/crmeb/user/service/impl/UserAddressServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserAddressServiceImpl.java index 029edaac..6b933cff 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/service/impl/UserAddressServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserAddressServiceImpl.java @@ -1,19 +1,19 @@ -package com.zbkj.crmeb.user.service.impl; +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.common.PageParamRequest; -import com.exception.CrmebException; +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.crmeb.front.request.UserAddressRequest; -import com.zbkj.crmeb.system.model.SystemCity; -import com.zbkj.crmeb.system.service.SystemCityService; -import com.zbkj.crmeb.user.dao.UserAddressDao; -import com.zbkj.crmeb.user.model.UserAddress; -import com.zbkj.crmeb.user.service.UserAddressService; -import com.zbkj.crmeb.user.service.UserService; +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; @@ -64,18 +64,6 @@ public class UserAddressServiceImpl extends ServiceImpl lq = Wrappers.lambdaQuery(); - lq.setEntity(address); - return dao.selectOne(lq); - } - /** * 创建地址 * @param request UserAddressRequest 参数 @@ -89,25 +77,23 @@ public class UserAddressServiceImpl extends ServiceImpl 0 && StringUtils.isNotBlank(request.getAddress().getCity())){ - checkCity(userAddress.getCityId()); - //} - if(request.getAddress().getCityId() > 0 && StringUtils.isNotBlank(request.getAddress().getCity())){ + if (request.getAddress().getCityId() > 0 && StringUtils.isNotBlank(request.getAddress().getCity())) { checkCity(userAddress.getCityId()); } userAddress.setUid(userService.getUserIdException()); - if(userAddress.getIsDefault()){ + if (userAddress.getIsDefault()) { //把当前用户其他默认地址取消 cancelDefault(userAddress.getUid()); } @@ -121,7 +107,7 @@ public class UserAddressServiceImpl extends ServiceImpl lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.eq(UserAddress::getId, id); @@ -200,10 +186,10 @@ public class UserAddressServiceImpl extends ServiceImpl + * +---------------------------------------------------------------------- + */ +@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 (request.getSort().equals("asc")) { + 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 (request.getLinkId().equals("gt")) { + 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/src/main/java/com/zbkj/crmeb/user/service/impl/UserBrokerageRecordServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserBrokerageRecordServiceImpl.java similarity index 72% rename from crmeb/src/main/java/com/zbkj/crmeb/user/service/impl/UserBrokerageRecordServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserBrokerageRecordServiceImpl.java index dd3bb148..022053ed 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/service/impl/UserBrokerageRecordServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserBrokerageRecordServiceImpl.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.user.service.impl; +package com.zbkj.service.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; @@ -6,22 +6,24 @@ 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.common.CommonPage; -import com.common.PageParamRequest; -import com.constants.BrokerageRecordConstants; -import com.constants.Constants; +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.utils.ArrayUtil; -import com.utils.DateUtil; -import com.utils.vo.dateLimitUtilVo; -import com.zbkj.crmeb.front.response.SpreadCommissionDetailResponse; -import com.zbkj.crmeb.user.dao.UserBrokerageRecordDao; -import com.zbkj.crmeb.user.model.User; -import com.zbkj.crmeb.user.model.UserBrokerageRecord; -import com.zbkj.crmeb.user.service.UserBrokerageRecordService; -import com.zbkj.crmeb.user.service.UserService; +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; @@ -109,6 +111,7 @@ public class UserBrokerageRecordServiceImpl extends ServiceImpl { @@ -191,7 +194,7 @@ public class UserBrokerageRecordServiceImpl extends ServiceImpl findSpreadListByUid(Integer uid, PageParamRequest pageParamRequest) { @@ -204,6 +207,37 @@ public class UserBrokerageRecordServiceImpl extends ServiceImpl 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 @@ -233,13 +267,12 @@ public class UserBrokerageRecordServiceImpl extends ServiceImpl getBrokerageTopByDate(String type, PageParamRequest pageParamRequest) { + public List getBrokerageTopByDate(String type) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.select("uid", "sum(price)AS price"); + 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); @@ -311,28 +344,6 @@ public class UserBrokerageRecordServiceImpl extends ServiceImpl getFundsMonitorDetail(Integer uid, String dateLimit, PageParamRequest pageParamRequest) { - Page page = 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.in(UserBrokerageRecord::getStatus, BrokerageRecordConstants.BROKERAGE_RECORD_STATUS_COMPLETE, BrokerageRecordConstants.BROKERAGE_RECORD_STATUS_WITHDRAW); - if (StrUtil.isNotBlank(dateLimit)) { - dateLimitUtilVo utilVo = DateUtil.getDateLimit(dateLimit); - lqw.between(UserBrokerageRecord::getUpdateTime, utilVo.getStartTime(), utilVo.getEndTime()); - } - lqw.orderByDesc(UserBrokerageRecord::getUpdateTime); - List recordList = dao.selectList(lqw); - return CommonPage.copyPageInfo(page, recordList); - } - /** * 获取冻结期佣金 * @param uid uid @@ -353,25 +364,87 @@ public class UserBrokerageRecordServiceImpl extends ServiceImpl findListByLinkIdsAndLinkTypeAndUid(List linkIds, String linkType, Integer uid, PageParamRequest pageParamRequest) { + public PageInfo getAdminList(BrokerageRecordRequest request, PageParamRequest pageParamRequest) { Page page = PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); - lqw.in(UserBrokerageRecord::getLinkId, linkIds); - lqw.eq(UserBrokerageRecord::getLinkType, linkType); - lqw.eq(UserBrokerageRecord::getStatus, BrokerageRecordConstants.BROKERAGE_RECORD_STATUS_COMPLETE); - lqw.eq(UserBrokerageRecord::getUid, uid); - lqw.eq(UserBrokerageRecord::getType, BrokerageRecordConstants.BROKERAGE_RECORD_TYPE_ADD); - lqw.orderByDesc(UserBrokerageRecord::getUpdateTime); + 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"); 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 00000000..3c1323c8 --- /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 00000000..2ba2457e --- /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~2020 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/src/main/java/com/zbkj/crmeb/finance/service/impl/UserExtractServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserExtractServiceImpl.java similarity index 73% rename from crmeb/src/main/java/com/zbkj/crmeb/finance/service/impl/UserExtractServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserExtractServiceImpl.java index 6d34176d..275dee7a 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/finance/service/impl/UserExtractServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserExtractServiceImpl.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.finance.service.impl; +package com.zbkj.service.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollectionUtil; @@ -8,33 +8,26 @@ 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.common.CommonPage; -import com.common.PageParamRequest; -import com.constants.BrokerageRecordConstants; -import com.constants.Constants; -import com.exception.CrmebException; +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.utils.DateUtil; -import com.utils.vo.dateLimitUtilVo; -import com.zbkj.crmeb.finance.dao.UserExtractDao; -import com.zbkj.crmeb.finance.model.UserExtract; -import com.zbkj.crmeb.finance.request.UserExtractRequest; -import com.zbkj.crmeb.finance.request.UserExtractSearchRequest; -import com.zbkj.crmeb.finance.response.BalanceResponse; -import com.zbkj.crmeb.finance.response.UserExtractResponse; -import com.zbkj.crmeb.finance.service.UserExtractService; -import com.zbkj.crmeb.front.response.UserExtractRecordResponse; -import com.zbkj.crmeb.system.service.SystemAttachmentService; -import com.zbkj.crmeb.system.service.SystemConfigService; -import com.zbkj.crmeb.user.model.User; -import com.zbkj.crmeb.user.model.UserBrokerageRecord; -import com.zbkj.crmeb.user.service.UserBillService; -import com.zbkj.crmeb.user.service.UserBrokerageRecordService; -import com.zbkj.crmeb.user.service.UserService; -import com.zbkj.crmeb.wechat.service.impl.WechatSendMessageForMinService; -import com.zbkj.crmeb.wechat.vo.WechatSendMessageForCash; +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; @@ -72,15 +65,9 @@ public class UserExtractServiceImpl extends ServiceImpl lambdaQueryWrapper = new LambdaQueryWrapper<>(); - if(!StringUtils.isBlank(request.getKeywords())){ + if (!StringUtils.isBlank(request.getKeywords())) { lambdaQueryWrapper.and(i -> i. or().like(UserExtract::getWechat, request.getKeywords()). //微信号 or().like(UserExtract::getRealName, request.getKeywords()). //名称 @@ -117,17 +104,17 @@ public class UserExtractServiceImpl extends ServiceImpl lqw = Wrappers.lambdaQuery(); - if(null != userId) { + if (null != userId) { lqw.eq(UserExtract::getUid,userId); } lqw.eq(UserExtract::getStatus,status); - if(StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)){ + 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)) { + if (CollUtil.isNotEmpty(userExtracts)) { sum = userExtracts.stream().map(UserExtract::getExtractPrice).reduce(ZERO, BigDecimal::add); } return sum; @@ -310,7 +226,7 @@ public class UserExtractServiceImpl extends ServiceImpl getListByUserIds(List userIds) { - LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); - lqw.in(UserExtract::getUid, userIds); - return dao.selectList(lqw); - } - /** * 提现审核 * @@ -343,7 +247,7 @@ public class UserExtractServiceImpl extends ServiceImpl getExtractRecord(Integer userId, PageParamRequest pageParamRequest){ + public PageInfo getExtractRecord(Integer userId, PageParamRequest pageParamRequest) { Page userExtractPage = PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("uid", userId); @@ -418,7 +324,7 @@ public class UserExtractServiceImpl extends ServiceImpl list = dao.selectList(queryWrapper); - if(CollUtil.isEmpty(list)){ + if (CollUtil.isEmpty(list)) { return new PageInfo<>(); } ArrayList userExtractRecordResponseList = CollectionUtil.newArrayList(); @@ -441,18 +347,18 @@ public class UserExtractServiceImpl extends ServiceImpl 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 00000000..9844139b --- /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~2020 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/src/main/java/com/zbkj/crmeb/user/service/impl/UserGroupServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserGroupServiceImpl.java similarity index 67% rename from crmeb/src/main/java/com/zbkj/crmeb/user/service/impl/UserGroupServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserGroupServiceImpl.java index 10446254..d2d6cfe1 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/service/impl/UserGroupServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserGroupServiceImpl.java @@ -1,13 +1,15 @@ -package com.zbkj.crmeb.user.service.impl; +package com.zbkj.service.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.common.PageParamRequest; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.request.UserGroupRequest; import com.github.pagehelper.PageHelper; -import com.utils.CrmebUtil; -import com.zbkj.crmeb.user.dao.UserGroupDao; -import com.zbkj.crmeb.user.model.UserGroup; -import com.zbkj.crmeb.user.service.UserGroupService; +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; @@ -32,12 +34,9 @@ public class UserGroupServiceImpl extends ServiceImpl i @Resource private UserGroupDao dao; - /** * 列表 * @param pageParamRequest 分页类参数 - * @author Mr.Zhang - * @since 2020-04-28 * @return List */ @Override @@ -49,8 +48,6 @@ public class UserGroupServiceImpl extends ServiceImpl i /** * 根据id in,返回字符串拼接 * @param groupIdValue String 分组id - * @author Mr.Zhang - * @since 2020-06-05 * @return List */ @Override @@ -65,5 +62,29 @@ public class UserGroupServiceImpl extends ServiceImpl i 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/src/main/java/com/zbkj/crmeb/user/service/impl/UserIntegralRecordServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserIntegralRecordServiceImpl.java similarity index 90% rename from crmeb/src/main/java/com/zbkj/crmeb/user/service/impl/UserIntegralRecordServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserIntegralRecordServiceImpl.java index 468672c1..54ba1af4 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/service/impl/UserIntegralRecordServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserIntegralRecordServiceImpl.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.user.service.impl; +package com.zbkj.service.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; @@ -7,23 +7,23 @@ 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.common.CommonPage; -import com.common.PageParamRequest; -import com.constants.Constants; -import com.constants.IntegralRecordConstants; -import com.exception.CrmebException; +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.utils.DateUtil; -import com.utils.vo.dateLimitUtilVo; -import com.zbkj.crmeb.user.dao.UserIntegralRecordDao; -import com.zbkj.crmeb.user.model.User; -import com.zbkj.crmeb.user.model.UserIntegralRecord; -import com.zbkj.crmeb.user.request.AdminIntegralSearchRequest; -import com.zbkj.crmeb.user.response.UserIntegralRecordResponse; -import com.zbkj.crmeb.user.service.UserIntegralRecordService; -import com.zbkj.crmeb.user.service.UserService; +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; @@ -110,6 +110,7 @@ public class UserIntegralRecordServiceImpl extends ServiceImpl { @@ -143,6 +144,8 @@ public class UserIntegralRecordServiceImpl extends ServiceImpl idList = userService.findIdListLikeName(request.getKeywords()); if (CollUtil.isNotEmpty(idList)) { lqw.in(UserIntegralRecord::getUid, idList); + } else { + return CommonPage.copyPageInfo(page, CollUtil.newArrayList()); } } //时间范围 @@ -150,7 +153,7 @@ public class UserIntegralRecordServiceImpl extends ServiceImpl + * +---------------------------------------------------------------------- + */ +@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 00000000..7925a59d --- /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~2020 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/src/main/java/com/zbkj/crmeb/user/service/impl/UserServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserServiceImpl.java similarity index 75% rename from crmeb/src/main/java/com/zbkj/crmeb/user/service/impl/UserServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserServiceImpl.java index 2a5b79dd..149dbe41 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/service/impl/UserServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserServiceImpl.java @@ -1,4 +1,4 @@ -package com.zbkj.crmeb.user.service.impl; +package com.zbkj.service.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; @@ -10,45 +10,32 @@ 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.common.CommonPage; -import com.common.PageParamRequest; -import com.constants.*; -import com.exception.CrmebException; import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; -import com.utils.*; -import com.utils.vo.dateLimitUtilVo; -import com.zbkj.crmeb.authorization.manager.TokenManager; -import com.zbkj.crmeb.authorization.model.TokenModel; -import com.zbkj.crmeb.finance.request.FundsMonitorSearchRequest; -import com.zbkj.crmeb.front.request.PasswordRequest; -import com.zbkj.crmeb.front.request.UserBindingPhoneUpdateRequest; -import com.zbkj.crmeb.front.response.UserCenterResponse; -import com.zbkj.crmeb.front.response.UserSpreadPeopleItemResponse; -import com.zbkj.crmeb.front.service.LoginService; -import com.zbkj.crmeb.marketing.model.StoreCoupon; -import com.zbkj.crmeb.marketing.model.StoreCouponUser; -import com.zbkj.crmeb.marketing.request.StoreCouponUserSearchRequest; -import com.zbkj.crmeb.marketing.service.StoreCouponService; -import com.zbkj.crmeb.marketing.service.StoreCouponUserService; -import com.zbkj.crmeb.store.model.StoreOrder; -import com.zbkj.crmeb.store.request.RetailShopStairUserRequest; -import com.zbkj.crmeb.store.request.StoreOrderSearchRequest; -import com.zbkj.crmeb.store.response.SpreadOrderResponse; -import com.zbkj.crmeb.store.service.StoreOrderService; -import com.zbkj.crmeb.store.service.StoreProductRelationService; -import com.zbkj.crmeb.system.model.SystemUserLevel; -import com.zbkj.crmeb.system.service.SystemConfigService; -import com.zbkj.crmeb.system.service.SystemUserLevelService; -import com.zbkj.crmeb.user.dao.UserDao; -import com.zbkj.crmeb.user.model.*; -import com.zbkj.crmeb.user.request.*; -import com.zbkj.crmeb.user.response.TopDetail; -import com.zbkj.crmeb.user.response.UserResponse; -import com.zbkj.crmeb.user.service.*; +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; @@ -74,6 +61,8 @@ import java.util.stream.Collectors; @Service public class UserServiceImpl extends ServiceImpl implements UserService { + private Logger logger = LoggerFactory.getLogger(UserServiceImpl.class); + @Resource private UserDao userDao; @@ -84,7 +73,7 @@ public class UserServiceImpl extends ServiceImpl implements UserS private RedisUtil redisUtil; @Autowired - private TokenManager tokenManager; + private FrontTokenComponent tokenComponet; @Autowired private SystemConfigService systemConfigService; @@ -123,10 +112,16 @@ public class UserServiceImpl extends ServiceImpl implements UserS private UserBrokerageRecordService userBrokerageRecordService; @Autowired - private LoginService loginService; + private StoreProductRelationService storeProductRelationService; @Autowired - private StoreProductRelationService storeProductRelationService; + private UserExperienceRecordService experienceRecordService; + + @Autowired + private UserVisitRecordService userVisitRecordService; + + @Autowired + private SystemAttachmentService systemAttachmentService; /** * 分页显示用户表 @@ -217,6 +212,7 @@ public class UserServiceImpl extends ServiceImpl implements UserS } else { userResponse.setSpreadNickname(userDao.selectById(user.getSpreadUid()).getNickname()); } + userResponse.setPhone(CrmebUtil.maskMobile(userResponse.getPhone())); userResponses.add(userResponse); } return CommonPage.copyPageInfo(pageUser, userResponses); @@ -226,11 +222,10 @@ public class UserServiceImpl extends ServiceImpl implements UserS * 操作积分、余额 */ @Override - public boolean updateIntegralMoney(UserOperateIntegralMoneyRequest request) { - if (null == request.getMoneyValue() || null == request.getIntegralValue()) { + 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"); } @@ -326,112 +321,6 @@ public class UserServiceImpl extends ServiceImpl implements UserS return execute; } - /** - * 更新用户信息 - * - * @param user 用户参数 - * @return 更新结果 - */ - @Override - public boolean updateBase(User user) { - LambdaUpdateWrapper lambdaUpdateWrapper = new LambdaUpdateWrapper<>(); - if (null == user.getUid()) return false; - lambdaUpdateWrapper.eq(User::getUid, user.getUid()); - if (StringUtils.isNotBlank(user.getNickname())) { - lambdaUpdateWrapper.set(User::getNickname, user.getNickname()); - } - if (StringUtils.isNotBlank(user.getAccount())) { - lambdaUpdateWrapper.set(User::getAccount, user.getAccount()); - } - if (StringUtils.isNotBlank(user.getPwd())) { - lambdaUpdateWrapper.set(User::getPwd, user.getPwd()); - } - if (StringUtils.isNotBlank(user.getRealName())) { - lambdaUpdateWrapper.set(User::getRealName, user.getRealName()); - } - if (StringUtils.isNotBlank(user.getBirthday())) { - lambdaUpdateWrapper.set(User::getBirthday, user.getBirthday()); - } - if (StringUtils.isNotBlank(user.getCardId())) { - lambdaUpdateWrapper.set(User::getCardId, user.getCardId()); - } - if (StringUtils.isNotBlank(user.getMark())) { - lambdaUpdateWrapper.set(User::getMark, user.getMark()); - } - if (null != user.getPartnerId()) { - lambdaUpdateWrapper.set(User::getPartnerId, user.getPartnerId()); - } - if (StringUtils.isNotBlank(user.getGroupId())) { - lambdaUpdateWrapper.set(User::getGroupId, user.getGroupId()); - } - if (StringUtils.isNotBlank(user.getTagId())) { - lambdaUpdateWrapper.set(User::getTagId, user.getTagId()); - } - if (StringUtils.isNotBlank(user.getAvatar())) { - lambdaUpdateWrapper.set(User::getAvatar, user.getAvatar()); - } - if (StringUtils.isNotBlank(user.getPhone())) { - lambdaUpdateWrapper.set(User::getPhone, user.getPhone()); - } - if (StringUtils.isNotBlank(user.getAddIp())) { - lambdaUpdateWrapper.set(User::getAddIp, user.getAddIp()); - } - if (StringUtils.isNotBlank(user.getLastIp())) { - lambdaUpdateWrapper.set(User::getLastIp, user.getLastIp()); - } - if (null != user.getNowMoney() && user.getNowMoney().compareTo(BigDecimal.ZERO) > 0) { - lambdaUpdateWrapper.set(User::getNowMoney, user.getNowMoney()); - } - if (null != user.getBrokeragePrice() && user.getBrokeragePrice().compareTo(BigDecimal.ZERO) > 0) { - lambdaUpdateWrapper.set(User::getBrokeragePrice, user.getBrokeragePrice()); - } - if (null != user.getIntegral() && user.getIntegral() >= 0) { - lambdaUpdateWrapper.set(User::getIntegral, user.getIntegral()); - } - if (null != user.getExperience() && user.getExperience() > 0) { - lambdaUpdateWrapper.set(User::getExperience, user.getExperience()); - } - if (null != user.getSignNum() && user.getSignNum() > 0) { - lambdaUpdateWrapper.set(User::getSignNum, user.getSignNum()); - } - if (null != user.getStatus()) { - lambdaUpdateWrapper.set(User::getStatus, user.getStatus()); - } - if (null != user.getLevel() && user.getLevel() > 0) { - lambdaUpdateWrapper.set(User::getLevel, user.getLevel()); - } - if (null != user.getSpreadUid() && user.getSpreadUid() > 0) { - lambdaUpdateWrapper.set(User::getSpreadUid, user.getSpreadUid()); - } - if (null != user.getSpreadTime()) { - lambdaUpdateWrapper.set(User::getSpreadTime, user.getSpreadTime()); - } - if (StringUtils.isNotBlank(user.getUserType())) { - lambdaUpdateWrapper.set(User::getUserType, user.getUserType()); - } - if (null != user.getIsPromoter()) { - lambdaUpdateWrapper.set(User::getIsPromoter, user.getIsPromoter()); - } - if (null != user.getPayCount()) { - lambdaUpdateWrapper.set(User::getPayCount, user.getPayCount()); - } - if (null != user.getSpreadCount()) { - lambdaUpdateWrapper.set(User::getSpreadCount, user.getSpreadCount()); - } - if (StringUtils.isNotBlank(user.getAddres())) { - lambdaUpdateWrapper.set(User::getAddres, user.getAddres()); - } - return update(lambdaUpdateWrapper); - } - - @Override - public boolean userPayCountPlus(User user) { - LambdaUpdateWrapper lambdaUpdateWrapper = new LambdaUpdateWrapper<>(); - lambdaUpdateWrapper.eq(User::getUid, user.getUid()); - lambdaUpdateWrapper.set(User::getPayCount, user.getPayCount() + 1); - return update(lambdaUpdateWrapper); - } - /** * 更新用户金额 * @@ -460,11 +349,9 @@ public class UserServiceImpl extends ServiceImpl implements UserS * * @param id String id * @param groupIdValue Integer 分组Id - * @author Mr.Zhang - * @since 2020-04-28 */ @Override - public boolean group(String id, String groupIdValue) { + public Boolean group(String id, String groupIdValue) { if (StrUtil.isBlank(id)) throw new CrmebException("会员编号不能为空"); if (StrUtil.isBlank(groupIdValue)) throw new CrmebException("分组id不能为空"); @@ -500,11 +387,9 @@ public class UserServiceImpl extends ServiceImpl implements UserS * * @param request PasswordRequest 密码 * @return boolean - * @author Mr.Zhang - * @since 2020-04-28 */ @Override - public boolean password(PasswordRequest request) { + public Boolean password(PasswordRequest request) { //检测验证码 checkValidateCode(request.getPhone(), request.getValidateCode()); @@ -517,19 +402,6 @@ public class UserServiceImpl extends ServiceImpl implements UserS return update(user, lambdaQueryWrapper); } - /** - * 退出 - * - * @param token String token - * @author Mr.Zhang - * @since 2020-04-28 - */ - @Override - public void loginOut(String token) { - tokenManager.deleteToken(token, Constants.USER_TOKEN_REDIS_KEY_PREFIX); - ThreadLocalUtil.remove("id"); - } - /** * 获取个人资料 * @@ -569,12 +441,14 @@ public class UserServiceImpl extends ServiceImpl implements UserS * 获取当前用户id * * @return Integer - * @author Mr.Zhang - * @since 2020-04-28 */ @Override public Integer getUserIdException() { - return Integer.parseInt(tokenManager.getLocalInfoException("id")); + Integer id = tokenComponet.getUserId(); + if (null == id) { + throw new CrmebException("登录信息已过期,请重新登录!"); + } + return id; } /** @@ -586,31 +460,13 @@ public class UserServiceImpl extends ServiceImpl implements UserS */ @Override public Integer getUserId() { - Object id = tokenManager.getLocalInfo("id"); + Integer id = tokenComponet.getUserId(); if (null == id) { return 0; } - return Integer.parseInt(id.toString()); + return id; } - /** - * 按开始结束时间查询新增用户数量 - * - * @param date String 时间范围 - * @return HashMap - * @author Mr.Zhang - * @since 2020-05-16 - */ - @Override - public Integer getAddUserCountByDate(String date) { - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - - if (StringUtils.isNotBlank(date)) { - dateLimitUtilVo dateLimit = DateUtil.getDateLimit(date); - lambdaQueryWrapper.between(User::getCreateTime, dateLimit.getStartTime(), dateLimit.getEndTime()); - } - return userDao.selectCount(lambdaQueryWrapper); - } /** * 按开始结束时间查询每日新增用户数量 @@ -639,35 +495,6 @@ public class UserServiceImpl extends ServiceImpl implements UserS return map; } - /** - * 绑定手机号 - * - * @return boolean - * @author Mr.Zhang - * @since 2020-04-28 - */ - @Override - public boolean bind(UserBindingPhoneUpdateRequest request) { - //检测验证码 - checkValidateCode(request.getPhone(), request.getCaptcha()); - - //删除验证码 - redisUtil.remove(getValidateCodeRedisKey(request.getPhone())); - - //检测当前手机号是否已经是账号 - User user = getUserByAccount(request.getPhone()); - if (null != user) { - throw new CrmebException("此手机号码已被注册"); - } - - //查询手机号信息 - User bindUser = getInfoException(); - bindUser.setAccount(request.getPhone()); - bindUser.setPhone(request.getPhone()); - - return updateById(bindUser); - } - /** * 换绑手机号校验 */ @@ -677,7 +504,7 @@ public class UserServiceImpl extends ServiceImpl implements UserS checkValidateCode(request.getPhone(), request.getCaptcha()); //删除验证码 - redisUtil.remove(getValidateCodeRedisKey(request.getPhone())); + redisUtil.delete(getValidateCodeRedisKey(request.getPhone())); User user = getInfoException(); @@ -697,7 +524,7 @@ public class UserServiceImpl extends ServiceImpl implements UserS checkValidateCode(request.getPhone(), request.getCaptcha()); //删除验证码 - redisUtil.remove(getValidateCodeRedisKey(request.getPhone())); + redisUtil.delete(getValidateCodeRedisKey(request.getPhone())); //检测当前手机号是否已经是账号 User user = getByPhone(request.getPhone()); @@ -729,23 +556,13 @@ public class UserServiceImpl extends ServiceImpl implements UserS // 收藏数量 userCenterResponse.setCollectCount(storeProductRelationService.getCollectCountByUid(currentUser.getUid())); - // 判断是否开启会员功能 - Integer vipOpen = Integer.valueOf(systemConfigService.getValueByKey(SysConfigConstants.CONFIG_KEY_VIP_OPEN)); - if (vipOpen.equals(0)) { - userCenterResponse.setVip(false); - } else {// 开启 - userCenterResponse.setVip(userCenterResponse.getLevel() > 0); - UserLevel userLevel = userLevelService.getUserLevelByUserId(currentUser.getUid()); - if (ObjectUtil.isNotNull(userLevel)) { - SystemUserLevel systemUserLevel = systemUserLevelService.getByLevelId(userLevel.getLevelId()); - if (ObjectUtil.isNotNull(systemUserLevel)) { - userCenterResponse.setVipIcon(systemUserLevel.getIcon()); - userCenterResponse.setVipName(systemUserLevel.getName()); - } else { - userCenterResponse.setVip(false); - } - } else { - userCenterResponse.setVip(false); + 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()); } } // 充值开关 @@ -754,16 +571,18 @@ public class UserServiceImpl extends ServiceImpl implements UserS userCenterResponse.setRechargeSwitch(Boolean.valueOf(rechargeSwitch)); } - // 判断是否展示我的推广,1.分销模式是否开启,2.如果是人人分销,所有人都是推广员 + // 判断是否展示我的推广,1.分销模式是否开启 String funcStatus = systemConfigService.getValueByKey(SysConfigConstants.CONFIG_KEY_BROKERAGE_FUNC_STATUS); - if (funcStatus.equals("1")) { - String brokerageStatus = systemConfigService.getValueByKey(SysConfigConstants.CONFIG_KEY_STORE_BROKERAGE_STATUS); - if (brokerageStatus.equals("2")) {// 人人分销 - userCenterResponse.setIsPromoter(true); - } - } else { + 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; } @@ -771,8 +590,6 @@ public class UserServiceImpl extends ServiceImpl implements UserS * 根据用户id获取用户列表 map模式 * * @return HashMap - * @author Mr.Zhang - * @since 2020-04-28 */ @Override public HashMap getMapListInUid(List uidList) { @@ -787,8 +604,7 @@ public class UserServiceImpl extends ServiceImpl implements UserS * @author Mr.Zhang * @since 2020-04-28 */ - @Override - public HashMap getMapByList(List list) { + private HashMap getMapByList(List list) { HashMap map = new HashMap<>(); if (null == list || list.size() < 1) { return map; @@ -821,11 +637,9 @@ public class UserServiceImpl extends ServiceImpl implements UserS * * @param id String id * @param tagIdValue Integer 标签Id - * @author Mr.Zhang - * @since 2020-04-28 */ @Override - public boolean tag(String id, String tagIdValue) { + public Boolean tag(String id, String tagIdValue) { if (StrUtil.isBlank(id)) throw new CrmebException("会员编号不能为空"); if (StrUtil.isBlank(tagIdValue)) throw new CrmebException("标签id不能为空"); @@ -848,8 +662,6 @@ public class UserServiceImpl extends ServiceImpl implements UserS * * @param userIdList List 用户id集合 * @return List - * @author Mr.Zhang - * @since 2020-05-18 */ @Override public List getSpreadPeopleIdList(List userIdList) { @@ -890,24 +702,8 @@ public class UserServiceImpl extends ServiceImpl implements UserS return userDao.getSpreadPeopleList(map); } - - /** - * 登录用户生成token - * - * @author Mr.Zhang - * @since 2020-04-29 - */ - @Override - public String token(User user) throws Exception { - TokenModel token = tokenManager.createToken(user.getAccount(), user.getUid().toString(), Constants.USER_TOKEN_REDIS_KEY_PREFIX); - return token.getToken(); - } - /** * 检测手机验证码 - * - * @author Mr.Zhang - * @since 2020-04-29 */ private void checkValidateCode(String phone, String value) { Object validateCode = redisUtil.get(getValidateCodeRedisKey(phone)); @@ -921,30 +717,16 @@ public class UserServiceImpl extends ServiceImpl implements UserS } /** - * 检测手机验证码 + * 检测手机验证码key * * @param phone String 手机号 * @return String - * @author Mr.Zhang - * @since 2020-04-29 */ @Override public String getValidateCodeRedisKey(String phone) { return SmsConstants.SMS_VALIDATE_PHONE + phone; } - /** - * 通过账号获取用户信息 - * - * @author Mr.Zhang - * @since 2020-04-29 - */ - public User getUserByAccount(String account) { - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(User::getAccount, account); - return userDao.selectOne(lambdaQueryWrapper); - } - /** * 手机号注册用户 * @@ -1109,27 +891,28 @@ public class UserServiceImpl extends ServiceImpl implements UserS /** * PC后台分销员列表 * - * @param storeBrokerageStatus 分销模式 1-指定分销,2-人人分销 * @param keywords 搜索参数 * @param dateLimit 时间参数 * @param pageRequest 分页参数 * @return PageInfo */ @Override - public PageInfo getAdminSpreadPeopleList(String storeBrokerageStatus, String keywords, String dateLimit, PageParamRequest pageRequest) { + 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); - if (storeBrokerageStatus.equals("1")) { - lqw.eq(User::getIsPromoter, true); - } - lqw.apply("1 = 1"); + 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); @@ -1150,6 +933,9 @@ public class UserServiceImpl extends ServiceImpl implements UserS * *推广关系绑定,下级不能绑定自己的上级为下级,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; } @@ -1171,18 +957,13 @@ public class UserServiceImpl extends ServiceImpl implements UserS return false; } } - // 判断分销模式 - String model = systemConfigService.getValueByKey(Constants.CONFIG_KEY_STORE_BROKERAGE_MODEL); - if (StrUtil.isBlank(model)) { - return false; - } // 查询推广员 User spreadUser = getById(spreadUid); if (ObjectUtil.isNull(spreadUser) || !spreadUser.getStatus()) { return false; } // 指定分销不是推广员不绑定 - if (model.equals("1") && !spreadUser.getIsPromoter()) { + if (!spreadUser.getIsPromoter()) { return false; } // 下级不能绑定自己的上级为自己的下级 @@ -1219,7 +1000,7 @@ public class UserServiceImpl extends ServiceImpl implements UserS * 根据条件获取会员对应信息列表 * * @param userId 用户id - * @param type 0=消费记录,1=积分明细,2=签到记录,3=持有优惠券,4=余额变动,5=好友关系 + * @param type 0=消费记录,1=积分明细,2=签到记录,3=持有优惠券,4=余额变动,5=好友关系 * @param pageParamRequest 分页参数 * @return Object */ @@ -1303,37 +1084,6 @@ public class UserServiceImpl extends ServiceImpl implements UserS return user; } - /** - * 添加推广关系 - * - * @param currentUserId 当前用户id 被推广人 - * @param spreadUserId 推广人id - * @return 添加推广关系是否成功 - */ - @Override - public boolean spread(Integer currentUserId, Integer spreadUserId) { - // 检查用户是否存在 - User currentUser = userDao.selectById(currentUserId); - if (null == currentUser) throw new CrmebException("用户id:" + currentUserId + "不存在"); - User spreadUser = userDao.selectById(spreadUserId); - if (null == spreadUser) throw new CrmebException("用户id:" + spreadUserId + "不存在"); - // 检查是否是推广员 - if (!spreadUser.getIsPromoter()) throw new CrmebException("用户id:" + spreadUserId + "不是推广员身份"); - // 检查是否已经有推广关系 - LambdaQueryWrapper lmq = new LambdaQueryWrapper<>(); - lmq.like(User::getPath, spreadUserId); - lmq.eq(User::getUid, currentUserId); - List spreadUsers = userDao.selectList(lmq); - if (spreadUsers.size() > 0) { - throw new CrmebException("推广关系已经存在"); - } - currentUser.setPath(currentUser.getPath() + spreadUser.getUid() + "/"); - currentUser.setSpreadUid(spreadUserId); - currentUser.setSpreadTime(new Date()); - currentUser.setSpreadCount(currentUser.getSpreadCount() + 1); - return userDao.updateById(currentUser) >= 0; - } - /** * 根据推广级别和其他参数当前用户下的推广列表 * @@ -1417,28 +1167,10 @@ public class UserServiceImpl extends ServiceImpl implements UserS 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); + PageInfo recordPageInfo = userBrokerageRecordService.findAdminSpreadListByUid(request, pageParamRequest); List responseList = recordPageInfo.getList().stream().map(e -> { SpreadOrderResponse response = new SpreadOrderResponse(); - StoreOrder storeOrder = orderMap.get(e.getLinkId()); + StoreOrder storeOrder = storeOrderService.getByOderId(e.getLinkId()); response.setId(storeOrder.getId()); response.setOrderId(storeOrder.getOrderId()); response.setRealName(storeOrder.getRealName()); @@ -1451,6 +1183,52 @@ public class UserServiceImpl extends ServiceImpl implements UserS 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); +// } + /** * 获取推广人列表 * @@ -1528,7 +1306,7 @@ public class UserServiceImpl extends ServiceImpl implements UserS .eq("status", true); if (StrUtil.isNotBlank(type)) { dateLimitUtilVo dateLimit = DateUtil.getDateLimit(type); - queryWrapper.between("create_time", dateLimit.getStartTime(), dateLimit.getEndTime()); + queryWrapper.between("spread_time", dateLimit.getStartTime(), dateLimit.getEndTime()); } queryWrapper.groupBy("spread_uid").orderByDesc("spread_count"); List spreadVoList = userDao.selectList(queryWrapper); @@ -1557,7 +1335,6 @@ public class UserServiceImpl extends ServiceImpl implements UserS } else { user.setNickname(userVo.getNickname()); } - userList.add(user); } @@ -1593,15 +1370,27 @@ public class UserServiceImpl extends ServiceImpl implements UserS throw new CrmebException("当前用户未登录,请先登录"); } - loginService.bindSpread(user, spreadUid); + bindSpread(user, spreadUid); } - @Override - public boolean updateBrokeragePrice(User user, BigDecimal newBrokeragePrice) { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.set("brokerage_price", newBrokeragePrice) - .eq("uid", user.getUid()).eq("brokerage_price", user.getBrokeragePrice()); - return userDao.update(user, updateWrapper) > 0; + 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; + } /** @@ -1672,51 +1461,6 @@ public class UserServiceImpl extends ServiceImpl implements UserS return update(lambdaUpdateWrapper); } - /** - * 获取分销人员列表 - * - * @param keywords 搜索参数 - * @param dateLimit 时间参数 - * @param storeBrokerageStatus 分销状态:1-指定分销,2-人人分销 - * @return List - */ - @Override - public List findDistributionList(String keywords, String dateLimit, String storeBrokerageStatus) { - LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); - if (storeBrokerageStatus.equals("1")) { - lqw.eq(User::getIsPromoter, true); - } - if (StrUtil.isNotBlank(dateLimit)) { - dateLimitUtilVo dateLimitVo = DateUtil.getDateLimit(dateLimit); - lqw.between(User::getCreateTime, dateLimitVo.getStartTime(), dateLimitVo.getEndTime()); - } - if (StrUtil.isNotBlank(keywords)) { - lqw.and(i -> i.like(User::getRealName, keywords) //真实姓名 - .or().like(User::getPhone, keywords) //手机号码 - .or().like(User::getNickname, keywords) //用户昵称 - .or().like(User::getUid, keywords)); //uid - } - return userDao.selectList(lqw); - } - - /** - * 获取发展会员人数 - * - * @param ids 推广人id集合 - * @param dateLimit 时间参数 - * @return Integer - */ - @Override - public Integer getDevelopDistributionPeopleNum(List ids, String dateLimit) { - LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.in(User::getSpreadUid, ids); - if (StrUtil.isNotBlank(dateLimit)) { - dateLimitUtilVo dateLimitVo = DateUtil.getDateLimit(dateLimit); - lqw.between(User::getCreateTime, dateLimitVo.getStartTime(), dateLimitVo.getEndTime()); - } - return userDao.selectCount(lqw); - } - /** * 清除User Group id * @@ -1740,38 +1484,10 @@ public class UserServiceImpl extends ServiceImpl implements UserS User tempUser = getById(userRequest.getUid()); User user = new User(); BeanUtils.copyProperties(userRequest, user); - if (ObjectUtil.isNull(userRequest.getLevel())) { - user.setLevel(0); + if (!tempUser.getIsPromoter() && user.getIsPromoter()) { + user.setPromoterTime(cn.hutool.core.date.DateUtil.date()); } - Boolean execute = transactionTemplate.execute(e -> { - updateById(user); - if (ObjectUtil.isNotNull(userRequest.getLevel()) && !tempUser.getLevel().equals(userRequest.getLevel())) { - // 修改用户等级表 - UserLevel userLevel = userLevelService.getUserLevelByUserId(tempUser.getUid()); - if (ObjectUtil.isNotNull(userLevel)) { - userLevel.setIsDel(true); - userLevelService.updateById(userLevel); - } - - SystemUserLevel systemUserLevel = systemUserLevelService.getByLevelId(userRequest.getLevel()); - UserLevel newLevel = new UserLevel(); - newLevel.setUid(tempUser.getUid()); - newLevel.setLevelId(systemUserLevel.getId()); - newLevel.setGrade(systemUserLevel.getGrade()); - newLevel.setStatus(true); - newLevel.setMark(StrUtil.format("尊敬的用户 {},在{}管理员调整会员等级成为{}", tempUser.getNickname(), DateUtil.nowDateTimeStr(), systemUserLevel.getName())); - newLevel.setDiscount(systemUserLevel.getDiscount()); - newLevel.setCreateTime(DateUtil.nowDateTime()); - userLevelService.save(newLevel); - } - if (ObjectUtil.isNull(userRequest.getLevel()) && tempUser.getLevel() > 0) { - UserLevel userLevel = userLevelService.getUserLevelByUserId(tempUser.getUid()); - userLevel.setIsDel(true); - userLevelService.updateById(userLevel); - } - return Boolean.TRUE; - }); - return execute; + return updateById(user); } /** @@ -1794,7 +1510,7 @@ public class UserServiceImpl extends ServiceImpl implements UserS */ @Override public Boolean updateUserPhone(Integer id, String phone) { - boolean matchPhone = ReUtil.isMatch(RegularConstants.PHONE, phone); + boolean matchPhone = ReUtil.isMatch(RegularConstants.PHONE_TWO, phone); if (!matchPhone) { throw new CrmebException("手机号格式错误,请输入正确得手机号"); } @@ -1835,4 +1551,226 @@ public class UserServiceImpl extends ServiceImpl implements UserS } 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/src/main/java/com/zbkj/crmeb/user/service/impl/UserSignServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserSignServiceImpl.java similarity index 73% rename from crmeb/src/main/java/com/zbkj/crmeb/user/service/impl/UserSignServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserSignServiceImpl.java index 4c59ef59..a8dcedde 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/service/impl/UserSignServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserSignServiceImpl.java @@ -1,33 +1,35 @@ -package com.zbkj.crmeb.user.service.impl; +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.common.PageParamRequest; -import com.constants.Constants; -import com.constants.IntegralRecordConstants; -import com.constants.SysGroupDataConstants; -import com.exception.CrmebException; +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.utils.DateUtil; -import com.zbkj.crmeb.front.response.UserSignInfoResponse; -import com.zbkj.crmeb.system.service.SystemGroupDataService; -import com.zbkj.crmeb.system.vo.SystemGroupDataSignConfigVo; -import com.zbkj.crmeb.user.dao.UserSignDao; -import com.zbkj.crmeb.user.model.User; -import com.zbkj.crmeb.user.model.UserBill; -import com.zbkj.crmeb.user.model.UserIntegralRecord; -import com.zbkj.crmeb.user.model.UserSign; -import com.zbkj.crmeb.user.service.*; -import com.zbkj.crmeb.user.vo.UserSignMonthVo; -import com.zbkj.crmeb.user.vo.UserSignVo; +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.math.BigDecimal; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -56,9 +58,6 @@ public class UserSignServiceImpl extends ServiceImpl impl @Autowired private SystemGroupDataService systemGroupDataService; - @Autowired - private UserBillService userBillService; - @Autowired private TransactionTemplate transactionTemplate; @@ -68,8 +67,11 @@ public class UserSignServiceImpl extends ServiceImpl impl @Autowired private UserLevelService userLevelService; + @Autowired + private UserExperienceRecordService userExperienceRecordService; + /** - * 列表 + * 用户积分列表 * * @param pageParamRequest 分页类参数 * @return List @@ -87,7 +89,6 @@ public class UserSignServiceImpl extends ServiceImpl impl if (userSignList.size() < 1) { return userSignVoList; } - for (UserSign userSign : userSignList) { userSignVoList.add(new UserSignVo(userSign.getTitle(), userSign.getNumber(), userSign.getCreateDay())); } @@ -100,8 +101,48 @@ public class UserSignServiceImpl extends ServiceImpl impl @Override public SystemGroupDataSignConfigVo sign() { User user = userService.getInfoException(); - SystemGroupDataSignConfigVo configVo = getSignInfo(user.getUid()); - if (configVo == null) { + + // 获取最后一次签到记录 + 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("请先配置签到天数!"); } @@ -126,27 +167,17 @@ public class UserSignServiceImpl extends ServiceImpl impl integralRecord.setStatus(IntegralRecordConstants.INTEGRAL_RECORD_STATUS_COMPLETE); //更新用户经验信息 - UserBill experienceBill = new UserBill(); - experienceBill.setUid(user.getUid()); - experienceBill.setPm(1); - experienceBill.setTitle(Constants.SIGN_TYPE_EXPERIENCE_TITLE); - experienceBill.setCategory(Constants.USER_BILL_CATEGORY_EXPERIENCE); - experienceBill.setType(Constants.USER_BILL_TYPE_SIGN); - experienceBill.setNumber(new BigDecimal(configVo.getExperience())); - experienceBill.setBalance (new BigDecimal(user.getExperience()).add(new BigDecimal(configVo.getExperience()))); - experienceBill.setMark(StrUtil.format("签到经验奖励增加了{}经验", configVo.getExperience())); - experienceBill.setStatus(1); - experienceBill.setLinkId("0"); + 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); - //更新用户签到天数 - // 检测昨天是否签到 - Boolean yesterdaySign = checkYesterdaySign(user.getUid()); - if (yesterdaySign) { - user.setSignNum(user.getSignNum() + 1); - } else { - user.setSignNum(1); - } - //更新用户积分 + // 更新用户积分 user.setIntegral(user.getIntegral() + configVo.getIntegral()); // 更新用户经验 user.setExperience(user.getExperience() + configVo.getExperience()); @@ -157,7 +188,7 @@ public class UserSignServiceImpl extends ServiceImpl impl // 更新用户积分记录 userIntegralRecordService.save(integralRecord); //更新用户经验信息 - userBillService.save(experienceBill); + userExperienceRecordService.save(experienceRecord); //更新用户 签到天数、积分、经验 userService.updateById(user); // 用户升级 @@ -174,11 +205,7 @@ public class UserSignServiceImpl extends ServiceImpl impl /** - * 详情 - * - * @return map - * @author Mr.Zhang - * @since 2020-04-30 + * 今日记录详情 */ @Override public HashMap get() { @@ -201,7 +228,7 @@ public class UserSignServiceImpl extends ServiceImpl impl * @return List */ @Override - public List config() { + public List getSignConfig() { //获取配置数据 return systemGroupDataService.getListByGid(SysGroupDataConstants.GROUP_DATA_ID_SIGN, SystemGroupDataSignConfigVo.class); } @@ -229,7 +256,6 @@ public class UserSignServiceImpl extends ServiceImpl impl 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) { //有数据之后则 判断是否已存在,存在则更新 @@ -279,7 +305,7 @@ public class UserSignServiceImpl extends ServiceImpl impl } // 连续签到天数:当前用户已经签到完一个周期,那么重置 - if (userSignInfoResponse.getSignNum() > 0 && userSignInfoResponse.getSignNum().equals(config().size())) { + if (userSignInfoResponse.getSignNum() > 0 && userSignInfoResponse.getSignNum().equals(getSignConfig().size())) { userSignInfoResponse.setSignNum(0); userService.repeatSignNum(user.getUid()); } @@ -346,70 +372,17 @@ public class UserSignServiceImpl extends ServiceImpl impl } /** - * 获取签到积分 - * - * @param userId Integer 用户id - * @return Integer - * @author Mr.Zhang - * @since 2020-04-30 + * 获取签到的最后一条记录 + * @param uid 用户id + * @return UserSign */ - private SystemGroupDataSignConfigVo getSignInfo(Integer userId) { - //先看用户上次签到是什么日期, 如果有断开那么就重置 - checkRepeat(userId); - - //获取用户连续签到天数 - User user = userService.getInfo(); - - //获取签到数据 - List config = config(); - - //如果已经签到一个周期,那么再次签到的时候直接从第一天重新开始 - if (user.getSignNum().equals(config.size())) { - user.setSignNum(0); - userService.repeatSignNum(userId); - } - - for (SystemGroupDataSignConfigVo systemSignConfigVo : config) { - if (user.getSignNum() + 1 <= systemSignConfigVo.getDay()) { - return systemSignConfigVo; - } - } - - return null; - } - - /** - * 检测是否需要重置累计签到天数 - * - * @param userId Integer 用户id - */ - private void checkRepeat(Integer userId) { - PageHelper.startPage(Constants.DEFAULT_PAGE, Constants.DEFAULT_PAGE); - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.select(UserSign::getCreateDay).eq(UserSign::getUid, userId).orderByDesc(UserSign::getCreateDay); - List userSignList = dao.selectList(lambdaQueryWrapper); - if (userSignList.size() < 1) { - //没有签到过 - userService.repeatSignNum(userId); - return; - } - - //签到时间 +1 天 - String lastDate = DateUtil.dateToStr(userSignList.get(0).getCreateDay(), Constants.DATE_FORMAT_DATE); - String nowDate = DateUtil.nowDate(Constants.DATE_FORMAT_DATE); - String nextDate = DateUtil.addDay(userSignList.get(0).getCreateDay(), 1, Constants.DATE_FORMAT_DATE); - - int compareDate = DateUtil.compareDate(nextDate, nowDate, Constants.DATE_FORMAT_DATE); - - //对比今天数据 - if (DateUtil.compareDate(lastDate, nowDate, Constants.DATE_FORMAT_DATE) == 0) { - throw new CrmebException("今日已签到。不可重复签到"); - } - - if (compareDate != 0) { - //不相等,所以不是连续签到 - userService.repeatSignNum(userId); - } + 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); } /** @@ -435,6 +408,7 @@ public class UserSignServiceImpl extends ServiceImpl impl */ @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); diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/service/impl/UserTagServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserTagServiceImpl.java similarity index 54% rename from crmeb/src/main/java/com/zbkj/crmeb/user/service/impl/UserTagServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserTagServiceImpl.java index 1754ec0b..c289b8a1 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/service/impl/UserTagServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserTagServiceImpl.java @@ -1,12 +1,17 @@ -package com.zbkj.crmeb.user.service.impl; +package com.zbkj.service.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.common.PageParamRequest; -import com.utils.CrmebUtil; -import com.zbkj.crmeb.user.dao.UserTagDao; -import com.zbkj.crmeb.user.model.UserTag; -import com.zbkj.crmeb.user.service.UserTagService; +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; @@ -31,24 +36,23 @@ public class UserTagServiceImpl extends ServiceImpl impleme @Resource private UserTagDao dao; + @Autowired + private UserService userService; /** * 列表 * @param pageParamRequest 分页类参数 - * @author Mr.Zhang - * @since 2020-06-05 * @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 - * @author Mr.Zhang - * @since 2020-06-05 * @return List */ @Override @@ -56,12 +60,49 @@ public class UserTagServiceImpl extends ServiceImpl impleme LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.in(UserTag::getId, CrmebUtil.stringToArray(tagIdValue)).orderByDesc(UserTag::getId); List userTags = dao.selectList(lambdaQueryWrapper); - if(null == userTags){ + 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/src/main/java/com/zbkj/crmeb/user/service/impl/UserTokenServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserTokenServiceImpl.java similarity index 71% rename from crmeb/src/main/java/com/zbkj/crmeb/user/service/impl/UserTokenServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserTokenServiceImpl.java index 9948e353..fb33191e 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/service/impl/UserTokenServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserTokenServiceImpl.java @@ -1,15 +1,13 @@ -package com.zbkj.crmeb.user.service.impl; +package com.zbkj.service.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.constants.Constants; -import com.zbkj.crmeb.user.dao.UserTokenDao; -import com.zbkj.crmeb.user.model.UserToken; -import com.zbkj.crmeb.user.service.UserTokenService; +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; -import java.util.List; /** * UserTokenServiceImpl 接口实现 @@ -33,8 +31,6 @@ public class UserTokenServiceImpl extends ServiceImpl i * 检测token是否存在 * @param token String openId * @param type int 类型 - * @author Mr.Zhang - * @since 2020-05-25 * @return UserToken */ @Override @@ -66,19 +62,5 @@ public class UserTokenServiceImpl extends ServiceImpl i lambdaQueryWrapper.eq(UserToken::getUid, userId).eq(UserToken::getType, type); return dao.selectOne(lambdaQueryWrapper); } - - @Override - public List getList(List userIdList) { - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.in(UserToken::getUid, userIdList).eq(UserToken::getType, Constants.PAY_TYPE_WE_CHAT_FROM_PUBLIC); - return dao.selectList(lambdaQueryWrapper); - } - - @Override - public UserToken getByUid(Integer uid) { - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(UserToken::getUid, uid); - 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 00000000..c2c10cae --- /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~2020 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 00000000..0e178959 --- /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~2020 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 (pre.equals("order")) {// 支付订单 + 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 (userRecharge.getRechargeType().equals("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("routine")) {// 小程序 + 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 (responseVo.getReturnCode().toUpperCase().equals("FAIL")) { + throw new CrmebException("微信下单失败1!" + responseVo.getReturnMsg()); + } + + if (responseVo.getResultCode().toUpperCase().equals("FAIL")) { + 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 00000000..d60febf0 --- /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~2020 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 00000000..6d1e98a1 --- /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~2020 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/src/main/java/com/zbkj/crmeb/wechat/service/impl/WechatMediaServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/WechatMediaServiceImpl.java similarity index 76% rename from crmeb/src/main/java/com/zbkj/crmeb/wechat/service/impl/WechatMediaServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/WechatMediaServiceImpl.java index eef3a91d..73a62847 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/service/impl/WechatMediaServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/WechatMediaServiceImpl.java @@ -1,11 +1,11 @@ -package com.zbkj.crmeb.wechat.service.impl; +package com.zbkj.service.service.impl; import com.alibaba.fastjson.JSONObject; -import com.exception.CrmebException; -import com.utils.CrmebUtil; -import com.utils.UploadWeChatMediaUtil; -import com.zbkj.crmeb.wechat.service.WeChatService; -import com.zbkj.crmeb.wechat.service.WechatMediaService; +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; @@ -16,17 +16,12 @@ import java.util.List; import java.util.Map; import java.util.Objects; -/** - * @author Mr.Zhang - * @Description WechatMediaServiceImpl 接口实现 - * @since 2020-04-18 - */ @Data @Service public class WechatMediaServiceImpl implements WechatMediaService { @Autowired - private WeChatService weChatService; + private WechatNewService wechatNewService; private static final long maxSizeImage = 1024 * 1024 * 10; @@ -42,19 +37,18 @@ public class WechatMediaServiceImpl implements WechatMediaService { * 上传素材到微信素材库 * @param file MultipartFile 上传文件 * @param type String 类型 媒体文件类型,分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb) - * @author Mr.Zhang - * @since 2020-04-18 * @return String */ - public Map upload(MultipartFile file, String type) throws Exception{ + 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); - String url = weChatService.getUploadMedia() + "&type=" + 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")){ + if (null == response || !response.containsKey("media_id")) { assert response != null; throw new CrmebException("素材上传失败" + response.getString("errmsg")); } @@ -65,7 +59,7 @@ public class WechatMediaServiceImpl implements WechatMediaService { map.put("name", file.getOriginalFilename().replace(suffixName, "")); return map; - }catch (Exception e){ + }catch (Exception e) { throw new CrmebException(e.getMessage()); } @@ -77,22 +71,20 @@ public class WechatMediaServiceImpl implements WechatMediaService { * 是否符合微信规范 * @param size long 文件大小 * @param suffixName String 后缀名 - * @author Mr.Zhang - * @since 2020-04-18 */ private void isValidPic(long size, String suffixName, String type) { JSONObject config = getConfig(); - if(!config.containsKey(type)){ + if (!config.containsKey(type)) { throw new CrmebException("不支持此类型"); } long supportSize = config.getJSONObject(type).getLong("size"); - if(supportSize < size){ + if (supportSize < size) { throw new CrmebException("文件大小不能超过" + supportSize); } String supportNameSuffix = config.getJSONObject(type).getString("suffix"); List suffixNameList = CrmebUtil.stringToArrayStr(supportNameSuffix); - if(!suffixNameList.contains(suffixName)){ + if (!suffixNameList.contains(suffixName)) { throw new CrmebException("文件格式必须是" + supportSize); } } @@ -100,10 +92,8 @@ public class WechatMediaServiceImpl implements WechatMediaService { /** * 参数配置 * @author Mr.Zhang - * @since 2020-04-18 - * @return JSONObject */ - private JSONObject getConfig(){ + private JSONObject getConfig() { String data = "{" + "image:{size:\""+maxSizeImage+"\", suffix: \""+suffixNameImage+"\"}, " + "voice:{size:\""+maxSizeVoice+"\", suffix: \""+suffixNameVoice+"\"}" + 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 00000000..d9e5874e --- /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~2020 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") && !data.getString("errcode").equals("0")) { + 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") && !data.getString("errcode").equals("0")) { + 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") && !data.getString("errcode").equals("0")) { + 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 (data.getString("errcode").equals("40001")) { + 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 (responseVo.getReturnCode().toUpperCase().equals("FAIL")) { + // 保存到微信异常表 + wxPayExceptionDispose(map, "微信支付预下单异常"); + wechatPayInfo.setErrCode(map.get("return_code").toString()); + wechatPayInfoService.save(wechatPayInfo); + throw new CrmebException("微信下单失败1!" + responseVo.getReturnMsg()); + } + + if (responseVo.getResultCode().toUpperCase().equals("FAIL")) { + 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 (record.getStr("return_code").toUpperCase().equals("FAIL")) { + wxPayQueryExceptionDispose(record, "微信支付查询订单通信异常"); + throw new CrmebException("微信订单查询失败1!" + record.getStr("return_msg")); + } + + if (record.getStr("result_code").toUpperCase().equals("FAIL")) { + wxPayQueryExceptionDispose(record, "微信支付查询订单结果异常"); + throw new CrmebException("微信订单查询失败2!" + record.getStr("err_code") + record.getStr("err_code_des")); + } + if (!record.getStr("trade_state").toUpperCase().equals("SUCCESS")) { + 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") && !data.getString("errcode").equals("0")) { + 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") && !data.getString("errcode").equals("0")) { + if (data.getString("errcode").equals("40001")) { + 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") && !data2.getString("errcode").equals("0")) { + 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") && result.getString("errcode").equals("0")) { + 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") && jsonObject.getString("errcode").equals("0")) { + 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") && result.getString("errcode").equals("0")) { + 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 (responseVo.getReturnCode().toUpperCase().equals("FAIL")) { + wxPayExceptionDispose(map, "微信申请退款异常1"); + throw new CrmebException("微信申请退款失败1!" + responseVo.getReturnMsg()); + } + + if (responseVo.getResultCode().toUpperCase().equals("FAIL")) { + 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") && !jsonObject.getString("errcode").equals("0")) { + 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") && !data.getString("errcode").equals("0")) { + 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") && !data.getString("errcode").equals("0")) { + 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") && !jsonObject.getString("errcode").equals("0")) { + 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") && !data.getString("errcode").equals("0")) { + 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") && !jsonObject.getString("errcode").equals("0")) { + 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") && !data.getString("errcode").equals("0")) { + 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") && !data.getString("errcode").equals("0")) { + 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") && !data.getString("errcode").equals("0")) { + 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 (returnCode.toUpperCase().equals("FAIL")) { + 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 (record.getStr("return_code").toUpperCase().equals("FAIL")) { + wechatExceptions.setErrcode("-200"); + wechatExceptions.setErrmsg(record.getStr("return_msg")); + } else if (record.getStr("result_code").toUpperCase().equals("FAIL")) { + wechatExceptions.setErrcode(record.getStr("err_code")); + wechatExceptions.setErrmsg(record.getStr("err_code_des")); + } else if (!record.getStr("trade_state").toUpperCase().equals("SUCCESS")) { + 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 00000000..a4c8d057 --- /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~2020 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/src/main/java/com/zbkj/crmeb/wechat/service/impl/WechatPublicServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/WechatPublicServiceImpl.java similarity index 65% rename from crmeb/src/main/java/com/zbkj/crmeb/wechat/service/impl/WechatPublicServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/WechatPublicServiceImpl.java index 393a70b2..490f3c91 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/service/impl/WechatPublicServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/WechatPublicServiceImpl.java @@ -1,12 +1,10 @@ -package com.zbkj.crmeb.wechat.service.impl; +package com.zbkj.service.service.impl; import com.alibaba.fastjson.JSONObject; -import com.constants.WeChatConstants; -import com.utils.RedisUtil; -import com.zbkj.crmeb.wechat.service.WeChatService; -import com.zbkj.crmeb.wechat.service.WechatPublicService; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +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; @@ -25,14 +23,11 @@ import org.springframework.stereotype.Service; @Service public class WechatPublicServiceImpl implements WechatPublicService { - private static final Logger logger = LoggerFactory.getLogger(WechatPublicServiceImpl.class); - @Autowired private RedisUtil redisUtil; @Autowired - private WeChatService weChatService; - + private WechatNewService wechatNewService; /** * 获取公众号自定义菜单 @@ -41,9 +36,9 @@ public class WechatPublicServiceImpl implements WechatPublicService { @Override public Object getCustomizeMenus() { Object list = redisUtil.get(WeChatConstants.REDIS_PUBLIC_MENU_KEY); - if(list == null || list.equals("")){ + if (list == null || list.equals("")) { //如果没有, 去读取 - JSONObject tagsList = weChatService.get(); + JSONObject tagsList = wechatNewService.getPublicCustomMenu(); redisUtil.set(WeChatConstants.REDIS_PUBLIC_MENU_KEY, tagsList); list = tagsList; } @@ -53,28 +48,34 @@ public class WechatPublicServiceImpl implements WechatPublicService { /** * 保存自定义菜单 * @param data 菜单json - * @return JSONObject + * @return Boolean */ @Override - public JSONObject createMenus(String data) { - JSONObject jsonObject = weChatService.create(data); + public Boolean createMenus(String data) { + Boolean create = wechatNewService.createPublicCustomMenu(data); + if (!create) { + return create; + } // 清除历史缓存 if (redisUtil.exists(WeChatConstants.REDIS_PUBLIC_MENU_KEY)) { - redisUtil.remove(WeChatConstants.REDIS_PUBLIC_MENU_KEY); + redisUtil.delete(WeChatConstants.REDIS_PUBLIC_MENU_KEY); } - return jsonObject; + return create; } /** * 删除自定义菜单 - * @return + * @return Boolean */ @Override - public JSONObject deleteMenus() { - JSONObject delete = weChatService.delete(); + public Boolean deleteMenus() { + Boolean delete = wechatNewService.deletePublicCustomMenu(); + if (!delete) { + return delete; + } // 清除历史缓存 if (redisUtil.exists(WeChatConstants.REDIS_PUBLIC_MENU_KEY)) { - redisUtil.remove(WeChatConstants.REDIS_PUBLIC_MENU_KEY); + redisUtil.delete(WeChatConstants.REDIS_PUBLIC_MENU_KEY); } return delete; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/service/impl/WechatReplyServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/WechatReplyServiceImpl.java similarity index 68% rename from crmeb/src/main/java/com/zbkj/crmeb/wechat/service/impl/WechatReplyServiceImpl.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/WechatReplyServiceImpl.java index 651b35fc..d531fec0 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/service/impl/WechatReplyServiceImpl.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/WechatReplyServiceImpl.java @@ -1,16 +1,18 @@ -package com.zbkj.crmeb.wechat.service.impl; +package com.zbkj.service.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.common.PageParamRequest; -import com.exception.CrmebException; +import com.zbkj.common.request.PageParamRequest; +import com.zbkj.common.exception.CrmebException; import com.github.pagehelper.PageHelper; -import com.zbkj.crmeb.system.service.SystemAttachmentService; -import com.zbkj.crmeb.wechat.dao.WechatReplyDao; -import com.zbkj.crmeb.wechat.model.WechatReply; -import com.zbkj.crmeb.wechat.request.WechatReplySearchRequest; -import com.zbkj.crmeb.wechat.service.WechatReplyService; +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; @@ -43,22 +45,18 @@ public class WechatReplyServiceImpl extends ServiceImpl */ @Override public List getList(WechatReplySearchRequest request, PageParamRequest pageParamRequest) { PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - //类型 - if(StringUtils.isNotBlank(request.getType())){ + if (StringUtils.isNotBlank(request.getType())) { lambdaQueryWrapper.eq(WechatReply::getType, request.getType()); } - //关键字 - if(StringUtils.isNotBlank(request.getKeywords())){ + if (StringUtils.isNotBlank(request.getKeywords())) { lambdaQueryWrapper.eq(WechatReply::getKeywords, request.getKeywords()); } lambdaQueryWrapper.orderByDesc(WechatReply::getId); @@ -68,46 +66,38 @@ public class WechatReplyServiceImpl extends ServiceImpl objectLambdaQueryWrapper = new LambdaQueryWrapper<>(); objectLambdaQueryWrapper.eq(WechatReply::getKeywords, keywords); - WechatReply wechatReply = dao.selectOne(objectLambdaQueryWrapper); - if(null == wechatReply){ - return null; - } - - return wechatReply; + return dao.selectOne(objectLambdaQueryWrapper); } /** * 根据关键字查询数据 * @param id Integer id - * @author Mr.Zhang - * @since 2020-04-18 * @return WechatReply */ - @Override - public WechatReply getInfoException(Integer id, boolean isTrue) { + private WechatReply getInfoException(Integer id, boolean isTrue) { //检测重复 WechatReply info = getInfo(id); - if(null == info){ + if (null == info) { throw new CrmebException("没有找到相关数据"); } - if(!info.getStatus() && isTrue){ + if (!info.getStatus() && isTrue) { throw new CrmebException("没有找到相关数据"); } @@ -148,8 +130,6 @@ public class WechatReplyServiceImpl extends ServiceImpl + * +---------------------------------------------------------------------- + */ +@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 00000000..b09de062 --- /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~2020 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/src/main/java/com/utils/OnePassUtil.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/util/OnePassUtil.java similarity index 93% rename from crmeb/src/main/java/com/utils/OnePassUtil.java rename to crmeb/crmeb-service/src/main/java/com/zbkj/service/util/OnePassUtil.java index 16f63bcc..65aa3263 100644 --- a/crmeb/src/main/java/com/utils/OnePassUtil.java +++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/util/OnePassUtil.java @@ -1,13 +1,16 @@ -package com.utils; +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.constants.OnePassConstants; -import com.exception.CrmebException; -import com.zbkj.crmeb.pass.vo.OnePassLoginVo; -import com.zbkj.crmeb.system.service.SystemConfigService; +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; @@ -63,8 +66,6 @@ public class OnePassUtil { /** * 获取一号通token - * - * @return */ public String getToken(OnePassLoginVo loginVo) { boolean exists = redisUtil.exists(StrUtil.format(OnePassConstants.ONE_PASS_TOKEN_KEY_PREFIX, loginVo.getSecret())); @@ -118,7 +119,7 @@ public class OnePassUtil { public void removeToken(OnePassLoginVo loginVo) { boolean exists = redisUtil.exists(StrUtil.format(OnePassConstants.ONE_PASS_TOKEN_KEY_PREFIX, loginVo.getSecret())); if (exists) { - redisUtil.remove(StrUtil.format(OnePassConstants.ONE_PASS_TOKEN_KEY_PREFIX, loginVo.getSecret())); + redisUtil.delete(StrUtil.format(OnePassConstants.ONE_PASS_TOKEN_KEY_PREFIX, loginVo.getSecret())); } } @@ -129,7 +130,7 @@ public class OnePassUtil { OnePassLoginVo loginVo = getLoginVo(); boolean exists = redisUtil.exists(StrUtil.format(OnePassConstants.ONE_PASS_TOKEN_KEY_PREFIX, loginVo.getSecret())); if (exists) { - redisUtil.remove(StrUtil.format(OnePassConstants.ONE_PASS_TOKEN_KEY_PREFIX, loginVo.getSecret())); + redisUtil.delete(StrUtil.format(OnePassConstants.ONE_PASS_TOKEN_KEY_PREFIX, loginVo.getSecret())); } } 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 00000000..d4e7580e --- /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~2020 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 00000000..8eab1725 --- /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 00000000..b23306c6 --- /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 && !ClientId.equals("") && !ClientSecret.equals("")) + return true; + return false; + } + + public String getCodeOpen(String redirect_uri) { + if (ClientId != null && !ClientId.equals("")) + 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 00000000..e9f43e98 --- /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 00000000..e66ae544 --- /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 && !content.equals("")) + 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 00000000..e9f9bcc6 --- /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 00000000..589e6974 --- /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 00000000..6f2773a7 --- /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 00000000..280e872d --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/express/ExpressMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/src/main/resources/mapper/express/ShippingTemplatesFreeMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/express/ShippingTemplatesFreeMapper.xml similarity index 64% rename from crmeb/src/main/resources/mapper/express/ShippingTemplatesFreeMapper.xml rename to crmeb/crmeb-service/src/main/resources/mapper/express/ShippingTemplatesFreeMapper.xml index b4b35cfd..cfdb8acf 100644 --- a/crmeb/src/main/resources/mapper/express/ShippingTemplatesFreeMapper.xml +++ b/crmeb/crmeb-service/src/main/resources/mapper/express/ShippingTemplatesFreeMapper.xml @@ -1,8 +1,8 @@ - + - SELECT group_concat(`city_id`) AS city_id, title, `number`, price, uniqid FROM eb_shipping_templates_free where temp_id = #{tempId, jdbcType=INTEGER} GROUP BY `uniqid` ORDER BY id ASC diff --git a/crmeb/src/main/resources/mapper/log/StoreProductLogMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/express/ShippingTemplatesMapper.xml similarity index 71% rename from crmeb/src/main/resources/mapper/log/StoreProductLogMapper.xml rename to crmeb/crmeb-service/src/main/resources/mapper/express/ShippingTemplatesMapper.xml index a4cb169b..e34f6a3f 100644 --- a/crmeb/src/main/resources/mapper/log/StoreProductLogMapper.xml +++ b/crmeb/crmeb-service/src/main/resources/mapper/express/ShippingTemplatesMapper.xml @@ -1,5 +1,5 @@ - + diff --git a/crmeb/src/main/resources/mapper/express/ShippingTemplatesRegionMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/express/ShippingTemplatesRegionMapper.xml similarity index 65% rename from crmeb/src/main/resources/mapper/express/ShippingTemplatesRegionMapper.xml rename to crmeb/crmeb-service/src/main/resources/mapper/express/ShippingTemplatesRegionMapper.xml index 84ae777d..4bd90642 100644 --- a/crmeb/src/main/resources/mapper/express/ShippingTemplatesRegionMapper.xml +++ b/crmeb/crmeb-service/src/main/resources/mapper/express/ShippingTemplatesRegionMapper.xml @@ -1,8 +1,8 @@ - + - SELECT group_concat(`city_id`) AS city_id, title, `first`, first_price, `renewal`, renewal_price, uniqid FROM eb_shipping_templates_region where temp_id = #{tempId, jdbcType=INTEGER} GROUP BY `uniqid` ORDER BY id ASC 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 00000000..a1aca4e1 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/finance/UserExtractMapper.xml @@ -0,0 +1,4 @@ + + + + diff --git a/crmeb/src/main/resources/mapper/finance/UserFundsMonitorMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/finance/UserFundsMonitorMapper.xml similarity index 88% rename from crmeb/src/main/resources/mapper/finance/UserFundsMonitorMapper.xml rename to crmeb/crmeb-service/src/main/resources/mapper/finance/UserFundsMonitorMapper.xml index 965df83a..a2f12b2d 100644 --- a/crmeb/src/main/resources/mapper/finance/UserFundsMonitorMapper.xml +++ b/crmeb/crmeb-service/src/main/resources/mapper/finance/UserFundsMonitorMapper.xml @@ -1,7 +1,7 @@ - - SELECT u.uid, u.nickname, u.now_money, u.brokerage_price AS brokerage,u.create_time,u.spread_uid, IF(( Sum(b.price) ) IS NULL, 0.00, Sum(b.price)) AS total_brokerage, -- IF(( Sum(e.extract_price) ) IS NULL, 0.00, Sum(e.extract_price)) AS total_extract diff --git a/crmeb/src/main/resources/mapper/finance/UserRechargeMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/finance/UserRechargeMapper.xml similarity index 91% rename from crmeb/src/main/resources/mapper/finance/UserRechargeMapper.xml rename to crmeb/crmeb-service/src/main/resources/mapper/finance/UserRechargeMapper.xml index e76f0b44..01b8e82f 100644 --- a/crmeb/src/main/resources/mapper/finance/UserRechargeMapper.xml +++ b/crmeb/crmeb-service/src/main/resources/mapper/finance/UserRechargeMapper.xml @@ -1,6 +1,6 @@ - + + select count(*) from + (SELECT uid,count(id) as visits FROM `eb_user_visit_record` where uid > 0 and date = #{date} group by uid) as a + where a.visits > 1 + + + + 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 00000000..605540bf --- /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 00000000..b484ac11 --- /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 00000000..2c94961d --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreBargainMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/src/main/resources/mapper/store/StoreOrderStatusMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreBargainUserHelpMapper.xml similarity index 71% rename from crmeb/src/main/resources/mapper/store/StoreOrderStatusMapper.xml rename to crmeb/crmeb-service/src/main/resources/mapper/store/StoreBargainUserHelpMapper.xml index acf82c2f..ff31a1c1 100644 --- a/crmeb/src/main/resources/mapper/store/StoreOrderStatusMapper.xml +++ b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreBargainUserHelpMapper.xml @@ -1,5 +1,5 @@ - + diff --git a/crmeb/src/main/resources/mapper/sms/SmsRecordMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreBargainUserMapper.xml similarity index 71% rename from crmeb/src/main/resources/mapper/sms/SmsRecordMapper.xml rename to crmeb/crmeb-service/src/main/resources/mapper/store/StoreBargainUserMapper.xml index 9df5f30f..2467b160 100644 --- a/crmeb/src/main/resources/mapper/sms/SmsRecordMapper.xml +++ b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreBargainUserMapper.xml @@ -1,5 +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 00000000..6c334111 --- /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 00000000..afd8837f --- /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 00000000..103aed2c --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreOrderInfoMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + diff --git a/crmeb/src/main/resources/mapper/store/StoreOrderMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreOrderMapper.xml similarity index 71% rename from crmeb/src/main/resources/mapper/store/StoreOrderMapper.xml rename to crmeb/crmeb-service/src/main/resources/mapper/store/StoreOrderMapper.xml index 49f69505..e41ee51f 100644 --- a/crmeb/src/main/resources/mapper/store/StoreOrderMapper.xml +++ b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreOrderMapper.xml @@ -1,6 +1,6 @@ - + select count(id) from eb_store_order where ${where} and refund_status = 2 - select sum(o.`pay_price`) as price, count(o.`id`) as count, DATE_FORMAT(o.`create_time`, '%Y-%m-%d') as time from `eb_store_order` o where o.`is_del` = 0 and o.`paid` = 1 and o.`refund_status` = 0 @@ -24,8 +24,8 @@ GROUP by DATE_FORMAT(o.`create_time`, '%Y-%m-%d') order by o.`create_time` desc limit #{ page },#{ limit }; - select sum(o.pay_price) as num,date_format(o.create_time, '%Y-%m-%d') as time from eb_store_order o where o.is_del >= 0 and o.paid >= 1 and o.refund_status >= 0 @@ -34,8 +34,8 @@ group by date_format(o.create_time, '%Y-%m-%d') order by o.create_time desc; - select count(id) as num, date_format(o.create_time, '%Y-%m-%d') as time from eb_store_order o where o.is_del >= 0 and o.paid >= 1 and o.refund_status >= 0 @@ -44,4 +44,11 @@ group by date_format(o.create_time, '%Y-%m-%d') order by o.create_time asc; + + 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 00000000..0693883a --- /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 00000000..bd1b605e --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/store/StorePinkMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/src/main/resources/mapper/store/StoreProductAttrMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreProductAttrMapper.xml similarity index 71% rename from crmeb/src/main/resources/mapper/store/StoreProductAttrMapper.xml rename to crmeb/crmeb-service/src/main/resources/mapper/store/StoreProductAttrMapper.xml index 7fe94dd1..2d2dfdb0 100644 --- a/crmeb/src/main/resources/mapper/store/StoreProductAttrMapper.xml +++ b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreProductAttrMapper.xml @@ -1,7 +1,7 @@ - - + + update eb_store_product_attr attr_name = #{ attrName }, diff --git a/crmeb/src/main/resources/mapper/store/StoreBargainUserMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreProductAttrResultMapper.xml similarity index 71% rename from crmeb/src/main/resources/mapper/store/StoreBargainUserMapper.xml rename to crmeb/crmeb-service/src/main/resources/mapper/store/StoreProductAttrResultMapper.xml index f522df9a..ffc0bb91 100644 --- a/crmeb/src/main/resources/mapper/store/StoreBargainUserMapper.xml +++ b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreProductAttrResultMapper.xml @@ -1,5 +1,5 @@ - + diff --git a/crmeb/src/main/resources/mapper/store/StoreProductReplyMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreProductAttrValueMapper.xml similarity index 71% rename from crmeb/src/main/resources/mapper/store/StoreProductReplyMapper.xml rename to crmeb/crmeb-service/src/main/resources/mapper/store/StoreProductAttrValueMapper.xml index a601912e..1873233d 100644 --- a/crmeb/src/main/resources/mapper/store/StoreProductReplyMapper.xml +++ b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreProductAttrValueMapper.xml @@ -1,5 +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 00000000..8fcd0064 --- /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 00000000..ca4ba177 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreProductCouponMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/src/main/resources/mapper/express/ShippingTemplatesMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreProductDescriptionMapper.xml similarity index 71% rename from crmeb/src/main/resources/mapper/express/ShippingTemplatesMapper.xml rename to crmeb/crmeb-service/src/main/resources/mapper/store/StoreProductDescriptionMapper.xml index 780910a3..9da5616e 100644 --- a/crmeb/src/main/resources/mapper/express/ShippingTemplatesMapper.xml +++ b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreProductDescriptionMapper.xml @@ -1,5 +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 00000000..04cc031b --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreProductMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/src/main/resources/mapper/store/StoreProductRelationMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreProductRelationMapper.xml similarity index 76% rename from crmeb/src/main/resources/mapper/store/StoreProductRelationMapper.xml rename to crmeb/crmeb-service/src/main/resources/mapper/store/StoreProductRelationMapper.xml index a8735b21..bd8bfadd 100644 --- a/crmeb/src/main/resources/mapper/store/StoreProductRelationMapper.xml +++ b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreProductRelationMapper.xml @@ -1,7 +1,7 @@ - - -- SELECT r.id,r.product_id as productId,r.create_time as createTime,p.store_name as storeName,p.image,p.price SELECT r.id,r.product_id,r.create_time,p.store_name,p.image,p.price FROM eb_store_product_relation r 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 00000000..57d98fb5 --- /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 00000000..bc783820 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreProductRuleMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/src/main/resources/mapper/store/StoreSeckillMangerMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreSeckillMangerMapper.xml similarity index 71% rename from crmeb/src/main/resources/mapper/store/StoreSeckillMangerMapper.xml rename to crmeb/crmeb-service/src/main/resources/mapper/store/StoreSeckillMangerMapper.xml index 041d2b97..8a9701bc 100644 --- a/crmeb/src/main/resources/mapper/store/StoreSeckillMangerMapper.xml +++ b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreSeckillMangerMapper.xml @@ -1,5 +1,5 @@ - + diff --git a/crmeb/src/main/resources/mapper/store/StoreSeckillMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreSeckillMapper.xml similarity index 73% rename from crmeb/src/main/resources/mapper/store/StoreSeckillMapper.xml rename to crmeb/crmeb-service/src/main/resources/mapper/store/StoreSeckillMapper.xml index 651d733e..9b09f1fd 100644 --- a/crmeb/src/main/resources/mapper/store/StoreSeckillMapper.xml +++ b/crmeb/crmeb-service/src/main/resources/mapper/store/StoreSeckillMapper.xml @@ -1,5 +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 00000000..b2608a85 --- /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 00000000..37eda096 --- /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 00000000..4e81a63d --- /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 00000000..dc29a99a --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/system/SystemConfigMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/src/main/resources/mapper/article/ArticleMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/system/SystemFormTempMapper.xml similarity index 72% rename from crmeb/src/main/resources/mapper/article/ArticleMapper.xml rename to crmeb/crmeb-service/src/main/resources/mapper/system/SystemFormTempMapper.xml index fdffc169..f875545e 100644 --- a/crmeb/src/main/resources/mapper/article/ArticleMapper.xml +++ b/crmeb/crmeb-service/src/main/resources/mapper/system/SystemFormTempMapper.xml @@ -1,5 +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 00000000..5e2a7411 --- /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 00000000..4ab02d2b --- /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 00000000..5a32de8d --- /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 00000000..274a7ff9 --- /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 00000000..fad69bd8 --- /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 00000000..d85cf7ab --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/system/SystemRoleMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/src/main/resources/mapper/express/ExpressMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/system/SystemRoleMenuMapper.xml similarity index 72% rename from crmeb/src/main/resources/mapper/express/ExpressMapper.xml rename to crmeb/crmeb-service/src/main/resources/mapper/system/SystemRoleMenuMapper.xml index 52ff5c0b..39199ff4 100644 --- a/crmeb/src/main/resources/mapper/express/ExpressMapper.xml +++ b/crmeb/crmeb-service/src/main/resources/mapper/system/SystemRoleMenuMapper.xml @@ -1,5 +1,5 @@ - + diff --git a/crmeb/src/main/resources/mapper/system/SystemAttachmentMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/system/SystemRolePermissionsMapper.xml similarity index 71% rename from crmeb/src/main/resources/mapper/system/SystemAttachmentMapper.xml rename to crmeb/crmeb-service/src/main/resources/mapper/system/SystemRolePermissionsMapper.xml index bf2a9b61..e2216fbe 100644 --- a/crmeb/src/main/resources/mapper/system/SystemAttachmentMapper.xml +++ b/crmeb/crmeb-service/src/main/resources/mapper/system/SystemRolePermissionsMapper.xml @@ -1,5 +1,5 @@ - + diff --git a/crmeb/src/main/resources/mapper/system/SystemStoreMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/system/SystemStoreMapper.xml similarity index 72% rename from crmeb/src/main/resources/mapper/system/SystemStoreMapper.xml rename to crmeb/crmeb-service/src/main/resources/mapper/system/SystemStoreMapper.xml index 0e6cb3f0..d03d195e 100644 --- a/crmeb/src/main/resources/mapper/system/SystemStoreMapper.xml +++ b/crmeb/crmeb-service/src/main/resources/mapper/system/SystemStoreMapper.xml @@ -1,8 +1,8 @@ - + - SELECT *, (round(6367000 * 2 * asin(sqrt(pow(sin(((latitude * pi()) / 180 - (${latitude} * pi()) / 180) / 2), 2) + cos((${latitude} * pi()) / 180) * cos((latitude * pi()) / 180) * pow(sin(((longitude * pi()) / 180 - (${longitude} * pi()) / 180) / 2), 2))))) AS distance FROM eb_system_store WHERE is_show = 1 and is_del = 0 ORDER BY distance asc 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 00000000..c6b70533 --- /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 00000000..8900eb4a --- /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 00000000..3313ed91 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/user/UserAddressMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/src/main/resources/mapper/user/UserBillMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/user/UserBillMapper.xml similarity index 59% rename from crmeb/src/main/resources/mapper/user/UserBillMapper.xml rename to crmeb/crmeb-service/src/main/resources/mapper/user/UserBillMapper.xml index 1c8420de..71e9b228 100644 --- a/crmeb/src/main/resources/mapper/user/UserBillMapper.xml +++ b/crmeb/crmeb-service/src/main/resources/mapper/user/UserBillMapper.xml @@ -1,28 +1,8 @@ - + - - - SELECT ub.id,ub.link_id AS linkId,ub.pm,ub.title,ub.category,ub.type,ub.number,ub.balance,ub.mark,ub.status,ub.create_time AS createTime,ub.update_time AS updateTime,u.nickname,ub.uid FROM eb_user_bill ub LEFT JOIN eb_user u ON ub.uid = u.uid where 1 = 1 @@ -48,13 +28,16 @@ ORDER BY ub.id DESC,ub.create_time DESC - SELECT ub.id,ub.link_id AS linkId,ub.pm,ub.title,ub.category,ub.type,ub.number,ub.balance,ub.mark,ub.status,ub.create_time AS createTime,ub.update_time AS updateTime,u.nickname,ub.uid FROM eb_user_bill ub LEFT JOIN eb_user u ON ub.uid = u.uid where ub.category = 'now_money' and ( ub.uid like #{keywords} or u.nickname like #{keywords, jdbcType=VARCHAR}) + + and ub.title = #{title, jdbcType=VARCHAR} + and (ub.create_time between #{startTime} and #{endTime}) diff --git a/crmeb/src/main/resources/mapper/marketing/StoreCouponMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/user/UserBrokerageRecordMapper.xml similarity index 71% rename from crmeb/src/main/resources/mapper/marketing/StoreCouponMapper.xml rename to crmeb/crmeb-service/src/main/resources/mapper/user/UserBrokerageRecordMapper.xml index e748f2f3..6f9db339 100644 --- a/crmeb/src/main/resources/mapper/marketing/StoreCouponMapper.xml +++ b/crmeb/crmeb-service/src/main/resources/mapper/user/UserBrokerageRecordMapper.xml @@ -1,5 +1,5 @@ - + diff --git a/crmeb/src/main/resources/mapper/store/StoreProductCateMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/user/UserExperienceRecordMapper.xml similarity index 71% rename from crmeb/src/main/resources/mapper/store/StoreProductCateMapper.xml rename to crmeb/crmeb-service/src/main/resources/mapper/user/UserExperienceRecordMapper.xml index d2602882..385d01c5 100644 --- a/crmeb/src/main/resources/mapper/store/StoreProductCateMapper.xml +++ b/crmeb/crmeb-service/src/main/resources/mapper/user/UserExperienceRecordMapper.xml @@ -1,5 +1,5 @@ - + diff --git a/crmeb/src/main/resources/mapper/user/UserGroupMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/user/UserGroupMapper.xml similarity index 73% rename from crmeb/src/main/resources/mapper/user/UserGroupMapper.xml rename to crmeb/crmeb-service/src/main/resources/mapper/user/UserGroupMapper.xml index 8b523d8b..352e5a00 100644 --- a/crmeb/src/main/resources/mapper/user/UserGroupMapper.xml +++ b/crmeb/crmeb-service/src/main/resources/mapper/user/UserGroupMapper.xml @@ -1,5 +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 00000000..3b37f9ab --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/user/UserIntegralRecordMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/src/main/resources/mapper/user/UserLevelMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/user/UserLevelMapper.xml similarity index 73% rename from crmeb/src/main/resources/mapper/user/UserLevelMapper.xml rename to crmeb/crmeb-service/src/main/resources/mapper/user/UserLevelMapper.xml index 61c51ec2..4287cd63 100644 --- a/crmeb/src/main/resources/mapper/user/UserLevelMapper.xml +++ b/crmeb/crmeb-service/src/main/resources/mapper/user/UserLevelMapper.xml @@ -1,5 +1,5 @@ - + diff --git a/crmeb/src/main/resources/mapper/user/UserMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/user/UserMapper.xml similarity index 75% rename from crmeb/src/main/resources/mapper/user/UserMapper.xml rename to crmeb/crmeb-service/src/main/resources/mapper/user/UserMapper.xml index 40bcb2f1..897f8811 100644 --- a/crmeb/src/main/resources/mapper/user/UserMapper.xml +++ b/crmeb/crmeb-service/src/main/resources/mapper/user/UserMapper.xml @@ -1,18 +1,9 @@ - - - update eb_user set ${foundsType} = ${foundsType}+${value} where uid = #{uid, jdbcType=INTEGER} - + - + SELECT u.uid,u.nickname, u.avatar, DATE_FORMAT(u.spread_time, '%Y-%m-%d %H:%i:%s') AS `time`, u.spread_count AS childCount FROM eb_user AS u where 1 = 1 and u.uid in (${userIdList}) @@ -23,7 +14,7 @@ ORDER BY ${sortKey} ${sortValue} - SELECT u.* FROM eb_user AS u INNER JOIN eb_user_token AS ut on u.uid = ut.uid and ut.type = 1 diff --git a/crmeb/src/main/resources/mapper/user/UserSignMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/user/UserSignMapper.xml similarity index 73% rename from crmeb/src/main/resources/mapper/user/UserSignMapper.xml rename to crmeb/crmeb-service/src/main/resources/mapper/user/UserSignMapper.xml index ddd03d2e..1d062714 100644 --- a/crmeb/src/main/resources/mapper/user/UserSignMapper.xml +++ b/crmeb/crmeb-service/src/main/resources/mapper/user/UserSignMapper.xml @@ -1,5 +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 00000000..5744604b --- /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 00000000..f69dee5f --- /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 00000000..df92a135 --- /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 00000000..ae94167e --- /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 00000000..14f849b0 --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/wechat/WechatExceptionsMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/src/main/resources/mapper/store/StoreCartMapper.xml b/crmeb/crmeb-service/src/main/resources/mapper/wechat/WechatPayInfoMapper.xml similarity index 72% rename from crmeb/src/main/resources/mapper/store/StoreCartMapper.xml rename to crmeb/crmeb-service/src/main/resources/mapper/wechat/WechatPayInfoMapper.xml index d18fcc6a..57abf781 100644 --- a/crmeb/src/main/resources/mapper/store/StoreCartMapper.xml +++ b/crmeb/crmeb-service/src/main/resources/mapper/wechat/WechatPayInfoMapper.xml @@ -1,5 +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 00000000..2cd318e4 --- /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 00000000..f99494cc --- /dev/null +++ b/crmeb/crmeb-service/src/main/resources/mapper/wechat/WechatReplyMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/crmeb/pom.xml b/crmeb/pom.xml index 7c66b815..3ed2be11 100644 --- a/crmeb/pom.xml +++ b/crmeb/pom.xml @@ -2,12 +2,19 @@ 4.0.0 - + pom + + crmeb-common + crmeb-service + crmeb-admin + crmeb-front + + - + <!– lookup parent from repository –> + --> com.zbkj crmeb 0.0.1-SNAPSHOT @@ -19,43 +26,19 @@ 2.9.2 1.5.22 1.9.3 + + UTF-8 + + 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 + spring-boot-dependencies + 2.2.6.RELEASE + pom + import @@ -82,28 +65,19 @@ - - org.projectlombok - lombok - true - com.baomidou mybatis-plus-boot-starter 3.3.1 - - - org.springframework.boot - spring-boot-test - junit junit 4.12 test + org.springframework spring-test @@ -148,46 +122,32 @@ + io.swagger swagger-models ${swagger-models.version} + com.github.xiaoymin swagger-bootstrap-ui ${swagger-bootstrap-ui.version} - - - org.springframework.boot - spring-boot-autoconfigure - - - - - ch.qos.logback - logback-classic - - net.logstash.logback logstash-logback-encoder 5.3 - - org.springframework.boot - spring-boot-starter-web - - org.springframework.boot spring-boot-starter-data-redis 2.2.0.RELEASE + redis.clients jedis @@ -207,41 +167,19 @@ + javax.validation validation-api 1.1.0.Final - - org.springframework.data - spring-data-commons - cn.hutool hutool-all 4.5.7 - - org.springframework.boot - spring-boot-starter-actuator - - - - - - - - - - - - - - - - org.apache.httpcomponents @@ -249,12 +187,6 @@ 4.5.6 - - - org.springframework.boot - spring-boot-starter-aop - - org.apache.commons @@ -327,12 +259,7 @@ 1.4.10 - - - org.springframework.boot - spring-boot-devtools - true - + org.mongodb mongodb-driver-core @@ -381,51 +308,29 @@ jwks-rsa 0.9.0 + - - - + - - Crmeb - org.springframework.boot - spring-boot-maven-plugin + org.apache.maven.plugins + maven-compiler-plugin + 3.6.1 + + 1.8 + 1.8 + UTF-8 + + -parameters + + + + + - - - - - - - - - - - - - - - - src/main/resources - true - - - - - - - - - src/main/java - - **/*.xml - - - diff --git a/crmeb/src/main/java/com/common/CheckAdminToken.java b/crmeb/src/main/java/com/common/CheckAdminToken.java deleted file mode 100644 index 9712f66f..00000000 --- a/crmeb/src/main/java/com/common/CheckAdminToken.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.common; - -import com.constants.Constants; -import com.utils.RedisUtil; -import com.utils.ThreadLocalUtil; -import com.zbkj.crmeb.authorization.model.TokenModel; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import javax.servlet.http.HttpServletRequest; -import java.util.HashMap; -import java.util.Map; -import java.util.concurrent.TimeUnit; - -/** - * 检测token是否过期 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Component -public class CheckAdminToken { - - - @Autowired - protected RedisUtil redisUtil; - - public Boolean check(String token){ - - try { - boolean exists = redisUtil.exists(TokenModel.TOKEN_REDIS + token); - if(exists){ - Object value = redisUtil.get(TokenModel.TOKEN_REDIS + token); - - Map hashedMap = new HashMap<>(); - hashedMap.put("id", value); - ThreadLocalUtil.set(hashedMap); - - redisUtil.set(TokenModel.TOKEN_REDIS +token, value, Constants.TOKEN_EXPRESS_MINUTES, TimeUnit.MINUTES); - } - return exists; - }catch (Exception e){ - return false; - } - } - - public String getTokenFormRequest(HttpServletRequest request){ - String pathToken =request.getParameter(Constants.HEADER_AUTHORIZATION_KEY); - if(null != pathToken){ - return pathToken; - } - return request.getHeader(Constants.HEADER_AUTHORIZATION_KEY); - } - - public static String st = "ags0o175LNCnToaXF9EaLdQ"; - public static String sk = "p&va7ylslUKwgx1vm8)L"; -} diff --git a/crmeb/src/main/java/com/common/CheckFrontToken.java b/crmeb/src/main/java/com/common/CheckFrontToken.java deleted file mode 100644 index b19f6555..00000000 --- a/crmeb/src/main/java/com/common/CheckFrontToken.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.common; - -import com.constants.Constants; -import com.utils.RedisUtil; -import com.utils.RequestUtil; -import com.utils.ThreadLocalUtil; -import org.apache.commons.lang3.ArrayUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import javax.servlet.http.HttpServletRequest; -import java.util.HashMap; -import java.util.Map; -import java.util.concurrent.TimeUnit; - -/** - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - * 检测token是否过期 - */ -@Component -public class CheckFrontToken { - - @Autowired - protected RedisUtil redisUtil; - - public Boolean check(String token, HttpServletRequest request){ - - try { - boolean exists = redisUtil.exists(Constants.USER_TOKEN_REDIS_KEY_PREFIX + token); - if(exists){ - Object value = redisUtil.get(Constants.USER_TOKEN_REDIS_KEY_PREFIX + token); - - Map hashedMap = new HashMap<>(); - hashedMap.put("id", value); - ThreadLocalUtil.set(hashedMap); - - redisUtil.set(Constants.USER_TOKEN_REDIS_KEY_PREFIX +token, value, Constants.TOKEN_EXPRESS_MINUTES, TimeUnit.MINUTES); - }else{ - //判断路由,部分路由不管用户是否登录/token过期都可以访问 - exists = checkRouter(RequestUtil.getUri(request)); - } - - - return exists; - }catch (Exception e){ - return false; - } - } - - //路由在此处,则返回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" - - }; - - return ArrayUtils.contains(routerList, uri); - } - - public String getTokenFormRequest(HttpServletRequest request){ - return request.getHeader(Constants.HEADER_AUTHORIZATION_KEY); - } -} diff --git a/crmeb/src/main/java/com/constants/WeChatConstants.java b/crmeb/src/main/java/com/constants/WeChatConstants.java deleted file mode 100644 index c1add9a4..00000000 --- a/crmeb/src/main/java/com/constants/WeChatConstants.java +++ /dev/null @@ -1,227 +0,0 @@ -package com.constants; - -/** 微信配置 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 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_KEY = "wechat_appid"; - /** 公众号appSecret key */ - public static final String WECHAT_PUBLIC_APPSECRET_KEY = "wechat_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"; - //JsApiTicket - public static final String REDIS_PUBLIC_JS_API_TICKET = "wechat_js_api_ticket"; - public static final Long REDIS_PUBLIC_JS_API_TICKET_EXPRESS = 7100L; - - - //授权请求地址 - 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"; -} diff --git a/crmeb/src/main/java/com/exception/ApiException.java b/crmeb/src/main/java/com/exception/ApiException.java deleted file mode 100644 index 6a726ef8..00000000 --- a/crmeb/src/main/java/com/exception/ApiException.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.exception; - -/** - * Api异常类 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -public class ApiException extends RuntimeException{ - - private ExceptionHandler exceptionHandler; - - public ApiException(ExceptionHandler exceptionHandler) { - super(exceptionHandler.getMessage()); - this.exceptionHandler = exceptionHandler; - } - - public ApiException(String message) { - super(message); - } - - public ApiException(Throwable cause) { - super(cause); - } - - public ApiException(String message, Throwable cause) { - super(message, cause); - } - - public ExceptionHandler getErrorCode() { - return exceptionHandler; - } -} diff --git a/crmeb/src/main/java/com/im/MessageVo.java b/crmeb/src/main/java/com/im/MessageVo.java deleted file mode 100644 index f979aa42..00000000 --- a/crmeb/src/main/java/com/im/MessageVo.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.im; - -import lombok.Data; - -/** - * 消息Vo对象 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -public class MessageVo { - public MessageVo(Integer fromId, Integer toId, String message) { - this.fromId = fromId; - this.toId = toId; - this.message = message; - } - - public Integer fromId; - public Integer toId; - public String message; -} diff --git a/crmeb/src/main/java/com/im/SocketClient.java b/crmeb/src/main/java/com/im/SocketClient.java deleted file mode 100644 index 35fe3e29..00000000 --- a/crmeb/src/main/java/com/im/SocketClient.java +++ /dev/null @@ -1,137 +0,0 @@ -package com.im; - -import com.alibaba.fastjson.JSONObject; -import lombok.SneakyThrows; - -import java.io.IOException; -import java.io.InputStream; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; -import java.net.Socket; -import java.net.SocketException; -import java.util.Scanner; -import java.util.logging.Level; -import java.util.logging.Logger; - -/** - * SocketClient 客户端 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -public class SocketClient { - public static final int port = SocketServer.port; - public static final String address = SocketServer.address; - private static Logger log = Logger.getLogger("client"); - //为了方便使用直接定义为静态属性,,调用很方便。 - private static Socket client = null; - //给客户端起个名字 - private static String clientName = "客服"; - private static Integer fromId = 1; - private static Integer toId = 10001; - - private static MessageVo messageVo = new MessageVo(fromId, toId, clientName +"说:正在连接服务器"); - - public static void main(String[] args) throws IOException, InterruptedException { - log.log(Level.INFO, "客户端" + clientName + "开始链接,端口:" + port); - client = new Socket(address, port); - new SendThread().start(); - new ReceiveThread().start(); - sendSocketServer(JSONObject.toJSONString(messageVo), client);//发送消息 - while (!client.isClosed()) { - Thread.sleep(1000); - } -// //测试连接数 -// Integer nowTime = DateUtil.getNowTime(); -// int i = 1; -// try{ -// while(true){ -// log.log(Level.INFO, "客户端" + clientName + "开始链接,端口:" + port); -// client = new Socket(address, port); -// new SendThread().start(); -// new ReceiveThread().start(); -// sendSocketServer(JSONObject.toJSONString(messageVo), client);//发送消息 -// i++; -// } -// }catch (Exception | OutOfMemoryError e){ -// log.log(Level.INFO, "服务器断开连接, " + e.getMessage()); -// } finally { -// int totalTime = DateUtil.getNowTime() - nowTime; -// int avg = i / totalTime; -// log.log(Level.INFO, "服务器断开连接, 耗时:" + totalTime + ", 平均每一秒:" + avg); -// } - } - - /** - * 发送Socket的socket - * @param outStr 待发送信息 - * @param client 客户端Socket - */ - private static void sendSocketServer(String outStr, Socket client) { - try { - ObjectOutputStream oos = new ObjectOutputStream(client.getOutputStream()); - oos.writeObject(outStr); - oos.flush();//刷新,将流发出去 - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * 发送信息线程 - */ - static class SendThread extends Thread { - @Override - public void run() { - super.run(); - while (!client.isClosed()) {//插入停止条件 - Scanner in = new Scanner(System.in);//接收输入 - String inputStr = in.next(); - if (inputStr != null) { - messageVo.setMessage(inputStr); - sendSocketServer(JSONObject.toJSONString(messageVo), client);//发送消息 - } - } - } - } - - /** - * 接受信息线程,,运行在后台,,等待输入信息 - */ - static class ReceiveThread extends Thread { - @SneakyThrows - @Override - public void run() { - super.run(); - try { - InputStream serverInputStream = client.getInputStream(); - while (!client.isClosed() && serverInputStream != null) {//插入停止条件 - ObjectInputStream ois = new ObjectInputStream(serverInputStream); - String inputStr = (String) ois.readObject(); - //获取输出流,经过测试发现,输入流貌似是阻塞,,也就是没有输入时, - // 他就停在这里了,,一直等着输入,,所以无需加入Thread.sleep(). - System.out.println(inputStr); - } - } catch (SocketException e) { - log.log(Level.INFO, "服务器断开连接!!!"); - try { - client.close();//服务器断开连接此时需要关闭客户端连接 - } catch (IOException e1) { - log.log(Level.FINE, e1.getMessage()); - - } - } catch (IOException | ClassNotFoundException e2) { - log.log(Level.FINE, e2.getMessage()); - }finally { - log.log(Level.FINE, "服务器断开连接!!!"); - client.close(); - } - } - } -} diff --git a/crmeb/src/main/java/com/im/SocketClient1.java b/crmeb/src/main/java/com/im/SocketClient1.java deleted file mode 100644 index 5b47d3d7..00000000 --- a/crmeb/src/main/java/com/im/SocketClient1.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.im; - -import com.alibaba.fastjson.JSONObject; - -import java.io.IOException; -import java.io.InputStream; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; -import java.net.Socket; -import java.net.SocketException; -import java.util.Scanner; -import java.util.logging.Level; -import java.util.logging.Logger; - -/** - * socket客户端1 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -public class SocketClient1 { - public static final int port = SocketServer.port; - public static final String address = SocketServer.address; - private static Logger log = Logger.getLogger("client"); - //为了方便使用直接定义为静态属性,,调用很方便。 - private static Socket client = null; - //给客户端起个名字 - private static String clientName = "张三"; - private static Integer fromId = 10001; - private static Integer toId = 1; - - private static MessageVo messageVo = new MessageVo(fromId, toId, clientName +"说:正在连接服务器"); - - public static void main(String[] args) throws IOException, InterruptedException { - log.log(Level.INFO, "客户端" + clientName + "开始链接,端口:" + port); - client = new Socket(address, port); - new SendThread().start(); - new ReceiveThread().start(); - sendSocketServer(JSONObject.toJSONString(messageVo), client);//发送消息 - while (!client.isClosed()) { - Thread.sleep(1000); - } - } - - /** - * 发送Socket的socket - * - * @param outStr 待发送信息 - * @param client 客户端Socket - */ - private static void sendSocketServer(String outStr, Socket client) { - try { - ObjectOutputStream oos = new ObjectOutputStream(client.getOutputStream()); - oos.writeObject(outStr); - oos.flush();//刷新,将流发出去 - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * 发送信息线程 - */ - static class SendThread extends Thread { - @Override - public void run() { - super.run(); - while (!client.isClosed()) {//插入停止条件 - Scanner in = new Scanner(System.in);//接收输入 - String inputStr = in.next(); - if (inputStr != null) { - messageVo.setMessage(inputStr); - sendSocketServer(JSONObject.toJSONString(messageVo), client);//发送消息 - } - } - } - } - - /** - * 接受信息线程,,运行在后台,,等待输入信息 - */ - static class ReceiveThread extends Thread { - @Override - public void run() { - super.run(); - try { - InputStream serverInputStream = client.getInputStream(); - while (!client.isClosed() && serverInputStream != null) {//插入停止条件 - ObjectInputStream ois = new ObjectInputStream(serverInputStream); - String inputStr = (String) ois.readObject(); - //获取输出流,经过测试发现,输入流貌似是阻塞,,也就是没有输入时, - // 他就停在这里了,,一直等着输入,,所以无需加入Thread.sleep(). - System.out.println(inputStr); - } - } catch (SocketException e) { - log.log(Level.INFO, "服务器断开连接!!!"); - try { - client.close();//服务器断开连接此时需要关闭客户端连接 - } catch (IOException e1) { - e1.printStackTrace(); - } - } catch (IOException | ClassNotFoundException e) { - e.printStackTrace(); - } - } - } -} diff --git a/crmeb/src/main/java/com/im/SocketClient2.java b/crmeb/src/main/java/com/im/SocketClient2.java deleted file mode 100644 index b1a64b5d..00000000 --- a/crmeb/src/main/java/com/im/SocketClient2.java +++ /dev/null @@ -1,112 +0,0 @@ -package com.im; - -import com.alibaba.fastjson.JSONObject; -import java.io.IOException; -import java.io.InputStream; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; -import java.net.Socket; -import java.net.SocketException; -import java.util.Scanner; -import java.util.logging.Level; -import java.util.logging.Logger; - -/** - * Socket客户端2 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -public class SocketClient2 { - public static final int port = SocketServer.port; - public static final String address = SocketServer.address; - private static Logger log = Logger.getLogger("client"); - //为了方便使用直接定义为静态属性,,调用很方便。 - private static Socket client = null; - //给客户端起个名字 - private static String clientName = "李四"; - private static Integer fromId = 10002; - private static Integer toId = 1; - - private static MessageVo messageVo = new MessageVo(fromId, toId, clientName +"说:正在连接服务器"); - - public static void main(String[] args) throws IOException, InterruptedException { - log.log(Level.INFO, "客户端" + clientName + "开始链接,端口:" + port); - client = new Socket(address, port); - new SendThread().start(); - new ReceiveThread().start(); - sendSocketServer(JSONObject.toJSONString(messageVo), client);//发送消息 - while (!client.isClosed()) { - Thread.sleep(1000); - } - } - - /** - * 发送Socket的socket - * - * @param outStr 待发送信息 - * @param client 客户端Socket - */ - private static void sendSocketServer(String outStr, Socket client) { - try { - ObjectOutputStream oos = new ObjectOutputStream(client.getOutputStream()); - oos.writeObject(outStr); - oos.flush();//刷新,将流发出去 - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * 发送信息线程 - */ - static class SendThread extends Thread { - @Override - public void run() { - super.run(); - while (!client.isClosed()) {//插入停止条件 - Scanner in = new Scanner(System.in);//接收输入 - String inputStr = in.next(); - if (inputStr != null) { - messageVo.setMessage(inputStr); - sendSocketServer(JSONObject.toJSONString(messageVo), client);//发送消息 - } - } - } - } - - /** - * 接受信息线程,,运行在后台,,等待输入信息 - */ - static class ReceiveThread extends Thread { - @Override - public void run() { - super.run(); - try { - InputStream serverInputStream = client.getInputStream(); - while (!client.isClosed() && serverInputStream != null) {//插入停止条件 - ObjectInputStream ois = new ObjectInputStream(serverInputStream); - String inputStr = (String) ois.readObject(); - //获取输出流,经过测试发现,输入流貌似是阻塞,,也就是没有输入时, - // 他就停在这里了,,一直等着输入,,所以无需加入Thread.sleep(). - System.out.println(inputStr); - } - } catch (SocketException e) { - log.log(Level.INFO, "服务器断开连接!!!"); - try { - client.close();//服务器断开连接此时需要关闭客户端连接 - } catch (IOException e1) { - e1.printStackTrace(); - } - } catch (IOException | ClassNotFoundException e) { - e.printStackTrace(); - } - } - } -} diff --git a/crmeb/src/main/java/com/im/SocketServer.java b/crmeb/src/main/java/com/im/SocketServer.java deleted file mode 100644 index 59bd94f0..00000000 --- a/crmeb/src/main/java/com/im/SocketServer.java +++ /dev/null @@ -1,103 +0,0 @@ -package com.im; - -import com.alibaba.fastjson.JSONObject; - -import java.io.IOException; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; -import java.net.ServerSocket; -import java.net.Socket; -import java.net.SocketException; -import java.util.HashMap; -import java.util.logging.Level; -import java.util.logging.Logger; - -/** - * Socket服务端 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -public class SocketServer { - //用于保存客户端Socket - - public static HashMap clientSocketList = new HashMap<>(); - public static HashMap userPortList = new HashMap<>(); - //服务器端口 - public static final int port = 12345; - //服务器主机名 - public static final String address = "127.0.0.1"; - //服务器接收消息,以日志形式记录,动态 - private static Logger log = Logger.getLogger("server"); - - - public static void main(String[] args) throws IOException{ - //创建ServerSocket监听 - ServerSocket serverSocket = new ServerSocket(port); - log.log(Level.INFO, "服务器开启监听,端口:" + port); - while (true) { - Socket client = serverSocket.accept();//阻塞监听 - new SocketDoWith(client).start();//创建线程对其进行操作 - log.log(Level.INFO, "端口:" + client.getPort() + "接入服务器"); - clientSocketList.put(client.getPort(), client); - } - } - - //服务器处理客户端Socket消息线程 - static class SocketDoWith extends Thread { - Logger log = Logger.getLogger("server"); - private Socket socket = null; - - public SocketDoWith(Socket socket) { - this.socket = socket; - } - - - public void run() { - if (socket == null) return; - try { - String readData; - while (!socket.isClosed()) { - //将输入封装成对象流(处理起来更方便) - ObjectInputStream oi = new ObjectInputStream(socket.getInputStream()); - readData = (String) oi.readObject(); - //将输入作为日志打印 - log.log(Level.INFO, "服务器接收内容:" + readData); - - int port = socket.getPort(); - MessageVo messageVo = JSONObject.parseObject(readData, MessageVo.class); - - //看发送者是否在, 不在的加进去 - if(!userPortList.containsKey(messageVo.getFromId())){ - userPortList.put(messageVo.getFromId(), port); - } - - //在线操作 - if(userPortList.containsKey(messageVo.getToId())){ - Socket client = clientSocketList.get(userPortList.get(messageVo.getToId())); - //把信息输出到,当前连接的所有客户端。 - if (!client.isClosed()) {//防止发现送消息给,,断连客户端。 - ObjectOutputStream oos = new ObjectOutputStream(client.getOutputStream()); - oos.writeObject(messageVo.getMessage()); - oos.flush(); -// log.log(Level.INFO, "服务器发送内容:" + messageVo.getMessage());//+ client.toString() + " " - } else {//断开的Socket就移除 - clientSocketList.remove(port);//移除 - log.log(Level.INFO, "服务器断开连接"); - } - } - } - } catch (SocketException e) { - log.log(Level.INFO, "客户端断开连接!!!" + e.getMessage()); - } catch (ClassNotFoundException | IOException e) { - log.log(Level.INFO, e.getMessage()); - } - } - } -} \ No newline at end of file diff --git a/crmeb/src/main/java/com/interceptor/AdminAuthInterceptor.java b/crmeb/src/main/java/com/interceptor/AdminAuthInterceptor.java deleted file mode 100644 index 193f387e..00000000 --- a/crmeb/src/main/java/com/interceptor/AdminAuthInterceptor.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.interceptor; - -import com.alibaba.fastjson.JSONObject; -import com.common.CommonResult; -import com.utils.RequestUtil; -import com.zbkj.crmeb.system.service.SystemRoleService; -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验证拦截器 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -public class AdminAuthInterceptor implements HandlerInterceptor { - @Autowired - private SystemRoleService systemRoleService; - - //程序处理之前需要处理的业务 - public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { - response.setCharacterEncoding("UTF-8"); - String uri = RequestUtil.getUri(request); - if(uri == null || uri.isEmpty()){ - response.getWriter().write(JSONObject.toJSONString(CommonResult.forbidden())); - return false; - } - - Boolean result = systemRoleService.checkAuth(uri); - - if(!result){ - response.getWriter().write(JSONObject.toJSONString(CommonResult.forbidden())); - 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/src/main/java/com/interceptor/AdminTokenInterceptor.java b/crmeb/src/main/java/com/interceptor/AdminTokenInterceptor.java deleted file mode 100644 index 7a085cfd..00000000 --- a/crmeb/src/main/java/com/interceptor/AdminTokenInterceptor.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.interceptor; - -import com.alibaba.fastjson.JSONObject; -import com.common.CheckAdminToken; -import com.common.CommonResult; -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; - - -/** - * PC管理端 token验证拦截器 使用前注意需要一个@Bean手动注解,否则注入无效 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -public class AdminTokenInterceptor implements HandlerInterceptor { - - @Autowired - CheckAdminToken checkAdminToken; - - //程序处理之前需要处理的业务 - public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { - response.setCharacterEncoding("UTF-8"); - String token = checkAdminToken.getTokenFormRequest(request); - - if(token == null || token.isEmpty()){ - response.getWriter().write(JSONObject.toJSONString(CommonResult.unauthorized())); - return false; - } - - Boolean result = checkAdminToken.check(token); - 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/src/main/java/com/utils/ExcelUtil.java b/crmeb/src/main/java/com/utils/ExcelUtil.java deleted file mode 100644 index ece731f4..00000000 --- a/crmeb/src/main/java/com/utils/ExcelUtil.java +++ /dev/null @@ -1,361 +0,0 @@ -package com.utils; - -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; -import com.constants.Constants; -import com.zbkj.crmeb.export.vo.ExcelColumn; - -import org.apache.commons.lang3.BooleanUtils; -import org.apache.commons.lang3.CharUtils; -import org.apache.commons.lang3.StringUtils; -import org.apache.commons.lang3.math.NumberUtils; -import org.apache.poi.hssf.usermodel.HSSFWorkbook; -import org.apache.poi.ss.usermodel.*; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.http.MediaType; -import org.springframework.web.multipart.MultipartFile; - -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.lang.reflect.Constructor; -import java.lang.reflect.Field; -import java.math.BigDecimal; -import java.net.URLEncoder; -import java.util.*; -import java.util.concurrent.atomic.AtomicInteger; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -/** excel操作类 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - **/ -public class ExcelUtil { - private final static Logger log = LoggerFactory.getLogger(ExcelUtil.class); - - private final static String EXCEL2003 = "xls"; - private final static String EXCEL2007 = "xlsx"; - - private static String sheetName; - - public static String getSheetName() { - return sheetName; - } - - public static void setSheetName(String sheetName) { - ExcelUtil.sheetName = sheetName; - } - - public static String getFileName() { - return fileName; - } - - public static void setFileName(String fileName) { - ExcelUtil.fileName = fileName; - } - - private static String fileName; - - - public static List readExcel(String path, Class cls, MultipartFile file){ - - String fileName = file.getOriginalFilename(); - if (!fileName.matches("^.+\\.(?i)(xls)$") && !fileName.matches("^.+\\.(?i)(xlsx)$")) { - log.error("上传文件格式不正确"); - } - List dataList = new ArrayList<>(); - Workbook workbook = null; - try { - InputStream is = file.getInputStream(); - if (fileName.endsWith(EXCEL2007)) { -// FileInputStream is = new FileInputStream(new File(path)); - workbook = new XSSFWorkbook(is); - } - if (fileName.endsWith(EXCEL2003)) { -// FileInputStream is = new FileInputStream(new File(path)); - workbook = new HSSFWorkbook(is); - } - if (workbook != null) { - //类映射 注解 value-->bean columns - Map> classMap = new HashMap<>(); - List fields = Stream.of(cls.getDeclaredFields()).collect(Collectors.toList()); - fields.forEach( - field -> { - ExcelColumn annotation = field.getAnnotation(ExcelColumn.class); - if (annotation != null) { - String value = annotation.value(); - if (StringUtils.isBlank(value)) { - return;//return起到的作用和continue是相同的 语法 - } - if (!classMap.containsKey(value)) { - classMap.put(value, new ArrayList<>()); - } - field.setAccessible(true); - classMap.get(value).add(field); - } - } - ); - //索引-->columns - Map> reflectionMap = new HashMap<>(16); - //默认读取第一个sheet - Sheet sheet = workbook.getSheetAt(0); - - boolean firstRow = true; - for (int i = sheet.getFirstRowNum(); i <= sheet.getLastRowNum(); i++) { - Row row = sheet.getRow(i); - //首行 提取注解 - if (firstRow) { - for (int j = row.getFirstCellNum(); j <= row.getLastCellNum(); j++) { - Cell cell = row.getCell(j); - String cellValue = getCellValue(cell); - if (classMap.containsKey(cellValue)) { - reflectionMap.put(j, classMap.get(cellValue)); - } - } - firstRow = false; - } else { - //忽略空白行 - if (row == null) { - continue; - } - try { - T t = cls.newInstance(); - //判断是否为空白行 - boolean allBlank = true; - for (int j = row.getFirstCellNum(); j <= row.getLastCellNum(); j++) { - if (reflectionMap.containsKey(j)) { - Cell cell = row.getCell(j); - String cellValue = getCellValue(cell); - if (StringUtils.isNotBlank(cellValue)) { - allBlank = false; - } - List fieldList = reflectionMap.get(j); - fieldList.forEach( - x -> { - try { - handleField(t, cellValue, x); - } catch (Exception e) { - log.error(String.format("reflect field:%s value:%s exception!", x.getName(), cellValue), e); - } - } - ); - } - } - if (!allBlank) { - dataList.add(t); - } else { - log.warn(String.format("row:%s is blank ignore!", i)); - } - } catch (Exception e) { - log.error(String.format("parse row:%s exception!", i), e); - } - } - } - } - } catch (Exception e) { - log.error(String.format("parse excel exception!"), e); - } finally { - if (workbook != null) { - try { - workbook.close(); - } catch (Exception e) { - log.error(String.format("parse excel exception!"), e); - } - } - } - return dataList; - } - - private static void handleField(T t, String value, Field field) throws Exception { - Class type = field.getType(); - if (type == null || type == void.class || StringUtils.isBlank(value)) { - return; - } - if (type == Object.class) { - field.set(t, value); - //数字类型 - } else if (type.getSuperclass() == null || type.getSuperclass() == Number.class) { - if (type == int.class || type == Integer.class) { - field.set(t, NumberUtils.toInt(value)); - } else if (type == long.class || type == Long.class) { - field.set(t, NumberUtils.toLong(value)); - } else if (type == byte.class || type == Byte.class) { - field.set(t, NumberUtils.toByte(value)); - } else if (type == short.class || type == Short.class) { - field.set(t, NumberUtils.toShort(value)); - } else if (type == double.class || type == Double.class) { - field.set(t, NumberUtils.toDouble(value)); - } else if (type == float.class || type == Float.class) { - field.set(t, NumberUtils.toFloat(value)); - } else if (type == char.class || type == Character.class) { - field.set(t, CharUtils.toChar(value)); - } else if (type == boolean.class) { - field.set(t, BooleanUtils.toBoolean(value)); - } else if (type == BigDecimal.class) { - field.set(t, new BigDecimal(value)); - } - } else if (type == Boolean.class) { - field.set(t, BooleanUtils.toBoolean(value)); - } else if (type == Date.class) { - // - field.set(t, value); - } else if (type == String.class) { - field.set(t, value); - } else { - Constructor constructor = type.getConstructor(String.class); - field.set(t, constructor.newInstance(value)); - } - } - - private static String getCellValue(Cell cell) { - if (cell == null) { - return ""; - } - if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) { -// if (DateUtil.checkDateFormat(cell.getNumericCellValue() + "", Constants.DATE_TIME_FORMAT_NUM)) { -// return HSSFDateUtil.getJavaDate(cell.getNumericCellValue()).toString(); -// } else { -// return new BigDecimal(cell.getNumericCellValue()).toString(); -// } - return cell.getNumericCellValue() + ""; - } else if (cell.getCellType() == Cell.CELL_TYPE_STRING) { - return StringUtils.trimToEmpty(cell.getStringCellValue()); - } else if (cell.getCellType() == Cell.CELL_TYPE_FORMULA) { - return StringUtils.trimToEmpty(cell.getCellFormula()); - } else if (cell.getCellType() == Cell.CELL_TYPE_BLANK) { - return ""; - } else if (cell.getCellType() == Cell.CELL_TYPE_BOOLEAN) { - return String.valueOf(cell.getBooleanCellValue()); - } else if (cell.getCellType() == Cell.CELL_TYPE_ERROR) { - return "ERROR"; - } else { - return cell.toString().trim(); - } - - } - - public static void writeExcel(HttpServletResponse response, List dataList, Class cls){ - Field[] fields = cls.getDeclaredFields(); - List fieldList = Arrays.stream(fields) - .filter(field -> { - ExcelColumn annotation = field.getAnnotation(ExcelColumn.class); - if (annotation != null && annotation.col() > 0) { - field.setAccessible(true); - return true; - } - return false; - }).sorted(Comparator.comparing(field -> { - int col = 0; - ExcelColumn annotation = field.getAnnotation(ExcelColumn.class); - if (annotation != null) { - col = annotation.col(); - } - return col; - })).collect(Collectors.toList()); - - Workbook wb = new XSSFWorkbook(); - Sheet sheet = wb.createSheet(getSheetName()); - AtomicInteger ai = new AtomicInteger(); - { - Row row = sheet.createRow(ai.getAndIncrement()); - AtomicInteger aj = new AtomicInteger(); - //写入头部 - fieldList.forEach(field -> { - ExcelColumn annotation = field.getAnnotation(ExcelColumn.class); - String columnName = ""; - if (annotation != null) { - columnName = annotation.value(); - } - Cell cell = row.createCell(aj.getAndIncrement()); - - CellStyle cellStyle = wb.createCellStyle(); - cellStyle.setFillForegroundColor(IndexedColors.WHITE.getIndex()); -// cellStyle.setFillPattern(CellStyle.SOLID_FOREGROUND); -// cellStyle.setAlignment(CellStyle.ALIGN_CENTER); - - Font font = wb.createFont(); -// font.setBoldweight(Font.BOLDWEIGHT_NORMAL); - cellStyle.setFont(font); - cell.setCellStyle(cellStyle); - cell.setCellValue(columnName); - }); - } - if (CollectionUtils.isNotEmpty(dataList)) { - dataList.forEach(t -> { - Row row1 = sheet.createRow(ai.getAndIncrement()); - AtomicInteger aj = new AtomicInteger(); - fieldList.forEach(field -> { - Class type = field.getType(); - Object value = ""; - try { - value = field.get(t); - } catch (Exception e) { - e.printStackTrace(); - } - Cell cell = row1.createCell(aj.getAndIncrement()); - if (value != null) { - if (type == Date.class) { - cell.setCellValue(value.toString()); - } else { - cell.setCellValue(value.toString()); - } - cell.setCellValue(value.toString()); - } - }); - }); - } - //冻结窗格 - wb.getSheet(getSheetName()).createFreezePane(0, 1, 0, 1); - //浏览器下载excel - buildExcelDocument(getFileName() + "_" + DateUtil.nowDate(Constants.DATE_TIME_FORMAT_NUM) +".xlsx", wb, response); - //生成excel文件 -// buildExcelFile(".\\default.xlsx",wb); - } - - /** - * 浏览器下载excel - * @param fileName - * @param wb - * @param response - */ - - private static void buildExcelDocument(String fileName, Workbook wb,HttpServletResponse response){ - try { - response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); - response.setHeader("Content-Disposition", "attachment;filename="+URLEncoder.encode(fileName, "utf-8")); - response.flushBuffer(); - wb.write(response.getOutputStream()); - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * 生成excel文件 - * @param path 生成excel路径 - * @param wb - */ - private static void buildExcelFile(String path, Workbook wb){ - - File file = new File(path); - if (file.exists()) { - file.delete(); - } - try { - wb.write(new FileOutputStream(file)); - } catch (Exception e) { - e.printStackTrace(); - } - } -} diff --git a/crmeb/src/main/java/com/utils/PinYinUtil.java b/crmeb/src/main/java/com/utils/PinYinUtil.java deleted file mode 100644 index 4f744259..00000000 --- a/crmeb/src/main/java/com/utils/PinYinUtil.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.utils; - -import net.sourceforge.pinyin4j.PinyinHelper; -import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType; -import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; -import net.sourceforge.pinyin4j.format.HanyuPinyinToneType; -import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination; - -/** - * 汉字拼音转换类 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -public class PinYinUtil { - /** - * 获取字符串拼音的第一个字母 - * @param chinese - * @return - */ - public static String toFirstChar(String chinese){ - StringBuilder pinyinStr = new StringBuilder(); - char[] newChar = chinese.toCharArray(); //转为单个字符 - HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat(); - defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE); - defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE); - for (char c : newChar) { - if (c > 128) { - try { - pinyinStr.append(PinyinHelper.toHanyuPinyinStringArray(c, defaultFormat)[0].charAt(0)); - } catch (BadHanyuPinyinOutputFormatCombination e) { - e.printStackTrace(); - } - } else { - pinyinStr.append(c); - } - } - return pinyinStr.toString(); - } - - /** - * 汉字转为拼音 - * @param chinese - * @return - */ - public static String toPinyin(String chinese){ - StringBuilder pinyinStr = new StringBuilder(); - char[] newChar = chinese.toCharArray(); - HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat(); - defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE); - defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE); - for (char c : newChar) { - if (c > 128) { - try { - pinyinStr.append(PinyinHelper.toHanyuPinyinStringArray(c, defaultFormat)[0]); - } catch (BadHanyuPinyinOutputFormatCombination e) { - e.printStackTrace(); - } - } else { - pinyinStr.append(c); - } - } - return pinyinStr.toString(); - } -} \ No newline at end of file diff --git a/crmeb/src/main/java/com/utils/ThreadLocalUtil.java b/crmeb/src/main/java/com/utils/ThreadLocalUtil.java deleted file mode 100644 index f602705e..00000000 --- a/crmeb/src/main/java/com/utils/ThreadLocalUtil.java +++ /dev/null @@ -1,97 +0,0 @@ -package com.utils; - -/** - * ThreadLocalUtil - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ - -import java.util.*; - -public final class ThreadLocalUtil { - - private ThreadLocalUtil() { - throw new IllegalStateException("Utility class"); - } - - private static final ThreadLocal> threadLocal = ThreadLocal.withInitial(() -> new HashMap(4)); - - public static Map getThreadLocal(){ - return threadLocal.get(); - } - public static T get(String key) { - Map map = (Map)threadLocal.get(); - return (T)map.get(key); - } - - public static T get(String key,T defaultValue) { - Map map = (Map)threadLocal.get(); - return (T)map.get(key) == null ? defaultValue : (T)map.get(key); - } - - public static void set(String key, Object value) { - Map map = (Map)threadLocal.get(); - map.put(key, value); - } - - public static void set(Map keyValueMap) { - Map map = (Map)threadLocal.get(); - map.putAll(keyValueMap); - } - - public static void remove() { - threadLocal.remove(); - } - - public static Map fetchVarsByPrefix(String prefix) { - Map vars = new HashMap<>(); - if( prefix == null ){ - return vars; - } - Map map = (Map)threadLocal.get(); - Set set = map.entrySet(); - - for( Map.Entry entry : set ){ - Object key = entry.getKey(); - if( key instanceof String ){ - if( ((String) key).startsWith(prefix) ){ - vars.put((String)key,(T)entry.getValue()); - } - } - } - return vars; - } - - public static T remove(String key) { - Map map = (Map)threadLocal.get(); - return (T)map.remove(key); - } - - public static void clear(String prefix) { - if( prefix == null ){ - return; - } - Map map = (Map)threadLocal.get(); - Set set = map.entrySet(); - List removeKeys = new ArrayList<>(); - - for( Map.Entry entry : set ){ - Object key = entry.getKey(); - if( key instanceof String ){ - if( ((String) key).startsWith(prefix) ){ - removeKeys.add((String)key); - } - } - } - for( String key : removeKeys ){ - map.remove(key); - } - } -} diff --git a/crmeb/src/main/java/com/utils/UploadUtil.java b/crmeb/src/main/java/com/utils/UploadUtil.java deleted file mode 100644 index 8f823d92..00000000 --- a/crmeb/src/main/java/com/utils/UploadUtil.java +++ /dev/null @@ -1,327 +0,0 @@ -package com.utils; - -import cn.hutool.core.util.RandomUtil; -import cn.hutool.core.util.StrUtil; -import com.constants.Constants; -import com.exception.CrmebException; -import com.zbkj.crmeb.upload.vo.FileResultVo; -import org.apache.commons.io.FilenameUtils; -import org.apache.commons.lang3.BooleanUtils; -import org.apache.commons.lang3.StringUtils; -import org.springframework.web.multipart.MultipartFile; - -import java.io.File; -import java.io.IOException; -import java.util.List; - -/** - * 上传工具类 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -public class UploadUtil { - - private static UploadUtil uploadUtil = new UploadUtil(); - - //服务器存储地址 -// private static String rootPath = "/www/wwwroot/upload"; - private static String rootPath = ""; - - //类型 -// private static String imagePath = "/image"; -// private static String type = "/image"; - private static String type = "/crmebimage"; - - - //模块 -// private static String modelPath = "/store"; - private static String modelPath = "/public"; - - //扩展名 - private static String extStr = "png,jpg"; - - //文件大小上限 - private static int size = 2; - - //是否压缩图片 - private static boolean isCompress = false; - - 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; - } - - public static boolean isIsCompress() { - return isCompress; - } - - public static void setIsCompress(boolean isCompress) { - UploadUtil.isCompress = isCompress; - } - - /** - * 获取单例 - * @author Mr.Zhang - * @since 2020-05-08 - */ - public static UploadUtil getInstance() { - if (uploadUtil == null) { - uploadUtil = new UploadUtil(); - } - return uploadUtil; - } - - - /** - * 根据文件的绝对路径创建一个文件对象. - * @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 extName 文件的后缀名 - * @author Mr.Zhang - * @since 2020-05-08 - */ - private static void isContains(String extName) { - if (StringUtils.isNotEmpty(getExtStr())) { - // 切割文件扩展名 - List extensionList = CrmebUtil.stringToArrayStr(getExtStr()); - - if (extensionList.size() > 0) { - //判断 - if (!extensionList.contains(extName)) { - throw new CrmebException("上传文件的类型只能是:" + getExtStr()); - } - } else { - throw new CrmebException("上传文件的类型只能是:" + getExtStr()); - } - } - } - -// /** -// * 图片压缩 -// * @param serverPath 图片的绝对路径 -// * @param childFile 子文件夹 -// * @param extName 文件的后缀 -// * @author Mr.Zhang -// * @since 2020-05-08 -// */ -// private static String thumbnails(String serverPath, String childFile, String extName) throws IOException { -// // 压缩后的相对路径文件名 -// String toFilePath = getDestPath(extName); -// -// // scale:图片缩放比例 -// // outputQuality:图片压缩比例 -// // toFile:图片位置 -// // outputFormat:文件输出后缀名 -// // Thumbnails 如果用来压缩 png 格式的文件,会越压越大, -// // 得把png格式的图片转换为jpg格式 -// if ("png".equalsIgnoreCase(extName)) { -// // 由于outputFormat会自动在路径后加上后缀名,所以移除以前的后缀名 -// String removeExtensionFilePath = FilenameUtils.removeExtension(toFilePath); -// Thumbnails.of(serverPath).scale(1f) -// .outputQuality(0.5f) -// .outputFormat("jpg") -// .toFile(getServerPath(removeExtensionFilePath)); -// toFilePath = removeExtensionFilePath + ".jpg"; -// } else { -// Thumbnails.of(serverPath).scale(1f).outputQuality(0.5f) -// .toFile(getServerPath(toFilePath)); -// } -// -// // 删除被压缩的文件 -// FileUtils.forceDelete(new File(serverPath)); -// -// return toFilePath; -// } - - /** - * 生成文件文件名 - * @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 getType() + getModelPath() + DateUtil.nowDate(Constants.DATE_FORMAT_DATE).replace("-", "/") + "/"; - } - - /** - * 检测文件大小上限 - * @author Mr.Zhang - * @since 2020-05-08 - */ - private static void checkSize(Long size) { - // 文件分隔符转化为当前系统的格式 - float fileSize = (float)size / 1024 / 1024; - String fs = String.format("%.2f", fileSize); - if( fileSize > getSize()){ - throw new CrmebException("最大允许上传" + getSize() + " MB的文件, 当前文件大小为 " + fs + " MB"); - } - } - - - /** - * 上传文件 - * @param multipartFile 上传的文件对象,必传 - * @author Mr.Zhang - * @since 2020-05-08 - */ - private static FileResultVo saveFile(MultipartFile multipartFile) throws IOException { - 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); - } - - //文件大小验证 - checkSize(multipartFile.getSize()); - - // 判断文件的后缀名是否符合规则 - isContains(extName); - - //文件名 - String newFileName = fileName(extName); - // 创建目标文件的名称,规则请看destPath方法 - String destPath = getDestPath(newFileName); - // 创建文件 - File file = createFile(destPath); - // 保存文件 - multipartFile.transferTo(file); - - // 拼装返回的数据 - FileResultVo result = new FileResultVo(); - //如果是图片,就进行图片处理 - if (BooleanUtils.isTrue(isIsCompress())) { -// // 图片处理 -// String toFilePath = thumbnails(serverPath, childFile, extName); -// // 得到处理后的图片文件对象 -// File file = new File(getServerPath()); -// // 压缩后的文件后缀名 -// String extExtName = FilenameUtils.getExtension(toFilePath); -// // 源文件=源文件名.压缩后的后缀名 -// String extFileName = FilenameUtils.getBaseName(fileName) + "." + FilenameUtils.getExtension(toFilePath); -// result.setFileSize(file.length()); -// result.setServerPath(toFilePath); -// result.setFileName(extFileName); -// result.setExtName(extExtName); - } else { - result.setFileSize(multipartFile.getSize()); - result.setFileName(fileName); - result.setExtName(extName); - result.setServerPath(destPath); - result.setUrl(getWebPath() + newFileName); - result.setType(multipartFile.getContentType()); - } - return result; - } - - /** - * 上传 - * @param multipartFile 上传的文件对象,必传 - * @since 2020-05-08 - * @author Mr.Zhang - */ - public static FileResultVo file(MultipartFile multipartFile) throws IOException { - return saveFile(multipartFile); - } -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/article/vo/ArticleVo.java b/crmeb/src/main/java/com/zbkj/crmeb/article/vo/ArticleVo.java deleted file mode 100644 index ddff82b7..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/article/vo/ArticleVo.java +++ /dev/null @@ -1,111 +0,0 @@ -package com.zbkj.crmeb.article.vo; - -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.ArrayList; -import java.util.Date; -import java.util.List; - -/** - * 文章管理 Vo - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 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") - @TableId(value = "id", type = IdType.AUTO) - private Integer id; - - @ApiModelProperty(value = "分类id") - private String cid; - - @ApiModelProperty(value = "分类") - private String categoryName; - - @ApiModelProperty(value = "文章标题") - private String title; - - @ApiModelProperty(value = "文章作者") - private String author; - - @ApiModelProperty(value = "文章图片 前端用") - private List imageInput = new ArrayList<>(); - - @ApiModelProperty(value = "文章图片 后端用") - private String imageInputs; - - @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 = "创建时间") - @JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8") - private Date createTime; - - @ApiModelProperty(value = "更新时间") - @JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8") - private Date updateTime; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/authorization/controller/AdminUserController.java b/crmeb/src/main/java/com/zbkj/crmeb/authorization/controller/AdminUserController.java deleted file mode 100644 index 919f5660..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/authorization/controller/AdminUserController.java +++ /dev/null @@ -1,102 +0,0 @@ -package com.zbkj.crmeb.authorization.controller; - -import com.common.CheckAdminToken; -import com.common.CommonResult; -import com.utils.CrmebUtil; -import com.zbkj.crmeb.system.request.SystemAdminLoginRequest; -import com.zbkj.crmeb.system.response.SystemAdminResponse; -import com.zbkj.crmeb.system.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.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import javax.servlet.http.HttpServletRequest; -import java.util.Map; - -/** - * Admin 平台用户 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Slf4j -@RestController -@RequestMapping("api/admin") -@Api(tags = "Admin 平台用户") -public class AdminUserController { - - @Autowired - private SystemAdminService systemAdminService; - - @Autowired - private CheckAdminToken checkAdminToken; - - @ApiOperation(value="PC登录") - @PostMapping(value = "/login", produces = "application/json") - public CommonResult SystemAdminLogin(@RequestBody @Validated SystemAdminLoginRequest systemAdminLoginRequest, HttpServletRequest request) throws Exception { - String ip = CrmebUtil.getClientIp(request); - SystemAdminResponse systemAdminResponse = systemAdminService.login(systemAdminLoginRequest, ip); -// if(StringUtils.isNotBlank(systemAdminLoginRequest.getWxCode())){ -// systemAdminService.bind(systemAdminLoginRequest.getWxCode(), systemAdminResponse.getId()); -// } - return CommonResult.success(systemAdminResponse, "login success"); - } - - @ApiOperation(value="PC登出") - @GetMapping(value = "/logout") - public CommonResult SystemAdminLogout(HttpServletRequest request) throws Exception { - String token = checkAdminToken.getTokenFormRequest(request); - systemAdminService.logout(token); - return CommonResult.success("logout success"); - } - - @ApiOperation(value="获取用户详情") - @GetMapping(value = "/getAdminInfoByToken") - public CommonResult getAdminInfo(HttpServletRequest request) throws Exception{ - String token = checkAdminToken.getTokenFormRequest(request); - SystemAdminResponse systemAdminResponse = systemAdminService.getInfoByToken(token); - - return CommonResult.success(systemAdminResponse); - } - - /** - * 获取登录页图片 - * @return Map - */ - @ApiOperation(value = "获取登录页图片") - @RequestMapping(value = "/getLoginPic", method = RequestMethod.GET) - public CommonResult> getLoginPic(){ - return CommonResult.success(systemAdminService.getLoginPic()); - } - -// /** -// * 微信登录公共号授权登录 -// * @author Mr.Zhang -// * @since 2020-05-25 -// */ -// @ApiOperation(value = "微信登录公共号授权登录") -// @RequestMapping(value = "/authorize/login", method = RequestMethod.GET) -// public CommonResult login(@RequestParam(value = "code") String code, HttpServletRequest request) throws Exception { -// return CommonResult.success(systemAdminService.weChatAuthorizeLogin(code, CrmebUtil.getClientIp(request))); -// } -// -// /** -// * 解绑微信 -// * @author Mr.Zhang -// * @since 2020-05-25 -// */ -// @ApiOperation(value = "解绑微信") -// @RequestMapping(value = "/unbind", method = RequestMethod.GET) -// public CommonResult bind(){ -// return CommonResult.success(systemAdminService.unBind()); -// } -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/authorization/manager/TokenManager.java b/crmeb/src/main/java/com/zbkj/crmeb/authorization/manager/TokenManager.java deleted file mode 100644 index 7413cef7..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/authorization/manager/TokenManager.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.zbkj.crmeb.authorization.manager; - -import com.common.CommonResult; -import com.zbkj.crmeb.authorization.model.TokenModel; - -/** - * TokenManager - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -public interface TokenManager { - - TokenModel createToken(String account, String value, String modelName) throws Exception; - - boolean checkToken(String token, String modelName); - - TokenModel getToken(String token, String modelName); - - String getCurrentClienttype(String userno); - - void deleteToken(String token, String modelName); - - Integer getUserCount(); - - CommonResult getOnlineUsers(Integer pageNo, Integer pageSize); - - TokenModel getRealToken(String userno); - - String getLocalInfoException(String key); - - Object getLocalInfo(String key); - - Integer getLocalUserId(); -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/authorization/manager/TokenManagerImpl.java b/crmeb/src/main/java/com/zbkj/crmeb/authorization/manager/TokenManagerImpl.java deleted file mode 100644 index 060bd9b3..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/authorization/manager/TokenManagerImpl.java +++ /dev/null @@ -1,195 +0,0 @@ -package com.zbkj.crmeb.authorization.manager; - -import com.common.CheckAdminToken; -import com.common.CommonResult; -import com.constants.Constants; -import com.exception.CrmebException; -import com.utils.CrmebUtil; -import com.utils.RedisUtil; -import com.utils.RestTemplateUtil; -import com.utils.ThreadLocalUtil; -import com.zbkj.crmeb.authorization.model.TokenModel; -import com.zbkj.crmeb.config.CorsConfig; -import com.zbkj.crmeb.express.service.impl.ExpressServiceImpl; -import com.zbkj.crmeb.validatecode.service.impl.ValidateCodeServiceImpl; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Component; -import org.springframework.util.LinkedMultiValueMap; -import org.springframework.util.MultiValueMap; - -import javax.servlet.http.HttpServletRequest; -import java.util.HashMap; -import java.util.Map; -import java.util.UUID; -import java.util.concurrent.TimeUnit; - -/** - * 口令管理 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Component -public class TokenManagerImpl implements TokenManager { - - @Autowired - private HttpServletRequest request; - - @Autowired - protected RedisUtil redisUtil; - - @Autowired - private RestTemplateUtil restTemplateUtil; - - @Value("${server.domain}") - private String domain; - - @Value("${server.version}") - private String version; - - /** - * 生成Token - * @param account String 账号 - * @param value String 存储value - * @param modelName String 模块 - * @author Mr.Zhang - * @since 2020-04-29 - */ - @Override - public TokenModel createToken(String account, String value, String modelName) throws Exception { - String _token = UUID.randomUUID().toString().replace("-", ""); - TokenModel token = new TokenModel(account, _token); - token.setUserNo(account); - String clientType = request.getParameter("clienttype"); - token.setClienttype(clientType == null ? "Web" : clientType); - token.setHost(request.getRemoteHost()); - token.setLastAccessedTime(System.currentTimeMillis()); - - redisUtil.set(modelName + _token, value, - Constants.TOKEN_EXPRESS_MINUTES, TimeUnit.MINUTES); - - Map hashedMap = new HashMap<>(); - hashedMap.put(modelName, value); - ThreadLocalUtil.set(hashedMap); - String host = StringUtils.isBlank(domain) ? request.getServerName() : domain; - String s = CrmebUtil.decryptPassowrd(CheckAdminToken.st + CorsConfig.st + ValidateCodeServiceImpl.st + ExpressServiceImpl.st, - CheckAdminToken.sk + CorsConfig.sk + ValidateCodeServiceImpl.sk + ExpressServiceImpl.sk); - - MultiValueMap pram = new LinkedMultiValueMap(); - pram.add("host",host); - pram.add("https","http://"+host); - pram.add("version",version); - restTemplateUtil.postFormData(s,pram); - redisUtil.set(Constants.HEADER_AUTHORIZATION_KEY,token.getToken()); - return token; - } - - /** - * 获取本地存储的实际 - * @param key String 模块 - * @author Mr.Zhang - * @since 2020-04-29 - */ - @Override - public String getLocalInfoException(String key) { - Object value = ThreadLocalUtil.get(key); - if(value == null){ - throw new CrmebException("登录信息已过期,请重新登录!"); - } - return value.toString(); - } - - /** - * 获取本地存储的实际 - * @param key String 模块 - * @author Mr.Zhang - * @since 2020-04-29 - */ - @Override - public Object getLocalInfo(String key) { - if(StringUtils.isNotBlank(key)){ - return ThreadLocalUtil.get(key); - } - return null; - } - - /** - * 获取用户id - * @author Mr.Zhang - * @since 2020-04-29 - */ - @Override - public Integer getLocalUserId() { - return Integer.parseInt(getLocalInfoException("id")); - } - - /** - * 检测Token - * @param token String token - * @param modelName String 模块 - * @author Mr.Zhang - * @since 2020-04-29 - */ - @Override - public boolean checkToken(String token, String modelName) { - return redisUtil.exists(modelName + token); - } - - /** - * 检测Token - * @param token String token - * @param modelName String 模块 - * @author Mr.Zhang - * @since 2020-04-29 - */ - @Override - public TokenModel getToken(String token, String modelName) { - Object o = redisUtil.get(modelName + token); - TokenModel tokenModel = new TokenModel(); -// tokenModel.setUserNo(o.toString()); - tokenModel.setUserId(Integer.parseInt(o.toString())); - return tokenModel; - } - - - @Override - public String getCurrentClienttype(String userno) { - return null; - } - - /** - * 删除Token - * @param token String token - * @param modelName String 模块 - * @author Mr.Zhang - * @since 2020-04-29 - */ - @Override - public void deleteToken(String token, String modelName) { - redisUtil.remove(modelName +token); - } - - @Override - public Integer getUserCount() { - return null; - } - - @Override - public CommonResult getOnlineUsers(Integer pageNo, Integer pageSize) { - return null; - } - - @Override - public TokenModel getRealToken(String userno) { - return null; - } - -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/authorization/model/TokenModel.java b/crmeb/src/main/java/com/zbkj/crmeb/authorization/model/TokenModel.java deleted file mode 100644 index f41c2c15..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/authorization/model/TokenModel.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.zbkj.crmeb.authorization.model; - -import com.utils.CrmebUtil; -import com.zbkj.crmeb.system.model.SystemAdmin; -import lombok.Data; - -import java.io.Serializable; -import java.util.Locale; - -/** - * token实体类 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -public class TokenModel implements Serializable { - private static final long serialVersionUID = 4903514237492573024L; - // 加密后的token key - public static final String TOKEN_KEY = "TOKEN"; - // Redis 存储的key - public static final String TOKEN_REDIS = "TOKEN:ADMIN:"; - // 用户号 - private String userNo; - private Integer userId; - private String token; - // 最后访问时间 - private long lastAccessedTime = System.currentTimeMillis(); - // 过期时间 - private long expirationTime; - // 客户端类型 - private String clienttype; - // 客户端语言 - private Locale locale; - // 客户端ip - private String host; - // 当前登录用户信息 - private SystemAdmin systemAdmin; - - public String getAuthorization() throws Exception { - return CrmebUtil.encryptPassword(userNo+"_"+ token, TOKEN_KEY); - } - - public TokenModel(String userno, String token){ - this.userNo = userno; - this.token = token; - } - - public TokenModel() { - } -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/bargain/request/StoreBargainUserHelpRequest.java b/crmeb/src/main/java/com/zbkj/crmeb/bargain/request/StoreBargainUserHelpRequest.java deleted file mode 100644 index 6e23519b..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/bargain/request/StoreBargainUserHelpRequest.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.zbkj.crmeb.bargain.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~2020 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 StoreBargainUserHelpRequest implements Serializable { - - private static final long serialVersionUID=1L; - - @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 Integer addTime; - - -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/bargain/request/StoreBargainUserHelpSearchRequest.java b/crmeb/src/main/java/com/zbkj/crmeb/bargain/request/StoreBargainUserHelpSearchRequest.java deleted file mode 100644 index 62c04b73..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/bargain/request/StoreBargainUserHelpSearchRequest.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.zbkj.crmeb.bargain.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~2020 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 StoreBargainUserHelpSearchRequest implements Serializable { - - private static final long serialVersionUID=1L; - - @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 Integer addTime; - - -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/bargain/request/StoreBargainUserRequest.java b/crmeb/src/main/java/com/zbkj/crmeb/bargain/request/StoreBargainUserRequest.java deleted file mode 100644 index 0a7a6690..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/bargain/request/StoreBargainUserRequest.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.zbkj.crmeb.bargain.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~2020 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 StoreBargainUserRequest implements Serializable { - - private static final long serialVersionUID=1L; - - @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 Boolean status; - - @ApiModelProperty(value = "参与时间") - private Integer addTime; - - @ApiModelProperty(value = "是否取消") - private Boolean isDel; - - -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/combination/response/StoreCombinationInfoResponse.java b/crmeb/src/main/java/com/zbkj/crmeb/combination/response/StoreCombinationInfoResponse.java deleted file mode 100644 index 87226a79..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/combination/response/StoreCombinationInfoResponse.java +++ /dev/null @@ -1,145 +0,0 @@ -package com.zbkj.crmeb.combination.response; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.math.BigDecimal; - -/** - * 拼团详情响应体 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -public class StoreCombinationInfoResponse { - - 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 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 boolean userCollect = false; - - @ApiModelProperty(value = "点赞标识") - private boolean userLike = false; - - @ApiModelProperty(value = "主商品价格") - private BigDecimal productPrice; - - @ApiModelProperty(value = "累计销量") - private Integer total; - - @ApiModelProperty(value = "商品详情") - private String content; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/finance/controller/FundsMonitorController.java b/crmeb/src/main/java/com/zbkj/crmeb/finance/controller/FundsMonitorController.java deleted file mode 100644 index 1e3d7068..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/finance/controller/FundsMonitorController.java +++ /dev/null @@ -1,116 +0,0 @@ -package com.zbkj.crmeb.finance.controller; - -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.PageParamRequest; -import com.zbkj.crmeb.finance.model.UserFundsMonitor; -import com.zbkj.crmeb.finance.request.FundsMonitorRequest; -import com.zbkj.crmeb.finance.request.FundsMonitorUserSearchRequest; -import com.zbkj.crmeb.finance.service.UserFundsMonitorService; -import com.zbkj.crmeb.user.model.UserBrokerageRecord; -import com.zbkj.crmeb.user.response.BillType; -import com.zbkj.crmeb.user.response.UserBillResponse; -import com.zbkj.crmeb.user.service.UserBillService; -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.List; - - -/** - * 用户提现表 前端控制器 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 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 分页参数 - * @author Mr.Zhang - * @since 2020-05-11 - */ - @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); - } - - /** - * 资金监控查询参数 - * @return 资金监控查询参数集合 - */ - @ApiOperation(value = "资金监控--明细类型查询数据") - @RequestMapping(value = "/list/option", method = RequestMethod.GET) - public CommonResult getList(){ - return CommonResult.success(userBillService.getSearchOption()); - } - - /** - * 佣金记录 - * @param request 搜索条件 - * @param pageParamRequest 分页参数 - * @author Mr.Zhang - * @since 2020-05-11 - */ - @ApiOperation(value = "佣金记录") - @RequestMapping(value = "/list/user", method = RequestMethod.GET) - public CommonResult> user(@Validated FundsMonitorUserSearchRequest request, @Validated PageParamRequest pageParamRequest){ - CommonPage userFundsMonitorCommonPage = - CommonPage.restPage(userFundsMonitorService.getFundsMonitor(request, pageParamRequest)); - return CommonResult.success(userFundsMonitorCommonPage); - } - - /** - * 佣金详细记录 - * @param pageParamRequest 分页参数 - * @param userId 被查询的用户id - * @return 佣金查询结果 - */ - @ApiOperation(value = "佣金详细记录") - @RequestMapping(value = "/list/user/detail/{userId}", method = RequestMethod.GET) - public CommonResult> userDetail(PageParamRequest pageParamRequest, - @RequestParam(value = "dateLimit", required = false) String dateLimit, - @PathVariable Integer userId){ - CommonPage commonPage = CommonPage.restPage(userFundsMonitorService.getFundsMonitorDetail(userId, dateLimit, pageParamRequest)); - return CommonResult.success(commonPage); - } - - - /** - * 获取资金操作类型列表 - * @return 查询结果 - */ - @ApiOperation(value="资金操作类型") - @RequestMapping(value = "/list/billtype", method = RequestMethod.GET) - public CommonResult> getBillTypeList(){ - return CommonResult.success(userBillService.getBillType()); - } -} - - - diff --git a/crmeb/src/main/java/com/zbkj/crmeb/finance/request/UserRechargeRefundRequest.java b/crmeb/src/main/java/com/zbkj/crmeb/finance/request/UserRechargeRefundRequest.java deleted file mode 100644 index c2d571f8..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/finance/request/UserRechargeRefundRequest.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.zbkj.crmeb.finance.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~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@ApiModel(value="UserRechargeRefundRequest对象", description="") -public class UserRechargeRefundRequest { - - @ApiModelProperty(value = "用户充值订单id") - @NotNull(message = "用户充值订单编号不能为空") - private Integer id; - - @ApiModelProperty(value = "退款类型:1-仅本金,2-本金+赠送") - @NotNull(message = "退款类型不能为空") - @Range(min = 1, max = 2, message = "未知的退款类型") - private Integer type; - -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/finance/request/UserRechargeRequest.java b/crmeb/src/main/java/com/zbkj/crmeb/finance/request/UserRechargeRequest.java deleted file mode 100644 index 62cef362..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/finance/request/UserRechargeRequest.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.zbkj.crmeb.finance.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~2020 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 UserRechargeRequest 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 Integer payTime; - - @ApiModelProperty(value = "充值时间") - private Integer addTime; - - @ApiModelProperty(value = "退款金额") - private BigDecimal refundPrice; - - -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/finance/service/UserRechargeService.java b/crmeb/src/main/java/com/zbkj/crmeb/finance/service/UserRechargeService.java deleted file mode 100644 index 74fb2606..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/finance/service/UserRechargeService.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.zbkj.crmeb.finance.service; - -import com.common.PageParamRequest; -import com.github.pagehelper.PageInfo; -import com.zbkj.crmeb.finance.model.UserRecharge; -import com.baomidou.mybatisplus.extension.service.IService; -import com.zbkj.crmeb.finance.request.UserRechargeRefundRequest; -import com.zbkj.crmeb.finance.request.UserRechargeSearchRequest; -import com.zbkj.crmeb.finance.response.UserRechargeResponse; -import com.zbkj.crmeb.front.request.UserRechargeRequest; - -import java.math.BigDecimal; -import java.util.HashMap; - -/** -* UserRechargeService 接口 -* +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- -*/ -public interface UserRechargeService extends IService { - - PageInfo getList(UserRechargeSearchRequest request, PageParamRequest pageParamRequest); - - HashMap getBalanceList(); - - UserRecharge getInfoByEntity(UserRecharge userRecharge); - - UserRecharge create(UserRechargeRequest request); - - Boolean complete(UserRecharge userRecharge); - - /** - * 充值退款 - * @param request 退款参数 - * @return Boolean - */ - Boolean refund(UserRechargeRefundRequest request); - - /** - * 获取用户累计充值金额 - * @param uid 用户uid - * @return BigDecimal - */ - BigDecimal getTotalRechargePrice(Integer uid); -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/finance/service/impl/UserFundsMonitorServiceImpl.java b/crmeb/src/main/java/com/zbkj/crmeb/finance/service/impl/UserFundsMonitorServiceImpl.java deleted file mode 100644 index e8ba5442..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/finance/service/impl/UserFundsMonitorServiceImpl.java +++ /dev/null @@ -1,93 +0,0 @@ -package com.zbkj.crmeb.finance.service.impl; - -import cn.hutool.core.collection.CollUtil; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.common.PageParamRequest; -import com.github.pagehelper.PageHelper; -import com.github.pagehelper.PageInfo; -import com.zbkj.crmeb.finance.dao.UserFundsMonitorDao; -import com.zbkj.crmeb.finance.model.UserFundsMonitor; -import com.zbkj.crmeb.finance.request.FundsMonitorUserSearchRequest; -import com.zbkj.crmeb.finance.service.UserFundsMonitorService; -import com.zbkj.crmeb.user.model.User; -import com.zbkj.crmeb.user.model.UserBrokerageRecord; -import com.zbkj.crmeb.user.service.UserBrokerageRecordService; -import com.zbkj.crmeb.user.service.UserService; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import javax.annotation.Resource; -import java.util.HashMap; -import java.util.List; - -/** -* UserRechargeServiceImpl 接口实现 -* +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 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; - - /** - * 佣金列表 - * @author Mr.Zhang - * @since 2020-04-28 - * @return List - */ - @Override - public List getFundsMonitor(FundsMonitorUserSearchRequest request, PageParamRequest pageParamRequest) { - PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); - HashMap map = new HashMap<>(); - String keywords = null; - if(!StringUtils.isBlank(request.getKeywords())){ - keywords = "%"+request.getKeywords()+"%"; - } - map.put("keywords", keywords); - map.put("max", request.getMax()); - map.put("min", request.getMin()); - String sort = "desc"; - if(!StringUtils.isBlank(request.getSort())){ - sort = request.getSort(); - } - map.put("sort", sort); - List monitorList = dao.getFundsMonitor(map); - monitorList.forEach(e -> { - if (e.getSpreadUid() > 0) { - User spreadUser = userService.getById(e.getSpreadUid()); - e.setSpreadName(spreadUser.getNickname()); - } - }); - return monitorList; - } - - /** - * 佣金详细记录 - * @param uid 用户uid - * @param pageParamRequest 分页参数 - * @return - */ - @Override - public PageInfo getFundsMonitorDetail(Integer uid, String dateLimit, PageParamRequest pageParamRequest) { - return userBrokerageRecordService.getFundsMonitorDetail(uid, dateLimit, pageParamRequest); - } - - -} - diff --git a/crmeb/src/main/java/com/zbkj/crmeb/finance/service/impl/UserRechargeServiceImpl.java b/crmeb/src/main/java/com/zbkj/crmeb/finance/service/impl/UserRechargeServiceImpl.java deleted file mode 100644 index b142ba0d..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/finance/service/impl/UserRechargeServiceImpl.java +++ /dev/null @@ -1,394 +0,0 @@ -package com.zbkj.crmeb.finance.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.common.CommonPage; -import com.common.PageParamRequest; -import com.constants.Constants; -import com.constants.WeChatConstants; -import com.exception.CrmebException; -import com.github.pagehelper.Page; -import com.github.pagehelper.PageHelper; -import com.github.pagehelper.PageInfo; -import com.utils.CrmebUtil; -import com.utils.DateUtil; -import com.utils.RestTemplateUtil; -import com.utils.XmlUtil; -import com.utils.vo.dateLimitUtilVo; -import com.zbkj.crmeb.finance.dao.UserRechargeDao; -import com.zbkj.crmeb.finance.model.UserRecharge; -import com.zbkj.crmeb.finance.request.UserRechargeRefundRequest; -import com.zbkj.crmeb.finance.request.UserRechargeSearchRequest; -import com.zbkj.crmeb.finance.response.UserRechargeResponse; -import com.zbkj.crmeb.finance.service.UserRechargeService; -import com.zbkj.crmeb.front.request.UserRechargeRequest; -import com.zbkj.crmeb.payment.vo.wechat.WxRefundResponseVo; -import com.zbkj.crmeb.payment.vo.wechat.WxRefundVo; -import com.zbkj.crmeb.system.service.SystemConfigService; -import com.zbkj.crmeb.user.model.User; -import com.zbkj.crmeb.user.model.UserBill; -import com.zbkj.crmeb.user.service.UserBillService; -import com.zbkj.crmeb.user.service.UserService; -import org.apache.commons.codec.digest.DigestUtils; -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.stream.Collectors; - -/** -* UserRechargeServiceImpl 接口实现 -* +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 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; - - @Autowired - private SystemConfigService systemConfigService; - - @Autowired - private RestTemplateUtil restTemplateUtil; - - @Autowired - private TransactionTemplate transactionTemplate; - - @Autowired - private UserBillService userBillService; - - - /** - * 列表 - * @param request 请求参数 - * @param pageParamRequest 分页类参数 - * @author Mr.Zhang - * @since 2020-05-11 - * @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(!StringUtils.isBlank(request.getKeywords())){ - lambdaQueryWrapper.and(i -> i. - or().like(UserRecharge::getOrderId, request.getKeywords()) //订单号 - ); - } - //是否充值 - if(request.getPaid() != null){ - lambdaQueryWrapper.eq(UserRecharge::getPaid, request.getPaid()); - } - - //时间范围 - if(dateLimit.getStartTime() != null && dateLimit.getEndTime() != null){ - //判断时间 - 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 responses = new ArrayList<>(); - List userRecharges = dao.selectList(lambdaQueryWrapper); - List userIds = userRecharges.stream().map(UserRecharge::getUid).collect(Collectors.toList()); - HashMap userHashMap = new HashMap<>(); - - if(userIds.size() > 0) - userHashMap = userService.getMapListInUid(userIds); - - HashMap finalUserHashMap = userHashMap; - userRecharges.stream().map(e-> { - User user = finalUserHashMap.get(e.getUid()); - UserRechargeResponse r = new UserRechargeResponse(); - BeanUtils.copyProperties(e,r); - if(null != user){ - r.setAvatar(user.getAvatar()); - r.setNickname(user.getNickname()); - } - responses.add(r); - return e; - }).collect(Collectors.toList()); - return CommonPage.copyPageInfo(userRechargesList,responses); - } - - /** - * 充值总金额 - * @author Mr.Zhang - * @since 2020-05-11 - * @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); - } - - /** - * 创建订单对象 - * @author Mr.Zhang - * @since 2020-05-11 - * @return UserRecharge - */ - @Override - public UserRecharge create(UserRechargeRequest request) { - UserRecharge userRecharge = new UserRecharge(); - userRecharge.setUid(request.getUserId()); - userRecharge.setOrderId(CrmebUtil.getOrderNo(Constants.PAY_TYPE_WE_CHAT)); - userRecharge.setPrice(request.getPrice()); - userRecharge.setGivePrice(request.getGivePrice()); - userRecharge.setRechargeType(request.getFromType()); - save(userRecharge); - return userRecharge; - } - - /** - * 更新充值订单 - * @param userRecharge UserRecharge 充值订单数据 - * @author Mr.Zhang - * @since 2020-07-01 - */ - @Override - public Boolean complete(UserRecharge userRecharge) { - try{ - userRecharge.setPaid(true); - userRecharge.setPayTime(DateUtil.nowDateTime()); - return updateById(userRecharge); - }catch (Exception e){ - throw new CrmebException("回调失败!, 更新状态失败!"); - } - } - - /** - * 充值退款 - * @param request 退款参数 - */ - @Override - public Boolean refund(UserRechargeRefundRequest request) { - UserRecharge userRecharge = getById(request.getId()); - if (ObjectUtil.isNull(userRecharge)) throw new CrmebException("数据不存在!"); - if (!userRecharge.getPaid()) throw new CrmebException("订单未支付"); - if (userRecharge.getPrice().compareTo(userRecharge.getRefundPrice()) == 0) { - throw new CrmebException("已退完支付金额!不能再退款了"); - } - if (userRecharge.getRechargeType().equals("balance")) { - throw new CrmebException("佣金转入余额,不能退款"); - } - - User user = userService.getById(userRecharge.getUid()); - if (ObjectUtil.isNull(user)) throw new CrmebException("用户不存在!"); - - // 退款金额 - BigDecimal refundPrice; - if (request.getType().equals(2)) {// 本金+赠送 - refundPrice = userRecharge.getPrice().add(userRecharge.getGivePrice()); - } else { - refundPrice = userRecharge.getPrice(); - } - - // 判断充值方式进行退款 - try { - if (userRecharge.getRechargeType().equals(Constants.PAY_TYPE_WE_CHAT_FROM_PUBLIC)) {// 公众号 - refundJSAPI(userRecharge); - } else {// 小程序 - refundMiniWx(userRecharge); - } - } catch (Exception e) { - e.printStackTrace(); - throw new CrmebException("微信申请退款失败!"); - } - - userRecharge.setRefundPrice(userRecharge.getPrice()); - - user.setNowMoney(user.getNowMoney().subtract(refundPrice)); - - UserBill userBill = getRefundBill(userRecharge, user.getNowMoney(), refundPrice); - - Boolean execute = transactionTemplate.execute(e -> { - updateById(userRecharge); - userService.operationNowMoney(user.getUid(), refundPrice, user.getNowMoney(), "sub"); -// userService.updateById(user); - userBillService.save(userBill); - return Boolean.TRUE; - }); - - if (!execute) throw new CrmebException("充值退款-修改提现数据失败!"); - // 成功后发送小程序通知 - return execute; - } - - /** - * 获取用户累计充值金额 - * @param uid 用户uid - * @return BigDecimal - */ - @Override - public BigDecimal getTotalRechargePrice(Integer uid) { - QueryWrapper query = Wrappers.query(); - query.select("IFNULL(SUM(price), 0) as price, IFNULL(SUM(give_price), 0) as give_price"); - query.eq("paid", 1); - query.eq("uid", uid); - UserRecharge userRecharge = dao.selectOne(query); - return userRecharge.getPrice().add(userRecharge.getGivePrice()); - } - - private UserBill getRefundBill(UserRecharge userRecharge, BigDecimal nowMoney, BigDecimal refundPrice) { - UserBill userBill = new UserBill(); - userBill.setUid(userRecharge.getUid()); - userBill.setLinkId(userRecharge.getOrderId()); - userBill.setPm(0); - userBill.setTitle("系统充值退款"); - userBill.setCategory(Constants.USER_BILL_CATEGORY_MONEY); - userBill.setType(Constants.USER_BILL_TYPE_USER_RECHARGE_REFUND); - userBill.setNumber(refundPrice); - userBill.setBalance(nowMoney.subtract(refundPrice)); - userBill.setMark(StrUtil.format("退款给用户{}元", userRecharge.getPrice())); - userBill.setStatus(1); - userBill.setCreateTime(DateUtil.nowDateTime()); - return userBill; - } - - /** - * 小程序退款 - */ - private WxRefundResponseVo refundMiniWx(UserRecharge userRecharge) { - WxRefundVo wxRefundVo = new WxRefundVo(); - - String appId = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_ROUTINE_APP_ID); - String mchId = systemConfigService.getValueByKey(Constants.CONFIG_KEY_PAY_ROUTINE_MCH_ID); - wxRefundVo.setAppid(appId); - wxRefundVo.setMch_id(mchId); - wxRefundVo.setNonce_str(DigestUtils.md5Hex(CrmebUtil.getUuid() + CrmebUtil.randomCount(111111, 666666))); - wxRefundVo.setOut_trade_no(userRecharge.getOrderId()); - wxRefundVo.setOut_refund_no(userRecharge.getOrderId()); - wxRefundVo.setTotal_fee(userRecharge.getPrice().multiply(BigDecimal.TEN).multiply(BigDecimal.TEN).intValue()); - wxRefundVo.setRefund_fee(userRecharge.getPrice().multiply(BigDecimal.TEN).multiply(BigDecimal.TEN).intValue()); - String signKey = systemConfigService.getValueByKey(Constants.CONFIG_KEY_PAY_ROUTINE_APP_KEY); - String sign = CrmebUtil.getSign(CrmebUtil.objectToMap(wxRefundVo), signKey); - wxRefundVo.setSign(sign); - String path = systemConfigService.getValueByKeyException("pay_mini_client_p12"); - return commonRefound(wxRefundVo, path); - - } - - /** - * 公众号退款 - */ - private WxRefundResponseVo refundJSAPI(UserRecharge userRecharge) { - WxRefundVo wxRefundVo = new WxRefundVo(); - - String appId = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_WE_CHAT_APP_ID); - String mchId = systemConfigService.getValueByKey(Constants.CONFIG_KEY_PAY_WE_CHAT_MCH_ID); - wxRefundVo.setAppid(appId); - wxRefundVo.setMch_id(mchId); - wxRefundVo.setNonce_str(DigestUtils.md5Hex(CrmebUtil.getUuid() + CrmebUtil.randomCount(111111, 666666))); - wxRefundVo.setOut_trade_no(userRecharge.getOrderId()); - wxRefundVo.setOut_refund_no(userRecharge.getOrderId()); - wxRefundVo.setTotal_fee(userRecharge.getPrice().multiply(BigDecimal.TEN).multiply(BigDecimal.TEN).intValue()); - wxRefundVo.setRefund_fee(userRecharge.getPrice().multiply(BigDecimal.TEN).multiply(BigDecimal.TEN).intValue()); - String signKey = systemConfigService.getValueByKey(Constants.CONFIG_KEY_PAY_WE_CHAT_APP_KEY); - String sign = CrmebUtil.getSign(CrmebUtil.objectToMap(wxRefundVo), signKey); - wxRefundVo.setSign(sign); - String path = systemConfigService.getValueByKeyException("pay_routine_client_p12"); - return commonRefound(wxRefundVo, path); - } - - /** - * 公共退款部分 - */ - private WxRefundResponseVo commonRefound(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 = ""; - System.out.println("微信申请退款xmlStr = " + xmlStr); - 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(responseVo.getReturnCode().toUpperCase().equals("FAIL")){ - throw new CrmebException("微信退款失败1!" + responseVo.getReturnMsg()); - } - - if(responseVo.getResultCode().toUpperCase().equals("FAIL")){ - throw new CrmebException("微信退款失败2!" + responseVo.getErrCodeDes()); - } - System.out.println("================微信申请退款结束========================="); - System.out.println("xml = " + xml); - return responseVo; - } -} - diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/controller/ExpressController.java b/crmeb/src/main/java/com/zbkj/crmeb/front/controller/ExpressController.java deleted file mode 100644 index 95a313ae..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/controller/ExpressController.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.zbkj.crmeb.front.controller; - - -import com.common.CommonPage; -import com.common.CommonResult; -import com.zbkj.crmeb.express.model.Express; -import com.zbkj.crmeb.express.service.ExpressService; -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~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Slf4j -@RestController("ExpressFrontController") -@RequestMapping("api/front") -@Api(tags = "物流公司") -public class ExpressController { - @Autowired - private ExpressService expressService; - - /** - * 物流公司列表 - * @author Mr.Zhang - * @since 2020-06-01 - */ - @ApiOperation(value = "列表") - @RequestMapping(value = "/logistics", method = RequestMethod.GET) - public CommonResult> register(){ - return CommonResult.success(CommonPage.restPage(expressService.findAll("normal"))); - } -} - - - diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/request/ConfirmOrderRequest.java b/crmeb/src/main/java/com/zbkj/crmeb/front/request/ConfirmOrderRequest.java deleted file mode 100644 index 7ffe1754..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/request/ConfirmOrderRequest.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.zbkj.crmeb.front.request; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotNull; - -/** - * 确认订单请求对象 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -public class ConfirmOrderRequest { - - private static final long serialVersionUID=1L; - - @ApiModelProperty(value = "购物车id集合") - @NotNull(message = "购物车编号集合 不能为空") - private String cartIds; - - @ApiModelProperty(value = "是否立即购买") - @NotNull(message = "是否立即购买 不能为空") - private Boolean isNew; - - @ApiModelProperty(value = "是否再一下单") - @NotNull(message = "是否再一下单 不能为空") - private Boolean addAgain; - - @ApiModelProperty(value = "是否秒杀商品") - @NotNull(message = "是否秒杀商品 不能为空") - private Boolean secKill; - - @ApiModelProperty(value = "是否砍价商品") - @NotNull(message = "是否砍价商品 不能为空") - private Boolean bargain; - - @ApiModelProperty(value = "是否拼团商品") - @NotNull(message = "是否拼团商品 不能为空") - private Boolean combination; - - @ApiModelProperty(value = "地址id") -// @NotNull(message = "地址编号 不能为空") - private Integer addressId; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/request/IndexStoreProductSearchRequest.java b/crmeb/src/main/java/com/zbkj/crmeb/front/request/IndexStoreProductSearchRequest.java deleted file mode 100644 index 6b8f006b..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/request/IndexStoreProductSearchRequest.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.zbkj.crmeb.front.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.Max; -import javax.validation.constraints.Min; -import javax.validation.constraints.NotNull; -import java.io.Serializable; -import java.util.List; - -/** - * 商品表 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 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 IndexStoreProductSearchRequest implements Serializable { - - private static final long serialVersionUID=1L; - - @ApiModelProperty(value = "类型(1:出售中(已上架),2:仓库中(未上架),3:已售罄,4:警戒库存,5:回收站)") - @NotNull - @Min(value = 1, message = "类型不能小于1") - @Max(value = 5, message = "类型不能大于5") - private int type; - - @ApiModelProperty(value = "分类ID, 多个逗号分隔") - private List cateId; - - @ApiModelProperty(value = "关键字搜索, 支持(商品名称, 商品简介, 关键字, 商品条码)") - private String keywords; - - @ApiModelProperty(value = "是否精品") - private Boolean isBest = null; - - @ApiModelProperty(value = "是否热门") - private Boolean isHot = null; - - @ApiModelProperty(value = "是否新品") - private Boolean isNew = null; - - @ApiModelProperty(value = "是否优惠") - private Boolean isBenefit = null; - - @ApiModelProperty(value = "价格排序", allowableValues = "range[asc,desc]") - private String priceOrder; - - @ApiModelProperty(value = "销量排序", allowableValues = "range[asc,desc]") - private String salesOrder; - -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/request/OrderCreateRequest.java b/crmeb/src/main/java/com/zbkj/crmeb/front/request/OrderCreateRequest.java deleted file mode 100644 index 574ba377..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/request/OrderCreateRequest.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.zbkj.crmeb.front.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.net.Inet4Address; - -/** - * 创建订单参数 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@ApiModel(value="OrderCreateRequest对象", description="创建订单参数") -public class OrderCreateRequest { - - @ApiModelProperty(value = "真实名称") - private String realName; - - @ApiModelProperty(value = "手机号码") - private String phone; - - @ApiModelProperty(value = "收货地址id") - private Integer addressId; - -// @ApiModelProperty(value = "") -// private Integer formId; - - @ApiModelProperty(value = "优惠券编号") - private Integer couponId; - - @ApiModelProperty(value = "支付类型:weixin-微信支付,yue-余额支付,offline-线下支付,alipay-支付包支付") - private String payType; - - @ApiModelProperty(value = "支付渠道:weixinh5-微信H5支付,public-公众号支付,routine-小程序支付,weixinAppIos-微信appios支付,weixinAppAndroid-微信app安卓支付") - private String payChannel; - - @ApiModelProperty(value = "是否使用积分") - private Boolean useIntegral; - - @ApiModelProperty(value = "砍价商品id") - private Integer bargainId; - - @ApiModelProperty(value = "拼团商品id") - private Integer combinationId; - - @ApiModelProperty(value = "拼团团长id") - private Integer pinkId; - - @ApiModelProperty(value = "秒杀商品id") - private Integer seckillId; - - @ApiModelProperty(value = "订单备注") - private String mark; - - @ApiModelProperty(value = "自提点id") - private Integer storeId; - -// @ApiModelProperty(value = "") -// private String from; - - @ApiModelProperty(value = "快递类型") - private Integer shippingType; - - @ApiModelProperty(value = "是否为立即购买", required = true) - @NotNull(message = "是否为立即购买不能为空") - private Boolean isNew; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/request/RegisterRequest.java b/crmeb/src/main/java/com/zbkj/crmeb/front/request/RegisterRequest.java deleted file mode 100644 index b2721a59..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/request/RegisterRequest.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.zbkj.crmeb.front.request; - -import com.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~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@ApiModel(value="RegisterRequest对象", description="手机号注册") -public class RegisterRequest implements Serializable { - - private static final long serialVersionUID=1L; - - @ApiModelProperty(value = "手机号", required = true) - @Pattern(regexp = RegularConstants.PHONE, message = "手机号码格式错误") - @NotBlank - @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.SMS_VALIDATE_CODE_NUM, message = "验证码格式错误,验证码必须为4位数字") - @JsonProperty(value = "captcha") - private String validateCode; - - @ApiModelProperty(value = "推广人id") - @JsonProperty(value = "spread_spid") - private Integer spread = 0; - - - -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/BargainCountResponse.java b/crmeb/src/main/java/com/zbkj/crmeb/front/response/BargainCountResponse.java deleted file mode 100644 index 2756c040..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/BargainCountResponse.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.zbkj.crmeb.front.response; - -import lombok.Data; - -import java.math.BigDecimal; - -/** - * 砍价商品统计Response对象 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -public class BargainCountResponse { - - /** 已砍金额 **/ - private BigDecimal alreadyPrice; - /** 砍价人数 **/ - private Integer count; - /** 剩余金额 **/ - private BigDecimal price; - /** 砍价金额百分比 **/ - private Integer pricePercent; - /** 活动状态:1参与中 2 活动结束参与失败 3活动结束参与成功 **/ - private Integer status; - /** 用户砍价状态 **/ - private Boolean userBargainStatus; - /** 用户帮砍次数是否消耗完 **/ - private Boolean isConsume; - - public BargainCountResponse() {} - - public BargainCountResponse(BigDecimal alreadyPrice, Integer count, BigDecimal price, Integer pricePercent, Integer status, Boolean userBargainStatus, Boolean isConsume) { - this.alreadyPrice = alreadyPrice; - this.count = count; - this.price = price; - this.pricePercent = pricePercent; - this.status = status; - this.userBargainStatus = userBargainStatus; - this.isConsume = isConsume; - } - -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/BargainDetailResponse.java b/crmeb/src/main/java/com/zbkj/crmeb/front/response/BargainDetailResponse.java deleted file mode 100644 index e44d5da7..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/BargainDetailResponse.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.zbkj.crmeb.front.response; - -import com.zbkj.crmeb.store.response.StoreProductResponse; -import com.zbkj.crmeb.user.model.User; -import io.swagger.annotations.ApiModelProperty; -import io.swagger.models.auth.In; -import lombok.Data; - -/** - * 砍价商品详情信息Response - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -public class BargainDetailResponse { - - /** - * 砍价商品信息 - */ - private StoreProductResponse bargain; - - /** - * 用户砍价状态 - */ - private Integer userBargainStatus; - - /** - * 用户信息 - */ - private User userInfo; - - /** - * 砍价单属性AttrValueId - */ - private Integer aloneAttrValueId; - - /** - * 砍价支付成功订单数量 - */ - private Integer bargainSumCount; - - public BargainDetailResponse() {} - - public BargainDetailResponse(StoreProductResponse bargain, Integer userBargainStatus, User userInfo, Integer bargainSumCount) { - this.bargain = bargain; - this.userBargainStatus = userBargainStatus; - this.userInfo = userInfo; - this.bargainSumCount = bargainSumCount; - } - -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/ConfirmOrderResponse.java b/crmeb/src/main/java/com/zbkj/crmeb/front/response/ConfirmOrderResponse.java deleted file mode 100644 index ab4db27c..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/ConfirmOrderResponse.java +++ /dev/null @@ -1,90 +0,0 @@ -package com.zbkj.crmeb.front.response; - -import com.zbkj.crmeb.marketing.response.StoreCouponUserResponse; -import com.zbkj.crmeb.store.response.StoreCartResponse; -import com.zbkj.crmeb.user.model.User; -import com.zbkj.crmeb.user.model.UserAddress; -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; - -/** - * 订单确认ApiResponse对象 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@ApiModel(value="ConfirmOrderResponse对象", description="订单确认相应对象") -public class ConfirmOrderResponse { - - @ApiModelProperty(value = "收否扣减") - private Boolean deduction; - - @ApiModelProperty(value = "可用优惠券") - private StoreCouponUserResponse usableCoupon; - - @ApiModelProperty(value = "用户地址") - private UserAddress addressInfo; - - @ApiModelProperty(value = "购物车信息") - private List cartInfo; - - @ApiModelProperty(value = "价格集合") - private PriceGroupResponse priceGroup; - - @ApiModelProperty(value = "其他") - private HashMap other; - - @ApiModelProperty(value = "订单key") - private String orderKey; - - @ApiModelProperty(value = "线下邮费") - private String offlinePostage; - - @ApiModelProperty(value = "用户信息") - private User userInfo; - - @ApiModelProperty(value = "积分抵扣比例") - private String integralRatio; - - @ApiModelProperty(value = "线下支付状态") - private String offlinePayStatus; - - @ApiModelProperty(value = "余额支付 1 开启 2 关闭") - private String yuePayStatus; - - @ApiModelProperty(value = "门店自提是否开启") - private String storeSelfMention; - - @ApiModelProperty(value = "门店信息") - private String systemStore; - - @ApiModelProperty(value = "微信支付 1 开启 0 关闭") - private String payWeixinOpen; - - @ApiModelProperty(value = "秒杀id") - private Integer secKillId; - - @ApiModelProperty(value = "砍价id") - private Integer bargainId; - - @ApiModelProperty(value = "拼团id") - private Integer combinationId; - - @ApiModelProperty(value = "团长id") - private Integer pinkId; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/PriceGroupResponse.java b/crmeb/src/main/java/com/zbkj/crmeb/front/response/PriceGroupResponse.java deleted file mode 100644 index 53f01f0a..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/PriceGroupResponse.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.zbkj.crmeb.front.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~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@ApiModel(value="PriceGroupResponse对象", description="价格计算集合对象") -public class PriceGroupResponse { - - @ApiModelProperty(value = "运费") - private BigDecimal storePostage; - - @ApiModelProperty(value = "满额包邮") - private BigDecimal storeFreePostage; - - @ApiModelProperty(value = "总金额") - private BigDecimal totalPrice; - - @ApiModelProperty(value = "原价") - private BigDecimal costPrice; - - @ApiModelProperty(value = "会员金额") - private BigDecimal vipPrice; - - @ApiModelProperty(value = "优惠券金额") - private BigDecimal couponPrice; - - @ApiModelProperty(value = "支付金额") - private BigDecimal payPrice; - - @ApiModelProperty(value = "邮费金额") - private BigDecimal payPostage; - - @ApiModelProperty(value = "抵扣金额") - private BigDecimal deductionPrice; - - @ApiModelProperty(value = "使用积分") - private Integer usedIntegral; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/ProductAttrResponse.java b/crmeb/src/main/java/com/zbkj/crmeb/front/response/ProductAttrResponse.java deleted file mode 100644 index 52fd5f6d..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/ProductAttrResponse.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.zbkj.crmeb.front.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.List; - -/** - * 商品规格响应对象 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@ApiModel(value="StoreProductAttrResponse对象", description="商品规格响应对象") -public class ProductAttrResponse implements Serializable { - - private static final long serialVersionUID = 7282892323898493847L; - - @ApiModelProperty(value = "attrId") - private Integer id; - - @ApiModelProperty(value = "商品ID") - private Integer productId; - - @ApiModelProperty(value = "属性名") - private String attrName; - - @ApiModelProperty(value = "属性值") - private List attrValues; - - @ApiModelProperty(value = "活动类型 0=商品,1=秒杀,2=砍价,3=拼团") - private Integer type; - - -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/ProductResponse.java b/crmeb/src/main/java/com/zbkj/crmeb/front/response/ProductResponse.java deleted file mode 100644 index 5c338537..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/ProductResponse.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.zbkj.crmeb.front.response; - -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.List; - -/** - * 商品表 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 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="ProductResponse对象", description="商品表") -public class ProductResponse implements Serializable { - - @ApiModelProperty(value = "商品id") - @TableId(value = "id") - private Integer id; - - @ApiModelProperty(value = "商品图片") - private String image; - - @ApiModelProperty(value = "商品名称") - private String storeName; - - @ApiModelProperty(value = "分类id") - private List cateId; - - @ApiModelProperty(value = "商品价格") - private BigDecimal price; - - @ApiModelProperty(value = "市场价") - private BigDecimal otPrice; - - @ApiModelProperty(value = "单位名") - private String unitName; - - @ApiModelProperty(value = "排序") - private Integer sort; - - @ApiModelProperty(value = "销量") - private Integer sales; - - @ApiModelProperty(value = "虚拟销量") - private Integer ficti; - - @ApiModelProperty(value = "库存") - private Integer stock; - - @ApiModelProperty(value = "活动显示排序0=默认,1=秒杀,2=砍价,3=拼团") - private String activity; - - @ApiModelProperty(value = "为移动端特定参数") - private ProductActivityItemResponse activityH5; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/response/UserRechargePaymentResponse.java b/crmeb/src/main/java/com/zbkj/crmeb/front/response/UserRechargePaymentResponse.java deleted file mode 100644 index 082950c1..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/response/UserRechargePaymentResponse.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.zbkj.crmeb.front.response; - -import com.fasterxml.jackson.annotation.JsonProperty; -import com.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~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@ApiModel(value="UserRechargePaymentResponse对象", description="充值返回对象") -public class UserRechargePaymentResponse { - @ApiModelProperty(value = "调用接口提交的公众账号ID") - private String appId; - - @ApiModelProperty(value = "当前的时间,其他详见时间戳规则") - private Integer timeStamp = DateUtil.getNowTime(); - - @ApiModelProperty(value = "随机字符串") - private String nonceStr; - - @ApiModelProperty(value = "订单详情扩展字符串") - @JsonProperty(value = "package") - private String extra; - - @ApiModelProperty(value = "签名方式") - private String signType = "MD5"; - - @ApiModelProperty(value = "签名") - private String paySign; - - @ApiModelProperty(value = "H5支付的跳转url") - private String h5PayUrl; - - @ApiModelProperty(value = "微信生成的预支付回话标识,用于后续接口调用中使用,该值有效期为2小时,针对H5支付此参数无特殊用途") - private String prepayId; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/vo/OrderAgainVo.java b/crmeb/src/main/java/com/zbkj/crmeb/front/vo/OrderAgainVo.java deleted file mode 100644 index c16c6f71..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/vo/OrderAgainVo.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.zbkj.crmeb.front.vo; - -import com.zbkj.crmeb.store.model.StoreOrder; -import com.zbkj.crmeb.store.vo.StoreOrderInfoOldVo; -import lombok.Data; - -import java.util.List; - -/** - * 再次下单VO对象 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -public class OrderAgainVo { - private StoreOrder storeOrder; - private List cartInfo; - private OrderAgainItemVo status; - private String payTime; - private String addTime; - private String statusPic; - private Integer offlinePayStatus; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/front/vo/PriceItem.java b/crmeb/src/main/java/com/zbkj/crmeb/front/vo/PriceItem.java deleted file mode 100644 index f4a1b88f..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/front/vo/PriceItem.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.zbkj.crmeb.front.vo; - -import lombok.Data; - -import java.math.BigDecimal; - -/** - * 订单计算Item属性对象 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -public class PriceItem { - private BigDecimal num; - private BigDecimal price; - private BigDecimal first; - private BigDecimal firstPrice; - private BigDecimal renewal; - private BigDecimal renewalPrice; - private Integer tempId; - private Integer cityId; - - public PriceItem() { - - } - - public PriceItem(BigDecimal num, BigDecimal price, BigDecimal first, BigDecimal firstPrice, BigDecimal renewal, BigDecimal renewalPrice, Integer tempId, Integer cityId) { - this.num = num; - this.price = price; - this.first = first; - this.firstPrice = firstPrice; - this.renewal = renewal; - this.renewalPrice = renewalPrice; - this.tempId = tempId; - this.cityId = cityId; - } -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/log/service/impl/StoreProductLogServiceImpl.java b/crmeb/src/main/java/com/zbkj/crmeb/log/service/impl/StoreProductLogServiceImpl.java deleted file mode 100644 index e3bef327..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/log/service/impl/StoreProductLogServiceImpl.java +++ /dev/null @@ -1,92 +0,0 @@ -package com.zbkj.crmeb.log.service.impl; - -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.constants.Constants; -import com.utils.DateUtil; -import com.utils.RedisUtil; -import com.utils.vo.dateLimitUtilVo; -import com.zbkj.crmeb.log.dao.StoreProductLogDao; -import com.zbkj.crmeb.log.model.StoreProductLog; -import com.zbkj.crmeb.log.service.StoreProductLogService; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import javax.annotation.Resource; - -/** - * StoreProductLogServiceImpl 接口实现 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 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; - - @Autowired - private RedisUtil redisUtil; - - private static final Logger logger = LoggerFactory.getLogger(StoreProductLogServiceImpl.class); - - @Override - public Integer getCountByTimeAndType(String time, String type) { - LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); - lqw.eq(StoreProductLog::getType, type); - dateLimitUtilVo dateLimit = DateUtil.getDateLimit(time); - //时间范围 - if(dateLimit.getStartTime() != null && dateLimit.getEndTime() != null){ - Long startTime = DateUtil.dateStr2Timestamp(dateLimit.getStartTime(), Constants.DATE_TIME_TYPE_BEGIN); - Long endTime = DateUtil.dateStr2Timestamp(dateLimit.getEndTime(), Constants.DATE_TIME_TYPE_END); - lqw.between(StoreProductLog::getAddTime, startTime, endTime); - } - return dao.selectCount(lqw); - } - - /** - * task记录保存 - */ - @Override - public void addLogTask() { - Long size = redisUtil.getListSize(Constants.PRODUCT_LOG_KEY); - logger.info("StoreProductLogServiceImpl.addLogTask | size:" + size); - if(size > 0){ - for (int i = 0; i < size; i++) { - //如果10秒钟拿不到一个数据,那么退出循环 - Object data = redisUtil.getRightPop(Constants.PRODUCT_LOG_KEY, 10L); - if(null == data){ - continue; - } - try{ - JSONObject jsonObject = JSON.parseObject(data.toString()); - addLog(jsonObject); - }catch (Exception e){ - redisUtil.lPush(Constants.PRODUCT_LOG_KEY, data); - } - } - } - } - - private void addLog(JSONObject jsonObject) { - StoreProductLog proLog = new StoreProductLog(); - proLog.setProductId(jsonObject.getInteger("product_id")); - proLog.setUid(jsonObject.getInteger("uid")); - proLog.setType(jsonObject.getString("type")); - proLog.setAddTime(jsonObject.getLong("add_time")); - save(proLog); - } - -} - diff --git a/crmeb/src/main/java/com/zbkj/crmeb/payment/README.md b/crmeb/src/main/java/com/zbkj/crmeb/payment/README.md deleted file mode 100644 index 0074a42b..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/payment/README.md +++ /dev/null @@ -1,6 +0,0 @@ -# 支付类说明 -1. 支付前的业务操作在service下处理 -2. service下的实现必须继承抽象类PayService,实现其中方法即可。 -3. wechat为支付平台微信支付服务,如果需要新家支付平台则在其同级目录创建文件夹即可(如aliPay, payPal等), 具体实现根据其业务自行处理即可 -4. 在service中的实现里,调用新加入的支付平台即可 -5. 新加入的支付平台,需要设置相关的支付方式给到前端供其调用 diff --git a/crmeb/src/main/java/com/zbkj/crmeb/payment/vo/wechat/PayParamsVo.java b/crmeb/src/main/java/com/zbkj/crmeb/payment/vo/wechat/PayParamsVo.java deleted file mode 100644 index 20cb7102..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/payment/vo/wechat/PayParamsVo.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.zbkj.crmeb.payment.vo.wechat; - -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~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@ApiModel(value="PayParamsVo对象", description="调用微信支付所需要的参数") -public class PayParamsVo { - - public PayParamsVo() { - } - - public PayParamsVo(String orderNo, String fromType, String clientIp, String title, BigDecimal price, Integer userId, AttachVo attach) { - this.orderNo = orderNo; - this.fromType = fromType; - this.clientIp = clientIp; - this.title = title; - this.price = price; - this.userId = userId; - this.attach = attach; - } - - @ApiModelProperty(value = "对外使用订单号", required = true) - private String orderNo; - - @ApiModelProperty(value = "支付二级类型 如微信新的 H5 小程序", required = true) - private String fromType; - - @ApiModelProperty(value = "客户端IP", required = true) - private String clientIp; - - @ApiModelProperty(value = "备注", required = true) - private String title; - - @ApiModelProperty(value = "支付金额", required = true) - private BigDecimal price; - - @ApiModelProperty(value = "用户id", required = true) - private Integer userId; - - @ApiModelProperty(value = "appId", required = true) - private String appId; - - @ApiModelProperty(value = "商户id", required = true) - private String mchId; - - @ApiModelProperty(value = "签名key", required = true) - private String appKey; - - @ApiModelProperty(value = "openId") - private String openId; - - @ApiModelProperty(value = "附加信息") - private AttachVo attach; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/payment/wechat/impl/WeChatPayServiceImpl.java b/crmeb/src/main/java/com/zbkj/crmeb/payment/wechat/impl/WeChatPayServiceImpl.java deleted file mode 100644 index 7337b5b6..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/payment/wechat/impl/WeChatPayServiceImpl.java +++ /dev/null @@ -1,808 +0,0 @@ -package com.zbkj.crmeb.payment.wechat.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.common.MyRecord; -import com.constants.Constants; -import com.constants.PayConstants; -import com.constants.WeChatConstants; -import com.exception.CrmebException; -import com.utils.*; -import com.zbkj.crmeb.combination.model.StoreCombination; -import com.zbkj.crmeb.combination.model.StorePink; -import com.zbkj.crmeb.combination.service.StoreCombinationService; -import com.zbkj.crmeb.combination.service.StorePinkService; -import com.zbkj.crmeb.finance.model.UserRecharge; -import com.zbkj.crmeb.finance.service.UserRechargeService; -import com.zbkj.crmeb.payment.service.RechargePayService; -import com.zbkj.crmeb.payment.vo.wechat.*; -import com.zbkj.crmeb.payment.wechat.WeChatPayService; -import com.zbkj.crmeb.store.model.StoreOrder; -import com.zbkj.crmeb.store.service.StoreOrderInfoService; -import com.zbkj.crmeb.store.service.StoreOrderService; -import com.zbkj.crmeb.system.service.SystemConfigService; -import com.zbkj.crmeb.user.model.User; -import com.zbkj.crmeb.user.model.UserToken; -import com.zbkj.crmeb.user.service.UserService; -import com.zbkj.crmeb.user.service.UserTokenService; -import com.zbkj.crmeb.wechat.service.WeChatService; -import lombok.Data; -import org.apache.commons.codec.digest.DigestUtils; -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~2020 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 WeChatService weChatService; - - @Autowired - private UserTokenService userTokenService; - - @Autowired - private StoreOrderService storeOrderService; - - @Autowired - private StoreOrderInfoService storeOrderInfoService; - - @Autowired - private SystemConfigService systemConfigService; - - private String signKey; - - private PayParamsVo payParamsVo; - - 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; - - /** - * 统一下单 - * @param payParamsVo PayParamsVo 支付参数 - * @author Mr.Zhang - * @since 2020-06-22 - * @return PayResponseVo - */ - @Override - public CreateOrderResponseVo create(PayParamsVo payParamsVo){ - try { - setPayParamsVo(payParamsVo); - switch (payParamsVo.getFromType()){ - case Constants.PAY_TYPE_WE_CHAT_FROM_H5: //h5 - setH5PayConfig(); - break; - case Constants.PAY_TYPE_WE_CHAT_FROM_PUBLIC: //公众号 - setPublicPayConfig(); - break; - case Constants.PAY_TYPE_WE_CHAT_FROM_PROGRAM: //小程序 - setProgramPayConfig(); - break; - default: - throw new CrmebException("系统不支持当前支付方式!"); - } - createOrderWeChatData(); - response(); - return getCreateOrderResponseVo(); - }catch (Exception e){ - e.printStackTrace(); - throw new CrmebException(e.getMessage()); - } - } - - /** - * 处理下单之后返回的数据 - * @author Mr.Zhang - * @since 2020-06-22 - */ - private void response(){ - try{ - String url = WeChatConstants.PAY_API_URL + WeChatConstants.PAY_API_URI; - String request = XmlUtil.objectToXml(getCreateOrderRequestVo()); - 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(responseVo.getReturnCode().toUpperCase().equals("FAIL")){ - throw new CrmebException("微信下单失败1!" + responseVo.getReturnMsg()); - } - - if(responseVo.getResultCode().toUpperCase().equals("FAIL")){ - throw new CrmebException("微信下单失败2!" + responseVo.getErrCodeDes()); - } - - responseVo.setExtra(getCreateOrderRequestVo().getScene_info()); - setCreateOrderResponseVo(responseVo); - }catch (Exception e){ - e.printStackTrace(); - throw new CrmebException(e.getMessage()); - } - } - - - /** - * 设置H5支付配置 - * @author Mr.Zhang - * @since 2020-06-22 - */ - private void setH5PayConfig() { - setCreateOrderRequestVo(new CreateOrderRequestVo()); - String appId = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_WE_CHAT_APP_ID); - String mchId = systemConfigService.getValueByKey(Constants.CONFIG_KEY_PAY_WE_CHAT_MCH_ID); - setSignKey(systemConfigService.getValueByKey(Constants.CONFIG_KEY_PAY_WE_CHAT_APP_KEY)); - getCreateOrderRequestVo().setAppid(appId); - getCreateOrderRequestVo().setMch_id(mchId); - } - - /** - * 设置H5支付配置 - * @author Mr.Zhang - * @since 2020-06-22 - */ - private void setPublicPayConfig() { - setCreateOrderRequestVo(new CreateOrderRequestVo()); - String appId = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_WE_CHAT_APP_ID); - String mchId = systemConfigService.getValueByKey(Constants.CONFIG_KEY_PAY_WE_CHAT_MCH_ID); - setSignKey(systemConfigService.getValueByKey(Constants.CONFIG_KEY_PAY_WE_CHAT_APP_KEY)); - - getCreateOrderRequestVo().setAppid(appId); - getCreateOrderRequestVo().setMch_id(mchId); - getCreateOrderRequestVo().setTrade_type(WeChatConstants.PAY_TYPE_JS); - getCreateOrderRequestVo().setOpenid(getOpenId(Constants.THIRD_LOGIN_TOKEN_TYPE_PUBLIC)); - } - - /** - * 设置JS支付配置 - * @author Mr.Zhang - * @since 2020-06-22 - */ - private void setProgramPayConfig() { - setCreateOrderRequestVo(new CreateOrderRequestVo()); - String appId = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_ROUTINE_APP_ID); - String mchId = systemConfigService.getValueByKey(Constants.CONFIG_KEY_PAY_ROUTINE_MCH_ID); - setSignKey(systemConfigService.getValueByKey(Constants.CONFIG_KEY_PAY_ROUTINE_APP_KEY)); - - getCreateOrderRequestVo().setAppid(appId); - getCreateOrderRequestVo().setMch_id(mchId); - getCreateOrderRequestVo().setTrade_type(WeChatConstants.PAY_TYPE_JS); - getCreateOrderRequestVo().setOpenid(getOpenId(Constants.THIRD_LOGIN_TOKEN_TYPE_PROGRAM)); - } - - /** - * 构建支付下单对象 - * @author Mr.Zhang - * @since 2020-06-22 - */ - private void createOrderWeChatData(){ - //获取域名 - String domain = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_SITE_URL); - String apiDomain = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_API_URL); - //统一下单数据 - getCreateOrderRequestVo().setNotify_url(apiDomain + WeChatConstants.PAY_NOTIFY_API_URI_WECHAT); - getCreateOrderRequestVo().setNonce_str(DigestUtils.md5Hex(CrmebUtil.getUuid() + CrmebUtil.randomCount(111111, 666666))); - getCreateOrderRequestVo().setBody(getPayParamsVo().getTitle()); - getCreateOrderRequestVo().setOut_trade_no(getPayParamsVo().getOrderNo()); - - //附加数据 - getCreateOrderRequestVo().setAttach(JSONObject.toJSONString(getPayParamsVo().getAttach())); - - getCreateOrderRequestVo().setTotal_fee(getWeChatPrice()); - getCreateOrderRequestVo().setSpbill_create_ip(getPayParamsVo().getClientIp()); - CreateOrderH5SceneInfoVo createOrderH5SceneInfoVo = new CreateOrderH5SceneInfoVo( - new CreateOrderH5SceneInfoDetailVo( - domain, - systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_SITE_NAME) - ) - ); - getCreateOrderRequestVo().setScene_info(JSONObject.toJSONString(createOrderH5SceneInfoVo)); - getCreateOrderRequestVo().setSign(CrmebUtil.getSign(CrmebUtil.objectToMap(getCreateOrderRequestVo()), getSignKey())); - } - - /** - * 计算价格微信需要以分为单位,所以需要乘以100 - * @author Mr.Zhang - * @since 2020-06-22 - * @return String - */ - private Integer getWeChatPrice(){ - return getPayParamsVo().getPrice().multiply(BigDecimal.TEN).multiply(BigDecimal.TEN).intValue(); - } - - /** - * 构建场景信息对象 - * @author Mr.Zhang - * @since 2020-06-22 - * @return PayCreateOrderSceneInfoVo - */ - private String getOpenId(int type) { - UserToken userToken = userTokenService.getTokenByUserId(getPayParamsVo().getUserId(), type); - return userToken.getToken(); - } - - /** - * 微信预下单 - * @param storeOrder 订单 - * @param ip ip - * @return - */ - @Override - public Map unifiedorder(StoreOrder storeOrder, String ip) { - if (ObjectUtil.isNull(storeOrder)) { - throw new CrmebException("订单不存在"); - } - if (storeOrder.getIsDel()) { - throw new CrmebException("订单已被删除"); - } - if (storeOrder.getPaid()) { - throw new CrmebException("订单已支付"); - } - if (!storeOrder.getPayType().equals(PayConstants.PAY_TYPE_WE_CHAT)) { - throw new CrmebException("不是微信支付类型订单,请重新选择支付方式"); - } - // 获取用户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 = unifiedOrder(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()); - if (storeOrder.getIsChannel() == 2) { - map.put("mweb_url", responseVo.getMWebUrl()); - } - if (storeOrder.getIsChannel() == 4 || storeOrder.getIsChannel() == 5) {// App - map.put("partnerid", mchId); - map.put("package", responseVo.getPrepayId()); - Map appMap = new HashMap<>(); - appMap.put("appid", unifiedorderVo.getAppid()); - appMap.put("partnerid", mchId); - appMap.put("prepayid", responseVo.getPrepayId()); - appMap.put("package", "Sign=WXPay"); - appMap.put("noncestr", unifiedorderVo.getAppid()); - appMap.put("timestamp", currentTimestamp); - logger.info("================================================app支付签名,map = " + appMap); - String sign = WxPayUtil.getSignObject(appMap, signKey); - logger.info("================================================app支付签名,sign = " + sign); - map.put("paySign", sign); - } - return map; - } - - public static void main(String[] args) { - String signKey = "cd94c0b5fe5ab2d9940bee9cae8391f0"; - Map appMap = new HashMap<>(); - appMap.put("appid", "wxa83d6fab40cab13f"); - appMap.put("partnerid", "1519485721"); - appMap.put("prepayid", "wx23155011418859d4aa5802ca703bd80000"); - appMap.put("package", "Sign=WXPay"); - appMap.put("noncestr", "wxa83d6fab40cab13f"); - appMap.put("timestamp", "1616485811"); - logger.info("================================================app支付签名,map = " + appMap); - String sign = WxPayUtil.getSign(appMap, signKey); - logger.info("================================================app支付签名,sign = " + sign); - } - - /** - * 查询支付结果 - * @param orderNo 订单编号 - * @return - */ - @Override - public Boolean queryPayResult(String orderNo) { - if (StrUtil.isBlank(orderNo)) { - throw new CrmebException("订单编号不能为空"); - } - // 切割字符串,判断是支付订单还是充值订单 - String pre = StrUtil.subPre(orderNo, 5); - if (pre.equals("order")) {// 支付订单 - 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; - } - - 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_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 = orderPayQuery(payVo); - - Boolean updatePaid = transactionTemplate.execute(e -> { - storeOrderService.updatePaid(orderNo); - 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(Constants.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 (userRecharge.getRechargeType().equals("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("routine")) {// 小程序 - 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 = orderPayQuery(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 (userRecharge.getRechargeType().equals(PayConstants.PAY_CHANNEL_WE_CHAT_APP_IOS)) {// app ios - userToken = userTokenService.getTokenByUserId(userRecharge.getUid(), 5); - } - if (userRecharge.getRechargeType().equals(PayConstants.PAY_CHANNEL_WE_CHAT_APP_ANDROID)) {// app android - userToken = userTokenService.getTokenByUserId(userRecharge.getUid(), 6); - } - - 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); - } - if (userRecharge.getRechargeType().equals(PayConstants.PAY_CHANNEL_WE_CHAT_APP_IOS) || userRecharge.getRechargeType().equals(PayConstants.PAY_CHANNEL_WE_CHAT_APP_ANDROID)) {// H5,使用公众号的 - appId = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_WE_CHAT_APP_APP_ID); - mchId = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_WE_CHAT_APP_MCH_ID); - signKey = systemConfigService.getValueByKeyException(Constants.CONFIG_KEY_PAY_WE_CHAT_APP_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()); - } - if (userRecharge.getRechargeType().equals(PayConstants.PAY_CHANNEL_WE_CHAT_APP_IOS) || userRecharge.getRechargeType().equals(PayConstants.PAY_CHANNEL_WE_CHAT_APP_ANDROID)) {// H5,使用公众号的 - map.put("partnerid", mchId); - map.put("package", responseVo.getPrepayId()); - Map appMap = new HashMap<>(); - appMap.put("appid", unifiedorderVo.getAppid()); - appMap.put("partnerid", mchId); - appMap.put("prepayid", responseVo.getPrepayId()); - appMap.put("package", "Sign=WXPay"); - appMap.put("noncestr", unifiedorderVo.getNonce_str()); - appMap.put("timestamp", currentTimestamp); - logger.info("================================================app支付签名,map = " + appMap); - String sign = WxPayUtil.getSignObject(appMap, signKey); - logger.info("================================================app支付签名,sign = " + sign); - map.put("paySign", sign); - } - return map; - } - - private MyRecord orderPayQuery(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 (record.getStr("return_code").toUpperCase().equals("FAIL")){ - throw new CrmebException("微信订单查询失败1!" + record.getStr("return_msg")); - } - - if (record.getStr("result_code").toUpperCase().equals("FAIL")){ - throw new CrmebException("微信订单查询失败2!" + record.getStr("err_code") + record.getStr("err_code_des")); - } - if (!record.getStr("trade_state").toUpperCase().equals("SUCCESS")){ - throw new CrmebException("微信订单支付失败!" + record.getStr("trade_state")); - } - - return record; - } catch (Exception e) { - e.printStackTrace(); - throw new CrmebException("查询微信订单mapToXml异常===》" + e.getMessage()); - } - } - - /** - * 生成微信查询订单对象 - * @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(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); - vo.setBody(PayConstants.PAY_BODY); - vo.setAttach(JSONObject.toJSONString(attachVo)); - vo.setOut_trade_no(storeOrder.getOrderId()); - // 订单中使用的是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; - } - - /** - * 获取微信预下单对象 - * @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(responseVo.getReturnCode().toUpperCase().equals("FAIL")){ - throw new CrmebException("微信下单失败1!" + responseVo.getReturnMsg()); - } - - if(responseVo.getResultCode().toUpperCase().equals("FAIL")){ - 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/src/main/java/com/zbkj/crmeb/pub/controller/AuthorizationAdmin.java b/crmeb/src/main/java/com/zbkj/crmeb/pub/controller/AuthorizationAdmin.java deleted file mode 100644 index fdd6700d..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/pub/controller/AuthorizationAdmin.java +++ /dev/null @@ -1,85 +0,0 @@ -package com.zbkj.crmeb.pub.controller; - -import com.common.CommonResult; -import com.utils.CrmebUtil; -import com.zbkj.crmeb.system.request.SystemAdminRequest; -import com.zbkj.crmeb.system.response.SystemAdminResponse; -import com.zbkj.crmeb.system.service.SystemAdminService; -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 java.util.HashMap; -import java.util.Map; - -/** - * Admin管理员 密码操作 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Slf4j -@RestController -@RequestMapping("api/public/auth/test/account") -@Api(tags = "Admin管理员 密码操作") -public class AuthorizationAdmin { - - @Autowired - private SystemAdminService systemAdminService; - - @ApiOperation(value = "破解密码") - @RequestMapping(value = "/decode", method = RequestMethod.POST) - @ApiImplicitParams({ - @ApiImplicitParam(name="account", value="账号"), - @ApiImplicitParam(name="encodeString", value="加密字符串"), - }) - public CommonResult deCodePwd(@RequestParam String account, @RequestParam String encodeString) - throws Exception { - SystemAdminResponse systemAdminResponse = - systemAdminService.getInfo(new SystemAdminRequest().setAccount(account)); - if(null == systemAdminResponse || systemAdminResponse.getId() < 0){ - return CommonResult.failed("account:"+account+"不存在"); - } - String _password = CrmebUtil.decryptPassowrd(encodeString, account); - Map result = new HashMap<>(); - result.put("account", account); - result.put("encodeString", encodeString); - result.put("password", _password); - return CommonResult.success(result); - } - - @ApiOperation(value = "密码加密") - @RequestMapping(value = "/encode", method = RequestMethod.POST) - @ApiImplicitParams({ - @ApiImplicitParam(name="account", value="账号"), - @ApiImplicitParam(name="password", value="密码"), - }) - public CommonResult encodePwd(@RequestParam String account, @RequestParam String password) - throws Exception{ - SystemAdminResponse systemAdminResponse = - systemAdminService.getInfo(new SystemAdminRequest().setAccount(account)); - if(null == systemAdminResponse || systemAdminResponse.getId() < 0){ - return CommonResult.failed("account:"+account+"不存在"); - } - String encodeString = CrmebUtil.encryptPassword(password, account); - Map result = new HashMap<>(); - result.put("aAccount", account); - result.put("encodeString", encodeString); - result.put("password", password); - return CommonResult.success(result); - } - -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/pub/controller/RedisTestController.java b/crmeb/src/main/java/com/zbkj/crmeb/pub/controller/RedisTestController.java deleted file mode 100644 index 1253ba8d..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/pub/controller/RedisTestController.java +++ /dev/null @@ -1,89 +0,0 @@ -package com.zbkj.crmeb.pub.controller; - -import com.common.CommonResult; -import com.utils.RedisUtil; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiImplicitParam; -import io.swagger.annotations.ApiImplicitParams; -import lombok.extern.slf4j.Slf4j; -import io.swagger.annotations.ApiOperation; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -import javax.annotation.Resource; -import java.util.concurrent.TimeUnit; - - -/** - * 后台管理员表 前端控制器 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Slf4j -@RestController -@RequestMapping("api/public/test/redis") -@Api(tags = "Redis测试操作") -public class RedisTestController { - - @Autowired - private RedisUtil redisUtil; - - - /** - * 新增 - * @param key string key - * @param value string value - * @author Mr.Zhang - * @since 2020-04-13 - */ - @ApiOperation(value = "新增") - @RequestMapping(value = "/set", method = RequestMethod.POST) - @ApiImplicitParams({ - @ApiImplicitParam(name="key", value="redis key"), - @ApiImplicitParam(name="value", value="内容"), - }) - public CommonResult set(@RequestParam(name = "key", required = true) String key, - @RequestParam(name = "value", required = true) String value){ - redisUtil.set(key, value); - Object val = redisUtil.get(key); - return CommonResult.success(val); - } - - /** - * 查询 - * @param key string key - * @author Mr.Zhang - * @since 2020-04-13 - */ - @ApiOperation(value = "查询") - @RequestMapping(value = "/get", method = RequestMethod.GET) - @ApiImplicitParam(name="key", value="redis key") - public CommonResult get(@RequestParam(name = "key", required = true) String key){ - Object value = redisUtil.get(key); - return CommonResult.success(value); - } - - /** - * 删除 - * @param key string key - * @author Mr.Zhang - * @since 2020-04-13 - */ - @ApiOperation(value = "删除") - @RequestMapping(value = "/delete", method = RequestMethod.GET) - @ApiImplicitParam(name="key", value="redis key") - public CommonResult delete(@RequestParam(name = "key", required = true) String key){ - redisUtil.remove(key); - return CommonResult.success(); - } -} - - - diff --git a/crmeb/src/main/java/com/zbkj/crmeb/seckill/request/StoreSeckillAttrRequest.java b/crmeb/src/main/java/com/zbkj/crmeb/seckill/request/StoreSeckillAttrRequest.java deleted file mode 100644 index e736f708..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/seckill/request/StoreSeckillAttrRequest.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.zbkj.crmeb.seckill.request; - -/** - * 商品秒杀属性Request对象 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -public class StoreSeckillAttrRequest { -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/seckill/request/StoreSeckillAttrValueSearchRequest.java b/crmeb/src/main/java/com/zbkj/crmeb/seckill/request/StoreSeckillAttrValueSearchRequest.java deleted file mode 100644 index 5836b944..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/seckill/request/StoreSeckillAttrValueSearchRequest.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.zbkj.crmeb.seckill.request; - -/** - * 商品秒杀属性值搜索 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -public class StoreSeckillAttrValueSearchRequest { -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/seckill/request/StoreSeckillRequest.java b/crmeb/src/main/java/com/zbkj/crmeb/seckill/request/StoreSeckillRequest.java deleted file mode 100644 index 9d6c7026..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/seckill/request/StoreSeckillRequest.java +++ /dev/null @@ -1,133 +0,0 @@ -package com.zbkj.crmeb.seckill.request; - -import com.baomidou.mybatisplus.annotation.TableName; -import com.zbkj.crmeb.store.model.StoreProductAttr; -import com.zbkj.crmeb.store.request.StoreProductAttrValueRequest; -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; - -/** - * 商品 秒杀产品 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@TableName("StoreSeckillRequest") -@ApiModel(value="StoreSeckillRequest对象", description="商品 秒杀产品") -public class StoreSeckillRequest { - -// @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 String startTime; - - @ApiModelProperty(value = "结束时间") - private String stopTime; - - @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 = "商品属性") - private List attr; - - @ApiModelProperty(value = "商品属性详情") - private List attrValue; - - @ApiModelProperty(value = "商品描述") - private String content; - - @ApiModelProperty(value = "规格 0单 1多") - private Boolean specType; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/seckill/response/StoreSeckillAttrValueResponse.java b/crmeb/src/main/java/com/zbkj/crmeb/seckill/response/StoreSeckillAttrValueResponse.java deleted file mode 100644 index 8eeddb35..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/seckill/response/StoreSeckillAttrValueResponse.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.zbkj.crmeb.seckill.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; - -/** - * 商品秒杀属性值 response - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -public class StoreSeckillAttrValueResponse { - @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; - - @ApiModelProperty(value = "秒杀数量") - private Integer num; - - @ApiModelProperty(value = "原价") - private BigDecimal otPrice; - - @ApiModelProperty(value = "秒杀价价") - private BigDecimal killPrice; - - @ApiModelProperty(value = "成本价") - private BigDecimal cost; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/seckill/response/StoreSeckillStoreInfoResponse.java b/crmeb/src/main/java/com/zbkj/crmeb/seckill/response/StoreSeckillStoreInfoResponse.java deleted file mode 100644 index 2bf0314a..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/seckill/response/StoreSeckillStoreInfoResponse.java +++ /dev/null @@ -1,254 +0,0 @@ -package com.zbkj.crmeb.seckill.response; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.utils.DateUtil; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.math.BigDecimal; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - -/** - * 秒杀商品详情 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -public class StoreSeckillStoreInfoResponse { - - // 自定义statusName值 - // 开启 = status = 1 && 当前时间小于startTime - // 关闭 = status = 0 - // 进行中 = status = 1 && 当前时间大于startTime 小于 stopTime - // 已结束 = status = 1 && 当前时间大于结束时间 - // 秒杀状态【仅仅前端用】 killStatus 1=即将开始 0=关闭 2=进行中 -1=已结束 - public String getStatusName() { - String _statusName = null; - if(status == 1 && DateUtil.nowDateTime().compareTo(startTime) < 0){ - _statusName = "即将开始"; - this.setKillStatus(1); - } - else if(status == 0) { - _statusName = "关闭"; - this.setKillStatus(0); - } - else if(status == 1 && DateUtil.nowDateTime().compareTo(startTime)>0 - && DateUtil.nowDateTime().compareTo(stopTime) < 0) { - _statusName = "进行中"; - this.setKillStatus(2); - } - else if(status == 1 && DateUtil.nowDateTime().compareTo(stopTime) >= 0){ - _statusName = "已结束"; - this.setKillStatus(-1); - } - return _statusName; - } - @ApiModelProperty(value = "秒杀状态,前端用") - private Integer killStatus; - - @ApiModelProperty(value = "商品id") - private Integer id; - - @ApiModelProperty(value = "商户Id(0为总后台管理员创建,不为0的时候是商户后台创建)") - private Integer merId; - - @ApiModelProperty(value = "商品图片") - private String image; - - @ApiModelProperty(value = "轮播图") - private String images; - - @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 = "活动显示排序1=秒杀,2=砍价,3=拼团") - private String activity; - - private Integer[] cateIds; - - @ApiModelProperty(value = "商品描述") - private String content; - - @ApiModelProperty(value = "收藏标识") - private boolean userCollect = false; - - @ApiModelProperty(value = "点赞标识") - private boolean userLike = false; - - @ApiModelProperty(value = "商品id") - private Integer productId; - - @ApiModelProperty(value = "活动标题") - private String title; - - @ApiModelProperty(value = "简介") - private String info; - - @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 num; - - @ApiModelProperty(value = "剩余限量") - private int limitLeftNum; - - @ApiModelProperty(value = "时间段ID") - private Integer timeId; - - @ApiModelProperty(value = "重量") - private BigDecimal weight; - - @ApiModelProperty(value = "体积") - private BigDecimal volume; - - @ApiModelProperty(value = "限购总数") - private Integer quota; - - @ApiModelProperty(value = "限购总数显示") - private Integer quotaShow; - - @ApiModelProperty(value = "商品属性详情") - private List attrValue; - - @ApiModelProperty(value = "管理端用于映射attrResults") - private List> attrValues; - - @ApiModelProperty(value = "秒杀配置") - private StoreSeckillManagerResponse storeSeckillManagerResponse; - - - @ApiModelProperty(value = "时间戳") - private String timeSwap; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/sms/request/PublicTempRequest.java b/crmeb/src/main/java/com/zbkj/crmeb/sms/request/PublicTempRequest.java deleted file mode 100644 index 020d5830..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/sms/request/PublicTempRequest.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.zbkj.crmeb.sms.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~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@ApiModel(value="RegisterRequest对象", description="短信账号注册") -public class PublicTempRequest implements Serializable { - - private static final long serialVersionUID=1L; - - @ApiModelProperty(value = "账号", required = true) - private String accountId; - - @ApiModelProperty(value = "密码", required = true) - private String password; - - @ApiModelProperty(value = "域名", required = true) - private String domain; - - @ApiModelProperty(value = "手机号", required = true) - private String phone; - - @ApiModelProperty(value = "签名", required = true) - private String sign; - - @ApiModelProperty(value = "验证码") - private String code; - - -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/sms/request/RegisterRequest.java b/crmeb/src/main/java/com/zbkj/crmeb/sms/request/RegisterRequest.java deleted file mode 100644 index 5c94bdd0..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/sms/request/RegisterRequest.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.zbkj.crmeb.sms.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.NonNull; -import lombok.experimental.Accessors; -import org.aspectj.bridge.IMessage; - -import javax.validation.constraints.NotNull; -import java.io.Serializable; - -/** - * 短信账号注册 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@ApiModel(value="RegisterRequest对象", description="短信账号注册") -public class RegisterRequest implements Serializable { - - private static final long serialVersionUID=1L; - - @ApiModelProperty(value = "账号", required = true) - @NotNull(message = "账号不能为空") - private String account; - - @ApiModelProperty(value = "密码", required = true) - @NotNull(message = "密码不能为空") - private String password; - - @ApiModelProperty(value = "域名", required = true) - @NotNull(message = "域名不能为空") - private String domain; - - @ApiModelProperty(value = "手机号", required = true) - @NotNull(message = "手机号不能为空") - private String phone; - - @ApiModelProperty(value = "签名", required = true) - @NotNull(message = "签名不能为空") - private String sign; - - @ApiModelProperty(value = "验证码") - @NotNull(message = "验证码不能为空") - private String code; - - private String verify_code; - - private String url; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/sms/request/SmsConfigRequest.java b/crmeb/src/main/java/com/zbkj/crmeb/sms/request/SmsConfigRequest.java deleted file mode 100644 index 22fc04e5..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/sms/request/SmsConfigRequest.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.zbkj.crmeb.sms.request; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotNull; - -/** - * 是否发送短信配置 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -public class SmsConfigRequest { - // 支付成功短信提醒 - @ApiModelProperty(value = "支付成功短信提醒", required = true) - @NotNull(message = "支付成功短信提醒不能为空") - private String lowerOrderSwitch; - - // 发货短信提醒 - @ApiModelProperty(value = "发货短信提醒", required = true) - @NotNull(message = "发货短信提醒不能为空") - private String deliverGoodsSwitch; - - // 确认收货短信提醒 - @ApiModelProperty(value = "确认收货短信提醒", required = true) - @NotNull(message = "确认收货短信提醒不能为空") - private String confirmTakeOverSwitch; - - // 用户下单管理员短信提醒 - @ApiModelProperty(value = "用户下单管理员短信提醒", required = true) - @NotNull(message = "用户下单管理员短信提醒不能为空") - private String adminLowerOrderSwitch; - - // 支付成功管理员短信提醒 - @ApiModelProperty(value = "支付成功管理员短信提醒", required = true) - @NotNull(message = "支付成功管理员短信提醒不能为空") - private String adminPaySuccessSwitch; - - // 用户确认收货管理员短信提醒 - @ApiModelProperty(value = "用户确认收货管理员短信提醒", required = true) - @NotNull(message = "用户确认收货管理员短信提醒不能为空") - private String adminRefundSwitch; - - // 用户发起退款管理员短信提醒 - @ApiModelProperty(value = "用户发起退款管理员短信提醒", required = true) - @NotNull(message = "用户发起退款管理员短信提醒不能为空") - private String adminConfirmTakeOverSwitch; - - // 改价短信提醒 - @ApiModelProperty(value = "改价短信提醒", required = true) - @NotNull(message = "改价短信提醒不能为空") - private String priceRevisionSwitch; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/sms/request/SmsRecordRequest.java b/crmeb/src/main/java/com/zbkj/crmeb/sms/request/SmsRecordRequest.java deleted file mode 100644 index d61c1148..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/sms/request/SmsRecordRequest.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.zbkj.crmeb.sms.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~2020 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 SmsRecordRequest implements Serializable { - - private static final long serialVersionUID=1L; - - @ApiModelProperty(value = "短信平台账号") - private String uid; - - @ApiModelProperty(value = "接受短信的手机号") - private String phone; - - @ApiModelProperty(value = "状态码 null=全部,100=成功,130=失败,131=空号,132=停机,133=关机,134=无状态, 134=无状态, 400黑名单") - private Integer resultCode; - - @ApiModelProperty(value = "发送记录id") - private Integer recordId; - - -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/controller/StoreOrderStatusController.java b/crmeb/src/main/java/com/zbkj/crmeb/store/controller/StoreOrderStatusController.java deleted file mode 100644 index 931b449f..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/controller/StoreOrderStatusController.java +++ /dev/null @@ -1,128 +0,0 @@ -package com.zbkj.crmeb.store.controller; - -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.PageParamRequest; -import com.zbkj.crmeb.store.request.StoreOrderStatusRequest; -import com.zbkj.crmeb.store.request.StoreOrderStatusSearchRequest; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.beans.BeanUtils; -import org.springframework.web.bind.annotation.*; -import com.zbkj.crmeb.store.service.StoreOrderStatusService; -import com.zbkj.crmeb.store.model.StoreOrderStatus; - - -/** - * 订单操作记录表 前端控制器 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 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 分页参数 - * @author Mr.Zhang - * @since 2020-05-28 - */ - @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); - } - - /** - * 新增订单操作记录表 - * @param storeOrderStatusRequest 新增参数 - * @author Mr.Zhang - * @since 2020-05-28 - */ - @ApiOperation(value = "新增") - @RequestMapping(value = "/save", method = RequestMethod.POST) - public CommonResult save(@Validated StoreOrderStatusRequest storeOrderStatusRequest){ - StoreOrderStatus storeOrderStatus = new StoreOrderStatus(); - BeanUtils.copyProperties(storeOrderStatusRequest, storeOrderStatus); - - if(storeOrderStatusService.save(storeOrderStatus)){ - return CommonResult.success(); - }else{ - return CommonResult.failed(); - } - } - - /** - * 删除订单操作记录表 - * @param id Integer - * @author Mr.Zhang - * @since 2020-05-28 - */ - @ApiOperation(value = "删除") - @RequestMapping(value = "/delete", method = RequestMethod.DELETE) - public CommonResult delete(@RequestParam(value = "id") Integer id){ - if(storeOrderStatusService.removeById(id)){ - return CommonResult.success(); - }else{ - return CommonResult.failed(); - } - } - - /** - * 修改订单操作记录表 - * @param id integer id - * @param storeOrderStatusRequest 修改参数 - * @author Mr.Zhang - * @since 2020-05-28 - */ - @ApiOperation(value = "修改") - @RequestMapping(value = "/update", method = RequestMethod.POST) - public CommonResult update(@RequestParam Integer id, @Validated StoreOrderStatusRequest storeOrderStatusRequest){ - StoreOrderStatus storeOrderStatus = new StoreOrderStatus(); - BeanUtils.copyProperties(storeOrderStatusRequest, storeOrderStatus); - storeOrderStatus.setOid(id); - - if(storeOrderStatusService.updateById(storeOrderStatus)){ - return CommonResult.success(); - }else{ - return CommonResult.failed(); - } - } - - /** - * 查询订单操作记录表信息 - * @param id Integer - * @author Mr.Zhang - * @since 2020-05-28 - */ - @ApiOperation(value = "详情") - @RequestMapping(value = "/info", method = RequestMethod.GET) - public CommonResult info(@RequestParam(value = "id") Integer id){ - StoreOrderStatus storeOrderStatus = storeOrderStatusService.getById(id); - return CommonResult.success(storeOrderStatus); - } -} - - - diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreOrderEditPriceRequest.java b/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreOrderEditPriceRequest.java deleted file mode 100644 index 7eebecfc..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreOrderEditPriceRequest.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.zbkj.crmeb.store.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.math.BigDecimal; - -/** - * 订单改价请求对象 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@ApiModel(value="StoreOrderEditPriceRequest对象", description="订单改价请求对象") -public class StoreOrderEditPriceRequest { - private static final long serialVersionUID=1L; - - @ApiModelProperty(value = "订单号") - @NotBlank(message = "订单号不能为空") - private String orderNo; - - @ApiModelProperty(value = "订单金额") - @DecimalMin(value = "0.00", message = "订单金额不能少于0.00") - @NotNull(message = "订单金额不能为空") - private BigDecimal price; - -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreOrderInfoSearchRequest.java b/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreOrderInfoSearchRequest.java deleted file mode 100644 index 2b7124c1..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreOrderInfoSearchRequest.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.zbkj.crmeb.store.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; - -/** - * 订单购物详情表 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@TableName("eb_store_order_cart_info") -@ApiModel(value="StoreOrderInfo对象", description="订单购物详情表") -public class StoreOrderInfoSearchRequest { - private static final long serialVersionUID=1L; - - @ApiModelProperty(value = "订单id") - private Integer orderId; - - @ApiModelProperty(value = "商品ID") - private Integer productId; - - @ApiModelProperty(value = "购买东西的详细信息") - private String info; - - @ApiModelProperty(value = "唯一id") - private String unique; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreOrderStatusRequest.java b/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreOrderStatusRequest.java deleted file mode 100644 index 9ab3c5c3..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreOrderStatusRequest.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.zbkj.crmeb.store.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; - -/** - * 订单操作记录表 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 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 StoreOrderStatusRequest { - 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 Integer changeTime; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductAttrResultRequest.java b/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductAttrResultRequest.java deleted file mode 100644 index 778832e2..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductAttrResultRequest.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.zbkj.crmeb.store.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; - -/** - * 商品属性详情表 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 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 StoreProductAttrResultRequest { - private static final long serialVersionUID=1L; - - @ApiModelProperty(value = "商品ID") - private Integer productId; - - @ApiModelProperty(value = "商品属性参数") - private String result; - - @ApiModelProperty(value = "上次修改时间") - private Integer changeTime; - - @ApiModelProperty(value = "活动类型 0=商品,1=秒杀,2=砍价,3=拼团") - private Boolean type; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductAttrResultSearchRequest.java b/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductAttrResultSearchRequest.java deleted file mode 100644 index b607649d..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductAttrResultSearchRequest.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.zbkj.crmeb.store.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; - -/** - * 商品属性详情 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 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 StoreProductAttrResultSearchRequest { - private static final long serialVersionUID=1L; - - @ApiModelProperty(value = "商品ID") - private Integer productId; - - @ApiModelProperty(value = "商品属性参数") - private String result; - - @ApiModelProperty(value = "上次修改时间") - private Integer changeTime; - - @ApiModelProperty(value = "活动类型 0=商品,1=秒杀,2=砍价,3=拼团") - private Boolean type; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductAttrSearchRequest.java b/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductAttrSearchRequest.java deleted file mode 100644 index 93baa15f..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductAttrSearchRequest.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.zbkj.crmeb.store.request; - -/** - * 商品属性查询请求对象 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -public class StoreProductAttrSearchRequest { -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductDescriptionRequest.java b/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductDescriptionRequest.java deleted file mode 100644 index 9c43eba2..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductDescriptionRequest.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.zbkj.crmeb.store.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; - -/** - * 商户商品描述Request对象 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 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 StoreProductDescriptionRequest { - private static final long serialVersionUID=1L; - - @ApiModelProperty(value = "商品ID") - private Integer productId; - - @ApiModelProperty(value = "商品详情") - private String description; - - @ApiModelProperty(value = "商品类型") - private Boolean type; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductDescriptionSearchRequest.java b/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductDescriptionSearchRequest.java deleted file mode 100644 index 2b99eeda..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductDescriptionSearchRequest.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.zbkj.crmeb.store.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; - -/** - * 商品描述查询对象 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 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 StoreProductDescriptionSearchRequest { - private static final long serialVersionUID=1L; - - @ApiModelProperty(value = "商品ID") - private Integer productId; - - @ApiModelProperty(value = "商品详情") - private String description; - - @ApiModelProperty(value = "商品类型") - private Boolean type; - -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductRelationSearchRequest.java b/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductRelationSearchRequest.java deleted file mode 100644 index d2cbaf42..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductRelationSearchRequest.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.zbkj.crmeb.store.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 java.io.Serializable; - -/** - * 商品点赞和收藏表 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 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="StoreProductRelationSearchRequest对象", description="商品点赞和收藏表") -public class StoreProductRelationSearchRequest implements Serializable { - - private static final long serialVersionUID=1L; - - @ApiModelProperty(value = "类型(收藏(collect)、点赞(like))") -// @NotBlank(message = "请设置类型!") - private String type; - - @ApiModelProperty(value = "用户ID") - @NotBlank(message = "用户id不能为空") - private Integer uid; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductReplyRequest.java b/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductReplyRequest.java deleted file mode 100644 index 15a2f69d..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductReplyRequest.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.zbkj.crmeb.store.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.Min; -import javax.validation.constraints.NotBlank; -import java.io.Serializable; - -/** - * 评论表 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 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 StoreProductReplyRequest implements Serializable { - - private static final long serialVersionUID=1L; - - private Integer id; - - @ApiModelProperty(value = "用户ID") - private Integer uid; - - @ApiModelProperty(value = "订单ID") - private Integer oid; - - @ApiModelProperty(value = "商品id", required = true) - @Min(value = 1, message = "请选择商品") - private Integer productId; - - @ApiModelProperty(value = "商品分数", example = "5", required = true) - @Min(1) - private Integer productScore; - - @ApiModelProperty(value = "服务分数", example = "5", required = true) - @Min(1) - private Integer serviceScore; - - @ApiModelProperty(value = "评论内容", required = true) - @NotBlank(message = "请填写评论内容") - private String comment; - - @ApiModelProperty(value = "评论图片", required = true) - @NotBlank(message = "请上传评论图片") - private String pics; - - @ApiModelProperty(value = "用户名称", required = true) - @NotBlank(message = "请填写用户名") - private String nickname; - - @ApiModelProperty(value = "用户头像", required = true) - @NotBlank(message = "请上传头像") - private String avatar; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/response/RetailShopOrderDataResponse.java b/crmeb/src/main/java/com/zbkj/crmeb/store/response/RetailShopOrderDataResponse.java deleted file mode 100644 index ae4fea73..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/response/RetailShopOrderDataResponse.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.zbkj.crmeb.store.response; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.math.BigDecimal; - -/** - * 分销用户订单数据 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -public class RetailShopOrderDataResponse { - // 总订单价 - @ApiModelProperty(value = "订单总价") - private BigDecimal orderPrice; - // 订单数量 - @ApiModelProperty(value = "订单数量") - private Integer orderCount; - // 用户id -// private Integer uid; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/response/RetailShopStatisticsResponse.java b/crmeb/src/main/java/com/zbkj/crmeb/store/response/RetailShopStatisticsResponse.java deleted file mode 100644 index 652c9172..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/response/RetailShopStatisticsResponse.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.zbkj.crmeb.store.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~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@ApiModel(value="RetailShopStatisticsResponse", description="分销统计响应对象") -public class RetailShopStatisticsResponse { - - @ApiModelProperty(value = "分销人员人数") - private Integer distributionNum; - - @ApiModelProperty(value = "发展会员人数") - private Integer developNum; - - @ApiModelProperty(value = "订单总数") - private Integer orderNum; - - @ApiModelProperty(value = "订单金额(元)") - private BigDecimal orderPriceCount; - - @ApiModelProperty(value = "提现次数") - private Integer withdrawCount; - - @ApiModelProperty(value = "未提现金额(元)") - private BigDecimal noWithdrawPrice; - - public RetailShopStatisticsResponse() {} - - public RetailShopStatisticsResponse(Integer distributionNum, Integer developNum, - Integer orderNum, BigDecimal orderPriceCount, - Integer withdrawCount, BigDecimal noWithdrawPrice) { - this.distributionNum = distributionNum; - this.developNum = developNum; - this.orderNum = orderNum; - this.orderPriceCount = orderPriceCount; - this.withdrawCount = withdrawCount; - this.noWithdrawPrice = noWithdrawPrice; - } -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/response/RetailShopUserResponse.java b/crmeb/src/main/java/com/zbkj/crmeb/store/response/RetailShopUserResponse.java deleted file mode 100644 index c7dbb24e..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/response/RetailShopUserResponse.java +++ /dev/null @@ -1,198 +0,0 @@ -package com.zbkj.crmeb.store.response; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.zbkj.crmeb.finance.response.UserExtractResponse; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.math.BigDecimal; -import java.util.Date; - -/** - * 分销用户列表 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -public class RetailShopUserResponse { - - public RetailShopUserResponse() { - } - - public RetailShopUserResponse(Integer uid, String account, String pwd, String realName, String birthday, String cardId, String mark, Integer partnerId, Integer groupId, String groupName, String tagName, String nickname, String avatar, String phone, String addIp, String lastIp, BigDecimal nowMoney, BigDecimal brokeragePrice, Integer integral, Integer experience, Integer signNum, Boolean status, Integer level, Integer spreadUid, Date spreadTime, String spreadNickname, String userType, Boolean isPromoter, Integer payCount, Integer spreadCount, String addres, Integer adminid, String loginType, Date updateTime, Date createTime, Date lastLoginTime, Date cleanTime, UserExtractResponse userExtractResponse, RetailShopOrderDataResponse retailShopOrderDataResponse) { - this.uid = uid; - this.account = account; - this.pwd = pwd; - this.realName = realName; - this.birthday = birthday; - this.cardId = cardId; - this.mark = mark; - this.partnerId = partnerId; - this.groupId = groupId; - this.groupName = groupName; - this.tagName = tagName; - this.nickname = nickname; - this.avatar = avatar; - this.phone = phone; - this.addIp = addIp; - this.lastIp = lastIp; - this.nowMoney = nowMoney; - this.brokeragePrice = brokeragePrice; - this.integral = integral; - this.experience = experience; - this.signNum = signNum; - this.status = status; - this.level = level; - this.spreadUid = spreadUid; - this.spreadTime = spreadTime; - this.spreadNickname = spreadNickname; - this.userType = userType; - this.isPromoter = isPromoter; - this.payCount = payCount; - this.spreadCount = spreadCount; - this.addres = addres; - this.adminid = adminid; - this.loginType = loginType; - this.updateTime = updateTime; - this.createTime = createTime; - this.lastLoginTime = lastLoginTime; - this.cleanTime = cleanTime; - this.userExtractResponse = userExtractResponse; - this.retailShopOrderDataResponse = retailShopOrderDataResponse; - } - - @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 Integer groupId; - - @ApiModelProperty(value = "分组名称") - private String groupName; - - @ApiModelProperty(value = "标签名称") - private String tagName; - - @ApiModelProperty(value = "用户昵称") - private String nickname; - - @ApiModelProperty(value = "用户头像") - private String avatar; - - @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 UserExtractResponse userExtractResponse; - - @ApiModelProperty(value = "订单数据") - private RetailShopOrderDataResponse retailShopOrderDataResponse; - - @ApiModelProperty(value = "佣金数据") - private BigDecimal brokerageMoney; - - @ApiModelProperty(value = "推广用户数量") - private int spreadPeopleCount; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreCartResponse.java b/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreCartResponse.java deleted file mode 100644 index caf63a54..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreCartResponse.java +++ /dev/null @@ -1,98 +0,0 @@ -package com.zbkj.crmeb.store.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; -import java.util.Date; - -/** - * 购物车表 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@ApiModel(value="StoreCartResponse", description="购物车ListResponse") -public class StoreCartResponse 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 StoreProductCartProductInfoResponse productInfo; - - // 手动添加 - @ApiModelProperty(value = "一级分佣") - private BigDecimal brokerage; - - @ApiModelProperty(value = "二级分佣") - private BigDecimal brokerageTwo; - - @ApiModelProperty(value = "商品是否有效") - private Boolean attrStatus; - - // todo 价格计算有问题 - // 真实价格 - private BigDecimal truePrice; - // 会员价格 - private BigDecimal vipTruePrice; - // 真实库存 - private Integer trueStock; - // 原价 - private BigDecimal costPrice; - - private Integer isReply; - private String addTime; - - @ApiModelProperty(value = "团长拼团id") - private Integer pinkId; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreOrderCreateResponse.java b/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreOrderCreateResponse.java deleted file mode 100644 index fb142ed2..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreOrderCreateResponse.java +++ /dev/null @@ -1,195 +0,0 @@ -package com.zbkj.crmeb.store.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 java.math.BigDecimal; -import java.util.Date; -import java.util.List; - -/** - * 创建订单Response - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@ApiModel(value="StoreOrderCreateResponse对象", description="创建订单response") -public class StoreOrderCreateResponse { - 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 = "订单状态(-1 : 申请退款 -2 : 退货成功 0:待发货;1:待收货;2:已收货;3:待评价;-1:已退款)") - 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; - - // add self - @ApiModelProperty(value = "购物车id集合") - private List carId; - - -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreOrderListResponse.java b/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreOrderListResponse.java deleted file mode 100644 index dd2f593c..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreOrderListResponse.java +++ /dev/null @@ -1,195 +0,0 @@ -package com.zbkj.crmeb.store.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 io.swagger.annotations.ApiOperation; -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; - -/** - *H5 订单列表Response - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@ApiModel(value="StoreOrderListResponse对象", description="H5订单列表") -public class StoreOrderListResponse implements Serializable { - // todo 待删除 - 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 = "订单状态(-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 cartInfo; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreProductAttrResponse.java b/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreProductAttrResponse.java deleted file mode 100644 index 688617c8..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreProductAttrResponse.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.zbkj.crmeb.store.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.ArrayList; -import java.util.Arrays; -import java.util.List; - -/** - * 商品属性表 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -@ApiModel(value="StoreProductAttrResponse对象", description="商品属性表Response") -public class StoreProductAttrResponse 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 = "属性和优惠券使用状态") - private List attrValue; - - /** - * 手动设置attrValues属性 - * @param attrValuesPram string参数 - * @return 转换后的List集合 - */ - public List setAttrValuesManual(String attrValuesPram){ - List strings = new ArrayList<>(); - if(attrValuesPram.indexOf(",") > 0){ - strings.addAll(Arrays.asList(attrValuesPram.split(","))); - }else{ - strings.add(attrValuesPram); - } - return strings; - } - -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreProductCartProductInfoResponse.java b/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreProductCartProductInfoResponse.java deleted file mode 100644 index f69dd58a..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreProductCartProductInfoResponse.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.zbkj.crmeb.store.response; - -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 com.zbkj.crmeb.store.model.StoreProductAttrValue; -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~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@ApiModel(value="StoreProductCartProductInfoResponse对象", description="商品信息,购物车列表使用") -public class StoreProductCartProductInfoResponse implements Serializable { - - private static final long serialVersionUID=1L; - - @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 = "是否包邮") - private Boolean isPostage; - - @ApiModelProperty(value = "获得积分") - private Integer giveIntegral; - - @ApiModelProperty(value = "成本价") - private BigDecimal cost; - - @ApiModelProperty(value = "是否单独分佣") - private Boolean isSub; - - @ApiModelProperty(value = "运费模板ID") - private Integer tempId; - - @ApiModelProperty(value = "sku详情") - private StoreProductAttrValue attrInfo; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreProductRecommendResponse.java b/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreProductRecommendResponse.java deleted file mode 100644 index 33dccc87..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreProductRecommendResponse.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.zbkj.crmeb.store.response; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.math.BigDecimal; -import java.util.List; - -/** - * 推荐商品列表response - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -public class StoreProductRecommendResponse { - - @ApiModelProperty(value = "秒杀,团购,砍价") - private List activity; - - @ApiModelProperty(value = "可用优惠券") - private Boolean checkCoupon; - - @ApiModelProperty(value = "id") - private Integer id; - - @ApiModelProperty(value = "img Url") - private String image; - - @ApiModelProperty(value = "市场价") - private BigDecimal otPrice; - - @ApiModelProperty(value = "商品价") - private BigDecimal price; - - @ApiModelProperty(value = "商品名称") - private String storeName; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreProductStoreInfoResponse.java b/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreProductStoreInfoResponse.java deleted file mode 100644 index 431b93d8..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreProductStoreInfoResponse.java +++ /dev/null @@ -1,170 +0,0 @@ -package com.zbkj.crmeb.store.response; - -import com.zbkj.crmeb.front.response.ProductActivityItemResponse; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.List; - -/** - * 商品表 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -@ApiModel(value="StoreProductStoreInfoResponse对象", description="商品表") -public class StoreProductStoreInfoResponse implements Serializable { - - @ApiModelProperty(value = "商品id") - 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; - - private Integer[] cateIds; - - @ApiModelProperty(value = "商品描述") - private String content; - - @ApiModelProperty(value = "收藏标识") - private boolean userCollect = false; - - @ApiModelProperty(value = "点赞标识") - private boolean userLike = false; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreProductCateService.java b/crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreProductCateService.java deleted file mode 100644 index 30c53512..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreProductCateService.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.zbkj.crmeb.store.service; - -import com.baomidou.mybatisplus.extension.service.IService; -import com.common.PageParamRequest; -import com.zbkj.crmeb.store.model.StoreProductCate; -import com.zbkj.crmeb.store.request.StoreProductCateSearchRequest; - -import java.util.List; - -/** - * StoreProductCateService 接口 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -public interface StoreProductCateService extends IService { - - List getList(StoreProductCateSearchRequest request, PageParamRequest pageParamRequest); - - List getByProductId(Integer productId); - -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/JSONExample.java b/crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/JSONExample.java deleted file mode 100644 index 14b9f1fb..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/JSONExample.java +++ /dev/null @@ -1,5150 +0,0 @@ -package com.zbkj.crmeb.store.service.impl; - -/** - * 商品复制示例数据 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -public class JSONExample { - public static String pddJson = "{\n" + - " \"data\": {\n" + - " \"seller\": {\n" + - " \"logisticsScore\": 4.64,\n" + - " \"serviceScore\": 4.65,\n" + - " \"shopName\": \"vivo旗舰店\",\n" + - " \"logo\": \"https://t00img.yangkeduo.com/goods/images/2019-02-11/04a2630f-faf0-4095-a278-53ef7d49378e.jpg\",\n" + - " \"shopId\": \"354267\",\n" + - " \"salesTip\": \"已拼: 10万+件\",\n" + - " \"shopUrl\": \"http://mobile.yangkeduo.com/mall_page.html?mall_id=354267&msn=3oqyia2xo7wgeyrbikytq2injm_axbuy\",\n" + - " \"goodsNum\": 112,\n" + - " \"descScore\": 4.63\n" + - " },\n" + - " \"item\": {\n" + - " \"maxNormalPrice\": \"3998\",\n" + - " \"marketPrice\": \"4298.01\",\n" + - " \"groupTypes\": [\n" + - " {\n" + - " \"requireNum\": \"1\",\n" + - " \"totalPrice\": \"0\",\n" + - " \"price\": \"0\",\n" + - " \"groupID\": 9824632660,\n" + - " \"orderLimit\": 1,\n" + - " \"startTime\": 1451577600,\n" + - " \"endTime\": 2082729600\n" + - " },\n" + - " {\n" + - " \"requireNum\": \"2\",\n" + - " \"totalPrice\": \"0\",\n" + - " \"price\": \"0\",\n" + - " \"groupID\": 9824632661,\n" + - " \"orderLimit\": 1,\n" + - " \"startTime\": 1451577600,\n" + - " \"endTime\": 2082729600\n" + - " }\n" + - " ],\n" + - " \"skus\": [\n" + - " {\n" + - " \"specs\": [\n" + - " {\n" + - " \"spec_value_id\": 2028238306,\n" + - " \"spec_key\": \"机身颜色\",\n" + - " \"spec_value\": \"曜石\",\n" + - " \"spec_key_id\": 19517694\n" + - " },\n" + - " {\n" + - " \"spec_value_id\": 1662130765,\n" + - " \"spec_key\": \"存储容量\",\n" + - " \"spec_value\": \"8GB+128GB\",\n" + - " \"spec_key_id\": 19517730\n" + - " },\n" + - " {\n" + - " \"spec_value_id\": 2601874,\n" + - " \"spec_key\": \"套餐类型\",\n" + - " \"spec_value\": \"官方标配\",\n" + - " \"spec_key_id\": 2601872\n" + - " },\n" + - " {\n" + - " \"spec_value_id\": 2202630238,\n" + - " \"spec_key\": \"网络类型\",\n" + - " \"spec_value\": \"全网通5G\",\n" + - " \"spec_key_id\": 19517684\n" + - " }\n" + - " ],\n" + - " \"quantity\": 2,\n" + - " \"groupPrice\": \"2998\",\n" + - " \"normalPrice\": \"2999\",\n" + - " \"skuExpansionPrice\": \"0\",\n" + - " \"isOnSale\": 1,\n" + - " \"thumbUrl\": \"https://t00img.yangkeduo.com/goods/images/2020-04-13/ec3b2603e7123ae1d4b615d164668bc4.jpeg\",\n" + - " \"defaultQuantity\": 2,\n" + - " \"staticLimitQuantity\": 1,\n" + - " \"quantityTip\": \"仅剩2件\",\n" + - " \"skuID\": 549236196053\n" + - " },\n" + - " {\n" + - " \"specs\": [\n" + - " {\n" + - " \"spec_value_id\": 2028238306,\n" + - " \"spec_key\": \"机身颜色\",\n" + - " \"spec_value\": \"曜石\",\n" + - " \"spec_key_id\": 19517694\n" + - " },\n" + - " {\n" + - " \"spec_value_id\": 1662130765,\n" + - " \"spec_key\": \"存储容量\",\n" + - " \"spec_value\": \"8GB+128GB\",\n" + - " \"spec_key_id\": 19517730\n" + - " },\n" + - " {\n" + - " \"spec_value_id\": 2955021,\n" + - " \"spec_key\": \"套餐类型\",\n" + - " \"spec_value\": \"套餐一 配TWS蓝牙耳机\",\n" + - " \"spec_key_id\": 2601872\n" + - " },\n" + - " {\n" + - " \"spec_value_id\": 2202630238,\n" + - " \"spec_key\": \"网络类型\",\n" + - " \"spec_value\": \"全网通5G\",\n" + - " \"spec_key_id\": 19517684\n" + - " }\n" + - " ],\n" + - " \"quantity\": 5,\n" + - " \"groupPrice\": \"3697\",\n" + - " \"normalPrice\": \"3698\",\n" + - " \"skuExpansionPrice\": \"0\",\n" + - " \"isOnSale\": 1,\n" + - " \"thumbUrl\": \"https://t00img.yangkeduo.com/goods/images/2020-05-10/de31fcefe6095078d1a88a23ad3d0ce1.jpeg\",\n" + - " \"defaultQuantity\": 5,\n" + - " \"staticLimitQuantity\": 1,\n" + - " \"quantityTip\": \"仅剩5件\",\n" + - " \"skuID\": 549236196055\n" + - " },\n" + - " {\n" + - " \"specs\": [\n" + - " {\n" + - " \"spec_value_id\": 2028238306,\n" + - " \"spec_key\": \"机身颜色\",\n" + - " \"spec_value\": \"曜石\",\n" + - " \"spec_key_id\": 19517694\n" + - " },\n" + - " {\n" + - " \"spec_value_id\": 1662132645,\n" + - " \"spec_key\": \"存储容量\",\n" + - " \"spec_value\": \"8GB+256GB\",\n" + - " \"spec_key_id\": 19517730\n" + - " },\n" + - " {\n" + - " \"spec_value_id\": 2601874,\n" + - " \"spec_key\": \"套餐类型\",\n" + - " \"spec_value\": \"官方标配\",\n" + - " \"spec_key_id\": 2601872\n" + - " },\n" + - " {\n" + - " \"spec_value_id\": 2202630238,\n" + - " \"spec_key\": \"网络类型\",\n" + - " \"spec_value\": \"全网通5G\",\n" + - " \"spec_key_id\": 19517684\n" + - " }\n" + - " ],\n" + - " \"quantity\": 1,\n" + - " \"groupPrice\": \"3298\",\n" + - " \"normalPrice\": \"3299\",\n" + - " \"skuExpansionPrice\": \"0\",\n" + - " \"isOnSale\": 1,\n" + - " \"thumbUrl\": \"https://t00img.yangkeduo.com/goods/images/2020-04-13/ec3b2603e7123ae1d4b615d164668bc4.jpeg\",\n" + - " \"defaultQuantity\": 1,\n" + - " \"staticLimitQuantity\": 1,\n" + - " \"quantityTip\": \"仅剩1件\",\n" + - " \"skuID\": 549236196056\n" + - " },\n" + - " {\n" + - " \"specs\": [\n" + - " {\n" + - " \"spec_value_id\": 2028238306,\n" + - " \"spec_key\": \"机身颜色\",\n" + - " \"spec_value\": \"曜石\",\n" + - " \"spec_key_id\": 19517694\n" + - " },\n" + - " {\n" + - " \"spec_value_id\": 1662132645,\n" + - " \"spec_key\": \"存储容量\",\n" + - " \"spec_value\": \"8GB+256GB\",\n" + - " \"spec_key_id\": 19517730\n" + - " },\n" + - " {\n" + - " \"spec_value_id\": 2955021,\n" + - " \"spec_key\": \"套餐类型\",\n" + - " \"spec_value\": \"套餐一 配TWS蓝牙耳机\",\n" + - " \"spec_key_id\": 2601872\n" + - " },\n" + - " {\n" + - " \"spec_value_id\": 2202630238,\n" + - " \"spec_key\": \"网络类型\",\n" + - " \"spec_value\": \"全网通5G\",\n" + - " \"spec_key_id\": 19517684\n" + - " }\n" + - " ],\n" + - " \"quantity\": 5,\n" + - " \"groupPrice\": \"3997\",\n" + - " \"normalPrice\": \"3998\",\n" + - " \"skuExpansionPrice\": \"0\",\n" + - " \"isOnSale\": 1,\n" + - " \"thumbUrl\": \"https://t00img.yangkeduo.com/goods/images/2020-05-10/de31fcefe6095078d1a88a23ad3d0ce1.jpeg\",\n" + - " \"defaultQuantity\": 5,\n" + - " \"staticLimitQuantity\": 1,\n" + - " \"quantityTip\": \"仅剩5件\",\n" + - " \"skuID\": 549236196058\n" + - " },\n" + - " {\n" + - " \"specs\": [\n" + - " {\n" + - " \"spec_value_id\": 2847430409,\n" + - " \"spec_key\": \"机身颜色\",\n" + - " \"spec_value\": \"秘银\",\n" + - " \"spec_key_id\": 19517694\n" + - " },\n" + - " {\n" + - " \"spec_value_id\": 1662130765,\n" + - " \"spec_key\": \"存储容量\",\n" + - " \"spec_value\": \"8GB+128GB\",\n" + - " \"spec_key_id\": 19517730\n" + - " },\n" + - " {\n" + - " \"spec_value_id\": 2601874,\n" + - " \"spec_key\": \"套餐类型\",\n" + - " \"spec_value\": \"官方标配\",\n" + - " \"spec_key_id\": 2601872\n" + - " },\n" + - " {\n" + - " \"spec_value_id\": 2202630238,\n" + - " \"spec_key\": \"网络类型\",\n" + - " \"spec_value\": \"全网通5G\",\n" + - " \"spec_key_id\": 19517684\n" + - " }\n" + - " ],\n" + - " \"quantity\": 1,\n" + - " \"groupPrice\": \"2998\",\n" + - " \"normalPrice\": \"2999\",\n" + - " \"skuExpansionPrice\": \"0\",\n" + - " \"isOnSale\": 1,\n" + - " \"thumbUrl\": \"https://t00img.yangkeduo.com/goods/images/2020-04-13/ce818fc2ba016a68a7d870cc05c5c730.jpeg\",\n" + - " \"defaultQuantity\": 1,\n" + - " \"staticLimitQuantity\": 1,\n" + - " \"quantityTip\": \"仅剩1件\",\n" + - " \"skuID\": 549236196059\n" + - " },\n" + - " {\n" + - " \"specs\": [\n" + - " {\n" + - " \"spec_value_id\": 2847430409,\n" + - " \"spec_key\": \"机身颜色\",\n" + - " \"spec_value\": \"秘银\",\n" + - " \"spec_key_id\": 19517694\n" + - " },\n" + - " {\n" + - " \"spec_value_id\": 1662130765,\n" + - " \"spec_key\": \"存储容量\",\n" + - " \"spec_value\": \"8GB+128GB\",\n" + - " \"spec_key_id\": 19517730\n" + - " },\n" + - " {\n" + - " \"spec_value_id\": 2955021,\n" + - " \"spec_key\": \"套餐类型\",\n" + - " \"spec_value\": \"套餐一 配TWS蓝牙耳机\",\n" + - " \"spec_key_id\": 2601872\n" + - " },\n" + - " {\n" + - " \"spec_value_id\": 2202630238,\n" + - " \"spec_key\": \"网络类型\",\n" + - " \"spec_value\": \"全网通5G\",\n" + - " \"spec_key_id\": 19517684\n" + - " }\n" + - " ],\n" + - " \"quantity\": 5,\n" + - " \"groupPrice\": \"3697\",\n" + - " \"normalPrice\": \"3698\",\n" + - " \"skuExpansionPrice\": \"0\",\n" + - " \"isOnSale\": 1,\n" + - " \"thumbUrl\": \"https://t00img.yangkeduo.com/goods/images/2020-05-10/1aad42bf5f110aef31ac0d1740a9ed38.jpeg\",\n" + - " \"defaultQuantity\": 5,\n" + - " \"staticLimitQuantity\": 1,\n" + - " \"quantityTip\": \"仅剩5件\",\n" + - " \"skuID\": 549236196061\n" + - " },\n" + - " {\n" + - " \"specs\": [\n" + - " {\n" + - " \"spec_value_id\": 2847430409,\n" + - " \"spec_key\": \"机身颜色\",\n" + - " \"spec_value\": \"秘银\",\n" + - " \"spec_key_id\": 19517694\n" + - " },\n" + - " {\n" + - " \"spec_value_id\": 1662132645,\n" + - " \"spec_key\": \"存储容量\",\n" + - " \"spec_value\": \"8GB+256GB\",\n" + - " \"spec_key_id\": 19517730\n" + - " },\n" + - " {\n" + - " \"spec_value_id\": 2601874,\n" + - " \"spec_key\": \"套餐类型\",\n" + - " \"spec_value\": \"官方标配\",\n" + - " \"spec_key_id\": 2601872\n" + - " },\n" + - " {\n" + - " \"spec_value_id\": 2202630238,\n" + - " \"spec_key\": \"网络类型\",\n" + - " \"spec_value\": \"全网通5G\",\n" + - " \"spec_key_id\": 19517684\n" + - " }\n" + - " ],\n" + - " \"quantity\": 0,\n" + - " \"groupPrice\": \"3298\",\n" + - " \"normalPrice\": \"3299\",\n" + - " \"skuExpansionPrice\": \"0\",\n" + - " \"isOnSale\": 1,\n" + - " \"thumbUrl\": \"https://t00img.yangkeduo.com/goods/images/2020-04-13/ce818fc2ba016a68a7d870cc05c5c730.jpeg\",\n" + - " \"defaultQuantity\": 0,\n" + - " \"staticLimitQuantity\": 1,\n" + - " \"skuID\": 549236196063\n" + - " },\n" + - " {\n" + - " \"specs\": [\n" + - " {\n" + - " \"spec_value_id\": 2847430409,\n" + - " \"spec_key\": \"机身颜色\",\n" + - " \"spec_value\": \"秘银\",\n" + - " \"spec_key_id\": 19517694\n" + - " },\n" + - " {\n" + - " \"spec_value_id\": 1662132645,\n" + - " \"spec_key\": \"存储容量\",\n" + - " \"spec_value\": \"8GB+256GB\",\n" + - " \"spec_key_id\": 19517730\n" + - " },\n" + - " {\n" + - " \"spec_value_id\": 2955021,\n" + - " \"spec_key\": \"套餐类型\",\n" + - " \"spec_value\": \"套餐一 配TWS蓝牙耳机\",\n" + - " \"spec_key_id\": 2601872\n" + - " },\n" + - " {\n" + - " \"spec_value_id\": 2202630238,\n" + - " \"spec_key\": \"网络类型\",\n" + - " \"spec_value\": \"全网通5G\",\n" + - " \"spec_key_id\": 19517684\n" + - " }\n" + - " ],\n" + - " \"quantity\": 5,\n" + - " \"groupPrice\": \"3997\",\n" + - " \"normalPrice\": \"3998\",\n" + - " \"skuExpansionPrice\": \"0\",\n" + - " \"isOnSale\": 1,\n" + - " \"thumbUrl\": \"https://t00img.yangkeduo.com/goods/images/2020-05-10/1aad42bf5f110aef31ac0d1740a9ed38.jpeg\",\n" + - " \"defaultQuantity\": 5,\n" + - " \"staticLimitQuantity\": 1,\n" + - " \"quantityTip\": \"仅剩5件\",\n" + - " \"skuID\": 549236196066\n" + - " },\n" + - " {\n" + - " \"specs\": [\n" + - " {\n" + - " \"spec_value_id\": 2847426690,\n" + - " \"spec_key\": \"机身颜色\",\n" + - " \"spec_value\": \"绯云\",\n" + - " \"spec_key_id\": 19517694\n" + - " },\n" + - " {\n" + - " \"spec_value_id\": 1662130765,\n" + - " \"spec_key\": \"存储容量\",\n" + - " \"spec_value\": \"8GB+128GB\",\n" + - " \"spec_key_id\": 19517730\n" + - " },\n" + - " {\n" + - " \"spec_value_id\": 2601874,\n" + - " \"spec_key\": \"套餐类型\",\n" + - " \"spec_value\": \"官方标配\",\n" + - " \"spec_key_id\": 2601872\n" + - " },\n" + - " {\n" + - " \"spec_value_id\": 2202630238,\n" + - " \"spec_key\": \"网络类型\",\n" + - " \"spec_value\": \"全网通5G\",\n" + - " \"spec_key_id\": 19517684\n" + - " }\n" + - " ],\n" + - " \"quantity\": 3,\n" + - " \"groupPrice\": \"2998\",\n" + - " \"normalPrice\": \"2999\",\n" + - " \"skuExpansionPrice\": \"0\",\n" + - " \"isOnSale\": 1,\n" + - " \"thumbUrl\": \"https://t00img.yangkeduo.com/goods/images/2020-04-13/66243478dab013d86dbf869c8a0f4a97.jpeg\",\n" + - " \"defaultQuantity\": 3,\n" + - " \"staticLimitQuantity\": 1,\n" + - " \"quantityTip\": \"仅剩3件\",\n" + - " \"skuID\": 549236196067\n" + - " },\n" + - " {\n" + - " \"specs\": [\n" + - " {\n" + - " \"spec_value_id\": 2847426690,\n" + - " \"spec_key\": \"机身颜色\",\n" + - " \"spec_value\": \"绯云\",\n" + - " \"spec_key_id\": 19517694\n" + - " },\n" + - " {\n" + - " \"spec_value_id\": 1662130765,\n" + - " \"spec_key\": \"存储容量\",\n" + - " \"spec_value\": \"8GB+128GB\",\n" + - " \"spec_key_id\": 19517730\n" + - " },\n" + - " {\n" + - " \"spec_value_id\": 2955021,\n" + - " \"spec_key\": \"套餐类型\",\n" + - " \"spec_value\": \"套餐一 配TWS蓝牙耳机\",\n" + - " \"spec_key_id\": 2601872\n" + - " },\n" + - " {\n" + - " \"spec_value_id\": 2202630238,\n" + - " \"spec_key\": \"网络类型\",\n" + - " \"spec_value\": \"全网通5G\",\n" + - " \"spec_key_id\": 19517684\n" + - " }\n" + - " ],\n" + - " \"quantity\": 5,\n" + - " \"groupPrice\": \"3697\",\n" + - " \"normalPrice\": \"3698\",\n" + - " \"skuExpansionPrice\": \"0\",\n" + - " \"isOnSale\": 1,\n" + - " \"thumbUrl\": \"https://t00img.yangkeduo.com/goods/images/2020-05-10/276e5be4e433d6a301968907aacf0dcb.jpeg\",\n" + - " \"defaultQuantity\": 5,\n" + - " \"staticLimitQuantity\": 1,\n" + - " \"quantityTip\": \"仅剩5件\",\n" + - " \"skuID\": 549236196068\n" + - " },\n" + - " {\n" + - " \"specs\": [\n" + - " {\n" + - " \"spec_value_id\": 2847426690,\n" + - " \"spec_key\": \"机身颜色\",\n" + - " \"spec_value\": \"绯云\",\n" + - " \"spec_key_id\": 19517694\n" + - " },\n" + - " {\n" + - " \"spec_value_id\": 1662132645,\n" + - " \"spec_key\": \"存储容量\",\n" + - " \"spec_value\": \"8GB+256GB\",\n" + - " \"spec_key_id\": 19517730\n" + - " },\n" + - " {\n" + - " \"spec_value_id\": 2601874,\n" + - " \"spec_key\": \"套餐类型\",\n" + - " \"spec_value\": \"官方标配\",\n" + - " \"spec_key_id\": 2601872\n" + - " },\n" + - " {\n" + - " \"spec_value_id\": 2202630238,\n" + - " \"spec_key\": \"网络类型\",\n" + - " \"spec_value\": \"全网通5G\",\n" + - " \"spec_key_id\": 19517684\n" + - " }\n" + - " ],\n" + - " \"quantity\": 4,\n" + - " \"groupPrice\": \"3298\",\n" + - " \"normalPrice\": \"3299\",\n" + - " \"skuExpansionPrice\": \"0\",\n" + - " \"isOnSale\": 1,\n" + - " \"thumbUrl\": \"https://t00img.yangkeduo.com/goods/images/2020-04-13/66243478dab013d86dbf869c8a0f4a97.jpeg\",\n" + - " \"defaultQuantity\": 4,\n" + - " \"staticLimitQuantity\": 1,\n" + - " \"quantityTip\": \"仅剩4件\",\n" + - " \"skuID\": 549236196069\n" + - " },\n" + - " {\n" + - " \"specs\": [\n" + - " {\n" + - " \"spec_value_id\": 2847426690,\n" + - " \"spec_key\": \"机身颜色\",\n" + - " \"spec_value\": \"绯云\",\n" + - " \"spec_key_id\": 19517694\n" + - " },\n" + - " {\n" + - " \"spec_value_id\": 1662132645,\n" + - " \"spec_key\": \"存储容量\",\n" + - " \"spec_value\": \"8GB+256GB\",\n" + - " \"spec_key_id\": 19517730\n" + - " },\n" + - " {\n" + - " \"spec_value_id\": 2955021,\n" + - " \"spec_key\": \"套餐类型\",\n" + - " \"spec_value\": \"套餐一 配TWS蓝牙耳机\",\n" + - " \"spec_key_id\": 2601872\n" + - " },\n" + - " {\n" + - " \"spec_value_id\": 2202630238,\n" + - " \"spec_key\": \"网络类型\",\n" + - " \"spec_value\": \"全网通5G\",\n" + - " \"spec_key_id\": 19517684\n" + - " }\n" + - " ],\n" + - " \"quantity\": 5,\n" + - " \"groupPrice\": \"3997\",\n" + - " \"normalPrice\": \"3998\",\n" + - " \"skuExpansionPrice\": \"0\",\n" + - " \"isOnSale\": 1,\n" + - " \"thumbUrl\": \"https://t00img.yangkeduo.com/goods/images/2020-05-10/276e5be4e433d6a301968907aacf0dcb.jpeg\",\n" + - " \"defaultQuantity\": 5,\n" + - " \"staticLimitQuantity\": 1,\n" + - " \"quantityTip\": \"仅剩5件\",\n" + - " \"skuID\": 549236196070\n" + - " },\n" + - " {\n" + - " \"specs\": [\n" + - " {\n" + - " \"spec_value_id\": 3486080437,\n" + - " \"spec_key\": \"机身颜色\",\n" + - " \"spec_value\": \"虹影\",\n" + - " \"spec_key_id\": 19517694\n" + - " },\n" + - " {\n" + - " \"spec_value_id\": 1662130765,\n" + - " \"spec_key\": \"存储容量\",\n" + - " \"spec_value\": \"8GB+128GB\",\n" + - " \"spec_key_id\": 19517730\n" + - " },\n" + - " {\n" + - " \"spec_value_id\": 2601874,\n" + - " \"spec_key\": \"套餐类型\",\n" + - " \"spec_value\": \"官方标配\",\n" + - " \"spec_key_id\": 2601872\n" + - " },\n" + - " {\n" + - " \"spec_value_id\": 2202630238,\n" + - " \"spec_key\": \"网络类型\",\n" + - " \"spec_value\": \"全网通5G\",\n" + - " \"spec_key_id\": 19517684\n" + - " }\n" + - " ],\n" + - " \"quantity\": 5,\n" + - " \"groupPrice\": \"2998\",\n" + - " \"normalPrice\": \"2999\",\n" + - " \"skuExpansionPrice\": \"0\",\n" + - " \"isOnSale\": 1,\n" + - " \"thumbUrl\": \"https://t00img.yangkeduo.com/goods/images/2020-04-13/74e48f7507393296de53386c0540cf91.jpeg\",\n" + - " \"defaultQuantity\": 5,\n" + - " \"staticLimitQuantity\": 1,\n" + - " \"quantityTip\": \"仅剩5件\",\n" + - " \"skuID\": 549236196071\n" + - " },\n" + - " {\n" + - " \"specs\": [\n" + - " {\n" + - " \"spec_value_id\": 3486080437,\n" + - " \"spec_key\": \"机身颜色\",\n" + - " \"spec_value\": \"虹影\",\n" + - " \"spec_key_id\": 19517694\n" + - " },\n" + - " {\n" + - " \"spec_value_id\": 1662130765,\n" + - " \"spec_key\": \"存储容量\",\n" + - " \"spec_value\": \"8GB+128GB\",\n" + - " \"spec_key_id\": 19517730\n" + - " },\n" + - " {\n" + - " \"spec_value_id\": 2955021,\n" + - " \"spec_key\": \"套餐类型\",\n" + - " \"spec_value\": \"套餐一 配TWS蓝牙耳机\",\n" + - " \"spec_key_id\": 2601872\n" + - " },\n" + - " {\n" + - " \"spec_value_id\": 2202630238,\n" + - " \"spec_key\": \"网络类型\",\n" + - " \"spec_value\": \"全网通5G\",\n" + - " \"spec_key_id\": 19517684\n" + - " }\n" + - " ],\n" + - " \"quantity\": 5,\n" + - " \"groupPrice\": \"3697\",\n" + - " \"normalPrice\": \"3698\",\n" + - " \"skuExpansionPrice\": \"0\",\n" + - " \"isOnSale\": 1,\n" + - " \"thumbUrl\": \"https://t00img.yangkeduo.com/goods/images/2020-05-10/851fa4f8f7a903314c966734a0c30987.jpeg\",\n" + - " \"defaultQuantity\": 5,\n" + - " \"staticLimitQuantity\": 1,\n" + - " \"quantityTip\": \"仅剩5件\",\n" + - " \"skuID\": 549236196072\n" + - " },\n" + - " {\n" + - " \"specs\": [\n" + - " {\n" + - " \"spec_value_id\": 3486080437,\n" + - " \"spec_key\": \"机身颜色\",\n" + - " \"spec_value\": \"虹影\",\n" + - " \"spec_key_id\": 19517694\n" + - " },\n" + - " {\n" + - " \"spec_value_id\": 1662132645,\n" + - " \"spec_key\": \"存储容量\",\n" + - " \"spec_value\": \"8GB+256GB\",\n" + - " \"spec_key_id\": 19517730\n" + - " },\n" + - " {\n" + - " \"spec_value_id\": 2601874,\n" + - " \"spec_key\": \"套餐类型\",\n" + - " \"spec_value\": \"官方标配\",\n" + - " \"spec_key_id\": 2601872\n" + - " },\n" + - " {\n" + - " \"spec_value_id\": 2202630238,\n" + - " \"spec_key\": \"网络类型\",\n" + - " \"spec_value\": \"全网通5G\",\n" + - " \"spec_key_id\": 19517684\n" + - " }\n" + - " ],\n" + - " \"quantity\": 3,\n" + - " \"groupPrice\": \"3298\",\n" + - " \"normalPrice\": \"3299\",\n" + - " \"skuExpansionPrice\": \"0\",\n" + - " \"isOnSale\": 1,\n" + - " \"thumbUrl\": \"https://t00img.yangkeduo.com/goods/images/2020-04-13/74e48f7507393296de53386c0540cf91.jpeg\",\n" + - " \"defaultQuantity\": 3,\n" + - " \"staticLimitQuantity\": 1,\n" + - " \"quantityTip\": \"仅剩3件\",\n" + - " \"skuID\": 549236196073\n" + - " },\n" + - " {\n" + - " \"specs\": [\n" + - " {\n" + - " \"spec_value_id\": 3486080437,\n" + - " \"spec_key\": \"机身颜色\",\n" + - " \"spec_value\": \"虹影\",\n" + - " \"spec_key_id\": 19517694\n" + - " },\n" + - " {\n" + - " \"spec_value_id\": 1662132645,\n" + - " \"spec_key\": \"存储容量\",\n" + - " \"spec_value\": \"8GB+256GB\",\n" + - " \"spec_key_id\": 19517730\n" + - " },\n" + - " {\n" + - " \"spec_value_id\": 2955021,\n" + - " \"spec_key\": \"套餐类型\",\n" + - " \"spec_value\": \"套餐一 配TWS蓝牙耳机\",\n" + - " \"spec_key_id\": 2601872\n" + - " },\n" + - " {\n" + - " \"spec_value_id\": 2202630238,\n" + - " \"spec_key\": \"网络类型\",\n" + - " \"spec_value\": \"全网通5G\",\n" + - " \"spec_key_id\": 19517684\n" + - " }\n" + - " ],\n" + - " \"quantity\": 5,\n" + - " \"groupPrice\": \"3997\",\n" + - " \"normalPrice\": \"3998\",\n" + - " \"skuExpansionPrice\": \"0\",\n" + - " \"isOnSale\": 1,\n" + - " \"thumbUrl\": \"https://t00img.yangkeduo.com/goods/images/2020-05-10/851fa4f8f7a903314c966734a0c30987.jpeg\",\n" + - " \"defaultQuantity\": 5,\n" + - " \"staticLimitQuantity\": 1,\n" + - " \"quantityTip\": \"仅剩5件\",\n" + - " \"skuID\": 549236196075\n" + - " }\n" + - " ],\n" + - " \"hdThumbUrl\": \"https://t00img.yangkeduo.com/goods/images/2020-05-29/e224ff24c7c8a334f392126c1ae1b7dc.jpeg\",\n" + - " \"goodsId\": 5914165983,\n" + - " \"minGroupPrice\": \"2998\",\n" + - " \"history_group\": {},\n" + - " \"banner\": [\n" + - " \"https://t00img.yangkeduo.com/goods/images/2020-05-29/e2aa52d0-e0db-4e5f-836d-c561b7256529.jpg\",\n" + - " \"https://t00img.yangkeduo.com/goods/images/2020-04-13/ae9b343e-8866-4d93-a7cc-87f13eeb07cb.jpg\",\n" + - " \"https://t00img.yangkeduo.com/goods/images/2020-04-13/9b8096b9-26b8-4b88-b365-d6348cf77d4e.jpg\",\n" + - " \"https://t00img.yangkeduo.com/goods/images/2020-04-13/8e474d75-a0ca-4ed5-a7c0-5a5cc58019f3.jpg\",\n" + - " \"https://t00img.yangkeduo.com/goods/images/2020-04-13/410b9f12-64e8-42f6-8772-baa7ca05f272.jpg\",\n" + - " \"https://t00img.yangkeduo.com/goods/images/2020-04-13/f175c927-eb22-45c1-9e60-84dddd600ee1.jpg\",\n" + - " \"https://t00img.yangkeduo.com/goods/images/2020-04-13/9148bd5c-dbe3-4ffc-bde4-6b1dd9c65169.jpg\",\n" + - " \"https://t00img.yangkeduo.com/goods/images/2020-04-13/f025712e-e55f-473e-87ac-9e4f6d1ecea8.jpg\",\n" + - " \"https://t00img.yangkeduo.com/goods/images/2020-04-13/7eceea84-953e-4450-adf8-3c8aae1d03df.jpg\"\n" + - " ],\n" + - " \"video\": [\n" + - " {\n" + - " \"videoUrl\": \"https://video3.yangkeduo.com/i1/2019-12-02/fa8632638ad29fe4911578a93023e958.mp4\",\n" + - " \"width\": 1920,\n" + - " \"url\": \"https://video3.yangkeduo.com/i1/2019-12-02/fa8632638ad29fe4911578a93023e958.mp4\",\n" + - " \"height\": 1080\n" + - " }\n" + - " ],\n" + - " \"url\": \"http://mobile.yangkeduo.com/goods.html?goods_id=5914165983\",\n" + - " \"service_promise\": [\n" + - " {\n" + - " \"detail_hidden\": 0,\n" + - " \"navigation\": 0,\n" + - " \"navigation_url\": \"\",\n" + - " \"top\": 1,\n" + - " \"top_type\": 6,\n" + - " \"id\": 17,\n" + - " \"dialog_type\": \"顺丰包邮\",\n" + - " \"type\": \"顺丰包邮\",\n" + - " \"desc\": \"商家承诺指定区域“顺丰包邮”,未履行服务将赔付15元无门槛代金券\"\n" + - " },\n" + - " {\n" + - " \"detail_hidden\": 0,\n" + - " \"navigation\": 0,\n" + - " \"navigation_url\": \"\",\n" + - " \"top\": 0,\n" + - " \"top_type\": 0,\n" + - " \"id\": 3,\n" + - " \"dialog_type\": \"退货包运费\",\n" + - " \"type\": \"退货包运费\",\n" + - " \"desc\": \"确认收货后15天内申请退货退款或换货,拼多多将补贴退货运费\"\n" + - " },\n" + - " {\n" + - " \"detail_hidden\": 0,\n" + - " \"navigation\": 0,\n" + - " \"navigation_url\": \"\",\n" + - " \"top\": 0,\n" + - " \"top_type\": 0,\n" + - " \"id\": 19,\n" + - " \"dialog_type\": \"全国联保\",\n" + - " \"type\": \"全国联保\",\n" + - " \"desc\": \"品牌方售后电话报修,直达品牌售后\"\n" + - " },\n" + - " {\n" + - " \"detail_hidden\": 0,\n" + - " \"navigation\": 0,\n" + - " \"navigation_url\": \"\",\n" + - " \"top\": 0,\n" + - " \"top_type\": 0,\n" + - " \"id\": 2,\n" + - " \"dialog_type\": \"7天无理由退货\",\n" + - " \"type\": \"7天无理由退货\",\n" + - " \"desc\": \"满足相应条件时,消费者可申请7天无理由退货\"\n" + - " },\n" + - " {\n" + - " \"detail_hidden\": 0,\n" + - " \"navigation\": 0,\n" + - " \"navigation_url\": \"\",\n" + - " \"top\": 0,\n" + - " \"top_type\": 0,\n" + - " \"id\": 13,\n" + - " \"dialog_type\": \"48小时发货\",\n" + - " \"type\": \"48小时发货\",\n" + - " \"desc\": \"若超时未发货,消费者将会收到至少3元无门槛代金券\"\n" + - " },\n" + - " {\n" + - " \"detail_hidden\": 0,\n" + - " \"navigation\": 0,\n" + - " \"navigation_url\": \"\",\n" + - " \"top\": 0,\n" + - " \"top_type\": 0,\n" + - " \"id\": 15,\n" + - " \"dialog_type\": \"假一赔十\",\n" + - " \"type\": \"假一赔十\",\n" + - " \"desc\": \"若收到商品是假冒品牌,可获得十倍现金券赔偿\"\n" + - " }\n" + - " ],\n" + - " \"catId\": 5836,\n" + - " \"maxGroupPrice\": \"3997\",\n" + - " \"goodsProperty\": [\n" + - " {\n" + - " \"reference_id\": 462,\n" + - " \"ref_pid\": 310,\n" + - " \"values\": [\n" + - " \"vivo\"\n" + - " ],\n" + - " \"key\": \"品牌\"\n" + - " },\n" + - " {\n" + - " \"reference_id\": 0,\n" + - " \"ref_pid\": 311,\n" + - " \"values\": [\n" + - " \"X30(5G)\"\n" + - " ],\n" + - " \"key\": \"型号\"\n" + - " },\n" + - " {\n" + - " \"reference_id\": 0,\n" + - " \"ref_pid\": 313,\n" + - " \"values\": [\n" + - " \"8GB\"\n" + - " ],\n" + - " \"icon\": {\n" + - " \"icon_font\": \"59301\",\n" + - " \"icon_id\": 10,\n" + - " \"icon_name\": \"运行内存\"\n" + - " },\n" + - " \"key\": \"运行内存\"\n" + - " },\n" + - " {\n" + - " \"reference_id\": 0,\n" + - " \"ref_pid\": 1531,\n" + - " \"values\": [\n" + - " \"256GB\",\n" + - " \"128GB\"\n" + - " ],\n" + - " \"key\": \"机身内存\"\n" + - " },\n" + - " {\n" + - " \"reference_id\": 0,\n" + - " \"ref_pid\": 1382,\n" + - " \"values\": [\n" + - " \"2019-12\"\n" + - " ],\n" + - " \"key\": \"上市时间\"\n" + - " },\n" + - " {\n" + - " \"reference_id\": 0,\n" + - " \"ref_pid\": 1404,\n" + - " \"values\": [\n" + - " \"6.44英寸\"\n" + - " ],\n" + - " \"icon\": {\n" + - " \"icon_font\": \"59300\",\n" + - " \"icon_id\": 11,\n" + - " \"icon_name\": \"超大屏\"\n" + - " },\n" + - " \"key\": \"主屏幕尺寸\"\n" + - " },\n" + - " {\n" + - " \"reference_id\": 0,\n" + - " \"ref_pid\": 601,\n" + - " \"values\": [\n" + - " \"2400X1080像素\"\n" + - " ],\n" + - " \"icon\": {\n" + - " \"icon_font\": \"59306\",\n" + - " \"icon_id\": 5,\n" + - " \"icon_name\": \"分辨率\"\n" + - " },\n" + - " \"key\": \"分辨率\"\n" + - " },\n" + - " {\n" + - " \"reference_id\": 0,\n" + - " \"ref_pid\": 1405,\n" + - " \"values\": [\n" + - " \"3200万像素\"\n" + - " ],\n" + - " \"icon\": {\n" + - " \"icon_font\": \"59304\",\n" + - " \"icon_id\": 7,\n" + - " \"icon_name\": \"前置摄像头\"\n" + - " },\n" + - " \"key\": \"前置摄像头像素\"\n" + - " },\n" + - " {\n" + - " \"reference_id\": 0,\n" + - " \"ref_pid\": 315,\n" + - " \"values\": [\n" + - " \"4350mAh\"\n" + - " ],\n" + - " \"icon\": {\n" + - " \"icon_font\": \"59305\",\n" + - " \"icon_id\": 6,\n" + - " \"icon_name\": \"超长待机\"\n" + - " },\n" + - " \"key\": \"电池容量\"\n" + - " },\n" + - " {\n" + - " \"reference_id\": 0,\n" + - " \"ref_pid\": 1391,\n" + - " \"values\": [\n" + - " \"其它\"\n" + - " ],\n" + - " \"key\": \"充电器功率\"\n" + - " },\n" + - " {\n" + - " \"reference_id\": 0,\n" + - " \"ref_pid\": 1392,\n" + - " \"values\": [\n" + - " \"支持\"\n" + - " ],\n" + - " \"key\": \"NFC模式\"\n" + - " },\n" + - " {\n" + - " \"reference_id\": 0,\n" + - " \"ref_pid\": 1395,\n" + - " \"values\": [\n" + - " \"双卡双待\"\n" + - " ],\n" + - " \"key\": \"网络模式\"\n" + - " },\n" + - " {\n" + - " \"reference_id\": 0,\n" + - " \"ref_pid\": 1397,\n" + - " \"values\": [\n" + - " \"支持\"\n" + - " ],\n" + - " \"key\": \"5G网络\"\n" + - " },\n" + - " {\n" + - " \"reference_id\": 0,\n" + - " \"ref_pid\": 1399,\n" + - " \"values\": [\n" + - " \"不支持\"\n" + - " ],\n" + - " \"key\": \"存储卡拓展\"\n" + - " },\n" + - " {\n" + - " \"reference_id\": 0,\n" + - " \"ref_pid\": 1400,\n" + - " \"values\": [\n" + - " \"支持\"\n" + - " ],\n" + - " \"key\": \"导航\"\n" + - " },\n" + - " {\n" + - " \"reference_id\": 0,\n" + - " \"ref_pid\": 1401,\n" + - " \"values\": [\n" + - " \"支持\"\n" + - " ],\n" + - " \"key\": \"指纹识别\"\n" + - " },\n" + - " {\n" + - " \"reference_id\": 0,\n" + - " \"ref_pid\": 1402,\n" + - " \"values\": [\n" + - " \"支持\"\n" + - " ],\n" + - " \"key\": \"面部识别\"\n" + - " }\n" + - " ],\n" + - " \"minNormalPrice\": \"2999\",\n" + - " \"detail\": [\n" + - " {\n" + - " \"width\": 750,\n" + - " \"url\": \"https://t00img.yangkeduo.com/goods/images/2020-05-29/d3144dc5-4ddf-44f6-9473-9cc3e9c7069a.jpg\",\n" + - " \"height\": 298\n" + - " },\n" + - " {\n" + - " \"width\": 750,\n" + - " \"url\": \"https://t00img.yangkeduo.com/goods/images/2020-05-18/9bd30a85-64c0-4a7b-a396-7392c3b02c33.jpg\",\n" + - " \"height\": 315\n" + - " },\n" + - " {\n" + - " \"width\": 750,\n" + - " \"url\": \"https://t00img.yangkeduo.com/goods/images/2020-01-21/7dd80020-2bf5-477e-85eb-a5abb548c21a.jpg\",\n" + - " \"height\": 296\n" + - " },\n" + - " {\n" + - " \"width\": 750,\n" + - " \"url\": \"https://t00img.yangkeduo.com/goods/images/2020-05-22/2a7f3311-2e1d-4e12-a01d-0b2296cc859b.jpg\",\n" + - " \"height\": 375\n" + - " },\n" + - " {\n" + - " \"width\": 750,\n" + - " \"url\": \"https://t00img.yangkeduo.com/goods/images/2020-05-22/a2ed6ca2-9c4d-4a99-948e-29c4994177f5.jpg\",\n" + - " \"height\": 433\n" + - " },\n" + - " {\n" + - " \"width\": 750,\n" + - " \"url\": \"https://t00img.yangkeduo.com/goods/images/2019-12-27/471e58c8-9b61-4a35-aebf-5519d577559f.jpg\",\n" + - " \"height\": 916\n" + - " },\n" + - " {\n" + - " \"width\": 750,\n" + - " \"url\": \"https://t00img.yangkeduo.com/goods/images/2020-04-13/5ab17a4e-d6dd-4ec2-9929-c5d26c291747.jpg\",\n" + - " \"height\": 359\n" + - " },\n" + - " {\n" + - " \"width\": 750,\n" + - " \"url\": \"https://t00img.yangkeduo.com/goods/images/2020-04-13/9756361c-91c6-4677-9f8f-b9e82ad75352.jpg\",\n" + - " \"height\": 1047\n" + - " },\n" + - " {\n" + - " \"width\": 750,\n" + - " \"url\": \"https://t00img.yangkeduo.com/goods/images/2020-04-13/5a560222-a57f-4412-a97b-9d081c11a0ec.jpg\",\n" + - " \"height\": 471\n" + - " },\n" + - " {\n" + - " \"width\": 750,\n" + - " \"url\": \"https://t00img.yangkeduo.com/goods/images/2020-04-13/dfc24c9f-e68a-4184-8946-c53413bcefa3.jpg\",\n" + - " \"height\": 947\n" + - " },\n" + - " {\n" + - " \"width\": 750,\n" + - " \"url\": \"https://t00img.yangkeduo.com/goods/images/2020-04-13/a15ea9da-a3b2-429e-a774-4420c7a3915b.jpg\",\n" + - " \"height\": 810\n" + - " },\n" + - " {\n" + - " \"width\": 750,\n" + - " \"url\": \"https://t00img.yangkeduo.com/goods/images/2020-04-13/4dae823a-a671-446a-b993-431ba865b573.jpg\",\n" + - " \"height\": 709\n" + - " },\n" + - " {\n" + - " \"width\": 750,\n" + - " \"url\": \"https://t00img.yangkeduo.com/goods/images/2020-04-13/c2556310-ef39-4dea-b4a2-1d4a2bdb4d7e.jpg\",\n" + - " \"height\": 1026\n" + - " },\n" + - " {\n" + - " \"width\": 750,\n" + - " \"url\": \"https://t00img.yangkeduo.com/goods/images/2020-04-13/ca69dc47-5d8f-44e5-adc5-7393c0edf1a9.jpg\",\n" + - " \"height\": 612\n" + - " },\n" + - " {\n" + - " \"width\": 750,\n" + - " \"url\": \"https://t00img.yangkeduo.com/goods/images/2020-04-13/0865fa00-bdc7-4b72-983f-aceaba2db259.jpg\",\n" + - " \"height\": 1113\n" + - " },\n" + - " {\n" + - " \"width\": 750,\n" + - " \"url\": \"https://t00img.yangkeduo.com/goods/images/2020-04-13/61ad5505-bf46-4deb-a56e-f09128b2e96e.jpg\",\n" + - " \"height\": 1089\n" + - " },\n" + - " {\n" + - " \"width\": 750,\n" + - " \"url\": \"https://t00img.yangkeduo.com/goods/images/2020-04-13/dbc287fa-3b3c-4c72-888c-c70b2a05f785.jpg\",\n" + - " \"height\": 1241\n" + - " },\n" + - " {\n" + - " \"width\": 750,\n" + - " \"url\": \"https://t00img.yangkeduo.com/goods/images/2020-04-13/24f96730-9b0c-46f3-9a85-f08d9e818906.jpg\",\n" + - " \"height\": 1039\n" + - " },\n" + - " {\n" + - " \"width\": 750,\n" + - " \"url\": \"https://t00img.yangkeduo.com/goods/images/2020-04-13/d90838cc-f4ac-42a5-addd-f8b003d3dc11.jpg\",\n" + - " \"height\": 622\n" + - " },\n" + - " {\n" + - " \"width\": 750,\n" + - " \"url\": \"https://t00img.yangkeduo.com/goods/images/2020-04-13/41e54edf-d7db-4b7a-a386-b450348a0249.jpg\",\n" + - " \"height\": 1180\n" + - " },\n" + - " {\n" + - " \"width\": 750,\n" + - " \"url\": \"https://t00img.yangkeduo.com/goods/images/2020-04-13/b4ae5e0c-dfa0-494a-b487-fe958dd3a074.jpg\",\n" + - " \"height\": 852\n" + - " },\n" + - " {\n" + - " \"width\": 750,\n" + - " \"url\": \"https://t00img.yangkeduo.com/goods/images/2020-04-13/4c7f926b-f5ce-4be6-9a5a-b6bbe3643286.jpg\",\n" + - " \"height\": 1207\n" + - " },\n" + - " {\n" + - " \"width\": 750,\n" + - " \"url\": \"https://t00img.yangkeduo.com/goods/images/2020-04-13/02bdeb01-0f93-4df1-9c8e-7deb8136ad49.jpg\",\n" + - " \"height\": 846\n" + - " },\n" + - " {\n" + - " \"width\": 750,\n" + - " \"url\": \"https://t00img.yangkeduo.com/goods/images/2020-04-13/a10664d2-c5ac-4e9c-b9cf-605d0b27a55e.jpg\",\n" + - " \"height\": 1127\n" + - " },\n" + - " {\n" + - " \"width\": 750,\n" + - " \"url\": \"https://t00img.yangkeduo.com/goods/images/2020-04-13/f64cfe2a-b92e-4ec8-ab16-921ac60e9e6c.jpg\",\n" + - " \"height\": 611\n" + - " },\n" + - " {\n" + - " \"width\": 750,\n" + - " \"url\": \"https://t00img.yangkeduo.com/goods/images/2020-04-13/a70102ec-0a65-4061-ac38-d9c1e60bb31d.jpg\",\n" + - " \"height\": 915\n" + - " },\n" + - " {\n" + - " \"width\": 750,\n" + - " \"url\": \"https://t00img.yangkeduo.com/goods/images/2020-04-13/d9973e3d-58a3-4104-a476-72687e10945f.jpg\",\n" + - " \"height\": 886\n" + - " },\n" + - " {\n" + - " \"width\": 750,\n" + - " \"url\": \"https://t00img.yangkeduo.com/goods/images/2020-04-13/a87b21d7-9eac-4bdb-a7ea-9372c798805a.jpg\",\n" + - " \"height\": 500\n" + - " },\n" + - " {\n" + - " \"width\": 750,\n" + - " \"url\": \"https://t00img.yangkeduo.com/goods/images/2020-04-13/9c8594f5-79b9-4033-be4f-b699d6966541.jpg\",\n" + - " \"height\": 1305\n" + - " },\n" + - " {\n" + - " \"width\": 750,\n" + - " \"url\": \"https://t00img.yangkeduo.com/goods/images/2020-04-13/0cf31dfe-6c44-4d7d-af43-fba3a6edb91d.jpg\",\n" + - " \"height\": 925\n" + - " },\n" + - " {\n" + - " \"width\": 738,\n" + - " \"url\": \"https://t00img.yangkeduo.com/goods/images/2020-04-13/ac6c688e-c3af-4d2a-bfa0-3afa0be4c042.jpg\",\n" + - " \"height\": 1500\n" + - " },\n" + - " {\n" + - " \"width\": 750,\n" + - " \"url\": \"https://t00img.yangkeduo.com/goods/images/2020-04-13/b96315b4-da18-428b-8698-3722b201e62c.jpg\",\n" + - " \"height\": 795\n" + - " },\n" + - " {\n" + - " \"width\": 750,\n" + - " \"url\": \"https://t00img.yangkeduo.com/goods/images/2020-04-13/d5bfbc37-1afc-4b88-b932-1c3fdf4e7945.jpg\",\n" + - " \"height\": 1239\n" + - " },\n" + - " {\n" + - " \"width\": 750,\n" + - " \"url\": \"https://t00img.yangkeduo.com/goods/images/2020-04-13/5d6ac162-89d3-4ad1-a66a-25a4a8faa223.jpg\",\n" + - " \"height\": 725\n" + - " },\n" + - " {\n" + - " \"width\": 750,\n" + - " \"url\": \"https://t00img.yangkeduo.com/goods/images/2020-04-13/c6d4b564-6d17-45aa-833b-cec31573f233.jpg\",\n" + - " \"height\": 1178\n" + - " },\n" + - " {\n" + - " \"width\": 750,\n" + - " \"url\": \"https://t00img.yangkeduo.com/goods/images/2020-04-13/f5460e5e-dc2d-49e4-9179-cfc14e4a2d53.jpg\",\n" + - " \"height\": 1388\n" + - " },\n" + - " {\n" + - " \"width\": 790,\n" + - " \"url\": \"https://t00img.yangkeduo.com/goods/images/2019-06-25/179aff2f-a277-4841-bc14-4197f9422328.jpg\",\n" + - " \"height\": 965\n" + - " },\n" + - " {\n" + - " \"width\": 790,\n" + - " \"url\": \"https://t00img.yangkeduo.com/goods/images/2019-06-25/145ada27-3a8b-48ba-8591-25e0ab3f8ce1.jpg\",\n" + - " \"height\": 760\n" + - " }\n" + - " ],\n" + - " \"thumbUrl\": \"https://t00img.yangkeduo.com/goods/images/2020-05-29/9bee5e35285136a772c7318c428ba1b5.jpeg\",\n" + - " \"salesTip\": \"已拼5895件\",\n" + - " \"goodsName\": \"【特惠省300】vivo X30 新品128g智能5g手机x23 x27 vivox30pro\",\n" + - " \"goodsDesc\": \"【vivo旗舰店】【原装正品】【12期分期免息】双模5G、20倍变焦、50mm专业人像镜头、4350mAh+33W快充\"\n" + - " }\n" + - " },\n" + - " \"dataType\": \"detail\",\n" + - " \"hasNext\": true,\n" + - " \"appCode\": \"pddDetail\",\n" + - " \"page\": 1,\n" + - " \"version\": \"1.0\",\n" + - " \"retcode\": \"0000\"\n" + - "}"; - public static String jdJson ="{\n" + - " \"data\": {\n" + - " \"seller\": {\n" + - " \"sellerId\": 1000000127,\n" + - " \"shopName\": \"Apple产品京东自营旗舰店\",\n" + - " \"shopUrl\": \"http://apple.jd.com/\"\n" + - " },\n" + - " \"item\": {\n" + - " \"btInfo\": [\n" + - " {\n" + - " \"firstPay\": 4899,\n" + - " \"discountList\": [],\n" + - " \"isMaxDiscount\": true,\n" + - " \"fee\": 0,\n" + - " \"isDiscount\": false,\n" + - " \"laterPay\": 4899,\n" + - " \"curTotal\": 4899,\n" + - " \"planFee\": 0,\n" + - " \"total\": 4899,\n" + - " \"rate\": 0,\n" + - " \"firstRepayDate\": \"2020-07-05\",\n" + - " \"text\": \"\",\n" + - " \"plan\": 1\n" + - " },\n" + - " {\n" + - " \"firstPay\": 1657.5,\n" + - " \"discountList\": [],\n" + - " \"isMaxDiscount\": false,\n" + - " \"fee\": 73.5,\n" + - " \"isDiscount\": false,\n" + - " \"laterPay\": 1657.5,\n" + - " \"curTotal\": 1657.5,\n" + - " \"planFee\": 24.5,\n" + - " \"total\": 4972.5,\n" + - " \"rate\": 0.5,\n" + - " \"firstRepayDate\": \"2020-07-05\",\n" + - " \"text\": \"起\",\n" + - " \"plan\": 3\n" + - " },\n" + - " {\n" + - " \"firstPay\": 841,\n" + - " \"discountList\": [],\n" + - " \"isMaxDiscount\": false,\n" + - " \"fee\": 147,\n" + - " \"isDiscount\": false,\n" + - " \"laterPay\": 841,\n" + - " \"curTotal\": 841,\n" + - " \"planFee\": 24.5,\n" + - " \"total\": 5046,\n" + - " \"rate\": 0.5,\n" + - " \"firstRepayDate\": \"2020-07-05\",\n" + - " \"text\": \"起\",\n" + - " \"plan\": 6\n" + - " },\n" + - " {\n" + - " \"firstPay\": 432.75,\n" + - " \"discountList\": [],\n" + - " \"isMaxDiscount\": false,\n" + - " \"fee\": 294,\n" + - " \"isDiscount\": false,\n" + - " \"laterPay\": 432.75,\n" + - " \"curTotal\": 432.75,\n" + - " \"planFee\": 24.5,\n" + - " \"total\": 5193,\n" + - " \"rate\": 0.5,\n" + - " \"firstRepayDate\": \"2020-07-05\",\n" + - " \"text\": \"起\",\n" + - " \"plan\": 12\n" + - " },\n" + - " {\n" + - " \"firstPay\": 228.63,\n" + - " \"discountList\": [],\n" + - " \"isMaxDiscount\": false,\n" + - " \"fee\": 588,\n" + - " \"isDiscount\": false,\n" + - " \"laterPay\": 228.51,\n" + - " \"curTotal\": 228.51,\n" + - " \"planFee\": 24.5,\n" + - " \"total\": 5487,\n" + - " \"rate\": 0.5,\n" + - " \"firstRepayDate\": \"2020-07-05\",\n" + - " \"text\": \"起\",\n" + - " \"plan\": 24\n" + - " }\n" + - " ],\n" + - " \"brandName\": \"Apple\",\n" + - " \"images\": [\n" + - " \"http://img30.360buyimg.com/popWaterMark/jfs/t1/111919/39/9332/101993/5ed8e09cE3957b283/cb6c00fbf8cf2909.jpg\",\n" + - " \"http://img30.360buyimg.com/popWaterMark/jfs/t1/3405/18/3537/69901/5b997c0aE5dc8ed9f/a2c208410ae84d1f.jpg\",\n" + - " \"http://img30.360buyimg.com/popWaterMark/jfs/t1/4394/21/3522/68010/5b997c0aE91c7291d/b8494bf281991f94.jpg\",\n" + - " \"http://img30.360buyimg.com/popWaterMark/jfs/t1/14660/26/3510/75469/5c26e061E76085e31/ef55ef9e2bf8cb84.jpg\"\n" + - " ],\n" + - " \"pcAttributes\": [\n" + - " \"品牌:Apple\",\n" + - " \"商品名称:AppleiPhoneXR\",\n" + - " \"商品编号:100000177760\",\n" + - " \"商品毛重:460.00g\",\n" + - " \"商品产地:中国\",\n" + - " \"CPU型号:其他\",\n" + - " \"运行内存:其它内存\",\n" + - " \"机身存储:128GB\",\n" + - " \"存储卡:不支持存储卡\",\n" + - " \"摄像头数量:后置单摄\",\n" + - " \"后摄主摄像素:1200万像素\",\n" + - " \"前摄主摄像素:700万像素\",\n" + - " \"主屏幕尺寸(英寸):6.1英寸\",\n" + - " \"分辨率:其它分辨率\",\n" + - " \"屏幕比例:其它屏幕比例\",\n" + - " \"屏幕前摄组合:刘海屏\",\n" + - " \"充电器:其他\",\n" + - " \"热点:人脸识别\",\n" + - " \"特殊功能:语音命令\",\n" + - " \"操作系统:iOS(Apple)\"\n" + - " ],\n" + - " \"originalPrice\": \"4899.00\",\n" + - " \"venderId\": \"1000000127\",\n" + - " \"saleProp\": {\n" + - " \"1\": \"颜色\",\n" + - " \"2\": \"版本\",\n" + - " \"3\": \"购买方式\"\n" + - " },\n" + - " \"itemId\": \"100000177760\",\n" + - " \"descriptionId\": \"100000177760\",\n" + - " \"pingouPrice\": \"\",\n" + - " \"coupons\": [\n" + - " {\n" + - " \"userLabel\": \"0\",\n" + - " \"roleId\": 32040451,\n" + - " \"couponKind\": 1,\n" + - " \"discount\": 400,\n" + - " \"didget\": \"0\",\n" + - " \"batchId\": 322837066,\n" + - " \"couponstyle\": 0,\n" + - " \"businessLabel\": \"0\",\n" + - " \"couponType\": 1,\n" + - " \"quota\": 4000,\n" + - " \"name\": \"仅可购买指定iPhone XR商品\",\n" + - " \"timeDesc\": \"2020.06.01 - 2020.06.05\",\n" + - " \"discountdesc\": {},\n" + - " \"key\": \"0d4e0a35f1a146d8aa310323d36227b4\",\n" + - " \"hourcoupon\": 1\n" + - " }\n" + - " ],\n" + - " \"price\": \"4899.00\",\n" + - " \"skuProps\": {\n" + - " \"1\": [\n" + - " \"蓝色\",\n" + - " \"黑色\",\n" + - " \"白色\",\n" + - " \"黄色\",\n" + - " \"珊瑚色\",\n" + - " \"红色\"\n" + - " ],\n" + - " \"2\": [\n" + - " \"64GB\",\n" + - " \"128GB\",\n" + - " \"256GB\"\n" + - " ],\n" + - " \"3\": [\n" + - " \"公开版\",\n" + - " \"换修无忧首月免费版\",\n" + - " \"换修无忧年付版\",\n" + - " \"官方AppleCare+版\"\n" + - " ]\n" + - " },\n" + - " \"brandId\": \"14026\",\n" + - " \"name\": \"Apple iPhone XR (A2108) 128GB 黑色 移动联通电信4G手机 双卡双待\",\n" + - " \"promov2\": [\n" + - " {\n" + - " \"hit\": \"0\",\n" + - " \"id\": \"100000177760\",\n" + - " \"pis\": []\n" + - " }\n" + - " ],\n" + - " \"attributes\": {\n" + - " \"propGroups\": [\n" + - " {\n" + - " \"groupName\": \"主体\",\n" + - " \"atts\": [\n" + - " {\n" + - " \"vals\": [\n" + - " \"Apple\"\n" + - " ],\n" + - " \"attName\": \"品牌\"\n" + - " },\n" + - " {\n" + - " \"vals\": [\n" + - " \"2018年\"\n" + - " ],\n" + - " \"attName\": \"上市年份\"\n" + - " },\n" + - " {\n" + - " \"vals\": [\n" + - " \"10月\"\n" + - " ],\n" + - " \"attName\": \"上市月份\"\n" + - " },\n" + - " {\n" + - " \"vals\": [\n" + - " \"A2108\"\n" + - " ],\n" + - " \"attRemark\": \"工业代号或者入网型号\",\n" + - " \"attName\": \"入网型号\"\n" + - " },\n" + - " {\n" + - " \"vals\": [\n" + - " \"iPhone XR\"\n" + - " ],\n" + - " \"attName\": \"产品名称\"\n" + - " }\n" + - " ]\n" + - " },\n" + - " {\n" + - " \"groupName\": \"基本信息\",\n" + - " \"atts\": [\n" + - " {\n" + - " \"vals\": [\n" + - " \"150.9\"\n" + - " ],\n" + - " \"attName\": \"机身长度(mm)\"\n" + - " },\n" + - " {\n" + - " \"vals\": [\n" + - " \"75.7\"\n" + - " ],\n" + - " \"attName\": \"机身宽度(mm)\"\n" + - " },\n" + - " {\n" + - " \"vals\": [\n" + - " \"8.3\"\n" + - " ],\n" + - " \"attName\": \"机身厚度(mm)\"\n" + - " },\n" + - " {\n" + - " \"vals\": [\n" + - " \"194\"\n" + - " ],\n" + - " \"attName\": \"机身重量(g)\"\n" + - " },\n" + - " {\n" + - " \"vals\": [\n" + - " \"其他\"\n" + - " ],\n" + - " \"attRemark\": \"定制机往往会有运营商的元素在手机的某些位置,该属性会介绍这些元素出现的位置。\",\n" + - " \"attName\": \"运营商标志或内容\"\n" + - " },\n" + - " {\n" + - " \"vals\": [\n" + - " \"其他\"\n" + - " ],\n" + - " \"attName\": \"机身材质分类\"\n" + - " },\n" + - " {\n" + - " \"vals\": [\n" + - " \"玻璃搭配铝金属设计\"\n" + - " ],\n" + - " \"attName\": \"机身材质工艺\"\n" + - " }\n" + - " ]\n" + - " },\n" + - " {\n" + - " \"groupName\": \"主芯片\",\n" + - " \"atts\": [\n" + - " {\n" + - " \"vals\": [\n" + - " \"以官网信息为准\"\n" + - " ],\n" + - " \"attName\": \"CPU品牌\"\n" + - " }\n" + - " ]\n" + - " },\n" + - " {\n" + - " \"groupName\": \"屏幕\",\n" + - " \"atts\": [\n" + - " {\n" + - " \"vals\": [\n" + - " \"6.1英寸\"\n" + - " ],\n" + - " \"attName\": \"主屏幕尺寸(英寸)\"\n" + - " },\n" + - " {\n" + - " \"vals\": [\n" + - " \"LCD\"\n" + - " ],\n" + - " \"attName\": \"屏幕材质类型\"\n" + - " },\n" + - " {\n" + - " \"vals\": [\n" + - " \"326 ppi\"\n" + - " ],\n" + - " \"attRemark\": \"格式: 320PPI\",\n" + - " \"attName\": \"屏幕像素密度(ppi)\"\n" + - " },\n" + - " {\n" + - " \"vals\": [\n" + - " \"其他\"\n" + - " ],\n" + - " \"attName\": \"屏幕刷新率\"\n" + - " }\n" + - " ]\n" + - " },\n" + - " {\n" + - " \"groupName\": \"后置摄像头\",\n" + - " \"atts\": [\n" + - " {\n" + - " \"vals\": [\n" + - " \"f/1.8\"\n" + - " ],\n" + - " \"attName\": \"后摄主摄光圈\"\n" + - " },\n" + - " {\n" + - " \"vals\": [\n" + - " \"支持光学防抖\"\n" + - " ],\n" + - " \"attName\": \"后摄主摄光学防抖\"\n" + - " },\n" + - " {\n" + - " \"vals\": [\n" + - " \"HDR\",\n" + - " \"光学防抖\"\n" + - " ],\n" + - " \"attName\": \"拍照特点\"\n" + - " },\n" + - " {\n" + - " \"vals\": [\n" + - " \"其他闪光灯\"\n" + - " ],\n" + - " \"attName\": \"闪光灯\"\n" + - " }\n" + - " ]\n" + - " },\n" + - " {\n" + - " \"groupName\": \"前置摄像头\",\n" + - " \"atts\": [\n" + - " {\n" + - " \"vals\": [\n" + - " \"f/2.2\"\n" + - " ],\n" + - " \"attName\": \"前摄主摄光圈\"\n" + - " },\n" + - " {\n" + - " \"vals\": [\n" + - " \"人像模式\"\n" + - " ],\n" + - " \"attName\": \"拍照特点\"\n" + - " }\n" + - " ]\n" + - " },\n" + - " {\n" + - " \"groupName\": \"电池信息\",\n" + - " \"atts\": [\n" + - " {\n" + - " \"vals\": [\n" + - " \"电池不可拆卸\"\n" + - " ],\n" + - " \"attRemark\": \"不可拆卸电池手机更加节省内部空间,密封性更好,请勿在没有专业人士的帮助下自行拆卸。\",\n" + - " \"attName\": \"电池是否可拆卸\"\n" + - " },\n" + - " {\n" + - " \"vals\": [\n" + - " \"其他\"\n" + - " ],\n" + - " \"attName\": \"充电器\"\n" + - " },\n" + - " {\n" + - " \"vals\": [\n" + - " \"支持无线充电\"\n" + - " ],\n" + - " \"attRemark\": \"无线充电只是个功能,请注意支持无线充电的产品其包装是否带有无线充电的配件,如没有需要自行单配哦。\",\n" + - " \"attName\": \"无线充电\"\n" + - " }\n" + - " ]\n" + - " },\n" + - " {\n" + - " \"groupName\": \"网络支持\",\n" + - " \"atts\": [\n" + - " {\n" + - " \"vals\": [\n" + - " \"2个\"\n" + - " ],\n" + - " \"attName\": \"最大支持SIM卡数量\"\n" + - " },\n" + - " {\n" + - " \"vals\": [\n" + - " \"双卡双待\"\n" + - " ],\n" + - " \"attName\": \"双卡机类型\"\n" + - " },\n" + - " {\n" + - " \"vals\": [\n" + - " \"Nano SIM\"\n" + - " ],\n" + - " \"attRemark\": \"sim卡的规格,大卡、小卡或者nano卡。如果副卡有不同可在下方副卡规格中填写或显示\",\n" + - " \"attName\": \"SIM卡类型\"\n" + - " },\n" + - " {\n" + - " \"vals\": [\n" + - " \"不支持5G\"\n" + - " ],\n" + - " \"attName\": \"5G网络\"\n" + - " },\n" + - " {\n" + - " \"vals\": [\n" + - " \"4G TD-LTE(移动)\",\n" + - " \"4G FDD-LTE(联通、电信)\"\n" + - " ],\n" + - " \"attRemark\": \"单卡手机或者主卡的4G网络在这里填写,副卡的网络在副sim卡4G网络中填写。\",\n" + - " \"attName\": \"4G网络\"\n" + - " },\n" + - " {\n" + - " \"vals\": [\n" + - " \"其它3G/2G\"\n" + - " ],\n" + - " \"attName\": \"3G/2G网络\"\n" + - " },\n" + - " {\n" + - " \"vals\": [\n" + - " \"以官网信息为准\"\n" + - " ],\n" + - " \"attName\": \"网络频率(2G/3G)\"\n" + - " }\n" + - " ]\n" + - " },\n" + - " {\n" + - " \"groupName\": \"数据接口\",\n" + - " \"atts\": [\n" + - " {\n" + - " \"vals\": [\n" + - " \"WIFI\",\n" + - " \"蓝牙\",\n" + - " \"WiFi热点\"\n" + - " ],\n" + - " \"attName\": \"数据传输接口\"\n" + - " },\n" + - " {\n" + - " \"vals\": [\n" + - " \"其他\"\n" + - " ],\n" + - " \"attName\": \"NFC/NFC模式\"\n" + - " },\n" + - " {\n" + - " \"vals\": [\n" + - " \"Lightning\"\n" + - " ],\n" + - " \"attName\": \"耳机接口类型\"\n" + - " },\n" + - " {\n" + - " \"vals\": [\n" + - " \"Lightning(iPhone)\"\n" + - " ],\n" + - " \"attName\": \"充电接口类型\"\n" + - " }\n" + - " ]\n" + - " },\n" + - " {\n" + - " \"groupName\": \"手机特性\",\n" + - " \"atts\": [\n" + - " {\n" + - " \"vals\": [\n" + - " \"IP67\"\n" + - " ],\n" + - " \"attName\": \"三防标准\"\n" + - " },\n" + - " {\n" + - " \"vals\": [\n" + - " \"人脸识别\"\n" + - " ],\n" + - " \"attName\": \"生物识别\"\n" + - " }\n" + - " ]\n" + - " },\n" + - " {\n" + - " \"groupName\": \"辅助功能\",\n" + - " \"atts\": [\n" + - " {\n" + - " \"vals\": [\n" + - " \"语音命令\"\n" + - " ],\n" + - " \"attName\": \"常用功能\"\n" + - " }\n" + - " ]\n" + - " },\n" + - " {\n" + - " \"groupName\": \"参数\",\n" + - " \"atts\": [\n" + - " {\n" + - " \"vals\": [\n" + - " \"语音命令\"\n" + - " ],\n" + - " \"attName\": \"特殊功能\"\n" + - " },\n" + - " {\n" + - " \"vals\": [\n" + - " \"人脸识别\"\n" + - " ],\n" + - " \"attName\": \"热点\"\n" + - " },\n" + - " {\n" + - " \"vals\": [\n" + - " \"iOS(Apple)\"\n" + - " ],\n" + - " \"attName\": \"操作系统\"\n" + - " },\n" + - " {\n" + - " \"vals\": [\n" + - " \"其他\"\n" + - " ],\n" + - " \"attName\": \"CPU型号\"\n" + - " },\n" + - " {\n" + - " \"vals\": [\n" + - " \"128GB\"\n" + - " ],\n" + - " \"attName\": \"机身存储\"\n" + - " },\n" + - " {\n" + - " \"vals\": [\n" + - " \"其它内存\"\n" + - " ],\n" + - " \"attName\": \"运行内存\"\n" + - " },\n" + - " {\n" + - " \"vals\": [\n" + - " \"不支持存储卡\"\n" + - " ],\n" + - " \"attName\": \"存储卡\"\n" + - " },\n" + - " {\n" + - " \"vals\": [\n" + - " \"2000mAh-2999mAh\"\n" + - " ],\n" + - " \"attName\": \"电池容量\"\n" + - " },\n" + - " {\n" + - " \"vals\": [\n" + - " \"后置单摄\"\n" + - " ],\n" + - " \"attName\": \"摄像头数量\"\n" + - " },\n" + - " {\n" + - " \"vals\": [\n" + - " \"1200万像素\"\n" + - " ],\n" + - " \"attName\": \"后摄主摄像素\"\n" + - " },\n" + - " {\n" + - " \"vals\": [\n" + - " \"黑色\"\n" + - " ],\n" + - " \"attName\": \"机身颜色\"\n" + - " },\n" + - " {\n" + - " \"vals\": [\n" + - " \"700万像素\"\n" + - " ],\n" + - " \"attName\": \"前摄主摄像素\"\n" + - " },\n" + - " {\n" + - " \"vals\": [\n" + - " \"刘海屏\"\n" + - " ],\n" + - " \"attName\": \"屏幕前摄组合\"\n" + - " },\n" + - " {\n" + - " \"vals\": [\n" + - " \"其它分辨率\"\n" + - " ],\n" + - " \"attName\": \"分辨率\"\n" + - " },\n" + - " {\n" + - " \"vals\": [\n" + - " \"其它屏幕比例\"\n" + - " ],\n" + - " \"attName\": \"屏幕比例\"\n" + - " }\n" + - " ]\n" + - " }\n" + - " ]\n" + - " },\n" + - " \"sku\": [\n" + - " {\n" + - " \"1\": \"珊瑚色\",\n" + - " \"2\": \"256GB\",\n" + - " \"3\": \"换修无忧年付版\",\n" + - " \"originalPrice\": \"5798.00\",\n" + - " \"price\": \"5398.00\",\n" + - " \"skuId\": \"100010822364\"\n" + - " },\n" + - " {\n" + - " \"1\": \"黄色\",\n" + - " \"2\": \"256GB\",\n" + - " \"3\": \"换修无忧年付版\",\n" + - " \"originalPrice\": \"5798.00\",\n" + - " \"price\": \"5398.00\",\n" + - " \"skuId\": \"100010822362\"\n" + - " },\n" + - " {\n" + - " \"1\": \"珊瑚色\",\n" + - " \"2\": \"128GB\",\n" + - " \"3\": \"换修无忧年付版\",\n" + - " \"originalPrice\": \"5498.00\",\n" + - " \"price\": \"5198.00\",\n" + - " \"skuId\": \"100010822342\"\n" + - " },\n" + - " {\n" + - " \"1\": \"蓝色\",\n" + - " \"2\": \"256GB\",\n" + - " \"3\": \"换修无忧年付版\",\n" + - " \"originalPrice\": \"5798.00\",\n" + - " \"price\": \"5398.00\",\n" + - " \"skuId\": \"100010822340\"\n" + - " },\n" + - " {\n" + - " \"1\": \"黑色\",\n" + - " \"2\": \"256GB\",\n" + - " \"3\": \"换修无忧年付版\",\n" + - " \"originalPrice\": \"5898.00\",\n" + - " \"price\": \"5398.00\",\n" + - " \"skuId\": \"100010822338\"\n" + - " },\n" + - " {\n" + - " \"1\": \"红色\",\n" + - " \"2\": \"128GB\",\n" + - " \"3\": \"换修无忧年付版\",\n" + - " \"originalPrice\": \"5398.00\",\n" + - " \"price\": \"5098.00\",\n" + - " \"skuId\": \"100010822334\"\n" + - " },\n" + - " {\n" + - " \"1\": \"黄色\",\n" + - " \"2\": \"128GB\",\n" + - " \"3\": \"换修无忧年付版\",\n" + - " \"originalPrice\": \"5498.00\",\n" + - " \"price\": \"5198.00\",\n" + - " \"skuId\": \"100010822332\"\n" + - " },\n" + - " {\n" + - " \"1\": \"白色\",\n" + - " \"2\": \"128GB\",\n" + - " \"3\": \"换修无忧年付版\",\n" + - " \"originalPrice\": \"5498.00\",\n" + - " \"price\": \"5198.00\",\n" + - " \"skuId\": \"100010822328\"\n" + - " },\n" + - " {\n" + - " \"1\": \"黄色\",\n" + - " \"2\": \"64GB\",\n" + - " \"3\": \"换修无忧年付版\",\n" + - " \"originalPrice\": \"4898.00\",\n" + - " \"price\": \"4598.00\",\n" + - " \"skuId\": \"100010822318\"\n" + - " },\n" + - " {\n" + - " \"1\": \"蓝色\",\n" + - " \"2\": \"64GB\",\n" + - " \"3\": \"换修无忧年付版\",\n" + - " \"originalPrice\": \"4998.00\",\n" + - " \"price\": \"4698.00\",\n" + - " \"skuId\": \"100010822310\"\n" + - " },\n" + - " {\n" + - " \"1\": \"蓝色\",\n" + - " \"2\": \"128GB\",\n" + - " \"3\": \"换修无忧年付版\",\n" + - " \"originalPrice\": \"5498.00\",\n" + - " \"price\": \"5198.00\",\n" + - " \"skuId\": \"100010822298\"\n" + - " },\n" + - " {\n" + - " \"1\": \"白色\",\n" + - " \"2\": \"64GB\",\n" + - " \"3\": \"换修无忧年付版\",\n" + - " \"originalPrice\": \"4998.00\",\n" + - " \"price\": \"4698.00\",\n" + - " \"skuId\": \"100010822074\"\n" + - " },\n" + - " {\n" + - " \"1\": \"红色\",\n" + - " \"2\": \"256GB\",\n" + - " \"3\": \"换修无忧首月免费版\",\n" + - " \"originalPrice\": \"5348.00\",\n" + - " \"price\": \"5148.00\",\n" + - " \"skuId\": \"100006300018\"\n" + - " },\n" + - " {\n" + - " \"1\": \"蓝色\",\n" + - " \"2\": \"256GB\",\n" + - " \"3\": \"换修无忧首月免费版\",\n" + - " \"originalPrice\": \"5248.00\",\n" + - " \"price\": \"5148.00\",\n" + - " \"skuId\": \"100006300012\"\n" + - " },\n" + - " {\n" + - " \"1\": \"黑色\",\n" + - " \"2\": \"256GB\",\n" + - " \"3\": \"换修无忧首月免费版\",\n" + - " \"originalPrice\": \"5348.00\",\n" + - " \"price\": \"5148.00\",\n" + - " \"skuId\": \"100006300002\"\n" + - " },\n" + - " {\n" + - " \"1\": \"黄色\",\n" + - " \"2\": \"256GB\",\n" + - " \"3\": \"换修无忧首月免费版\",\n" + - " \"originalPrice\": \"5248.00\",\n" + - " \"price\": \"5148.00\",\n" + - " \"skuId\": \"100006300000\"\n" + - " },\n" + - " {\n" + - " \"1\": \"黄色\",\n" + - " \"2\": \"128GB\",\n" + - " \"3\": \"换修无忧首月免费版\",\n" + - " \"originalPrice\": \"4948.00\",\n" + - " \"price\": \"4948.00\",\n" + - " \"skuId\": \"100006299968\"\n" + - " },\n" + - " {\n" + - " \"1\": \"蓝色\",\n" + - " \"2\": \"128GB\",\n" + - " \"3\": \"换修无忧首月免费版\",\n" + - " \"originalPrice\": \"4948.00\",\n" + - " \"price\": \"4948.00\",\n" + - " \"skuId\": \"100006299956\"\n" + - " },\n" + - " {\n" + - " \"1\": \"黑色\",\n" + - " \"2\": \"128GB\",\n" + - " \"3\": \"换修无忧首月免费版\",\n" + - " \"originalPrice\": \"4948.00\",\n" + - " \"price\": \"4948.00\",\n" + - " \"skuId\": \"100006299954\"\n" + - " },\n" + - " {\n" + - " \"1\": \"黑色\",\n" + - " \"2\": \"64GB\",\n" + - " \"3\": \"换修无忧首月免费版\",\n" + - " \"originalPrice\": \"4448.00\",\n" + - " \"price\": \"4448.00\",\n" + - " \"skuId\": \"100006299946\"\n" + - " },\n" + - " {\n" + - " \"1\": \"红色\",\n" + - " \"2\": \"256GB\",\n" + - " \"3\": \"换修无忧年付版\",\n" + - " \"originalPrice\": \"5898.00\",\n" + - " \"price\": \"5398.00\",\n" + - " \"skuId\": \"100006011513\"\n" + - " },\n" + - " {\n" + - " \"1\": \"黑色\",\n" + - " \"2\": \"128GB\",\n" + - " \"3\": \"换修无忧年付版\",\n" + - " \"originalPrice\": \"5498.00\",\n" + - " \"price\": \"5198.00\",\n" + - " \"skuId\": \"100006011509\"\n" + - " },\n" + - " {\n" + - " \"1\": \"红色\",\n" + - " \"2\": \"64GB\",\n" + - " \"3\": \"换修无忧年付版\",\n" + - " \"originalPrice\": \"4998.00\",\n" + - " \"price\": \"4698.00\",\n" + - " \"skuId\": \"100006011503\"\n" + - " },\n" + - " {\n" + - " \"1\": \"珊瑚色\",\n" + - " \"2\": \"64GB\",\n" + - " \"3\": \"换修无忧年付版\",\n" + - " \"originalPrice\": \"4998.00\",\n" + - " \"price\": \"4698.00\",\n" + - " \"skuId\": \"100006011493\"\n" + - " },\n" + - " {\n" + - " \"1\": \"黑色\",\n" + - " \"2\": \"64GB\",\n" + - " \"3\": \"换修无忧年付版\",\n" + - " \"originalPrice\": \"4998.00\",\n" + - " \"price\": \"4698.00\",\n" + - " \"skuId\": \"100006011427\"\n" + - " },\n" + - " {\n" + - " \"1\": \"珊瑚色\",\n" + - " \"2\": \"256GB\",\n" + - " \"3\": \"换修无忧首月免费版\",\n" + - " \"originalPrice\": \"5248.00\",\n" + - " \"price\": \"5148.00\",\n" + - " \"skuId\": \"100003743033\"\n" + - " },\n" + - " {\n" + - " \"1\": \"红色\",\n" + - " \"2\": \"128GB\",\n" + - " \"3\": \"换修无忧首月免费版\",\n" + - " \"originalPrice\": \"4848.00\",\n" + - " \"price\": \"4848.00\",\n" + - " \"skuId\": \"100003743015\"\n" + - " },\n" + - " {\n" + - " \"1\": \"珊瑚色\",\n" + - " \"2\": \"128GB\",\n" + - " \"3\": \"换修无忧首月免费版\",\n" + - " \"originalPrice\": \"4948.00\",\n" + - " \"price\": \"4948.00\",\n" + - " \"skuId\": \"100003743007\"\n" + - " },\n" + - " {\n" + - " \"1\": \"白色\",\n" + - " \"2\": \"128GB\",\n" + - " \"3\": \"换修无忧首月免费版\",\n" + - " \"originalPrice\": \"4948.00\",\n" + - " \"price\": \"4948.00\",\n" + - " \"skuId\": \"100003742991\"\n" + - " },\n" + - " {\n" + - " \"1\": \"红色\",\n" + - " \"2\": \"64GB\",\n" + - " \"3\": \"换修无忧首月免费版\",\n" + - " \"originalPrice\": \"4448.00\",\n" + - " \"price\": \"4448.00\",\n" + - " \"skuId\": \"100003742989\"\n" + - " },\n" + - " {\n" + - " \"1\": \"珊瑚色\",\n" + - " \"2\": \"64GB\",\n" + - " \"3\": \"换修无忧首月免费版\",\n" + - " \"originalPrice\": \"4448.00\",\n" + - " \"price\": \"4448.00\",\n" + - " \"skuId\": \"100003742987\"\n" + - " },\n" + - " {\n" + - " \"1\": \"黄色\",\n" + - " \"2\": \"64GB\",\n" + - " \"3\": \"换修无忧首月免费版\",\n" + - " \"originalPrice\": \"4348.00\",\n" + - " \"price\": \"4348.00\",\n" + - " \"skuId\": \"100003742985\"\n" + - " },\n" + - " {\n" + - " \"1\": \"蓝色\",\n" + - " \"2\": \"64GB\",\n" + - " \"3\": \"换修无忧首月免费版\",\n" + - " \"originalPrice\": \"4448.00\",\n" + - " \"price\": \"4448.00\",\n" + - " \"skuId\": \"100003742983\"\n" + - " },\n" + - " {\n" + - " \"1\": \"白色\",\n" + - " \"2\": \"64GB\",\n" + - " \"3\": \"换修无忧首月免费版\",\n" + - " \"originalPrice\": \"4448.00\",\n" + - " \"price\": \"4448.00\",\n" + - " \"skuId\": \"100003742979\"\n" + - " },\n" + - " {\n" + - " \"1\": \"珊瑚色\",\n" + - " \"2\": \"256GB\",\n" + - " \"3\": \"官方AppleCare+版\",\n" + - " \"originalPrice\": \"6598.00\",\n" + - " \"price\": \"6298.00\",\n" + - " \"skuId\": \"100000897706\"\n" + - " },\n" + - " {\n" + - " \"1\": \"黄色\",\n" + - " \"2\": \"256GB\",\n" + - " \"3\": \"官方AppleCare+版\",\n" + - " \"originalPrice\": \"6598.00\",\n" + - " \"price\": \"6298.00\",\n" + - " \"skuId\": \"100000897704\"\n" + - " },\n" + - " {\n" + - " \"1\": \"红色\",\n" + - " \"2\": \"128GB\",\n" + - " \"3\": \"官方AppleCare+版\",\n" + - " \"originalPrice\": \"6198.00\",\n" + - " \"price\": \"5998.00\",\n" + - " \"skuId\": \"100000897680\"\n" + - " },\n" + - " {\n" + - " \"1\": \"珊瑚色\",\n" + - " \"2\": \"128GB\",\n" + - " \"3\": \"官方AppleCare+版\",\n" + - " \"originalPrice\": \"6298.00\",\n" + - " \"price\": \"6098.00\",\n" + - " \"skuId\": \"100000897676\"\n" + - " },\n" + - " {\n" + - " \"1\": \"黄色\",\n" + - " \"2\": \"128GB\",\n" + - " \"3\": \"官方AppleCare+版\",\n" + - " \"originalPrice\": \"6298.00\",\n" + - " \"price\": \"6098.00\",\n" + - " \"skuId\": \"100000897674\"\n" + - " },\n" + - " {\n" + - " \"1\": \"黑色\",\n" + - " \"2\": \"128GB\",\n" + - " \"3\": \"官方AppleCare+版\",\n" + - " \"originalPrice\": \"6298.00\",\n" + - " \"price\": \"6098.00\",\n" + - " \"skuId\": \"100000897672\"\n" + - " },\n" + - " {\n" + - " \"1\": \"红色\",\n" + - " \"2\": \"64GB\",\n" + - " \"3\": \"官方AppleCare+版\",\n" + - " \"originalPrice\": \"5798.00\",\n" + - " \"price\": \"5598.00\",\n" + - " \"skuId\": \"100000897670\"\n" + - " },\n" + - " {\n" + - " \"1\": \"珊瑚色\",\n" + - " \"2\": \"64GB\",\n" + - " \"3\": \"官方AppleCare+版\",\n" + - " \"originalPrice\": \"5798.00\",\n" + - " \"price\": \"5598.00\",\n" + - " \"skuId\": \"100000897668\"\n" + - " },\n" + - " {\n" + - " \"1\": \"黄色\",\n" + - " \"2\": \"64GB\",\n" + - " \"3\": \"官方AppleCare+版\",\n" + - " \"originalPrice\": \"5698.00\",\n" + - " \"price\": \"5498.00\",\n" + - " \"skuId\": \"100000897666\"\n" + - " },\n" + - " {\n" + - " \"1\": \"蓝色\",\n" + - " \"2\": \"64GB\",\n" + - " \"3\": \"官方AppleCare+版\",\n" + - " \"originalPrice\": \"5798.00\",\n" + - " \"price\": \"5598.00\",\n" + - " \"skuId\": \"100000897664\"\n" + - " },\n" + - " {\n" + - " \"1\": \"黑色\",\n" + - " \"2\": \"64GB\",\n" + - " \"3\": \"官方AppleCare+版\",\n" + - " \"originalPrice\": \"5798.00\",\n" + - " \"price\": \"5598.00\",\n" + - " \"skuId\": \"100000897662\"\n" + - " },\n" + - " {\n" + - " \"1\": \"蓝色\",\n" + - " \"2\": \"256GB\",\n" + - " \"3\": \"官方AppleCare+版\",\n" + - " \"originalPrice\": \"6598.00\",\n" + - " \"price\": \"6298.00\",\n" + - " \"skuId\": \"100000897658\"\n" + - " },\n" + - " {\n" + - " \"1\": \"白色\",\n" + - " \"2\": \"128GB\",\n" + - " \"3\": \"官方AppleCare+版\",\n" + - " \"originalPrice\": \"6298.00\",\n" + - " \"price\": \"6098.00\",\n" + - " \"skuId\": \"100000897656\"\n" + - " },\n" + - " {\n" + - " \"1\": \"白色\",\n" + - " \"2\": \"64GB\",\n" + - " \"3\": \"官方AppleCare+版\",\n" + - " \"originalPrice\": \"5798.00\",\n" + - " \"price\": \"5598.00\",\n" + - " \"skuId\": \"100000897654\"\n" + - " },\n" + - " {\n" + - " \"1\": \"黑色\",\n" + - " \"2\": \"256GB\",\n" + - " \"3\": \"官方AppleCare+版\",\n" + - " \"originalPrice\": \"6698.00\",\n" + - " \"price\": \"6298.00\",\n" + - " \"skuId\": \"100000764305\"\n" + - " },\n" + - " {\n" + - " \"1\": \"红色\",\n" + - " \"2\": \"256GB\",\n" + - " \"3\": \"官方AppleCare+版\",\n" + - " \"originalPrice\": \"6698.00\",\n" + - " \"price\": \"6298.00\",\n" + - " \"skuId\": \"100000764299\"\n" + - " },\n" + - " {\n" + - " \"1\": \"蓝色\",\n" + - " \"2\": \"128GB\",\n" + - " \"3\": \"官方AppleCare+版\",\n" + - " \"originalPrice\": \"6298.00\",\n" + - " \"price\": \"6098.00\",\n" + - " \"skuId\": \"100000764279\"\n" + - " },\n" + - " {\n" + - " \"1\": \"红色\",\n" + - " \"2\": \"256GB\",\n" + - " \"3\": \"公开版\",\n" + - " \"originalPrice\": \"5299.00\",\n" + - " \"price\": \"5099.00\",\n" + - " \"skuId\": \"100000287165\"\n" + - " },\n" + - " {\n" + - " \"1\": \"红色\",\n" + - " \"2\": \"128GB\",\n" + - " \"3\": \"公开版\",\n" + - " \"originalPrice\": \"4799.00\",\n" + - " \"price\": \"4799.00\",\n" + - " \"skuId\": \"100000287163\"\n" + - " },\n" + - " {\n" + - " \"1\": \"蓝色\",\n" + - " \"2\": \"128GB\",\n" + - " \"3\": \"公开版\",\n" + - " \"originalPrice\": \"4899.00\",\n" + - " \"price\": \"4899.00\",\n" + - " \"skuId\": \"100000287141\"\n" + - " },\n" + - " {\n" + - " \"1\": \"黄色\",\n" + - " \"2\": \"64GB\",\n" + - " \"3\": \"公开版\",\n" + - " \"originalPrice\": \"4299.00\",\n" + - " \"price\": \"4299.00\",\n" + - " \"skuId\": \"100000287121\"\n" + - " },\n" + - " {\n" + - " \"1\": \"白色\",\n" + - " \"2\": \"128GB\",\n" + - " \"3\": \"公开版\",\n" + - " \"originalPrice\": \"4899.00\",\n" + - " \"price\": \"4899.00\",\n" + - " \"skuId\": \"100000287115\"\n" + - " },\n" + - " {\n" + - " \"1\": \"黄色\",\n" + - " \"2\": \"256GB\",\n" + - " \"3\": \"公开版\",\n" + - " \"originalPrice\": \"5199.00\",\n" + - " \"price\": \"5099.00\",\n" + - " \"skuId\": \"100000177802\"\n" + - " },\n" + - " {\n" + - " \"1\": \"珊瑚色\",\n" + - " \"2\": \"64GB\",\n" + - " \"3\": \"公开版\",\n" + - " \"originalPrice\": \"4399.00\",\n" + - " \"price\": \"4399.00\",\n" + - " \"skuId\": \"100000177788\"\n" + - " },\n" + - " {\n" + - " \"1\": \"蓝色\",\n" + - " \"2\": \"64GB\",\n" + - " \"3\": \"公开版\",\n" + - " \"originalPrice\": \"4399.00\",\n" + - " \"price\": \"4399.00\",\n" + - " \"skuId\": \"100000177786\"\n" + - " },\n" + - " {\n" + - " \"1\": \"黄色\",\n" + - " \"2\": \"128GB\",\n" + - " \"3\": \"公开版\",\n" + - " \"originalPrice\": \"4899.00\",\n" + - " \"price\": \"4899.00\",\n" + - " \"skuId\": \"100000177782\"\n" + - " },\n" + - " {\n" + - " \"1\": \"珊瑚色\",\n" + - " \"2\": \"256GB\",\n" + - " \"3\": \"公开版\",\n" + - " \"originalPrice\": \"5199.00\",\n" + - " \"price\": \"5099.00\",\n" + - " \"skuId\": \"100000177776\"\n" + - " },\n" + - " {\n" + - " \"1\": \"蓝色\",\n" + - " \"2\": \"256GB\",\n" + - " \"3\": \"公开版\",\n" + - " \"originalPrice\": \"5199.00\",\n" + - " \"price\": \"5099.00\",\n" + - " \"skuId\": \"100000177774\"\n" + - " },\n" + - " {\n" + - " \"1\": \"黑色\",\n" + - " \"2\": \"256GB\",\n" + - " \"3\": \"公开版\",\n" + - " \"originalPrice\": \"5299.00\",\n" + - " \"price\": \"5099.00\",\n" + - " \"skuId\": \"100000177772\"\n" + - " },\n" + - " {\n" + - " \"1\": \"珊瑚色\",\n" + - " \"2\": \"128GB\",\n" + - " \"3\": \"公开版\",\n" + - " \"originalPrice\": \"4899.00\",\n" + - " \"price\": \"4899.00\",\n" + - " \"skuId\": \"100000177770\"\n" + - " },\n" + - " {\n" + - " \"1\": \"红色\",\n" + - " \"2\": \"64GB\",\n" + - " \"3\": \"公开版\",\n" + - " \"originalPrice\": \"4399.00\",\n" + - " \"price\": \"4399.00\",\n" + - " \"skuId\": \"100000177766\"\n" + - " },\n" + - " {\n" + - " \"1\": \"黑色\",\n" + - " \"2\": \"128GB\",\n" + - " \"3\": \"公开版\",\n" + - " \"originalPrice\": \"4899.00\",\n" + - " \"price\": \"4899.00\",\n" + - " \"skuId\": \"100000177760\"\n" + - " },\n" + - " {\n" + - " \"1\": \"黑色\",\n" + - " \"2\": \"64GB\",\n" + - " \"3\": \"公开版\",\n" + - " \"originalPrice\": \"4399.00\",\n" + - " \"price\": \"4399.00\",\n" + - " \"skuId\": \"100000177758\"\n" + - " },\n" + - " {\n" + - " \"1\": \"白色\",\n" + - " \"2\": \"64GB\",\n" + - " \"3\": \"公开版\",\n" + - " \"originalPrice\": \"4399.00\",\n" + - " \"price\": \"4399.00\",\n" + - " \"skuId\": \"100000177756\"\n" + - " }\n" + - " ],\n" + - " \"skuCoupon\": [\n" + - " {\n" + - " \"area\": 1,\n" + - " \"toUrl\": \"https://pro.jd.com/mall/active/3vhrJRWUDvx84MMSPJ2gnMuggew3/index.html,https://pro.m.jd.com/mall/active/3vhrJRWUDvx84MMSPJ2gnMuggew3/index.html\",\n" + - " \"userClass\": 10000,\n" + - " \"roleId\": 32040451,\n" + - " \"trueDiscount\": 400,\n" + - " \"couponKind\": 1,\n" + - " \"discountDesc\": \"\",\n" + - " \"discount\": 400,\n" + - " \"batchId\": 322837066,\n" + - " \"limitType\": 5,\n" + - " \"url\": \"//coupon.jd.com/ilink/couponActiveFront/front_index.action?key=0d4e0a35f1a146d8aa310323d36227b4&roleId=32040451&to=https://pro.jd.com/mall/active/3vhrJRWUDvx84MMSPJ2gnMuggew3/index.html,https://pro.m.jd.com/mall/active/3vhrJRWUDvx84MMSPJ2gnMuggew3/index.html\",\n" + - " \"couponStyle\": 0,\n" + - " \"hourCoupon\": 1,\n" + - " \"overlap\": 1,\n" + - " \"couponType\": 1,\n" + - " \"discountFlag\": 0,\n" + - " \"quota\": 4000,\n" + - " \"name\": \"仅可购买指定iPhone XR商品\",\n" + - " \"timeDesc\": \"有效期2020-06-01至2020-06-05\",\n" + - " \"addDays\": 0,\n" + - " \"beginTime\": \"2020-06-01\",\n" + - " \"endTime\": \"2020-06-05\",\n" + - " \"key\": \"0d4e0a35f1a146d8aa310323d36227b4\"\n" + - " }\n" + - " ],\n" + - " \"desc\": \"
\\\"\\\"
\\n \\n \\n
\\n
 \\n \\n  

\\\"\\\"
\\\"\\\"
\\n \\n \\n \\n\\n \\n \\n\\n


\",\n" + - " \"descImgs\": [\n" + - " \"https://img13.360buyimg.com/cms/jfs/t1/99692/26/15472/282293/5e7368acE954980e6/df3f71d9dd06bd0e.jpg\",\n" + - " \"https://img11.360buyimg.com/cms/jfs/t1/91431/17/10002/108103/5e155110Efbac44dd/558d622f067fa5f8.jpg\",\n" + - " \"https://img10.360buyimg.com/cms/jfs/t1/86568/20/12008/188587/5e42800cEe266e4cc/290ae5f806775d49.png\",\n" + - " \"https://img10.360buyimg.com/cms/jfs/t1/98196/25/1566/38754/5dc19c96E02e79d8d/39359930dc678038.png\",\n" + - " \"https://img11.360buyimg.com/cms/jfs/t1/32038/29/398/90933/5c3b2b28Ee52cc79f/bba9833293b49a26.jpg\",\n" + - " \"https://img12.360buyimg.com/cms/jfs/t1/65549/8/10108/60203/5d791babEa7fe0161/feb5c02138b57dfe.jpg\",\n" + - " \"https://img14.360buyimg.com/cms/jfs/t1/32255/33/4631/335252/5c7f77e1Ed03f9568/f205d9c99a2b4b01.jpg\",\n" + - " \"https://img13.360buyimg.com/cms/jfs/t1/10243/28/13159/434204/5c7f77e1E77b34286/7da561e321879d1e.jpg\",\n" + - " \"https://img12.360buyimg.com/cms/jfs/t1/25003/38/9414/543832/5c7f77e1E1c0f605a/ad5158287c23c4c6.jpg\",\n" + - " \"https://img11.360buyimg.com/cms/jfs/t1/18348/33/9569/388862/5c7f77e1E652dfb72/2da44463e27668dd.jpg\"\n" + - " ]\n" + - " }\n" + - " },\n" + - " \"dataType\": \"detail\",\n" + - " \"hasNext\": true,\n" + - " \"appCode\": \"jdGoodsDetail\",\n" + - " \"page\": 0,\n" + - " \"version\": \"1.0\",\n" + - " \"retcode\": \"0000\"\n" + - "}"; - public static String snJson = "{\n" + - " \"data\": {\n" + - " \"passSubList\": [\n" + - " {\n" + - " \"颜色\": [\n" + - " {\n" + - " \"childCmmdtyTitle\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 XS\",\n" + - " \"imageCount\": \"5\",\n" + - " \"characterValueId\": \"276366\",\n" + - " \"itemId\": \"\",\n" + - " \"itemDisplayName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 XS\",\n" + - " \"itemName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 XS\",\n" + - " \"characterValueDisplayName\": \"牛仔深蓝0840\",\n" + - " \"partNumber\": \"000000010750373922\",\n" + - " \"characterId\": \"G00001\",\n" + - " \"characterDisplayName\": \"颜色\"\n" + - " },\n" + - " {\n" + - " \"childCmmdtyTitle\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔中蓝0820 XS\",\n" + - " \"imageCount\": \"5\",\n" + - " \"characterValueId\": \"276367\",\n" + - " \"itemId\": \"\",\n" + - " \"itemDisplayName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔中蓝0820 XS\",\n" + - " \"itemName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔中蓝0820 XS\",\n" + - " \"characterValueDisplayName\": \"牛仔中蓝0820\",\n" + - " \"partNumber\": \"000000010750373921\",\n" + - " \"characterId\": \"G00001\",\n" + - " \"characterDisplayName\": \"颜色\"\n" + - " }\n" + - " ],\n" + - " \"尺码\": [\n" + - " {\n" + - " \"childCmmdtyTitle\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 XS\",\n" + - " \"imageCount\": \"5\",\n" + - " \"characterValueId\": \"46\",\n" + - " \"itemId\": \"\",\n" + - " \"itemDisplayName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 XS\",\n" + - " \"itemName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 XS\",\n" + - " \"characterValueDisplayName\": \"XS\",\n" + - " \"partNumber\": \"000000010750373922\",\n" + - " \"characterId\": \"G00002\",\n" + - " \"characterDisplayName\": \"尺码\"\n" + - " },\n" + - " {\n" + - " \"childCmmdtyTitle\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 S\",\n" + - " \"imageCount\": \"5\",\n" + - " \"characterValueId\": \"01\",\n" + - " \"itemId\": \"\",\n" + - " \"itemDisplayName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 S\",\n" + - " \"itemName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 S\",\n" + - " \"characterValueDisplayName\": \"S\",\n" + - " \"partNumber\": \"000000010750373918\",\n" + - " \"characterId\": \"G00002\",\n" + - " \"characterDisplayName\": \"尺码\"\n" + - " },\n" + - " {\n" + - " \"childCmmdtyTitle\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 M\",\n" + - " \"imageCount\": \"5\",\n" + - " \"characterValueId\": \"02\",\n" + - " \"itemId\": \"\",\n" + - " \"itemDisplayName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 M\",\n" + - " \"itemName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 M\",\n" + - " \"characterValueDisplayName\": \"M\",\n" + - " \"partNumber\": \"000000010750373928\",\n" + - " \"characterId\": \"G00002\",\n" + - " \"characterDisplayName\": \"尺码\"\n" + - " },\n" + - " {\n" + - " \"childCmmdtyTitle\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 L\",\n" + - " \"imageCount\": \"5\",\n" + - " \"characterValueId\": \"03\",\n" + - " \"itemId\": \"\",\n" + - " \"itemDisplayName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 L\",\n" + - " \"itemName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 L\",\n" + - " \"characterValueDisplayName\": \"L\",\n" + - " \"partNumber\": \"000000010750373926\",\n" + - " \"characterId\": \"G00002\",\n" + - " \"characterDisplayName\": \"尺码\"\n" + - " },\n" + - " {\n" + - " \"childCmmdtyTitle\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 XL\",\n" + - " \"imageCount\": \"5\",\n" + - " \"characterValueId\": \"04\",\n" + - " \"itemId\": \"\",\n" + - " \"itemDisplayName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 XL\",\n" + - " \"itemName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 XL\",\n" + - " \"characterValueDisplayName\": \"XL\",\n" + - " \"partNumber\": \"000000010750373920\",\n" + - " \"characterId\": \"G00002\",\n" + - " \"characterDisplayName\": \"尺码\"\n" + - " },\n" + - " {\n" + - " \"childCmmdtyTitle\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 XXL\",\n" + - " \"imageCount\": \"5\",\n" + - " \"characterValueId\": \"05\",\n" + - " \"itemId\": \"\",\n" + - " \"itemDisplayName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 XXL\",\n" + - " \"itemName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 XXL\",\n" + - " \"characterValueDisplayName\": \"XXL\",\n" + - " \"partNumber\": \"000000010750373916\",\n" + - " \"characterId\": \"G00002\",\n" + - " \"characterDisplayName\": \"尺码\"\n" + - " },\n" + - " {\n" + - " \"childCmmdtyTitle\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 XXXL\",\n" + - " \"imageCount\": \"5\",\n" + - " \"characterValueId\": \"06\",\n" + - " \"itemId\": \"\",\n" + - " \"itemDisplayName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 XXXL\",\n" + - " \"itemName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 XXXL\",\n" + - " \"characterValueDisplayName\": \"XXXL\",\n" + - " \"partNumber\": \"000000010750373924\",\n" + - " \"characterId\": \"G00002\",\n" + - " \"characterDisplayName\": \"尺码\"\n" + - " }\n" + - " ]\n" + - " },\n" + - " {\n" + - " \"颜色\": [\n" + - " {\n" + - " \"childCmmdtyTitle\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 XS\",\n" + - " \"imageCount\": \"5\",\n" + - " \"characterValueId\": \"276366\",\n" + - " \"itemId\": \"\",\n" + - " \"itemDisplayName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 XS\",\n" + - " \"itemName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 XS\",\n" + - " \"characterValueDisplayName\": \"牛仔深蓝0840\",\n" + - " \"partNumber\": \"000000010750373922\",\n" + - " \"characterId\": \"G00001\",\n" + - " \"characterDisplayName\": \"颜色\"\n" + - " },\n" + - " {\n" + - " \"childCmmdtyTitle\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔中蓝0820 XS\",\n" + - " \"imageCount\": \"5\",\n" + - " \"characterValueId\": \"276367\",\n" + - " \"itemId\": \"\",\n" + - " \"itemDisplayName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔中蓝0820 XS\",\n" + - " \"itemName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔中蓝0820 XS\",\n" + - " \"characterValueDisplayName\": \"牛仔中蓝0820\",\n" + - " \"partNumber\": \"000000010750373921\",\n" + - " \"characterId\": \"G00001\",\n" + - " \"characterDisplayName\": \"颜色\"\n" + - " }\n" + - " ],\n" + - " \"尺码\": [\n" + - " {\n" + - " \"childCmmdtyTitle\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 XS\",\n" + - " \"imageCount\": \"5\",\n" + - " \"characterValueId\": \"46\",\n" + - " \"itemId\": \"\",\n" + - " \"itemDisplayName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 XS\",\n" + - " \"itemName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 XS\",\n" + - " \"characterValueDisplayName\": \"XS\",\n" + - " \"partNumber\": \"000000010750373922\",\n" + - " \"characterId\": \"G00002\",\n" + - " \"characterDisplayName\": \"尺码\"\n" + - " },\n" + - " {\n" + - " \"childCmmdtyTitle\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 S\",\n" + - " \"imageCount\": \"5\",\n" + - " \"characterValueId\": \"01\",\n" + - " \"itemId\": \"\",\n" + - " \"itemDisplayName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 S\",\n" + - " \"itemName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 S\",\n" + - " \"characterValueDisplayName\": \"S\",\n" + - " \"partNumber\": \"000000010750373918\",\n" + - " \"characterId\": \"G00002\",\n" + - " \"characterDisplayName\": \"尺码\"\n" + - " },\n" + - " {\n" + - " \"childCmmdtyTitle\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 M\",\n" + - " \"imageCount\": \"5\",\n" + - " \"characterValueId\": \"02\",\n" + - " \"itemId\": \"\",\n" + - " \"itemDisplayName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 M\",\n" + - " \"itemName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 M\",\n" + - " \"characterValueDisplayName\": \"M\",\n" + - " \"partNumber\": \"000000010750373928\",\n" + - " \"characterId\": \"G00002\",\n" + - " \"characterDisplayName\": \"尺码\"\n" + - " },\n" + - " {\n" + - " \"childCmmdtyTitle\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 L\",\n" + - " \"imageCount\": \"5\",\n" + - " \"characterValueId\": \"03\",\n" + - " \"itemId\": \"\",\n" + - " \"itemDisplayName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 L\",\n" + - " \"itemName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 L\",\n" + - " \"characterValueDisplayName\": \"L\",\n" + - " \"partNumber\": \"000000010750373926\",\n" + - " \"characterId\": \"G00002\",\n" + - " \"characterDisplayName\": \"尺码\"\n" + - " },\n" + - " {\n" + - " \"childCmmdtyTitle\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 XL\",\n" + - " \"imageCount\": \"5\",\n" + - " \"characterValueId\": \"04\",\n" + - " \"itemId\": \"\",\n" + - " \"itemDisplayName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 XL\",\n" + - " \"itemName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 XL\",\n" + - " \"characterValueDisplayName\": \"XL\",\n" + - " \"partNumber\": \"000000010750373920\",\n" + - " \"characterId\": \"G00002\",\n" + - " \"characterDisplayName\": \"尺码\"\n" + - " },\n" + - " {\n" + - " \"childCmmdtyTitle\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 XXL\",\n" + - " \"imageCount\": \"5\",\n" + - " \"characterValueId\": \"05\",\n" + - " \"itemId\": \"\",\n" + - " \"itemDisplayName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 XXL\",\n" + - " \"itemName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 XXL\",\n" + - " \"characterValueDisplayName\": \"XXL\",\n" + - " \"partNumber\": \"000000010750373916\",\n" + - " \"characterId\": \"G00002\",\n" + - " \"characterDisplayName\": \"尺码\"\n" + - " },\n" + - " {\n" + - " \"childCmmdtyTitle\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 XXXL\",\n" + - " \"imageCount\": \"5\",\n" + - " \"characterValueId\": \"06\",\n" + - " \"itemId\": \"\",\n" + - " \"itemDisplayName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 XXXL\",\n" + - " \"itemName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 XXXL\",\n" + - " \"characterValueDisplayName\": \"XXXL\",\n" + - " \"partNumber\": \"000000010750373924\",\n" + - " \"characterId\": \"G00002\",\n" + - " \"characterDisplayName\": \"尺码\"\n" + - " }\n" + - " ]\n" + - " }\n" + - " ],\n" + - " \"images\": [\n" + - " \"http://imgservice.suning.cn/uimg1/b2c/image/mt6m7FZG46SZu6nyUg7n5Q.jpg\",\n" + - " \"http://imgservice.suning.cn/uimg1/b2c/image/VCgFT1HTEpTwrBVz7Iz6wg.jpg\",\n" + - " \"http://imgservice.suning.cn/uimg1/b2c/image/n2fu_nDV_wHybFbX6L_7Gw.jpg\",\n" + - " \"http://imgservice.suning.cn/uimg1/b2c/image/cdBZn-Fh_qO5eFh5Ekjc5Q.jpg\",\n" + - " \"http://imgservice.suning.cn/uimg1/b2c/image/V28kdkDnWo5ZEV9wxghPoQ.jpg\"\n" + - " ],\n" + - " \"price\": \"\",\n" + - " \"partNumber\": \"000000010750373914\",\n" + - " \"shopId\": \"0070088010\",\n" + - " \"title\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服\",\n" + - " \"charPartNumbers\": [\n" + - " {\n" + - " \"27636601\": {\n" + - " \"childCmmdtyTitle\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 S\",\n" + - " \"imageCount\": \"5\",\n" + - " \"characterValueId\": \"276366\",\n" + - " \"itemId\": \"\",\n" + - " \"itemDisplayName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 S\",\n" + - " \"itemName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 S\",\n" + - " \"characterValueDisplayName\": \"牛仔深蓝0840\",\n" + - " \"partNumber\": \"000000010750373918\",\n" + - " \"characterId\": \"G00001\",\n" + - " \"characterDisplayName\": \"颜色\"\n" + - " },\n" + - " \"27636602\": {\n" + - " \"childCmmdtyTitle\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 M\",\n" + - " \"imageCount\": \"5\",\n" + - " \"characterValueId\": \"276366\",\n" + - " \"itemId\": \"\",\n" + - " \"itemDisplayName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 M\",\n" + - " \"itemName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 M\",\n" + - " \"characterValueDisplayName\": \"牛仔深蓝0840\",\n" + - " \"partNumber\": \"000000010750373928\",\n" + - " \"characterId\": \"G00001\",\n" + - " \"characterDisplayName\": \"颜色\"\n" + - " },\n" + - " \"27636603\": {\n" + - " \"childCmmdtyTitle\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 L\",\n" + - " \"imageCount\": \"5\",\n" + - " \"characterValueId\": \"276366\",\n" + - " \"itemId\": \"\",\n" + - " \"itemDisplayName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 L\",\n" + - " \"itemName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 L\",\n" + - " \"characterValueDisplayName\": \"牛仔深蓝0840\",\n" + - " \"partNumber\": \"000000010750373926\",\n" + - " \"characterId\": \"G00001\",\n" + - " \"characterDisplayName\": \"颜色\"\n" + - " },\n" + - " \"27636604\": {\n" + - " \"childCmmdtyTitle\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 XL\",\n" + - " \"imageCount\": \"5\",\n" + - " \"characterValueId\": \"276366\",\n" + - " \"itemId\": \"\",\n" + - " \"itemDisplayName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 XL\",\n" + - " \"itemName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 XL\",\n" + - " \"characterValueDisplayName\": \"牛仔深蓝0840\",\n" + - " \"partNumber\": \"000000010750373920\",\n" + - " \"characterId\": \"G00001\",\n" + - " \"characterDisplayName\": \"颜色\"\n" + - " },\n" + - " \"27636605\": {\n" + - " \"childCmmdtyTitle\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 XXL\",\n" + - " \"imageCount\": \"5\",\n" + - " \"characterValueId\": \"276366\",\n" + - " \"itemId\": \"\",\n" + - " \"itemDisplayName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 XXL\",\n" + - " \"itemName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 XXL\",\n" + - " \"characterValueDisplayName\": \"牛仔深蓝0840\",\n" + - " \"partNumber\": \"000000010750373916\",\n" + - " \"characterId\": \"G00001\",\n" + - " \"characterDisplayName\": \"颜色\"\n" + - " },\n" + - " \"27636606\": {\n" + - " \"childCmmdtyTitle\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 XXXL\",\n" + - " \"imageCount\": \"5\",\n" + - " \"characterValueId\": \"276366\",\n" + - " \"itemId\": \"\",\n" + - " \"itemDisplayName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 XXXL\",\n" + - " \"itemName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 XXXL\",\n" + - " \"characterValueDisplayName\": \"牛仔深蓝0840\",\n" + - " \"partNumber\": \"000000010750373924\",\n" + - " \"characterId\": \"G00001\",\n" + - " \"characterDisplayName\": \"颜色\"\n" + - " },\n" + - " \"27636646\": {\n" + - " \"childCmmdtyTitle\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 XS\",\n" + - " \"imageCount\": \"5\",\n" + - " \"characterValueId\": \"276366\",\n" + - " \"itemId\": \"\",\n" + - " \"itemDisplayName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 XS\",\n" + - " \"itemName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔深蓝0840 XS\",\n" + - " \"characterValueDisplayName\": \"牛仔深蓝0840\",\n" + - " \"partNumber\": \"000000010750373922\",\n" + - " \"characterId\": \"G00001\",\n" + - " \"characterDisplayName\": \"颜色\"\n" + - " },\n" + - " \"27636701\": {\n" + - " \"childCmmdtyTitle\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔中蓝0820 S\",\n" + - " \"imageCount\": \"5\",\n" + - " \"characterValueId\": \"276367\",\n" + - " \"itemId\": \"\",\n" + - " \"itemDisplayName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔中蓝0820 S\",\n" + - " \"itemName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔中蓝0820 S\",\n" + - " \"characterValueDisplayName\": \"牛仔中蓝0820\",\n" + - " \"partNumber\": \"000000010750373917\",\n" + - " \"characterId\": \"G00001\",\n" + - " \"characterDisplayName\": \"颜色\"\n" + - " },\n" + - " \"27636702\": {\n" + - " \"childCmmdtyTitle\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔中蓝0820 M\",\n" + - " \"imageCount\": \"5\",\n" + - " \"characterValueId\": \"276367\",\n" + - " \"itemId\": \"\",\n" + - " \"itemDisplayName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔中蓝0820 M\",\n" + - " \"itemName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔中蓝0820 M\",\n" + - " \"characterValueDisplayName\": \"牛仔中蓝0820\",\n" + - " \"partNumber\": \"000000010750373927\",\n" + - " \"characterId\": \"G00001\",\n" + - " \"characterDisplayName\": \"颜色\"\n" + - " },\n" + - " \"27636703\": {\n" + - " \"childCmmdtyTitle\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔中蓝0820 L\",\n" + - " \"imageCount\": \"5\",\n" + - " \"characterValueId\": \"276367\",\n" + - " \"itemId\": \"\",\n" + - " \"itemDisplayName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔中蓝0820 L\",\n" + - " \"itemName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔中蓝0820 L\",\n" + - " \"characterValueDisplayName\": \"牛仔中蓝0820\",\n" + - " \"partNumber\": \"000000010750373925\",\n" + - " \"characterId\": \"G00001\",\n" + - " \"characterDisplayName\": \"颜色\"\n" + - " },\n" + - " \"27636704\": {\n" + - " \"childCmmdtyTitle\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔中蓝0820 XL\",\n" + - " \"imageCount\": \"5\",\n" + - " \"characterValueId\": \"276367\",\n" + - " \"itemId\": \"\",\n" + - " \"itemDisplayName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔中蓝0820 XL\",\n" + - " \"itemName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔中蓝0820 XL\",\n" + - " \"characterValueDisplayName\": \"牛仔中蓝0820\",\n" + - " \"partNumber\": \"000000010750373919\",\n" + - " \"characterId\": \"G00001\",\n" + - " \"characterDisplayName\": \"颜色\"\n" + - " },\n" + - " \"27636705\": {\n" + - " \"childCmmdtyTitle\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔中蓝0820 XXL\",\n" + - " \"imageCount\": \"5\",\n" + - " \"characterValueId\": \"276367\",\n" + - " \"itemId\": \"\",\n" + - " \"itemDisplayName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔中蓝0820 XXL\",\n" + - " \"itemName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔中蓝0820 XXL\",\n" + - " \"characterValueDisplayName\": \"牛仔中蓝0820\",\n" + - " \"partNumber\": \"000000010750373915\",\n" + - " \"characterId\": \"G00001\",\n" + - " \"characterDisplayName\": \"颜色\"\n" + - " },\n" + - " \"27636706\": {\n" + - " \"childCmmdtyTitle\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔中蓝0820 XXXL\",\n" + - " \"imageCount\": \"5\",\n" + - " \"characterValueId\": \"276367\",\n" + - " \"itemId\": \"\",\n" + - " \"itemDisplayName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔中蓝0820 XXXL\",\n" + - " \"itemName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔中蓝0820 XXXL\",\n" + - " \"characterValueDisplayName\": \"牛仔中蓝0820\",\n" + - " \"partNumber\": \"000000010750373923\",\n" + - " \"characterId\": \"G00001\",\n" + - " \"characterDisplayName\": \"颜色\"\n" + - " },\n" + - " \"27636746\": {\n" + - " \"childCmmdtyTitle\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔中蓝0820 XS\",\n" + - " \"imageCount\": \"5\",\n" + - " \"characterValueId\": \"276367\",\n" + - " \"itemId\": \"\",\n" + - " \"itemDisplayName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔中蓝0820 XS\",\n" + - " \"itemName\": \"Semir森马牛仔外套男春秋季情侣装破洞牛仔衣休闲工装夹克男衣服 牛仔中蓝0820 XS\",\n" + - " \"characterValueDisplayName\": \"牛仔中蓝0820\",\n" + - " \"partNumber\": \"000000010750373921\",\n" + - " \"characterId\": \"G00001\",\n" + - " \"characterDisplayName\": \"颜色\"\n" + - " }\n" + - " }\n" + - " ],\n" + - " \"desc\": \"

750){this.height=this.height*(750.0/this.width); this.width = 750;}\\\" src2=\\\"https://image.suning.cn/uimg/sop/commodity/125220209081385508258193_x.jpg\\\" alt=\\\"\\\" />750){this.height=this.height*(750.0/this.width); this.width = 750;}\\\" src2=\\\"https://image.suning.cn/uimg/sop/commodity/184813043121950551816127_x.jpg\\\" alt=\\\"\\\" />750){this.height=this.height*(750.0/this.width); this.width = 750;}\\\" src2=\\\"https://image.suning.cn/uimg/sop/commodity/255000004103639198879559_x.jpg\\\" alt=\\\"\\\" />750){this.height=this.height*(750.0/this.width); this.width = 750;}\\\" src2=\\\"https://image.suning.cn/uimg/sop/commodity/183140400854705687380144_x.jpg\\\" alt=\\\"\\\" />750){this.height=this.height*(750.0/this.width); this.width = 750;}\\\" src2=\\\"https://image.suning.cn/uimg/sop/commodity/523322032122341278564696_x.png\\\" alt=\\\"\\\" />750){this.height=this.height*(750.0/this.width); this.width = 750;}\\\" src2=\\\"https://image.suning.cn/uimg/sop/commodity/938486877938243347574771_x.jpg\\\" alt=\\\"\\\" />750){this.height=this.height*(750.0/this.width); this.width = 750;}\\\" src2=\\\"https://image.suning.cn/uimg/sop/commodity/607175099144383918150989_x.jpg\\\" alt=\\\"\\\" />750){this.height=this.height*(750.0/this.width); this.width = 750;}\\\" src2=\\\"https://image.suning.cn/uimg/sop/commodity/136584896964669549273775_x.jpg\\\" alt=\\\"\\\" />750){this.height=this.height*(750.0/this.width); this.width = 750;}\\\" src2=\\\"https://image.suning.cn/uimg/sop/commodity/322197964620935084194147_x.jpg\\\" alt=\\\"\\\" />750){this.height=this.height*(750.0/this.width); this.width = 750;}\\\" src2=\\\"https://image.suning.cn/uimg/sop/commodity/929159264114757969921850_x.jpg\\\" alt=\\\"\\\" />750){this.height=this.height*(750.0/this.width); this.width = 750;}\\\" src2=\\\"https://image.suning.cn/uimg/sop/commodity/763323584350363146498861_x.jpg\\\" alt=\\\"\\\" />750){this.height=this.height*(750.0/this.width); this.width = 750;}\\\" src2=\\\"https://image.suning.cn/uimg/sop/commodity/166476650515233956945869_x.jpg\\\" alt=\\\"\\\" />750){this.height=this.height*(750.0/this.width); this.width = 750;}\\\" src2=\\\"http://image.suning.cn/uimg/sop/richtext/147478284179002029131387.gif\\\" alt=\\\"\\\" />

\"\n" + - " },\n" + - " \"dataType\": \"detail\",\n" + - " \"hasNext\": true,\n" + - " \"appCode\": \"goodsDetail\",\n" + - " \"page\": 0,\n" + - " \"version\": \"1.0\",\n" + - " \"retcode\": \"0000\"\n" + - "}"; - - public static String tbJson = "{\n" + - " \"data\": {\n" + - " \"seller\": {\n" + - " \"sellerNick\": \"bne1979\",\n" + - " \"goodRatePercentage\": \"99.91%\",\n" + - " \"shopName\": \"MUMO木墨\",\n" + - " \"shopIcon\": \"//img.alicdn.com/imgextra//d8/29/TB1vjNEJFXXXXaoXFXXSutbFXXX.jpg\",\n" + - " \"evaluates\": [\n" + - " {\n" + - " \"score\": \"4.9 \",\n" + - " \"level\": \"1\",\n" + - " \"levelText\": \"高\",\n" + - " \"title\": \"宝贝描述\",\n" + - " \"type\": \"desc\"\n" + - " },\n" + - " {\n" + - " \"score\": \"4.9 \",\n" + - " \"level\": \"1\",\n" + - " \"levelText\": \"高\",\n" + - " \"title\": \"卖家服务\",\n" + - " \"type\": \"serv\"\n" + - " },\n" + - " {\n" + - " \"score\": \"4.9 \",\n" + - " \"level\": \"1\",\n" + - " \"levelText\": \"高\",\n" + - " \"title\": \"物流服务\",\n" + - " \"type\": \"post\"\n" + - " }\n" + - " ],\n" + - " \"shopUrl\": \"tmall://page.tm/shop?item_id=16793826526&shopId=34059034\",\n" + - " \"userId\": \"23739472\",\n" + - " \"fans\": \"48.0万\",\n" + - " \"itemCount\": \"413\",\n" + - " \"taoShopUrl\": \"https://shop34059034.taobao.com/\",\n" + - " \"creditLevel\": \"14\",\n" + - " \"sellerId\": \"23739472\",\n" + - " \"creditLevelIcon\": \"//gw.alicdn.com/tfs/TB1Ag2CixrI8KJjy0FpXXb5hVXa-132-24.png\",\n" + - " \"shopId\": \"34059034\",\n" + - " \"starts\": \"2006-11-18 13:30:40\"\n" + - " },\n" + - " \"item\": {\n" + - " \"isTmall\": false,\n" + - " \"marketPriceRange\": \"2498.00\",\n" + - " \"title\": \"MUMO木墨 多层架 实木置物架卧室书架落地客厅木头架子红橡木书架\",\n" + - " \"subTitle\": \"\",\n" + - " \"descUrl\": \"http://h5.m.taobao.com/app/detail/desc.html?_isH5Des=true#!id=16793826526&type=0&f=TB1CWpwvHH1gK0jSZFw8qw7aXla&sellerType=C\",\n" + - " \"sku\": [\n" + - " {\n" + - " \"quantity\": \"106\",\n" + - " \"price\": \"1998-4390\",\n" + - " \"propPath\": \"\",\n" + - " \"skuId\": \"0\"\n" + - " },\n" + - " {\n" + - " \"skuName\": \"颜色分类--红橡六层架+1个黑抽\",\n" + - " \"quantity\": \"19\",\n" + - " \"price\": \"2498\",\n" + - " \"propPath\": \"1627207:1317118987\",\n" + - " \"skuId\": \"3732556385858\"\n" + - " },\n" + - " {\n" + - " \"skuName\": \"颜色分类--红橡六层架+2黑抽\",\n" + - " \"quantity\": \"11\",\n" + - " \"price\": \"2998\",\n" + - " \"propPath\": \"1627207:1317094545\",\n" + - " \"skuId\": \"3732556385855\"\n" + - " },\n" + - " {\n" + - " \"skuName\": \"颜色分类--红橡木八层架+1黑抽 注意是否能进电梯\",\n" + - " \"quantity\": \"4\",\n" + - " \"price\": \"3220\",\n" + - " \"propPath\": \"1627207:1317134220\",\n" + - " \"skuId\": \"3732556385861\"\n" + - " },\n" + - " {\n" + - " \"skuName\": \"颜色分类--黑胡桃六层架+2黑抽\",\n" + - " \"quantity\": \"13\",\n" + - " \"price\": \"4390\",\n" + - " \"propPath\": \"1627207:1317094549\",\n" + - " \"skuId\": \"3732556385857\"\n" + - " },\n" + - " {\n" + - " \"skuName\": \"颜色分类--红橡木八层架+2黑抽 注意是否能进电梯\",\n" + - " \"quantity\": \"10\",\n" + - " \"price\": \"3720\",\n" + - " \"propPath\": \"1627207:1317118988\",\n" + - " \"skuId\": \"3732556385859\"\n" + - " },\n" + - " {\n" + - " \"skuName\": \"颜色分类--红橡六层架无抽\",\n" + - " \"quantity\": \"4\",\n" + - " \"price\": \"1998\",\n" + - " \"propPath\": \"1627207:1317208060\",\n" + - " \"skuId\": \"3732556385863\"\n" + - " },\n" + - " {\n" + - " \"skuName\": \"颜色分类--红橡木八层架无抽 注意是否能进电梯\",\n" + - " \"quantity\": \"5\",\n" + - " \"price\": \"2720\",\n" + - " \"propPath\": \"1627207:1317118989\",\n" + - " \"skuId\": \"3732556385860\"\n" + - " },\n" + - " {\n" + - " \"skuName\": \"颜色分类--黑胡桃六层架无抽\",\n" + - " \"quantity\": \"26\",\n" + - " \"price\": \"3390\",\n" + - " \"propPath\": \"1627207:1317208059\",\n" + - " \"skuId\": \"3732556385862\"\n" + - " },\n" + - " {\n" + - " \"skuName\": \"颜色分类--黑胡桃六层架+1黑抽\",\n" + - " \"quantity\": \"14\",\n" + - " \"price\": \"3890\",\n" + - " \"propPath\": \"1627207:1317094546\",\n" + - " \"skuId\": \"3732556385856\"\n" + - " }\n" + - " ],\n" + - " \"extraPrices\": [],\n" + - " \"descImgs\": [\n" + - " \"//img.alicdn.com/imgextra/i1/23739472/O1CN01bsCXOu2JqE75uluua_!!23739472.jpg\",\n" + - " \"//img.alicdn.com/imgextra/i4/23739472/O1CN0109fd6p2JqE5e5zDQI_!!23739472.jpg\",\n" + - " \"//img.alicdn.com/imgextra/i3/23739472/O1CN0147sijN2JqE5UMKreX_!!23739472.jpg\",\n" + - " \"//img.alicdn.com/imgextra/i2/23739472/O1CN01lk99G62JqE5wdaSoH_!!23739472.jpg\",\n" + - " \"//img.alicdn.com/imgextra/i2/23739472/O1CN01Ukngl02JqE73CO5Em_!!23739472.jpg\",\n" + - " \"//img.alicdn.com/imgextra/i1/23739472/O1CN01wlmlb12JqE5uYJgBd_!!23739472.jpg\",\n" + - " \"//img.alicdn.com/imgextra/i1/23739472/O1CN01LkCDKP2JqE5wARbdW_!!23739472.jpg\",\n" + - " \"//img.alicdn.com/imgextra/i3/23739472/O1CN01W6SbaW2JqE5ondXJN_!!23739472.jpg\",\n" + - " \"//img.alicdn.com/imgextra/i4/23739472/O1CN012fPIAi2JqE5yoQrcT_!!23739472.jpg\",\n" + - " \"//img.alicdn.com/imgextra/i2/23739472/O1CN01hrwB7o2JqE5yoRnnF_!!23739472.jpg\",\n" + - " \"//img.alicdn.com/imgextra/i3/23739472/O1CN017FvzzF2JqE5vt18pV_!!23739472.jpg\",\n" + - " \"//img.alicdn.com/imgextra/i4/23739472/O1CN014BtBtH2JqE5wAQfTj_!!23739472.jpg\",\n" + - " \"//img.alicdn.com/imgextra/i3/23739472/O1CN010i5Jzx2JqE5uYKkg4_!!23739472.jpg\",\n" + - " \"//img.alicdn.com/imgextra/i3/23739472/O1CN01ZcruUP2JqE60FRzUr_!!23739472.jpg\",\n" + - " \"//img.alicdn.com/imgextra/i2/23739472/O1CN01zYtMdW2JqE5zKyFkK_!!23739472.jpg\",\n" + - " \"//img.alicdn.com/imgextra/i1/23739472/O1CN01nSVOmO2JqE5uYJLQg_!!23739472.jpg\",\n" + - " \"//img.alicdn.com/imgextra/i2/23739472/O1CN01290NID2JqE5zKwZqT_!!23739472.jpg\",\n" + - " \"//img.alicdn.com/imgextra/i4/23739472/O1CN01QEgYi02JqE5yoRKjO_!!23739472.jpg\",\n" + - " \"//img.alicdn.com/imgextra/i3/23739472/O1CN0106x4vu2JqE5yoRbNF_!!23739472.jpg\",\n" + - " \"//img.alicdn.com/imgextra/i3/23739472/O1CN01re04tE2JqE5tNhEol_!!23739472.jpg\",\n" + - " \"//img.alicdn.com/imgextra/i2/23739472/O1CN01w56C0H2JqE7QcyvbG_!!23739472.jpg\",\n" + - " \"//img.alicdn.com/imgextra/i1/23739472/O1CN01JneJwq2JqE5PC72MN_!!23739472.jpg\"\n" + - " ],\n" + - " \"delivery\": \"免运费\",\n" + - " \"vagueSellCount\": \"63\",\n" + - " \"images\": [\n" + - " \"//img.alicdn.com/imgextra/i3/23739472/TB2amDXaBAOyuJjy0FlXXcaxFXa_!!23739472.jpg\",\n" + - " \"//img.alicdn.com/imgextra/i2/23739472/O1CN01Xd6HmD2JqE5Dh8RSW_!!23739472.jpg\",\n" + - " \"//img.alicdn.com/imgextra/i2/23739472/TB2qT9dawZjyKJjy0FhXXcdlFXa_!!23739472.jpg\",\n" + - " \"//img.alicdn.com/imgextra/i3/23739472/TB2FU9gaAZkyKJjy0FnXXXveFXa_!!23739472.jpg\",\n" + - " \"//img.alicdn.com/imgextra/i2/23739472/TB2h8ZpcMb.PuJjSZFpXXbuFpXa_!!23739472.jpg\"\n" + - " ],\n" + - " \"favouriteCount\": \"12524\",\n" + - " \"consumerProtection\": {\n" + - " \"passValue\": \"all\",\n" + - " \"items\": [\n" + - " {\n" + - " \"title\": \"15天退货\",\n" + - " \"desc\": \"15天退货,退货邮费卖家承担\"\n" + - " },\n" + - " {\n" + - " \"title\": \"订单险\",\n" + - " \"desc\": \"保险公司全程担保赔付该商品每笔交易的售后\"\n" + - " },\n" + - " {\n" + - " \"title\": \"运费险\",\n" + - " \"desc\": \"卖家为您购买的商品投保退货运费险(保单生效以确认订单页展示的运费险为准)\"\n" + - " },\n" + - " {\n" + - " \"title\": \"蚂蚁花呗\"\n" + - " },\n" + - " {\n" + - " \"title\": \"信用卡支付\"\n" + - " },\n" + - " {\n" + - " \"title\": \"集分宝\"\n" + - " }\n" + - " ]\n" + - " },\n" + - " \"groupProps\": [\n" + - " {\n" + - " \"基本信息\": [\n" + - " {\n" + - " \"品牌\": \"木墨\"\n" + - " },\n" + - " {\n" + - " \"型号\": \"SDC\"\n" + - " },\n" + - " {\n" + - " \"材质\": \"木\"\n" + - " },\n" + - " {\n" + - " \"木质材质\": \"其他\"\n" + - " },\n" + - " {\n" + - " \"风格\": \"其他\"\n" + - " },\n" + - " {\n" + - " \"颜色分类\": \"红橡六层架+1个黑抽,红橡六层架+2黑抽,红橡木八层架+1黑抽,黑胡桃六层架+2黑抽,红橡木八层架+2黑抽,红橡六层架无抽,红橡木八层架无抽,黑胡桃六层架无抽,黑胡桃六层架+1黑抽\"\n" + - " },\n" + - " {\n" + - " \"结构工艺\": \"木质工艺\"\n" + - " },\n" + - " {\n" + - " \"木质结构工艺\": \"其他\"\n" + - " },\n" + - " {\n" + - " \"是否可定制\": \"否\"\n" + - " },\n" + - " {\n" + - " \"隔板形状\": \"特殊造型\"\n" + - " },\n" + - " {\n" + - " \"适用对象\": \"成人\"\n" + - " },\n" + - " {\n" + - " \"可送货/安装\": \"南昌市,苏州市,温州市,金华市,北京,长沙市,成都市,重庆,大连市,广州市,贵阳市,哈尔滨市,杭州市,南京市,上海,沈阳市,深圳市,天津,其他,武汉市,西安市,郑州市,东莞市,宁波市,福州市,青岛市,无锡市,台州市,常州市,佛山市,厦门市,南宁市\"\n" + - " },\n" + - " {\n" + - " \"出租车是否可运输\": \"否\"\n" + - " },\n" + - " {\n" + - " \"款式定位\": \"经济型\"\n" + - " },\n" + - " {\n" + - " \"安装说明详情\": \"提供安装说明书,提供简单安装工具\"\n" + - " }\n" + - " ]\n" + - " }\n" + - " ],\n" + - " \"url\": \"https://item.taobao.com/item.htm?id=16793826526\",\n" + - " \"rootCategoryId\": \"50008164\",\n" + - " \"commentCount\": \"243\",\n" + - " \"props\": [\n" + - " {\n" + - " \"values\": [\n" + - " {\n" + - " \"vid\": \"1317118987\",\n" + - " \"name\": \"红橡六层架+1个黑抽\"\n" + - " },\n" + - " {\n" + - " \"vid\": \"1317094545\",\n" + - " \"name\": \"红橡六层架+2黑抽\"\n" + - " },\n" + - " {\n" + - " \"vid\": \"1317134220\",\n" + - " \"name\": \"红橡木八层架+1黑抽 注意是否能进电梯\"\n" + - " },\n" + - " {\n" + - " \"vid\": \"1317094549\",\n" + - " \"name\": \"黑胡桃六层架+2黑抽\"\n" + - " },\n" + - " {\n" + - " \"vid\": \"1317118988\",\n" + - " \"name\": \"红橡木八层架+2黑抽 注意是否能进电梯\"\n" + - " },\n" + - " {\n" + - " \"vid\": \"1317208060\",\n" + - " \"name\": \"红橡六层架无抽\"\n" + - " },\n" + - " {\n" + - " \"vid\": \"1317118989\",\n" + - " \"name\": \"红橡木八层架无抽 注意是否能进电梯\"\n" + - " },\n" + - " {\n" + - " \"vid\": \"1317208059\",\n" + - " \"name\": \"黑胡桃六层架无抽\"\n" + - " },\n" + - " {\n" + - " \"vid\": \"1317094546\",\n" + - " \"name\": \"黑胡桃六层架+1黑抽\"\n" + - " }\n" + - " ],\n" + - " \"name\": \"颜色分类\",\n" + - " \"pid\": \"1627207\"\n" + - " }\n" + - " ],\n" + - " \"itemId\": \"16793826526\",\n" + - " \"transmitPrice\": {\n" + - " \"priceText\": \"1998-4390\"\n" + - " },\n" + - " \"brandId\": \"154365652\",\n" + - " \"installment\": {},\n" + - " \"location\": \"浙江温州\",\n" + - " \"priceRange\": \"1998-4390\",\n" + - " \"categoryId\": \"50015931\",\n" + - " \"status\": \"\",\n" + - " \"desc\": \"

 

 

 

 

添加影藏字符

- -_- -

\"\n" + - " }\n" + - " },\n" + - " \"dataType\": \"detail\",\n" + - " \"hasNext\": true,\n" + - " \"appCode\": \"taobaodetail\",\n" + - " \"page\": 0,\n" + - " \"version\": \"1.0\",\n" + - " \"retcode\": \"0000\"\n" + - "}"; - -// public static String tmallJson = "{\n" + -// " \"dataType\": \"detail\",\n" + -// " \"appCode\": \"taobaodetail\",\n" + -// " \"version\": \"1.0\",\n" + -// " \"retcode\": \"0000\",\n" + -// " \"hasNext\": true,\n" + -// " \"page\": 0,\n" + -// " \"data\": {\n" + -// " \"seller\": {\n" + -// " \"sellerNick\": \"八牧男装专营店\",\n" + -// " \"goodRatePercentage\": \"100.00%\",\n" + -// " \"shopName\": \"八牧男装专营店\",\n" + -// " \"shopIcon\": \"//img.alicdn.com/imgextra//3f/13/TB1O4xFJVXXXXXEXFXXSutbFXXX.jpg\",\n" + -// " \"evaluates\": [\n" + -// " {\n" + -// " \"score\": \"4.9 \",\n" + -// " \"level\": \"1\",\n" + -// " \"levelText\": \"高\",\n" + -// " \"title\": \"宝贝描述\",\n" + -// " \"type\": \"desc\"\n" + -// " },\n" + -// " {\n" + -// " \"score\": \"4.8 \",\n" + -// " \"level\": \"1\",\n" + -// " \"levelText\": \"高\",\n" + -// " \"title\": \"卖家服务\",\n" + -// " \"type\": \"serv\"\n" + -// " },\n" + -// " {\n" + -// " \"score\": \"4.9 \",\n" + -// " \"level\": \"1\",\n" + -// " \"levelText\": \"高\",\n" + -// " \"title\": \"物流服务\",\n" + -// " \"type\": \"post\"\n" + -// " }\n" + -// " ],\n" + -// " \"shopUrl\": \"tmall://page.tm/shop?item_id=576801983901&shopId=112654234\",\n" + -// " \"userId\": \"2186420432\",\n" + -// " \"fans\": \"4.4万\",\n" + -// " \"itemCount\": \"603\",\n" + -// " \"taoShopUrl\": \"https://shop112654234.taobao.com/\",\n" + -// " \"creditLevel\": \"13\",\n" + -// " \"sellerId\": \"2186420432\",\n" + -// " \"creditLevelIcon\": \"//gw.alicdn.com/tfs/TB1QoJUIwmTBuNjy1XbXXaMrVXa-84-36.png?getAvatar=avatar\",\n" + -// " \"shopId\": \"112654234\",\n" + -// " \"starts\": \"2014-08-07 15:26:17\"\n" + -// " },\n" + -// " \"item\": {\n" + -// " \"isTmall\": true,\n" + -// " \"marketPriceRange\": \"218\",\n" + -// " \"videos\": [],\n" + -// " \"title\": \"花花公子男士长袖t恤圆领卫衣春秋季潮流打底衫2020新款T恤上衣服\",\n" + -// " \"subTitle\": \"品质保证 送运费险 购物无忧 现货发售\",\n" + -// " \"descUrl\": \"http://h5.m.taobao.com/app/detail/desc.html?_isH5Des=true#!id=576801983901&type=0&f=TB1V6xexG61gK0jSZFl8qtDKFla&sellerType=B\",\n" + -// " \"sku\": [\n" + -// " {\n" + -// " \"quantity\": \"40130\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"\",\n" + -// " \"skuId\": \"0\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--M/165;颜色--8736黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i1/2186420432/TB2Sr1_uYorBKNjSZFjXXc_SpXa_!!2186420432.jpg\",\n" + -// " \"quantity\": \"354\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:90381765;1627207:32820192\",\n" + -// " \"skuId\": \"3964744634584\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--L/170;颜色--8736黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i1/2186420432/TB2Sr1_uYorBKNjSZFjXXc_SpXa_!!2186420432.jpg\",\n" + -// " \"quantity\": \"132\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:29945579;1627207:32820192\",\n" + -// " \"skuId\": \"3964744634585\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XL/175;颜色--8736黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i1/2186420432/TB2Sr1_uYorBKNjSZFjXXc_SpXa_!!2186420432.jpg\",\n" + -// " \"quantity\": \"451\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:142137793;1627207:32820192\",\n" + -// " \"skuId\": \"3964744634586\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXL/180;颜色--8736黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i1/2186420432/TB2Sr1_uYorBKNjSZFjXXc_SpXa_!!2186420432.jpg\",\n" + -// " \"quantity\": \"166\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148156;1627207:32820192\",\n" + -// " \"skuId\": \"3964744634587\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXL/185;颜色--8736黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i1/2186420432/TB2Sr1_uYorBKNjSZFjXXc_SpXa_!!2186420432.jpg\",\n" + -// " \"quantity\": \"336\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148157;1627207:32820192\",\n" + -// " \"skuId\": \"3964744634588\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXXL/190;颜色--8736黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i1/2186420432/TB2Sr1_uYorBKNjSZFjXXc_SpXa_!!2186420432.jpg\",\n" + -// " \"quantity\": \"401\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:382516134;1627207:32820192\",\n" + -// " \"skuId\": \"4399689235120\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--M/165;颜色--8736白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i1/2186420432/TB2lfaaqgZC2uNjSZFnXXaxZpXa_!!2186420432.jpg\",\n" + -// " \"quantity\": \"486\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:90381765;1627207:79090471\",\n" + -// " \"skuId\": \"3964744634589\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--L/170;颜色--8736白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i1/2186420432/TB2lfaaqgZC2uNjSZFnXXaxZpXa_!!2186420432.jpg\",\n" + -// " \"quantity\": \"434\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:29945579;1627207:79090471\",\n" + -// " \"skuId\": \"3964744634590\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XL/175;颜色--8736白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i1/2186420432/TB2lfaaqgZC2uNjSZFnXXaxZpXa_!!2186420432.jpg\",\n" + -// " \"quantity\": \"446\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:142137793;1627207:79090471\",\n" + -// " \"skuId\": \"3964744634591\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXL/180;颜色--8736白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i1/2186420432/TB2lfaaqgZC2uNjSZFnXXaxZpXa_!!2186420432.jpg\",\n" + -// " \"quantity\": \"471\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148156;1627207:79090471\",\n" + -// " \"skuId\": \"3964744634592\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXL/185;颜色--8736白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i1/2186420432/TB2lfaaqgZC2uNjSZFnXXaxZpXa_!!2186420432.jpg\",\n" + -// " \"quantity\": \"488\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148157;1627207:79090471\",\n" + -// " \"skuId\": \"3964744634593\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXXL/190;颜色--8736白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i1/2186420432/TB2lfaaqgZC2uNjSZFnXXaxZpXa_!!2186420432.jpg\",\n" + -// " \"quantity\": \"494\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:382516134;1627207:79090471\",\n" + -// " \"skuId\": \"4399689235127\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--M/165;颜色--314黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01fdLpgI1F3tbIS3moP_!!2186420432.jpg\",\n" + -// " \"quantity\": \"485\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:90381765;1627207:23845275\",\n" + -// " \"skuId\": \"4002634497740\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--L/170;颜色--314黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01fdLpgI1F3tbIS3moP_!!2186420432.jpg\",\n" + -// " \"quantity\": \"470\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:29945579;1627207:23845275\",\n" + -// " \"skuId\": \"4002634497707\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XL/175;颜色--314黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01fdLpgI1F3tbIS3moP_!!2186420432.jpg\",\n" + -// " \"quantity\": \"453\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:142137793;1627207:23845275\",\n" + -// " \"skuId\": \"4002634497696\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXL/180;颜色--314黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01fdLpgI1F3tbIS3moP_!!2186420432.jpg\",\n" + -// " \"quantity\": \"477\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148156;1627207:23845275\",\n" + -// " \"skuId\": \"4002634497718\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXL/185;颜色--314黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01fdLpgI1F3tbIS3moP_!!2186420432.jpg\",\n" + -// " \"quantity\": \"480\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148157;1627207:23845275\",\n" + -// " \"skuId\": \"4002634497729\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXXL/190;颜色--314黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01fdLpgI1F3tbIS3moP_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:382516134;1627207:23845275\",\n" + -// " \"skuId\": \"4399689235115\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--M/165;颜色--314白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01uUywBQ1F3tbFErmep_!!2186420432.jpg\",\n" + -// " \"quantity\": \"289\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:90381765;1627207:23494589\",\n" + -// " \"skuId\": \"4002634497739\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--L/170;颜色--314白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01uUywBQ1F3tbFErmep_!!2186420432.jpg\",\n" + -// " \"quantity\": \"279\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:29945579;1627207:23494589\",\n" + -// " \"skuId\": \"4002634497706\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XL/175;颜色--314白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01uUywBQ1F3tbFErmep_!!2186420432.jpg\",\n" + -// " \"quantity\": \"283\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:142137793;1627207:23494589\",\n" + -// " \"skuId\": \"4002634497695\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXL/180;颜色--314白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01uUywBQ1F3tbFErmep_!!2186420432.jpg\",\n" + -// " \"quantity\": \"292\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148156;1627207:23494589\",\n" + -// " \"skuId\": \"4002634497717\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXL/185;颜色--314白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01uUywBQ1F3tbFErmep_!!2186420432.jpg\",\n" + -// " \"quantity\": \"293\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148157;1627207:23494589\",\n" + -// " \"skuId\": \"4002634497728\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXXL/190;颜色--314白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01uUywBQ1F3tbFErmep_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:382516134;1627207:23494589\",\n" + -// " \"skuId\": \"4399689235114\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--M/165;颜色--314灰色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i1/2186420432/O1CN01IhNVhx1F3tbIPaKNl_!!2186420432.jpg\",\n" + -// " \"quantity\": \"284\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:90381765;1627207:16454927\",\n" + -// " \"skuId\": \"4002634497737\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--L/170;颜色--314灰色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i1/2186420432/O1CN01IhNVhx1F3tbIPaKNl_!!2186420432.jpg\",\n" + -// " \"quantity\": \"275\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:29945579;1627207:16454927\",\n" + -// " \"skuId\": \"4002634497704\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XL/175;颜色--314灰色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i1/2186420432/O1CN01IhNVhx1F3tbIPaKNl_!!2186420432.jpg\",\n" + -// " \"quantity\": \"260\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:142137793;1627207:16454927\",\n" + -// " \"skuId\": \"4002634497693\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXL/180;颜色--314灰色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i1/2186420432/O1CN01IhNVhx1F3tbIPaKNl_!!2186420432.jpg\",\n" + -// " \"quantity\": \"280\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148156;1627207:16454927\",\n" + -// " \"skuId\": \"4002634497715\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXL/185;颜色--314灰色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i1/2186420432/O1CN01IhNVhx1F3tbIPaKNl_!!2186420432.jpg\",\n" + -// " \"quantity\": \"291\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148157;1627207:16454927\",\n" + -// " \"skuId\": \"4002634497726\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXXL/190;颜色--314灰色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i1/2186420432/O1CN01IhNVhx1F3tbIPaKNl_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:382516134;1627207:16454927\",\n" + -// " \"skuId\": \"4399689235110\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--M/165;颜色--323白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i1/2186420432/O1CN01iaAKvz1F3tbHjkujr_!!2186420432.jpg\",\n" + -// " \"quantity\": \"297\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:90381765;1627207:23849322\",\n" + -// " \"skuId\": \"4002634497742\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--L/170;颜色--323白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i1/2186420432/O1CN01iaAKvz1F3tbHjkujr_!!2186420432.jpg\",\n" + -// " \"quantity\": \"295\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:29945579;1627207:23849322\",\n" + -// " \"skuId\": \"4002634497709\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XL/175;颜色--323白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i1/2186420432/O1CN01iaAKvz1F3tbHjkujr_!!2186420432.jpg\",\n" + -// " \"quantity\": \"300\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:142137793;1627207:23849322\",\n" + -// " \"skuId\": \"4002634497698\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXL/180;颜色--323白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i1/2186420432/O1CN01iaAKvz1F3tbHjkujr_!!2186420432.jpg\",\n" + -// " \"quantity\": \"297\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148156;1627207:23849322\",\n" + -// " \"skuId\": \"4002634497720\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXL/185;颜色--323白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i1/2186420432/O1CN01iaAKvz1F3tbHjkujr_!!2186420432.jpg\",\n" + -// " \"quantity\": \"299\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148157;1627207:23849322\",\n" + -// " \"skuId\": \"4002634497731\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXXL/190;颜色--323白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i1/2186420432/O1CN01iaAKvz1F3tbHjkujr_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:382516134;1627207:23849322\",\n" + -// " \"skuId\": \"4399689235117\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--M/165;颜色--323黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i2/2186420432/O1CN01xX0wLw1F3tbHKh9CJ_!!2186420432.jpg\",\n" + -// " \"quantity\": \"294\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:90381765;1627207:23847208\",\n" + -// " \"skuId\": \"4002634497741\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--L/170;颜色--323黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i2/2186420432/O1CN01xX0wLw1F3tbHKh9CJ_!!2186420432.jpg\",\n" + -// " \"quantity\": \"287\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:29945579;1627207:23847208\",\n" + -// " \"skuId\": \"4002634497708\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XL/175;颜色--323黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i2/2186420432/O1CN01xX0wLw1F3tbHKh9CJ_!!2186420432.jpg\",\n" + -// " \"quantity\": \"282\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:142137793;1627207:23847208\",\n" + -// " \"skuId\": \"4002634497697\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXL/180;颜色--323黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i2/2186420432/O1CN01xX0wLw1F3tbHKh9CJ_!!2186420432.jpg\",\n" + -// " \"quantity\": \"287\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148156;1627207:23847208\",\n" + -// " \"skuId\": \"4002634497719\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXL/185;颜色--323黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i2/2186420432/O1CN01xX0wLw1F3tbHKh9CJ_!!2186420432.jpg\",\n" + -// " \"quantity\": \"294\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148157;1627207:23847208\",\n" + -// " \"skuId\": \"4002634497730\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXXL/190;颜色--323黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i2/2186420432/O1CN01xX0wLw1F3tbHKh9CJ_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:382516134;1627207:23847208\",\n" + -// " \"skuId\": \"4399689235116\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--M/165;颜色--8746白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i1/2186420432/O1CN01pkOR171F3temrMkNz_!!2186420432.jpg\",\n" + -// " \"quantity\": \"295\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:90381765;1627207:857972425\",\n" + -// " \"skuId\": \"4385699727351\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--L/170;颜色--8746白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i1/2186420432/O1CN01pkOR171F3temrMkNz_!!2186420432.jpg\",\n" + -// " \"quantity\": \"285\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:29945579;1627207:857972425\",\n" + -// " \"skuId\": \"4385699727297\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XL/175;颜色--8746白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i1/2186420432/O1CN01pkOR171F3temrMkNz_!!2186420432.jpg\",\n" + -// " \"quantity\": \"271\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:142137793;1627207:857972425\",\n" + -// " \"skuId\": \"4385699727279\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXL/180;颜色--8746白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i1/2186420432/O1CN01pkOR171F3temrMkNz_!!2186420432.jpg\",\n" + -// " \"quantity\": \"286\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148156;1627207:857972425\",\n" + -// " \"skuId\": \"4385699727315\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXL/185;颜色--8746白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i1/2186420432/O1CN01pkOR171F3temrMkNz_!!2186420432.jpg\",\n" + -// " \"quantity\": \"296\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148157;1627207:857972425\",\n" + -// " \"skuId\": \"4385699727333\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXXL/190;颜色--8746白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i1/2186420432/O1CN01pkOR171F3temrMkNz_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:382516134;1627207:857972425\",\n" + -// " \"skuId\": \"4399689235128\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--M/165;颜色--8746黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01itUX6u1F3tel1Fmpe_!!2186420432.jpg\",\n" + -// " \"quantity\": \"285\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:90381765;1627207:12140713\",\n" + -// " \"skuId\": \"4385699727338\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--L/170;颜色--8746黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01itUX6u1F3tel1Fmpe_!!2186420432.jpg\",\n" + -// " \"quantity\": \"268\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:29945579;1627207:12140713\",\n" + -// " \"skuId\": \"4385699727284\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XL/175;颜色--8746黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01itUX6u1F3tel1Fmpe_!!2186420432.jpg\",\n" + -// " \"quantity\": \"242\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:142137793;1627207:12140713\",\n" + -// " \"skuId\": \"4385699727266\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXL/180;颜色--8746黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01itUX6u1F3tel1Fmpe_!!2186420432.jpg\",\n" + -// " \"quantity\": \"271\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148156;1627207:12140713\",\n" + -// " \"skuId\": \"4385699727302\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXL/185;颜色--8746黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01itUX6u1F3tel1Fmpe_!!2186420432.jpg\",\n" + -// " \"quantity\": \"273\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148157;1627207:12140713\",\n" + -// " \"skuId\": \"4385699727320\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXXL/190;颜色--8746黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01itUX6u1F3tel1Fmpe_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:382516134;1627207:12140713\",\n" + -// " \"skuId\": \"4399689235102\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--M/165;颜色--8746灰色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i2/2186420432/O1CN01fDQaic1F3tejq1sun_!!2186420432.jpg\",\n" + -// " \"quantity\": \"280\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:90381765;1627207:12141734\",\n" + -// " \"skuId\": \"4385699727339\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--L/170;颜色--8746灰色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i2/2186420432/O1CN01fDQaic1F3tejq1sun_!!2186420432.jpg\",\n" + -// " \"quantity\": \"249\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:29945579;1627207:12141734\",\n" + -// " \"skuId\": \"4385699727285\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XL/175;颜色--8746灰色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i2/2186420432/O1CN01fDQaic1F3tejq1sun_!!2186420432.jpg\",\n" + -// " \"quantity\": \"251\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:142137793;1627207:12141734\",\n" + -// " \"skuId\": \"4385699727267\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXL/180;颜色--8746灰色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i2/2186420432/O1CN01fDQaic1F3tejq1sun_!!2186420432.jpg\",\n" + -// " \"quantity\": \"271\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148156;1627207:12141734\",\n" + -// " \"skuId\": \"4385699727303\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXL/185;颜色--8746灰色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i2/2186420432/O1CN01fDQaic1F3tejq1sun_!!2186420432.jpg\",\n" + -// " \"quantity\": \"283\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148157;1627207:12141734\",\n" + -// " \"skuId\": \"4385699727321\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXXL/190;颜色--8746灰色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i2/2186420432/O1CN01fDQaic1F3tejq1sun_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:382516134;1627207:12141734\",\n" + -// " \"skuId\": \"4399689235103\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--M/165;颜色--8746红色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i1/2186420432/O1CN01q2B0Jw1F3tefH12Td_!!2186420432.jpg\",\n" + -// " \"quantity\": \"296\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:90381765;1627207:46528857\",\n" + -// " \"skuId\": \"4385699727346\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--L/170;颜色--8746红色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i1/2186420432/O1CN01q2B0Jw1F3tefH12Td_!!2186420432.jpg\",\n" + -// " \"quantity\": \"282\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:29945579;1627207:46528857\",\n" + -// " \"skuId\": \"4385699727292\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XL/175;颜色--8746红色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i1/2186420432/O1CN01q2B0Jw1F3tefH12Td_!!2186420432.jpg\",\n" + -// " \"quantity\": \"282\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:142137793;1627207:46528857\",\n" + -// " \"skuId\": \"4385699727274\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXL/180;颜色--8746红色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i1/2186420432/O1CN01q2B0Jw1F3tefH12Td_!!2186420432.jpg\",\n" + -// " \"quantity\": \"284\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148156;1627207:46528857\",\n" + -// " \"skuId\": \"4385699727310\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXL/185;颜色--8746红色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i1/2186420432/O1CN01q2B0Jw1F3tefH12Td_!!2186420432.jpg\",\n" + -// " \"quantity\": \"291\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148157;1627207:46528857\",\n" + -// " \"skuId\": \"4385699727328\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXXL/190;颜色--8746红色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i1/2186420432/O1CN01q2B0Jw1F3tefH12Td_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:382516134;1627207:46528857\",\n" + -// " \"skuId\": \"4399689235122\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--M/165;颜色--8747白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01uzdqNO1F3tejq3hDx_!!2186420432.jpg\",\n" + -// " \"quantity\": \"296\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:90381765;1627207:1006078454\",\n" + -// " \"skuId\": \"4385699727336\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--L/170;颜色--8747白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01uzdqNO1F3tejq3hDx_!!2186420432.jpg\",\n" + -// " \"quantity\": \"293\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:29945579;1627207:1006078454\",\n" + -// " \"skuId\": \"4385699727282\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XL/175;颜色--8747白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01uzdqNO1F3tejq3hDx_!!2186420432.jpg\",\n" + -// " \"quantity\": \"289\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:142137793;1627207:1006078454\",\n" + -// " \"skuId\": \"4385699727264\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXL/180;颜色--8747白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01uzdqNO1F3tejq3hDx_!!2186420432.jpg\",\n" + -// " \"quantity\": \"293\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148156;1627207:1006078454\",\n" + -// " \"skuId\": \"4385699727300\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXL/185;颜色--8747白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01uzdqNO1F3tejq3hDx_!!2186420432.jpg\",\n" + -// " \"quantity\": \"295\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148157;1627207:1006078454\",\n" + -// " \"skuId\": \"4385699727318\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXXL/190;颜色--8747白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01uzdqNO1F3tejq3hDx_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:382516134;1627207:1006078454\",\n" + -// " \"skuId\": \"4399689235100\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--M/165;颜色--8747灰色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01vgf9F01F3teoFeRa8_!!2186420432.jpg\",\n" + -// " \"quantity\": \"290\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:90381765;1627207:1128036630\",\n" + -// " \"skuId\": \"4385699727337\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--L/170;颜色--8747灰色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01vgf9F01F3teoFeRa8_!!2186420432.jpg\",\n" + -// " \"quantity\": \"274\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:29945579;1627207:1128036630\",\n" + -// " \"skuId\": \"4385699727283\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XL/175;颜色--8747灰色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01vgf9F01F3teoFeRa8_!!2186420432.jpg\",\n" + -// " \"quantity\": \"262\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:142137793;1627207:1128036630\",\n" + -// " \"skuId\": \"4385699727265\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXL/180;颜色--8747灰色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01vgf9F01F3teoFeRa8_!!2186420432.jpg\",\n" + -// " \"quantity\": \"277\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148156;1627207:1128036630\",\n" + -// " \"skuId\": \"4385699727301\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXL/185;颜色--8747灰色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01vgf9F01F3teoFeRa8_!!2186420432.jpg\",\n" + -// " \"quantity\": \"283\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148157;1627207:1128036630\",\n" + -// " \"skuId\": \"4385699727319\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXXL/190;颜色--8747灰色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01vgf9F01F3teoFeRa8_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:382516134;1627207:1128036630\",\n" + -// " \"skuId\": \"4399689235101\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--M/165;颜色--8747黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01bfyX9t1F3tel1GBqh_!!2186420432.jpg\",\n" + -// " \"quantity\": \"283\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:90381765;1627207:601822774\",\n" + -// " \"skuId\": \"4385699727348\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--L/170;颜色--8747黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01bfyX9t1F3tel1GBqh_!!2186420432.jpg\",\n" + -// " \"quantity\": \"271\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:29945579;1627207:601822774\",\n" + -// " \"skuId\": \"4385699727294\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XL/175;颜色--8747黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01bfyX9t1F3tel1GBqh_!!2186420432.jpg\",\n" + -// " \"quantity\": \"266\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:142137793;1627207:601822774\",\n" + -// " \"skuId\": \"4385699727276\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXL/180;颜色--8747黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01bfyX9t1F3tel1GBqh_!!2186420432.jpg\",\n" + -// " \"quantity\": \"279\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148156;1627207:601822774\",\n" + -// " \"skuId\": \"4385699727312\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXL/185;颜色--8747黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01bfyX9t1F3tel1GBqh_!!2186420432.jpg\",\n" + -// " \"quantity\": \"280\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148157;1627207:601822774\",\n" + -// " \"skuId\": \"4385699727330\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXXL/190;颜色--8747黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01bfyX9t1F3tel1GBqh_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:382516134;1627207:601822774\",\n" + -// " \"skuId\": \"4399689235124\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--M/165;颜色--8747红色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i2/2186420432/O1CN01WNYq4Q1F3temJjYco_!!2186420432.jpg\",\n" + -// " \"quantity\": \"292\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:90381765;1627207:1458911201\",\n" + -// " \"skuId\": \"4385699727343\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--L/170;颜色--8747红色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i2/2186420432/O1CN01WNYq4Q1F3temJjYco_!!2186420432.jpg\",\n" + -// " \"quantity\": \"280\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:29945579;1627207:1458911201\",\n" + -// " \"skuId\": \"4385699727289\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XL/175;颜色--8747红色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i2/2186420432/O1CN01WNYq4Q1F3temJjYco_!!2186420432.jpg\",\n" + -// " \"quantity\": \"281\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:142137793;1627207:1458911201\",\n" + -// " \"skuId\": \"4385699727271\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXL/180;颜色--8747红色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i2/2186420432/O1CN01WNYq4Q1F3temJjYco_!!2186420432.jpg\",\n" + -// " \"quantity\": \"290\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148156;1627207:1458911201\",\n" + -// " \"skuId\": \"4385699727307\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXL/185;颜色--8747红色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i2/2186420432/O1CN01WNYq4Q1F3temJjYco_!!2186420432.jpg\",\n" + -// " \"quantity\": \"290\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148157;1627207:1458911201\",\n" + -// " \"skuId\": \"4385699727325\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXXL/190;颜色--8747红色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i2/2186420432/O1CN01WNYq4Q1F3temJjYco_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:382516134;1627207:1458911201\",\n" + -// " \"skuId\": \"4399689235108\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--M/165;颜色--8749白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01vv7Yai1F3temJiHe6_!!2186420432.jpg\",\n" + -// " \"quantity\": \"294\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:90381765;1627207:19002444\",\n" + -// " \"skuId\": \"4385699727345\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--L/170;颜色--8749白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01vv7Yai1F3temJiHe6_!!2186420432.jpg\",\n" + -// " \"quantity\": \"288\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:29945579;1627207:19002444\",\n" + -// " \"skuId\": \"4385699727291\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XL/175;颜色--8749白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01vv7Yai1F3temJiHe6_!!2186420432.jpg\",\n" + -// " \"quantity\": \"286\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:142137793;1627207:19002444\",\n" + -// " \"skuId\": \"4385699727273\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXL/180;颜色--8749白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01vv7Yai1F3temJiHe6_!!2186420432.jpg\",\n" + -// " \"quantity\": \"291\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148156;1627207:19002444\",\n" + -// " \"skuId\": \"4385699727309\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXL/185;颜色--8749白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01vv7Yai1F3temJiHe6_!!2186420432.jpg\",\n" + -// " \"quantity\": \"296\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148157;1627207:19002444\",\n" + -// " \"skuId\": \"4385699727327\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXXL/190;颜色--8749白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01vv7Yai1F3temJiHe6_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:382516134;1627207:19002444\",\n" + -// " \"skuId\": \"4399689235112\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--M/165;颜色--8749黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01AhcfiC1F3teqb9Amj_!!2186420432.jpg\",\n" + -// " \"quantity\": \"288\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:90381765;1627207:17528826\",\n" + -// " \"skuId\": \"4385699727344\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--L/170;颜色--8749黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01AhcfiC1F3teqb9Amj_!!2186420432.jpg\",\n" + -// " \"quantity\": \"275\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:29945579;1627207:17528826\",\n" + -// " \"skuId\": \"4385699727290\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XL/175;颜色--8749黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01AhcfiC1F3teqb9Amj_!!2186420432.jpg\",\n" + -// " \"quantity\": \"263\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:142137793;1627207:17528826\",\n" + -// " \"skuId\": \"4385699727272\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXL/180;颜色--8749黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01AhcfiC1F3teqb9Amj_!!2186420432.jpg\",\n" + -// " \"quantity\": \"283\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148156;1627207:17528826\",\n" + -// " \"skuId\": \"4385699727308\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXL/185;颜色--8749黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01AhcfiC1F3teqb9Amj_!!2186420432.jpg\",\n" + -// " \"quantity\": \"289\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148157;1627207:17528826\",\n" + -// " \"skuId\": \"4385699727326\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXXL/190;颜色--8749黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01AhcfiC1F3teqb9Amj_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:382516134;1627207:17528826\",\n" + -// " \"skuId\": \"4399689235111\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--M/165;颜色--8749红色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01Bo1ecF1F3tefH2NjT_!!2186420432.jpg\",\n" + -// " \"quantity\": \"299\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:90381765;1627207:4800839\",\n" + -// " \"skuId\": \"4385699727347\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--L/170;颜色--8749红色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01Bo1ecF1F3tefH2NjT_!!2186420432.jpg\",\n" + -// " \"quantity\": \"291\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:29945579;1627207:4800839\",\n" + -// " \"skuId\": \"4385699727293\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XL/175;颜色--8749红色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01Bo1ecF1F3tefH2NjT_!!2186420432.jpg\",\n" + -// " \"quantity\": \"277\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:142137793;1627207:4800839\",\n" + -// " \"skuId\": \"4385699727275\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXL/180;颜色--8749红色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01Bo1ecF1F3tefH2NjT_!!2186420432.jpg\",\n" + -// " \"quantity\": \"292\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148156;1627207:4800839\",\n" + -// " \"skuId\": \"4385699727311\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXL/185;颜色--8749红色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01Bo1ecF1F3tefH2NjT_!!2186420432.jpg\",\n" + -// " \"quantity\": \"294\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148157;1627207:4800839\",\n" + -// " \"skuId\": \"4385699727329\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXXL/190;颜色--8749红色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01Bo1ecF1F3tefH2NjT_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:382516134;1627207:4800839\",\n" + -// " \"skuId\": \"4399689235123\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--M/165;颜色--8749灰色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01e3aZQb1F3tel1HKal_!!2186420432.jpg\",\n" + -// " \"quantity\": \"293\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:90381765;1627207:1448571755\",\n" + -// " \"skuId\": \"4385699727342\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--L/170;颜色--8749灰色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01e3aZQb1F3tel1HKal_!!2186420432.jpg\",\n" + -// " \"quantity\": \"276\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:29945579;1627207:1448571755\",\n" + -// " \"skuId\": \"4385699727288\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XL/175;颜色--8749灰色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01e3aZQb1F3tel1HKal_!!2186420432.jpg\",\n" + -// " \"quantity\": \"262\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:142137793;1627207:1448571755\",\n" + -// " \"skuId\": \"4385699727270\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXL/180;颜色--8749灰色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01e3aZQb1F3tel1HKal_!!2186420432.jpg\",\n" + -// " \"quantity\": \"272\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148156;1627207:1448571755\",\n" + -// " \"skuId\": \"4385699727306\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXL/185;颜色--8749灰色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01e3aZQb1F3tel1HKal_!!2186420432.jpg\",\n" + -// " \"quantity\": \"288\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148157;1627207:1448571755\",\n" + -// " \"skuId\": \"4385699727324\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXXL/190;颜色--8749灰色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01e3aZQb1F3tel1HKal_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:382516134;1627207:1448571755\",\n" + -// " \"skuId\": \"4399689235107\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--M/165;颜色--20172白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i2/2186420432/O1CN01GMg6zg1F3tejq4dZJ_!!2186420432.jpg\",\n" + -// " \"quantity\": \"289\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:90381765;1627207:763576268\",\n" + -// " \"skuId\": \"4385699727350\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--L/170;颜色--20172白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i2/2186420432/O1CN01GMg6zg1F3tejq4dZJ_!!2186420432.jpg\",\n" + -// " \"quantity\": \"282\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:29945579;1627207:763576268\",\n" + -// " \"skuId\": \"4385699727296\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XL/175;颜色--20172白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i2/2186420432/O1CN01GMg6zg1F3tejq4dZJ_!!2186420432.jpg\",\n" + -// " \"quantity\": \"265\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:142137793;1627207:763576268\",\n" + -// " \"skuId\": \"4385699727278\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXL/180;颜色--20172白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i2/2186420432/O1CN01GMg6zg1F3tejq4dZJ_!!2186420432.jpg\",\n" + -// " \"quantity\": \"285\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148156;1627207:763576268\",\n" + -// " \"skuId\": \"4385699727314\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXL/185;颜色--20172白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i2/2186420432/O1CN01GMg6zg1F3tejq4dZJ_!!2186420432.jpg\",\n" + -// " \"quantity\": \"296\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148157;1627207:763576268\",\n" + -// " \"skuId\": \"4385699727332\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXXL/190;颜色--20172白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i2/2186420432/O1CN01GMg6zg1F3tejq4dZJ_!!2186420432.jpg\",\n" + -// " \"quantity\": \"296\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:382516134;1627207:763576268\",\n" + -// " \"skuId\": \"4399689235126\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--M/165;颜色--20172黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01QgOhWA1F3teko49fy_!!2186420432.jpg\",\n" + -// " \"quantity\": \"284\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:90381765;1627207:1280958075\",\n" + -// " \"skuId\": \"4385699727340\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--L/170;颜色--20172黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01QgOhWA1F3teko49fy_!!2186420432.jpg\",\n" + -// " \"quantity\": \"272\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:29945579;1627207:1280958075\",\n" + -// " \"skuId\": \"4385699727286\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XL/175;颜色--20172黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01QgOhWA1F3teko49fy_!!2186420432.jpg\",\n" + -// " \"quantity\": \"257\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:142137793;1627207:1280958075\",\n" + -// " \"skuId\": \"4385699727268\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXL/180;颜色--20172黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01QgOhWA1F3teko49fy_!!2186420432.jpg\",\n" + -// " \"quantity\": \"265\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148156;1627207:1280958075\",\n" + -// " \"skuId\": \"4385699727304\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXL/185;颜色--20172黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01QgOhWA1F3teko49fy_!!2186420432.jpg\",\n" + -// " \"quantity\": \"279\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148157;1627207:1280958075\",\n" + -// " \"skuId\": \"4385699727322\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXXL/190;颜色--20172黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01QgOhWA1F3teko49fy_!!2186420432.jpg\",\n" + -// " \"quantity\": \"282\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:382516134;1627207:1280958075\",\n" + -// " \"skuId\": \"4399689235104\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--M/165;颜色--20173黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01SpgheF1F3tembDiZu_!!2186420432.jpg\",\n" + -// " \"quantity\": \"298\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:90381765;1627207:929276579\",\n" + -// " \"skuId\": \"4385699727352\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--L/170;颜色--20173黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01SpgheF1F3tembDiZu_!!2186420432.jpg\",\n" + -// " \"quantity\": \"294\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:29945579;1627207:929276579\",\n" + -// " \"skuId\": \"4385699727298\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XL/175;颜色--20173黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01SpgheF1F3tembDiZu_!!2186420432.jpg\",\n" + -// " \"quantity\": \"286\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:142137793;1627207:929276579\",\n" + -// " \"skuId\": \"4385699727280\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXL/180;颜色--20173黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01SpgheF1F3tembDiZu_!!2186420432.jpg\",\n" + -// " \"quantity\": \"293\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148156;1627207:929276579\",\n" + -// " \"skuId\": \"4385699727316\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXL/185;颜色--20173黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01SpgheF1F3tembDiZu_!!2186420432.jpg\",\n" + -// " \"quantity\": \"295\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148157;1627207:929276579\",\n" + -// " \"skuId\": \"4385699727334\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXXL/190;颜色--20173黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01SpgheF1F3tembDiZu_!!2186420432.jpg\",\n" + -// " \"quantity\": \"289\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:382516134;1627207:929276579\",\n" + -// " \"skuId\": \"4399689235129\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--M/165;颜色--20173白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01GyszJV1F3temJkpi7_!!2186420432.jpg\",\n" + -// " \"quantity\": \"298\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:90381765;1627207:763576267\",\n" + -// " \"skuId\": \"4385699727349\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--L/170;颜色--20173白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01GyszJV1F3temJkpi7_!!2186420432.jpg\",\n" + -// " \"quantity\": \"291\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:29945579;1627207:763576267\",\n" + -// " \"skuId\": \"4385699727295\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XL/175;颜色--20173白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01GyszJV1F3temJkpi7_!!2186420432.jpg\",\n" + -// " \"quantity\": \"297\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:142137793;1627207:763576267\",\n" + -// " \"skuId\": \"4385699727277\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXL/180;颜色--20173白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01GyszJV1F3temJkpi7_!!2186420432.jpg\",\n" + -// " \"quantity\": \"295\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148156;1627207:763576267\",\n" + -// " \"skuId\": \"4385699727313\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXL/185;颜色--20173白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01GyszJV1F3temJkpi7_!!2186420432.jpg\",\n" + -// " \"quantity\": \"297\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148157;1627207:763576267\",\n" + -// " \"skuId\": \"4385699727331\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXXL/190;颜色--20173白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01GyszJV1F3temJkpi7_!!2186420432.jpg\",\n" + -// " \"quantity\": \"298\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:382516134;1627207:763576267\",\n" + -// " \"skuId\": \"4399689235125\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--M/165;颜色--20183黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01tcZkiT1F3teq9h72L_!!2186420432.jpg\",\n" + -// " \"quantity\": \"299\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:90381765;1627207:933228980\",\n" + -// " \"skuId\": \"4385699727353\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--L/170;颜色--20183黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01tcZkiT1F3teq9h72L_!!2186420432.jpg\",\n" + -// " \"quantity\": \"296\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:29945579;1627207:933228980\",\n" + -// " \"skuId\": \"4385699727299\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XL/175;颜色--20183黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01tcZkiT1F3teq9h72L_!!2186420432.jpg\",\n" + -// " \"quantity\": \"293\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:142137793;1627207:933228980\",\n" + -// " \"skuId\": \"4385699727281\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXL/180;颜色--20183黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01tcZkiT1F3teq9h72L_!!2186420432.jpg\",\n" + -// " \"quantity\": \"296\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148156;1627207:933228980\",\n" + -// " \"skuId\": \"4385699727317\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXL/185;颜色--20183黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01tcZkiT1F3teq9h72L_!!2186420432.jpg\",\n" + -// " \"quantity\": \"295\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148157;1627207:933228980\",\n" + -// " \"skuId\": \"4385699727335\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXXL/190;颜色--20183黑色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01tcZkiT1F3teq9h72L_!!2186420432.jpg\",\n" + -// " \"quantity\": \"297\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:382516134;1627207:933228980\",\n" + -// " \"skuId\": \"4399689235130\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--M/165;颜色--20183白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01L5c2vQ1F3ten2JpBD_!!2186420432.jpg\",\n" + -// " \"quantity\": \"299\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:90381765;1627207:1323782889\",\n" + -// " \"skuId\": \"4385699727341\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--L/170;颜色--20183白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01L5c2vQ1F3ten2JpBD_!!2186420432.jpg\",\n" + -// " \"quantity\": \"297\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:29945579;1627207:1323782889\",\n" + -// " \"skuId\": \"4385699727287\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XL/175;颜色--20183白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01L5c2vQ1F3ten2JpBD_!!2186420432.jpg\",\n" + -// " \"quantity\": \"294\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:142137793;1627207:1323782889\",\n" + -// " \"skuId\": \"4385699727269\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXL/180;颜色--20183白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01L5c2vQ1F3ten2JpBD_!!2186420432.jpg\",\n" + -// " \"quantity\": \"297\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148156;1627207:1323782889\",\n" + -// " \"skuId\": \"4385699727305\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXL/185;颜色--20183白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01L5c2vQ1F3ten2JpBD_!!2186420432.jpg\",\n" + -// " \"quantity\": \"300\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148157;1627207:1323782889\",\n" + -// " \"skuId\": \"4385699727323\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXXL/190;颜色--20183白色\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01L5c2vQ1F3ten2JpBD_!!2186420432.jpg\",\n" + -// " \"quantity\": \"300\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:382516134;1627207:1323782889\",\n" + -// " \"skuId\": \"4399689235106\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--M/165;颜色--9736白色(加绒)\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i2/2186420432/O1CN01WwTjXP1F3tfEmBNRW_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:90381765;1627207:5917648689\",\n" + -// " \"skuId\": \"4239449153435\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--L/170;颜色--9736白色(加绒)\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i2/2186420432/O1CN01WwTjXP1F3tfEmBNRW_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:29945579;1627207:5917648689\",\n" + -// " \"skuId\": \"4239449153403\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XL/175;颜色--9736白色(加绒)\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i2/2186420432/O1CN01WwTjXP1F3tfEmBNRW_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:142137793;1627207:5917648689\",\n" + -// " \"skuId\": \"4239449153395\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXL/180;颜色--9736白色(加绒)\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i2/2186420432/O1CN01WwTjXP1F3tfEmBNRW_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148156;1627207:5917648689\",\n" + -// " \"skuId\": \"4239449153411\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXL/185;颜色--9736白色(加绒)\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i2/2186420432/O1CN01WwTjXP1F3tfEmBNRW_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148157;1627207:5917648689\",\n" + -// " \"skuId\": \"4239449153419\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXXL/190;颜色--9736白色(加绒)\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i2/2186420432/O1CN01WwTjXP1F3tfEmBNRW_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:382516134;1627207:5917648689\",\n" + -// " \"skuId\": \"4239449153427\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--M/165;颜色--9736黑色(加绒)\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN015CJAoD1F3tfFKRupm_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:90381765;1627207:5917648688\",\n" + -// " \"skuId\": \"4239449153434\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--L/170;颜色--9736黑色(加绒)\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN015CJAoD1F3tfFKRupm_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:29945579;1627207:5917648688\",\n" + -// " \"skuId\": \"4239449153402\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XL/175;颜色--9736黑色(加绒)\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN015CJAoD1F3tfFKRupm_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:142137793;1627207:5917648688\",\n" + -// " \"skuId\": \"4239449153394\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXL/180;颜色--9736黑色(加绒)\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN015CJAoD1F3tfFKRupm_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148156;1627207:5917648688\",\n" + -// " \"skuId\": \"4239449153410\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXL/185;颜色--9736黑色(加绒)\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN015CJAoD1F3tfFKRupm_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148157;1627207:5917648688\",\n" + -// " \"skuId\": \"4239449153418\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXXL/190;颜色--9736黑色(加绒)\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN015CJAoD1F3tfFKRupm_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:382516134;1627207:5917648688\",\n" + -// " \"skuId\": \"4239449153426\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--M/165;颜色--30172黑色(加绒)\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01BQQvKl1F3tfDrm8pO_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:90381765;1627207:681549886\",\n" + -// " \"skuId\": \"4239449153441\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--L/170;颜色--30172黑色(加绒)\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01BQQvKl1F3tfDrm8pO_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:29945579;1627207:681549886\",\n" + -// " \"skuId\": \"4239449153409\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XL/175;颜色--30172黑色(加绒)\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01BQQvKl1F3tfDrm8pO_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:142137793;1627207:681549886\",\n" + -// " \"skuId\": \"4239449153401\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXL/180;颜色--30172黑色(加绒)\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01BQQvKl1F3tfDrm8pO_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148156;1627207:681549886\",\n" + -// " \"skuId\": \"4239449153417\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXL/185;颜色--30172黑色(加绒)\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01BQQvKl1F3tfDrm8pO_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148157;1627207:681549886\",\n" + -// " \"skuId\": \"4239449153425\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXXL/190;颜色--30172黑色(加绒)\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01BQQvKl1F3tfDrm8pO_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:382516134;1627207:681549886\",\n" + -// " \"skuId\": \"4239449153433\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--M/165;颜色--30172白色(加绒)\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN013hm9361F3tfGI2jP2_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:90381765;1627207:681549882\",\n" + -// " \"skuId\": \"4239449153437\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--L/170;颜色--30172白色(加绒)\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN013hm9361F3tfGI2jP2_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:29945579;1627207:681549882\",\n" + -// " \"skuId\": \"4239449153405\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XL/175;颜色--30172白色(加绒)\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN013hm9361F3tfGI2jP2_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:142137793;1627207:681549882\",\n" + -// " \"skuId\": \"4239449153397\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXL/180;颜色--30172白色(加绒)\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN013hm9361F3tfGI2jP2_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148156;1627207:681549882\",\n" + -// " \"skuId\": \"4239449153413\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXL/185;颜色--30172白色(加绒)\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN013hm9361F3tfGI2jP2_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148157;1627207:681549882\",\n" + -// " \"skuId\": \"4239449153421\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXXL/190;颜色--30172白色(加绒)\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN013hm9361F3tfGI2jP2_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:382516134;1627207:681549882\",\n" + -// " \"skuId\": \"4239449153429\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--M/165;颜色--30173黑色(加绒)\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01PyYTro1F3tfBooLQL_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:90381765;1627207:681549884\",\n" + -// " \"skuId\": \"4239449153439\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--L/170;颜色--30173黑色(加绒)\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01PyYTro1F3tfBooLQL_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:29945579;1627207:681549884\",\n" + -// " \"skuId\": \"4239449153407\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XL/175;颜色--30173黑色(加绒)\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01PyYTro1F3tfBooLQL_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:142137793;1627207:681549884\",\n" + -// " \"skuId\": \"4239449153399\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXL/180;颜色--30173黑色(加绒)\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01PyYTro1F3tfBooLQL_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148156;1627207:681549884\",\n" + -// " \"skuId\": \"4239449153415\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXL/185;颜色--30173黑色(加绒)\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01PyYTro1F3tfBooLQL_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148157;1627207:681549884\",\n" + -// " \"skuId\": \"4239449153423\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXXL/190;颜色--30173黑色(加绒)\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01PyYTro1F3tfBooLQL_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:382516134;1627207:681549884\",\n" + -// " \"skuId\": \"4239449153431\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--M/165;颜色--30173白色(加绒)\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i1/2186420432/O1CN01W4CeVA1F3tfDrnLdp_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:90381765;1627207:681549881\",\n" + -// " \"skuId\": \"4239449153436\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--L/170;颜色--30173白色(加绒)\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i1/2186420432/O1CN01W4CeVA1F3tfDrnLdp_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:29945579;1627207:681549881\",\n" + -// " \"skuId\": \"4239449153404\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XL/175;颜色--30173白色(加绒)\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i1/2186420432/O1CN01W4CeVA1F3tfDrnLdp_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:142137793;1627207:681549881\",\n" + -// " \"skuId\": \"4239449153396\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXL/180;颜色--30173白色(加绒)\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i1/2186420432/O1CN01W4CeVA1F3tfDrnLdp_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148156;1627207:681549881\",\n" + -// " \"skuId\": \"4239449153412\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXL/185;颜色--30173白色(加绒)\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i1/2186420432/O1CN01W4CeVA1F3tfDrnLdp_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148157;1627207:681549881\",\n" + -// " \"skuId\": \"4239449153420\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXXL/190;颜色--30173白色(加绒)\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i1/2186420432/O1CN01W4CeVA1F3tfDrnLdp_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:382516134;1627207:681549881\",\n" + -// " \"skuId\": \"4239449153428\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--M/165;颜色--30183黑色(加绒)\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01Lcvmou1F3tfFpGQoe_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:90381765;1627207:681549885\",\n" + -// " \"skuId\": \"4239449153440\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--L/170;颜色--30183黑色(加绒)\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01Lcvmou1F3tfFpGQoe_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:29945579;1627207:681549885\",\n" + -// " \"skuId\": \"4239449153408\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XL/175;颜色--30183黑色(加绒)\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01Lcvmou1F3tfFpGQoe_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:142137793;1627207:681549885\",\n" + -// " \"skuId\": \"4239449153400\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXL/180;颜色--30183黑色(加绒)\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01Lcvmou1F3tfFpGQoe_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148156;1627207:681549885\",\n" + -// " \"skuId\": \"4239449153416\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXL/185;颜色--30183黑色(加绒)\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01Lcvmou1F3tfFpGQoe_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148157;1627207:681549885\",\n" + -// " \"skuId\": \"4239449153424\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXXL/190;颜色--30183黑色(加绒)\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01Lcvmou1F3tfFpGQoe_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:382516134;1627207:681549885\",\n" + -// " \"skuId\": \"4239449153432\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--M/165;颜色--30183白色(加绒)\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01j7rGQ71F3tf9Hs0RZ_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:90381765;1627207:681549883\",\n" + -// " \"skuId\": \"4239449153438\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--L/170;颜色--30183白色(加绒)\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01j7rGQ71F3tf9Hs0RZ_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:29945579;1627207:681549883\",\n" + -// " \"skuId\": \"4239449153406\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XL/175;颜色--30183白色(加绒)\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01j7rGQ71F3tf9Hs0RZ_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:142137793;1627207:681549883\",\n" + -// " \"skuId\": \"4239449153398\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXL/180;颜色--30183白色(加绒)\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01j7rGQ71F3tf9Hs0RZ_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148156;1627207:681549883\",\n" + -// " \"skuId\": \"4239449153414\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXL/185;颜色--30183白色(加绒)\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01j7rGQ71F3tf9Hs0RZ_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:366148157;1627207:681549883\",\n" + -// " \"skuId\": \"4239449153422\"\n" + -// " },\n" + -// " {\n" + -// " \"skuName\": \"尺码--XXXXL/190;颜色--30183白色(加绒)\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01j7rGQ71F3tf9Hs0RZ_!!2186420432.jpg\",\n" + -// " \"quantity\": \"0\",\n" + -// " \"price\": \"139\",\n" + -// " \"propPath\": \"20509:382516134;1627207:681549883\",\n" + -// " \"skuId\": \"4239449153430\"\n" + -// " }\n" + -// " ],\n" + -// " \"extraPrices\": [\n" + -// " {\n" + -// " \"sugProm\": \"false\",\n" + -// " \"priceTitle\": \"价格\",\n" + -// " \"showTitle\": \"true\",\n" + -// " \"lineThrough\": \"true\",\n" + -// " \"priceText\": \"218\"\n" + -// " }\n" + -// " ],\n" + -// " \"shopProm\": [\n" + -// " {\n" + -// " \"activityId\": \"0\",\n" + -// " \"iconText\": \"限购\",\n" + -// " \"title\": \"每人限购5件,此优惠限量5件,超出则该商品全部恢复非活动价\",\n" + -// " \"type\": \"4\",\n" + -// " \"content\": [\n" + -// " \"每人限购5件\",\n" + -// " \"此优惠限量5件,超出则该商品全部恢复非活动价\"\n" + -// " ]\n" + -// " },\n" + -// " {\n" + -// " \"activityId\": \"0\",\n" + -// " \"iconText\": \"积分\",\n" + -// " \"title\": \"购买可得69积分\",\n" + -// " \"type\": \"5\",\n" + -// " \"content\": [\n" + -// " \"购买可得69积分\"\n" + -// " ]\n" + -// " }\n" + -// " ],\n" + -// " \"descImgs\": [\n" + -// " \"//assets.alicdn.com/kissy/1.0.0/build/imglazyload/spaceball.gif\",\n" + -// " \"//img.alicdn.com/imgextra/i3/2186420432/O1CN011F3tYU1ZJqT5dvq_!!2186420432.jpg\",\n" + -// " \"//img.alicdn.com/imgextra/i1/2186420432/O1CN011F3tYSZ8E24Zysj_!!2186420432.jpg\",\n" + -// " \"//img.alicdn.com/imgextra/i3/2186420432/O1CN011F3tYUaVl138APj_!!2186420432.jpg\",\n" + -// " \"//img.alicdn.com/imgextra/i1/2186420432/O1CN011F3tYNZWgVNdCdA_!!2186420432.jpg\",\n" + -// " \"//img.alicdn.com/imgextra/i4/2186420432/O1CN011F3tYU6dEbFsRun_!!2186420432.jpg\",\n" + -// " \"//img.alicdn.com/imgextra/i3/2186420432/O1CN011F3tYS94MfE4qia_!!2186420432.jpg\",\n" + -// " \"//img.alicdn.com/imgextra/i3/2186420432/O1CN011F3tYTt6uE32P4g_!!2186420432.jpg\",\n" + -// " \"//img.alicdn.com/imgextra/i1/2186420432/O1CN011F3tYThDjgPoMth_!!2186420432.jpg\",\n" + -// " \"//img.alicdn.com/imgextra/i2/2186420432/O1CN011F3tYUyIN5Ihl2O_!!2186420432.jpg\",\n" + -// " \"//img.alicdn.com/imgextra/i1/2186420432/O1CN011F3tYT0hbt2EwqF_!!2186420432.jpg\",\n" + -// " \"//img.alicdn.com/imgextra/i3/2186420432/O1CN011F3tYThFPUyRZb1_!!2186420432.jpg\"\n" + -// " ],\n" + -// " \"delivery\": \"免运费\",\n" + -// " \"vagueSellCount\": \"5\",\n" + -// " \"images\": [\n" + -// " \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01nNqUzf1F3tgmDd8Gy_!!2186420432.jpg\",\n" + -// " \"//img.alicdn.com/imgextra/i2/2186420432/TB2Vqzvu2ImBKNjSZFlXXc43FXa_!!2186420432.jpg\",\n" + -// " \"//img.alicdn.com/imgextra/i2/2186420432/TB2Vm7nuGQoBKNjSZJnXXaw9VXa_!!2186420432.jpg\",\n" + -// " \"//img.alicdn.com/imgextra/i1/2186420432/TB2srDfu_qWBKNjSZFAXXanSpXa_!!2186420432.jpg\",\n" + -// " \"//img.alicdn.com/imgextra/i1/2186420432/TB2iDY0u_CWBKNjSZFtXXaC3FXa_!!2186420432.png\"\n" + -// " ],\n" + -// " \"favouriteCount\": \"7496\",\n" + -// " \"consumerProtection\": {\n" + -// " \"strength\": \"normal\",\n" + -// " \"serviceProtection\": {\n" + -// " \"basicService\": {\n" + -// " \"name\": \"基础保障\",\n" + -// " \"id\": \"204\",\n" + -// " \"services\": [\n" + -// " {\n" + -// " \"name\": \"材质保真\",\n" + -// " \"icon\": \"//img.alicdn.com/tfs/TB1_YjSjeL2gK0jSZPhXXahvXXa-54-54.png\",\n" + -// " \"serviceId\": \"3535\",\n" + -// " \"priority\": \"17000\",\n" + -// " \"desc\": [\n" + -// " \"卖家赠送材质保真险,提供免费第三方材质鉴定,材质不符享2倍赔付\"\n" + -// " ]\n" + -// " },\n" + -// " {\n" + -// " \"name\": \"假一赔四\",\n" + -// " \"icon\": \"//img.alicdn.com/tfs/TB1_YjSjeL2gK0jSZPhXXahvXXa-54-54.png\",\n" + -// " \"serviceId\": \"3839\",\n" + -// " \"priority\": \"12900\",\n" + -// " \"desc\": [\n" + -// " \"正品保障,假一赔四\"\n" + -// " ]\n" + -// " },\n" + -// " {\n" + -// " \"name\": \"退货运费险\",\n" + -// " \"icon\": \"//img.alicdn.com/tfs/TB1_YjSjeL2gK0jSZPhXXahvXXa-54-54.png\",\n" + -// " \"serviceId\": \"3852\",\n" + -// " \"priority\": \"6580\",\n" + -// " \"desc\": [\n" + -// " \"卖家投保退货运费险,负担一定金额退货运费(保单生效以下单显示为准)\"\n" + -// " ]\n" + -// " },\n" + -// " {\n" + -// " \"name\": \"上门取退\",\n" + -// " \"icon\": \"//img.alicdn.com/tfs/TB1_YjSjeL2gK0jSZPhXXahvXXa-54-54.png\",\n" + -// " \"serviceId\": \"4425\",\n" + -// " \"priority\": \"6555\",\n" + -// " \"desc\": [\n" + -// " \"预约上门取件,最快1小时上门,取件后极速退款到账\"\n" + -// " ]\n" + -// " },\n" + -// " {\n" + -// " \"name\": \"极速退款\",\n" + -// " \"icon\": \"//img.alicdn.com/tfs/TB1_YjSjeL2gK0jSZPhXXahvXXa-54-54.png\",\n" + -// " \"serviceId\": \"2966\",\n" + -// " \"priority\": \"6505\",\n" + -// " \"desc\": [\n" + -// " \"诚信用户在退货寄出后,享受极速退款到账\"\n" + -// " ]\n" + -// " },\n" + -// " {\n" + -// " \"name\": \"七天无理由退换\",\n" + -// " \"icon\": \"//img.alicdn.com/tfs/TB1_YjSjeL2gK0jSZPhXXahvXXa-54-54.png\",\n" + -// " \"serviceId\": \"6554\",\n" + -// " \"priority\": \"5130\",\n" + -// " \"desc\": [\n" + -// " \"满足相应条件(吊牌缺失、洗涤后不支持)时,消费者可申请“七天无理由退换货”\"\n" + -// " ]\n" + -// " }\n" + -// " ]\n" + -// " }\n" + -// " },\n" + -// " \"passValue\": \"none\",\n" + -// " \"params\": \"204:3534,3838,3851,5303,2979,6554\",\n" + -// " \"items\": [\n" + -// " {\n" + -// " \"serviceId\": \"3534\",\n" + -// " \"title\": \"材质保真\",\n" + -// " \"type\": \"0\",\n" + -// " \"priority\": \"17000\",\n" + -// " \"desc\": \"卖家赠送材质保真险,提供免费第三方材质鉴定,材质不符享2倍赔付\"\n" + -// " },\n" + -// " {\n" + -// " \"serviceId\": \"3838\",\n" + -// " \"title\": \"假一赔四\",\n" + -// " \"type\": \"0\",\n" + -// " \"priority\": \"12900\",\n" + -// " \"desc\": \"正品保障,假一赔四\"\n" + -// " },\n" + -// " {\n" + -// " \"serviceId\": \"3851\",\n" + -// " \"title\": \"退货运费险\",\n" + -// " \"type\": \"0\",\n" + -// " \"priority\": \"6580\",\n" + -// " \"desc\": \"卖家为您购买的商品投保退货运费险\"\n" + -// " },\n" + -// " {\n" + -// " \"serviceId\": \"5303\",\n" + -// " \"title\": \"上门取退\",\n" + -// " \"type\": \"0\",\n" + -// " \"priority\": \"6555\",\n" + -// " \"desc\": \"预约上门取件,最快1小时上门,取件后极速退款到账\"\n" + -// " },\n" + -// " {\n" + -// " \"serviceId\": \"2979\",\n" + -// " \"title\": \"极速退款\",\n" + -// " \"type\": \"0\",\n" + -// " \"priority\": \"6505\",\n" + -// " \"desc\": \"诚信用户在退货寄出后,享受极速退款到账\"\n" + -// " },\n" + -// " {\n" + -// " \"serviceId\": \"6554\",\n" + -// " \"title\": \"七天无理由退换\",\n" + -// " \"type\": \"0\",\n" + -// " \"priority\": \"5130\",\n" + -// " \"desc\": \"满足相应条件(吊牌缺失、洗涤后不支持)时,消费者可申请“七天无理由退换货”\"\n" + -// " }\n" + -// " ]\n" + -// " },\n" + -// " \"groupProps\": [\n" + -// " {\n" + -// " \"基本信息\": [\n" + -// " {\n" + -// " \"品牌\": \"PLAYBOY/花花公子\"\n" + -// " },\n" + -// " {\n" + -// " \"尺码\": \"M/165 L/170 XL/175 XXL/180 XXXL/185 XXXXL/190\"\n" + -// " },\n" + -// " {\n" + -// " \"面料分类\": \"针织布\"\n" + -// " },\n" + -// " {\n" + -// " \"花型图案\": \"字母数字\"\n" + -// " },\n" + -// " {\n" + -// " \"领型\": \"圆领\"\n" + -// " },\n" + -// " {\n" + -// " \"颜色\": \"8736黑色 8736白色 314黑色 314白色 314灰色 323白色 323黑色 8746白色 8746黑色 8746灰色 8746红色 8747白色 8747灰色 8747黑色 8747红色 8749白色 8749黑色 8749红色 8749灰色 20172白色 20172黑色 20173黑色 20173白色 20183黑色 20183白色 9736白色(加绒) 9736黑色(加绒) 30172黑色(加绒) 30172白色(加绒) 30173黑色(加绒) 30173白色(加绒) 30183黑色(加绒) 30183白色(加绒)\"\n" + -// " },\n" + -// " {\n" + -// " \"袖型\": \"常规\"\n" + -// " },\n" + -// " {\n" + -// " \"货号\": \"BM-DYZ8736\"\n" + -// " },\n" + -// " {\n" + -// " \"细分风格\": \"潮\"\n" + -// " },\n" + -// " {\n" + -// " \"基础风格\": \"青春流行\"\n" + -// " },\n" + -// " {\n" + -// " \"品牌类型\": \"国际大牌\"\n" + -// " },\n" + -// " {\n" + -// " \"适用季节\": \"春季\"\n" + -// " },\n" + -// " {\n" + -// " \"上市年份季节\": \"2018年秋季\"\n" + -// " },\n" + -// " {\n" + -// " \"袖长\": \"长袖\"\n" + -// " },\n" + -// " {\n" + -// " \"厚薄\": \"常规\"\n" + -// " },\n" + -// " {\n" + -// " \"适用场景\": \"日常\"\n" + -// " },\n" + -// " {\n" + -// " \"版型\": \"宽松\"\n" + -// " },\n" + -// " {\n" + -// " \"款式细节\": \"印花\"\n" + -// " },\n" + -// " {\n" + -// " \"服饰工艺\": \"免烫处理\"\n" + -// " },\n" + -// " {\n" + -// " \"适用对象\": \"青年\"\n" + -// " },\n" + -// " {\n" + -// " \"印花主题\": \"品牌LOGO\"\n" + -// " },\n" + -// " {\n" + -// " \"销售渠道类型\": \"纯电商(只在线上销售)\"\n" + -// " },\n" + -// " {\n" + -// " \"材质成分\": \"聚酯纤维95% 聚氨酯弹性纤维(氨纶)5%\"\n" + -// " }\n" + -// " ]\n" + -// " }\n" + -// " ],\n" + -// " \"url\": \"https://item.taobao.com/item.htm?id=576801983901\",\n" + -// " \"rootCategoryId\": \"30\",\n" + -// " \"commentCount\": \"2297\",\n" + -// " \"props\": [\n" + -// " {\n" + -// " \"values\": [\n" + -// " {\n" + -// " \"vid\": \"90381765\",\n" + -// " \"name\": \"M/165\"\n" + -// " },\n" + -// " {\n" + -// " \"vid\": \"29945579\",\n" + -// " \"name\": \"L/170\"\n" + -// " },\n" + -// " {\n" + -// " \"vid\": \"142137793\",\n" + -// " \"name\": \"XL/175\"\n" + -// " },\n" + -// " {\n" + -// " \"vid\": \"366148156\",\n" + -// " \"name\": \"XXL/180\"\n" + -// " },\n" + -// " {\n" + -// " \"vid\": \"366148157\",\n" + -// " \"name\": \"XXXL/185\"\n" + -// " },\n" + -// " {\n" + -// " \"vid\": \"382516134\",\n" + -// " \"name\": \"XXXXL/190\"\n" + -// " }\n" + -// " ],\n" + -// " \"name\": \"尺码\",\n" + -// " \"pid\": \"20509\"\n" + -// " },\n" + -// " {\n" + -// " \"values\": [\n" + -// " {\n" + -// " \"vid\": \"32820192\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i1/2186420432/TB2Sr1_uYorBKNjSZFjXXc_SpXa_!!2186420432.jpg\",\n" + -// " \"name\": \"8736黑色\"\n" + -// " },\n" + -// " {\n" + -// " \"vid\": \"79090471\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i1/2186420432/TB2lfaaqgZC2uNjSZFnXXaxZpXa_!!2186420432.jpg\",\n" + -// " \"name\": \"8736白色\"\n" + -// " },\n" + -// " {\n" + -// " \"vid\": \"23845275\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01fdLpgI1F3tbIS3moP_!!2186420432.jpg\",\n" + -// " \"name\": \"314黑色\"\n" + -// " },\n" + -// " {\n" + -// " \"vid\": \"23494589\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01uUywBQ1F3tbFErmep_!!2186420432.jpg\",\n" + -// " \"name\": \"314白色\"\n" + -// " },\n" + -// " {\n" + -// " \"vid\": \"16454927\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i1/2186420432/O1CN01IhNVhx1F3tbIPaKNl_!!2186420432.jpg\",\n" + -// " \"name\": \"314灰色\"\n" + -// " },\n" + -// " {\n" + -// " \"vid\": \"23849322\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i1/2186420432/O1CN01iaAKvz1F3tbHjkujr_!!2186420432.jpg\",\n" + -// " \"name\": \"323白色\"\n" + -// " },\n" + -// " {\n" + -// " \"vid\": \"23847208\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i2/2186420432/O1CN01xX0wLw1F3tbHKh9CJ_!!2186420432.jpg\",\n" + -// " \"name\": \"323黑色\"\n" + -// " },\n" + -// " {\n" + -// " \"vid\": \"857972425\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i1/2186420432/O1CN01pkOR171F3temrMkNz_!!2186420432.jpg\",\n" + -// " \"name\": \"8746白色\"\n" + -// " },\n" + -// " {\n" + -// " \"vid\": \"12140713\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01itUX6u1F3tel1Fmpe_!!2186420432.jpg\",\n" + -// " \"name\": \"8746黑色\"\n" + -// " },\n" + -// " {\n" + -// " \"vid\": \"12141734\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i2/2186420432/O1CN01fDQaic1F3tejq1sun_!!2186420432.jpg\",\n" + -// " \"name\": \"8746灰色\"\n" + -// " },\n" + -// " {\n" + -// " \"vid\": \"46528857\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i1/2186420432/O1CN01q2B0Jw1F3tefH12Td_!!2186420432.jpg\",\n" + -// " \"name\": \"8746红色\"\n" + -// " },\n" + -// " {\n" + -// " \"vid\": \"1006078454\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01uzdqNO1F3tejq3hDx_!!2186420432.jpg\",\n" + -// " \"name\": \"8747白色\"\n" + -// " },\n" + -// " {\n" + -// " \"vid\": \"1128036630\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01vgf9F01F3teoFeRa8_!!2186420432.jpg\",\n" + -// " \"name\": \"8747灰色\"\n" + -// " },\n" + -// " {\n" + -// " \"vid\": \"601822774\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01bfyX9t1F3tel1GBqh_!!2186420432.jpg\",\n" + -// " \"name\": \"8747黑色\"\n" + -// " },\n" + -// " {\n" + -// " \"vid\": \"1458911201\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i2/2186420432/O1CN01WNYq4Q1F3temJjYco_!!2186420432.jpg\",\n" + -// " \"name\": \"8747红色\"\n" + -// " },\n" + -// " {\n" + -// " \"vid\": \"19002444\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01vv7Yai1F3temJiHe6_!!2186420432.jpg\",\n" + -// " \"name\": \"8749白色\"\n" + -// " },\n" + -// " {\n" + -// " \"vid\": \"17528826\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01AhcfiC1F3teqb9Amj_!!2186420432.jpg\",\n" + -// " \"name\": \"8749黑色\"\n" + -// " },\n" + -// " {\n" + -// " \"vid\": \"4800839\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01Bo1ecF1F3tefH2NjT_!!2186420432.jpg\",\n" + -// " \"name\": \"8749红色\"\n" + -// " },\n" + -// " {\n" + -// " \"vid\": \"1448571755\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01e3aZQb1F3tel1HKal_!!2186420432.jpg\",\n" + -// " \"name\": \"8749灰色\"\n" + -// " },\n" + -// " {\n" + -// " \"vid\": \"763576268\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i2/2186420432/O1CN01GMg6zg1F3tejq4dZJ_!!2186420432.jpg\",\n" + -// " \"name\": \"20172白色\"\n" + -// " },\n" + -// " {\n" + -// " \"vid\": \"1280958075\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01QgOhWA1F3teko49fy_!!2186420432.jpg\",\n" + -// " \"name\": \"20172黑色\"\n" + -// " },\n" + -// " {\n" + -// " \"vid\": \"929276579\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01SpgheF1F3tembDiZu_!!2186420432.jpg\",\n" + -// " \"name\": \"20173黑色\"\n" + -// " },\n" + -// " {\n" + -// " \"vid\": \"763576267\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01GyszJV1F3temJkpi7_!!2186420432.jpg\",\n" + -// " \"name\": \"20173白色\"\n" + -// " },\n" + -// " {\n" + -// " \"vid\": \"933228980\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01tcZkiT1F3teq9h72L_!!2186420432.jpg\",\n" + -// " \"name\": \"20183黑色\"\n" + -// " },\n" + -// " {\n" + -// " \"vid\": \"1323782889\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01L5c2vQ1F3ten2JpBD_!!2186420432.jpg\",\n" + -// " \"name\": \"20183白色\"\n" + -// " },\n" + -// " {\n" + -// " \"vid\": \"5917648689\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i2/2186420432/O1CN01WwTjXP1F3tfEmBNRW_!!2186420432.jpg\",\n" + -// " \"name\": \"9736白色(加绒)\"\n" + -// " },\n" + -// " {\n" + -// " \"vid\": \"5917648688\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN015CJAoD1F3tfFKRupm_!!2186420432.jpg\",\n" + -// " \"name\": \"9736黑色(加绒)\"\n" + -// " },\n" + -// " {\n" + -// " \"vid\": \"681549886\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01BQQvKl1F3tfDrm8pO_!!2186420432.jpg\",\n" + -// " \"name\": \"30172黑色(加绒)\"\n" + -// " },\n" + -// " {\n" + -// " \"vid\": \"681549882\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN013hm9361F3tfGI2jP2_!!2186420432.jpg\",\n" + -// " \"name\": \"30172白色(加绒)\"\n" + -// " },\n" + -// " {\n" + -// " \"vid\": \"681549884\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01PyYTro1F3tfBooLQL_!!2186420432.jpg\",\n" + -// " \"name\": \"30173黑色(加绒)\"\n" + -// " },\n" + -// " {\n" + -// " \"vid\": \"681549881\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i1/2186420432/O1CN01W4CeVA1F3tfDrnLdp_!!2186420432.jpg\",\n" + -// " \"name\": \"30173白色(加绒)\"\n" + -// " },\n" + -// " {\n" + -// " \"vid\": \"681549885\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i4/2186420432/O1CN01Lcvmou1F3tfFpGQoe_!!2186420432.jpg\",\n" + -// " \"name\": \"30183黑色(加绒)\"\n" + -// " },\n" + -// " {\n" + -// " \"vid\": \"681549883\",\n" + -// " \"image\": \"//img.alicdn.com/imgextra/i3/2186420432/O1CN01j7rGQ71F3tf9Hs0RZ_!!2186420432.jpg\",\n" + -// " \"name\": \"30183白色(加绒)\"\n" + -// " }\n" + -// " ],\n" + -// " \"name\": \"颜色\",\n" + -// " \"pid\": \"1627207\"\n" + -// " }\n" + -// " ],\n" + -// " \"itemId\": \"576801983901\",\n" + -// " \"transmitPrice\": {\n" + -// " \"sugProm\": \"false\",\n" + -// " \"priceText\": \"139\"\n" + -// " },\n" + -// " \"brandId\": \"29510\",\n" + -// " \"installment\": {\n" + -// " \"period\": [\n" + -// " {\n" + -// " \"count\": \"3\",\n" + -// " \"couponPrice\": \"0\",\n" + -// " \"ratio\": \"0.023\"\n" + -// " },\n" + -// " {\n" + -// " \"count\": \"6\",\n" + -// " \"couponPrice\": \"0\",\n" + -// " \"ratio\": \"0.045\"\n" + -// " },\n" + -// " {\n" + -// " \"count\": \"12\",\n" + -// " \"couponPrice\": \"0\",\n" + -// " \"ratio\": \"0.075\"\n" + -// " }\n" + -// " ],\n" + -// " \"enable\": \"true\",\n" + -// " \"title\": \"花呗分期(可选)\"\n" + -// " },\n" + -// " \"sellCount\": \"5\",\n" + -// " \"location\": \"浙江嘉兴\",\n" + -// " \"priceRange\": \"139\",\n" + -// " \"categoryId\": \"50000436\",\n" + -// " \"status\": \"\",\n" + -// " \"desc\": \"

\"\n" + -// " }\n" + -// " }\n" + -// "}"; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreCartServiceImpl.java b/crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreCartServiceImpl.java deleted file mode 100644 index 7230b93b..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreCartServiceImpl.java +++ /dev/null @@ -1,619 +0,0 @@ -package com.zbkj.crmeb.store.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.common.CommonPage; -import com.common.MyRecord; -import com.common.PageParamRequest; -import com.constants.Constants; -import com.exception.CrmebException; -import com.github.pagehelper.Page; -import com.github.pagehelper.PageHelper; -import com.github.pagehelper.PageInfo; -import com.zbkj.crmeb.bargain.model.StoreBargain; -import com.zbkj.crmeb.combination.model.StoreCombination; -import com.zbkj.crmeb.front.request.CartNumRequest; -import com.zbkj.crmeb.front.request.CartResetRequest; -import com.zbkj.crmeb.front.response.CartInfoResponse; -import com.zbkj.crmeb.seckill.model.StoreSeckill; -import com.zbkj.crmeb.store.dao.StoreCartDao; -import com.zbkj.crmeb.store.model.StoreCart; -import com.zbkj.crmeb.store.model.StoreProduct; -import com.zbkj.crmeb.store.model.StoreProductAttrValue; -import com.zbkj.crmeb.store.response.StoreCartResponse; -import com.zbkj.crmeb.store.response.StoreProductCartProductInfoResponse; -import com.zbkj.crmeb.store.response.StoreProductResponse; -import com.zbkj.crmeb.store.service.StoreCartService; -import com.zbkj.crmeb.store.service.StoreProductAttrValueService; -import com.zbkj.crmeb.store.service.StoreProductService; -import com.zbkj.crmeb.store.utilService.OrderUtils; -import com.zbkj.crmeb.system.service.SystemConfigService; -import com.zbkj.crmeb.user.model.User; -import com.zbkj.crmeb.user.model.UserLevel; -import com.zbkj.crmeb.user.service.UserLevelService; -import com.zbkj.crmeb.user.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.math.RoundingMode; -import java.util.*; -import java.util.stream.Collectors; - -/** - * StoreCartServiceImpl 接口实现 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 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 SystemConfigService systemConfigService; - - @Autowired - private UserLevelService userLevelService; - - @Autowired - private OrderUtils orderUtils; - - /** - * 列表 - * @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<>()); - } - - 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()); - response.add(cartInfoResponse); - } - return CommonPage.copyPageInfo(page, response); - } - - /** - * 根据用户id和购物车id查询 - * @param userId 用户id - * @param cartIds 购物车id集合 - * @param isNew 是否立即购买 - * @return 购物车列表 - */ - @Override - public List getListByUserIdAndCartIds(Integer userId, List cartIds,Boolean isNew) { - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.in(StoreCart::getId,cartIds); - lambdaQueryWrapper.eq(StoreCart::getUid, userId); -// lambdaQueryWrapper.eq(StoreCart::getIsNew, isNew); - lambdaQueryWrapper.orderByDesc(StoreCart::getCreateTime); - List storeCarts = dao.selectList(lambdaQueryWrapper); - if (CollUtil.isEmpty(storeCarts)) { - throw new CrmebException("购物车信息不存在"); - } - - List response = new ArrayList<>(); - - for (StoreCart storeCart : storeCarts) { - List productAttrValues = - storeProductAttrValueService.getListByProductIdAndAttrId( - storeCart.getProductId(), - storeCart.getProductAttrUnique(), - Constants.PRODUCT_TYPE_NORMAL); - for (StoreProductAttrValue productAttrValue : productAttrValues) { - StoreCartResponse storeCartResponse = new StoreCartResponse(); - BeanUtils.copyProperties(storeCart, storeCartResponse); - StoreProductResponse product = storeProductService.getByProductId(productAttrValue.getProductId()); - StoreProductCartProductInfoResponse p = new StoreProductCartProductInfoResponse(); - BeanUtils.copyProperties(product, p); - p.setAttrInfo(productAttrValue); - storeCartResponse.setProductInfo(p); - storeCartResponse.setTruePrice(productAttrValue.getPrice()); - storeCartResponse.setVipTruePrice(setVipPrice(productAttrValue.getPrice(), userId,false)); - storeCartResponse.setTrueStock(product.getStock()); - storeCartResponse.setCostPrice(product.getCost()); - response.add(storeCartResponse); - } - } - return response; - } - - /** - * 根据用户id和购物车id集合获取购物车列表 - * @param userId 当前用户id - * @param cartIds 购物车id集合 - * @return 购物车列表集合 - */ - @Override - public List getList(Integer userId, List cartIds) { - LambdaQueryWrapper lqwStoreList = new LambdaQueryWrapper<>(); - lqwStoreList.eq(StoreCart::getUid,userId); - lqwStoreList.eq(StoreCart::getType, "product"); - lqwStoreList.in(StoreCart::getId,cartIds); - lqwStoreList.orderByDesc(StoreCart::getCreateTime); - return dao.selectList(lqwStoreList); - } - - /** - * 购物车数量 - * @param request 请求参数 - * @return Map - */ - @Override - public Map getUserCount(CartNumRequest request) { - Integer userId = userService.getUserIdException(); - Map map = new HashMap<>(); - int num; - if (request.getType().equals("total")) { - num = getUserCountByStatus(userId, request.getNumType()); - } else { - num = getUserSumByStatus(userId, request.getNumType()); - } - map.put("count", num); - return map; - } - - /** - * 新增商品至购物车 - * @param storeCart 购物车参数 - * @return 添加后的成功标识 - */ - @Override - public String saveCate(StoreCart storeCart) { - // 判断商品正常 - StoreProductResponse existProduct = storeProductService.getByProductId(storeCart.getProductId()); - if (ObjectUtil.isNull(existProduct) || existProduct.getIsDel()) throw new CrmebException("商品不存在"); - if (!existProduct.getIsShow()) throw new CrmebException("商品已下架"); - - /** - * ================================ - * 活动商品部分 - * ================================ - */ - - // 活动校验 - if (!storeCart.getIsNew()) { - if (ObjectUtil.isNotNull(storeCart.getSeckillId()) && storeCart.getSeckillId() > 0) { - throw new CrmebException("秒杀商品不能加入购物车"); - } - if (ObjectUtil.isNotNull(storeCart.getBargainId()) && storeCart.getBargainId() > 0) { - throw new CrmebException("砍价商品不能加入购物车"); - } - if (ObjectUtil.isNotNull(storeCart.getCombinationId()) && storeCart.getCombinationId() > 0) { - throw new CrmebException("拼团商品不能加入购物车"); - } - } - // 秒杀商品业务处理 - if(ObjectUtil.isNotNull(storeCart.getSeckillId()) && storeCart.getSeckillId() > 0 && storeCart.getIsNew()){ - storeCart.setCartNum(1); // 秒杀仅仅只能购买一件商品 - List cacheSecKillIds = buildCartInfoForSeckill(storeCart); - return cacheSecKillIds.get(0); - } - - // 砍价商品业务处理 - if (ObjectUtil.isNotNull(storeCart.getBargainId()) && storeCart.getBargainId() > 0 && storeCart.getIsNew()) { - storeCart.setCartNum(1); // 砍价一次仅仅只能购买一件商品 - return buildCartInfoForBargain(storeCart); - } - - // 拼团商品业务处理 - if (ObjectUtil.isNotNull(storeCart.getCombinationId()) && storeCart.getCombinationId() > 0 && storeCart.getIsNew()) { - return buildCartInfoForCombination(storeCart); - } - - /** - * ================================ - * 普通商品部分 - * ================================ - */ - // 是否已经有同类型商品在购物车,有则添加数量没有则新增 - StoreCart storeCartPram = new StoreCart(); - storeCartPram.setProductAttrUnique(storeCart.getProductAttrUnique()); - storeCartPram.setUid(userService.getUserId()); - storeCartPram.setIsNew(false); - List existCarts = getByEntity(storeCartPram); // 这里仅仅能获取一条以信息 - if(existCarts.size() > 0 && !storeCart.getIsNew()){ // 加入购物车 - StoreCart forUpdateStoreCart = existCarts.get(0); - forUpdateStoreCart.setCartNum(forUpdateStoreCart.getCartNum()+storeCart.getCartNum()); - boolean updateResult = updateById(forUpdateStoreCart); - if(!updateResult) throw new CrmebException("添加购物车失败"); - return forUpdateStoreCart.getId()+""; - }else{// 立即购买 - User currentUser = userService.getInfo(); - storeCart.setUid(currentUser.getUid()); - storeCart.setType("product"); - if(dao.insert(storeCart) <= 0) throw new CrmebException("添加购物车失败"); - return storeCart.getId()+""; - } - } - - - /** - * 设置会员价格 - * @param price 原来价格 - * @param userId 会员id - * @param isSingle 是否普通用户,true普通用户,false会员 - * @return BigDecimal - */ - @Override - public BigDecimal setVipPrice(BigDecimal price, Integer userId, boolean isSingle) { - // 判断会员功能是否开启 - int memberFuncStatus = Integer.parseInt(systemConfigService.getValueByKey("vip_open")); - if(memberFuncStatus <= 0){ - return price; - } - // 会员等级 - UserLevel userLevelInfo = userLevelService.getUserLevelByUserId(userId); - if (ObjectUtil.isNull(userLevelInfo)) return price; - if(userLevelInfo.getDiscount().compareTo(BigDecimal.ZERO) == 0){ // 不是会员原价返回 - return price; - } - BigDecimal discount = userLevelInfo.getDiscount().divide(BigDecimal.valueOf(100)); - - return isSingle ? price : discount.multiply(price).setScale(2, RoundingMode.UP); - } - - /** - * 删除购物车信息 - * @param ids 待删除id - * @return 删除结果状态 - */ - @Override - public boolean deleteCartByIds(List ids) { - return dao.deleteBatchIds(ids) > 0; - } - - /** - * 购物车基本查询 - * @param storeCart 购物车参数 - * @return 购物车结果数据 - */ - @Override - public 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(null == storeCart) throw new CrmebException("购物车不存在"); - if(null == 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(null == existStoreCartProducts || existStoreCartProducts.size()==0) 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 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(null == existStoreCartProducts) return false; - existStoreCartProducts = existStoreCartProducts.stream().map(e->{ - e.setStatus(flag); - return e; - }).collect(Collectors.toList()); - return updateBatchById(existStoreCartProducts); - } - - /** - * 组装秒杀下单前数据 - * @param storeCartPram 秒杀参数 - * @return 组装好的下单前秒杀数据 - */ - private List buildCartInfoForSeckill(StoreCart storeCartPram){ - User currentUser = userService.getInfoException(); - List cacheIdsResult = new ArrayList<>(); - List storeCartResponses = new ArrayList<>(); - StoreCartResponse storeCartResponse = new StoreCartResponse(); - StoreProductCartProductInfoResponse spcpInfo = new StoreProductCartProductInfoResponse(); - - // 秒杀商品数据验证 - StoreSeckill storeSeckill = orderUtils.validSecKill(storeCartPram, currentUser); - - BeanUtils.copyProperties(storeSeckill, spcpInfo); - - // 判断商品对应属性是否有效 - StoreProductAttrValue apAttrValuePram = new StoreProductAttrValue(); - apAttrValuePram.setProductId(storeCartPram.getSeckillId()); - apAttrValuePram.setId(Integer.valueOf(storeCartPram.getProductAttrUnique())); - apAttrValuePram.setType(Constants.PRODUCT_TYPE_SECKILL); - List seckillAttrValues = storeProductAttrValueService.getByEntity(apAttrValuePram); - StoreProductAttrValue existSPAttrValue = new StoreProductAttrValue(); - if(null != seckillAttrValues && seckillAttrValues.size() > 0) existSPAttrValue = seckillAttrValues.get(0); - if(null == existSPAttrValue) throw new CrmebException("请选择有效的商品属性"); - if(existSPAttrValue.getStock() <= 0) throw new CrmebException("该商品库存不足"); - - spcpInfo.setAttrInfo(existSPAttrValue); - spcpInfo.setStoreInfo(storeSeckill.getInfo()); - spcpInfo.setStoreName(storeSeckill.getTitle()); - - storeCartResponse.setSeckillId(storeCartPram.getSeckillId()); - storeCartResponse.setProductInfo(spcpInfo); - storeCartResponse.setTrueStock(storeCartResponse.getProductInfo().getAttrInfo().getStock()); - storeCartResponse.setCostPrice(storeCartResponse.getProductInfo().getAttrInfo().getCost()); - storeCartResponse.setTruePrice(existSPAttrValue.getPrice()); - storeCartResponse.setVipTruePrice(BigDecimal.ZERO); - - storeCartResponse.setType(Constants.PRODUCT_TYPE_SECKILL+"");// 秒杀=1 - storeCartResponse.setProductId(storeCartPram.getProductId()); - storeCartResponse.setProductAttrUnique(storeCartPram.getProductAttrUnique()); - storeCartResponse.setCartNum(1); - storeCartResponses.add(storeCartResponse); - - cacheIdsResult.add(orderUtils.setCacheOrderData(currentUser, storeCartResponses)); - return cacheIdsResult; - } - - /** - * 组装砍价下单前数据 - * @param storeCartPram 砍价参数 - * @return 组装好的下单前砍价数据 - */ - private String buildCartInfoForBargain(StoreCart storeCartPram) { - User currentUser = userService.getInfoException(); - List storeCartResponses = new ArrayList<>(); - StoreCartResponse storeCartResponse = new StoreCartResponse(); - StoreProductCartProductInfoResponse spcpInfo = new StoreProductCartProductInfoResponse(); - - // 砍价商品数据验证 - MyRecord record = orderUtils.validBargain(storeCartPram, currentUser); - StoreBargain storeBargain = record.get("product"); - BeanUtils.copyProperties(storeBargain, spcpInfo); - - spcpInfo.setAttrInfo(record.get("attrInfo")); - spcpInfo.setStoreInfo(storeBargain.getInfo()); - spcpInfo.setStoreName(storeBargain.getTitle()); - - storeCartResponse.setBargainId(storeCartPram.getBargainId()); - storeCartResponse.setProductInfo(spcpInfo); - storeCartResponse.setTrueStock(storeCartResponse.getProductInfo().getAttrInfo().getStock()); - storeCartResponse.setCostPrice(storeCartResponse.getProductInfo().getAttrInfo().getCost()); - storeCartResponse.setTruePrice(storeBargain.getMinPrice()); - storeCartResponse.setVipTruePrice(storeBargain.getMinPrice()); - - storeCartResponse.setType(Constants.PRODUCT_TYPE_BARGAIN.toString());// 砍价=2 - storeCartResponse.setProductId(storeCartPram.getProductId()); - storeCartResponse.setProductAttrUnique(storeCartPram.getProductAttrUnique()); - storeCartResponse.setCartNum(1); - storeCartResponses.add(storeCartResponse); - - return orderUtils.setCacheOrderData(currentUser, storeCartResponses); - } - - /** - * 组装拼团下单前数据 - * @param storeCartPram 砍价参数 - * @return 组装好的下单前砍价数据 - */ - private String buildCartInfoForCombination(StoreCart storeCartPram) { - User currentUser = userService.getInfoException(); - List storeCartResponses = new ArrayList<>(); - StoreCartResponse storeCartResponse = new StoreCartResponse(); - StoreProductCartProductInfoResponse spcpInfo = new StoreProductCartProductInfoResponse(); - - // 拼团商品数据验证 - MyRecord record = orderUtils.validCombination(storeCartPram, currentUser); - StoreCombination storeCombination = record.get("product"); - BeanUtils.copyProperties(storeCombination, spcpInfo); - - // 判断商品对应属性是否有效 - StoreProductAttrValue apAttrValuePram = new StoreProductAttrValue(); - apAttrValuePram.setProductId(storeCartPram.getCombinationId()); - apAttrValuePram.setId(Integer.valueOf(storeCartPram.getProductAttrUnique())); - apAttrValuePram.setType(Constants.PRODUCT_TYPE_PINGTUAN); - List combinationAttrValues = storeProductAttrValueService.getByEntity(apAttrValuePram); - StoreProductAttrValue existSPAttrValue = null; - if(CollUtil.isNotEmpty(combinationAttrValues)) existSPAttrValue = combinationAttrValues.get(0); - if(ObjectUtil.isNull(existSPAttrValue)) throw new CrmebException("请选择有效的商品属性"); - if(existSPAttrValue.getStock() <= 0) throw new CrmebException("该商品库存不足"); - - spcpInfo.setAttrInfo(record.get("attrInfo")); - spcpInfo.setStoreInfo(storeCombination.getInfo()); - spcpInfo.setStoreName(storeCombination.getTitle()); - - storeCartResponse.setCombinationId(storeCartPram.getCombinationId()); - storeCartResponse.setPinkId(Optional.ofNullable(storeCartPram.getPinkId()).orElse(0)); - storeCartResponse.setProductInfo(spcpInfo); - storeCartResponse.setTrueStock(storeCartResponse.getProductInfo().getAttrInfo().getStock()); - storeCartResponse.setCostPrice(storeCartResponse.getProductInfo().getAttrInfo().getCost()); - storeCartResponse.setTruePrice(storeCombination.getPrice()); - storeCartResponse.setVipTruePrice(storeCombination.getPrice()); - - storeCartResponse.setType(Constants.PRODUCT_TYPE_PINGTUAN.toString());// 砍价=3 - storeCartResponse.setProductId(storeCartPram.getProductId()); - storeCartResponse.setProductAttrUnique(storeCartPram.getProductAttrUnique()); - storeCartResponse.setCartNum(storeCartPram.getCartNum()); - storeCartResponses.add(storeCartResponse); - - return orderUtils.setCacheOrderData(currentUser, storeCartResponses); - } -} - diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreProductAttrResultServiceImpl.java b/crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreProductAttrResultServiceImpl.java deleted file mode 100644 index e6d2e8db..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreProductAttrResultServiceImpl.java +++ /dev/null @@ -1,92 +0,0 @@ -package com.zbkj.crmeb.store.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.common.PageParamRequest; -import com.github.pagehelper.PageHelper; -import com.zbkj.crmeb.store.dao.StoreProductAttrResultDao; -import com.zbkj.crmeb.store.model.StoreProductAttrResult; -import com.zbkj.crmeb.store.request.StoreProductAttrResultSearchRequest; -import com.zbkj.crmeb.store.service.StoreProductAttrResultService; -import org.springframework.beans.BeanUtils; -import org.springframework.stereotype.Service; - -import javax.annotation.Resource; -import java.util.List; - -/** - * StoreProductAttrResultService实现类 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 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 request 请求参数 - * @param pageParamRequest 分页类参数 - * @author Mr.Zhang - * @since 2020-05-27 - * @return List - */ - @Override - public List getList(StoreProductAttrResultSearchRequest request, PageParamRequest pageParamRequest) { - PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); - - //带 StoreProductAttrResult 类的多条件查询 - LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(); - StoreProductAttrResult model = new StoreProductAttrResult(); - BeanUtils.copyProperties(request, model); - lambdaQueryWrapper.setEntity(model); - return dao.selectList(lambdaQueryWrapper); - } - - @Override - public StoreProductAttrResult getByProductId(int productId) { - LambdaQueryWrapper lw = Wrappers.lambdaQuery(); - lw.eq(StoreProductAttrResult::getProductId, productId); - List results = dao.selectList(lw); - if(results.size() > 1){ - return results.get(results.size()-1); - }else if(results.size() == 1){ - return results.get(0); - }else{ - return null; - } - } - - @Override - public void deleteByProductId(int productId, int type) { - LambdaQueryWrapper lmdQ = Wrappers.lambdaQuery(); - lmdQ.eq(StoreProductAttrResult::getProductId, productId).eq(StoreProductAttrResult::getType,type); - dao.delete(lmdQ); - } - - /** - * 根据商品属性值集合查询 - * - * @param storeProductAttrResult 查询参数 - * @return 查询结果 - */ - @Override - public List getByEntity(StoreProductAttrResult storeProductAttrResult) { - LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.setEntity(storeProductAttrResult); - return dao.selectList(lqw); - } -} - diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreProductCateServiceImpl.java b/crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreProductCateServiceImpl.java deleted file mode 100644 index 811368cc..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreProductCateServiceImpl.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.zbkj.crmeb.store.service.impl; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.common.PageParamRequest; -import com.github.pagehelper.PageHelper; -import com.zbkj.crmeb.store.dao.StoreProductCateDao; -import com.zbkj.crmeb.store.model.StoreProductCate; -import com.zbkj.crmeb.store.request.StoreProductCateSearchRequest; -import com.zbkj.crmeb.store.service.StoreProductCateService; -import org.springframework.beans.BeanUtils; -import org.springframework.stereotype.Service; - -import javax.annotation.Resource; -import java.util.List; - -/** - * StoreProductCateService 实现类 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Service -public class StoreProductCateServiceImpl extends ServiceImpl - implements StoreProductCateService { - - @Resource - private StoreProductCateDao dao; - - - /** - * 列表 - * @param request 请求参数 - * @param pageParamRequest 分页类参数 - * @author Mr.Zhang - * @since 2020-05-27 - * @return List - */ - @Override - public List getList(StoreProductCateSearchRequest request, PageParamRequest pageParamRequest) { - PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); - - //带 StoreProductCate 类的多条件查询 - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - StoreProductCate model = new StoreProductCate(); - BeanUtils.copyProperties(request, model); - lambdaQueryWrapper.setEntity(model); - return dao.selectList(lambdaQueryWrapper); - } - - @Override - public List getByProductId(Integer productId) { - LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); - lqw.eq(StoreProductCate::getProductId, productId); - return dao.selectList(lqw); - } - -} - diff --git a/crmeb/src/main/java/com/zbkj/crmeb/store/utilService/OrderUtils.java b/crmeb/src/main/java/com/zbkj/crmeb/store/utilService/OrderUtils.java deleted file mode 100644 index 16d4685b..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/store/utilService/OrderUtils.java +++ /dev/null @@ -1,1387 +0,0 @@ -package com.zbkj.crmeb.store.utilService; - -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.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.common.MyRecord; -import com.common.PageParamRequest; -import com.constants.Constants; -import com.constants.PayConstants; -import com.constants.SysConfigConstants; -import com.constants.SysGroupDataConstants; -import com.exception.CrmebException; -import com.utils.CrmebUtil; -import com.utils.DateUtil; -import com.utils.RedisUtil; -import com.zbkj.crmeb.bargain.model.StoreBargain; -import com.zbkj.crmeb.bargain.model.StoreBargainUser; -import com.zbkj.crmeb.bargain.service.StoreBargainService; -import com.zbkj.crmeb.bargain.service.StoreBargainUserHelpService; -import com.zbkj.crmeb.bargain.service.StoreBargainUserService; -import com.zbkj.crmeb.combination.model.StoreCombination; -import com.zbkj.crmeb.combination.service.StoreCombinationService; -import com.zbkj.crmeb.combination.service.StorePinkService; -import com.zbkj.crmeb.express.model.ShippingTemplates; -import com.zbkj.crmeb.express.model.ShippingTemplatesFree; -import com.zbkj.crmeb.express.model.ShippingTemplatesRegion; -import com.zbkj.crmeb.express.service.ShippingTemplatesFreeService; -import com.zbkj.crmeb.express.service.ShippingTemplatesRegionService; -import com.zbkj.crmeb.express.service.ShippingTemplatesService; -import com.zbkj.crmeb.front.request.OrderCreateRequest; -import com.zbkj.crmeb.front.response.ComputeOrderResponse; -import com.zbkj.crmeb.front.response.ConfirmOrderResponse; -import com.zbkj.crmeb.front.response.PriceGroupResponse; -import com.zbkj.crmeb.front.vo.OrderAgainItemVo; -import com.zbkj.crmeb.front.vo.OrderAgainVo; -import com.zbkj.crmeb.marketing.model.StoreCouponUser; -import com.zbkj.crmeb.marketing.request.StoreCouponUserSearchRequest; -import com.zbkj.crmeb.marketing.response.StoreCouponUserResponse; -import com.zbkj.crmeb.marketing.service.StoreCouponUserService; -import com.zbkj.crmeb.seckill.model.StoreSeckill; -import com.zbkj.crmeb.seckill.model.StoreSeckillManger; -import com.zbkj.crmeb.seckill.service.StoreSeckillMangerService; -import com.zbkj.crmeb.seckill.service.StoreSeckillService; -import com.zbkj.crmeb.store.model.*; -import com.zbkj.crmeb.store.request.StoreOrderSearchRequest; -import com.zbkj.crmeb.store.response.StoreCartResponse; -import com.zbkj.crmeb.store.service.*; -import com.zbkj.crmeb.store.vo.StoreOrderInfoOldVo; -import com.zbkj.crmeb.system.model.SystemStore; -import com.zbkj.crmeb.system.response.SystemGroupDataOrderStatusPicResponse; -import com.zbkj.crmeb.system.service.SystemConfigService; -import com.zbkj.crmeb.system.service.SystemGroupDataService; -import com.zbkj.crmeb.system.service.SystemStoreService; -import com.zbkj.crmeb.user.model.User; -import com.zbkj.crmeb.user.model.UserAddress; -import com.zbkj.crmeb.user.service.UserAddressService; -import com.zbkj.crmeb.user.service.UserService; -import com.zbkj.crmeb.wechat.service.impl.WechatSendMessageForMinService; -import com.zbkj.crmeb.wechat.vo.WechatSendMessageForDistrbution; -import com.zbkj.crmeb.wechat.vo.WechatSendMessageForPackage; -import com.zbkj.crmeb.wechat.vo.WechatSendMessageForPaySuccess; -import org.apache.commons.lang3.StringEscapeUtils; -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 java.math.BigDecimal; -import java.util.*; -import java.util.concurrent.TimeUnit; -import java.util.stream.Collectors; - -/** - * 订单工具类 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Service -public class OrderUtils { - @Autowired - private SystemStoreService systemStoreService; - - @Autowired - private UserService userService; - - @Autowired - private StoreOrderStatusService storeOrderStatusService; - - @Autowired - private SystemConfigService systemConfigService; - - @Autowired - private UserAddressService userAddressService; - - @Autowired - private StoreCouponUserService storeCouponUserService; - - @Autowired - private StoreProductService storeProductService; - - @Autowired - private StoreOrderService storeOrderService; - - @Autowired - private StoreOrderInfoService storeOrderInfoService; - - @Autowired - private ShippingTemplatesService shippingTemplatesService; - - @Autowired - private ShippingTemplatesRegionService shippingTemplatesRegionService; - - @Autowired - private RedisUtil redisUtil; - - @Autowired - private ShippingTemplatesFreeService shippingTemplatesFreeService; - - @Autowired - private SystemGroupDataService systemGroupDataService; - - @Autowired - private WechatSendMessageForMinService wechatSendMessageForMinService; - - @Autowired - private StoreProductAttrValueService storeProductAttrValueService; - - @Autowired - private StoreSeckillService storeSeckillService; - - @Autowired - private StoreSeckillMangerService storeSeckillMangerService; - - @Autowired - private StoreBargainService storeBargainService; - - @Autowired - private StoreBargainUserService storeBargainUserService; - - @Autowired - private StoreCombinationService storeCombinationService; - - @Autowired - private StoreBargainUserHelpService storeBargainUserHelpService; - - @Autowired - private StorePinkService storePinkService; - - @Autowired - private TransactionTemplate transactionTemplate; - - /** - * 检测支付渠道 - * @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; - } - - // 组装数据给前端使用 - public OrderAgainVo tidyOrder(StoreOrder storeOrder, boolean detail, boolean isPic){ - OrderAgainVo orderAgainVoResult = new OrderAgainVo(); - orderAgainVoResult.setStoreOrder(storeOrder); - List existOrderList = null; - if(detail && storeOrder.getId() > 0){ - existOrderList = storeOrderInfoService.getOrderListByOrderId(storeOrder.getId()); - orderAgainVoResult.setCartInfo(existOrderList); - } - OrderAgainItemVo status = null; - if(storeOrder.getId() > 0 - && storeOrder.getPayType().equals(Constants.PAY_TYPE_OFFLINE) - && storeOrder.getStatus() >= 2){ - status = new OrderAgainItemVo(9,"线下付款","等待商家处理,请耐心等候"); - }else if(!storeOrder.getPaid()){ - status = new OrderAgainItemVo(0,"未支付","订单未支付"); - // 系统预设取消订单时间段 - 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); - // 拼团秒杀砍价逻辑处理 - String tempTime = null; - Date timeSpace = null; - timeSpace = DateUtil.addSecond(storeOrder.getCreateTime(),Double.valueOf(configValues.get(0).toString()).intValue() * 3600); - status.setMsg("请在" + DateUtil.dateToStr(timeSpace, Constants.DATE_FORMAT) +"前完成支付"); - }else if(storeOrder.getRefundStatus() == 1){ - status = new OrderAgainItemVo(-1,"申请退款中","商家审核中,请耐心等待"); - }else if(storeOrder.getRefundStatus() == 2){ - status = new OrderAgainItemVo(-2,"已退款","已为您退款,感谢您的支持"); - }else if(storeOrder.getRefundStatus() == 3){ - status = new OrderAgainItemVo(-3,"退款中","正在为您退款,感谢您的支持"); - }else if(storeOrder.getStatus() == 0){ - // todo 秒杀后面在这添加判断 - status = new OrderAgainItemVo(1,"未发货","商家未发货,请耐心等待"); - }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){ - String DateStr = DateUtil.dateToStr(sOrderStatusResults.get(sOrderStatusResults.size()-1).getCreateTime(), Constants.DATE_FORMAT); - status = new OrderAgainItemVo(2,"待收货",DateStr+"服务商已送货"); - } - }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){ - String DateStr = DateUtil.dateToStr(sOrderStatusResults.get(sOrderStatusResults.size()-1).getCreateTime(), Constants.DATE_FORMAT); - status = new OrderAgainItemVo(2,"待收货",DateStr+"服务商已送货"); - } - }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){ - String DateStr = DateUtil.dateToStr(sOrderStatusResults.get(sOrderStatusResults.size()-1).getCreateTime(), Constants.DATE_FORMAT); - status = new OrderAgainItemVo(2,"待收货",DateStr+"服务商已虚拟发货"); - } else { - status = new OrderAgainItemVo(2, "待收货", "退款拒绝订单已发货"); - } - } - }else if(storeOrder.getStatus() == 2){ - status = new OrderAgainItemVo(3,"待评价","已收货,快去评价一下吧"); - - }else if(storeOrder.getStatus() == 3){ - status = new OrderAgainItemVo(4,"交易完成","'交易完成,感谢您的支持"); - } - // 支付方式 - if(status != null){ - if(null != storeOrder.getStatus()){ - status.setPayType(getOrderPayTypeStr(storeOrder.getPayType())); - } - if(StringUtils.isNotBlank(storeOrder.getDeliveryType())){ - status.setDeliveryType(StringUtils.isNotBlank(storeOrder.getDeliveryType()) ? storeOrder.getDeliveryType():"其他方式"); - } - } - - orderAgainVoResult.setStatus(status); - orderAgainVoResult.setPayTime(null != storeOrder.getPayTime() ? storeOrder.getPayTime().toString() : storeOrder.getCreateTime().toString()); - orderAgainVoResult.setAddTime(null != storeOrder.getCreateTime() ? storeOrder.getCreateTime().toString() : ""); - orderAgainVoResult.setStatusPic(""); - - // 获取商品状态图片 ignore - if(isPic){ - List orderStatusPicList = systemGroupDataService.getListByGid(SysGroupDataConstants.GROUP_DATA_ID_ORDER_STATUS_PIC, SystemGroupDataOrderStatusPicResponse.class);// 53 = group id 在groupData中查询数据 - - for (SystemGroupDataOrderStatusPicResponse picList : orderStatusPicList) { - if(picList.getOrderStatus() == orderAgainVoResult.getStatus().getType()){ - orderAgainVoResult.setStatusPic(picList.getUrl()); - break; - } - } - } - return orderAgainVoResult; - } - - /** - * 创建订单 - * @param request 订单创建参数 - * @param cor 缓存的购物车,价钱等信息集合 - * @param user 用户 - * @return 订单信息 - * 先扣减库存,需要使用乐观锁 - * 扣减库存成功后生成订单 + 保存其他数据 - */ - public StoreOrder createOrder(OrderCreateRequest request, ConfirmOrderResponse cor, String orderKey, User user){ - // 收货信息 - UserAddress currentUserAddress = new UserAddress(); - // 购买总数量 - Integer totalNum = 0; - // 购买赠送的积分 - Integer gainIntegral = 0; - // 核销码 - String verifyCode = ""; - // 自提门店id - Integer storeId = 0; - - // 校验收货信息 - if(request.getShippingType() == 1){ // 发货 - if(request.getAddressId() <= 0) throw new CrmebException("请选择收货地址"); - UserAddress userAddress = new UserAddress(); - userAddress.setId(request.getAddressId()); - userAddress.setIsDel(false); - currentUserAddress = userAddressService.getUserAddress(userAddress); - if(ObjectUtil.isNull(currentUserAddress)){ - throw new CrmebException("收货地址有误"); - } - }else if(request.getShippingType() == 2){ // 到店自提 - if(StringUtils.isBlank(request.getRealName()) || StringUtils.isBlank(request.getPhone())) { - throw new CrmebException("请填写姓名和电话"); - } - currentUserAddress.setRealName(request.getRealName()); - currentUserAddress.setPhone(request.getPhone()); - // 自提开关是否打开 - String storeSelfMention = systemConfigService.getValueByKey("store_self_mention"); - if (storeSelfMention.equals("false")) { - throw new CrmebException("请先联系管理员开启门店自提"); - } - SystemStore systemStore = new SystemStore(); - systemStore.setId(request.getStoreId()); - systemStore.setIsShow(true); - systemStore.setIsDel(false); - SystemStore existSystemStore = systemStoreService.getByCondition(systemStore); - if(null == existSystemStore) throw new CrmebException("暂无门店无法选择门店自提"); - storeId = existSystemStore.getId(); - verifyCode = CrmebUtil.randomCount(1111111111,999999999)+""; - currentUserAddress.setDetail(existSystemStore.getName()); - } - - // 校验积分抵扣 - if(request.getUseIntegral() && user.getIntegral() >= 0 && cor.getPriceGroup().getUsedIntegral() >= 0) { - if (user.getIntegral() < cor.getPriceGroup().getUsedIntegral()) { - throw new CrmebException("用户的积分不够抵扣,请刷新页面重新计算价格"); - } - } - - if (request.getBargainId() > 0) { - StoreBargainUser storeBargainUser = storeBargainUserService.getByBargainIdAndUid(request.getBargainId(), user.getUid()); - if (ObjectUtil.isNull(storeBargainUser)) throw new CrmebException("砍价用户信息不存在"); - if (!storeBargainUser.getStatus().equals(1)) { - throw new CrmebException("活动已结束或订单已支付"); - } - } - - // 库存扣减 - List cartInfoList = cor.getCartInfo(); - if (CollUtil.isEmpty(cartInfoList)) throw new CrmebException("购物详情信息不存在"); - - /** - * 活动商品校验 - * skuRecord 扣减库存对象 - * ——activityId 活动商品id - * ——activityAttrValueId 活动商品skuid - * ——productId 普通(主)商品id - * ——attrValueId 普通(主)商品skuid - * ——num 购买数量 - */ - List skuRecordList = productSkuDispose(request, cartInfoList); - - List storeOrderInfos = new ArrayList<>(); - // 获取购买数量+赠送积分 - // 购物车商品详情 - for (StoreCartResponse cartResponse : cartInfoList) { - // 购买数量 - totalNum += cartResponse.getCartNum(); - // 赠送积分 - if (ObjectUtil.isNotNull(cartResponse.getProductInfo().getGiveIntegral()) && cartResponse.getProductInfo().getGiveIntegral() > 0) { - gainIntegral += cartResponse.getProductInfo().getGiveIntegral() * cartResponse.getCartNum(); - } - - // 订单详情 - StoreOrderInfo soInfo = new StoreOrderInfo(); - soInfo.setProductId(cartResponse.getProductId()); - soInfo.setInfo(JSON.toJSON(cartResponse).toString()); - soInfo.setUnique(cartResponse.getProductAttrUnique()); - storeOrderInfos.add(soInfo); - } - - // 下单赠送积分 - // 赠送积分比例 - if (cor.getPriceGroup().getPayPrice().compareTo(BigDecimal.ZERO) > 0) { - String integralStr = systemConfigService.getValueByKey(Constants.CONFIG_KEY_INTEGRAL_RATE); - if (StrUtil.isNotBlank(integralStr)) { - BigDecimal integralBig = new BigDecimal(integralStr); - Integer integral = integralBig.multiply(cor.getPriceGroup().getPayPrice()).setScale(0, BigDecimal.ROUND_DOWN).intValue(); - if (integral > 0) { - // 添加积分 - gainIntegral += integral; - } - } - } - - String orderNo = CrmebUtil.getOrderNo("order"); - 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; - } - } else {// 目前只有余额支付 -// orderNo = CrmebUtil.getOrderNo(Constants.PAY_TYPE_YUE); - } - - - StoreOrder storeOrder = new StoreOrder(); - storeOrder.setUid(cor.getUserInfo().getUid()); - storeOrder.setOrderId(orderNo); - storeOrder.setRealName(currentUserAddress.getRealName()); - storeOrder.setUserPhone(currentUserAddress.getPhone()); - // 发货才有详细地址 - if(request.getShippingType() == 1){ // 发货 - storeOrder.setUserAddress(currentUserAddress.getProvince() - + currentUserAddress.getCity() - + currentUserAddress.getDistrict() - + currentUserAddress.getDetail()); - } - // 如果是自提 - if(request.getShippingType() == 2){ - storeOrder.setVerifyCode(verifyCode); - storeOrder.setStoreId(storeId); - storeOrder.setUserAddress(currentUserAddress.getDetail()); - } - storeOrder.setTotalNum(totalNum); -// int couponId = ObjectUtil.isNull(cor.getUsableCoupon()) ? 0: cor.getUsableCoupon().getId(); - storeOrder.setCouponId(Optional.ofNullable(request.getCouponId()).orElse(0)); - - - // 订单总价 - BigDecimal mapTotalPrice = cor.getPriceGroup().getTotalPrice(); - // 邮费 - BigDecimal mapStorePostage = cor.getPriceGroup().getStorePostage(); - // 优惠券金额 - BigDecimal mapCouponPrice = cor.getPriceGroup().getCouponPrice(); - // 实际支付金额 - BigDecimal mapPayPrice = cor.getPriceGroup().getPayPrice(); - // 支付邮费 - BigDecimal mapPayPostage = cor.getPriceGroup().getPayPostage(); - // 抵扣金额 - BigDecimal mapDeductionPrice = cor.getPriceGroup().getDeductionPrice(); - // 使用积分 - Integer mapUsedIntegral = cor.getPriceGroup().getUsedIntegral(); - // 成本价 - BigDecimal mapCostPrice = cor.getPriceGroup().getCostPrice(); - - storeOrder.setTotalPrice(mapTotalPrice); - storeOrder.setTotalPostage(mapStorePostage); - storeOrder.setCouponPrice(mapCouponPrice); - storeOrder.setPayPrice(mapPayPrice); - storeOrder.setPayPostage(mapPayPostage); - storeOrder.setDeductionPrice(mapDeductionPrice); - storeOrder.setPayType(request.getPayType()); - storeOrder.setUseIntegral(mapUsedIntegral); - storeOrder.setGainIntegral(gainIntegral); - storeOrder.setMark(StringEscapeUtils.escapeHtml4(request.getMark())); - storeOrder.setCombinationId(request.getCombinationId()); - storeOrder.setPinkId(request.getPinkId()); - storeOrder.setSeckillId(request.getSeckillId()); - storeOrder.setBargainId(request.getBargainId()); - storeOrder.setCost(mapCostPrice); - storeOrder.setCreateTime(DateUtil.nowDateTime()); - storeOrder.setShippingType(request.getShippingType()); - storeOrder.setPinkId(request.getPinkId()); - storeOrder.setIsChannel(isChannel); - storeOrder.setPaid(false); - // 0表示是团长开团,在支付成功后需要更换为,拼团团长pinkid - Integer pinkId = Optional.ofNullable(cartInfoList.get(0).getPinkId()).orElse(0); - storeOrder.setPinkId(pinkId); - - 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); - // 秒杀商品扣库存 - storeCombinationService.operationStock(skuRecord.getInt("activityId"), skuRecord.getInt("num"), "sub"); - // 秒杀商品规格扣库存 - 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, "订单生成"); - - return Boolean.TRUE; - }); - if (!execute) { - throw new CrmebException("订单生成失败"); - } - // 删除缓存订单 - cacheDeleteOrderInfo(user.getUid(), orderKey); - return storeOrder; - } - - /** - * 商品sku处理 - * @param request - * @param cartInfoList - * @return List - * skuRecord 扣减库存对象 - * ——activityId 活动商品id - * ——activityAttrValueId 活动商品skuid - * ——productId 普通(主)商品id - * ——attrValueId 普通(主)商品skuid - * ——num 购买数量 - */ - private List productSkuDispose(OrderCreateRequest request, List cartInfoList) { - List recordList = CollUtil.newArrayList(); - Integer productId; - Integer cartNum; - Integer attrValueId; - // 活动商品处理 - if (request.getSeckillId() > 0 || request.getBargainId() > 0 || request.getCombinationId() > 0) { - StoreCartResponse storeCartResponse = cartInfoList.get(0); - productId = storeCartResponse.getProductId(); - cartNum = storeCartResponse.getCartNum(); - attrValueId = Integer.parseInt(storeCartResponse.getProductAttrUnique()); - if (request.getSeckillId() > 0) { - // 秒杀部分判断 - Integer seckillId = request.getSeckillId(); - StoreSeckill storeSeckill = storeSeckillService.getByIdException(seckillId); - if (storeSeckill.getStock().equals(0) || cartNum > storeSeckill.getStock()) { - throw new CrmebException("秒杀商品库存不足"); - } - StoreProductAttrValue seckillAttrValue = storeProductAttrValueService.getByIdAndProductIdAndType(attrValueId, seckillId, Constants.PRODUCT_TYPE_SECKILL); - if (ObjectUtil.isNull(seckillAttrValue)) { - throw new CrmebException("秒杀商品规格不存在"); - } - if (seckillAttrValue.getStock() <= 0 || seckillAttrValue.getQuota() <= 0 || cartNum > seckillAttrValue.getStock()) { - throw new CrmebException("秒杀商品规格库存不足"); - } - // 普通商品部分判断 - StoreProduct product = storeProductService.getById(productId); - if (ObjectUtil.isNull(product) || product.getIsDel()) { - throw new CrmebException("秒杀主商品不存在"); - } - if (product.getStock().equals(0) || cartNum > product.getStock()) { - throw new CrmebException("秒杀主商品库存不足"); - } - // 主商品sku - StoreProductAttrValue productAttrValue = storeProductAttrValueService.getByProductIdAndSkuAndType(productId, seckillAttrValue.getSuk(), Constants.PRODUCT_TYPE_NORMAL); - if (ObjectUtil.isNull(productAttrValue)) { - throw new CrmebException("秒杀主商品规格不存在"); - } - if (productAttrValue.getStock() <= 0 || cartNum > productAttrValue.getStock()) { - throw new CrmebException("秒杀主商品规格库存不足"); - } - - MyRecord record = new MyRecord(); - record.set("activityId", seckillId); - record.set("activityAttrValueId", attrValueId); - record.set("productId", productId); - record.set("attrValueId", productAttrValue.getId()); - record.set("num", cartNum); - recordList.add(record); - } - if ( request.getBargainId() > 0) { - // 砍价部分判断 - Integer bargainId = request.getBargainId(); - StoreBargain storeBargain = storeBargainService.getByIdException(bargainId); - if (storeBargain.getStock().equals(0) || cartNum > storeBargain.getStock()) { - throw new CrmebException("砍价商品库存不足"); - } - StoreProductAttrValue bargainAttrValue = storeProductAttrValueService.getByIdAndProductIdAndType(attrValueId, bargainId, Constants.PRODUCT_TYPE_BARGAIN); - if (ObjectUtil.isNull(bargainAttrValue)) { - throw new CrmebException("砍价商品规格不存在"); - } - if (bargainAttrValue.getStock() <= 0 || bargainAttrValue.getQuota() <= 0 || cartNum > bargainAttrValue.getStock()) { - throw new CrmebException("砍价商品规格库存不足"); - } - // 普通商品部分判断 - StoreProduct product = storeProductService.getById(productId); - if (ObjectUtil.isNull(product) || product.getIsDel()) { - throw new CrmebException("砍价主商品不存在"); - } - if (product.getStock().equals(0) || cartNum > product.getStock()) { - throw new CrmebException("砍价主商品库存不足"); - } - // 主商品sku - StoreProductAttrValue productAttrValue = storeProductAttrValueService.getByProductIdAndSkuAndType(productId, bargainAttrValue.getSuk(), Constants.PRODUCT_TYPE_NORMAL); - if (ObjectUtil.isNull(productAttrValue)) { - throw new CrmebException("砍价主商品规格不存在"); - } - if (productAttrValue.getStock() <= 0 || cartNum > productAttrValue.getStock()) { - throw new CrmebException("砍价主商品规格库存不足"); - } - - MyRecord record = new MyRecord(); - record.set("activityId", bargainId); - record.set("activityAttrValueId", attrValueId); - record.set("productId", productId); - record.set("attrValueId", productAttrValue.getId()); - record.set("num", cartNum); - recordList.add(record); - } - if (request.getCombinationId() > 0) { - // 拼团部分判断 - Integer combinationId = request.getCombinationId(); - StoreCombination storeCombination = storeCombinationService.getByIdException(combinationId); - if (storeCombination.getStock().equals(0) || cartNum > storeCombination.getStock()) { - throw new CrmebException("拼团商品库存不足"); - } - StoreProductAttrValue combinationAttrValue = storeProductAttrValueService.getByIdAndProductIdAndType(attrValueId, combinationId, Constants.PRODUCT_TYPE_PINGTUAN); - if (ObjectUtil.isNull(combinationAttrValue)) { - throw new CrmebException("拼团商品规格不存在"); - } - if (combinationAttrValue.getStock() <= 0 || combinationAttrValue.getQuota() <= 0 || cartNum > combinationAttrValue.getStock()) { - throw new CrmebException("拼团商品规格库存不足"); - } - // 普通商品部分判断 - StoreProduct product = storeProductService.getById(productId); - if (ObjectUtil.isNull(product) || product.getIsDel()) { - throw new CrmebException("拼团主商品不存在"); - } - if (product.getStock().equals(0) || cartNum > product.getStock()) { - throw new CrmebException("拼团主商品库存不足"); - } - // 主商品sku - StoreProductAttrValue productAttrValue = storeProductAttrValueService.getByProductIdAndSkuAndType(productId, combinationAttrValue.getSuk(), Constants.PRODUCT_TYPE_NORMAL); - if (ObjectUtil.isNull(productAttrValue)) { - throw new CrmebException("拼团主商品规格不存在"); - } - if (productAttrValue.getStock() <= 0 || cartNum > productAttrValue.getStock()) { - throw new CrmebException("拼团主商品规格库存不足"); - } - - MyRecord record = new MyRecord(); - record.set("activityId", combinationId); - record.set("activityAttrValueId", attrValueId); - record.set("productId", productId); - record.set("attrValueId", productAttrValue.getId()); - record.set("num", cartNum); - record.set("pinkId", storeCartResponse.getPinkId()); - recordList.add(record); - } - } else {// 普通商品处理 - /** - * 1.判断商品有效 - * 2.判断商品库存 - * 3.判断商品规格库存 - */ - for (StoreCartResponse cartResponse : cartInfoList) { - productId = cartResponse.getProductId(); - cartNum = cartResponse.getCartNum(); - attrValueId = Integer.parseInt(cartResponse.getProductAttrUnique()); - StoreProduct product = storeProductService.getById(productId); - if (ObjectUtil.isNull(product) || product.getIsDel() || !product.getIsShow()) { - throw new CrmebException("购买的商品不存在或已下架"); - } - if (product.getStock().equals(0) || cartNum > product.getStock()) { - throw new CrmebException("购买的商品库存不足"); - } - StoreProductAttrValue productAttrValue = storeProductAttrValueService.getByIdAndProductIdAndType(attrValueId, productId, Constants.PRODUCT_TYPE_NORMAL); - if (ObjectUtil.isNull(productAttrValue)) { - throw new CrmebException("购买的商品规格不存在"); - } - if (productAttrValue.getStock() <= 0 || cartNum > productAttrValue.getStock()) { - throw new CrmebException("购买的商品规格库存不足"); - } - - MyRecord record = new MyRecord(); - record.set("productId", productId); - record.set("num", cartNum); - record.set("attrValueId", attrValueId); - recordList.add(record); - } - } - return recordList; - } - - /** - * 获取可用优惠券 - * @param storeCartResponse 购物车参数 - * @return 可用优惠券集合 - */ - public List getCanUseCouponList(List storeCartResponse){ - StoreCouponUserSearchRequest userSearchRequest = new StoreCouponUserSearchRequest(); - userSearchRequest.setUid(userService.getUserIdException()); - userSearchRequest.setStatus(0); - PageParamRequest pageRequest = new PageParamRequest(); - pageRequest.setPage(1); - pageRequest.setLimit(999); - List allUserCouponList = storeCouponUserService.getList(userSearchRequest, pageRequest).getList(); - List canUseUseCouponList = new ArrayList<>(); // 可用优惠券 - // 根据优惠券使用额度筛选优惠券 - if(null != allUserCouponList){ - for (StoreCartResponse cartResponse : storeCartResponse) { - canUseUseCouponList = allUserCouponList.stream() - .filter(coupon -> cartResponse.getTruePrice().compareTo(coupon.getMinPrice()) <= 0) - .distinct().collect(Collectors.toList()); - } - } - - return canUseUseCouponList; - } - - /** - * 封装现有支付方式 - * @return 支付方式集合 - */ - public List getPayType(){ - List payType = new ArrayList<>(); - payType.add(Constants.PAY_TYPE_WE_CHAT); - payType.add(Constants.PAY_TYPE_YUE); - payType.add(Constants.PAY_TYPE_OFFLINE); - payType.add(Constants.PAY_TYPE_ALI_PAY); - return payType; - } - - /** - * 判断订单是否存在 - * @param orderKey orderKey - * @return 结果 - */ - public Boolean checkOrderExist(String orderKey, int userId){ - StoreOrder storeOrderPram = new StoreOrder(); - storeOrderPram.setUid(userId); - List existOrderList = storeOrderService.getByEntity(storeOrderPram); - return existOrderList.size() > 0; - } - - /** - * 检查支付类型 - * @param payType 支付类型标识 - * @return 是否支持 - */ - public Boolean checkPayType(String payType){ - boolean result = false; - payType = payType.toLowerCase(); - switch (payType){ - case PayConstants.PAY_TYPE_WE_CHAT: - result = systemConfigService.getValueByKey(SysConfigConstants.CONFIG_PAY_WEIXIN_OPEN).equals("1"); - break; - case PayConstants.PAY_TYPE_YUE: - result = (systemConfigService.getValueByKey(SysConfigConstants.CONFIG_YUE_PAY_STATUS).equals("1")); - break; - } - return result; - } - - - /** - * 计算价格集合 - * 计算逻辑说明,先从最小的逻辑找,1:是否指定包邮,2:按照区域计算邮费,3:默认缺省模版中的计算方式 - * @param storeCartResponse 购物车参数 - * @param userAddress 用户收货地址 - * @return 计算后的价格集合 - */ - public PriceGroupResponse getOrderPriceGroup(List storeCartResponse, UserAddress userAddress){ - PriceGroupResponse priceGroupResponse = new PriceGroupResponse(); - BigDecimal storePostage = BigDecimal.ZERO, // 运费 - storeFreePostage = BigDecimal.ZERO, // 满额包邮 - totalPrice = BigDecimal.ZERO, // 订单总金额 - costPrice = BigDecimal.ZERO, // 订单成本价 - vipPrice = BigDecimal.ZERO; // 订单会员优惠价 - - for (StoreCartResponse cartResponse : storeCartResponse) { - totalPrice = totalPrice.add(cartResponse.getTruePrice().multiply(BigDecimal.valueOf(cartResponse.getCartNum()))); - costPrice = costPrice.add(cartResponse.getCostPrice().multiply(BigDecimal.valueOf(cartResponse.getCartNum()))); - vipPrice = vipPrice.add(cartResponse.getVipTruePrice().multiply(BigDecimal.valueOf(cartResponse.getCartNum()))); - } - // 判断是否满额包邮 type=1按件数 2按重量 3按体积 - // 全场满额包邮开关 - String postageSwitchString = systemConfigService.getValueByKey("store_free_postage_switch"); - // 全场满额包邮金额 - String storeFreePostageString = systemConfigService.getValueByKey("store_free_postage"); - if (postageSwitchString.equals("true") && (storeFreePostageString.equals("0") || totalPrice.compareTo(new BigDecimal(storeFreePostageString)) >= 0)) { - storePostage = BigDecimal.ZERO; - storeFreePostage = BigDecimal.ZERO; - } else{ - if (ObjectUtil.isNull(userAddress) || userAddress.getCityId() <= 0) { - // 用户地址不存在,默认运费为0元 - storePostage = BigDecimal.ZERO; - } else { - // 有用户地址的情况下 - // 运费根据商品计算 - Map proMap = CollUtil.newHashMap(); - storeCartResponse.stream().forEach(e -> { - Integer proId = e.getProductInfo().getId(); - if (proMap.containsKey(proId)) { - MyRecord record = proMap.get(proId); - record.set("totalPrice", record.getBigDecimal("totalPrice").add(e.getTruePrice().multiply(BigDecimal.valueOf(e.getCartNum())))); - record.set("totalNum", record.getInt("totalNum") + e.getCartNum()); - BigDecimal weight = e.getProductInfo().getAttrInfo().getWeight().multiply(BigDecimal.valueOf(e.getCartNum())); - record.set("weight", record.getBigDecimal("weight").add(weight)); - BigDecimal volume = e.getProductInfo().getAttrInfo().getVolume().multiply(BigDecimal.valueOf(e.getCartNum())); - record.set("volume", record.getBigDecimal("volume").add(volume)); - } else { - MyRecord record = new MyRecord(); - record.set("totalPrice", e.getTruePrice().multiply(BigDecimal.valueOf(e.getCartNum()))); - record.set("totalNum", e.getCartNum()); - record.set("tempId", e.getProductInfo().getTempId()); - record.set("proId", proId); - BigDecimal weight = e.getProductInfo().getAttrInfo().getWeight().multiply(BigDecimal.valueOf(e.getCartNum())); - record.set("weight", weight); - BigDecimal volume = e.getProductInfo().getAttrInfo().getVolume().multiply(BigDecimal.valueOf(e.getCartNum())); - 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; - } - } - } - } - priceGroupResponse.setStorePostage(storePostage); - priceGroupResponse.setStoreFreePostage(storeFreePostage); - priceGroupResponse.setTotalPrice(totalPrice); - priceGroupResponse.setCostPrice(costPrice); - priceGroupResponse.setVipPrice(vipPrice); - priceGroupResponse.setPayPrice(storePostage.add(totalPrice)); - return priceGroupResponse; - } - - /** - * 缓存订单信息 - * @param userId 用户id - * @param confirmOrderResponse 确认订单对象 - * @return 缓存结果 - */ - public String cacheSetOrderInfo(Integer userId,ConfirmOrderResponse confirmOrderResponse){ -// String key = DigestUtils.md5Hex(DateUtil.getNowTime().toString()+CrmebUtil.getUuid()); - String key = DateUtil.getNowTime().toString()+CrmebUtil.getUuid(); - redisUtil.set("user_order:" + userId + key, JSONObject.toJSONString(confirmOrderResponse),Constants.ORDER_CASH_CONFIRM, TimeUnit.MINUTES); - return key; - } - - /** - * 获取已缓存的订单信息 - * @param userId 用户id - * @param cacheKey 缓存key - * @return 订单确认对象JSON - */ - public String cacheGetOrderInfo(Integer userId, String cacheKey){ - String key = "user_order:" + userId + cacheKey; - boolean exists = redisUtil.exists(key); - if(!exists) return null; - return redisUtil.get(key).toString(); - } - - /** - * 删除缓存订单信息 - * @param userId 用户id - * @param cacheKey 缓存key - */ - public void cacheDeleteOrderInfo(Integer userId, String cacheKey){ - String key = "user_order:" + userId + cacheKey; - boolean exists = redisUtil.exists(key); - if(!exists) return; - redisUtil.remove(key); - } - - /** - * 更新当前订单结算信息 切换收货地址以及积分抵扣后支付金额可能会变动 - * @param orderKey - * @param userId - * @param confirmOrderResponse - */ - public void cacheRepliceOrderInfo(String orderKey,Integer userId, ConfirmOrderResponse confirmOrderResponse){ - String key = "user_order:" + userId + orderKey; - if(redisUtil.exists(key)){ - redisUtil.remove(key); - } - redisUtil.set(key, JSONObject.toJSONString(confirmOrderResponse),Constants.ORDER_CASH_CONFIRM, TimeUnit.MINUTES); - } - - /** - * 根据订单号查询订单信息 - * @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; - } - - /** - * 订单数据缓存进redis订单通用 - * @param user 订单缓存key - * @param list 待缓存的订单数据 - */ - public String setCacheOrderData(User user,Object list){ - Long cacheKey = DateUtil.getTime()+user.getUid(); - String key = Constants.ORDER_CACHE_PER + cacheKey; - redisUtil.set(key,JSONObject.toJSONString(list), Constants.ORDER_CASH_CONFIRM, TimeUnit.MINUTES); - return key; - } - - /** - * 根据缓存key获取已缓存订单数据 - * @param cacheKey 缓存key - * @return 查询到的缓存订单数据 - */ - public String getCacheOrderData(String cacheKey){ - if(!redisUtil.exists(cacheKey)) return null; - return redisUtil.get(cacheKey).toString(); - } - - /** - * 翻译支付方式给前端 - * @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; - } - - /** - * 根据订单对象获取订单配送中文 - * @param order 订单对象 - * @return 配送方式中文字符串 - */ - public String getPayTypeStrByOrder(StoreOrder order){ - return order.getShippingType() == 1 ? "快递":"自提"; - } - - /** 这里的方法完全是为了订单中调用而封装 订单支付成功有余额支付和微信支付成功回调中 - * 微信小程序发送付款成功订阅消息 - * @param paySuccess 付款成功订阅消息 - * @param userId 用户Id - */ - public void sendWeiChatMiniMessageForPaySuccess(WechatSendMessageForPaySuccess paySuccess, int userId){ - wechatSendMessageForMinService.sendPaySuccessMessage(paySuccess,userId); - } - - /** - * 微信小程序发送发货快递通知订阅消息 - * @param storeOrder 发送快递 - * @param userId 接收消息的用户id - */ - public void sendWeiChatMiniMessageForPackageExpress(StoreOrder storeOrder, int userId){ - WechatSendMessageForPackage toPackage = new WechatSendMessageForPackage( - getOrderPayTypeStr(storeOrder.getPayType()),storeOrder.getOrderId(),storeOrder.getUserAddress(), - storeOrder.getUserPhone(),storeOrder.getRealName() - ); - wechatSendMessageForMinService.sendRePackageMessage(toPackage,userId); - } - - /** - * 微信小程序发送 配送通知订阅消息 - * @param storeOrder 配送订单信息 - * @param userId 接收消息的用户id - */ - public void senWeiChatMiniMessageForDeliver(StoreOrder storeOrder, int userId){ - WechatSendMessageForDistrbution distrbution = new WechatSendMessageForDistrbution( - storeOrder.getId()+"",storeOrder.getDeliveryName(),storeOrder.getDeliveryId()+"", - "商家已经开始配送", "暂无",getStoreNameAndCarNumString(storeOrder.getId()),"暂无" - ); - wechatSendMessageForMinService.sendDistrbutionMessage(distrbution,userId); - } - - /** - * 下单前秒杀验证 - * @param storeCartPram 秒杀参数 - * @param currentUser 当前购买人 - */ - public StoreSeckill validSecKill(StoreCart storeCartPram, User currentUser) { - // 判断秒杀商品是否有效 - StoreSeckill storeProductPram = new StoreSeckill(); - storeProductPram.setId(storeCartPram.getSeckillId()); - storeProductPram.setIsDel(false); - storeProductPram.setIsShow(true); - List existSecKills = storeSeckillService.getByEntity(storeProductPram); - if(null == existSecKills) throw new CrmebException("该商品已下架或者删除"); - - // 判断秒杀时间段 - StoreSeckill existSecKill = existSecKills.get(0); - StoreSeckillManger seckillManger = storeSeckillMangerService.getById(existSecKill.getTimeId()); - // 判断日期是否过期 - String stopTimeStr = DateUtil.dateToStr(existSecKill.getStopTime(),Constants.DATE_FORMAT_DATE); - Date stopDate = DateUtil.strToDate( stopTimeStr + " " + seckillManger.getEndTime() +":00:00", Constants.DATE_FORMAT); - if(DateUtil.getTwoDateDays(DateUtil.nowDateTime(),stopDate) < 0){ - throw new CrmebException("秒杀商品已过期"); - } - // 判断是否在秒杀时段内(小时),秒杀开始时间 <= 当前时间 <= 秒杀结束时间 - int hour = cn.hutool.core.date.DateUtil.date().getField(Calendar.HOUR_OF_DAY);// 现在的小时 - if (seckillManger.getStartTime() > hour || seckillManger.getEndTime() < hour) { - throw new CrmebException("秒杀商品已过期"); - } - - - // 判断秒杀商品库存和秒杀限量 - StoreProductAttrValue spavPram = new StoreProductAttrValue() - .setId(Integer.valueOf(storeCartPram.getProductAttrUnique())) - .setType(Constants.PRODUCT_TYPE_SECKILL); - List currentSecKillAttrValues = storeProductAttrValueService.getByEntity(spavPram); - if(null == currentSecKillAttrValues || currentSecKillAttrValues.size() == 0){ - throw new CrmebException("未找到该商品信息"); - } - StoreProductAttrValue storeProductAttrValue = currentSecKillAttrValues.get(0); // 仅仅会获取一条数据 - // 当天参与活动次数 -根据用户和秒杀信息查询当天订单判断订单数量 -// StoreOrder soPram = new StoreOrder().setUid(currentUser.getUid()).setSeckillId(storeCartPram.getSeckillId()); -// List userCurrentDaySecKillOrders = storeOrderService.getUserCurrentDaySecKillOrders(soPram); -// -// // 判断是否有待支付订单 -// List unPayOrders = userCurrentDaySecKillOrders.stream().filter(e -> !e.getPaid()).collect(Collectors.toList()); -// if(unPayOrders.size() > 0) throw new CrmebException("您有秒杀待支付订单,请支付后再购买"); -// -// // 判断是否达到上线 -// if(null != userCurrentDaySecKillOrders && userCurrentDaySecKillOrders.size() >= existSecKill.getNum()){ -// throw new CrmebException("您已经达到当前秒杀活动上限"); -// } -// -// // 达到商品限量 sku quota -// List secKillOrderIds = userCurrentDaySecKillOrders.stream().map(StoreOrder::getId).collect(Collectors.toList()); -// HashMap> storeOrderInfos = storeOrderInfoService.getMapInId(secKillOrderIds); -// for (int i = 0; i < userCurrentDaySecKillOrders.size(); i++) { -// StoreOrder storeOrder = userCurrentDaySecKillOrders.get(i); -// List storeOrderInfoVos = storeOrderInfos.get(storeOrder.getId()); -// // 判断购买上线 用户当前订单中已经存在的当前秒杀商品 -// int sum = storeOrderInfoVos.stream().mapToInt(e -> e.getInfo().getPayNum()).sum(); -// if(storeCartPram.getSeckillId().equals(storeOrder.getSeckillId()) -// && storeProductAttrValue.getQuota() < sum){ -// throw new CrmebException("您已经达到当前秒杀活动上限"); -// } -// } - - return existSecKill; - } - - /** - * 下单前砍价验证 - * @param storeCartPram 砍价参数 - * @param currentUser 当前购买人 - * @return - */ - public MyRecord validBargain(StoreCart storeCartPram, User currentUser) { - // 判断砍价商品是否有效 - StoreBargain existBargain = storeBargainService.getByIdException(storeCartPram.getBargainId()); - // 判断购买数量 - if (storeCartPram.getCartNum() > existBargain.getQuota()) { - throw new CrmebException("砍价商品库存不足"); - } - if (existBargain.getQuota() <= 0 || existBargain.getStock() <= 0) {// 销量等于限量 - throw new CrmebException("当前拼团商品已售罄"); - } - - // 判断砍价活动时间段 - long timeMillis = System.currentTimeMillis(); - if (timeMillis < existBargain.getStartTime()) { - throw new CrmebException("砍价商品活动未开始"); - } - if (timeMillis > existBargain.getStopTime()) { - throw new CrmebException("砍价商品已过期"); - } - - // 判断用户是否砍价完成 - BigDecimal surplusPrice = storeBargainUserHelpService.getSurplusPrice(storeCartPram.getBargainId(), currentUser.getUid()); - if (surplusPrice.compareTo(BigDecimal.ZERO) > 0) { - throw new CrmebException("请先完成砍价"); - } - - // 判断砍价商品库存和砍价限量 - StoreProductAttrValue storeProductAttrValue = storeProductAttrValueService.getByIdAndProductIdAndType(Integer.valueOf(storeCartPram.getProductAttrUnique()), storeCartPram.getBargainId(), Constants.PRODUCT_TYPE_BARGAIN); - if(ObjectUtil.isNull(storeProductAttrValue)){ - throw new CrmebException("未找到该商品规格信息"); - } - if (storeProductAttrValue.getQuota() <= 0 || storeProductAttrValue.getStock() <= 0){// sku销量等于限量 - throw new CrmebException("当前砍价商品已售罄"); - } - -// // 参与活动次数 -根据用户和秒杀信息查询当天订单判断订单数量 -// StoreOrder soPram = new StoreOrder().setUid(currentUser.getUid()).setBargainId(storeCartPram.getBargainId()); -// List userCurrentBargainOrders = storeOrderService.getUserCurrentBargainOrders(soPram); -// -// // 判断是否有待支付订单 -// List unPayOrders = userCurrentBargainOrders.stream().filter(e -> !e.getPaid()).collect(Collectors.toList()); -// if(unPayOrders.size() > 0) throw new CrmebException("您有砍价待支付订单,请支付后再购买"); -// -// // 判断是否达到上限 -// List noRefundOrders = userCurrentBargainOrders.stream().filter(i -> i.getRefundStatus() != 2).collect(Collectors.toList()); -// if(CollUtil.isNotEmpty(userCurrentBargainOrders) && noRefundOrders.size() >= existBargain.getNum()){ -// throw new CrmebException("您已经达到当前砍价活动上限"); -// } - MyRecord record = new MyRecord(); - record.set("product", existBargain); - record.set("attrInfo", storeProductAttrValue); - return record; - } - - /** - * 下单前拼团验证 - * @param storeCartPram 拼团参数 - * @param currentUser 当前购买人 - * @return - */ - public MyRecord validCombination(StoreCart storeCartPram, User currentUser) { - // 判断拼团商品是否有效 - StoreCombination existCombination = storeCombinationService.getByIdException(storeCartPram.getCombinationId()); - - // 判断拼团时间段 - long timeMillis = System.currentTimeMillis(); - if (timeMillis < existCombination.getStartTime()) { - throw new CrmebException("拼团商品活动未开始"); - } - if (timeMillis >= existCombination.getStopTime()) { - throw new CrmebException("拼团商品已过期"); - } - // 判断购买数量 - if (storeCartPram.getCartNum() > existCombination.getOnceNum()) { - throw new CrmebException("购买数量超过单次拼团购买上限"); - } - if (storeCartPram.getCartNum() > existCombination.getQuota()) { - throw new CrmebException("拼团商品库存不足"); - } - if (existCombination.getQuota() <= 0 || existCombination.getStock() <= 0) {// 销量等于限量 - throw new CrmebException("当前拼团商品已售罄"); - } - - // 如果时参团,判断团队是否已满员 - if (ObjectUtil.isNotNull(storeCartPram.getPinkId()) && storeCartPram.getPinkId() > 0) { - Integer countPeople = storePinkService.getCountByKid(storeCartPram.getPinkId()); - if (countPeople >= existCombination.getPeople()) { - throw new CrmebException("当前拼团人数已满"); - } - } - - // 判断拼团商品规格库存和拼团限量 - // 判断商品对应属性是否有效 - StoreProductAttrValue storeProductAttrValue = storeProductAttrValueService.getByIdAndProductIdAndType(Integer.valueOf(storeCartPram.getProductAttrUnique()), storeCartPram.getCombinationId(), Constants.PRODUCT_TYPE_PINGTUAN); - if(ObjectUtil.isNull(storeProductAttrValue)){ - throw new CrmebException("未找到该商品信息"); - } - if (storeProductAttrValue.getQuota() <= 0 || storeProductAttrValue.getStock() <= 0){// sku销量等于限量 - throw new CrmebException("当前拼团商品已售罄"); - } - if (storeCartPram.getCartNum() > storeProductAttrValue.getQuota()) { - throw new CrmebException("数量超过拼团商品库存上限"); - } - - // 用户参与活动的次数 - StoreOrder soPram = new StoreOrder().setUid(currentUser.getUid()).setCombinationId(storeCartPram.getCombinationId()); - List userCombinationOrders = storeOrderService.getByEntity(soPram); - - if (CollUtil.isNotEmpty(userCombinationOrders)) { - // 判断是否有待支付订单 - List unPayOrders = userCombinationOrders.stream().filter(e -> !e.getPaid()).collect(Collectors.toList()); - if(unPayOrders.size() > 0) throw new CrmebException("您有拼团待支付订单,请支付后再购买"); - - List noRefundOrders = userCombinationOrders.stream().filter(i -> i.getRefundStatus() != 2).collect(Collectors.toList()); - int payNum = userCombinationOrders.stream().mapToInt(order -> { - if (order.getRefundStatus() != 2) { - return order.getTotalNum(); - } - return 0; - }).sum(); - if (CollUtil.isNotEmpty(noRefundOrders) && existCombination.getNum() <= payNum){ - throw new CrmebException("您已达到该商品拼团活动上限"); - } - if ((payNum + storeCartPram.getCartNum()) > existCombination.getNum()) { - throw new CrmebException("超过该商品拼团活动您的购买上限"); - } - } - - MyRecord record = new MyRecord(); - record.set("product", existCombination); - record.set("attrInfo", storeProductAttrValue); - return record; - } -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/controller/SystemUserLevelController.java b/crmeb/src/main/java/com/zbkj/crmeb/system/controller/SystemUserLevelController.java deleted file mode 100644 index aa059a94..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/controller/SystemUserLevelController.java +++ /dev/null @@ -1,147 +0,0 @@ -package com.zbkj.crmeb.system.controller; - -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.PageParamRequest; -import com.zbkj.crmeb.system.model.SystemUserLevel; -import com.zbkj.crmeb.system.request.SystemUserLevelRequest; -import com.zbkj.crmeb.system.request.SystemUserLevelSearchRequest; -import com.zbkj.crmeb.system.service.SystemUserLevelService; -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~2020 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; - - /** - * 分页显示设置用户等级表 - * @param request 搜索条件 - * @param pageParamRequest 分页参数 - * @author Mr.Zhang - * @since 2020-04-13 - */ - @ApiOperation(value = "分页列表") - @RequestMapping(value = "/list", method = RequestMethod.GET) - public CommonResult> getList(@ModelAttribute SystemUserLevelSearchRequest request, @ModelAttribute PageParamRequest pageParamRequest){ - CommonPage systemUserLevelCommonPage = CommonPage.restPage(systemUserLevelService.getList(request, pageParamRequest)); - return CommonResult.success(systemUserLevelCommonPage); - } - - /** - * 新增设置用户等级表 - * @param request SystemUserLevelRequest 新增参数 - * @author Mr.Zhang - * @since 2020-04-13 - */ - @ApiOperation(value = "新增") - @RequestMapping(value = "/save", method = RequestMethod.POST) - public CommonResult save(@RequestBody @Validated SystemUserLevelRequest request){ - if(systemUserLevelService.create(request)){ - return CommonResult.success(); - }else{ - return CommonResult.failed(); - } - } - - /** - * 删除设置用户等级表 - * @param id Integer - * @author Mr.Zhang - * @since 2020-04-13 - */ - @ApiOperation(value = "删除") - @RequestMapping(value = "/delete", method = RequestMethod.GET) - public CommonResult delete(@RequestParam(value = "id") Integer id){ - SystemUserLevel systemUserLevel = new SystemUserLevel(); - systemUserLevel.setId(id); - systemUserLevel.setIsDel(true); - if(systemUserLevelService.updateById(systemUserLevel)){ - return CommonResult.success(); - }else{ - return CommonResult.failed(); - } - } - - /** - * 修改设置用户等级表 - * @param id integer id - * @param request 修改参数 - * @author Mr.Zhang - * @since 2020-04-13 - */ - @ApiOperation(value = "修改") - @RequestMapping(value = "/update", method = RequestMethod.POST) - public CommonResult update(@RequestParam Integer id, - @RequestBody @Validated SystemUserLevelRequest request){ - if(systemUserLevelService.update(id, request)){ - return CommonResult.success(); - }else{ - return CommonResult.failed(); - } - } - - /** - * 查询设置用户等级表信息 - * @param id Integer - * @author Mr.Zhang - * @since 2020-04-13 - */ - @ApiOperation(value = "详情") - @RequestMapping(value = "/info", method = RequestMethod.GET) - public CommonResult info(@RequestParam(value = "id") Integer id){ - SystemUserLevel systemUserLevel = systemUserLevelService.getById(id); - return CommonResult.success(systemUserLevel); - } - - /** - * 是否使用 - * @param id Integer - * @author Mr.Zhang - * @since 2020-04-13 - */ - @ApiOperation(value = "是否使用") - @RequestMapping(value = "/use", method = RequestMethod.GET) - @ApiImplicitParams({ - @ApiImplicitParam(name="id", value="id", dataType = "Integer", required = true), - @ApiImplicitParam(name="value", value="是否使用, 1=是,0=否", dataType = "Boolean", required = true) - }) - public CommonResult use(@RequestParam(value = "id") Integer id, - @RequestParam(value = "value") Boolean value){ - SystemUserLevel systemUserLevel = new SystemUserLevel(); - systemUserLevel.setId(id); - systemUserLevel.setIsShow(value); - if(systemUserLevelService.updateById(systemUserLevel)){ - return CommonResult.success(); - }else{ - return CommonResult.failed(); - } - } -} - - - diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemAdminRequest.java b/crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemAdminRequest.java deleted file mode 100644 index b5c91cda..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemAdminRequest.java +++ /dev/null @@ -1,78 +0,0 @@ -package com.zbkj.crmeb.system.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~2020 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 SystemAdminRequest 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 loginCount; - - @ApiModelProperty(value = "后台管理员级别") - private Integer level; - - @ApiModelProperty(value = "后台管理员状态 1有效0无效") - private Boolean status; - - @ApiModelProperty(value = "是否删除 1删除 0未删除") - private Boolean isDel; - - @ApiModelProperty(value = "手机号码") - private String phone; - - @ApiModelProperty(value = "是否接收短信") - private Boolean isSms; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemUserLevelSearchRequest.java b/crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemUserLevelSearchRequest.java deleted file mode 100644 index cd7d352c..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemUserLevelSearchRequest.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.zbkj.crmeb.system.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.NotNull; -import java.io.Serializable; -import java.math.BigDecimal; - -/** - * 设置用户等级表 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 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="SystemUserLevelSearchRequest对象", description="设置用户等级表") -public class SystemUserLevelSearchRequest implements Serializable { - - private static final long serialVersionUID=1L; - - @ApiModelProperty(value = "会员名称") - @NotNull - private String name; - - @ApiModelProperty(value = "是否显示 1=显示,0=隐藏") - @NotNull - private Boolean isShow; - - @ApiModelProperty(value = "是否删除.1=删除,0=未删除") - @NotNull - private Boolean isDel; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/service/SystemAttachmentService.java b/crmeb/src/main/java/com/zbkj/crmeb/system/service/SystemAttachmentService.java deleted file mode 100644 index f85cf2dd..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/service/SystemAttachmentService.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.zbkj.crmeb.system.service; - -import com.baomidou.mybatisplus.extension.service.IService; -import com.common.PageParamRequest; -import com.zbkj.crmeb.system.model.SystemAttachment; -import com.zbkj.crmeb.upload.vo.FileResultVo; - -import java.util.List; - -/** - * SystemAttachmentService 接口 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -public interface SystemAttachmentService extends IService { - void create(FileResultVo file, Integer pid); - - void async(); - - void updateCloudType(Integer attId, int type); - - List getList(Integer pid,PageParamRequest pageParamRequest); - - String prefixImage(String path); - - String prefixFile(String str); - - String clearPrefix(String attribute); - - /** - * 附件基本查询 - * @param systemAttachment 附件参数 - * @return 附件 - */ - List getByEntity(SystemAttachment systemAttachment); -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/service/SystemConfigService.java b/crmeb/src/main/java/com/zbkj/crmeb/system/service/SystemConfigService.java deleted file mode 100644 index 2b9e4ecc..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/service/SystemConfigService.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.zbkj.crmeb.system.service; - -import com.baomidou.mybatisplus.extension.service.IService; -import com.common.PageParamRequest; -import com.zbkj.crmeb.express.vo.ExpressSheetVo; -import com.zbkj.crmeb.system.model.SystemConfig; -import com.zbkj.crmeb.system.request.SystemFormCheckRequest; - -import java.util.HashMap; -import java.util.List; - -/** - * SystemConfigService 接口 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -public interface SystemConfigService extends IService { - List getList(PageParamRequest pageParamRequest); - - String getValueByKey(String key); - - /** - * 同时获取多个配置 - * @param keys 多个配置key - * @return 查询到的多个结果 - */ - List getValuesByKes(List keys); - - boolean updateOrSaveValueByName(String name, String value); - - String getValueByKeyException(String key); - - boolean saveForm(SystemFormCheckRequest systemFormCheckRequest); - - HashMap info(Integer formId); - - boolean checkName(String name); - - /** - * 获取面单默认配置信息 - * @return - */ - ExpressSheetVo getDeliveryInfo(); -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/service/SystemRoleService.java b/crmeb/src/main/java/com/zbkj/crmeb/system/service/SystemRoleService.java deleted file mode 100644 index df637e24..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/service/SystemRoleService.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.zbkj.crmeb.system.service; - -import com.baomidou.mybatisplus.extension.service.IService; -import com.common.PageParamRequest; -import com.zbkj.crmeb.category.vo.CategoryTreeVo; -import com.zbkj.crmeb.system.model.SystemRole; -import com.zbkj.crmeb.system.request.SystemRoleSearchRequest; - -import java.util.List; - -/** - * SystemRoleService 接口 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -public interface SystemRoleService extends IService { - - List getList(SystemRoleSearchRequest request, PageParamRequest pageParamRequest); - - /** - * 根据id集合获取对应权限列表 - * @param ids id集合 - * @return 对应的权限列表 - */ - List getListInIds(List ids); - - Boolean checkAuth(String uri); - - List menu(); - - Boolean updateStatus(Integer id, Boolean status); -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/service/impl/SystemAdminServiceImpl.java b/crmeb/src/main/java/com/zbkj/crmeb/system/service/impl/SystemAdminServiceImpl.java deleted file mode 100644 index 8eb6368a..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/service/impl/SystemAdminServiceImpl.java +++ /dev/null @@ -1,449 +0,0 @@ -package com.zbkj.crmeb.system.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.common.PageParamRequest; -import com.constants.Constants; -import com.constants.SysConfigConstants; -import com.constants.SysGroupDataConstants; -import com.exception.CrmebException; -import com.github.pagehelper.PageHelper; -import com.utils.CrmebUtil; -import com.utils.ValidateFormUtil; -import com.zbkj.crmeb.authorization.manager.TokenManager; -import com.zbkj.crmeb.authorization.model.TokenModel; -import com.zbkj.crmeb.system.dao.SystemAdminDao; -import com.zbkj.crmeb.system.model.SystemAdmin; -import com.zbkj.crmeb.system.model.SystemRole; -import com.zbkj.crmeb.system.request.SystemAdminAddRequest; -import com.zbkj.crmeb.system.request.SystemAdminLoginRequest; -import com.zbkj.crmeb.system.request.SystemAdminRequest; -import com.zbkj.crmeb.system.request.SystemRoleSearchRequest; -import com.zbkj.crmeb.system.response.SystemAdminResponse; -import com.zbkj.crmeb.system.response.SystemGroupDataAdminLoginBannerResponse; -import com.zbkj.crmeb.system.service.SystemAdminService; -import com.zbkj.crmeb.system.service.SystemConfigService; -import com.zbkj.crmeb.system.service.SystemGroupDataService; -import com.zbkj.crmeb.system.service.SystemRoleService; -import com.zbkj.crmeb.user.model.UserToken; -import com.zbkj.crmeb.user.service.UserTokenService; -import com.zbkj.crmeb.validatecode.model.ValidateCode; -import com.zbkj.crmeb.validatecode.service.ValidateCodeService; -import com.zbkj.crmeb.wechat.response.WeChatAuthorizeLoginGetOpenIdResponse; -import com.zbkj.crmeb.wechat.service.WeChatService; -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.Map; -import java.util.stream.Collectors; - -/** - * SystemAdminServiceImpl 接口实现 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 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; - - @Resource - private TokenManager tokenManager; - - @Autowired - private UserTokenService userTokenService; - - @Autowired - private WeChatService weChatService; - - @Autowired - private ValidateCodeService validateCodeService; - - @Autowired - private SystemConfigService systemConfigService; - - @Autowired - private SystemGroupDataService systemGroupDataService; - - - @Override - public List getList(SystemAdminRequest request, PageParamRequest pageParamRequest){ - PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); - - //带SystemAdminRequest类的多条件查询 - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - SystemAdmin systemAdmin = new SystemAdmin(); - BeanUtils.copyProperties(request,systemAdmin); -// lambdaQueryWrapper.setEntity(systemAdmin); - if(StringUtils.isNotBlank(systemAdmin.getAccount())){ - lambdaQueryWrapper.eq(SystemAdmin::getAccount, systemAdmin.getAccount()); - } - - if(null != systemAdmin.getId()){ - lambdaQueryWrapper.eq(SystemAdmin::getId, systemAdmin.getId()); - } - if(null != systemAdmin.getIsDel()){ - lambdaQueryWrapper.eq(SystemAdmin::getIsDel, systemAdmin.getIsDel()); - } - if(StringUtils.isNotBlank(systemAdmin.getLastIp())){ - lambdaQueryWrapper.eq(SystemAdmin::getLastIp, systemAdmin.getLastIp()); - } - - if(null != systemAdmin.getLevel()){ - lambdaQueryWrapper.eq(SystemAdmin::getLevel, systemAdmin.getLevel()); - } - if(null != systemAdmin.getLoginCount()){ - lambdaQueryWrapper.eq(SystemAdmin::getLoginCount, systemAdmin.getLoginCount()); - } - if(StringUtils.isNotBlank(systemAdmin.getRealName())){ - lambdaQueryWrapper.like(SystemAdmin::getRealName, systemAdmin.getRealName()); - lambdaQueryWrapper.or().like(SystemAdmin::getAccount, systemAdmin.getRealName()); - } - if(StringUtils.isNotBlank(systemAdmin.getRoles())){ - lambdaQueryWrapper.eq(SystemAdmin::getRoles, systemAdmin.getRoles()); - } - if(null != systemAdmin.getStatus()){ - lambdaQueryWrapper.eq(SystemAdmin::getStatus, systemAdmin.getStatus()); - } - List systemAdmins = dao.selectList(lambdaQueryWrapper); - List systemAdminResponses = new ArrayList<>(); - PageParamRequest pageRole = new PageParamRequest(); - pageRole.setLimit(999); - List roleList = systemRoleService.getList(new SystemRoleSearchRequest(), pageRole); - for (SystemAdmin admin : systemAdmins) { - SystemAdminResponse sar = new SystemAdminResponse(); - BeanUtils.copyProperties(admin, sar); - sar.setLastTime(admin.getUpdateTime()); - if(StringUtils.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; - } - - @Override - public SystemAdminResponse login(SystemAdminLoginRequest systemAdminLoginRequest, String ip) throws Exception { - // 判断验证码 - ValidateCode validateCode = new ValidateCode(systemAdminLoginRequest.getKey(), systemAdminLoginRequest.getCode()); - boolean codeCheckResult = validateCodeService.check(validateCode); - if(!codeCheckResult) throw new CrmebException("验证码不正确"); - // 执行登录 - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(SystemAdmin::getAccount, systemAdminLoginRequest.getAccount()); - SystemAdmin systemAdmin = dao.selectOne(lambdaQueryWrapper); - if(null == systemAdmin){ - throw new CrmebException("用户不存在"); - } - // base64加密获取真正密码 - String encryptPassword = CrmebUtil.encryptPassword(systemAdminLoginRequest.getPwd(), systemAdminLoginRequest.getAccount()); - if(!systemAdmin.getPwd().equals(encryptPassword)){ - throw new CrmebException("账号或者密码不正确"); - } - if(!systemAdmin.getStatus()){ - throw new CrmebException("用户已经被禁用"); - } - if(systemAdmin.getIsDel()){ - throw new CrmebException("用户已经被删除"); - } - - TokenModel tokenModel = tokenManager.createToken(systemAdmin.getAccount(), systemAdmin.getId().toString(), TokenModel.TOKEN_REDIS); - SystemAdminResponse systemAdminResponse = new SystemAdminResponse(); - systemAdminResponse.setToken(tokenModel.getToken()); - BeanUtils.copyProperties(systemAdmin, systemAdminResponse); - - //更新最后登录信息 - systemAdmin.setLoginCount(systemAdmin.getLoginCount() + 1); - systemAdmin.setLastIp(ip); - updateById(systemAdmin); - - return systemAdminResponse; - } - - @Override - public Boolean logout(String token) throws Exception { - tokenManager.deleteToken(token, TokenModel.TOKEN_REDIS); - return true; - } - - /** - * 管理员详情 - * @param request - * @return - * @throws Exception - */ - @Override - public SystemAdminResponse getInfo(SystemAdminRequest request) throws Exception { - QueryWrapper queryWrapper = new QueryWrapper(); -// queryWrapper.eq("account", request.getAccount()); -// queryWrapper.eq("account", request.getAccount()); - queryWrapper.eq("id", request.getId()); - SystemAdmin systemAdmin = dao.selectOne(queryWrapper); - - if(null == systemAdmin || systemAdmin.getId() < 0){ - return null; - } - SystemAdminResponse systemAdminResponse = new SystemAdminResponse(); - BeanUtils.copyProperties(systemAdmin, systemAdminResponse); - return systemAdminResponse; - } - - /** - * 新增管理员 - * @param systemAdminAddRequest - * @return - */ - @Override - public SystemAdminResponse saveAdmin(SystemAdminAddRequest systemAdminAddRequest) { - try { - // 管理员名称唯一校验 - 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()); - systemAdminAddRequest.setPwd(pwd); // 设置为加密后的密码 - systemAdmin.setPwd(pwd); - SystemAdminResponse systemAdminResponse = new SystemAdminResponse(); - BeanUtils.copyProperties(systemAdminAddRequest, systemAdminResponse); - if(dao.insert(systemAdmin) <= 0){ - throw new CrmebException("新增管理员失败"); - } - return systemAdminResponse; - - }catch (Exception e){ - throw new CrmebException("新增管理员异常 " + e.getMessage()); - } - - } - - private Integer checkAccount(String account) { - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(SystemAdmin::getAccount, account); - return dao.selectCount(lambdaQueryWrapper); - - } - - @Override - public SystemAdminResponse updateAdmin(SystemAdminRequest systemAdminRequest) throws Exception { - SystemAdminResponse systemAdminResponseExsit = getInfo(systemAdminRequest); - if(null == systemAdminResponseExsit){ - throw new CrmebException("管理员不存在"); - } - - // 如果有手机号,校验手机号 - if (StrUtil.isNotBlank(systemAdminRequest.getPhone())) { - ValidateFormUtil.isPhoneException(systemAdminRequest.getPhone()); - } - - SystemAdmin systemAdmin = new SystemAdmin(); - BeanUtils.copyProperties(systemAdminRequest, systemAdmin); - if(null != systemAdminRequest.getPwd()){ - String pwd = CrmebUtil.encryptPassword(systemAdminRequest.getPwd(), systemAdminRequest.getAccount()); - systemAdmin.setPwd(pwd); - } - if(dao.updateById(systemAdmin) > 0){ - SystemAdminResponse systemAdminResponse = new SystemAdminResponse(); - BeanUtils.copyProperties(systemAdmin, systemAdminResponse); - return systemAdminResponse; - } - throw new CrmebException("更新管理员异常"); - } - - @Override - public SystemAdminResponse getInfoByToken(String token) throws Exception{ - Boolean tokenExsit = tokenManager.checkToken(token, TokenModel.TOKEN_REDIS); - if(!tokenExsit){ - throw new CrmebException("当前token无效"); - } - TokenModel tokenModel = tokenManager.getToken(token, TokenModel.TOKEN_REDIS); - SystemAdminRequest systemAdminRequest = new SystemAdminRequest(); -// systemAdminRequest.setAccount(tokenModel.getUserNo()); - systemAdminRequest.setId(tokenModel.getUserId()); - return getInfo(systemAdminRequest); - } - - /** - * 获取当前用户id - * @author Mr.Zhang - * @since 2020-04-28 - * @return Integer - */ - @Override - public Integer getAdminId() { - return Integer.parseInt(tokenManager.getLocalInfoException("id")); - } - - /** - * 获取当前用户信息 - * @author Mr.Zhang - * @since 2020-04-28 - * @return SystemAdmin - */ - @Override - public SystemAdmin getInfo() { - return getInfo(getAdminId()); - } - - /** - * 获取用户信息 - * @author Mr.Zhang - * @since 2020-04-28 - * @return SystemAdmin - */ - @Override - public SystemAdmin getInfo(Integer adminId) { - return getById(adminId); - } - - /** - * 绑定微信 - * @author Mr.Zhang - * @since 2020-04-28 - * @return SystemAdmin - */ - public void bind(String code, Integer adminId) { - try{ - //通过code获取用户信息 - WeChatAuthorizeLoginGetOpenIdResponse response = weChatService.authorizeLogin(code); - UserToken userToken = userTokenService.getByOpenidAndType(response.getOpenId(), Constants.THIRD_ADMIN_LOGIN_TOKEN_TYPE_PUBLIC); - if(null == userToken){ - userTokenService.bind(response.getOpenId(), Constants.THIRD_ADMIN_LOGIN_TOKEN_TYPE_PUBLIC, adminId); - } - }catch (Exception e){ - throw new CrmebException("绑定失败:" + e.getMessage()); - } - } - - /** - * 修改后台管理员状态 - * @param id - * @param status - * @return - */ - @Override - public Boolean updateStatus(Integer id, Boolean status) { - SystemAdmin systemAdmin = getById(id); - if (ObjectUtil.isNull(systemAdmin)) { - throw new CrmebException("用户不存在"); - } - if (systemAdmin.getStatus().equals(status)) { - return true; - } - systemAdmin.setStatus(status); - return updateById(systemAdmin); - } - - @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 = getById(id); - if (ObjectUtil.isNull(systemAdmin)) { - throw new CrmebException("后台管理员不存在!"); - } - 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()); - } - - /** - * 获取登录页图片 - * @return - */ - @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; - } - -} - diff --git a/crmeb/src/main/java/com/zbkj/crmeb/system/service/impl/SystemRoleServiceImpl.java b/crmeb/src/main/java/com/zbkj/crmeb/system/service/impl/SystemRoleServiceImpl.java deleted file mode 100644 index 48b2ed21..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/system/service/impl/SystemRoleServiceImpl.java +++ /dev/null @@ -1,164 +0,0 @@ -package com.zbkj.crmeb.system.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.extension.service.impl.ServiceImpl; -import com.common.PageParamRequest; -import com.constants.Constants; -import com.exception.CrmebException; -import com.github.pagehelper.PageHelper; -import com.utils.CrmebUtil; -import com.zbkj.crmeb.category.service.CategoryService; -import com.zbkj.crmeb.category.vo.CategoryTreeVo; -import com.zbkj.crmeb.system.dao.SystemRoleDao; -import com.zbkj.crmeb.system.model.SystemAdmin; -import com.zbkj.crmeb.system.model.SystemRole; -import com.zbkj.crmeb.system.request.SystemRoleSearchRequest; -import com.zbkj.crmeb.system.service.SystemAdminService; -import com.zbkj.crmeb.system.service.SystemRoleService; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.List; - -/** - * SystemRoleServiceImpl 接口实现 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 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 SystemAdminService systemAdminService; - - @Autowired - private CategoryService categoryService; - - - /** - * 列表 - * @param request 请求参数 - * @param pageParamRequest 分页类参数 - * @author Mr.Zhang - * @since 2020-04-18 - * @return List - */ - @Override - public List getList(SystemRoleSearchRequest request, PageParamRequest pageParamRequest) { - PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - if(null != request.getStatus()) - lambdaQueryWrapper.eq(SystemRole::getStatus, request.getStatus()); - if(null != 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); - } - - /** - * 检测是否有访问菜单接口取的权限 - * @param uri String 请求参数 - * @author Mr.Zhang - * @since 2020-07-06 - * @return Boolean - */ - @Override - public Boolean checkAuth(String uri) { - //查询当前路由是否配置了权限,如果没有配置则直接通过 - if(!categoryService.checkUrl(uri)){ - return true; - } - - List categoryIdList = getRoleListInRoleId(); - if(categoryIdList.size() < 1){ - return false; - } - - //查询分类,根据in id和 路由 - return categoryService.checkAuth(categoryIdList, uri); - } - - /** - * 带结构的无线级分类 - * @author Mr.Zhang - * @since 2020-04-16 - */ - @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); - } - - private List getRoleListInRoleId(){ - //获取当前用户的所有权限 - SystemAdmin systemAdmin = systemAdminService.getInfo(); - 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/src/main/java/com/zbkj/crmeb/task/cloud/AsyncCloud.java b/crmeb/src/main/java/com/zbkj/crmeb/task/cloud/AsyncCloud.java deleted file mode 100644 index eae05c5e..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/task/cloud/AsyncCloud.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.zbkj.crmeb.task.cloud; - -import com.utils.DateUtil; -import com.zbkj.crmeb.system.service.SystemAttachmentService; -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~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -//@Component -//@Configuration //读取配置 -//@EnableScheduling // 2.开启定时任务 -public class AsyncCloud { - //日志 - private static final Logger logger = LoggerFactory.getLogger(AsyncCloud.class); - - @Autowired - private SystemAttachmentService systemAttachmentService; - - @Scheduled(fixedDelay = 1000 * 5L) //5秒钟同步一次数据 - public void init(){ - logger.info("---AsyncCloud task------produce Data with fixed rate task: Execution Time - {}", DateUtil.nowDateTime()); - try { - systemAttachmentService.async(); - - }catch (Exception e){ - e.printStackTrace(); - logger.error("AsyncCloud.task" + " | msg : " + e.getMessage()); - } - - } -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/task/sms/AsyncSmsSend.java b/crmeb/src/main/java/com/zbkj/crmeb/task/sms/AsyncSmsSend.java deleted file mode 100644 index c4fab6a2..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/task/sms/AsyncSmsSend.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.zbkj.crmeb.task.sms; - -import com.utils.DateUtil; -import com.zbkj.crmeb.sms.service.SmsService; -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~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Component -@Configuration //读取配置 -@EnableScheduling // 2.开启定时任务 -public class AsyncSmsSend { - //日志 - private static final Logger logger = LoggerFactory.getLogger(AsyncSmsSend.class); - - @Autowired - private SmsService smsService; - - @Scheduled(fixedDelay = 1000 * 5L) //5秒同步一次数据 - public void init(){ - logger.info("---AsyncSmsSend task------produce Data with fixed rate task: Execution Time - {}", DateUtil.nowDate()); - try { - smsService.consume(); - - }catch (Exception e){ - e.printStackTrace(); - logger.error("AsyncSmsSend.task" + " | msg : " + e.getMessage()); - } - - } -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/upload/service/UploadService.java b/crmeb/src/main/java/com/zbkj/crmeb/upload/service/UploadService.java deleted file mode 100644 index c3d53cfe..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/upload/service/UploadService.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.zbkj.crmeb.upload.service; - -import com.zbkj.crmeb.upload.vo.FileResultVo; -import org.springframework.web.multipart.MultipartFile; - -import java.io.IOException; - -/** - * UploadService 接口 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -public interface UploadService { - FileResultVo image(MultipartFile multipart, String model, Integer pid) throws IOException; - - FileResultVo file(MultipartFile multipart, String model, Integer pid) throws IOException; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/upload/service/impl/AsyncServiceImpl.java b/crmeb/src/main/java/com/zbkj/crmeb/upload/service/impl/AsyncServiceImpl.java deleted file mode 100644 index b506daf8..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/upload/service/impl/AsyncServiceImpl.java +++ /dev/null @@ -1,252 +0,0 @@ -package com.zbkj.crmeb.upload.service.impl; - -import com.aliyun.oss.OSS; -import com.aliyun.oss.OSSClientBuilder; -import com.constants.Constants; -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.crmeb.system.model.SystemAttachment; -import com.zbkj.crmeb.system.service.SystemConfigService; -import com.zbkj.crmeb.upload.service.AsyncService; -import com.zbkj.crmeb.upload.service.CosService; -import com.zbkj.crmeb.upload.service.OssService; -import com.zbkj.crmeb.upload.service.QiNiuService; -import com.zbkj.crmeb.upload.vo.CloudVo; -import lombok.Data; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.List; - - -/** - * AsyncServiceImpl 同步到云服务 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Service -@Data -public class AsyncServiceImpl implements AsyncService { - - private static final Logger logger = LoggerFactory.getLogger(AsyncServiceImpl.class); - - - @Autowired - private SystemConfigService systemConfigService; - - - @Autowired - private OssService ossService; - - @Autowired - private CosService cosService; - - @Autowired - private QiNiuService qiNiuService; - - private CloudVo cloudVo = new CloudVo(); - - // 读取不同配置的前缀 - private String pre; - - // 当前使用的云服务Url - private String leftBase = null; - - /** - * 图片上传 - * @param systemAttachmentList List 附件列表 - * @author Mr.Zhang - * @since 2020-05-06 - */ - @Override - public void async(List systemAttachmentList){ - if(systemAttachmentList.size() < 1){ - return; - } - try{ - //图片上传类型 1本地 2七牛云 3OSS 4COS, 默认本地,任务轮询数据库放入云服务 - String uploadType = systemConfigService.getValueByKeyException("uploadType"); - //获取配置信息 - Integer type = Integer.parseInt(uploadType); - switch (type){ - case 2: - pre = "qn"; - setConf(type); - qCloud(systemAttachmentList); - break; - case 3: - pre = "al"; - setConf(type); - oss(systemAttachmentList); - break; - case 4: - pre = "tx"; - setConf(type); - cos(systemAttachmentList); - break; - default: - pre = "local"; - break; - } - }catch (Exception e){ - //TODO - } - } - - private void setConf(Integer uploadType) { - cloudVo.setDomain(systemConfigService.getValueByKeyException(pre+"UploadUrl")); - if(uploadType > 1){ - cloudVo.setAccessKey(systemConfigService.getValueByKeyException(pre+"AccessKey")); - cloudVo.setSecretKey(systemConfigService.getValueByKeyException(pre+"SecretKey")); - cloudVo.setBucketName(systemConfigService.getValueByKeyException(pre+"StorageName")); - cloudVo.setRegion(systemConfigService.getValueByKeyException(pre+"StorageRegion")); - } - } - - /** - * 同步到腾讯云oss - * @param systemAttachmentList List 附件列表 - * @author Mr.Zhang - * @since 2020-05-06 - */ - private void cos(List systemAttachmentList) { - if(systemAttachmentList.size() < 1){ - return; - } - - // 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 webPath = systemConfigService.getValueByKey(Constants.UPLOAD_ROOT_PATH_CONFIG_KEY); - for (SystemAttachment systemAttachment : systemAttachmentList) { - logger.info("AsyncServiceImpl.cos.id " + systemAttachment.getAttId()); -// cosService.upload(cloudVo, systemAttachment.getSattDir(), systemAttachment.getAttDir(), systemAttachment.getAttId(), cosClient); - cosService.upload(cloudVo, systemAttachment.getSattDir(), webPath + systemAttachment.getSattDir(), systemAttachment.getAttId(), cosClient); - } - }catch (Exception e){ - logger.error("AsyncServiceImpl.cos.fail " + e.getMessage()); - }finally { - cosClient.shutdown(); - } - } - - /** - * 同步到七牛云 - * @param systemAttachmentList List 附件列表 - * @author Mr.Zhang - * @since 2020-05-06 - */ - private void qCloud(List systemAttachmentList) { - if(systemAttachmentList.size() < 1){ - return; - } - - try{ - // 构造一个带指定Zone对象的配置类, 默认华东 - Configuration cfg = new Configuration(Region.huadong()); - if(cloudVo.getRegion().equals("huabei")){ - cfg = new Configuration(Region.huabei()); - } - if(cloudVo.getRegion().equals("huanan")){ - cfg = new Configuration(Region.huanan()); - } - if(cloudVo.getRegion().equals("beimei")){ - cfg = new Configuration(Region.beimei()); - } - if(cloudVo.getRegion().equals("dongnanya")){ - 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 webPath = systemConfigService.getValueByKey(Constants.UPLOAD_ROOT_PATH_CONFIG_KEY); - for (SystemAttachment systemAttachment : systemAttachmentList) { - logger.info("AsyncServiceImpl.qCloud.id " + systemAttachment.getAttId()); -// qiNiuService.upload(uploadManager, cloudVo, upToken, -// systemAttachment.getSattDir(), systemAttachment.getAttDir(), systemAttachment.getAttId()); //异步处理 - qiNiuService.upload(uploadManager, cloudVo, upToken, - systemAttachment.getSattDir(), webPath + systemAttachment.getSattDir(), systemAttachment.getAttId()); //异步处理 - } - }catch (Exception e){ - logger.error("AsyncServiceImpl.qCloud.fail " + e.getMessage()); - } - } - - - /** - * 同步到阿里云oss - * @param systemAttachmentList List 附件列表 - * @author Mr.Zhang - * @since 2020-05-06 - */ - private void oss(List systemAttachmentList){ - if(systemAttachmentList.size() < 1){ - return; - } - try{ - String webPath = systemConfigService.getValueByKey(Constants.UPLOAD_ROOT_PATH_CONFIG_KEY); - for (SystemAttachment systemAttachment : systemAttachmentList) { - logger.info("AsyncServiceImpl.oss.id " + systemAttachment.getAttId()); -// ossService.upload(cloudVo, systemAttachment.getSattDir(), systemAttachment.getAttDir(), -// systemAttachment.getAttId()); //异步处理 - ossService.upload(cloudVo, systemAttachment.getSattDir(), webPath + systemAttachment.getSattDir(), - systemAttachment.getAttId()); //异步处理 - } - }catch (Exception e){ - logger.error("AsyncServiceImpl.oss fail " + e.getMessage()); - } - } - - @Override - public String getCurrentBaseUrl() { - if(leftBase != null){ - return leftBase; - } - 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"); - } -} - diff --git a/crmeb/src/main/java/com/zbkj/crmeb/upload/service/impl/UploadServiceImpl.java b/crmeb/src/main/java/com/zbkj/crmeb/upload/service/impl/UploadServiceImpl.java deleted file mode 100644 index 8ba06f99..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/upload/service/impl/UploadServiceImpl.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.zbkj.crmeb.upload.service.impl; - -import com.constants.Constants; -import com.utils.UploadUtil; -import com.zbkj.crmeb.system.service.SystemAttachmentService; -import com.zbkj.crmeb.system.service.SystemConfigService; -import com.zbkj.crmeb.upload.service.UploadService; -import com.zbkj.crmeb.upload.vo.FileResultVo; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.web.multipart.MultipartFile; - -import java.io.IOException; - - -/** - * UploadServiceImpl 接口实现 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Service -public class UploadServiceImpl implements UploadService { - @Autowired - private SystemConfigService systemConfigService; - - @Autowired - private SystemAttachmentService systemAttachmentService; - - /** - * 图片上传 - * @param multipart MultipartFile 上传文件流 - * @param model String 上传模块 - * @author Mr.Zhang - * @since 2020-05-06 - */ - @Override - public FileResultVo image(MultipartFile multipart, String model, Integer pid) throws IOException { - setImageUpload(model); - FileResultVo file = UploadUtil.file(multipart); - //文件入库 - file.setType(file.getType().replace("image/", "")); - systemAttachmentService.create(file, pid); - return file; - } - - /** - * 图片文件 - * @param multipart MultipartFile 上传文件流 - * @param model String 上传模块 - * @author Mr.Zhang - * @since 2020-05-06 - */ - @Override - public FileResultVo file(MultipartFile multipart, String model, Integer pid) throws IOException { - setFileUpload(model); - FileResultVo file = UploadUtil.file(multipart); - - //文件入库 - file.setType(file.getType().replace("file/", "")); - systemAttachmentService.create(file, pid); - return file; - } - - /** - * 设置上传图片参数 - * @param model String 上传模块 - * @author Mr.Zhang - * @since 2020-05-06 - */ - private void setImageUpload(String model){ - UploadUtil.setRootPath(systemConfigService.getValueByKey(Constants.UPLOAD_ROOT_PATH_CONFIG_KEY)); - UploadUtil.setModelPath(model); - UploadUtil.setExtStr(systemConfigService.getValueByKey(Constants.UPLOAD_IMAGE_EXT_STR_CONFIG_KEY)); - UploadUtil.setSize(Integer.parseInt(systemConfigService.getValueByKey(Constants.UPLOAD_IMAGE_MAX_SIZE_CONFIG_KEY))); - UploadUtil.setType(Constants.UPLOAD_TYPE_IMAGE); - } - - /** - * 设置上传文件参数 - * @param model String 上传模块 - * @author Mr.Zhang - * @since 2020-05-06 - */ - private void setFileUpload(String model){ - UploadUtil.setRootPath(systemConfigService.getValueByKey(Constants.UPLOAD_ROOT_PATH_CONFIG_KEY)); - UploadUtil.setModelPath(model); - UploadUtil.setExtStr(systemConfigService.getValueByKey(Constants.UPLOAD_FILE_EXT_STR_CONFIG_KEY)); - UploadUtil.setSize(Integer.parseInt(systemConfigService.getValueByKey(Constants.UPLOAD_FILE_MAX_SIZE_CONFIG_KEY))); - UploadUtil.setType(Constants.UPLOAD_TYPE_FILE); - } -} - diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/controller/UserBillController.java b/crmeb/src/main/java/com/zbkj/crmeb/user/controller/UserBillController.java deleted file mode 100644 index 9cc856da..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/controller/UserBillController.java +++ /dev/null @@ -1,125 +0,0 @@ -package com.zbkj.crmeb.user.controller; - -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.PageParamRequest; -import com.zbkj.crmeb.finance.request.FundsMonitorSearchRequest; -import com.zbkj.crmeb.user.model.UserBill; -import com.zbkj.crmeb.user.request.UserBillRequest; -import com.zbkj.crmeb.user.response.UserBillResponse; -import com.zbkj.crmeb.user.service.UserBillService; -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.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - - -/** - * 用户账单表 前端控制器 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Slf4j -@RestController -@RequestMapping("api/admin/user/bill") -@Api(tags = "会员管理 -- 用户账单") -public class UserBillController { - - @Autowired - private UserBillService userBillService; - - /** - * 分页显示用户账单表 - * @param request 搜索条件 - * @param pageParamRequest 分页参数 - * @author Mr.Zhang - * @since 2020-04-28 - */ - @ApiOperation(value = "分页列表") - @RequestMapping(value = "/list", method = RequestMethod.POST) - public CommonResult> getList(@RequestBody @Validated FundsMonitorSearchRequest request, @Validated PageParamRequest pageParamRequest){ - CommonPage userBillCommonPage = CommonPage.restPage(userBillService.getListAdmin(request, pageParamRequest)); - return CommonResult.success(userBillCommonPage); - } - - /** - * 新增用户账单表 - * @param userBillRequest 新增参数 - * @author Mr.Zhang - * @since 2020-04-28 - */ - @ApiOperation(value = "新增") - @RequestMapping(value = "/save", method = RequestMethod.POST) - public CommonResult save(@Validated UserBillRequest userBillRequest){ - UserBill userBill = new UserBill(); - BeanUtils.copyProperties(userBillRequest, userBill); - - if(userBillService.save(userBill)){ - return CommonResult.success(); - }else{ - return CommonResult.failed(); - } - } - - /** - * 删除用户账单表 - * @param id Integer - * @author Mr.Zhang - * @since 2020-04-28 - */ - @ApiOperation(value = "删除") - @RequestMapping(value = "/delete", method = RequestMethod.GET) - public CommonResult delete(@RequestParam(value = "id") Integer id){ - if(userBillService.removeById(id)){ - return CommonResult.success(); - }else{ - return CommonResult.failed(); - } - } - - /** - * 修改用户账单表 - * @param id integer id - * @param userBillRequest 修改参数 - * @author Mr.Zhang - * @since 2020-04-28 - */ - @ApiOperation(value = "修改") - @RequestMapping(value = "/update", method = RequestMethod.POST) - public CommonResult update(@RequestParam Integer id, @Validated UserBillRequest userBillRequest){ - UserBill userBill = new UserBill(); - BeanUtils.copyProperties(userBillRequest, userBill); - userBill.setId(id); - - if(userBillService.updateById(userBill)){ - return CommonResult.success(); - }else{ - return CommonResult.failed(); - } - } - - /** - * 查询用户账单表信息 - * @param id Integer - * @author Mr.Zhang - * @since 2020-04-28 - */ - @ApiOperation(value = "详情") - @RequestMapping(value = "/info", method = RequestMethod.GET) - public CommonResult info(@RequestParam(value = "id") Integer id){ - return CommonResult.success(userBillService.getById(id)); - } -} - - - diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/request/UserBillDetailListRequest.java b/crmeb/src/main/java/com/zbkj/crmeb/user/request/UserBillDetailListRequest.java deleted file mode 100644 index f6c75582..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/request/UserBillDetailListRequest.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.zbkj.crmeb.user.request; - -import lombok.Data; -import springfox.documentation.annotations.ApiIgnore; - -/** - * 用户操作记录查询 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -public class UserBillDetailListRequest { - private String nickname; // 订单号或者推荐人昵称=备注模糊查询 - private String dateLimit; // 时间参数 - private String keywords; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/request/UserLevelRequest.java b/crmeb/src/main/java/com/zbkj/crmeb/user/request/UserLevelRequest.java deleted file mode 100644 index d36a946d..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/request/UserLevelRequest.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.zbkj.crmeb.user.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; - -/** - * 用户等级记录表 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 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 UserLevelRequest 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 = "过期时间") - private Integer validTime; - - @ApiModelProperty(value = "是否永久") - private Boolean isForever; - - @ApiModelProperty(value = "商户id") - private Integer merId; - - @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 addTime; - - @ApiModelProperty(value = "享受折扣") - private Integer discount; - - -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/request/UserLevelSearchRequest.java b/crmeb/src/main/java/com/zbkj/crmeb/user/request/UserLevelSearchRequest.java deleted file mode 100644 index 2b369c68..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/request/UserLevelSearchRequest.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.zbkj.crmeb.user.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; - -/** - * 用户等级记录表 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 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 UserLevelSearchRequest implements Serializable { - - private static final long serialVersionUID=1L; - - @ApiModelProperty(value = "用户uid") - private Integer uid; - - @ApiModelProperty(value = "等级vip") - private Integer levelId; - - @ApiModelProperty(value = "会员等级") - private Integer grade; - - @ApiModelProperty(value = "过期时间") - private Integer validTime; - - @ApiModelProperty(value = "是否永久") - private Boolean isForever; - - @ApiModelProperty(value = "商户id") - private Integer merId; - - @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 addTime; - - @ApiModelProperty(value = "享受折扣") - private Integer discount; - - -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/request/UserRequest.java b/crmeb/src/main/java/com/zbkj/crmeb/user/request/UserRequest.java deleted file mode 100644 index 71315da8..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/request/UserRequest.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.zbkj.crmeb.user.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~2020 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="UserRequest对象", description="用户表") -public class UserRequest implements Serializable { - - private static final long serialVersionUID=1L; - - @ApiModelProperty(value = "uid") - private Integer uid; - - @ApiModelProperty(value = "真实姓名") - @NotNull - private String realName; - - @ApiModelProperty(value = "生日") - @NotNull - private String birthday; - - @ApiModelProperty(value = "身份证号码") - @NotNull - private String cardId; - - @ApiModelProperty(value = "用户备注") - private String mark; - - @ApiModelProperty(value = "手机号码") - private String phone; - - @ApiModelProperty(value = "状态是否正常, 0 = 禁止, 1 = 正常") - @NotNull - 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 = "是否为推广员") - private Boolean isPromoter; - -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/service/UserBillService.java b/crmeb/src/main/java/com/zbkj/crmeb/user/service/UserBillService.java deleted file mode 100644 index 05ec39fe..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/service/UserBillService.java +++ /dev/null @@ -1,164 +0,0 @@ -package com.zbkj.crmeb.user.service; - -import com.baomidou.mybatisplus.extension.service.IService; -import com.common.PageParamRequest; -import com.github.pagehelper.PageInfo; -import com.zbkj.crmeb.finance.request.FundsMonitorRequest; -import com.zbkj.crmeb.finance.request.FundsMonitorSearchRequest; -import com.zbkj.crmeb.front.response.UserSpreadCommissionResponse; -import com.zbkj.crmeb.store.request.StoreOrderRefundRequest; -import com.zbkj.crmeb.user.model.User; -import com.zbkj.crmeb.user.model.UserBill; -import com.zbkj.crmeb.user.response.BillType; -import com.zbkj.crmeb.user.response.UserBillResponse; - -import java.math.BigDecimal; -import java.util.List; - -/** - * UserBillService 接口实现 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -public interface UserBillService extends IService { - - /** - * 列表 - * - * @param request 请求参数 - * @param pageParamRequest 分页类参数 - * @return List - * @author Mr.Zhang - * @since 2020-04-28 - */ - 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 - * @author Mr.Zhang - * @since 2020-05-29 - */ - Integer getSumInteger(Integer pm, Integer userId, String category, String date, String type); - - /** - * 新增/消耗 总金额 - * - * @param pm Integer 0 = 支出 1 = 获得 - * @param userId Integer 用户uid - * @param category String 类型 - * @param date String 时间范围 - * @param type String 小类型 - * @return UserBill - * @author Mr.Zhang - * @since 2020-05-29 - */ - BigDecimal getSumBigDecimal(Integer pm, Integer userId, String category, String date, String type); - - /** - * 按照月份分组, 余额 - * - * @return CommonPage - * @author Mr.Zhang - * @since 2020-06-08 - */ - PageInfo getListGroupByMonth(Integer userId, List typeList, PageParamRequest pageParamRequest, String category); - - /** - * 保存退款日志 - * - * @return boolean - * @author Mr.Zhang - * @since 2020-06-08 - */ - boolean saveRefundBill(StoreOrderRefundRequest request, User user); - - /** - * 列表 - * - * @param request 请求参数 - * @param pageParamRequest 分页类参数 - * @return List - * @author Mr.Zhang - * @since 2020-04-28 - */ - PageInfo getListAdmin(FundsMonitorSearchRequest request, PageParamRequest pageParamRequest); - - /** - * 获取资金操作类型 - * - * @return 操作类型集合,从数据库group by(type)查询获取 - */ - List getBillGroupType(); - - /** - * 返回资金操作类型 仅仅转换数据用 - * - * @return 操作类型 - */ - List getBillType(); - - /** - * 根据基本条件查询 - * - * @param bill 基本参数 - * @return 查询结果 - */ - List getByEntity(UserBill bill); - - /** - * 查询搜索明细类型参数 - * - * @return 明细类型集合 - */ - List getSearchOption(); - - /** - * 获取订单历史处理记录(退款使用) - * - * @param orderId 订单id - * @param uid 用户id - */ - List findListByOrderIdAndUid(Integer orderId, Integer uid); - - /** - * 资金监控 - * - * @param request 查询参数 - * @param pageParamRequest 分页参数 - * @return PageInfo - */ - PageInfo fundMonitoring(FundsMonitorRequest request, PageParamRequest pageParamRequest); - - /** - * 用户账单记录(现金) - * - * @param uid 用户uid - * @param type 记录类型:all-全部,expenditure-支出,income-收入 - * @return - */ - PageInfo nowMoneyBillRecord(Integer uid, String type, PageParamRequest pageRequest); - - /** - * 获取H5列表 - * - * @param userId Integer 用户uid - * @param category String 类型 - * @param pageParamRequest 分页类型 - * @return List - */ - List getH5List(Integer userId, String category, PageParamRequest pageParamRequest); -} \ No newline at end of file diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/service/impl/UserBillServiceImpl.java b/crmeb/src/main/java/com/zbkj/crmeb/user/service/impl/UserBillServiceImpl.java deleted file mode 100644 index 9fa49a5b..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/service/impl/UserBillServiceImpl.java +++ /dev/null @@ -1,492 +0,0 @@ -package com.zbkj.crmeb.user.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.common.CommonPage; -import com.common.PageParamRequest; -import com.constants.Constants; -import com.exception.CrmebException; -import com.github.pagehelper.Page; -import com.github.pagehelper.PageHelper; -import com.github.pagehelper.PageInfo; -import com.utils.DateUtil; -import com.utils.vo.dateLimitUtilVo; -import com.zbkj.crmeb.finance.request.FundsMonitorRequest; -import com.zbkj.crmeb.finance.request.FundsMonitorSearchRequest; -import com.zbkj.crmeb.front.response.UserSpreadCommissionResponse; -import com.zbkj.crmeb.store.request.StoreOrderRefundRequest; -import com.zbkj.crmeb.user.dao.UserBillDao; -import com.zbkj.crmeb.user.model.User; -import com.zbkj.crmeb.user.model.UserBill; -import com.zbkj.crmeb.user.response.BillType; -import com.zbkj.crmeb.user.response.UserBillResponse; -import com.zbkj.crmeb.user.service.UserBillService; -import com.zbkj.crmeb.user.service.UserService; -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.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -/** - * UserBillServiceImpl 接口实现 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 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; - - @Autowired - private UserService userService; - - private Page userBillPage; - - - /** - * 列表 - * @param request 请求参数 - * @param pageParamRequest 分页类参数 - * @author Mr.Zhang - * @since 2020-04-28 - * @return List - */ - @Override - public List getList(FundsMonitorSearchRequest request, PageParamRequest pageParamRequest) { - userBillPage = PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); - QueryWrapper queryWrapper = new QueryWrapper<>(); - getMonthSql(request, queryWrapper); - - //排序 - if(request.getSort() == null){ - queryWrapper.orderByDesc("create_time"); - }else{ - if(request.getSort().equals("asc")){ - 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(request.getLinkId().equals("gt")){ - 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 request 请求参数 - * @param pageParamRequest 分页类参数 - * @author Mr.Zhang - * @since 2020-04-28 - * @return List - */ - @Override - public PageInfo getListAdmin(FundsMonitorSearchRequest request, PageParamRequest pageParamRequest) { - userBillPage = PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); - Map map = new HashMap<>(); - if (StrUtil.isNotBlank(request.getKeywords())) { - map.put("keywords", "%"+request.getKeywords()+"%"); - } - if (StrUtil.isNotBlank(request.getCategory())) { - map.put("category", request.getCategory()); - } - //时间范围 - 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("开始时间不能大于结束时间!"); - } - - map.put("startTime", dateLimit.getStartTime()); - map.put("endTime", dateLimit.getEndTime()); - } - if (CollUtil.isNotEmpty(request.getUserIdList())) { - map.put("userIdList", request.getUserIdList()); - } - - List responses = dao.getListAdminAndIntegeal(map); - return CommonPage.copyPageInfo(userBillPage, responses); - } - - /** - * 新增/消耗 总数 - * @param pm Integer 0 = 支出 1 = 获得 - * @param userId Integer 用户uid - * @param category String 类型 - * @param date String 时间范围 - * @param type String 小类型 - * @author Mr.Zhang - * @since 2020-05-29 - * @return UserBill - */ - @Override - public Integer getSumInteger(Integer pm, Integer userId, String category, String date, String type) { - QueryWrapper queryWrapper = new QueryWrapper<>(); - - - queryWrapper.select("sum(number) as number"). - eq("category", category). - eq("uid", userId). - eq("status", 1); - 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()); - } - UserBill userBill = dao.selectOne(queryWrapper); - if(null == userBill || null == userBill.getNumber()){ - return 0; - } - return userBill.getNumber().intValue(); - } - - /** - * 新增/消耗 总金额 - * @param pm Integer 0 = 支出 1 = 获得 - * @param userId Integer 用户uid - * @param category String 类型 - * @param date String 时间范围 - * @param type String 小类型 - * @author Mr.Zhang - * @since 2020-05-29 - * @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); - } - - /** - * 按照月份分组, 余额 - * @author Mr.Zhang - * @since 2020-06-08 - * @return CommonPage - */ - @Override - public PageInfo getListGroupByMonth(Integer userId, List typeList, PageParamRequest pageParamRequest, String category) { - Page userBillPage = PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); - ArrayList userSpreadCommissionResponseList = new ArrayList<>(); - - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("uid", userId).eq("status", 1).eq("category", category); - if(CollUtil.isNotEmpty(typeList)){ - queryWrapper.in("type", typeList); - } - - queryWrapper.groupBy("left(create_time, 7)"); - queryWrapper.orderByDesc("left(create_time, 7)"); - List list = dao.selectList(queryWrapper); - if(list.size() < 1){ - return new PageInfo<>(); - } - - for (UserBill userBill : list) { - String date = DateUtil.dateToStr(userBill.getCreateTime(), Constants.DATE_FORMAT_MONTH); - userSpreadCommissionResponseList.add(new UserSpreadCommissionResponse(date, getListByMonth(userId, typeList, date, category))); - } - return CommonPage.copyPageInfo(userBillPage, userSpreadCommissionResponseList); - } - - /** - * 保存退款日志 - * @author Mr.Zhang - * @since 2020-06-08 - * @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); - } - - /** - * 获取资金操作类型 - * - * @return 操作类型集合,从数据库group by(type)查询获取 - */ - @Override - public List getBillGroupType() { - LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.groupBy(UserBill::getType); - return dao.selectList(lqw); - } - - /** - * 返回资金操作类型 仅仅转换数据用 - * - * @return 操作类型 - */ - @Override - public List getBillType() { - List responses = new ArrayList<>(); - List billGroupType = getBillGroupType(); - if(null != billGroupType && billGroupType.size() > 0){ - billGroupType.stream().map(e->{ - BillType b = new BillType(e.getTitle(),e.getCategory()); - responses.add(b); - return e; - }).collect(Collectors.toList()); - } - return responses; - } - - /** - * 根据基本条件查询 - * - * @param bill 基本参数 - * @return 查询结果 - */ - @Override - public List getByEntity(UserBill bill) { - LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.setEntity(bill); - return dao.selectList(lqw); - } - - /** - * 查询搜索明细类型参数 - * - * @return 明细类型集合 - */ - @Override - public List getSearchOption() { - QueryWrapper qw = new QueryWrapper<>(); - qw.select("DISTINCT title, type"); - qw.notIn("type","gain", "system_sub", "deduction", "sign"); - qw.notIn("category","exp", "integral"); - return dao.selectList(qw); - } - - /** - * 获取订单历史处理记录(退款使用) - * @param orderId 订单id - * @param uid 用户id - * @return - */ - @Override - public List findListByOrderIdAndUid(Integer orderId, Integer uid) { - LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.eq(UserBill::getUid, uid); - lqw.eq(UserBill::getLinkId, String.valueOf(orderId)); - lqw.eq(UserBill::getStatus, 1); - return dao.selectList(lqw); - } - - /** - * 资金监控 - * @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()); - } - List userBillResponses = dao.fundMonitoring(map); - return CommonPage.copyPageInfo(billPage, userBillResponses); - } - - /** - * 用户账单记录(现金) - * @param uid 用户uid - * @param type 记录类型:all-全部,expenditure-支出,income-收入 - * @return - */ - @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); - } - - /** - * 获取H5列表 - * - * @param userId Integer 用户uid - * @param category String 类型 - * @param pageParamRequest 分页类型 - * @return List - */ - @Override - public List getH5List(Integer userId, String category, PageParamRequest pageParamRequest) { - PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.select("id", "pm", "title", "number", "balance", "mark", "create_time"); - queryWrapper.eq("uid", userId); - queryWrapper.eq("category", category); - queryWrapper.eq("status", 1); - queryWrapper.orderByDesc("create_time"); - return dao.selectList(queryWrapper); - } - - /////////////////////////////////////////////////////////////////////// 自定义方法 - - /** - * 按照月份获取数据 - * @author Mr.Zhang - * @since 2020-06-08 - * @return List - */ - private List getListByMonth(Integer userId, List typeList, String month, String category) { - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.select("pm,title,number,create_time").eq("uid", userId). eq("status", 1).eq("left(create_time, 7)", month).eq("category", category); - if(CollUtil.isNotEmpty(typeList)){ - queryWrapper.in("type", typeList); - } - - queryWrapper.orderByDesc("create_time"); - return dao.selectList(queryWrapper); - } - -} - diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/service/impl/UserLevelServiceImpl.java b/crmeb/src/main/java/com/zbkj/crmeb/user/service/impl/UserLevelServiceImpl.java deleted file mode 100644 index 1308968c..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/service/impl/UserLevelServiceImpl.java +++ /dev/null @@ -1,242 +0,0 @@ -package com.zbkj.crmeb.user.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.common.PageParamRequest; -import com.constants.Constants; -import com.exception.CrmebException; -import com.github.pagehelper.PageHelper; -import com.utils.DateUtil; -import com.zbkj.crmeb.system.model.SystemUserLevel; -import com.zbkj.crmeb.system.request.SystemUserLevelSearchRequest; -import com.zbkj.crmeb.system.service.SystemUserLevelService; -import com.zbkj.crmeb.user.dao.UserLevelDao; -import com.zbkj.crmeb.user.model.User; -import com.zbkj.crmeb.user.model.UserLevel; -import com.zbkj.crmeb.user.request.UserLevelSearchRequest; -import com.zbkj.crmeb.user.service.UserLevelService; -import com.zbkj.crmeb.user.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; - -/** - * UserLevelServiceImpl 接口实现 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 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 request 请求参数 - * @param pageParamRequest 分页类参数 - * @author Mr.Zhang - * @since 2020-04-28 - * @return List - */ - @Override - public List getList(UserLevelSearchRequest request, PageParamRequest pageParamRequest) { - PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); - return dao.selectList(null); - } - - /** - * 修改用户等级 - * @param userId integer id - * @param levelId integer 等级 - * @author Mr.Zhang - * @since 2020-04-10 - * @return Boolean - */ - @Override - public boolean level(Integer userId, int levelId) { - SystemUserLevel systemUserLevel = systemUserLevelService.getById(levelId); - User user = userService.getById(userId); - UserLevel userLevelVo = checkUserLevel(userId, levelId, systemUserLevel); - - UserLevel userLevel = new UserLevel(); - userLevel.setStatus(true); - userLevel.setIsDel(false); - userLevel.setGrade(systemUserLevel.getGrade()); - userLevel.setUid(userId); - userLevel.setLevelId(levelId); - userLevel.setDiscount(systemUserLevel.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}", systemUserLevel.getName()); - userLevel.setMark(mark); - - if(userLevelVo == null){ - //创建新的会员等级信息 - save(userLevel); - }else{ - //有数据,更新即可 - userLevel.setId(userLevelVo.getId()); - updateById(userLevel); - } - - //更新会员等级 - user.setLevel(systemUserLevel.getGrade()); - userService.updateById(user); - return true; - } - - - /** - * 获取会员的等级信息,并且验证 - * @param userId integer id - * @param levelId integer 等级 - * @author Mr.Zhang - * @since 2020-04-10 - * @return Boolean - */ - private UserLevel checkUserLevel(Integer userId, Integer levelId, SystemUserLevel systemUserLevel) { - //查询等级是否存在 - if(systemUserLevel == null){ - throw new CrmebException("当前会员等级不存在"); - } - - if(systemUserLevel.getIsDel()){ - throw new CrmebException("当前会员等级已删除"); - } - - //当前用户会员是否过期 - return getUserLevel(userId, levelId); - } - - /** - * 获取会员的等级信息 - * @param userId integer id - * @author Mr.Zhang - * @since 2020-04-10 - * @return Boolean - */ - private UserLevel getUserLevel(Integer userId, Integer levelId) { - LambdaQueryWrapper levelLambdaQueryWrapper = new LambdaQueryWrapper<>(); - levelLambdaQueryWrapper.eq(UserLevel::getUid, userId); - levelLambdaQueryWrapper.eq(UserLevel::getLevelId, levelId); - levelLambdaQueryWrapper.eq(UserLevel::getIsDel, 0); - return dao.selectOne(levelLambdaQueryWrapper); - } - - /** - * 根据用户id获取用户等级信息 - * @param userId 用户id - * @return 用户等级 - */ - @Override - public UserLevel getUserLevelByUserId(Integer userId) { - LambdaQueryWrapper levelLambdaQueryWrapper = new LambdaQueryWrapper<>(); - levelLambdaQueryWrapper.eq(UserLevel::getUid, userId); - levelLambdaQueryWrapper.eq(UserLevel::getIsDel, 0); - return dao.selectOne(levelLambdaQueryWrapper); - } - - /** - * 用户升级 - * @param user - * @return - */ - @Override - public Boolean upLevel(User user) { - //确定当前经验所达到的等级 - SystemUserLevelSearchRequest systemUserLevelSearchRequest = new SystemUserLevelSearchRequest(); - systemUserLevelSearchRequest.setIsDel(false); - systemUserLevelSearchRequest.setIsShow(true); - List list = systemUserLevelService.getList(systemUserLevelSearchRequest, new PageParamRequest()); - - SystemUserLevel userLevelConfig = new SystemUserLevel(); - for (SystemUserLevel systemUserLevel : list) { - if(user.getExperience() > systemUserLevel.getExperience()){ - userLevelConfig = systemUserLevel; - continue; - } - break; - } - - if(userLevelConfig.getId() == null){ - System.out.println("未找到用户对应的等级"); - return Boolean.TRUE; - } - - // 判断用户是否还在原等级 - UserLevel userLevel = getByUid(user.getUid()); - if (ObjectUtil.isNotNull(userLevel) && userLevelConfig.getId().equals(userLevel.getLevelId())) { - // 之前有记录,并且等级不需要变化 - 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.getGrade()); - Boolean execute = transactionTemplate.execute(e -> { - if (userLevel == null) { - //创建新的会员等级信息 - save(newLevel); - } else { - //有数据,更新即可 -// newLevel.setId(userLevel.getId()); - save(newLevel); - // 将原等级删除 - userLevel.setIsDel(true); - updateById(userLevel); - } - - userService.updateById(user); - return Boolean.TRUE; - }); - return execute; - } - - private UserLevel getByUid(Integer uid) { - LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); - lqw.eq(UserLevel::getUid, uid); - lqw.eq(UserLevel::getStatus, true); - lqw.eq(UserLevel::getIsDel, false); - return dao.selectOne(lqw); - } -} - diff --git a/crmeb/src/main/java/com/zbkj/crmeb/user/vo/UserOperateFundsVo.java b/crmeb/src/main/java/com/zbkj/crmeb/user/vo/UserOperateFundsVo.java deleted file mode 100644 index 7123bad8..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/user/vo/UserOperateFundsVo.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.zbkj.crmeb.user.vo; - -import io.swagger.annotations.ApiModel; - -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; - -import java.io.Serializable; - -/** - * 资金操作 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 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 UserOperateFundsVo implements Serializable { - - private static final long serialVersionUID=1L; - public UserOperateFundsVo(){} - public UserOperateFundsVo(Integer uid, String foundsType, String value) { - this.uid = uid; - this.foundsType = foundsType; - this.value = value; - } - - private Integer uid; - - private String foundsType; - - private String value; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/controller/ProgramController.java b/crmeb/src/main/java/com/zbkj/crmeb/wechat/controller/ProgramController.java deleted file mode 100644 index 21dadf71..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/controller/ProgramController.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.zbkj.crmeb.wechat.controller; - -import com.common.CommonResult; -import com.zbkj.crmeb.wechat.service.WeChatService; -import com.zbkj.crmeb.wechat.vo.ProgramCategoryVo; -import com.zbkj.crmeb.wechat.vo.ProgramTempKeywordsVo; -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 java.util.List; - - -/** - * 微信缓存表 前端控制器 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Slf4j -@RestController -@RequestMapping("api/admin/wechat/program") -@Api(tags = "微信开放平台 -- 小程序") -public class ProgramController { - - @Autowired - private WeChatService weChatService; - - - /** - * 小程序行业信息 - * @author Mr.Zhang - * @since 2020-06-03 - */ - @ApiOperation(value = "小程序行业信息") - @RequestMapping(value = "/category", method = RequestMethod.GET) - public CommonResult> getCategory(){ - return CommonResult.success(weChatService.getProgramCategory()); - } - - - /** - * 通过微信公共模板tid获取关键字列表 - * @author Mr.Zhang - * @since 2020-06-03 - */ - @ApiOperation(value = "通过微信模板tid获取关键字列表") - @RequestMapping(value = "/getWeChatKeywordsByTid", method = RequestMethod.GET) - public CommonResult> getWeChatKeywordsByTid(@RequestParam(value = "tid") Integer tid){ - return CommonResult.success(weChatService.getWeChatKeywordsByTid(tid)); - } -} - - - diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/controller/TemplateMessageController.java b/crmeb/src/main/java/com/zbkj/crmeb/wechat/controller/TemplateMessageController.java deleted file mode 100644 index 8a6dc8e5..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/controller/TemplateMessageController.java +++ /dev/null @@ -1,170 +0,0 @@ -package com.zbkj.crmeb.wechat.controller; - -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.PageParamRequest; -import com.exception.CrmebException; -import com.zbkj.crmeb.wechat.model.TemplateMessage; -import com.zbkj.crmeb.wechat.request.TemplateMessageRequest; -import com.zbkj.crmeb.wechat.request.TemplateMessageSearchRequest; -import com.zbkj.crmeb.wechat.service.TemplateMessageService; -import com.zbkj.crmeb.wechat.vo.TemplateMessageIndustryVo; -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.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - - -/** - * 微信模板 前端控制器 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 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; - - /** - * 分页显示微信模板 - * - * @param request 搜索条件 - * @param pageParamRequest 分页参数 - * @author Mr.Zhang - * @since 2020-06-03 - */ - @ApiOperation(value = "分页列表") //配合swagger使用 - @RequestMapping(value = "/list", method = RequestMethod.GET) - public CommonResult> getList( - @Validated TemplateMessageSearchRequest request, - @Validated PageParamRequest pageParamRequest) { - CommonPage templateMessageCommonPage = - CommonPage.restPage(templateMessageService.getList(request, pageParamRequest)); - return CommonResult.success(templateMessageCommonPage); - } - -// /** -// * 新增微信模板 -// * -// * @param templateMessageRequest 新增参数 -// * @author Mr.Zhang -// * @since 2020-06-03 -// */ -// @ApiOperation(value = "新增") -// @RequestMapping(value = "/save", method = RequestMethod.POST) -// public CommonResult save(@RequestBody @Validated TemplateMessageRequest templateMessageRequest) { -// TemplateMessage templateMessage = new TemplateMessage(); -// BeanUtils.copyProperties(templateMessageRequest, templateMessage); -// templateMessage.setType(true); -// if (templateMessageService.save(templateMessage)) { -// return CommonResult.success(); -// } else { -// return CommonResult.failed(); -// } -// } - -// /** -// * 删除微信模板 -// * -// * @param id Integer -// * @author Mr.Zhang -// * @since 2020-06-03 -// */ -// @ApiOperation(value = "删除") -// @RequestMapping(value = "/delete/{id}", method = RequestMethod.GET) -// public CommonResult delete(@PathVariable Integer id) { -// if (templateMessageService.removeById(id)) { -// return CommonResult.success(); -// } else { -// return CommonResult.failed(); -// } -// } - -// /** -// * 修改微信模板 -// * -// * @param templateMessageRequest 修改参数 -// * @author Mr.Zhang -// * @since 2020-06-03 -// */ -// @ApiOperation(value = "修改") -// @RequestMapping(value = "/update/{id}", method = RequestMethod.POST) -// public CommonResult update(@PathVariable Integer id, -// @RequestBody @Validated TemplateMessageRequest templateMessageRequest) { -// TemplateMessage templateMessage = templateMessageService.infoException(id); -// templateMessage.setTempId(templateMessageRequest.getTempId()); -//// BeanUtils.copyProperties(templateMessageRequest, templateMessage); -// if (templateMessageService.updateById(templateMessage)) { -// return CommonResult.success(); -// } else { -// return CommonResult.failed(); -// } -// } - - /** - * 修改状态 - * - * @param id Integer id - * @param status Integer 状态 - * @author Mr.Zhang - * @since 2020-06-03 - */ - @ApiOperation(value = "修改") - @RequestMapping(value = "/update/status/{id}", method = RequestMethod.POST) - public CommonResult updateStatus(@PathVariable Integer id, @RequestParam Integer status) { -// TemplateMessage templateMessage = templateMessageService.infoException(id); - TemplateMessage templateMessage = templateMessageService.getById(id); - if (null == templateMessage) { - throw new CrmebException("此模板" + id + " 不存在或者已删除"); - } - templateMessage.setStatus(status); - if (templateMessageService.updateById(templateMessage)) { - return CommonResult.success(); - } else { - return CommonResult.failed(); - } - } - - /** - * 查询微信模板信息 - * - * @param id Integer - * @author Mr.Zhang - * @since 2020-06-03 - */ - @ApiOperation(value = "详情") - @RequestMapping(value = "/info/{id}", method = RequestMethod.GET) - public CommonResult info(@PathVariable Integer id) { - TemplateMessage templateMessage = templateMessageService.infoException(id); - return CommonResult.success(templateMessage); - } - - /** - * 查询微信模板信息 - * - * @author Mr.Zhang - * @since 2020-06-03 - */ - @ApiOperation(value = "行业信息") - @RequestMapping(value = "/industry", method = RequestMethod.GET) - public CommonResult getIndustry() { - return CommonResult.success(templateMessageService.getIndustry()); - } -} - - - diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/controller/WeChatController.java b/crmeb/src/main/java/com/zbkj/crmeb/wechat/controller/WeChatController.java deleted file mode 100644 index 9a657765..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/controller/WeChatController.java +++ /dev/null @@ -1,127 +0,0 @@ -package com.zbkj.crmeb.wechat.controller; - -import com.alibaba.fastjson.JSONObject; -import com.common.CommonResult; -import com.constants.WeChatConstants; -import com.utils.RedisUtil; -import com.zbkj.crmeb.wechat.service.WeChatService; -import com.zbkj.crmeb.wechat.service.WechatPublicService; -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.*; - -/** - * 微信缓存表 前端控制器 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 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 WeChatService weChatService; - - @Autowired - private RedisUtil redisUtil; - - @Autowired - private WechatPublicService wechatPublicService; - - /** - * 获取微信菜单 - * @author Mr.Zhang - * @since 2020-04-22 - */ - @ApiOperation(value = "获取自定义菜单") - @RequestMapping(value = "/public/get", method = RequestMethod.GET) - public CommonResult get(){ - return CommonResult.success(wechatPublicService.getCustomizeMenus()); - } - - /** - * 创建微信菜单 - * @param data 菜单数据,具体json格式参考微信开放平台 - * @author Mr.Zhang - * @since 2020-04-22 - */ - @ApiOperation(value = "保存自定义菜单") - @RequestMapping(value = "/public/create", method = RequestMethod.POST) - public CommonResult create(@RequestBody String data){ - return CommonResult.success(wechatPublicService.createMenus(data)); - } - - /** - * 删除微信菜单 - * @author Mr.Zhang - * @since 2020-04-22 - */ - @ApiOperation(value = "删除自定义菜单") - @RequestMapping(value = "/public/delete", method = RequestMethod.GET) - public CommonResult delete(){ - return CommonResult.success(wechatPublicService.deleteMenus()); - } - - //自定义菜单 - - /** - * 获取微信菜单 - * @author Mr.Zhang - * @since 2020-04-22 - */ - @ApiOperation(value = "获取个性化菜单") - @RequestMapping(value = "/public/self/get", method = RequestMethod.GET) - @ApiImplicitParam(name="isAsync", value="是否同步微信数据, true是,false否") - public CommonResult getSelf(@RequestParam(name = "isAsync", defaultValue = "false") Boolean isAsync){ - Object list = redisUtil.get(WeChatConstants.REDIS_PUBLIC_MENU_SELF_KEY); - if(list == null || list.equals("") || isAsync){ - //如果没有, 去读取 - JSONObject tagsList = weChatService.getSelf(); - redisUtil.set(WeChatConstants.REDIS_PUBLIC_MENU_SELF_KEY, tagsList); - list = tagsList; - } - return CommonResult.success(list); - } - - /** - * 创建微信菜单 - * @param data 菜单数据,具体json格式参考微信开放平台 - * @author Mr.Zhang - * @since 2020-04-22 - */ - @ApiOperation(value = "保存个性化菜单") - @RequestMapping(value = "/public/self/create", method = RequestMethod.POST) - public CommonResult createSelf(@RequestBody String data){ - return CommonResult.success(weChatService.createSelf(data)); - } - - /** - * 删除微信菜单 - * @param menuId 菜单id - * @author Mr.Zhang - * @since 2020-04-22 - */ - @ApiOperation(value = "删除个性化菜单") - @RequestMapping(value = "/public/self/delete", method = RequestMethod.GET) - - //参数说明 - @ApiImplicitParam(name="menuId",value="菜单ID") - public CommonResult deleteSelf(@RequestParam(name = "menuId") String menuId){ - return CommonResult.success(weChatService.deleteSelf(menuId)); - } -} - - - diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/controller/WeChatUserTagsController.java b/crmeb/src/main/java/com/zbkj/crmeb/wechat/controller/WeChatUserTagsController.java deleted file mode 100644 index af98c32b..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/controller/WeChatUserTagsController.java +++ /dev/null @@ -1,186 +0,0 @@ -package com.zbkj.crmeb.wechat.controller; - -import com.alibaba.fastjson.JSONObject; -import com.common.CommonResult; -import com.constants.WeChatConstants; -import com.utils.RedisUtil; -import com.zbkj.crmeb.wechat.service.WeChatService; -import io.swagger.annotations.*; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -import java.util.ArrayList; - - -/** - * 微信用户表 前端控制器 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Slf4j -@RestController -@RequestMapping("api/admin/wechat/user/tags") -@Api(tags = "微信开放平台 -- 微信用户标签") -public class WeChatUserTagsController { - - @Autowired - private WeChatService weChatService; - - @Autowired - private RedisUtil redisUtil; - - /** - * 标签列表 - * @param isAsync 是否同步,默认读缓存 - * @author Mr.Zhang - * @since 2020-04-11 - */ - @ApiOperation(value = "列表") - @RequestMapping(value = "/list", method = RequestMethod.GET) - @ApiImplicitParam(name="isAsync", value="是否同步微信数据, true是,false否") - public CommonResult getList(@RequestParam(name = "isAsync", defaultValue = "false") Boolean isAsync){ - Object list = redisUtil.get(WeChatConstants.REDIS_TAGS_LIST_KEY); - if(list == null || list.equals("") || isAsync){ - //如果没有, 去读取 - JSONObject tagsList = weChatService.getTagsList(); - redisUtil.set(WeChatConstants.REDIS_TAGS_LIST_KEY, tagsList); - list = tagsList; - } - return CommonResult.success(list); - } - - /** - * 创建标签 - * @param name 标签名称 - * @author Mr.Zhang - * @since 2020-04-11 - */ - @ApiOperation(value = "创建") - @RequestMapping(value = "/create", method = RequestMethod.POST) - @ApiImplicitParam(name="name",value="标签名称") - public CommonResult save(@RequestParam(name = "name") String name){ - return CommonResult.success(weChatService.createTags(name)); - } - - /** - * 修改标签 - * @param id 标签id - * @param name 标签名称 - * @author Mr.Zhang - * @since 2020-04-11 - */ - @ApiOperation(value = "修改") - @RequestMapping(value = "/update", method = RequestMethod.POST) - @ApiImplicitParams({ - @ApiImplicitParam(name="id", value="标签ID"), - @ApiImplicitParam(name="name", value="标签名称") - }) - public CommonResult update(@RequestParam(name = "id") String id, - @RequestParam(name = "name") String name){ - return CommonResult.success(weChatService.updateTags(id, name)); - } - - /** - * 删除标签 - * @param id 标签id - * @author Mr.Zhang - * @since 2020-04-11 - */ - @ApiOperation(value = "删除") - @RequestMapping(value = "/delete", method = RequestMethod.GET) - @ApiImplicitParam(name="id", value="标签ID") - public CommonResult delete(@RequestParam(name = "id") String id){ - return CommonResult.success(weChatService.deleteTags(id)); - } - - /** - * 获取标签下粉丝列表 - * @param id 标签id - * @param nextOpenId 第一个拉取的OPENID,不填默认从头开始拉取 - * @author Mr.Zhang - * @since 2020-04-11 - */ - @ApiOperation(value = "获取标签下粉丝列表") - @RequestMapping(value = "/getUserListById", method = RequestMethod.GET) - @ApiImplicitParams({ - @ApiImplicitParam(name="id", value="标签ID"), - @ApiImplicitParam(name="nextOpenId", value="第一个拉取的OPENID,不填默认从头开始拉取") - }) - public CommonResult getTagsListById(@RequestParam(name = "id") String id, - @RequestParam(name = "nextOpenId", defaultValue = "") String nextOpenId){ - return CommonResult.success(weChatService.getUserListByTagsId(id, nextOpenId)); - } - - /** - * 批量为用户打标签 - * @param id 标签id - * @param openIdList 用户openId数组 - * @author Mr.Zhang - * @since 2020-04-11 - */ - @ApiOperation(value = "批量为用户打标签") - @RequestMapping(value = "/memberBatchTags", method = RequestMethod.POST) - @ApiImplicitParams({ - @ApiImplicitParam(name="id", value="标签ID"), - @ApiImplicitParam(name="openIdList", value="用户openId数组") - }) - public CommonResult memberBatchTags(@RequestParam(name = "id") String id, - @RequestParam(name = "openIdList") String openIdList){ - return CommonResult.success(weChatService.memberBatchTags(id, openIdList)); - } - - /** - * 批量为用户取消标签 - * @param id 标签id - * @param openIdList 用户openId数组 - * @author Mr.Zhang - * @since 2020-04-11 - */ - @ApiOperation(value = "批量为用户取消标签") - @RequestMapping(value = "/memberBatchUnTags", method = RequestMethod.POST) - @ApiImplicitParams({ - @ApiImplicitParam(name="id", value="标签ID"), - @ApiImplicitParam(name="openIdList", value="用户openId数组") - }) - public CommonResult memberBatchUnTags(@RequestParam(name = "id") String id, - @RequestParam(name = "openIdList") String openIdList){ - return CommonResult.success(weChatService.memberBatchUnTags(id, openIdList)); - } - - /** - * 获取用户身上的标签列表 - * @param openId 用户id - * @author Mr.Zhang - * @since 2020-04-11 - */ - @ApiOperation(value = "获取用户身上的标签列表") - @RequestMapping(value = "/getTagsListByUserId", method = RequestMethod.GET) - @ApiImplicitParams({ - @ApiImplicitParam(name="isAsync", value="是否同步微信数据, true是,false否"), - @ApiImplicitParam(name="openId", value="用户openId") - }) - public CommonResult getTagsListByUserId(@RequestParam(name = "isAsync", defaultValue = "false") Boolean isAsync, - @RequestParam(name = "openId") String openId){ - String redisKey = WeChatConstants.REDIS_TAGS_LIST_USER_KEY + "_" + openId; - Object list = redisUtil.get(redisKey); - if(list == null || list.equals("") || isAsync){ - //如果没有, 去读取 - JSONObject tagsList = weChatService.getTagsListByUserId(openId); - redisUtil.set(redisKey, tagsList); - list = tagsList; - } - return CommonResult.success(list); - } - -} - - - diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/controller/WechatProgramMyTempController.java b/crmeb/src/main/java/com/zbkj/crmeb/wechat/controller/WechatProgramMyTempController.java deleted file mode 100644 index f045b94e..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/controller/WechatProgramMyTempController.java +++ /dev/null @@ -1,156 +0,0 @@ -package com.zbkj.crmeb.wechat.controller; - -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.PageParamRequest; -import com.zbkj.crmeb.wechat.model.WechatProgramMyTemp; -import com.zbkj.crmeb.wechat.request.WechatProgramMyTempRequest; -import com.zbkj.crmeb.wechat.request.WechatProgramMyTempSearchRequest; -import com.zbkj.crmeb.wechat.service.WechatProgramMyTempService; -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.List; - - -/** - * 小程序我的模板 前端控制器 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Slf4j -@RestController -@RequestMapping("api/admin/wechat/program/my/temp") -@Api(tags = "微信开放平台 -- 小程序 -- 我的模板") //配合swagger使用 - -public class WechatProgramMyTempController { - - @Autowired - private WechatProgramMyTempService wechatProgramMyTempService; - - /** - * 分页显示小程序我的模板 - * @param request 搜索条件 - * @param pageParamRequest 分页参数 - * @author Mr.Zhang - * @since 2020-08-28 - */ - @ApiOperation(value = "分页列表") //配合swagger使用 - @RequestMapping(value = "/list", method = RequestMethod.GET) - public CommonResult> getList(@Validated WechatProgramMyTempSearchRequest request, @Validated PageParamRequest pageParamRequest){ - CommonPage wechatProgramMyTempCommonPage = CommonPage.restPage(wechatProgramMyTempService.getList(request, pageParamRequest)); - return CommonResult.success(wechatProgramMyTempCommonPage); - } - - /** - * 新增小程序我的模板 - * @param wechatProgramMyTempRequest 新增参数 - * @author Mr.Zhang - * @since 2020-08-28 - */ - @ApiOperation(value = "新增") - @RequestMapping(value = "/save", method = RequestMethod.POST) - public CommonResult save(@RequestBody @Validated WechatProgramMyTempRequest wechatProgramMyTempRequest){ - if(wechatProgramMyTempService.create(wechatProgramMyTempRequest)){ - return CommonResult.success(); - }else{ - return CommonResult.failed(); - } - } - - /** - * 禁用/禁用小程序我的模板 - * @param id Integer - * @param status boolean - * @author Mr.Zhang - * @since 2020-08-28 - */ - @ApiOperation(value = "禁用/禁用") - @RequestMapping(value = "update/status", method = RequestMethod.GET) - public CommonResult delete(@RequestParam(value = "id") Integer id, @RequestParam(value = "status") boolean status){ - if(wechatProgramMyTempService.updateStatus(id, status)){ - return CommonResult.success(); - }else{ - return CommonResult.failed(); - } - } - - /** - * 更新应用场景 - * @param id Integer - * @param type String - * @author Mr.Zhang - * @since 2020-08-28 - */ - @ApiOperation(value = "禁用/禁用") - @RequestMapping(value = "update/type", method = RequestMethod.GET) - public CommonResult updateType(@RequestParam(value = "id") Integer id, @RequestParam(value = "type") String type){ - if(wechatProgramMyTempService.updateType(id, type)){ - return CommonResult.success(); - }else{ - return CommonResult.failed(); - } - } - - /** - * 修改小程序我的模板 - * @param id integer id - * @param wechatProgramMyTempRequest 修改参数 - * @author Mr.Zhang - * @since 2020-08-28 - */ - @ApiOperation(value = "修改") - @RequestMapping(value = "/update", method = RequestMethod.POST) - public CommonResult update(@RequestParam Integer id, @RequestBody @Validated WechatProgramMyTempRequest wechatProgramMyTempRequest){ - if(wechatProgramMyTempService.update(id, wechatProgramMyTempRequest)){ - return CommonResult.success(); - }else{ - return CommonResult.failed(); - } - } - - /** - * 查询小程序我的模板信息 - * @param id Integer - * @author Mr.Zhang - * @since 2020-08-28 - */ - @ApiOperation(value = "详情") - @RequestMapping(value = "/info", method = RequestMethod.GET) - public CommonResult info(@RequestParam(value = "id") Integer id){ - WechatProgramMyTemp wechatProgramMyTemp = wechatProgramMyTempService.info(id); - return CommonResult.success(wechatProgramMyTemp); - } - - /** - * 同步到小程序 - * @author Mr.Zhang - * @since 2020-08-28 - */ - @ApiOperation(value = "同步到小程序") - @RequestMapping(value = "/async", method = RequestMethod.GET) - public CommonResult async(){ - //查询模板信息 - List list = wechatProgramMyTempService.getAll(); - if(null != list && list.size() > 0){ - for (WechatProgramMyTemp wechatProgramMyTemp : list) { - wechatProgramMyTempService.async(wechatProgramMyTemp); - } - } - return CommonResult.success(); - } -} - - - diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/controller/WechatProgramPublicTempController.java b/crmeb/src/main/java/com/zbkj/crmeb/wechat/controller/WechatProgramPublicTempController.java deleted file mode 100644 index ba260b44..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/controller/WechatProgramPublicTempController.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.zbkj.crmeb.wechat.controller; - -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.PageParamRequest; -import com.zbkj.crmeb.wechat.model.WechatProgramPublicTemp; -import com.zbkj.crmeb.wechat.request.WechatProgramPublicTempSearchRequest; -import com.zbkj.crmeb.wechat.service.WechatProgramPublicTempService; -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.RequestParam; -import org.springframework.web.bind.annotation.RestController; - - -/** - * 微信公共模板库 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Slf4j -@RestController -@RequestMapping("api/admin/wechat/program/public/temp") -@Api(tags = "微信开放平台 -- 小程序 -- 微信公共模板库") //配合swagger使用 - -public class WechatProgramPublicTempController { - - @Autowired - private WechatProgramPublicTempService wechatProgramPublicTempService; - - /** - * 分页显示 - * @param request 搜索条件 - * @param pageParamRequest 分页参数 - * @author Mr.Zhang - * @since 2020-08-27 - */ - @ApiOperation(value = "分页列表") //配合swagger使用 - @RequestMapping(value = "/list", method = RequestMethod.GET) - public CommonResult> getList(@Validated WechatProgramPublicTempSearchRequest request, @Validated PageParamRequest pageParamRequest){ - CommonPage wechatProgramPublicTempCommonPage = CommonPage.restPage(wechatProgramPublicTempService.getList(request, pageParamRequest)); - return CommonResult.success(wechatProgramPublicTempCommonPage); - } - - /** - * 查询信息 - * @param id Integer - * @author Mr.Zhang - * @since 2020-08-27 - */ - @ApiOperation(value = "详情") - @RequestMapping(value = "/info", method = RequestMethod.GET) - public CommonResult info(@RequestParam(value = "id") Integer id){ - WechatProgramPublicTemp wechatProgramPublicTemp = wechatProgramPublicTempService.getById(id); - return CommonResult.success(wechatProgramPublicTemp); - } -} - - - diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/controller/WechatQrcodeController.java b/crmeb/src/main/java/com/zbkj/crmeb/wechat/controller/WechatQrcodeController.java deleted file mode 100644 index 3446bf94..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/controller/WechatQrcodeController.java +++ /dev/null @@ -1,125 +0,0 @@ -package com.zbkj.crmeb.wechat.controller; - -import com.common.CommonPage; -import com.common.CommonResult; -import com.common.PageParamRequest; -import com.zbkj.crmeb.wechat.request.WechatQrcodeRequest; -import com.zbkj.crmeb.wechat.request.WechatQrcodeSearchRequest; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.beans.BeanUtils; -import org.springframework.web.bind.annotation.*; -import com.zbkj.crmeb.wechat.service.WechatQrcodeService; -import com.zbkj.crmeb.wechat.model.WechatQrcode; - - -/** - * 微信二维码管理表 前端控制器 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Slf4j -@RestController -@RequestMapping("api/admin/wechat/qrcode") -@Api(tags = "微信开放平台 -- 微信二维码管理") -public class WechatQrcodeController { - - @Autowired - private WechatQrcodeService wechatQrcodeService; - - /** - * 分页显示微信二维码管理表 - * @param request 搜索条件 - * @param pageParamRequest 分页参数 - * @author Mr.Zhang - * @since 2020-04-18 - */ - @ApiOperation(value = "分页列表") - @RequestMapping(value = "/list", method = RequestMethod.GET) - public CommonResult> getList(@Validated WechatQrcodeSearchRequest request, @Validated PageParamRequest pageParamRequest){ - CommonPage wechatQrcodeCommonPage = CommonPage.restPage(wechatQrcodeService.getList(request, pageParamRequest)); - return CommonResult.success(wechatQrcodeCommonPage); - } - - /** - * 新增微信二维码管理表 - * @param wechatQrcodeRequest 新增参数 - * @author Mr.Zhang - * @since 2020-04-18 - */ - @ApiOperation(value = "新增") - @RequestMapping(value = "/save", method = RequestMethod.POST) - public CommonResult save(@Validated WechatQrcodeRequest wechatQrcodeRequest){ - WechatQrcode wechatQrcode = new WechatQrcode(); - BeanUtils.copyProperties(wechatQrcodeRequest, wechatQrcode); - - if(wechatQrcodeService.save(wechatQrcode)){ - return CommonResult.success(); - }else{ - return CommonResult.failed(); - } - } - - /** - * 删除微信二维码管理表 - * @param id Integer - * @author Mr.Zhang - * @since 2020-04-18 - */ - @ApiOperation(value = "删除") - @RequestMapping(value = "/delete", method = RequestMethod.GET) - public CommonResult delete(@RequestParam(value = "id") Integer id){ - if(wechatQrcodeService.removeById(id)){ - return CommonResult.success(); - }else{ - return CommonResult.failed(); - } - } - - /** - * 修改微信二维码管理表 - * @param id integer id - * @param wechatQrcodeRequest 修改参数 - * @author Mr.Zhang - * @since 2020-04-18 - */ - @ApiOperation(value = "修改") - @RequestMapping(value = "/update", method = RequestMethod.POST) - public CommonResult update(@RequestParam Integer id, @Validated WechatQrcodeRequest wechatQrcodeRequest){ - WechatQrcode wechatQrcode = new WechatQrcode(); - BeanUtils.copyProperties(wechatQrcodeRequest, wechatQrcode); - wechatQrcode.setId(id); - - if(wechatQrcodeService.updateById(wechatQrcode)){ - return CommonResult.success(); - }else{ - return CommonResult.failed(); - } - } - - /** - * 查询微信二维码管理表信息 - * @param id Integer - * @author Mr.Zhang - * @since 2020-04-18 - */ - @ApiOperation(value = "详情") - @RequestMapping(value = "/info", method = RequestMethod.GET) - public CommonResult info(@RequestParam(value = "id") Integer id){ - WechatQrcode wechatQrcode = wechatQrcodeService.getById(id); - return CommonResult.success(wechatQrcode); - } -} - - - diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/request/TemplateMessageSearchRequest.java b/crmeb/src/main/java/com/zbkj/crmeb/wechat/request/TemplateMessageSearchRequest.java deleted file mode 100644 index 9bb0adc0..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/request/TemplateMessageSearchRequest.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.zbkj.crmeb.wechat.request; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -/** - * 模板消息查询请求体 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -public class TemplateMessageSearchRequest { - - @ApiModelProperty(value = "模板名") - private String name; - - @ApiModelProperty(value = "模板编号") - private String tempKey; - - @ApiModelProperty(value = "模板ID") - private String tempId; - - @ApiModelProperty(value = "状态, 0 正常,1 禁用") - private Integer status = null; - - @ApiModelProperty(value = "0=订阅消息,1=微信模板消息") - private Boolean type; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/request/WechatProgramPublicTempSearchRequest.java b/crmeb/src/main/java/com/zbkj/crmeb/wechat/request/WechatProgramPublicTempSearchRequest.java deleted file mode 100644 index 5c4debea..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/request/WechatProgramPublicTempSearchRequest.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.zbkj.crmeb.wechat.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; - -/** - * WechatProgramPublicTemp对象 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@TableName("eb_wechat_program_public_temp") -@ApiModel(value="WechatProgramPublicTemp对象", description="") -public class WechatProgramPublicTempSearchRequest implements Serializable { - - private static final long serialVersionUID=1L; - - @TableId(value = "id", type = IdType.AUTO) - private Integer id; - - @ApiModelProperty(value = "微信模板id") - private Integer tid; - - @ApiModelProperty(value = "模版标题") - private String title; - - @ApiModelProperty(value = "模版类型,2 为一次性订阅,3 为长期订阅") - private Integer type; - - @ApiModelProperty(value = "模版所属类目 id") - private Integer categoryId; - - -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/request/WechatQrcodeRequest.java b/crmeb/src/main/java/com/zbkj/crmeb/wechat/request/WechatQrcodeRequest.java deleted file mode 100644 index 32c4bf43..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/request/WechatQrcodeRequest.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.zbkj.crmeb.wechat.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; - -/** - * 微信二维码管理表 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 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 WechatQrcodeRequest implements Serializable { - - private static final long serialVersionUID=1L; - - @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 = "添加时间") - private String addTime; - - @ApiModelProperty(value = "微信访问url") - private String url; - - @ApiModelProperty(value = "微信二维码url") - private String qrcodeUrl; - - @ApiModelProperty(value = "被扫的次数") - private Integer scan; - - -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/request/WechatQrcodeSearchRequest.java b/crmeb/src/main/java/com/zbkj/crmeb/wechat/request/WechatQrcodeSearchRequest.java deleted file mode 100644 index a6573832..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/request/WechatQrcodeSearchRequest.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.zbkj.crmeb.wechat.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; - -/** - * 微信二维码管理表 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 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 WechatQrcodeSearchRequest implements Serializable { - - private static final long serialVersionUID=1L; - - @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 = "添加时间") - private String addTime; - - @ApiModelProperty(value = "微信访问url") - private String url; - - @ApiModelProperty(value = "微信二维码url") - private String qrcodeUrl; - - @ApiModelProperty(value = "被扫的次数") - private Integer scan; - - -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/service/WeChatService.java b/crmeb/src/main/java/com/zbkj/crmeb/wechat/service/WeChatService.java deleted file mode 100644 index e7c30eff..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/service/WeChatService.java +++ /dev/null @@ -1,89 +0,0 @@ -package com.zbkj.crmeb.wechat.service; - -import com.alibaba.fastjson.JSONObject; -import com.zbkj.crmeb.front.response.UserRechargePaymentResponse; -import com.zbkj.crmeb.payment.vo.wechat.CreateOrderResponseVo; -import com.zbkj.crmeb.wechat.response.WeChatAuthorizeLoginGetOpenIdResponse; -import com.zbkj.crmeb.wechat.response.WeChatAuthorizeLoginUserInfoResponse; -import com.zbkj.crmeb.wechat.response.WeChatProgramAuthorizeLoginGetOpenIdResponse; -import com.zbkj.crmeb.wechat.vo.*; - -import java.util.HashMap; -import java.util.List; - -/** - * WeChatPublicService 接口 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -public interface WeChatService { - - JSONObject get(); - - JSONObject create(String data); - - JSONObject delete(); - - JSONObject getSelf(); - - JSONObject createSelf(String data); - - JSONObject deleteSelf(String menuId); - - void pushKfMessage(HashMap map); - - JSONObject createTags(String name); - - JSONObject getTagsList(); - - JSONObject updateTags(String id, String name); - - JSONObject deleteTags(String id); - - JSONObject getUserListByTagsId(String id, String nextOpenId); - - JSONObject memberBatchTags(String id, String data); - - JSONObject memberBatchUnTags(String id, String data); - - JSONObject getTagsListByUserId(String openId); - - WeChatAuthorizeLoginGetOpenIdResponse authorizeLogin(String code); - - WeChatAuthorizeLoginUserInfoResponse getUserInfo(String openId, String token); - - Object getJsSdkConfig(String url); - - boolean sendPublicTempMessage(TemplateMessageVo templateMessage); - - boolean sendProgramTempMessage(TemplateMessageVo templateMessage); - - JSONObject getIndustry(); - - String getUploadMedia(); - - WeChatProgramAuthorizeLoginGetOpenIdResponse programAuthorizeLogin(String code); - - String qrCode(String page, String uri); - - UserRechargePaymentResponse response(CreateOrderResponseVo responseVo); - - List getProgramCategory(); - - List getProgramPublicTempList(int page); - - List getWeChatKeywordsByTid(Integer tid); - - String programAddMyTemp(ProgramAddMyTempVo programAddMyTempVo); - - void programDeleteMyTemp(String myTempId); - - String getRoutineAccessToken(); -} \ No newline at end of file diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/service/WechatMediaService.java b/crmeb/src/main/java/com/zbkj/crmeb/wechat/service/WechatMediaService.java deleted file mode 100644 index 0ae7c414..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/service/WechatMediaService.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.zbkj.crmeb.wechat.service; - -import org.springframework.web.multipart.MultipartFile; - -import java.util.Map; - -public interface WechatMediaService { - Map upload(MultipartFile file, String type) throws Exception; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/service/WechatProgramMyTempService.java b/crmeb/src/main/java/com/zbkj/crmeb/wechat/service/WechatProgramMyTempService.java deleted file mode 100644 index c10eb1b3..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/service/WechatProgramMyTempService.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.zbkj.crmeb.wechat.service; - -import com.baomidou.mybatisplus.extension.service.IService; -import com.common.PageParamRequest; -import com.zbkj.crmeb.wechat.model.WechatProgramMyTemp; -import com.zbkj.crmeb.wechat.request.WechatProgramMyTempRequest; -import com.zbkj.crmeb.wechat.request.WechatProgramMyTempSearchRequest; - -import java.util.HashMap; -import java.util.List; - -/** - * WechatProgramMyTempService 接口 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -public interface WechatProgramMyTempService extends IService { - - List getList(WechatProgramMyTempSearchRequest request, PageParamRequest pageParamRequest); - - WechatProgramMyTemp info(Integer id); - - boolean updateStatus(Integer id, boolean status); - - boolean create(WechatProgramMyTempRequest wechatProgramMyTempRequest); - - boolean update(Integer id, WechatProgramMyTempRequest wechatProgramMyTempRequest); - - void push(int myTempId, HashMap map, Integer userId); - - void async(WechatProgramMyTemp wechatProgramMyTemp); - - List getAll(); - - boolean updateType(Integer id, String type); -} \ No newline at end of file diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/service/WechatProgramPublicTempService.java b/crmeb/src/main/java/com/zbkj/crmeb/wechat/service/WechatProgramPublicTempService.java deleted file mode 100644 index 98ca4981..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/service/WechatProgramPublicTempService.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.zbkj.crmeb.wechat.service; - -import com.baomidou.mybatisplus.extension.service.IService; -import com.common.PageParamRequest; -import com.zbkj.crmeb.wechat.model.WechatProgramPublicTemp; -import com.zbkj.crmeb.wechat.request.WechatProgramPublicTempSearchRequest; - -import java.util.List; - -/** - * WechatProgramPublicTempService 接口 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -public interface WechatProgramPublicTempService extends IService { - - List getList(WechatProgramPublicTempSearchRequest request, PageParamRequest pageParamRequest); - - void async(); -} \ No newline at end of file diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/service/WechatSendMessageForMinService.java b/crmeb/src/main/java/com/zbkj/crmeb/wechat/service/WechatSendMessageForMinService.java deleted file mode 100644 index 70ee77d9..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/service/WechatSendMessageForMinService.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.zbkj.crmeb.wechat.service; - -import com.zbkj.crmeb.wechat.vo.*; - -import java.util.HashMap; - -/** - * 根据已申请的模版发送小程序消息 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -public interface WechatSendMessageForMinService { - /** - * 发送积分到账消息 - * @param integral 待发送积分参数 - * @param userId 接收用户id - */ - void sendIntegralMessage(WechatSendMessageForIntegral integral, Integer userId); - - /** - * 退款申请通知 - * @param reFundNotify 退款申请参数 - * @param userId 接收者用户Id - */ - void sendReFundNotifyMessage(WechatSendMessageForReFundNotify reFundNotify, Integer userId); - - /** - * 退款通知 - * @param reFundEd 退款参数 - * @param userId 接收者用户Id - */ - void sendReFundEdMessage(WechatSendMessageForReFundEd reFundEd, Integer userId); - - /** - * 付款成功通知 - * @param paySuccess 付款成功参数 - * @param userId 接受者用户Id - */ - void sendPaySuccessMessage(WechatSendMessageForPaySuccess paySuccess, Integer userId); - - /** - * 充值成功过通知 - * @param topped 充值成功通知 - * @param userId 接收者Id - */ - void sendToppedMessage(WechatSendMessageForTopped topped, Integer userId); - - /** - * 配送通知 - * @param distrbution 配送参数 - * @param userId 接收者Id - */ - void sendDistrbutionMessage(WechatSendMessageForDistrbution distrbution, Integer userId); - - /** - * 提现通知 - * @param cash 提现参数 - * @param userId 用户Id - */ - void sendCashMessage(WechatSendMessageForCash cash, Integer userId); - - /** - * 订单创建 - * @param cateOrder 创建订单参数 - * @param userId 用户Id - */ - void sendCreateOrderMessage(WechatSendMessageForCreateOrder cateOrder, Integer userId); - - /** - * 收货通知 - * @param getPackage 收货参数 - * @param userId 用户Id - */ - void sendGetPackageMessage(WechatSendMessageForGetPackage getPackage, Integer userId); - - /** - * 取消订单 - * @param orderCancel 取消订单参数 - * @param userId 用户Id - */ - void sendOrderCancelMessage(WechatSendMessageForOrderCancel orderCancel, Integer userId); - - /** - * 发货通知 - * @param toPackage 发货通知 - * @param userId 用户id - */ - void sendRePackageMessage(WechatSendMessageForPackage toPackage, Integer userId); - - /** - * 核销通知 - * @param ver 核销参数 - * @param userId 用户Id - */ - void sendVerSuccessMessage(WechatSendMessageForVerSuccess ver, Integer userId); - - -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/service/impl/TemplateMessageServiceImpl.java b/crmeb/src/main/java/com/zbkj/crmeb/wechat/service/impl/TemplateMessageServiceImpl.java deleted file mode 100644 index e7ffcc45..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/service/impl/TemplateMessageServiceImpl.java +++ /dev/null @@ -1,395 +0,0 @@ -package com.zbkj.crmeb.wechat.service.impl; - -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.common.PageParamRequest; -import com.constants.Constants; -import com.exception.CrmebException; -import com.github.pagehelper.PageHelper; -import com.utils.RedisUtil; -import com.zbkj.crmeb.user.model.UserToken; -import com.zbkj.crmeb.user.service.UserTokenService; -import com.zbkj.crmeb.wechat.dao.TemplateMessageDao; -import com.zbkj.crmeb.wechat.model.TemplateMessage; -import com.zbkj.crmeb.wechat.request.TemplateMessageSearchRequest; -import com.zbkj.crmeb.wechat.service.TemplateMessageService; -import com.zbkj.crmeb.wechat.service.WeChatService; -import com.zbkj.crmeb.wechat.service.WechatProgramMyTempService; -import com.zbkj.crmeb.wechat.vo.*; -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.annotation.Resource; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * TemplateMessageServiceImpl 接口实现 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 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 WeChatService weChatService; - - @Autowired - private UserTokenService userTokenService; - - @Autowired - private WechatProgramMyTempService wechatProgramMyTempService; - - - /** - * 列表 - * @param request 请求参数 - * @param pageParamRequest 分页类参数 - * @author Mr.Zhang - * @since 2020-06-03 - * @return List - */ - @Override - public List getList(TemplateMessageSearchRequest request, PageParamRequest pageParamRequest) { - PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); - //带 TemplateMessage 类的多条件查询 - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - if(null != request.getStatus()){ - lambdaQueryWrapper.eq(TemplateMessage::getStatus, request.getStatus()); - } - - if(StringUtils.isNotBlank(request.getName())){ - lambdaQueryWrapper.like(TemplateMessage::getName, request.getName()); - } - - if(StringUtils.isNotBlank(request.getTempId())){ - lambdaQueryWrapper.eq(TemplateMessage::getTempId, request.getTempId()); - } - - if(StringUtils.isNotBlank(request.getTempKey())){ - lambdaQueryWrapper.eq(TemplateMessage::getTempKey, request.getTempKey()); - } - if (ObjectUtil.isNotNull(request.getType())) { - lambdaQueryWrapper.eq(TemplateMessage::getType, request.getType()); - } - lambdaQueryWrapper.orderByDesc(TemplateMessage::getId); - return dao.selectList(lambdaQueryWrapper); - } - - /** - * 发送给微信消息进入队列 - * @param tempKey String 模板消息key - * @param map 需要替换的数据 - * @param userId Integer 用户id - * @param type String 类型, public 公众号;program 小程序 - * @author Mr.Zhang - * @since 2020-06-03 - */ - public void push(String tempKey, HashMap map, Integer userId, String type){ - - switch (type){ - case Constants.PAY_TYPE_WE_CHAT_FROM_PUBLIC: - pushPublicTempMessage(tempKey, map, userId, type); - break; - case Constants.PAY_TYPE_WE_CHAT_FROM_PROGRAM: - wechatProgramMyTempService.push(Integer.parseInt(tempKey), map, userId); - break; - default: - break; - } - } - - /** - * 发送公众号消息 - * @param tempKey String 模板消息key - * @param map 需要替换的数据 - * @param userId Integer 用户id - * @param type String 类型, public 公众号;program 小程序 - * @author Mr.Zhang - * @since 2020-06-03 - */ - public void pushPublicTempMessage(String tempKey, HashMap map, Integer userId, String type){ - TemplateMessageVo templateMessageVo = new TemplateMessageVo(); - - TemplateMessage templateMessage = getInfoByTempKey(tempKey); - if(templateMessage == null || StringUtils.isBlank(templateMessage.getContent())){ - return; - } - templateMessageVo.setTemplate_id(templateMessage.getTempId()); - - HashMap hashMap = new HashMap<>(); - for (Map.Entry entry : map.entrySet()){ - hashMap.put(entry.getKey(), new SendTemplateMessageItemVo(entry.getValue())); - } - //token 类型 - int openIdType = Constants.THIRD_LOGIN_TOKEN_TYPE_PUBLIC; - if(Constants.ADMIN_LOGIN_TYPE_WE_CHAT_FROM_PUBLIC.equals(type)){ - openIdType = Constants.THIRD_ADMIN_LOGIN_TOKEN_TYPE_PUBLIC; - - } - - //拿到三方登录绑定的token - UserToken UserToken = userTokenService.getTokenByUserId(userId, openIdType); - - if(null == UserToken || StringUtils.isBlank(UserToken.getToken())){ - return; - } - - templateMessageVo.setData(hashMap); - templateMessageVo.setTouser(UserToken.getToken()); - redisUtil.lPush(Constants.WE_CHAT_MESSAGE_KEY_PUBLIC, JSONObject.toJSONString(templateMessageVo)); - } - - /** - * 查询单条数据抛异常 - * @param id Integer id - * @author Mr.Zhang - * @since 2020-06-03 - */ - @Override - public TemplateMessage infoException(Integer id) { - TemplateMessage templateMessage = info(id); - if(null == templateMessage){ - throw new CrmebException("此模板" + id + " 不存在或者已删除"); - } - - if(templateMessage.getStatus().equals(0)){ - throw new CrmebException("此模板未启用"); - } - return templateMessage; - } - - /** - * 公众号消费队列消费 - * @author Mr.Zhang - * @since 2020-06-03 - */ - @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 = weChatService.sendPublicTempMessage(templateMessage); - if(!result){ - redisUtil.lPush(redisKey, data); - } - }catch (Exception e){ - redisUtil.lPush(redisKey, data); - } - } - } - - /** - * 小程序消费队列消费 - * @author Mr.Zhang - * @since 2020-06-03 - */ - @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 = weChatService.sendProgramTempMessage(templateMessage); - if(!result){ - redisUtil.lPush(redisKey, data); - } - }catch (Exception e){ - redisUtil.lPush(redisKey, data); - } - } - } - - - /** - * 模板消息 行业信息 - * @author Mr.Zhang - * @since 2020-06-03 - * @return TemplateMessageIndustryVo - */ - @Override - public TemplateMessageIndustryVo getIndustry() { - JSONObject data; - Object object = redisUtil.get(Constants.WE_CHAT_MESSAGE_INDUSTRY_KEY); - if(null == object){ - data = weChatService.getIndustry(); - }else{ - data = JSONObject.parseObject(object.toString()); - } - return JSONObject.toJavaObject(data, TemplateMessageIndustryVo.class); - } - - /** - * 发送模板消息 - * @param templateNo 模板消息编号 - * @param temMap 内容Map - * @param openId 微信用户openid - */ - @Override - public void pushTemplateMessage(String templateNo, HashMap temMap, String openId) { - TemplateMessageVo templateMessageVo = new TemplateMessageVo(); - - TemplateMessage templateMessage = getInfoByTempKey(templateNo); - 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 templateNo 模板消息编号 - * @param temMap 内容Map - * @param openId 微信用户openId - */ - @Override - public void pushMiniTemplateMessage(String templateNo, HashMap temMap, String openId) { - TemplateMessage templateMessage = getInfoByTempKey(templateNo); - 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 type 场景类型 - * 支付之前:beforePay - * 支付成功通知 - * 支付成功:afterPay - * 发货、配送、收货 - * 申请退款:refundApply - * 退款成功、拒绝退款 - * 充值之前:beforeRecharge - * 充值成功通知 - * 创建砍价:createBargain - * 砍价成功、失败通知 - * 参与拼团:pink - * 拼团成功、失败通知 - * 取消拼团:cancelPink - * 退款成功、拒绝退款 - * @return - */ - @Override - public List getMiniTempList(String type) { - LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); - lqw.select(TemplateMessage::getName, TemplateMessage::getTempId); - lqw.eq(TemplateMessage::getStatus, 1); //没有禁用的数据 - lqw.eq(TemplateMessage::getType, 0); - switch (type) { - case "beforePay":// 支付之前 - lqw.eq(TemplateMessage::getTempKey, Constants.WE_CHAT_PROGRAM_TEMP_KEY_ORDER_PAY); - break; - case "afterPay":// 支付成功 - lqw.in(TemplateMessage::getTempKey, Constants.WE_CHAT_PROGRAM_TEMP_KEY_EXPRESS, Constants.WE_CHAT_PROGRAM_TEMP_KEY_DELIVERY, Constants.WE_CHAT_PROGRAM_TEMP_KEY_ORDER_RECEIVING); - break; - case "refundApply":// 申请退款 - lqw.eq(TemplateMessage::getTempKey, "-1"); - break; - case "beforeRecharge":// 充值之前 - lqw.eq(TemplateMessage::getTempKey, "-1"); - break; - case "createBargain":// 创建砍价 - lqw.in(TemplateMessage::getTempKey, Constants.WE_CHAT_PROGRAM_TEMP_KEY_BARGAIN_SUCCESS); - break; - case "pink":// 参与拼团 - lqw.in(TemplateMessage::getTempKey, Constants.WE_CHAT_PROGRAM_TEMP_KEY_COMBINATION_SUCCESS); - break; - case "cancelPink":// cancelPink - lqw.eq(TemplateMessage::getTempKey, "-1"); - break; - } - return dao.selectList(lqw); - } - - /** - * 查询单条数据 - * @param id Integer id - * @author Mr.Zhang - * @since 2020-06-03 - */ - private TemplateMessage info(Integer id) { - return getById(id); - } - - /** - * 根据tempKey获取信息 - * @param tempKey String 模板消息key - * @author Mr.Zhang - * @since 2020-06-03 - * @return TemplateMessage - */ - private TemplateMessage getInfoByTempKey(String tempKey) { - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(TemplateMessage::getTempKey, tempKey); - lambdaQueryWrapper.eq(TemplateMessage::getStatus, 1); //没有禁用的数据 - List templateMessages = dao.selectList(lambdaQueryWrapper); - if(null == templateMessages || templateMessages.size() < 1){ - return null; - } - - return templateMessages.get(0); - } -} - diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/service/impl/WeChatServiceImpl.java b/crmeb/src/main/java/com/zbkj/crmeb/wechat/service/impl/WeChatServiceImpl.java deleted file mode 100644 index 9d6b526b..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/service/impl/WeChatServiceImpl.java +++ /dev/null @@ -1,964 +0,0 @@ -package com.zbkj.crmeb.wechat.service.impl; - -import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import com.constants.Constants; -import com.constants.WeChatConstants; -import com.exception.CrmebException; -import com.utils.CrmebUtil; -import com.utils.DateUtil; -import com.utils.RedisUtil; -import com.utils.RestTemplateUtil; -import com.zbkj.crmeb.front.response.UserRechargePaymentResponse; -import com.zbkj.crmeb.payment.vo.wechat.CreateOrderResponseVo; -import com.zbkj.crmeb.system.service.SystemConfigService; -import com.zbkj.crmeb.wechat.response.WeChatAuthorizeLoginGetOpenIdResponse; -import com.zbkj.crmeb.wechat.response.WeChatAuthorizeLoginUserInfoResponse; -import com.zbkj.crmeb.wechat.response.WeChatProgramAuthorizeLoginGetOpenIdResponse; -import com.zbkj.crmeb.wechat.service.WeChatService; -import com.zbkj.crmeb.wechat.vo.*; -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.beans.factory.annotation.Value; -import org.springframework.scheduling.annotation.Async; -import org.springframework.stereotype.Service; - -import java.io.UnsupportedEncodingException; -import java.net.URLDecoder; -import java.nio.charset.StandardCharsets; -import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.concurrent.TimeUnit; -import java.util.stream.Collectors; - - -/** - * WeChatPublicServiceImpl 接口实现 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Service -public class WeChatServiceImpl implements WeChatService { - - private static final Logger logger = LoggerFactory.getLogger(WeChatServiceImpl.class); - @Autowired - private RedisUtil redisUtil; - - @Autowired - private SystemConfigService systemConfigService; - - @Autowired - private RestTemplateUtil restTemplateUtil; - - private Object token; //token - - private String appId; //appId - - private String secret; //秘钥 - - private String url; //url - - private String uuid; //uuid - - private int timestamp; //时间戳 - - private String signature; //签名 - - private String jsApiTicket; // jsApiTicket - - private String programAppId; // 小程序appId - - private String programAppSecret; //小程序秘钥 - - private Object programToken; //小程序token - - @Value("${server.wechat-api-url}") - private String weChartApiUrl; - - @Value("${server.wechat-js-api-debug}") - private Boolean debug; - - @Value("${server.wechat-js-api-beta}") - private Boolean beta; - - private String getUuid() { - return uuid; - } - - /** - * 设置uuid - * @author Mr.Zhang - * @since 2020-06-22 - */ - private void setUuid() { - this.uuid = CrmebUtil.getUuid(); - } - - private int getTimestamp() { - return timestamp; - } - - /** - * 设置13位时间戳 - * @author Mr.Zhang - * @since 2020-06-22 - */ - private void setTimestamp() { - this.timestamp = DateUtil.getSecondTimestamp(); - } - - /** - * 获取签名 - * @author Mr.Zhang - * @since 2020-06-22 - * @return String - */ - private String getSignature() { - return signature; - } - - /** - * 获取jsApiTicket - * @author Mr.Zhang - * @since 2020-06-22 - * @return String - */ - private String getJsApiTicket(){ - return jsApiTicket; - } - - - /** - * 设置token - * @author Mr.Zhang - * @since 2020-04-22 - */ - private void setToken(){ - //检测token是否过期, 如果过期,那么重新获取 - Object token = redisUtil.get(WeChatConstants.REDIS_TOKEN_KEY); - if(token == null || token.equals("")){ - //不存在, 去获取 - getToken(); - //存入redis - redisUtil.set(WeChatConstants.REDIS_TOKEN_KEY, this.token, - WeChatConstants.API_TOKEN_EXPIRES, TimeUnit.SECONDS); - }else{ - this.token = token; - } - } - - /** - * 获取token - * @author Mr.Zhang - * @since 2020-04-22 - */ - private void getToken(){ - getAppInfo(); - String url = getUrl() + WeChatConstants.API_TOKEN_URI + "&appid=" + this.appId + "&secret=" + this.secret; - JSONObject data = get(url); - System.out.println("Token:getToken:"+data.toJSONString()); - if(!data.containsKey("access_token")){ - throw new CrmebException("微信token获取失败:" + data.getString("errmsg")); - } - - this.token = data.getString("access_token"); - } - - /** - * 设置和统一管理刷新小程序token - */ - private void setProgramToken(){ - //检测token是否过期, 如果过期,那么重新获取 过期判断逻辑为使用过期时间-100毫秒后存储在redis中 - Object token = redisUtil.get(WeChatConstants.REDIS_PROGRAM_TOKEN_KEY); - if(null == token || token.equals("")){ - //不存在, 去获取 - getProgramToken(); - //存入redis 指定过期时间为expires_in字段 - 100毫秒 - redisUtil.set(WeChatConstants.REDIS_PROGRAM_TOKEN_KEY, this.programToken, - WeChatConstants.API_TOKEN_EXPIRES, TimeUnit.SECONDS); - }else{ - this.programToken = token; - } - System.out.println("Token:setProgramToken:"+this.programToken); - } - - /** - * 获取token - * @author Mr.Zhang - * @since 2020-04-22 - */ - private void getProgramToken(){ - getProgramAppInfo(); - String url = getUrl() + WeChatConstants.API_TOKEN_URI + "&appid=" + this.programAppId + "&secret=" + this.programAppSecret; - JSONObject data = get(url); - System.out.println("Token:getProgramToken:"+ data.toJSONString()); - if(!data.containsKey("access_token")){ - throw new CrmebException("微信token获取失败:" + data.getString("errmsg")); - } - - this.programToken = data.getString("access_token"); - } - - /** - * 设置url - * @author Mr.Zhang - * @since 2020-04-22 - */ - private String getUrl(){ - String apiUrl = WeChatConstants.API_URL; - if(StringUtils.isNotBlank(weChartApiUrl)){ - //如果有配置开发url则取开发url - apiUrl = weChartApiUrl; - } - return apiUrl; - } - - /** - * 设置url - * @author Mr.Zhang - * @since 2020-04-22 - */ - private void setUrl(String uri){ - setToken(); - this.url = getUrl() + uri + "?access_token=" + this.token; - System.out.println("公众号URl:"+this.url); - } - - /** - * 设置url - * @author Mr.Zhang - * @since 2020-04-22 - */ - private void setProgramUrl(String uri){ - setProgramToken(); - this.url = getUrl() + uri + "?access_token=" + this.programToken; - System.out.println("小程序URL:"+this.url); - } - - /** - * 获取appInfo配置信息 - * @author Mr.Zhang - * @since 2020-04-22 - */ - private void getAppInfo() { - this.appId = systemConfigService.getValueByKey("wechat_appid"); - this.secret = systemConfigService.getValueByKey("wechat_appsecret"); - - if(StringUtils.isBlank(this.appId)){ - throw new CrmebException("微信appId未设置"); - } - - if(StringUtils.isBlank(this.secret)){ - throw new CrmebException("微信secret未设置"); - } - } - - /** - * 获取小程序appInfo配置信息 - * @author Mr.Zhang - * @since 2020-04-22 - */ - private void getProgramAppInfo() { - this.programAppId = systemConfigService.getValueByKey("routine_appid"); - this.programAppSecret = systemConfigService.getValueByKey("routine_appsecret"); - - if(StringUtils.isBlank(this.programAppId)){ - throw new CrmebException("微信小程序appId未设置"); - } - - if(StringUtils.isBlank(this.programAppSecret)){ - throw new CrmebException("微信小程序secret未设置"); - } - } - - /** - * post 请求接口 - * @param url 请求url - * @param data json格式参数 - * @author Mr.Zhang - * @since 2020-04-22 - * @return JSONObject - */ - private JSONObject post(String url, String data){ - logger.info("WeChatServiceImpl.post | url:" + url + " | data:" +data); - JSONObject jsonData = JSONObject.parseObject(data); - String result = restTemplateUtil.postJsonData(url, jsonData); - logger.info("微信消息发送结果:" + result); - JSONObject jsonObject = JSONObject.parseObject(result); - return checkResult(jsonObject); - } - - /** - * post 请求接口 - * @param url 请求url - * @param data json格式参数 - * @author Mr.Zhang - * @since 2020-04-22 - * @return JSONObject - */ - private JSONObject post(String url, HashMap data){ - try{ - String result = restTemplateUtil.postJsonData(url, new JSONObject(data)); - JSONObject jsonObject = JSONObject.parseObject(result); - return checkResult(jsonObject); - }catch (Exception e){ - throw new CrmebException(e.getMessage()); - } - } - - /** - * post 请求接口 - * @param url 请求url - * @param data json格式参数 - * @author Mr.Zhang - * @since 2020-04-22 - * @return JSONObject - */ - private String postReturnBuffer(String url, HashMap data){ - try{ - byte[] bytes = restTemplateUtil.postJsonDataAndReturnBuffer(url, new JSONObject(data)); - String response = new String(bytes); - logger.info("微信生成二维码response = " + response); - if(StringUtils.contains(response,"errcode")){ - logger.error("微信生成二维码异常"+response); - throw new CrmebException("微信生成二维码异常"); - } - return CrmebUtil.getBase64Image(Base64.encodeBase64String(bytes)); - - }catch (Exception e){ - throw new CrmebException(e.getMessage()); - } - } - - /** - * get 请求接口 - * @param url 请求url - * @author Mr.Zhang - * @since 2020-04-22 - * @return JSONObject - */ - private JSONObject get(String url){ - try{ - JSONObject result = restTemplateUtil.getData(url); - return checkResult(result); - }catch (Exception e){ - throw new CrmebException(e.getMessage()); - } - } - - /** - * 检测结构请求返回的数据 - * @param result 接口返回的结果 - * @author Mr.Zhang - * @since 2020-04-22 - * @return JSONObject - */ - private JSONObject checkResult(JSONObject result){ - if(ObjectUtil.isNull(result)){ - throw new CrmebException("微信平台接口异常,没任何数据返回!"); - } - if(result.containsKey("errcode") && result.getString("errcode").equals("0")){ - return result; - } - if(result.containsKey("errmsg")){ - throw new CrmebException("微信接口调用失败:" + result.getString("errcode") + result.getString("errmsg")); - } - return result; - } - - /** - * 创建菜单 - * @param data 菜单数据 - * @author Mr.Zhang - * @since 2020-04-22 - * @return JSONObject - */ - @Override - public JSONObject create(String data) { - setUrl(WeChatConstants.PUBLIC_API_MENU_CREATE_URI); - return post(this.url, data); - } - - /** - * 获取菜单 - * @author Mr.Zhang - * @since 2020-04-22 - * @return JSONObject - */ - @Override - public JSONObject get() { - setUrl(WeChatConstants.PUBLIC_API_MENU_GET_URI); - return get(this.url); - } - - /** - * 使用接口创建自定义菜单后,开发者还可使用接口删除当前使用的自定义菜单。另请注意,在个性化菜单时,调用此接口会删除默认菜单及全部个性化菜单。 - * @author Mr.Zhang - * @since 2020-04-22 - * @return JSONObject - */ - @Override - public JSONObject delete() { - setUrl(WeChatConstants.PUBLIC_API_MENU_DELETE_URI); - return get(this.url); - } - - /** - * 自定义菜单,获取。 - * @author Mr.Zhang - * @since 2020-04-22 - * @return JSONObject - */ - @Override - public JSONObject getSelf() { - setUrl(WeChatConstants.PUBLIC_API_MENU_SELF_SET_URI); - return get(this.url); - } - - /** - * 自定义菜单,创建。 - * @author Mr.Zhang - * @since 2020-04-22 - * @return JSONObject - */ - @Override - public JSONObject createSelf(String data) { - setUrl(WeChatConstants.PUBLIC_API_MENU_ADD_CONDITIONAL_URI); - return post(this.url, data); - } - - /** - * 自定义菜单,删除。 - * @author Mr.Zhang - * @since 2020-04-22 - * @return JSONObject - */ - @Override - public JSONObject deleteSelf(String menuId) { - setUrl(WeChatConstants.PUBLIC_API_MENU_ADD_CONDITIONAL_URI); - return post(this.url, "{menuid:"+menuId+"}"); - } - - /** - * 公众号图文消息推送 - * @author Mr.Zhang - * @since 2020-04-22 - */ - @Async - @Override - public void pushKfMessage(HashMap map) { - setUrl(WeChatConstants.PUBLIC_API_KF_MESSAGE_SEND); - post(this.url, map); - } - - /** - * 用户管理 创建标签 - * @param name 标签名 - * @author Mr.Zhang - * @since 2020-04-22 - * @return JSONObject {"tag":{"id":134,//标签id "name":"广东"}} - */ - @Override - public JSONObject createTags(String name) { - setUrl(WeChatConstants.PUBLIC_API_TAG_CREATE_URI); - return post(this.url, "{\"tag\":{\"name\":\""+name+"\"}}"); - } - - /** - * 用户管理 获取标签列表 - * @author Mr.Zhang - * @since 2020-04-22 - * @return JSONObject - */ - @Override - public JSONObject getTagsList() { - setUrl(WeChatConstants.PUBLIC_API_TAG_LIST_URI); - return get(this.url); - } - - /** - * 用户管理 修改标签 - * @param name 标签名 - * @param id 标签id - * @author Mr.Zhang - * @since 2020-04-22 - * @return JSONObject {"errcode":0,"errmsg":"ok" } - */ - @Override - public JSONObject updateTags(String id, String name) { - setUrl(WeChatConstants.PUBLIC_API_TAG_CREATE_URI); - return post(this.url, "{\"tag\":{\"id\":"+id+",\"name\":\""+name+"\"}}"); - } - - /** - * 用户管理 删除标签 - * @param id 标签id - * @author Mr.Zhang - * @since 2020-04-22 - * @return JSONObject {"errcode":0,"errmsg":"ok" } - */ - @Override - public JSONObject deleteTags(String id) { - setUrl(WeChatConstants.PUBLIC_API_TAG_DELETE_URI); - return post(this.url, "{\"tag\":{\"id\":"+id+"}}"); - } - - /** - * 用户管理 获取标签下粉丝列表 - * @param id 标签id - * @param nextOpenId 第一个拉取的OPENID,不填默认从头开始拉取 - * @author Mr.Zhang - * @since 2020-04-22 - * @return JSONObject - */ - @Override - public JSONObject getUserListByTagsId(String id, String nextOpenId) { - setUrl(WeChatConstants.PUBLIC_API_TAG_USER_GET_URI); - HashMap map = new HashMap<>(); - map.put("tagid", id); - map.put("next_openid", nextOpenId); - return post(this.url, map); - } - - /** - * 用户管理 批量为用户取消标签 - * @param id 标签id - * @param data 粉丝list - * @author Mr.Zhang - * @since 2020-04-22 - * @return JSONObject {"errcode":0,"errmsg":"ok" } - */ - @Override - public JSONObject memberBatchTags(String id, String data) { - setUrl(WeChatConstants.PUBLIC_API_TAG_MEMBER_BATCH_URI); - HashMap map = new HashMap<>(); - map.put("openid_list", CrmebUtil.stringToArrayStr(data)); - map.put("tagid", id); - return post(this.url, map); - } - - /** - * 用户管理 批量为用户取消标签 - * @param id 标签id - * @param data 粉丝list - * @author Mr.Zhang - * @since 2020-04-22 - * @return JSONObject {"errcode":0,"errmsg":"ok" } - */ - @Override - public JSONObject memberBatchUnTags(String id, String data) { - setUrl(WeChatConstants.PUBLIC_API_TAG_MEMBER_BATCH_UN_URI); - HashMap map = new HashMap<>(); - map.put("openid_list", CrmebUtil.stringToArrayStr(data)); - map.put("tagid", id); - return post(this.url, map); - } - - /** - * 用户管理 获取用户身上的标签列表 - * @param openId 用户身份id - * @author Mr.Zhang - * @since 2020-04-22 - * @return JSONObject - */ - @Override - public JSONObject getTagsListByUserId(String openId) { - setUrl(WeChatConstants.PUBLIC_API_TAG_GET_ID_LIST_URI); - HashMap map = new HashMap<>(); - map.put("openid", openId); - return post(this.url, map); - } - - /** - * 通过code获取获取公众号授权信息 - * @author Mr.Zhang - * @since 2020-05-25 - * @return LoginResponse - */ - @Override - public WeChatAuthorizeLoginGetOpenIdResponse authorizeLogin(String code) { - //通过code获取access_token - try { - String url = getWxOauth2Url(code); - JSONObject result = get(url); - return JSONObject.parseObject(result.toJSONString(), WeChatAuthorizeLoginGetOpenIdResponse.class); - }catch (Exception e){ - throw new CrmebException(e.getMessage()); - } - } - - /** - * 获取公众号获取授权信息url - * @param code code - * @return String - */ - private String getWxOauth2Url(String code) { - String appId = systemConfigService.getValueByKey("wechat_appid"); - if(StringUtils.isBlank(appId)){ - throw new CrmebException("微信appId未设置"); - } - String secret = systemConfigService.getValueByKey("wechat_appsecret"); - if(StringUtils.isBlank(secret)){ - throw new CrmebException("微信secret未设置"); - } - return WeChatConstants.API_URL + WeChatConstants.WE_CHAT_AUTHORIZE_GET_OPEN_ID - + StrUtil.format("?appid={}&secret={}&code={}&grant_type=authorization_code", appId, secret, code); - } - - /** - * 通过code获取获取小程序授权信息 - * @author Mr.Zhang - * @since 2020-05-25 - * @return LoginResponse - */ - @Override - public WeChatProgramAuthorizeLoginGetOpenIdResponse programAuthorizeLogin(String code) { - //通过code获取access_token - try { - String programAppId = systemConfigService.getValueByKey("routine_appid"); - if(StringUtils.isBlank(programAppId)){ - throw new CrmebException("微信小程序appId未设置"); - } - String programAppSecret = systemConfigService.getValueByKey("routine_appsecret"); - if(StringUtils.isBlank(programAppSecret)){ - throw new CrmebException("微信小程序secret未设置"); - } - - String url = WeChatConstants.API_URL + WeChatConstants.WE_CHAT_AUTHORIZE_PROGRAM_GET_OPEN_ID + - "?appid=" + programAppId + - "&secret=" + programAppSecret + - "&js_code=" + code + - "&grant_type=authorization_code"; - JSONObject result = get(url); - return JSONObject.parseObject(result.toJSONString(), WeChatProgramAuthorizeLoginGetOpenIdResponse.class); - }catch (Exception e){ - e.printStackTrace(); - throw new CrmebException(e.getMessage()); - } - } - - /** - * 微信小程序,获取二维码【多场景】 - * @param page 页面地址 - * @param uri 场景 - * @return 二维码的Base64 String - */ - @Override - public String qrCode(String page, String uri) { - setProgramUrl(WeChatConstants.WE_CHAT_CREATE_QRCODE); - HashMap map = new HashMap<>(); - map.put("scene", uri); - map.put("page", page); - map.put("width", 200); - return postReturnBuffer(this.url, map); - } - - @Override - public UserRechargePaymentResponse response(CreateOrderResponseVo responseVo) { - UserRechargePaymentResponse response = new UserRechargePaymentResponse(); - response.setAppId(responseVo.getAppId()); - response.setNonceStr(responseVo.getNonceStr()); - - String prepay = "prepay_id=" + responseVo.getPrepayId(); - - //构建小程序支付签名 - HashMap map = new HashMap<>(); - map.put("appId", responseVo.getAppId()); - map.put("timeStamp", response.getTimeStamp()); - map.put("nonceStr", response.getNonceStr()); - map.put("package", prepay); - map.put("signType", response.getSignType()); - - //重新计算签名 - response.setPaySign(CrmebUtil.getSign(map, systemConfigService.getValueByKey(Constants.CONFIG_KEY_PAY_WE_CHAT_APP_KEY))); - - response.setExtra(prepay); - response.setPrepayId(responseVo.getPrepayId()); - response.setH5PayUrl(responseVo.getMWebUrl()); //H5支付会有值,否则为null - return response; - } - - /** - * 小程序行业信息 - * @author Mr.Zhang - * @since 2020-06-03 - */ - @Override - public List getProgramCategory() { - setProgramUrl(WeChatConstants.PUBLIC_API_PROGRAM_CATEGORY); - JSONObject jsonObject = get(this.url); - JSONArray data = jsonObject.getJSONArray("data"); - if(null == data || data.size() < 1){ - throw new CrmebException("请先设置小程序行业信息"); - } - - return CrmebUtil.jsonToListClass(data.toJSONString(), ProgramCategoryVo.class); - } - - /** - * 小程序公共模板库 - * @param page int 页码 - * @author Mr.Zhang - * @since 2020-06-01 - * @return List - */ - @Override - public List getProgramPublicTempList(int page) { - - List programCategory = getProgramCategory(); - String ids = programCategory.stream().map(s -> s.getId().toString()).distinct().collect(Collectors.joining(",")); - setProgramUrl(WeChatConstants.PUBLIC_API_PROGRAM_PUBLIC_TEMP); - int limit = 30; - int start = (page - Constants.NUM_ONE) * limit; - JSONObject jsonObject = get(this.url + "&ids=" + ids + "&start=" + start + "&limit=" + limit); - JSONArray data = jsonObject.getJSONArray("data"); - if(null == data || data.size() < Constants.NUM_ONE){ - return null; - } - - return CrmebUtil.jsonToListClass(data.toJSONString(), ProgramTempVo.class); - } - - /** - * 小程序公共模板关键词库 - * @param tid 公共模板id - * @author Mr.Zhang - * @since 2020-06-01 - * @return List - */ - @Override - public List getWeChatKeywordsByTid(Integer tid) { - setProgramUrl(WeChatConstants.PUBLIC_API_PROGRAM_PUBLIC_TEMP_KEYWORDS); - JSONObject jsonObject = get(this.url + "&tid=" + tid); - JSONArray data = jsonObject.getJSONArray("data"); - if(null == data || data.size() < 1){ - throw new CrmebException("微信没有返回关键词数据"); - } - - return CrmebUtil.jsonToListClass(data.toJSONString(), ProgramTempKeywordsVo.class); - } - - /** - * 小程序我的模板添加 - * @param programAddMyTempVo ProgramAddMyTempVo 添加我的模板参数 - * @author Mr.Zhang - * @since 2020-06-01 - * @return String 添加至帐号下的模板id,发送小程序订阅消息时所需 - */ - @Override - public String programAddMyTemp(ProgramAddMyTempVo programAddMyTempVo) { - setProgramUrl(WeChatConstants.PUBLIC_API_ADD_PROGRAM_TEMPLATE); - JSONObject data = post(this.url, JSONObject.toJSONString(programAddMyTempVo)); - if(StringUtils.isBlank(data.getString("priTmplId"))){ - throw new CrmebException("微信没有返回模板id"); - } - - return data.getString("priTmplId"); - } - - /** - * 小程序我的模板删除 - * @param myTempId String 我的模板id - * @author Mr.Zhang - * @since 2020-06-01 - */ - @Override - public void programDeleteMyTemp(String myTempId) { - setProgramUrl(WeChatConstants.PUBLIC_API_DELETE_PROGRAM_TEMPLATE); - HashMap map = new HashMap<>(); - map.put("priTmplId", myTempId); - post(this.url, map); - } - - @Override - public String getRoutineAccessToken() { - setProgramToken(); - return (String) this.programToken; - } - - /** - * 获取微信用户个人信息 - * @param openId String code换取的 openId - * @param token String code换取的token - * @author Mr.Zhang - * @since 2020-06-01 - * @return WeChatAuthorizeLoginUserInfoResponse - */ - @Override - public WeChatAuthorizeLoginUserInfoResponse getUserInfo(String openId, String token) { - String url = getUrl() + WeChatConstants.WE_CHAT_AUTHORIZE_GET_USER_INFO + - "?access_token=" + token + - "&openid=" + openId + - "&lang=zh_CN"; - JSONObject result = get(url); - return JSONObject.parseObject(result.toJSONString(), WeChatAuthorizeLoginUserInfoResponse.class); - } - - /** - * 获取微信公众号js配置 - * @author Mr.Zhang - * @since 2020-06-01 - * @return Object - */ - @Override - public Object getJsSdkConfig(String url) { - try { - url = URLDecoder.decode(url, "UTF-8"); - } catch (UnsupportedEncodingException e) { - throw new CrmebException("url无法解析!"); - } - setJsApiTicket(); - setJsSDKSign(url); - - Map map = new HashMap<>(); - map.put("url", url); - map.put("appId", this.appId); - map.put("jsApiTicket", getJsApiTicket()); - map.put("nonceStr", getUuid()); - map.put("timestamp", getTimestamp()); - map.put("signature", getSignature()); - map.put("jsApiList", getJsApiList()); - map.put("debug", debug); - map.put("beta", beta); - return map; - } - - - /** - * 使用access_token获取jsapi_ticket - * @author Mr.Zhang - * @since 2020-06-03 - */ - public void setJsApiTicket() { - String key = WeChatConstants.REDIS_PUBLIC_JS_API_TICKET; - Object ticketObject = redisUtil.get(key); - if(ticketObject != null && !ticketObject.equals("")){ - this.jsApiTicket = ticketObject.toString(); - return; - } - - setUrl(WeChatConstants.PUBLIC_API_JS_API_TICKET); - JSONObject jsonObject = get(this.url + "&type=jsapi"); - this.jsApiTicket = jsonObject.getString("ticket"); - redisUtil.set(key, this.jsApiTicket, WeChatConstants.REDIS_PUBLIC_JS_API_TICKET_EXPRESS, TimeUnit.SECONDS); - } - - /** - * 获取JsSDK签名 - * @author Mr.Zhang - * @since 2020-06-01 - */ - private void setJsSDKSign(String url) { - getAppInfo(); - setUuid(); - setTimestamp(); - String paramString; - - //注意这里参数名必须全部小写,且必须有序 - paramString = "jsapi_ticket=" + getJsApiTicket() + - "&noncestr=" + getUuid() + - "×tamp=" + getTimestamp() + - "&url=" + url; - try { - - MessageDigest crypt = MessageDigest.getInstance("SHA-1"); - crypt.reset(); - try { - crypt.update(paramString.getBytes(StandardCharsets.UTF_8)); - } catch (Exception e) { - throw new CrmebException("获取JS SDK配置失败" + e.getMessage()); - } - this.signature = CrmebUtil.byteToHex(crypt.digest()); - } catch (NoSuchAlgorithmException e) { - throw new CrmebException("获取JS SDK配置失败" + e.getMessage()); - } - } - - /** - * 获取JsSDK 接口权限列表 - * @author Mr.Zhang - * @since 2020-06-03 - * @return List - */ - private List getJsApiList() { - return CrmebUtil.stringToArrayStr(WeChatConstants.PUBLIC_API_JS_API_SDK_LIST); - } - - /** - * 模板消息发送 - * @author Mr.Zhang - * @since 2020-06-03 - * @return List - */ - public boolean sendPublicTempMessage(TemplateMessageVo templateMessageVo) { - try{ - setUrl(WeChatConstants.PUBLIC_API_PUBLIC_TEMPLATE_MESSAGE_SEND); - post(this.url, JSONObject.toJSONString(templateMessageVo)); - return true; - }catch (Exception e){ - e.printStackTrace(); - return false; - } - } - - /** - * 订阅消息发送 - * @author Mr.Zhang - * @since 2020-06-03 - * @return List - */ - public boolean sendProgramTempMessage(TemplateMessageVo templateMessageVo) { - try{ - setProgramUrl(WeChatConstants.PUBLIC_API_PROGRAM_TEMPLATE_MESSAGE_SEND); - post(this.url, JSONObject.toJSONString(templateMessageVo)); - return true; - }catch (Exception e){ - return false; - } - } - - /** - * 模板消息 行业信息 - * @author Mr.Zhang - * @since 2020-06-03 - * @return List - */ - @Override - public JSONObject getIndustry() { - try{ - setUrl(WeChatConstants.PUBLIC_API_TEMPLATE_MESSAGE_INDUSTRY); - return get(this.url); - }catch (Exception e){ - return null; - } - } - - /** - * 获取微信素材上传url - * @author Mr.Zhang - * @since 2020-06-03 - * @return String - */ - @Override - public String getUploadMedia() { - setUrl(WeChatConstants.PUBLIC_API_MEDIA_UPLOAD); - return this.url; - } - -} - diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/service/impl/WechatProgramMyTempServiceImpl.java b/crmeb/src/main/java/com/zbkj/crmeb/wechat/service/impl/WechatProgramMyTempServiceImpl.java deleted file mode 100644 index 25eb1def..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/service/impl/WechatProgramMyTempServiceImpl.java +++ /dev/null @@ -1,334 +0,0 @@ -package com.zbkj.crmeb.wechat.service.impl; - -import com.alibaba.fastjson.JSONArray; -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.common.PageParamRequest; -import com.constants.Constants; -import com.exception.CrmebException; -import com.github.pagehelper.PageHelper; -import com.utils.CrmebUtil; -import com.utils.PinYinUtil; -import com.utils.RedisUtil; -import com.zbkj.crmeb.user.model.UserToken; -import com.zbkj.crmeb.user.service.UserTokenService; -import com.zbkj.crmeb.wechat.dao.WechatProgramMyTempDao; -import com.zbkj.crmeb.wechat.model.WechatProgramMyTemp; -import com.zbkj.crmeb.wechat.request.WechatProgramMyTempRequest; -import com.zbkj.crmeb.wechat.request.WechatProgramMyTempSearchRequest; -import com.zbkj.crmeb.wechat.service.WeChatService; -import com.zbkj.crmeb.wechat.service.WechatProgramMyTempService; -import com.zbkj.crmeb.wechat.vo.ProgramAddMyTempVo; -import com.zbkj.crmeb.wechat.vo.ProgramTempKeywordsVo; -import com.zbkj.crmeb.wechat.vo.ProgramTemplateMessageVo; -import com.zbkj.crmeb.wechat.vo.SendProgramTemplateMessageItemVo; -import org.apache.commons.lang3.StringUtils; -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.HashMap; -import java.util.List; - -/** - * WechatProgramMyTempServiceImpl 接口实现 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Service -public class WechatProgramMyTempServiceImpl extends ServiceImpl implements WechatProgramMyTempService { - - @Resource - private WechatProgramMyTempDao dao; - - @Autowired - private WeChatService weChatService; - - @Autowired - private UserTokenService userTokenService; - - @Autowired - private RedisUtil redisUtil; - - /** - * 列表 - * @param request 请求参数 - * @param pageParamRequest 分页类参数 - * @author Mr.Zhang - * @since 2020-08-28 - * @return List - */ - @Override - public List getList(WechatProgramMyTempSearchRequest request, PageParamRequest pageParamRequest) { - PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); - - //带 WechatProgramMyTemp 类的多条件查询 - LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(); - //模板标题模糊查询,其余精确查询 - if(StringUtils.isNotBlank(request.getTitle())){ - lambdaQueryWrapper.like(WechatProgramMyTemp::getTitle, request.getTitle()); - } - - if(StringUtils.isNotBlank(request.getTempId())){ - lambdaQueryWrapper.eq(WechatProgramMyTemp::getTempId, request.getTempId()); - } - - if(null != request.getStatus()){ - lambdaQueryWrapper.eq(WechatProgramMyTemp::getStatus, request.getStatus()); - } - - if(StringUtils.isNotBlank(request.getType())){ - lambdaQueryWrapper.eq(WechatProgramMyTemp::getType, request.getType()); - } - if(null != request.getId()){ - lambdaQueryWrapper.eq(WechatProgramMyTemp::getId, request.getId()); - } - - lambdaQueryWrapper.orderByDesc(WechatProgramMyTemp::getUpdateTime); - return dao.selectList(lambdaQueryWrapper); - } - - /** - * 查询小程序我的模板信息 - * @param id Integer - * @author Mr.Zhang - * @since 2020-08-28 - */ - @Override - public WechatProgramMyTemp info(Integer id) { - WechatProgramMyTemp vo = getById(id); - if(null == vo){ - throw new CrmebException("没有找到数据"); - } - return vo; - } - - /** - * 禁用/禁用小程序我的模板 - * @param id Integer - * @author Mr.Zhang - * @since 2020-08-28 - */ - @Override - public boolean updateStatus(Integer id, boolean status) { - WechatProgramMyTemp vo = info(id); - vo.setStatus(status); - updateById(vo); - return true; - } - - /** - * 添加我的模板 - * @param wechatProgramMyTempRequest WechatProgramMyTempRequest 添加我的模板参数 - * @author Mr.Zhang - * @since 2020-06-01 - * @return String 添加至帐号下的模板id,发送小程序订阅消息时所需 - */ - @Override - public boolean create(WechatProgramMyTempRequest wechatProgramMyTempRequest) { - WechatProgramMyTemp wechatProgramMyTemp = new WechatProgramMyTemp(); - BeanUtils.copyProperties(wechatProgramMyTempRequest, wechatProgramMyTemp); - - //数据提交到微信 - String myTempId = addMyTemp(wechatProgramMyTemp); - wechatProgramMyTemp.setTempId(myTempId); - formatExtra(wechatProgramMyTemp); - return save(wechatProgramMyTemp); - } - - /** - * 更新我的模板 由于微信无更新机制先删除,后添加 - * @param wechatProgramMyTempRequest WechatProgramMyTempRequest 添加我的模板参数 - * @author Mr.Zhang - * @since 2020-06-01 - * @return String 添加至帐号下的模板id,发送小程序订阅消息时所需 - */ - @Override - public boolean update(Integer id, WechatProgramMyTempRequest wechatProgramMyTempRequest) { - WechatProgramMyTemp vo = getById(id); - if(null == vo){ - throw new CrmebException("没有找到模板信息"); - } - //删除微信已存在的数据 - deleteMyTemp(vo.getTempId()); - - //数据提交到微信 - WechatProgramMyTemp wechatProgramMyTemp = new WechatProgramMyTemp(); - BeanUtils.copyProperties(wechatProgramMyTempRequest, wechatProgramMyTemp); - wechatProgramMyTemp.setId(id); - - String myTempId = addMyTemp(wechatProgramMyTemp); - wechatProgramMyTemp.setTempId(myTempId); - formatExtra(wechatProgramMyTemp); - - return updateById(wechatProgramMyTemp); - } - - - - - @Override - public void push(int myTempId, HashMap map, Integer userId) { - // 查询对应id并且状态启用的模版 - WechatProgramMyTempSearchRequest pram = new WechatProgramMyTempSearchRequest(); -// pram.setTempId(tempKey+""); - pram.setId(myTempId); - pram.setStatus(true); - List existMyTemps = getList(pram, new PageParamRequest()); - if(null == existMyTemps){ - return; - } - WechatProgramMyTemp wechatProgramMyTemp = null; - if(existMyTemps.size() >= 1) wechatProgramMyTemp = existMyTemps.get(0); -// WechatProgramMyTemp wechatProgramMyTemp = getById(tempKey); - if(wechatProgramMyTemp == null || StringUtils.isBlank(wechatProgramMyTemp.getKid())){ - return; - } - - //拿到三方登录绑定的token - UserToken UserToken = userTokenService.getTokenByUserId(userId, Constants.THIRD_LOGIN_TOKEN_TYPE_PROGRAM); - - if(null == UserToken || StringUtils.isBlank(UserToken.getToken())){ - return; - } - - ProgramTemplateMessageVo programTemplateMessageVo = new ProgramTemplateMessageVo(); - programTemplateMessageVo.setTemplate_id(wechatProgramMyTemp.getTempId()); - - //组装关键字数据 - HashMap hashMap = new HashMap<>(); - List programTempKeywordsVoList = JSONArray.parseArray(wechatProgramMyTemp.getExtra(), ProgramTempKeywordsVo.class); - for (ProgramTempKeywordsVo programTempKeywordsVo : programTempKeywordsVoList) { - if(StringUtils.isBlank(map.get(programTempKeywordsVo.getKey()))){ - continue; - } - hashMap.put(programTempKeywordsVo.getSendKey(), new SendProgramTemplateMessageItemVo(map.get(programTempKeywordsVo.getKey()))); - } - - programTemplateMessageVo.setData(hashMap); - programTemplateMessageVo.setTouser(UserToken.getToken()); - redisUtil.lPush(Constants.WE_CHAT_MESSAGE_KEY_PROGRAM, JSONObject.toJSONString(programTemplateMessageVo)); - } - - /** - * 同步我的模板到小程序 - * @param wechatProgramMyTemp WechatProgramMyTemp 需要同步的数据 - * @author Mr.Zhang - * @since 2020-06-01 - * @return String 添加至帐号下的模板id,发送小程序订阅消息时所需 - */ - @Override - @Async - public void async(WechatProgramMyTemp wechatProgramMyTemp) { - try{ - //删除微信已存在的数据 - deleteMyTemp(wechatProgramMyTemp.getTempId()); - - //保存数据到微信 - String myTempId = addMyTemp(wechatProgramMyTemp); - wechatProgramMyTemp.setTempId(myTempId); - updateById(wechatProgramMyTemp); - }catch (Exception e){ - //异常不处理 - } - } - - /** - * 查询所有的模板数据 - * @author Mr.Zhang - * @since 2020-06-01 - * @return String 添加至帐号下的模板id,发送小程序订阅消息时所需 - */ - @Override - public List getAll() { - PageParamRequest pageParamRequest = new PageParamRequest(); - pageParamRequest.setLimit(Constants.EXPORT_MAX_LIMIT); - WechatProgramMyTempSearchRequest wechatProgramMyTempSearchRequest = new WechatProgramMyTempSearchRequest(); - wechatProgramMyTempSearchRequest.setStatus(true); - return getList(wechatProgramMyTempSearchRequest, pageParamRequest); - } - - /** - * 更新应用场景 - * @param id Integer - * @param type String - * @author Mr.Zhang - * @since 2020-08-28 - * @return true - */ - @Override - public boolean updateType(Integer id, String type) { - WechatProgramMyTemp vo = info(id); - vo.setType(type); - updateById(vo); - return true; - } - - /** - * 小程序我的模板添加 - * @param wechatProgramMyTemp WechatProgramMyTemp 添加我的模板参数 - * @author Mr.Zhang - * @since 2020-06-01 - * @return String 添加至帐号下的模板id,发送小程序订阅消息时所需 - */ - private String addMyTemp(WechatProgramMyTemp wechatProgramMyTemp) { - ProgramAddMyTempVo programAddMyTempVo = new ProgramAddMyTempVo( - wechatProgramMyTemp.getTid(), - CrmebUtil.stringToArray(wechatProgramMyTemp.getKid()), - wechatProgramMyTemp.getSceneDesc() - ); - String myTempId = weChatService.programAddMyTemp(programAddMyTempVo); - if(StringUtils.isBlank(myTempId)){ - throw new CrmebException("微信没有返回模板id"); - } - - return myTempId; - } - - /** - * 小程序我的模板删除 - * @param myTempId String 我的模板id - * @author Mr.Zhang - * @since 2020-06-01 - */ - private void deleteMyTemp(String myTempId) { - weChatService.programDeleteMyTemp(myTempId); - } - - /** - * 模板扩展字段 name转拼音,sendKey计算 - * @param wechatProgramMyTemp WechatProgramMyTemp 数据 - * @author Mr.Zhang - * @since 2020-06-01 - */ - private void formatExtra(WechatProgramMyTemp wechatProgramMyTemp) { - if(StringUtils.isBlank(wechatProgramMyTemp.getExtra())){ - throw new CrmebException("扩展字段必填"); - } - - HashMap map = new HashMap<>(); - List programTempKeywordsVoList = JSONArray.parseArray(wechatProgramMyTemp.getExtra(), ProgramTempKeywordsVo.class); - if(programTempKeywordsVoList.size() < Constants.NUM_ONE){ - throw new CrmebException("扩展字段格式错误"); - } - - for (ProgramTempKeywordsVo programTempKeywordsVo : programTempKeywordsVoList) { - programTempKeywordsVo.setSendKey(programTempKeywordsVo.getRule()+programTempKeywordsVo.getKid()); - programTempKeywordsVo.setKey(PinYinUtil.toPinyin(programTempKeywordsVo.getName())); //在代码里组织模板数据的时候map填充的key - } - - wechatProgramMyTemp.setExtra(JSONObject.toJSONString(programTempKeywordsVoList)); - } -} - diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/service/impl/WechatProgramPublicTempServiceImpl.java b/crmeb/src/main/java/com/zbkj/crmeb/wechat/service/impl/WechatProgramPublicTempServiceImpl.java deleted file mode 100644 index cbaedf3a..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/service/impl/WechatProgramPublicTempServiceImpl.java +++ /dev/null @@ -1,116 +0,0 @@ -package com.zbkj.crmeb.wechat.service.impl; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.common.PageParamRequest; -import com.github.pagehelper.PageHelper; -import com.utils.DateUtil; -import com.zbkj.crmeb.wechat.dao.WechatProgramPublicTempDao; -import com.zbkj.crmeb.wechat.model.WechatProgramPublicTemp; -import com.zbkj.crmeb.wechat.request.WechatProgramPublicTempSearchRequest; -import com.zbkj.crmeb.wechat.service.WeChatService; -import com.zbkj.crmeb.wechat.service.WechatProgramPublicTempService; -import com.zbkj.crmeb.wechat.vo.ProgramTempVo; -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; - -/** - * WechatProgramPublicTempServiceImpl 接口实现 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Service -public class WechatProgramPublicTempServiceImpl extends ServiceImpl implements WechatProgramPublicTempService { - - @Resource - private WechatProgramPublicTempDao dao; - - @Autowired - private WeChatService weChatService; - - /** - * 列表 - * @param request 请求参数 - * @param pageParamRequest 分页类参数 - * @author Mr.Zhang - * @since 2020-08-27 - * @return List - */ - @Override - public List getList(WechatProgramPublicTempSearchRequest request, PageParamRequest pageParamRequest) { - PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); - - //带 WechatProgramPublicTemp 类的多条件查询 - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - WechatProgramPublicTemp model = new WechatProgramPublicTemp(); - String title = request.getTitle(); - request.setTitle(null); - BeanUtils.copyProperties(request, model); - lambdaQueryWrapper.setEntity(model); - - //模板标题模糊查询,其余精确查询 - if(StringUtils.isNotBlank(title)){ - lambdaQueryWrapper.like(WechatProgramPublicTemp::getTitle, title); - } - lambdaQueryWrapper.orderByDesc(WechatProgramPublicTemp::getUpdateTime); - return dao.selectList(lambdaQueryWrapper); - } - - /** - * 把微信公众号模板同步到数据库 - * @author Mr.Zhang - * @since 2020-08-27 - * @return List - */ - @Override - public void async() { - int page = 1; - while (true){ - List programPublicTempList = weChatService.getProgramPublicTempList(page); - if(null == programPublicTempList || programPublicTempList.size() < 1){ - return; - } - WechatProgramPublicTemp wechatProgramPublicTempVo = new WechatProgramPublicTemp(); - - for (ProgramTempVo vo : programPublicTempList) { - WechatProgramPublicTemp wechatProgramPublicTemp = getVoByTid(vo.getTid()); - if(null == wechatProgramPublicTemp){ - BeanUtils.copyProperties(vo, wechatProgramPublicTempVo); - save(wechatProgramPublicTempVo); - continue; - } - BeanUtils.copyProperties(vo, wechatProgramPublicTemp); - wechatProgramPublicTemp.setUpdateTime(DateUtil.nowDateTime()); - updateById(wechatProgramPublicTemp); - } - page++; - } - } - - /** - * 通过模板号查询模板 - * @param tid Integer 微信模板号 - * @author Mr.Zhang - * @since 2020-08-27 - * @return WechatProgramPublicTemp - */ - private WechatProgramPublicTemp getVoByTid(Integer tid) { - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(WechatProgramPublicTemp::getTid, tid); - return dao.selectOne(lambdaQueryWrapper); - } - -} - diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/service/impl/WechatQrcodeServiceImpl.java b/crmeb/src/main/java/com/zbkj/crmeb/wechat/service/impl/WechatQrcodeServiceImpl.java deleted file mode 100644 index 1f59e692..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/service/impl/WechatQrcodeServiceImpl.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.zbkj.crmeb.wechat.service.impl; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.common.PageParamRequest; -import com.github.pagehelper.PageHelper; -import com.zbkj.crmeb.wechat.dao.WechatQrcodeDao; -import com.zbkj.crmeb.wechat.model.WechatQrcode; -import com.zbkj.crmeb.wechat.request.WechatQrcodeSearchRequest; -import com.zbkj.crmeb.wechat.service.WechatQrcodeService; -import org.springframework.stereotype.Service; - -import javax.annotation.Resource; -import java.util.List; - -/** - * WechatQrcodeServiceImpl 接口实现 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Service -public class WechatQrcodeServiceImpl extends ServiceImpl implements WechatQrcodeService { - - @Resource - private WechatQrcodeDao dao; - - - /** - * 列表 - * @param request 请求参数 - * @param pageParamRequest 分页类参数 - * @author Mr.Zhang - * @since 2020-04-18 - * @return List - */ - @Override - public List getList(WechatQrcodeSearchRequest request, PageParamRequest pageParamRequest) { - PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit()); - return dao.selectList(null); - } - -} - diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/service/impl/WechatSendMessageForMinService.java b/crmeb/src/main/java/com/zbkj/crmeb/wechat/service/impl/WechatSendMessageForMinService.java deleted file mode 100644 index 321ac059..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/service/impl/WechatSendMessageForMinService.java +++ /dev/null @@ -1,286 +0,0 @@ -package com.zbkj.crmeb.wechat.service.impl; - -import com.constants.Constants; -import com.zbkj.crmeb.wechat.service.TemplateMessageService; -import com.zbkj.crmeb.wechat.vo.*; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.HashMap; - -/** - * 根据已申请的模版发送小程序消息 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Service -public class WechatSendMessageForMinService implements com.zbkj.crmeb.wechat.service.WechatSendMessageForMinService { - - @Autowired - private TemplateMessageService templateMessageService; - - /** - * 发送积分到账消息 - * @param integral 待发送积分参数 - * @param userId 接收用户id - */ - @Override - public void sendIntegralMessage(WechatSendMessageForIntegral integral, Integer userId) { - HashMap mapPram = new HashMap<>(); - mapPram.put("shuoming", integral.getShangPinMingCheng()); - mapPram.put("dingdanbianhao", integral.getDingDanBianHao()); - mapPram.put("shangpinmingcheng", integral.getShangPinMingCheng()); - mapPram.put("zhifujine", integral.getZhiFuJinE()); - mapPram.put("huodejifen", integral.getHuoDeJiFen()); - mapPram.put("leijijifen", integral.getLeiJiJiFen()); - mapPram.put("jiaoyishijian", integral.getJiaoYiShiJian()); - mapPram.put("beizhu", integral.getBeiZhu()); - mapPram.put("mendian", integral.getMenDian()); - mapPram.put("daozhangyuanyin", integral.getDaoZhangYuanYin()); - templateMessageService.push(4+"", mapPram, userId, Constants.PAY_TYPE_WE_CHAT_FROM_PROGRAM); - } - - /** - * 退款申请通知 - * - * @param reFundNotify 退款申请参数 - * @param userId 接收者用户Id - */ - @Override - public void sendReFundNotifyMessage(WechatSendMessageForReFundNotify reFundNotify, Integer userId) { - HashMap mapPram = new HashMap<>(); - mapPram.put("dingdanshangpin", reFundNotify.getDingDanShangPin()); - mapPram.put("dingdanjine", reFundNotify.getDingDanJinE()); - mapPram.put("xiadanshijian", reFundNotify.getXiaDanShiJian()); - mapPram.put("dingdanbianhao", reFundNotify.getDingDanBianHao()); - mapPram.put("shenqingshijian", reFundNotify.getShenQingShiJian()); - mapPram.put("shangjiamingcheng", reFundNotify.getShangJiaMingCheng()); - mapPram.put("tuikuanzhuangtai", reFundNotify.getTuiKuanZhuangTai()); - mapPram.put("beizhu", reFundNotify.getBeiZhu()); - mapPram.put("tuikuanjine", reFundNotify.getTuiKuanJinE()); - mapPram.put("tuikuanyuanyin", reFundNotify.getTuiKuanYuanYin()); - mapPram.put("yonghudianhua", reFundNotify.getYongHuDianHua()); - mapPram.put("sheibeimingcheng", reFundNotify.getSheBeiMingCheng()); - templateMessageService.push(5+"", mapPram, userId, Constants.PAY_TYPE_WE_CHAT_FROM_PROGRAM); - } - - /** - * 退款通知 - * - * @param reFundEd 退款参数 - * @param userId 接收者用户Id - */ - @Override - public void sendReFundEdMessage(WechatSendMessageForReFundEd reFundEd, Integer userId) { - HashMap mapPram = new HashMap<>(); - mapPram.put("tuikuanzhuangtai", reFundEd.getTuiKuanZhuangTai()); - mapPram.put("tuikuanshangpin", reFundEd.getTuiKuanShangPin()); - mapPram.put("tuikuanjine", reFundEd.getTuiKuanJinE()); - mapPram.put("chulishijian", reFundEd.getChuLiShiJian()); - mapPram.put("tuikuanshuoming", reFundEd.getTuiKuanShuoMing()); - mapPram.put("tuikuandanhao", reFundEd.getTuiKuaDanHao()); - mapPram.put("dingdanbianhao", reFundEd.getDingDanBianHao()); - mapPram.put("xiadanshijian", reFundEd.getXiaDanShiJian()); - mapPram.put("zhifujine", reFundEd.getZhiFuJinE()); - mapPram.put("shangpinmingcheng", reFundEd.getShangPinMingChneg()); - mapPram.put("tuikuanyuanyin", reFundEd.getTuiKuanYuanYin()); - mapPram.put("mendianmingcheng", reFundEd.getMenDianMingCheng()); - mapPram.put("beizhu", reFundEd.getBeiZhu()); - mapPram.put("shebeimingcheng", reFundEd.getSheBeiMingCheng()); - templateMessageService.push(8+"", mapPram, userId, Constants.PAY_TYPE_WE_CHAT_FROM_PROGRAM); - } - - /** - * 付款成功通知 - * - * @param paySuccess 付款成功参数 - * @param userId 接受者用户Id - */ - @Override - public void sendPaySuccessMessage(WechatSendMessageForPaySuccess paySuccess, Integer userId) { - HashMap mapPram = new HashMap<>(); - mapPram.put("fukuandanhao", paySuccess.getFuKuanDanHao()); - mapPram.put("fukuanjine", paySuccess.getFuKuanJinE()); - mapPram.put("fukuanshijian", paySuccess.getFuKuanShiJian()); - mapPram.put("wenxintishi", paySuccess.getWenXinTiShi()); - mapPram.put("dingdanjine", paySuccess.getDingDanJinE()); - mapPram.put("shangpinqingdan", paySuccess.getShangPinQingDan()); - templateMessageService.push(6+"", mapPram, userId, Constants.PAY_TYPE_WE_CHAT_FROM_PROGRAM); - } - - /** - * 充值成功过通知 - * - * @param topped 充值成功通知 - * @param userId 接收者Id - */ - @Override - public void sendToppedMessage(WechatSendMessageForTopped topped, Integer userId) { - HashMap mapPram = new HashMap<>(); - mapPram.put("jiaoyidanhao", topped.getJiaoYiDanHao()); - mapPram.put("chongzhikahao", topped.getChongZhiKaHao()); - mapPram.put("chongzhijine", topped.getChongZhiJinE()); - mapPram.put("zhanghuyue", topped.getZhangHuYuE()); - mapPram.put("chongzhishijian", topped.getChongZhiShiJian()); - mapPram.put("zengsongjine", topped.getZengSongJinE()); - mapPram.put("beizhu", topped.getBeiZhu()); - mapPram.put("shifujine", topped.getShiFuJinE()); - mapPram.put("shanghumingcheng", topped.getShangHuMingCheng()); - mapPram.put("zhifufangshi", topped.getZhiFuFangShi()); - templateMessageService.push(7+"", mapPram, userId, Constants.PAY_TYPE_WE_CHAT_FROM_PROGRAM); - } - - /** - * 配送通知 - * - * @param distrbution 配送参数 - * @param userId 接收者Id - */ - @Override - public void sendDistrbutionMessage(WechatSendMessageForDistrbution distrbution, Integer userId) { - HashMap mapPram = new HashMap<>(); - mapPram.put("dingdanbianhao", distrbution.getDingDanBianHao()); - mapPram.put("peisongrenyuan", distrbution.getPeiSongRenYuan()); - mapPram.put("lianxidianhua", distrbution.getLianXiDianHua()); - mapPram.put("dingdanzhuangtai", distrbution.getDingDanZhuangTai()); - mapPram.put("yujisongdashijian", distrbution.getYuJiSongDaShiJian()); - mapPram.put("shangpinmingcheng", distrbution.getShangPinMingCheng()); - mapPram.put("peisongshijian", distrbution.getPeiSongShiJian()); - templateMessageService.push(15+"", mapPram, userId, Constants.PAY_TYPE_WE_CHAT_FROM_PROGRAM); - } - - /** - * 提现通知 - * - * @param cash 提现参数 - * @param userId 用户Id - */ - @Override - public void sendCashMessage(WechatSendMessageForCash cash, Integer userId) { - HashMap mapPram = new HashMap<>(); - mapPram.put("tixianzhuangtai", cash.getTiXianZhuangTai()); - mapPram.put("tixianjine", cash.getTiXianJinE()); - mapPram.put("tixianzhanghao", cash.getTiXianZhangHao()); - mapPram.put("tixianshijian", cash.getTiXianShiJian()); - mapPram.put("tixianshuoming", cash.getTiXianShuoMing()); - mapPram.put("xingming", cash.getXingMing()); - mapPram.put("shouxufei", cash.getShouXuFei()); - mapPram.put("dakuanfangshi", cash.getDaKuanFangShi()); - mapPram.put("dakuanyuanyin", cash.getDaKuanYuanYin()); - mapPram.put("tixiandanhao", cash.getTiXianDanHao()); - mapPram.put("tixianfangshi", cash.getTiXianFangShi()); - mapPram.put("shibaiyuanyin", cash.getShiBaiYuanYin()); - mapPram.put("huiyuanmingcheng", cash.getHuiYuanMingCheng()); - templateMessageService.push(14+"", mapPram, userId, Constants.PAY_TYPE_WE_CHAT_FROM_PROGRAM); - } - - /** - * 订单创建 - * - * @param cateOrder 创建订单参数 - * @param userId 用户Id - */ - @Override - public void sendCreateOrderMessage(WechatSendMessageForCreateOrder cateOrder, Integer userId) { - HashMap mapPram = new HashMap<>(); - mapPram.put("dingdanleixing", cateOrder.getDingDanLeiXing()); - mapPram.put("dingdanshangpin", cateOrder.getDingDanShangPin()); - mapPram.put("dingdanjine", cateOrder.getDingDanJinE()); - mapPram.put("dingdanbianhao", cateOrder.getDingDanBianHao()); - mapPram.put("maijiaxinxi", cateOrder.getMaiJiaXinXi()); - mapPram.put("dingdanshijian", cateOrder.getDingDanShiJian()); - mapPram.put("wenxintishi", cateOrder.getWenXinTiShi()); - mapPram.put("tihuodizhi", cateOrder.getTiHuoDiZhi()); - mapPram.put("zhifufangshi", cateOrder.getZhiFuFangShi()); - mapPram.put("shouhuodizhi", cateOrder.getShouHuoDiZHi()); - templateMessageService.push(9+"", mapPram, userId, Constants.PAY_TYPE_WE_CHAT_FROM_PROGRAM); - } - - /** - * 收货通知 - * - * @param getPackage 收货参数 - * @param userId 用户Id - */ - @Override - public void sendGetPackageMessage(WechatSendMessageForGetPackage getPackage, Integer userId) { - HashMap mapPram = new HashMap<>(); - mapPram.put("dingdanleixing", getPackage.getDingDanLeiXing()); - mapPram.put("dingdanshangpin", getPackage.getDingDanShangPin()); - mapPram.put("maijiaxinxi", getPackage.getMaiJiaXinXi()); - mapPram.put("shouhuodizhi", getPackage.getShouHuoDiZhi()); - mapPram.put("shouhuoshijian", getPackage.getShouHuoShiJian()); - mapPram.put("dingdanbianhao", getPackage.getDingDanBianHao()); - templateMessageService.push(13+"", mapPram, userId, Constants.PAY_TYPE_WE_CHAT_FROM_PROGRAM); - } - - /** - * 取消订单 - * - * @param orderCancel 取消订单参数 - * @param userId 用户Id - */ - @Override - public void sendOrderCancelMessage(WechatSendMessageForOrderCancel orderCancel, Integer userId) { - HashMap mapPram = new HashMap<>(); - mapPram.put("quxiaoyuanyin", orderCancel.getQuXiaoYuanYin()); - mapPram.put("quxiaoshijian", orderCancel.getQuXiaoShiJian()); - mapPram.put("mendianziti", orderCancel.getMenDianZiTi()); - mapPram.put("beizhu", orderCancel.getBeiZhu()); - mapPram.put("dingdanleixing", orderCancel.getDingDanLeiXing()); - mapPram.put("shangpinmingcheng", orderCancel.getShangPinMingCheng()); - mapPram.put("dingdanhao", orderCancel.getDingDanHao()); - mapPram.put("dingdanzhuangtai", orderCancel.getDingDanZhuangTai()); - mapPram.put("dingdanjine", orderCancel.getDingDanJinE()); - mapPram.put("xiadanshijian", orderCancel.getXiaDanShiJian()); - mapPram.put("shangchangmingcheng", orderCancel.getShangPinMingCheng()); - mapPram.put("kefudianhua", orderCancel.getKeFuDianHua()); - mapPram.put("dingdanbianhao", orderCancel.getDingDanBianHao()); - mapPram.put("mendianmingcheng", orderCancel.getMenDianMingCheng()); - mapPram.put("lianxifangshi", orderCancel.getLianXiFangShi()); - templateMessageService.push(12+"", mapPram, userId, Constants.PAY_TYPE_WE_CHAT_FROM_PROGRAM); - } - - /** - * 发货通知 - * - * @param toPackage 发货通知 - * @param userId 用户id - */ - @Override - public void sendRePackageMessage(WechatSendMessageForPackage toPackage, Integer userId) { - HashMap mapPram = new HashMap<>(); - mapPram.put("peisongfangshi", toPackage.getPeiSongFangShi()); - mapPram.put("dingdanhao", toPackage.getDingDanHao()); - mapPram.put("shouhuodizhi", toPackage.getShouHuoDiZhi()); - mapPram.put("kehudianhua", toPackage.getKeHuDianHua()); - mapPram.put("shouhuoren", toPackage.getShouHuoRen()); - templateMessageService.push(11+"", mapPram, userId, Constants.PAY_TYPE_WE_CHAT_FROM_PROGRAM); - } - - /** - * 核销通知 - * - * @param ver 核销参数 - * @param userId 用户Id - */ - @Override - public void sendVerSuccessMessage(WechatSendMessageForVerSuccess ver, Integer userId) { - HashMap mapPram = new HashMap<>(); - mapPram.put("huodongmingcheng", ver.getHuoDongMingCheng()); - mapPram.put("shangpinmingcheng", ver.getShangPinMingCheng()); - mapPram.put("dingdanhao", ver.getDingDanHao()); - mapPram.put("hexiaoshijian", ver.getHeXiaoShiJian()); - mapPram.put("hexiaozonge", ver.getHeXiaoZongE()); - mapPram.put("beizhu", ver.getBeiZhu()); - mapPram.put("mendian", ver.getMenDian()); - templateMessageService.push(10+"", mapPram, userId, Constants.PAY_TYPE_WE_CHAT_FROM_PROGRAM); - } -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/service/impl/WechatUserServiceImpl.java b/crmeb/src/main/java/com/zbkj/crmeb/wechat/service/impl/WechatUserServiceImpl.java deleted file mode 100644 index 3d46cd9e..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/service/impl/WechatUserServiceImpl.java +++ /dev/null @@ -1,102 +0,0 @@ -package com.zbkj.crmeb.wechat.service.impl; - -import com.exception.CrmebException; -import com.utils.CrmebUtil; -import com.zbkj.crmeb.article.model.Article; -import com.zbkj.crmeb.article.service.ArticleService; -import com.zbkj.crmeb.user.model.UserToken; -import com.zbkj.crmeb.user.service.UserTokenService; -import com.zbkj.crmeb.wechat.service.WeChatService; -import com.zbkj.crmeb.wechat.service.WechatUserService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Lazy; -import org.springframework.stereotype.Service; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -/** - * 微信用户表 服务实现类 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 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/src/main/java/com/zbkj/crmeb/wechat/vo/MediaCountVo.java b/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/MediaCountVo.java deleted file mode 100644 index 09dcd28c..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/MediaCountVo.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.zbkj.crmeb.wechat.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~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@ApiModel(value="MediaCountVo对象", description="微信素材总数") -public class MediaCountVo { - @ApiModelProperty(value = "音频") - @JsonProperty(value = "voice_count") - private int voice; - - @ApiModelProperty(value = "视频") - @JsonProperty(value = "video_count") - private int video; - - @ApiModelProperty(value = "图片") - @JsonProperty(value = "image_count") - private int image; - - @ApiModelProperty(value = "新闻") - @JsonProperty(value = "news_count") - private int news; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/MediaDetailVo.java b/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/MediaDetailVo.java deleted file mode 100644 index ebd07132..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/MediaDetailVo.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.zbkj.crmeb.wechat.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~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@ApiModel(value="MediaDetailVo对象", description="微信素材列表详情") -public class MediaDetailVo { - @ApiModelProperty(value = "媒体id") - @JsonProperty(value = "media_id") - private String mediaId; - - @ApiModelProperty(value = "名称") - @JsonProperty(value = "name") - private String name; - - @ApiModelProperty(value = "更新时间") - @JsonProperty(value = "update_time") - private String updateTime; - - @ApiModelProperty(value = "访问地址") - @JsonProperty(value = "url") - private String url; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/ProgramAddMyTempVo.java b/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/ProgramAddMyTempVo.java deleted file mode 100644 index 64da213e..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/ProgramAddMyTempVo.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.zbkj.crmeb.wechat.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~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@ApiModel(value="ProgramAddMyTempVo对象", description="小程序订阅消息模板添加") -public class ProgramAddMyTempVo { - public ProgramAddMyTempVo() { - } - - public ProgramAddMyTempVo(Integer tid, List kidList, String sceneDesc) { - this.tid = tid; - this.kidList = kidList; - this.sceneDesc = sceneDesc; - } - - @ApiModelProperty(value = "模板id", required = true) - private Integer tid; - - @ApiModelProperty(value = "开发者自行组合好的模板关键词列表,关键词顺序可以自由搭配(例如 [3,5,4] 或 [4,5,3]),最多支持5个,最少2个关键词组合", required = true) - private List kidList; - - @ApiModelProperty(value = "模版类型,2 为一次性订阅,3 为长期订阅") - private String sceneDesc; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/SendTemplateMessageVo.java b/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/SendTemplateMessageVo.java deleted file mode 100644 index c1dbc1e1..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/SendTemplateMessageVo.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.zbkj.crmeb.wechat.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~2020 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 SendTemplateMessageVo { - @ApiModelProperty(value = "OPENID", required = true) - private String openId; - - @ApiModelProperty(value = "模板ID", required = true) - private String templateId; - - @ApiModelProperty(value = "模板跳转链接(海外帐号没有跳转能力)") - private String url; - - @ApiModelProperty(value = "发送内容") - private HashMap data; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/WechatSendMessageForCash.java b/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/WechatSendMessageForCash.java deleted file mode 100644 index 9ef1b885..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/WechatSendMessageForCash.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.zbkj.crmeb.wechat.vo; - -import lombok.Data; - -/** - * 提现结果通知 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -public class WechatSendMessageForCash { - public WechatSendMessageForCash(String tiXianZhuangTai, String tiXianJinE, String tiXianZhangHao, String tiXianShiJian, String tiXianShuoMing, String xingMing, String shouXuFei, String daKuanFangShi, String daKuanYuanYin, String tiXianDanHao, String tiXianFangShi, String shiBaiYuanYin, String huiYuanMingCheng) { - TiXianZhuangTai = tiXianZhuangTai; - TiXianJinE = tiXianJinE; - TiXianZhangHao = tiXianZhangHao; - TiXianShiJian = tiXianShiJian; - TiXianShuoMing = tiXianShuoMing; - XingMing = xingMing; - ShouXuFei = shouXuFei; - DaKuanFangShi = daKuanFangShi; - DaKuanYuanYin = daKuanYuanYin; - TiXianDanHao = tiXianDanHao; - TiXianFangShi = tiXianFangShi; - ShiBaiYuanYin = shiBaiYuanYin; - HuiYuanMingCheng = huiYuanMingCheng; - } - - private String TiXianZhuangTai; - private String TiXianJinE; - private String TiXianZhangHao; - private String TiXianShiJian; - private String TiXianShuoMing; - private String XingMing; - private String ShouXuFei; - private String DaKuanFangShi; - private String DaKuanYuanYin; - private String TiXianDanHao; - private String TiXianFangShi; - private String ShiBaiYuanYin; - private String HuiYuanMingCheng; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/WechatSendMessageForCreateOrder.java b/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/WechatSendMessageForCreateOrder.java deleted file mode 100644 index f092fac9..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/WechatSendMessageForCreateOrder.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.zbkj.crmeb.wechat.vo; - -import lombok.Data; - -/** - * 新订单提醒 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -public class WechatSendMessageForCreateOrder { - public WechatSendMessageForCreateOrder(String dingDanLeiXing, String dingDanShangPin, String dingDanJinE, String dingDanBianHao, String maiJiaXinXi, String dingDanShiJian, String wenXinTiShi, String tiHuoDiZhi, String zhiFuFangShi, String shouHuoDiZHi) { - DingDanLeiXing = dingDanLeiXing; - DingDanShangPin = dingDanShangPin; - DingDanJinE = dingDanJinE; - DingDanBianHao = dingDanBianHao; - MaiJiaXinXi = maiJiaXinXi; - DingDanShiJian = dingDanShiJian; - WenXinTiShi = wenXinTiShi; - TiHuoDiZhi = tiHuoDiZhi; - ZhiFuFangShi = zhiFuFangShi; - ShouHuoDiZHi = shouHuoDiZHi; - } - - private String DingDanLeiXing; - private String DingDanShangPin; - private String DingDanJinE; - private String DingDanBianHao; - private String MaiJiaXinXi; - private String DingDanShiJian; - private String WenXinTiShi; - private String TiHuoDiZhi; - private String ZhiFuFangShi; - private String ShouHuoDiZHi; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/WechatSendMessageForDistrbution.java b/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/WechatSendMessageForDistrbution.java deleted file mode 100644 index 48ada26c..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/WechatSendMessageForDistrbution.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.zbkj.crmeb.wechat.vo; - -import lombok.Data; - -/** - * 配送通知 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -public class WechatSendMessageForDistrbution { - public WechatSendMessageForDistrbution(String dingDanBianHao, String peiSongRenYuan, String lianXiDianHua, String dingDanZhuangTai, String yuJiSongDaShiJian, String shangPinMingCheng, String peiSongShiJian) { - DingDanBianHao = dingDanBianHao; - PeiSongRenYuan = peiSongRenYuan; - LianXiDianHua = lianXiDianHua; - DingDanZhuangTai = dingDanZhuangTai; - YuJiSongDaShiJian = yuJiSongDaShiJian; - ShangPinMingCheng = shangPinMingCheng; - PeiSongShiJian = peiSongShiJian; - } - - private String DingDanBianHao; - private String PeiSongRenYuan; - private String LianXiDianHua; - private String DingDanZhuangTai; - private String YuJiSongDaShiJian; - private String ShangPinMingCheng; - private String PeiSongShiJian; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/WechatSendMessageForGetPackage.java b/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/WechatSendMessageForGetPackage.java deleted file mode 100644 index 05c263fc..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/WechatSendMessageForGetPackage.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.zbkj.crmeb.wechat.vo; - -import lombok.Data; - -/** - * 收货通知 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -public class WechatSendMessageForGetPackage { - public WechatSendMessageForGetPackage(String dingDanLeiXing, String dingDanShangPin, String maiJiaXinXi, String shouHuoDiZhi, String shouHuoShiJian, String dingDanBianHao) { - DingDanLeiXing = dingDanLeiXing; - DingDanShangPin = dingDanShangPin; - MaiJiaXinXi = maiJiaXinXi; - ShouHuoDiZhi = shouHuoDiZhi; - ShouHuoShiJian = shouHuoShiJian; - DingDanBianHao = dingDanBianHao; - } - - private String DingDanLeiXing; - private String DingDanShangPin; - private String MaiJiaXinXi; - private String ShouHuoDiZhi; - private String ShouHuoShiJian; - private String DingDanBianHao; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/WechatSendMessageForIntegral.java b/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/WechatSendMessageForIntegral.java deleted file mode 100644 index 4f12e6de..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/WechatSendMessageForIntegral.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.zbkj.crmeb.wechat.vo; - -import lombok.Data; - -/** - * 赠送积分消息通知 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -public class WechatSendMessageForIntegral { - - public WechatSendMessageForIntegral(String shuoMing, String dingDanBianHao, String shangPinMingCheng, String zhiFuJinE, String huoDeJiFen, String leiJiJiFen, String jiaoYiShiJian, String beiZhu, String menDian, String daoZhangYuanYin) { - ShuoMing = shuoMing; - DingDanBianHao = dingDanBianHao; - ShangPinMingCheng = shangPinMingCheng; - ZhiFuJinE = zhiFuJinE; - HuoDeJiFen = huoDeJiFen; - LeiJiJiFen = leiJiJiFen; - JiaoYiShiJian = jiaoYiShiJian; - BeiZhu = beiZhu; - MenDian = menDian; - DaoZhangYuanYin = daoZhangYuanYin; - } - - private String ShuoMing; - private String DingDanBianHao; - private String ShangPinMingCheng; - private String ZhiFuJinE; - private String HuoDeJiFen; - private String LeiJiJiFen; - private String JiaoYiShiJian; - private String BeiZhu; - private String MenDian; - private String DaoZhangYuanYin; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/WechatSendMessageForOrderCancel.java b/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/WechatSendMessageForOrderCancel.java deleted file mode 100644 index 54a64ba3..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/WechatSendMessageForOrderCancel.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.zbkj.crmeb.wechat.vo; - -import lombok.Data; - -/** - * 订单取消通知 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -public class WechatSendMessageForOrderCancel { - public WechatSendMessageForOrderCancel(String quXiaoYuanYin, String quXiaoShiJian, String menDianZiTi, String beiZhu, String dingDanLeiXing, String shangPinMingCheng, String dingDanHao, String dingDanZhuangTai, String dingDanJinE, String xiaDanShiJian, String shangChangMingCheng, String keFuDianHua, String dingDanBianHao, String menDianMingCheng, String lianXiFangShi) { - QuXiaoYuanYin = quXiaoYuanYin; - QuXiaoShiJian = quXiaoShiJian; - MenDianZiTi = menDianZiTi; - BeiZhu = beiZhu; - DingDanLeiXing = dingDanLeiXing; - ShangPinMingCheng = shangPinMingCheng; - DingDanHao = dingDanHao; - DingDanZhuangTai = dingDanZhuangTai; - DingDanJinE = dingDanJinE; - XiaDanShiJian = xiaDanShiJian; - ShangChangMingCheng = shangChangMingCheng; - KeFuDianHua = keFuDianHua; - DingDanBianHao = dingDanBianHao; - MenDianMingCheng = menDianMingCheng; - LianXiFangShi = lianXiFangShi; - } - - private String QuXiaoYuanYin; - private String QuXiaoShiJian; - private String MenDianZiTi; - private String BeiZhu; - private String DingDanLeiXing; - private String ShangPinMingCheng; - private String DingDanHao; - private String DingDanZhuangTai; - private String DingDanJinE; - private String XiaDanShiJian; - private String ShangChangMingCheng; - private String KeFuDianHua; - private String DingDanBianHao; - private String MenDianMingCheng; - private String LianXiFangShi; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/WechatSendMessageForPackage.java b/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/WechatSendMessageForPackage.java deleted file mode 100644 index fd707eb1..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/WechatSendMessageForPackage.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.zbkj.crmeb.wechat.vo; - -import lombok.Data; - -/** - * 发货通知 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -public class WechatSendMessageForPackage { - public WechatSendMessageForPackage(String peiSongFangShi, String dingDanHao, String shouHuoDiZhi, String keHuDianHua, String shouHuoRen) { - PeiSongFangShi = peiSongFangShi; - DingDanHao = dingDanHao; - ShouHuoDiZhi = shouHuoDiZhi; - KeHuDianHua = keHuDianHua; - ShouHuoRen = shouHuoRen; - } - - private String PeiSongFangShi; - private String DingDanHao; - private String ShouHuoDiZhi; - private String KeHuDianHua; - private String ShouHuoRen; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/WechatSendMessageForPaySuccess.java b/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/WechatSendMessageForPaySuccess.java deleted file mode 100644 index f4c43884..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/WechatSendMessageForPaySuccess.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.zbkj.crmeb.wechat.vo; - -import lombok.Data; - -/** - * 付款成功通知 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -public class WechatSendMessageForPaySuccess { - public WechatSendMessageForPaySuccess(String fuKuanDanHao, String fuKuanJinE, String fuKuanShiJian, String wenXinTiShi, String dingDanJinE, String shangPinQingDan) { - FuKuanDanHao = fuKuanDanHao; - FuKuanJinE = fuKuanJinE; - FuKuanShiJian = fuKuanShiJian; - WenXinTiShi = wenXinTiShi; - DingDanJinE = dingDanJinE; - ShangPinQingDan = shangPinQingDan; - } - - private String FuKuanDanHao; - private String FuKuanJinE; - private String FuKuanShiJian; - private String WenXinTiShi; - private String DingDanJinE; - private String ShangPinQingDan; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/WechatSendMessageForReFundEd.java b/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/WechatSendMessageForReFundEd.java deleted file mode 100644 index 903e9c3b..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/WechatSendMessageForReFundEd.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.zbkj.crmeb.wechat.vo; - -import lombok.Data; - -/** - * 退款通知 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -public class WechatSendMessageForReFundEd { - public WechatSendMessageForReFundEd(String tuiKuanZhuangTai, String tuiKuanShangPin, String tuiKuanJinE, String chuLiShiJian, String tuiKuaShuoMing, String tuiKuaDanHao, String dingDanBianHao, String xiaDanShiJian, String zhiFuJinE, String shangPinMingChneg, String tuiKuanYuanYin, String menDianMingCheng, String beiZhu, String sheBeiMingCheng) { - TuiKuanZhuangTai = tuiKuanZhuangTai; - TuiKuanShangPin = tuiKuanShangPin; - TuiKuanJinE = tuiKuanJinE; - ChuLiShiJian = chuLiShiJian; - TuiKuanShuoMing = tuiKuaShuoMing; - TuiKuaDanHao = tuiKuaDanHao; - DingDanBianHao = dingDanBianHao; - XiaDanShiJian = xiaDanShiJian; - ZhiFuJinE = zhiFuJinE; - ShangPinMingChneg = shangPinMingChneg; - TuiKuanYuanYin = tuiKuanYuanYin; - MenDianMingCheng = menDianMingCheng; - BeiZhu = beiZhu; - SheBeiMingCheng = sheBeiMingCheng; - } - - private String TuiKuanZhuangTai; - private String TuiKuanShangPin; - private String TuiKuanJinE; - private String ChuLiShiJian; - private String TuiKuanShuoMing; - private String TuiKuaDanHao; - private String DingDanBianHao; - private String XiaDanShiJian; - private String ZhiFuJinE; - private String ShangPinMingChneg; - private String TuiKuanYuanYin; - private String MenDianMingCheng; - private String BeiZhu; - private String SheBeiMingCheng; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/WechatSendMessageForReFundNotify.java b/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/WechatSendMessageForReFundNotify.java deleted file mode 100644 index fb5b70ef..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/WechatSendMessageForReFundNotify.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.zbkj.crmeb.wechat.vo; - -import lombok.Data; - -/** - * 退款申请通知 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -public class WechatSendMessageForReFundNotify { - public WechatSendMessageForReFundNotify(String dingDanShangPin, String dingDanJinE, String xiaDanShiJian, String dingDanBianHao, String shenQingShiJian, String shangJiaMingCheng, String tuiKuanZhuangTai, String beiZhu, String tuiKuanJinE, String tuiKuanYuanYin, String yongHuDianHua, String sheBeiMingCheng) { - DingDanShangPin = dingDanShangPin; - DingDanJinE = dingDanJinE; - XiaDanShiJian = xiaDanShiJian; - DingDanBianHao = dingDanBianHao; - ShenQingShiJian = shenQingShiJian; - ShangJiaMingCheng = shangJiaMingCheng; - TuiKuanZhuangTai = tuiKuanZhuangTai; - BeiZhu = beiZhu; - TuiKuanJinE = tuiKuanJinE; - TuiKuanYuanYin = tuiKuanYuanYin; - YongHuDianHua = yongHuDianHua; - SheBeiMingCheng = sheBeiMingCheng; - } - - private String DingDanShangPin; - private String DingDanJinE; - private String XiaDanShiJian; - private String DingDanBianHao; - private String ShenQingShiJian; - private String ShangJiaMingCheng; - private String TuiKuanZhuangTai; - private String BeiZhu; - private String TuiKuanJinE; - private String TuiKuanYuanYin; - private String YongHuDianHua; - private String SheBeiMingCheng; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/WechatSendMessageForTopped.java b/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/WechatSendMessageForTopped.java deleted file mode 100644 index 582cca85..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/WechatSendMessageForTopped.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.zbkj.crmeb.wechat.vo; - -import lombok.Data; - -/** - * 充值成功 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -public class WechatSendMessageForTopped { - public WechatSendMessageForTopped(String jiaoYiDanHao, String chongZhiKaHao, String chongZhiJinE, String zhangHuYuE, String chongZhiShiJian, String zengSongJinE, String beiZhu, String shiFuJinE, String shangHuMingCheng, String zhiFuFangShi) { - JiaoYiDanHao = jiaoYiDanHao; - ChongZhiKaHao = chongZhiKaHao; - ChongZhiJinE = chongZhiJinE; - ZhangHuYuE = zhangHuYuE; - ChongZhiShiJian = chongZhiShiJian; - ZengSongJinE = zengSongJinE; - BeiZhu = beiZhu; - ShiFuJinE = shiFuJinE; - ShangHuMingCheng = shangHuMingCheng; - ZhiFuFangShi = zhiFuFangShi; - } - - private String JiaoYiDanHao; - private String ChongZhiKaHao; - private String ChongZhiJinE; - private String ZhangHuYuE; - private String ChongZhiShiJian; - private String ZengSongJinE; - private String BeiZhu; - private String ShiFuJinE; - private String ShangHuMingCheng; - private String ZhiFuFangShi; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/WechatSendMessageForVerSuccess.java b/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/WechatSendMessageForVerSuccess.java deleted file mode 100644 index 1ad4ba4f..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/WechatSendMessageForVerSuccess.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.zbkj.crmeb.wechat.vo; - -import lombok.Data; - -/** - * 核销成功通知 - * +---------------------------------------------------------------------- - * | CRMEB [ CRMEB赋能开发者,助力企业发展 ] - * +---------------------------------------------------------------------- - * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -public class WechatSendMessageForVerSuccess { - public WechatSendMessageForVerSuccess(String huoDongMingCheng, String shangPinMingCheng, String dingDanHao, String heXiaoShiJian, String heXiaoZongE, String beiZhu, String menDian) { - HuoDongMingCheng = huoDongMingCheng; - ShangPinMingCheng = shangPinMingCheng; - DingDanHao = dingDanHao; - HeXiaoShiJian = heXiaoShiJian; - HeXiaoZongE = heXiaoZongE; - BeiZhu = beiZhu; - MenDian = menDian; - } - - private String HuoDongMingCheng; - private String ShangPinMingCheng; - private String DingDanHao; - private String HeXiaoShiJian; - private String HeXiaoZongE; - private String BeiZhu; - private String MenDian; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechatMessage/vo/MessageNewsItemDetailVo.java b/crmeb/src/main/java/com/zbkj/crmeb/wechatMessage/vo/MessageNewsItemDetailVo.java deleted file mode 100644 index d03ed929..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechatMessage/vo/MessageNewsItemDetailVo.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.zbkj.crmeb.wechatMessage.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~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@ApiModel(value="MessageNewsItemDetailVo对象", description="微信消息 图片/语音 模板") -public class MessageNewsItemDetailVo{ - public MessageNewsItemDetailVo() {} - public MessageNewsItemDetailVo(String title, String description, String picUrl, String url) { - Title = title; - Description = description; - PicUrl = picUrl; - Url = url; - } - - @ApiModelProperty(value = "图文消息标题") - private String Title; - - @ApiModelProperty(value = "图文消息描述") - private String Description; - - @ApiModelProperty(value = "图片链接,支持JPG、PNG格式,较好的效果为大图360*200,小图200*200") - private String PicUrl; - - @ApiModelProperty(value = "点击图文消息跳转链接") - private String Url; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechatMessage/vo/MessageNewsItemVo.java b/crmeb/src/main/java/com/zbkj/crmeb/wechatMessage/vo/MessageNewsItemVo.java deleted file mode 100644 index d447849d..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechatMessage/vo/MessageNewsItemVo.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.zbkj.crmeb.wechatMessage.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~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@ApiModel(value="MessageNewsItemVo对象", description="微信消息 图片/语音 模板") -public class MessageNewsItemVo{ - public MessageNewsItemVo() {} - public MessageNewsItemVo(MessageNewsItemDetailVo data) { - item = data; - } - - @ApiModelProperty(value = "文章详情") - private MessageNewsItemDetailVo item; -} diff --git a/crmeb/src/main/java/com/zbkj/crmeb/wechatMessage/vo/MessageNewsVo.java b/crmeb/src/main/java/com/zbkj/crmeb/wechatMessage/vo/MessageNewsVo.java deleted file mode 100644 index b0de712c..00000000 --- a/crmeb/src/main/java/com/zbkj/crmeb/wechatMessage/vo/MessageNewsVo.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.zbkj.crmeb.wechatMessage.vo; - -import com.constants.WeChatConstants; -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~2020 https://www.crmeb.com All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 - * +---------------------------------------------------------------------- - * | Author: CRMEB Team - * +---------------------------------------------------------------------- - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@ApiModel(value="MessageNewsVo对象", description="微信消息 图片/语音 模板") -public class MessageNewsVo extends BaseMessageVo { - public MessageNewsVo() {} - public MessageNewsVo(String toUserName, String fromUserName, int articleCount, List messageNewsItemVoList) { - super(); - ToUserName = toUserName; - FromUserName = fromUserName; - ArticleCount = articleCount; - Articles = messageNewsItemVoList; - MsgType = WeChatConstants.WE_CHAT_MESSAGE_RESP_MESSAGE_TYPE_NEWS; - } - - @ApiModelProperty(value = "图文消息个数;当用户发送文本、图片、语音、视频、图文、地理位置这六种消息时,开发者只能回复1条图文消息;其余场景最多可回复8条图文消息") - private int ArticleCount = 1; - - @ApiModelProperty(value = "图文消息信息,注意,如果图文数超过限制,则将只发限制内的条数") - private List Articles; -} diff --git a/crmeb/src/main/resources/mapper/finance/UserExtractMapper.xml b/crmeb/src/main/resources/mapper/finance/UserExtractMapper.xml deleted file mode 100644 index 37bf740e..00000000 --- a/crmeb/src/main/resources/mapper/finance/UserExtractMapper.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/crmeb/src/main/resources/mapper/marketing/StoreCouponUserMapper.xml b/crmeb/src/main/resources/mapper/marketing/StoreCouponUserMapper.xml deleted file mode 100644 index a7f92eff..00000000 --- a/crmeb/src/main/resources/mapper/marketing/StoreCouponUserMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/crmeb/src/main/resources/mapper/pay/component/PayComponentBrandMapper.xml b/crmeb/src/main/resources/mapper/pay/component/PayComponentBrandMapper.xml deleted file mode 100644 index e1bfadb7..00000000 --- a/crmeb/src/main/resources/mapper/pay/component/PayComponentBrandMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/crmeb/src/main/resources/mapper/pay/component/PayComponentCatMapper.xml b/crmeb/src/main/resources/mapper/pay/component/PayComponentCatMapper.xml deleted file mode 100644 index 9251c00b..00000000 --- a/crmeb/src/main/resources/mapper/pay/component/PayComponentCatMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/crmeb/src/main/resources/mapper/pay/component/PayComponentDraftProductMapper.xml b/crmeb/src/main/resources/mapper/pay/component/PayComponentDraftProductMapper.xml deleted file mode 100644 index ea4b04cc..00000000 --- a/crmeb/src/main/resources/mapper/pay/component/PayComponentDraftProductMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/crmeb/src/main/resources/mapper/pay/component/PayComponentProductAuditInfoMapper.xml b/crmeb/src/main/resources/mapper/pay/component/PayComponentProductAuditInfoMapper.xml deleted file mode 100644 index 93e1d8ed..00000000 --- a/crmeb/src/main/resources/mapper/pay/component/PayComponentProductAuditInfoMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/crmeb/src/main/resources/mapper/pay/component/PayComponentProductInfoMapper.xml b/crmeb/src/main/resources/mapper/pay/component/PayComponentProductInfoMapper.xml deleted file mode 100644 index 16934d0e..00000000 --- a/crmeb/src/main/resources/mapper/pay/component/PayComponentProductInfoMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/crmeb/src/main/resources/mapper/pay/component/PayComponentProductMapper.xml b/crmeb/src/main/resources/mapper/pay/component/PayComponentProductMapper.xml deleted file mode 100644 index 628815cc..00000000 --- a/crmeb/src/main/resources/mapper/pay/component/PayComponentProductMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/crmeb/src/main/resources/mapper/pay/component/PayComponentProductSkuAttrMapper.xml b/crmeb/src/main/resources/mapper/pay/component/PayComponentProductSkuAttrMapper.xml deleted file mode 100644 index 518f7d90..00000000 --- a/crmeb/src/main/resources/mapper/pay/component/PayComponentProductSkuAttrMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/crmeb/src/main/resources/mapper/pay/component/PayComponentProductSkuMapper.xml b/crmeb/src/main/resources/mapper/pay/component/PayComponentProductSkuMapper.xml deleted file mode 100644 index 27194b00..00000000 --- a/crmeb/src/main/resources/mapper/pay/component/PayComponentProductSkuMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/crmeb/src/main/resources/mapper/store/StoreBargainMapper.xml b/crmeb/src/main/resources/mapper/store/StoreBargainMapper.xml deleted file mode 100644 index f71a8fb6..00000000 --- a/crmeb/src/main/resources/mapper/store/StoreBargainMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/crmeb/src/main/resources/mapper/store/StoreBargainUserHelpMapper.xml b/crmeb/src/main/resources/mapper/store/StoreBargainUserHelpMapper.xml deleted file mode 100644 index ed12144a..00000000 --- a/crmeb/src/main/resources/mapper/store/StoreBargainUserHelpMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/crmeb/src/main/resources/mapper/store/StoreCombinationMapper.xml b/crmeb/src/main/resources/mapper/store/StoreCombinationMapper.xml deleted file mode 100644 index 7f6edc66..00000000 --- a/crmeb/src/main/resources/mapper/store/StoreCombinationMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/crmeb/src/main/resources/mapper/store/StoreOrderInfoMapper.xml b/crmeb/src/main/resources/mapper/store/StoreOrderInfoMapper.xml deleted file mode 100644 index bb28b1ce..00000000 --- a/crmeb/src/main/resources/mapper/store/StoreOrderInfoMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/crmeb/src/main/resources/mapper/store/StorePinkMapper.xml b/crmeb/src/main/resources/mapper/store/StorePinkMapper.xml deleted file mode 100644 index d502f25a..00000000 --- a/crmeb/src/main/resources/mapper/store/StorePinkMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/crmeb/src/main/resources/mapper/store/StoreProductAttrResultMapper.xml b/crmeb/src/main/resources/mapper/store/StoreProductAttrResultMapper.xml deleted file mode 100644 index b20dea61..00000000 --- a/crmeb/src/main/resources/mapper/store/StoreProductAttrResultMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/crmeb/src/main/resources/mapper/store/StoreProductAttrValueMapper.xml b/crmeb/src/main/resources/mapper/store/StoreProductAttrValueMapper.xml deleted file mode 100644 index a1ee0869..00000000 --- a/crmeb/src/main/resources/mapper/store/StoreProductAttrValueMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/crmeb/src/main/resources/mapper/store/StoreProductCouponMapper.xml b/crmeb/src/main/resources/mapper/store/StoreProductCouponMapper.xml deleted file mode 100644 index 232d6cb1..00000000 --- a/crmeb/src/main/resources/mapper/store/StoreProductCouponMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/crmeb/src/main/resources/mapper/store/StoreProductDescriptionMapper.xml b/crmeb/src/main/resources/mapper/store/StoreProductDescriptionMapper.xml deleted file mode 100644 index ba0aa59e..00000000 --- a/crmeb/src/main/resources/mapper/store/StoreProductDescriptionMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/crmeb/src/main/resources/mapper/store/StoreProductMapper.xml b/crmeb/src/main/resources/mapper/store/StoreProductMapper.xml deleted file mode 100644 index aecf92d4..00000000 --- a/crmeb/src/main/resources/mapper/store/StoreProductMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/crmeb/src/main/resources/mapper/store/StoreProductRuleMapper.xml b/crmeb/src/main/resources/mapper/store/StoreProductRuleMapper.xml deleted file mode 100644 index 5bde1fa9..00000000 --- a/crmeb/src/main/resources/mapper/store/StoreProductRuleMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/crmeb/src/main/resources/mapper/system/SystemAdminMapper.xml b/crmeb/src/main/resources/mapper/system/SystemAdminMapper.xml deleted file mode 100644 index b67dedec..00000000 --- a/crmeb/src/main/resources/mapper/system/SystemAdminMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/crmeb/src/main/resources/mapper/system/SystemCityMapper.xml b/crmeb/src/main/resources/mapper/system/SystemCityMapper.xml deleted file mode 100644 index 8fed9b30..00000000 --- a/crmeb/src/main/resources/mapper/system/SystemCityMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/crmeb/src/main/resources/mapper/system/SystemConfigMapper.xml b/crmeb/src/main/resources/mapper/system/SystemConfigMapper.xml deleted file mode 100644 index 4124882b..00000000 --- a/crmeb/src/main/resources/mapper/system/SystemConfigMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/crmeb/src/main/resources/mapper/system/SystemFormTempMapper.xml b/crmeb/src/main/resources/mapper/system/SystemFormTempMapper.xml deleted file mode 100644 index c0ddb8db..00000000 --- a/crmeb/src/main/resources/mapper/system/SystemFormTempMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/crmeb/src/main/resources/mapper/system/SystemGroupDataMapper.xml b/crmeb/src/main/resources/mapper/system/SystemGroupDataMapper.xml deleted file mode 100644 index f13f4eec..00000000 --- a/crmeb/src/main/resources/mapper/system/SystemGroupDataMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/crmeb/src/main/resources/mapper/system/SystemGroupMapper.xml b/crmeb/src/main/resources/mapper/system/SystemGroupMapper.xml deleted file mode 100644 index 08b8d139..00000000 --- a/crmeb/src/main/resources/mapper/system/SystemGroupMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/crmeb/src/main/resources/mapper/system/SystemRoleMapper.xml b/crmeb/src/main/resources/mapper/system/SystemRoleMapper.xml deleted file mode 100644 index 90971a54..00000000 --- a/crmeb/src/main/resources/mapper/system/SystemRoleMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/crmeb/src/main/resources/mapper/system/SystemStoreStaffMapper.xml b/crmeb/src/main/resources/mapper/system/SystemStoreStaffMapper.xml deleted file mode 100644 index da434863..00000000 --- a/crmeb/src/main/resources/mapper/system/SystemStoreStaffMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/crmeb/src/main/resources/mapper/system/SystemUserLevelMapper.xml b/crmeb/src/main/resources/mapper/system/SystemUserLevelMapper.xml deleted file mode 100644 index a5721b67..00000000 --- a/crmeb/src/main/resources/mapper/system/SystemUserLevelMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/crmeb/src/main/resources/mapper/user/UserAddressMapper.xml b/crmeb/src/main/resources/mapper/user/UserAddressMapper.xml deleted file mode 100644 index f362b071..00000000 --- a/crmeb/src/main/resources/mapper/user/UserAddressMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/crmeb/src/main/resources/mapper/user/UserBrokerageRecordMapper.xml b/crmeb/src/main/resources/mapper/user/UserBrokerageRecordMapper.xml deleted file mode 100644 index 658253c3..00000000 --- a/crmeb/src/main/resources/mapper/user/UserBrokerageRecordMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/crmeb/src/main/resources/mapper/user/UserIntegralRecordMapper.xml b/crmeb/src/main/resources/mapper/user/UserIntegralRecordMapper.xml deleted file mode 100644 index eaeec9f8..00000000 --- a/crmeb/src/main/resources/mapper/user/UserIntegralRecordMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/crmeb/src/main/resources/mapper/user/UserTagMapper.xml b/crmeb/src/main/resources/mapper/user/UserTagMapper.xml deleted file mode 100644 index f72aa498..00000000 --- a/crmeb/src/main/resources/mapper/user/UserTagMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/crmeb/src/main/resources/mapper/user/UserTokenMapper.xml b/crmeb/src/main/resources/mapper/user/UserTokenMapper.xml deleted file mode 100644 index b8f27d59..00000000 --- a/crmeb/src/main/resources/mapper/user/UserTokenMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/crmeb/src/main/resources/mapper/wechat/TemplateMessageMapper.xml b/crmeb/src/main/resources/mapper/wechat/TemplateMessageMapper.xml deleted file mode 100644 index c891aa0f..00000000 --- a/crmeb/src/main/resources/mapper/wechat/TemplateMessageMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/crmeb/src/main/resources/mapper/wechat/WechatProgramMyTempMapper.xml b/crmeb/src/main/resources/mapper/wechat/WechatProgramMyTempMapper.xml deleted file mode 100644 index 2290e98a..00000000 --- a/crmeb/src/main/resources/mapper/wechat/WechatProgramMyTempMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/crmeb/src/main/resources/mapper/wechat/WechatProgramPublicTempMapper.xml b/crmeb/src/main/resources/mapper/wechat/WechatProgramPublicTempMapper.xml deleted file mode 100644 index 250b3b22..00000000 --- a/crmeb/src/main/resources/mapper/wechat/WechatProgramPublicTempMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/crmeb/src/main/resources/mapper/wechat/WechatQrcodeMapper.xml b/crmeb/src/main/resources/mapper/wechat/WechatQrcodeMapper.xml deleted file mode 100644 index 516f2b6c..00000000 --- a/crmeb/src/main/resources/mapper/wechat/WechatQrcodeMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/crmeb/src/main/resources/mapper/wechat/WechatReplyMapper.xml b/crmeb/src/main/resources/mapper/wechat/WechatReplyMapper.xml deleted file mode 100644 index 4a158832..00000000 --- a/crmeb/src/main/resources/mapper/wechat/WechatReplyMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/crmeb/src/main/webapp/index.jsp b/crmeb/src/main/webapp/index.jsp deleted file mode 100644 index f5e6f990..00000000 --- a/crmeb/src/main/webapp/index.jsp +++ /dev/null @@ -1,31 +0,0 @@ - -<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> - -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> -<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> -<%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt_rt"%> -<% - String path = request.getContextPath(); - String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path; -%> - - - - - - - - Insert title here - - - -

Hello CRMEB By Java

- -<%--

请点击此链接进入--%> -<%-- swagger--%> -<%--

--%> - - - - - diff --git a/crmeb/src/test/java/com/zbkj/crmeb/CrmebApplicationTests.java b/crmeb/src/test/java/com/zbkj/crmeb/CrmebApplicationTests.java deleted file mode 100644 index 976dd6ca..00000000 --- a/crmeb/src/test/java/com/zbkj/crmeb/CrmebApplicationTests.java +++ /dev/null @@ -1,74 +0,0 @@ -//package com.zbkj.crmeb; -// -//import com.alibaba.fastjson.JSONObject; -//import com.zbkj.crmeb.sms.service.SmsService; -//import org.junit.Test; -//import org.junit.runner.RunWith; -//import org.springframework.beans.factory.annotation.Autowired; -//import org.springframework.boot.test.context.SpringBootTest; -//import org.springframework.test.context.ContextConfiguration; -//import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -// -//@RunWith(SpringJUnit4ClassRunner.class) -//@SpringBootTest -//@ContextConfiguration -//public class CrmebApplicationTests { -// -//// @Test -//// void contextLoads() { -//// } -//// @Autowired -//// private UserMapper userMapper; -//// -//// @Test -//// void testSelecte(){ -//// System.out.println("----------Start test----------"); -//// List userList = userMapper.selectList(null); -//// Assert.assertEquals(5, userList.size()); -//// userList.forEach(System.out::println); -//// } -// -// @Autowired -// private SmsService smsService; -// -// @Test -// public void testIsLogin() {//是否登录 -//// JSONObject login = smsService.isLogin(); -//// System.out.println(login); -// } -// -// @Test -// public void testSendCodeForRegister() {//注册短信 -// -// } -// -// @Test -// public void testLogin() {//登录 -// -// } -// -// @Test -// public void testInfo() {//用户信息 -// -// } -// -// @Test -// public void testTempList() {//短信模板列表 -// -// } -// -// @Test -// public void testPayList() {//支付套餐列表 -// -// } -// -// @Test -// public void testPayQrcode() {//支付码 -// -// } -// -// @Test -// public void sendCode() {//发送短信 -// -// } -//} diff --git a/crmeb/src/test/java/com/zbkj/crmeb/store/service/impl/StoreProductRelationServiceImplTest.java b/crmeb/src/test/java/com/zbkj/crmeb/store/service/impl/StoreProductRelationServiceImplTest.java deleted file mode 100644 index 2036cc2f..00000000 --- a/crmeb/src/test/java/com/zbkj/crmeb/store/service/impl/StoreProductRelationServiceImplTest.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.zbkj.crmeb.store.service.impl; - -class StoreProductRelationServiceImplTest { - -} diff --git a/crmeb/src/test/java/com/zbkj/crmeb/store/service/impl/StoreProductReplyServiceImplTest.java b/crmeb/src/test/java/com/zbkj/crmeb/store/service/impl/StoreProductReplyServiceImplTest.java deleted file mode 100644 index 37c7fe2c..00000000 --- a/crmeb/src/test/java/com/zbkj/crmeb/store/service/impl/StoreProductReplyServiceImplTest.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.zbkj.crmeb.store.service.impl; - -import static org.junit.jupiter.api.Assertions.*; - -class StoreProductReplyServiceImplTest { - -} \ No newline at end of file diff --git a/crmeb/src/test/java/com/zbkj/crmeb/user/service/impl/UserServiceImplTest.java b/crmeb/src/test/java/com/zbkj/crmeb/user/service/impl/UserServiceImplTest.java deleted file mode 100644 index 030f7a05..00000000 --- a/crmeb/src/test/java/com/zbkj/crmeb/user/service/impl/UserServiceImplTest.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.zbkj.crmeb.user.service.impl; - -import static org.junit.jupiter.api.Assertions.*; - -class UserServiceImplTest { - -} \ No newline at end of file diff --git a/crmeb/start.sh b/crmeb/start.sh index 54a0f248..57a6af69 100755 --- a/crmeb/start.sh +++ b/crmeb/start.sh @@ -79,7 +79,7 @@ endSecond=$(date --date="$endTime" +%s); total=$((endSecond-startSecond)) # shellcheck disable=SC2027 -echo "本次启动耗时: "$total"s" +echo "本次运行时间: "$total"s" # shellcheck disable=SC2086 echo "当前时间:"$endTime