diff --git a/LOG_FILE_IS_UNDEFINED b/LOG_FILE_IS_UNDEFINED
new file mode 100644
index 0000000..425bac2
--- /dev/null
+++ b/LOG_FILE_IS_UNDEFINED
@@ -0,0 +1,259 @@
+2023-11-13 20:07:50.675 | [34m INFO 5059[0;39m | [1;33mmain [TID: N/A][0;39m [1;32mc.y.yshop.server.YshopServerApplication [0;39m | Starting YshopServerApplication using Java 1.8.0_371 on macs-MacBook-Pro.local with PID 5059 (/Users/zkthink/IdeaProjects/yixiang/yshop-pro/yshop-server/target/classes started by mac in /Users/zkthink/IdeaProjects/yixiang/yshop-pro)
+2023-11-13 20:07:50.680 | [34m INFO 5059[0;39m | [1;33mmain [TID: N/A][0;39m [1;32mc.y.yshop.server.YshopServerApplication [0;39m | No active profile set, falling back to 1 default profile: "default"
+2023-11-13 20:07:50.946 | [31m WARN 5059[0;39m | [1;33mmain [TID: N/A][0;39m [1;32mConfigServletWebServerApplicationContext[0;39m | Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [co.yixiang.yshop.server.YshopServerApplication]; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'yshop.info.base-package' in value "${yshop.info.base-package}.server"
+2023-11-13 20:07:51.229 | [1;31mERROR 5059[0;39m | [1;33mmain [TID: N/A][0;39m [1;32mo.s.boot.SpringApplication [0;39m | Application run failed
+
+org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [co.yixiang.yshop.server.YshopServerApplication]; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'yshop.info.base-package' in value "${yshop.info.base-package}.server"
+ at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:188)
+ at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:331)
+ at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:247)
+ at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:311)
+ at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:112)
+ at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:748)
+ at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:564)
+ at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147)
+ at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:731)
+ at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408)
+ at org.springframework.boot.SpringApplication.run(SpringApplication.java:307)
+ at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303)
+ at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292)
+ at co.yixiang.yshop.server.YshopServerApplication.main(YshopServerApplication.java:16)
+Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'yshop.info.base-package' in value "${yshop.info.base-package}.server"
+ at org.springframework.util.PropertyPlaceholderHelper.parseStringValue(PropertyPlaceholderHelper.java:180)
+ at org.springframework.util.PropertyPlaceholderHelper.replacePlaceholders(PropertyPlaceholderHelper.java:126)
+ at org.springframework.core.env.AbstractPropertyResolver.doResolvePlaceholders(AbstractPropertyResolver.java:239)
+ at org.springframework.core.env.AbstractPropertyResolver.resolveRequiredPlaceholders(AbstractPropertyResolver.java:210)
+ at org.springframework.core.env.AbstractEnvironment.resolveRequiredPlaceholders(AbstractEnvironment.java:630)
+ at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.resolveBasePackage(ClassPathScanningCandidateComponentProvider.java:478)
+ at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.scanCandidateComponents(ClassPathScanningCandidateComponentProvider.java:420)
+ at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:316)
+ at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.doScan(ClassPathBeanDefinitionScanner.java:276)
+ at org.springframework.context.annotation.ComponentScanAnnotationParser.parse(ComponentScanAnnotationParser.java:128)
+ at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:295)
+ at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:249)
+ at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:206)
+ at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:174)
+ ... 13 common frames omitted
+
+2023-11-13 20:12:43.437 | [34m INFO 5144[0;39m | [1;33mmain [TID: N/A][0;39m [1;32mc.y.yshop.server.YshopServerApplication [0;39m | Starting YshopServerApplication using Java 1.8.0_371 on macs-MacBook-Pro.local with PID 5144 (/Users/zkthink/IdeaProjects/yixiang/yshop-pro/yshop-server/target/classes started by mac in /Users/zkthink/IdeaProjects/yixiang/yshop-pro)
+2023-11-13 20:12:43.442 | [34m INFO 5144[0;39m | [1;33mmain [TID: N/A][0;39m [1;32mc.y.yshop.server.YshopServerApplication [0;39m | No active profile set, falling back to 1 default profile: "default"
+2023-11-13 20:12:43.715 | [31m WARN 5144[0;39m | [1;33mmain [TID: N/A][0;39m [1;32mConfigServletWebServerApplicationContext[0;39m | Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [co.yixiang.yshop.server.YshopServerApplication]; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'yshop.info.base-package' in value "${yshop.info.base-package}.server"
+2023-11-13 20:12:44.226 | [1;31mERROR 5144[0;39m | [1;33mmain [TID: N/A][0;39m [1;32mo.s.boot.SpringApplication [0;39m | Application run failed
+
+org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [co.yixiang.yshop.server.YshopServerApplication]; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'yshop.info.base-package' in value "${yshop.info.base-package}.server"
+ at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:188)
+ at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:331)
+ at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:247)
+ at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:311)
+ at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:112)
+ at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:748)
+ at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:564)
+ at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147)
+ at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:731)
+ at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408)
+ at org.springframework.boot.SpringApplication.run(SpringApplication.java:307)
+ at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303)
+ at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292)
+ at co.yixiang.yshop.server.YshopServerApplication.main(YshopServerApplication.java:16)
+Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'yshop.info.base-package' in value "${yshop.info.base-package}.server"
+ at org.springframework.util.PropertyPlaceholderHelper.parseStringValue(PropertyPlaceholderHelper.java:180)
+ at org.springframework.util.PropertyPlaceholderHelper.replacePlaceholders(PropertyPlaceholderHelper.java:126)
+ at org.springframework.core.env.AbstractPropertyResolver.doResolvePlaceholders(AbstractPropertyResolver.java:239)
+ at org.springframework.core.env.AbstractPropertyResolver.resolveRequiredPlaceholders(AbstractPropertyResolver.java:210)
+ at org.springframework.core.env.AbstractEnvironment.resolveRequiredPlaceholders(AbstractEnvironment.java:630)
+ at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.resolveBasePackage(ClassPathScanningCandidateComponentProvider.java:478)
+ at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.scanCandidateComponents(ClassPathScanningCandidateComponentProvider.java:420)
+ at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:316)
+ at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.doScan(ClassPathBeanDefinitionScanner.java:276)
+ at org.springframework.context.annotation.ComponentScanAnnotationParser.parse(ComponentScanAnnotationParser.java:128)
+ at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:295)
+ at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:249)
+ at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:206)
+ at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:174)
+ ... 13 common frames omitted
+
+2023-11-13 20:14:25.579 | [34m INFO 5167[0;39m | [1;33mmain [TID: N/A][0;39m [1;32mc.y.yshop.server.YshopServerApplication [0;39m | Starting YshopServerApplication using Java 1.8.0_371 on macs-MacBook-Pro.local with PID 5167 (/Users/zkthink/IdeaProjects/yixiang/yshop-pro/yshop-server/target/classes started by mac in /Users/zkthink/IdeaProjects/yixiang/yshop-pro)
+2023-11-13 20:14:25.584 | [34m INFO 5167[0;39m | [1;33mmain [TID: N/A][0;39m [1;32mc.y.yshop.server.YshopServerApplication [0;39m | No active profile set, falling back to 1 default profile: "default"
+2023-11-13 20:14:25.938 | [31m WARN 5167[0;39m | [1;33mmain [TID: N/A][0;39m [1;32mConfigServletWebServerApplicationContext[0;39m | Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [co.yixiang.yshop.server.YshopServerApplication]; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'yshop.info.base-package' in value "${yshop.info.base-package}.server"
+2023-11-13 20:14:26.281 | [1;31mERROR 5167[0;39m | [1;33mmain [TID: N/A][0;39m [1;32mo.s.boot.SpringApplication [0;39m | Application run failed
+
+org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [co.yixiang.yshop.server.YshopServerApplication]; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'yshop.info.base-package' in value "${yshop.info.base-package}.server"
+ at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:188)
+ at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:331)
+ at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:247)
+ at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:311)
+ at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:112)
+ at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:748)
+ at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:564)
+ at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147)
+ at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:731)
+ at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408)
+ at org.springframework.boot.SpringApplication.run(SpringApplication.java:307)
+ at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303)
+ at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292)
+ at co.yixiang.yshop.server.YshopServerApplication.main(YshopServerApplication.java:16)
+Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'yshop.info.base-package' in value "${yshop.info.base-package}.server"
+ at org.springframework.util.PropertyPlaceholderHelper.parseStringValue(PropertyPlaceholderHelper.java:180)
+ at org.springframework.util.PropertyPlaceholderHelper.replacePlaceholders(PropertyPlaceholderHelper.java:126)
+ at org.springframework.core.env.AbstractPropertyResolver.doResolvePlaceholders(AbstractPropertyResolver.java:239)
+ at org.springframework.core.env.AbstractPropertyResolver.resolveRequiredPlaceholders(AbstractPropertyResolver.java:210)
+ at org.springframework.core.env.AbstractEnvironment.resolveRequiredPlaceholders(AbstractEnvironment.java:630)
+ at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.resolveBasePackage(ClassPathScanningCandidateComponentProvider.java:478)
+ at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.scanCandidateComponents(ClassPathScanningCandidateComponentProvider.java:420)
+ at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:316)
+ at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.doScan(ClassPathBeanDefinitionScanner.java:276)
+ at org.springframework.context.annotation.ComponentScanAnnotationParser.parse(ComponentScanAnnotationParser.java:128)
+ at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:295)
+ at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:249)
+ at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:206)
+ at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:174)
+ ... 13 common frames omitted
+
+2023-11-13 20:24:42.667 | [34m INFO 5274[0;39m | [1;33mmain [TID: N/A][0;39m [1;32mc.y.yshop.server.YshopServerApplication [0;39m | Starting YshopServerApplication using Java 1.8.0_371 on macs-MacBook-Pro.local with PID 5274 (/Users/zkthink/IdeaProjects/yixiang/yshop-pro/yshop-server/target/classes started by mac in /Users/zkthink/IdeaProjects/yixiang/yshop-pro)
+2023-11-13 20:24:42.673 | [34m INFO 5274[0;39m | [1;33mmain [TID: N/A][0;39m [1;32mc.y.yshop.server.YshopServerApplication [0;39m | No active profile set, falling back to 1 default profile: "default"
+2023-11-13 20:24:42.987 | [31m WARN 5274[0;39m | [1;33mmain [TID: N/A][0;39m [1;32mConfigServletWebServerApplicationContext[0;39m | Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [co.yixiang.yshop.server.YshopServerApplication]; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'yshop.info.base-package' in value "${yshop.info.base-package}.server"
+2023-11-13 20:24:43.341 | [1;31mERROR 5274[0;39m | [1;33mmain [TID: N/A][0;39m [1;32mo.s.boot.SpringApplication [0;39m | Application run failed
+
+org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [co.yixiang.yshop.server.YshopServerApplication]; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'yshop.info.base-package' in value "${yshop.info.base-package}.server"
+ at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:188)
+ at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:331)
+ at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:247)
+ at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:311)
+ at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:112)
+ at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:748)
+ at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:564)
+ at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147)
+ at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:731)
+ at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408)
+ at org.springframework.boot.SpringApplication.run(SpringApplication.java:307)
+ at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303)
+ at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292)
+ at co.yixiang.yshop.server.YshopServerApplication.main(YshopServerApplication.java:16)
+Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'yshop.info.base-package' in value "${yshop.info.base-package}.server"
+ at org.springframework.util.PropertyPlaceholderHelper.parseStringValue(PropertyPlaceholderHelper.java:180)
+ at org.springframework.util.PropertyPlaceholderHelper.replacePlaceholders(PropertyPlaceholderHelper.java:126)
+ at org.springframework.core.env.AbstractPropertyResolver.doResolvePlaceholders(AbstractPropertyResolver.java:239)
+ at org.springframework.core.env.AbstractPropertyResolver.resolveRequiredPlaceholders(AbstractPropertyResolver.java:210)
+ at org.springframework.core.env.AbstractEnvironment.resolveRequiredPlaceholders(AbstractEnvironment.java:630)
+ at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.resolveBasePackage(ClassPathScanningCandidateComponentProvider.java:478)
+ at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.scanCandidateComponents(ClassPathScanningCandidateComponentProvider.java:420)
+ at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:316)
+ at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.doScan(ClassPathBeanDefinitionScanner.java:276)
+ at org.springframework.context.annotation.ComponentScanAnnotationParser.parse(ComponentScanAnnotationParser.java:128)
+ at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:295)
+ at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:249)
+ at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:206)
+ at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:174)
+ ... 13 common frames omitted
+
+2023-11-13 20:25:44.327 | [34m INFO 5317[0;39m | [1;33mmain [TID: N/A][0;39m [1;32mc.y.yshop.server.YshopServerApplication [0;39m | Starting YshopServerApplication using Java 1.8.0_371 on macs-MacBook-Pro.local with PID 5317 (/Users/zkthink/IdeaProjects/yixiang/yshop-pro/yshop-server/target/classes started by mac in /Users/zkthink/IdeaProjects/yixiang/yshop-pro)
+2023-11-13 20:25:44.334 | [34m INFO 5317[0;39m | [1;33mmain [TID: N/A][0;39m [1;32mc.y.yshop.server.YshopServerApplication [0;39m | No active profile set, falling back to 1 default profile: "default"
+2023-11-13 20:25:44.645 | [31m WARN 5317[0;39m | [1;33mmain [TID: N/A][0;39m [1;32mConfigServletWebServerApplicationContext[0;39m | Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [co.yixiang.yshop.server.YshopServerApplication]; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'yshop.info.base-package' in value "${yshop.info.base-package}.server"
+2023-11-13 20:25:45.029 | [1;31mERROR 5317[0;39m | [1;33mmain [TID: N/A][0;39m [1;32mo.s.boot.SpringApplication [0;39m | Application run failed
+
+org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [co.yixiang.yshop.server.YshopServerApplication]; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'yshop.info.base-package' in value "${yshop.info.base-package}.server"
+ at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:188)
+ at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:331)
+ at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:247)
+ at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:311)
+ at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:112)
+ at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:748)
+ at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:564)
+ at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147)
+ at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:731)
+ at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408)
+ at org.springframework.boot.SpringApplication.run(SpringApplication.java:307)
+ at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303)
+ at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292)
+ at co.yixiang.yshop.server.YshopServerApplication.main(YshopServerApplication.java:16)
+Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'yshop.info.base-package' in value "${yshop.info.base-package}.server"
+ at org.springframework.util.PropertyPlaceholderHelper.parseStringValue(PropertyPlaceholderHelper.java:180)
+ at org.springframework.util.PropertyPlaceholderHelper.replacePlaceholders(PropertyPlaceholderHelper.java:126)
+ at org.springframework.core.env.AbstractPropertyResolver.doResolvePlaceholders(AbstractPropertyResolver.java:239)
+ at org.springframework.core.env.AbstractPropertyResolver.resolveRequiredPlaceholders(AbstractPropertyResolver.java:210)
+ at org.springframework.core.env.AbstractEnvironment.resolveRequiredPlaceholders(AbstractEnvironment.java:630)
+ at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.resolveBasePackage(ClassPathScanningCandidateComponentProvider.java:478)
+ at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.scanCandidateComponents(ClassPathScanningCandidateComponentProvider.java:420)
+ at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:316)
+ at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.doScan(ClassPathBeanDefinitionScanner.java:276)
+ at org.springframework.context.annotation.ComponentScanAnnotationParser.parse(ComponentScanAnnotationParser.java:128)
+ at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:295)
+ at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:249)
+ at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:206)
+ at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:174)
+ ... 13 common frames omitted
+
+2023-11-13 20:26:38.089 | [34m INFO 5322[0;39m | [1;33mmain [TID: N/A][0;39m [1;32mc.y.yshop.server.YshopServerApplication [0;39m | Starting YshopServerApplication using Java 1.8.0_371 on macs-MacBook-Pro.local with PID 5322 (/Users/zkthink/IdeaProjects/yixiang/yshop-pro/yshop-server/target/classes started by mac in /Users/zkthink/IdeaProjects/yixiang/yshop-pro)
+2023-11-13 20:26:38.093 | [34m INFO 5322[0;39m | [1;33mmain [TID: N/A][0;39m [1;32mc.y.yshop.server.YshopServerApplication [0;39m | No active profile set, falling back to 1 default profile: "default"
+2023-11-13 20:26:38.352 | [31m WARN 5322[0;39m | [1;33mmain [TID: N/A][0;39m [1;32mConfigServletWebServerApplicationContext[0;39m | Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [co.yixiang.yshop.server.YshopServerApplication]; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'yshop.info.base-package' in value "${yshop.info.base-package}.server"
+2023-11-13 20:26:38.689 | [1;31mERROR 5322[0;39m | [1;33mmain [TID: N/A][0;39m [1;32mo.s.boot.SpringApplication [0;39m | Application run failed
+
+org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [co.yixiang.yshop.server.YshopServerApplication]; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'yshop.info.base-package' in value "${yshop.info.base-package}.server"
+ at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:188)
+ at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:331)
+ at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:247)
+ at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:311)
+ at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:112)
+ at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:748)
+ at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:564)
+ at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147)
+ at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:731)
+ at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408)
+ at org.springframework.boot.SpringApplication.run(SpringApplication.java:307)
+ at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303)
+ at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292)
+ at co.yixiang.yshop.server.YshopServerApplication.main(YshopServerApplication.java:16)
+Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'yshop.info.base-package' in value "${yshop.info.base-package}.server"
+ at org.springframework.util.PropertyPlaceholderHelper.parseStringValue(PropertyPlaceholderHelper.java:180)
+ at org.springframework.util.PropertyPlaceholderHelper.replacePlaceholders(PropertyPlaceholderHelper.java:126)
+ at org.springframework.core.env.AbstractPropertyResolver.doResolvePlaceholders(AbstractPropertyResolver.java:239)
+ at org.springframework.core.env.AbstractPropertyResolver.resolveRequiredPlaceholders(AbstractPropertyResolver.java:210)
+ at org.springframework.core.env.AbstractEnvironment.resolveRequiredPlaceholders(AbstractEnvironment.java:630)
+ at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.resolveBasePackage(ClassPathScanningCandidateComponentProvider.java:478)
+ at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.scanCandidateComponents(ClassPathScanningCandidateComponentProvider.java:420)
+ at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:316)
+ at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.doScan(ClassPathBeanDefinitionScanner.java:276)
+ at org.springframework.context.annotation.ComponentScanAnnotationParser.parse(ComponentScanAnnotationParser.java:128)
+ at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:295)
+ at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:249)
+ at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:206)
+ at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:174)
+ ... 13 common frames omitted
+
+2023-11-13 20:36:43.401 | [34m INFO 5454[0;39m | [1;33mmain [TID: N/A][0;39m [1;32mc.y.yshop.server.YshopServerApplication [0;39m | Starting YshopServerApplication using Java 1.8.0_371 on macs-MacBook-Pro.local with PID 5454 (/Users/zkthink/IdeaProjects/yixiang/yshop-pro/yshop-server/target/classes started by mac in /Users/zkthink/IdeaProjects/yixiang/yshop-pro)
+2023-11-13 20:36:43.405 | [34m INFO 5454[0;39m | [1;33mmain [TID: N/A][0;39m [1;32mc.y.yshop.server.YshopServerApplication [0;39m | No active profile set, falling back to 1 default profile: "default"
+2023-11-13 20:36:43.649 | [31m WARN 5454[0;39m | [1;33mmain [TID: N/A][0;39m [1;32mConfigServletWebServerApplicationContext[0;39m | Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [co.yixiang.yshop.server.YshopServerApplication]; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'yshop.info.base-package' in value "${yshop.info.base-package}.server"
+2023-11-13 20:36:44.039 | [1;31mERROR 5454[0;39m | [1;33mmain [TID: N/A][0;39m [1;32mo.s.boot.SpringApplication [0;39m | Application run failed
+
+org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [co.yixiang.yshop.server.YshopServerApplication]; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'yshop.info.base-package' in value "${yshop.info.base-package}.server"
+ at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:188)
+ at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:331)
+ at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:247)
+ at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:311)
+ at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:112)
+ at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:748)
+ at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:564)
+ at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147)
+ at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:731)
+ at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408)
+ at org.springframework.boot.SpringApplication.run(SpringApplication.java:307)
+ at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303)
+ at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292)
+ at co.yixiang.yshop.server.YshopServerApplication.main(YshopServerApplication.java:16)
+Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'yshop.info.base-package' in value "${yshop.info.base-package}.server"
+ at org.springframework.util.PropertyPlaceholderHelper.parseStringValue(PropertyPlaceholderHelper.java:180)
+ at org.springframework.util.PropertyPlaceholderHelper.replacePlaceholders(PropertyPlaceholderHelper.java:126)
+ at org.springframework.core.env.AbstractPropertyResolver.doResolvePlaceholders(AbstractPropertyResolver.java:239)
+ at org.springframework.core.env.AbstractPropertyResolver.resolveRequiredPlaceholders(AbstractPropertyResolver.java:210)
+ at org.springframework.core.env.AbstractEnvironment.resolveRequiredPlaceholders(AbstractEnvironment.java:630)
+ at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.resolveBasePackage(ClassPathScanningCandidateComponentProvider.java:478)
+ at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.scanCandidateComponents(ClassPathScanningCandidateComponentProvider.java:420)
+ at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:316)
+ at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.doScan(ClassPathBeanDefinitionScanner.java:276)
+ at org.springframework.context.annotation.ComponentScanAnnotationParser.parse(ComponentScanAnnotationParser.java:128)
+ at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:295)
+ at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:249)
+ at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:206)
+ at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:174)
+ ... 13 common frames omitted
+
diff --git a/README b/README
new file mode 100644
index 0000000..e69de29
diff --git a/sql/yshop-pro.sql b/sql/yshop-pro.sql
index bc64160..a198458 100644
--- a/sql/yshop-pro.sql
+++ b/sql/yshop-pro.sql
@@ -780,7 +780,7 @@ INSERT INTO `infra_codegen_column` VALUES (2154, 160, 'tenant_id', 'BIGINT', '
INSERT INTO `infra_codegen_column` VALUES (2155, 161, 'id', 'BIGINT', 'id', b'0', b'1', '1', 1, 'Long', 'id', '', '24658', b'0', b'1', b'0', '=', b'1', 'input', '1', '2023-06-09 19:07:42', '1', '2023-06-13 09:39:36', b'0');
INSERT INTO `infra_codegen_column` VALUES (2156, 161, 'uid', 'BIGINT', '用户ID', b'0', b'0', '0', 2, 'Long', 'uid', '', '17942', b'1', b'1', b'1', '=', b'1', 'input', '1', '2023-06-09 19:07:42', '1', '2023-06-13 09:39:36', b'0');
INSERT INTO `infra_codegen_column` VALUES (2157, 161, 'product_id', 'BIGINT', '商品ID', b'0', b'0', '0', 3, 'Long', 'productId', '', '8816', b'1', b'1', b'1', '=', b'1', 'input', '1', '2023-06-09 19:07:42', '1', '2023-06-13 09:39:36', b'0');
-INSERT INTO `infra_codegen_column` VALUES (2158, 161, 'type', 'VARCHAR', '类型(收藏(collect)、点赞(like))', b'1', b'0', '0', 4, 'String', 'type', '', '2', b'1', b'1', b'1', '=', b'1', 'select', '1', '2023-06-09 19:07:42', '1', '2023-06-13 09:39:36', b'0');
+INSERT INTO `infra_codegen_column` VALUES (2158, 161, 'type', 'VARCHAR', '类型(收藏(collect)、足迹(foot))', b'1', b'0', '0', 4, 'String', 'type', '', '2', b'1', b'1', b'1', '=', b'1', 'select', '1', '2023-06-09 19:07:42', '1', '2023-06-13 09:39:36', b'0');
INSERT INTO `infra_codegen_column` VALUES (2159, 161, 'category', 'VARCHAR', '某种类型的商品(普通商品、秒杀商品)', b'1', b'0', '0', 5, 'String', 'category', '', NULL, b'1', b'1', b'1', '=', b'1', 'input', '1', '2023-06-09 19:07:42', '1', '2023-06-13 09:39:36', b'0');
INSERT INTO `infra_codegen_column` VALUES (2160, 161, 'creator', 'VARCHAR', '创建者', b'1', b'0', '0', 6, 'String', 'creator', '', NULL, b'0', b'0', b'0', '=', b'0', 'input', '1', '2023-06-09 19:07:42', '1', '2023-06-13 09:39:36', b'0');
INSERT INTO `infra_codegen_column` VALUES (2161, 161, 'create_time', 'TIMESTAMP', '添加时间', b'0', b'0', '0', 7, 'LocalDateTime', 'createTime', '', NULL, b'0', b'0', b'1', 'BETWEEN', b'1', 'datetime', '1', '2023-06-09 19:07:42', '1', '2023-06-13 09:39:36', b'0');
@@ -6826,6 +6826,7 @@ CREATE TABLE `yshop_store_order` (
`create_time` datetime NOT NULL COMMENT '添加时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`updater` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '更新者',
+ `pay_info` varchar(1024) DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `order_id_2` (`order_id`,`uid`) USING BTREE,
UNIQUE KEY `unique` (`unique`) USING BTREE,
@@ -6843,41 +6844,7 @@ CREATE TABLE `yshop_store_order` (
-- Records of yshop_store_order
-- ----------------------------
BEGIN;
-INSERT INTO `yshop_store_order` VALUES (4, '1673967434274439168', NULL, 2, '处龙难较八', '18118747768', '北京 北京市 东城区 777号', '151', 0.00, 1, 94.00, 10.00, 104.00, 10.00, 0.00, 0, 0.00, 0, '2023-07-15 18:59:50', 'yue', 3, 0, NULL, '我就是想退款', '2023-06-28 17:26:09', '七天无理由', NULL, 0.00, '', NULL, 'normal', 'send', NULL, 0.00, 0.00, 0.00, 0.00, 'commodo reprehenderit', '43207f1820b74d29b2404962ec1cfc12', NULL, 0, 0, 0, 0.00, 0, 0, '', 0, 1, 0, 0, b'0', NULL, '2', '2023-06-28 16:11:52', '2023-07-15 18:59:50', '2');
-INSERT INTO `yshop_store_order` VALUES (5, '1674264266607165440', NULL, 2, '处龙难较八', '18118747768', '北京 北京市 东城区 777号', '150', 0.00, 5, 495.00, 0.00, 495.00, 0.00, 0.00, 0, 0.00, 0, '2023-06-29 11:56:54', 'yue', 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, '', NULL, 'normal', 'send', NULL, 0.00, 0.00, 0.00, 0.00, 'in officia', 'ba78b4df312548b4834cb889c7eb822a', NULL, 0, 0, 0, 0.00, 0, 0, '', 0, 1, 0, 0, b'0', NULL, '2', '2023-06-29 11:51:22', '2023-06-29 11:56:54', '2');
-INSERT INTO `yshop_store_order` VALUES (6, '1675076031473516544', NULL, 2, '处龙难较八', '18118747768', '北京 北京市 东城区 777号', '152', 0.00, 1, 94.00, 10.00, 104.00, 10.00, 0.00, 0, 0.00, 1, '2023-07-01 23:00:05', 'yue', -1, 1, NULL, 'Lorem dolor', '2023-09-10 18:43:15', 'ipsum fugiat et enim velit', NULL, 0.00, 'YTO', '圆通速递', 'normal', 'send', 'YT7204685961109', 0.00, 0.00, 0.00, 0.00, 'ullamco laboris', 'bec3e825553a4c80a2b3bd83d7e6e957', NULL, 0, 0, 0, 0.00, 0, 0, '', 0, 1, 0, 0, b'0', NULL, '2', '2023-07-01 17:37:02', '2023-07-03 10:50:17', '1');
-INSERT INTO `yshop_store_order` VALUES (7, '1675346979909009408', NULL, 2, '处龙难较八', '18118747768', '北京 北京市 东城区 777号', '153', 0.00, 1, 94.00, 10.00, 104.00, 10.00, 0.00, 0, 0.00, 1, '2023-07-03 10:49:04', '', 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, '', NULL, 'normal', 'send', NULL, 1.00, 0.00, 0.00, 0.00, 'ullamco laboris', 'cc96c32433a4480e9679b3723770d0a2', NULL, 0, 0, 0, 0.00, 0, 0, '', 0, 1, 0, 0, b'0', NULL, '2', '2023-07-02 11:33:41', '2023-07-03 10:47:33', '1');
-INSERT INTO `yshop_store_order` VALUES (8, '1683752888607703040', NULL, 2, '处龙难较八', '18118747768', '北京 北京市 东城区 777号', '154', 0.00, 1, 94.00, 10.00, 104.00, 10.00, 0.00, 0, 0.00, 1, '2023-07-25 16:33:39', 'yue', 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, '', NULL, 'normal', 'send', NULL, 0.00, 0.00, 0.00, 0.00, 'Excepteur ullamco commodo dolor mollit', '6cd509c7b192467aafc1eccf5ffcac72', NULL, 0, 0, 0, 0.00, 0, 0, '', 0, 1, 0, 0, b'0', NULL, '2', '2023-07-25 16:15:46', '2023-07-25 16:33:39', '2');
-INSERT INTO `yshop_store_order` VALUES (9, '1684147918426079232', NULL, 2, '处龙难较八', '18118747768', '北京 北京市 东城区 777号', '155', 0.00, 1, 94.00, 10.00, 104.00, 10.00, 0.00, 0, 0.00, 0, NULL, '', 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, '', NULL, 'normal', 'send', NULL, 0.00, 0.00, 0.00, 0.00, 'Excepteur ullamco commodo dolor mollit', '1849d3cd27034cb08f6f58dfd44964c2', NULL, 0, 0, 0, 0.00, 0, 0, '', 0, 1, 0, 0, b'0', NULL, '2', '2023-07-26 18:25:28', '2023-07-26 18:25:28', '2');
-INSERT INTO `yshop_store_order` VALUES (10, '1684150535873101824', NULL, 2, '处龙难较八', '18118747768', '北京 北京市 东城区 777号', '156', 0.00, 1, 94.00, 10.00, 104.00, 10.00, 0.00, 0, 0.00, 0, NULL, '', 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, '', NULL, 'normal', 'send', NULL, 0.00, 0.00, 0.00, 0.00, 'Excepteur ullamco commodo dolor mollit', '68b77cda41c44dceb9fde938a47dea5d', NULL, 0, 0, 0, 0.00, 0, 0, '', 0, 1, 0, 0, b'0', NULL, '2', '2023-07-26 18:35:52', '2023-07-26 18:35:52', '2');
-INSERT INTO `yshop_store_order` VALUES (11, '1684151659514560512', NULL, 2, '处龙难较八', '18118747768', '北京 北京市 东城区 777号', '157', 0.00, 1, 94.00, 10.00, 104.00, 10.00, 0.00, 0, 0.00, 0, NULL, '', 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, '', NULL, 'normal', 'send', NULL, 0.00, 0.00, 0.00, 0.00, 'Excepteur ullamco commodo dolor mollit', '4a905f1c1f9a4bd0bd83b9eb9ee0983c', NULL, 0, 0, 0, 0.00, 0, 0, '', 0, 1, 0, 0, b'0', NULL, '2', '2023-07-26 18:40:20', '2023-07-26 18:40:20', '2');
-INSERT INTO `yshop_store_order` VALUES (12, '1684152535528505344', NULL, 2, '处龙难较八', '18118747768', '北京 北京市 东城区 777号', '158', 0.00, 1, 94.00, 10.00, 104.00, 10.00, 0.00, 0, 0.00, 0, NULL, '', 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, '', NULL, 'normal', 'send', NULL, 0.00, 0.00, 0.00, 0.00, 'Excepteur ullamco commodo dolor mollit', '3822aec4653e4af7945b15180f591f55', NULL, 0, 0, 0, 0.00, 0, 0, '', 0, 1, 0, 0, b'0', NULL, '2', '2023-07-26 18:43:49', '2023-07-26 18:43:49', '2');
-INSERT INTO `yshop_store_order` VALUES (13, '1684156500248887296', NULL, 2, '处龙难较八', '18118747768', '北京 北京市 东城区 777号', '159', 0.00, 1, 94.00, 10.00, 104.00, 10.00, 0.00, 0, 0.00, 0, NULL, '', 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, '', NULL, 'normal', 'send', NULL, 0.00, 0.00, 0.00, 0.00, 'Excepteur ullamco commodo dolor mollit', 'd136481405104cbebb8895c29951515c', NULL, 0, 0, 0, 0.00, 0, 0, '', 0, 1, 0, 0, b'0', NULL, '2', '2023-07-26 18:59:34', '2023-07-26 18:59:34', '2');
-INSERT INTO `yshop_store_order` VALUES (14, '1684159287636525056', NULL, 2, '处龙难较八', '18118747768', '北京 北京市 东城区 777号', '160', 0.00, 1, 94.00, 10.00, 104.00, 10.00, 0.00, 0, 0.00, 0, NULL, '', 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, '', NULL, 'normal', 'send', NULL, 0.00, 0.00, 0.00, 0.00, 'Excepteur ullamco commodo dolor mollit', '2ab5a0b3dd714c1da0135956a20a7bfb', NULL, 0, 0, 0, 0.00, 0, 0, '', 0, 1, 0, 0, b'0', NULL, '2', '2023-07-26 19:10:39', '2023-07-26 19:10:39', '2');
-INSERT INTO `yshop_store_order` VALUES (15, '1684395247158689792', NULL, 2, '处龙难较八', '18118747768', '北京 北京市 东城区 777号', '161', 0.00, 1, 94.00, 10.00, 104.00, 10.00, 0.00, 0, 0.00, 0, NULL, '', 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, '', NULL, 'normal', 'send', NULL, 0.00, 0.00, 0.00, 0.00, 'Excepteur ullamco commodo dolor mollit', '289b4d3c8fd0469ba3de03a2e5221478', NULL, 0, 0, 0, 0.00, 0, 0, '', 0, 1, 0, 0, b'0', NULL, '2', '2023-07-27 10:48:16', '2023-07-27 10:48:16', '2');
-INSERT INTO `yshop_store_order` VALUES (16, '1684409607071465472', NULL, 2, '处龙难较八', '18118747768', '北京 北京市 东城区 777号', '162', 0.00, 1, 94.00, 10.00, 104.00, 10.00, 0.00, 0, 0.00, 0, NULL, '', 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, '', NULL, 'normal', 'send', NULL, 0.00, 0.00, 0.00, 0.00, 'Excepteur ullamco commodo dolor mollit', '9ef7bae392c047cab42a6439058c2eca', NULL, 0, 0, 0, 0.00, 0, 0, '', 0, 1, 0, 0, b'0', NULL, '2', '2023-07-27 11:45:20', '2023-07-27 11:45:20', '2');
-INSERT INTO `yshop_store_order` VALUES (17, '1684410832919724032', NULL, 2, '处龙难较八', '18118747768', '北京 北京市 东城区 777号', '163', 0.00, 1, 94.00, 10.00, 104.00, 10.00, 0.00, 0, 0.00, 0, NULL, '', 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, '', NULL, 'normal', 'send', NULL, 0.00, 0.00, 0.00, 0.00, 'Excepteur ullamco commodo dolor mollit', 'acd8f36301114038a24c8b6765127a4c', NULL, 0, 0, 0, 0.00, 0, 0, '', 0, 1, 0, 0, b'0', NULL, '2', '2023-07-27 11:50:12', '2023-07-27 11:50:12', '2');
-INSERT INTO `yshop_store_order` VALUES (18, '1690637305565413376', NULL, 2, '处龙难较八', '18118747768', '北京 北京市 东城区 777号', '166', 0.00, 1, 94.00, 10.00, 104.00, 10.00, 0.00, 0, 0.00, 1, '2023-08-13 16:14:31', 'yue', 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, '', NULL, 'normal', 'send', NULL, 0.00, 0.00, 0.00, 0.00, 'et incididunt ut', 'b9b8e3b52276481f9e75aa14c1bf04c5', NULL, 0, 0, 0, 0.00, 0, 0, '', 0, 1, 0, 0, b'0', NULL, '2', '2023-08-13 16:11:59', '2023-08-13 16:14:31', '2');
-INSERT INTO `yshop_store_order` VALUES (19, '1696190124418662400', NULL, 4, '1', '15601064107', '北京市 北京市 详细地址', '169,164', 0.00, 9, 386.00, 10.00, 396.00, 10.00, 0.00, 0, 0.00, 0, NULL, '', 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, '', NULL, 'normal', 'send', NULL, 50.00, 0.00, 0.00, 0.00, '', '1ba28a72ba234aa09e178461f8b90a63', NULL, 0, 0, 0, 0.00, 0, 0, '', 0, 1, 0, 0, b'0', NULL, '4', '2023-08-28 23:56:54', '2023-08-28 23:56:54', '4');
-INSERT INTO `yshop_store_order` VALUES (20, '1696192138053681152', NULL, 4, '1', '15601064107', '北京市 北京市 详细地址', '170', 0.00, 1, 2.00, 0.00, 2.00, 0.00, 0.00, 0, 0.00, 0, NULL, '', 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, '', NULL, 'normal', 'send', NULL, 10.00, 0.00, 0.00, 0.00, '', '64b2ccb97fbf4e769163ef5bd5d70f35', NULL, 0, 0, 0, 0.00, 0, 0, '', 0, 1, 0, 0, b'0', NULL, '4', '2023-08-29 00:04:54', '2023-08-29 00:04:54', '4');
-INSERT INTO `yshop_store_order` VALUES (21, '1700401122218344448', NULL, 4, '1', '15601064107', '北京市 北京市 详细地址', '171', 0.00, 4, 8.00, 0.00, 8.00, 0.00, 0.00, 0, 0.00, 0, NULL, '', 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, '', NULL, 'normal', 'send', NULL, 40.00, 0.00, 0.00, 0.00, '', '1d5fa63da0a0450fa41c9d704ca2017d', NULL, 0, 0, 0, 0.00, 0, 0, '', 0, 1, 0, 0, b'0', NULL, '4', '2023-09-09 14:49:54', '2023-09-09 14:49:54', '4');
-INSERT INTO `yshop_store_order` VALUES (22, '1700405721721470976', NULL, 4, '1', '15601064107', '北京市 北京市 详细地址', '172', 0.00, 1, 2.00, 0.00, 2.00, 0.00, 0.00, 0, 0.00, 0, NULL, '', 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, '', NULL, 'normal', 'send', NULL, 10.00, 0.00, 0.00, 0.00, '', 'a38169c3c97e4441a77b383ff0dfcec2', NULL, 0, 0, 0, 0.00, 0, 0, '', 0, 1, 0, 0, b'0', NULL, '4', '2023-09-09 15:08:11', '2023-09-09 15:08:11', '4');
-INSERT INTO `yshop_store_order` VALUES (23, '1700408690378539008', NULL, 4, '1', '15601064107', '北京市 北京市 详细地址', '173', 0.00, 1, 2.00, 0.00, 2.00, 0.00, 0.00, 0, 0.00, 0, NULL, '', 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, '', NULL, 'normal', 'send', NULL, 10.00, 0.00, 0.00, 0.00, '', '17d0fb18cf9848528b40943ec4e28534', NULL, 0, 0, 0, 0.00, 0, 0, '', 0, 1, 0, 0, b'0', NULL, '4', '2023-09-09 15:19:59', '2023-09-09 15:19:59', '4');
-INSERT INTO `yshop_store_order` VALUES (24, '1700447478219800576', NULL, 4, '1', '156****4107', '北京市 北京市 详细地址', '174', 0.00, 1, 2.00, 0.00, 2.00, 0.00, 0.00, 0, 0.00, 1, '2023-09-09 17:54:20', '', 3, 0, NULL, NULL, NULL, NULL, NULL, 0.00, 'ZTO', '中通快递', 'normal', 'send', '78718067343706', 10.00, 0.00, 0.00, 0.00, '', '1f9b7f56e482492e9f0143c08ee93146', NULL, 0, 0, 0, 0.00, 0, 0, '', 0, 1, 0, 0, b'0', NULL, '4', '2023-09-09 17:54:06', '2023-09-09 21:45:55', '4');
-INSERT INTO `yshop_store_order` VALUES (25, '1704134770763497472', NULL, 6, '我的名字', '15601064107', ' 212', '176', 0.00, 1, 2.00, 0.00, 2.00, 0.00, 0.00, 0, 0.00, 0, NULL, '', 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, '', NULL, 'normal', 'send', NULL, 10.00, 0.00, 0.00, 0.00, '', '8b14393cf459471788003ba27549f2f7', NULL, 0, 0, 0, 0.00, 0, 0, '', 0, 1, 0, 0, b'0', NULL, '6', '2023-09-19 22:06:05', '2023-09-19 22:06:05', '6');
-INSERT INTO `yshop_store_order` VALUES (26, '1704145999464759296', NULL, 6, '我的名字', '156****4107', ' 212', '177', 0.00, 1, 2.00, 0.00, 2.00, 0.00, 0.00, 0, 0.00, 1, '2023-09-19 23:11:38', 'weixin', 2, 0, NULL, NULL, NULL, NULL, NULL, 0.00, 'STO', '申通快递', 'normal', 'send', '770010649545205', 10.00, 0.00, 0.00, 0.00, '', '1efee74ba85443d6ba7e0c6399c126be', NULL, 0, 0, 0, 0.00, 0, 0, '', 0, 1, 0, 0, b'0', NULL, '6', '2023-09-19 22:50:42', '2023-09-26 22:29:12', '6');
-INSERT INTO `yshop_store_order` VALUES (27, '1705619660445057024', NULL, 6, '我的名字', '15601064107', ' 212', '178', 0.00, 1, 2.00, 0.00, 2.00, 0.00, 0.00, 0, 0.00, 0, NULL, '', 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, '', NULL, 'normal', 'send', NULL, 10.00, 0.00, 0.00, 0.00, '', '925278f961284a43b3ba5feff204ffba', NULL, 0, 0, 0, 0.00, 0, 0, '', 0, 1, 0, 0, b'1', NULL, '6', '2023-09-24 00:26:31', '2023-09-24 00:26:31', '6');
-INSERT INTO `yshop_store_order` VALUES (28, '1705945250112995328', NULL, 6, '我的名字', '15601064107', ' 212', '180', 0.00, 1, 2.00, 0.00, 2.00, 0.00, 0.00, 0, 0.00, 0, NULL, '', 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, '', NULL, 'normal', 'send', NULL, 10.00, 0.00, 0.00, 0.00, '', 'eeb4333cf5b44f1a8f4d3836fe4158e0', NULL, 0, 0, 0, 0.00, 0, 0, '', 0, 1, 0, 0, b'1', NULL, '6', '2023-09-24 22:00:17', '2023-09-24 22:00:17', '6');
-INSERT INTO `yshop_store_order` VALUES (29, '1705948319500468224', NULL, 6, '我的名字', '15601064107', ' 212', '181', 0.00, 1, 2.00, 0.00, 2.00, 0.00, 0.00, 0, 0.00, 0, NULL, '', 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, '', NULL, 'normal', 'send', NULL, 10.00, 0.00, 0.00, 0.00, '', '6b52689ee2214c4da54454d1b8c175a7', NULL, 0, 0, 0, 0.00, 0, 0, '', 0, 1, 0, 0, b'1', NULL, '6', '2023-09-24 22:12:29', '2023-09-24 22:12:29', '6');
-INSERT INTO `yshop_store_order` VALUES (30, '1705965010984894464', NULL, 6, '我的名字', '15601064107', ' 212', '179', 0.00, 1, 2.00, 0.00, 2.00, 0.00, 0.00, 0, 0.00, 0, NULL, '', 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, '', NULL, 'normal', 'send', NULL, 10.00, 0.00, 0.00, 0.00, '', 'cc89b8174ef24d7198c9ec940c9a765a', NULL, 0, 0, 0, 0.00, 0, 0, '', 0, 1, 0, 0, b'0', NULL, '6', '2023-09-24 23:18:49', '2023-09-24 23:18:49', '6');
-INSERT INTO `yshop_store_order` VALUES (31, '1705967023684583424', NULL, 6, '我的名字', '15601064107', ' 212', '182', 0.00, 1, 2.00, 0.00, 2.00, 0.00, 0.00, 0, 0.00, 0, NULL, '', 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, '', NULL, 'normal', 'send', NULL, 10.00, 0.00, 0.00, 0.00, '', '6347f9a6a7a84155a0851476fcb32cc4', NULL, 0, 0, 0, 0.00, 0, 0, '', 0, 1, 0, 0, b'0', NULL, '6', '2023-09-24 23:26:48', '2023-09-24 23:26:48', '6');
-INSERT INTO `yshop_store_order` VALUES (32, '1705968438192635904', NULL, 6, '我的名字', '15601064107', ' 212', '183', 0.00, 1, 2.00, 0.00, 2.00, 0.00, 0.00, 0, 0.00, 0, NULL, '', 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, '', NULL, 'normal', 'send', NULL, 10.00, 0.00, 0.00, 0.00, '', 'd63952c900eb47c9bccdac80f416ab9a', NULL, 0, 0, 0, 0.00, 0, 0, '', 0, 1, 0, 0, b'0', NULL, '6', '2023-09-24 23:32:26', '2023-09-24 23:32:26', '6');
-INSERT INTO `yshop_store_order` VALUES (33, '1706600681042870272', NULL, 2, '处龙难较八', '18118747768', '北京 北京市 东城区 777号', '185', 0.00, 1, 2.00, 0.00, 2.00, 0.00, 0.00, 0, 0.00, 0, NULL, '', 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, '', NULL, 'normal', 'send', NULL, 10.00, 0.00, 0.00, 0.00, '', 'd7cd865fda6548a8b27f861541fde6cf', NULL, 0, 0, 0, 0.00, 0, 0, '', 0, 1, 0, 0, b'0', NULL, '2', '2023-09-26 17:24:44', '2023-09-26 17:24:44', '2');
-INSERT INTO `yshop_store_order` VALUES (34, '1706602082166898688', NULL, 2, '处龙难较八', '18118747768', '北京 北京市 东城区 777号', '186', 0.00, 1, 0.01, 10.00, 10.01, 10.00, 0.00, 0, 0.00, 0, NULL, '', 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, '', NULL, 'normal', 'send', NULL, 0.00, 0.00, 0.00, 0.00, '', '99b084559ad64a7fa79f91d74a0cdd4d', NULL, 0, 0, 0, 0.00, 0, 0, '', 0, 1, 0, 0, b'0', NULL, '2', '2023-09-26 17:30:18', '2023-09-26 17:30:18', '2');
-INSERT INTO `yshop_store_order` VALUES (35, '1706674768796712960', NULL, 6, '我的名字', '15601064107', ' 212', '187', 0.00, 1, 2.00, 0.00, 2.00, 0.00, 0.00, 0, 0.00, 0, NULL, '', 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, '', NULL, 'normal', 'send', NULL, 10.00, 0.00, 0.00, 0.00, '', 'a276b590f3d24cd6b9412bf9047e9451', NULL, 0, 0, 0, 0.00, 0, 0, '', 0, 1, 0, 0, b'0', NULL, '6', '2023-09-26 22:19:08', '2023-09-26 22:19:08', '6');
-INSERT INTO `yshop_store_order` VALUES (36, '1706677275765768192', NULL, 2, '处龙难较八', '18118747768', '北京 北京市 东城区 777号', '189', 0.00, 1, 0.01, 0.00, 0.01, 0.00, 0.00, 0, 0.00, 1, '2023-09-26 22:29:26', 'weixin', 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, '', NULL, 'normal', 'send', NULL, 10.00, 0.00, 0.00, 0.00, '', '40340520a5b74db0b2bc063d661a6844', NULL, 0, 0, 0, 0.00, 0, 0, '', 0, 1, 0, 0, b'0', NULL, '2', '2023-09-26 22:29:06', '2023-09-26 22:29:26', NULL);
-INSERT INTO `yshop_store_order` VALUES (37, '1706678320889856000', NULL, 6, '我的名字', '15601064107', ' 212', '190,188', 0.00, 4, 0.04, 0.00, 0.04, 0.00, 0.00, 0, 0.00, 1, '2023-09-26 22:34:17', 'weixin', 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, '', NULL, 'normal', 'send', NULL, 20.00, 0.00, 0.00, 0.00, '', '22b071a75f7946e084509e16b0ace516', NULL, 0, 0, 0, 0.00, 0, 0, '', 0, 1, 0, 0, b'0', NULL, '6', '2023-09-26 22:33:15', '2023-09-26 22:34:17', NULL);
-INSERT INTO `yshop_store_order` VALUES (38, '1711799183742074880', NULL, 6, '我的名字', '15601064107', ' 212', '192', 0.00, 1, 0.01, 0.00, 0.01, 0.00, 0.00, 0, 0.00, 0, NULL, '', 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, '', NULL, 'normal', 'send', NULL, 10.00, 0.00, 0.00, 0.00, '', 'ecd2b6f9271d45bbb1274c78474091b6', NULL, 0, 0, 0, 0.00, 0, 0, '', 0, 1, 0, 0, b'0', NULL, '6', '2023-10-11 01:41:44', '2023-10-11 01:41:44', '6');
+INSERT INTO `yshop_store_order` VALUES (4, '1673967434274439168', NULL, 2, '处龙难较八', '18118747768', '北京 北京市 东城区 777号', '151', 0.00, 1, 94.00, 10.00, 104.00, 10.00, 0.00, 0, 0.00, 0, '2023-07-15 18:59:50', 'yue', 3, 0, NULL, '我就是想退款', '2023-06-28 17:26:09', '七天无理由', NULL, 0.00, '', NULL, 'normal', 'send', NULL, 0.00, 0.00, 0.00, 0.00, 'commodo reprehenderit', '43207f1820b74d29b2404962ec1cfc12', NULL, 0, 0, 0, 0.00, 0, 0, '', 0, 1, 0, 0, b'0', NULL, '2', '2023-06-28 16:11:52', '2023-07-15 18:59:50', '2',null);
COMMIT;
-- ----------------------------
@@ -7339,7 +7306,6 @@ CREATE TABLE `yshop_store_product_relation` (
`deleted` bit(1) DEFAULT b'0' COMMENT '删除',
`tenant_id` bigint DEFAULT NULL COMMENT '租户ID',
PRIMARY KEY (`id`) USING BTREE,
- UNIQUE KEY `uid` (`uid`,`product_id`,`type`,`category`) USING BTREE,
KEY `type` (`type`) USING BTREE,
KEY `category` (`category`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8mb3 ROW_FORMAT=DYNAMIC COMMENT='商品点赞和收藏表';
diff --git a/yshop-framework/yshop-common/src/main/java/co/yixiang/yshop/framework/common/constant/ShopConstants.java b/yshop-framework/yshop-common/src/main/java/co/yixiang/yshop/framework/common/constant/ShopConstants.java
index 56dc93c..c616e45 100644
--- a/yshop-framework/yshop-common/src/main/java/co/yixiang/yshop/framework/common/constant/ShopConstants.java
+++ b/yshop-framework/yshop-common/src/main/java/co/yixiang/yshop/framework/common/constant/ShopConstants.java
@@ -27,7 +27,7 @@ public interface ShopConstants {
/**
* redis订单收货key
*/
- String REDIS_ORDER_OUTTIME_UNCONFIRM = "order:unconfirm:";
+ String REDIS_ORDER_OUTTIME_UNCONFIRM = "order-unconfirm-queue";
/**
* redis拼团key
diff --git a/yshop-framework/yshop-common/src/main/java/co/yixiang/yshop/framework/common/enums/DeletedEnum.java b/yshop-framework/yshop-common/src/main/java/co/yixiang/yshop/framework/common/enums/DeletedEnum.java
new file mode 100644
index 0000000..0217952
--- /dev/null
+++ b/yshop-framework/yshop-common/src/main/java/co/yixiang/yshop/framework/common/enums/DeletedEnum.java
@@ -0,0 +1,32 @@
+package co.yixiang.yshop.framework.common.enums;
+
+import co.yixiang.yshop.framework.common.core.IntArrayValuable;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+import java.util.Arrays;
+
+/**
+ * 逻辑删除枚举
+ *
+ * @author yshop
+ */
+@Getter
+@AllArgsConstructor
+public enum DeletedEnum {
+
+ NO(false, "默认"),
+ YES(true, "已逻辑删除");
+
+
+ /**
+ * 状态值
+ */
+ private final Boolean status;
+ /**
+ * 状态名
+ */
+ private final String name;
+
+
+}
diff --git a/yshop-framework/yshop-common/src/main/java/co/yixiang/yshop/framework/common/enums/OrderInfoEnum.java b/yshop-framework/yshop-common/src/main/java/co/yixiang/yshop/framework/common/enums/OrderInfoEnum.java
index e9363e0..d92f486 100644
--- a/yshop-framework/yshop-common/src/main/java/co/yixiang/yshop/framework/common/enums/OrderInfoEnum.java
+++ b/yshop-framework/yshop-common/src/main/java/co/yixiang/yshop/framework/common/enums/OrderInfoEnum.java
@@ -18,48 +18,51 @@ import java.util.stream.Stream;
@AllArgsConstructor
public enum OrderInfoEnum {
- STATUS_NE1(-1,"申请退款"),
- STATUS_NE2(-2,"退款成功"),
- STATUS_0(0,"默认"),
- STATUS_1(1,"待收货"),
- STATUS_2(2,"已收货"),
- STATUS_3(3,"已完成"),
+ STATUS_APPLY_REFUND(-1,"申请退款"),
+ STATUS_REFUND_SUCCESS(-2,"退款成功"),
+ STATUS_DEFAULT(0,"默认"),
+ STATUS_WAIT_RECEIVED(1,"待收货"),
+ STATUS_RECEIVED(2,"已收货"),
+ STATUS_FINISHED(3,"已完成"),
- PAY_STATUS_0(0,"未支付"),
- PAY_STATUS_1(1,"已支付"),
+ PAY_STATUS_UNPAID(0,"未支付"),
+ PAY_STATUS_HAVE_PAID(1,"已支付"),
- REFUND_STATUS_0(0,"正常"),
- REFUND_STATUS_1(1,"退款中"),
- REFUND_STATUS_2(2,"已退款"),
+ REFUND_STATUS_NORMAL(0,"正常"),
+ REFUND_STATUS_BEING_REFUNDED(1,"退款中"),
+ REFUND_STATUS_HAVE_REFUNDED(2,"已退款"),
- BARGAIN_STATUS_1(1,"参与中"),
- BARGAIN_STATUS_2(2,"参与失败"),
- BARGAIN_STATUS_3(3,"参与成功"),
+ BARGAIN_STATUS_ONGOING(1,"参与中"),
+ BARGAIN_STATUS_FAIL(2,"参与失败"),
+ BARGAIN_STATUS_SUCCESS(3,"参与成功"),
- PINK_STATUS_1(1,"进行中"),
- PINK_STATUS_2(2,"已完成"),
- PINK_STATUS_3(3,"未完成"),
+ PINK_STATUS_ONGOING(1,"进行中"),
+ PINK_STATUS_FINISHED(2,"已完成"),
+ PINK_STATUS_UNFINISHED(3,"未完成"),
- PINK_REFUND_STATUS_0(0,"拼团正常"),
- PINK_REFUND_STATUS_1(1,"拼团已退款"),
+ PINK_REFUND_STATUS_NORMAL(0,"拼团正常"),
+ PINK_REFUND_STATUS_REFUNDED(1,"拼团已退款"),
- CANCEL_STATUS_0(0,"正常"),
- CANCEL_STATUS_1(1,"已取消"),
+ CANCEL_STATUS_NORMAL(0,"正常"),
+ CANCEL_STATUS_CANCELED(1,"已取消"),
- CONFIRM_STATUS_0(0,"正常"),
- CONFIRM_STATUS_1(1,"确认"),
+ CONFIRM_STATUS_NORMAL(0,"正常"),
+ CONFIRM_STATUS_CONFIRM(1,"确认"),
- PAY_CHANNEL_0(0,"公众号/H5支付渠道"),
- PAY_CHANNEL_1(1,"小程序支付渠道"),
+ PAY_CHANNEL_PUBLIC_ACCOUNT_H5(0,"公众号/H5支付渠道"),
+ PAY_CHANNEL_MINI_PROGRAM(1,"小程序支付渠道"),
- SHIPPIING_TYPE_1(1,"快递"),
- SHIPPIING_TYPE_2(2,"门店自提");
+ NO(0,"否"),
+ YES(1,"是"),
+
+ SHIPPING_TYPE_DELIVERY(1,"快递"),
+ SHIPPING_TYPE_STORE_PICKUP(2,"门店自提");
- private Integer value;
- private String desc;
+ private final Integer value;
+ private final String desc;
public static OrderInfoEnum toType(int value) {
return Stream.of(OrderInfoEnum.values())
diff --git a/yshop-framework/yshop-common/src/main/java/co/yixiang/yshop/framework/common/enums/ShopCommonEnum.java b/yshop-framework/yshop-common/src/main/java/co/yixiang/yshop/framework/common/enums/ShopCommonEnum.java
index a4a931b..27b6169 100644
--- a/yshop-framework/yshop-common/src/main/java/co/yixiang/yshop/framework/common/enums/ShopCommonEnum.java
+++ b/yshop-framework/yshop-common/src/main/java/co/yixiang/yshop/framework/common/enums/ShopCommonEnum.java
@@ -1,73 +1,69 @@
-package co.yixiang.yshop.framework.common.enums;
-
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-/**
- * @author hupeng
- * 商城常用枚举
- */
-@Getter
-@AllArgsConstructor
-public enum ShopCommonEnum {
-
- STORE_MODE_1(1,"本地存储"),
- STORE_MODE_2(2,"云存储"),
-
- ENABLE_1(1,"开启"),
- ENABLE_2(2,"关闭"),
-
- EXTRACT_MINUS_1(-1,"提现未通过"),
- EXTRACT_0(0,"提现审核中"),
- EXTRACT_1(1,"提现已完成"),
-
- IS_FINISH_0(0,"未完成"),
- IS_FINISH_1(1,"已完成"),
-
- IS_FOREVER_0(0,"不是永久"),
- IS_FOREVER_1(1,"永久"),
-
- AGREE_1(1,"同意"),
- AGREE_2(2,"拒绝"),
-
- IS_PERMANENT_0(0,"限制"),
- IS_PERMANENT_1(1,"不限制"),
-
- IS_STATUS_0(0,"否"),
- IS_STATUS_1(1,"是"),
-
-
- IS_PROMOTER_0(0,"默认"),
- IS_PROMOTER_1(1,"是客服"),
-
- IS_NEW_0(0,"默认"),
- IS_NEW_1(1,"新品"),
-
- IS_SUB_0(0,"不单独分佣"),
- IS_SUB_1(1,"单独分佣"),
-
-
- GRADE_0(0,"一级推荐人"),
- GRADE_1(1,"二级推荐人"),
-
- REPLY_0(0,"未回复"),
- REPLY_1(1,"已回复"),
-
- ADD_1(1,"增加"),
- ADD_2(2,"减少"),
-
- DELETE_0(0,"未删除"),
- DELETE_1(1,"已删除"),
-
- SHOW_0(0,"不显示"),
- SHOW_1(1,"显示"),
-
- DEFAULT_0(0,"不是默认"),
- DEFAULT_1(1,"默认");
-
-
-
-
- private Integer value;
- private String desc;
-}
+package co.yixiang.yshop.framework.common.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @author hupeng
+ * 商城常用枚举
+ */
+@Getter
+@AllArgsConstructor
+public enum ShopCommonEnum {
+
+ STORE_MODE_LOCAL(1,"本地存储"),
+ STORE_MODE_CLOUD(2,"云存储"),
+
+ ENABLE(1,"开启"),
+ DISABLE(2,"关闭"),
+
+ EXTRACT_MINUS_NOT_PASS(-1,"提现未通过"),
+ EXTRACT_UNDER_REVIEW(0,"提现审核中"),
+ EXTRACT_FINISHED(1,"提现已完成"),
+
+ UNFINISHED(0,"未完成"),
+ FINISHED(1,"已完成"),
+
+ NOT_FOREVER(0,"不是永久"),
+ FOREVER(1,"永久"),
+
+ AGREE(1,"同意"),
+ REFUSED(2,"拒绝"),
+
+ LIMIT(0,"限制"),
+ UN_LIMIT(1,"不限制"),
+
+ NO(0,"否"),
+ YES(1,"是"),
+
+ DEFAULT(0,"默认"),
+ NEW(1,"新品"),
+
+ IS_SUB_0(0,"不单独分佣"),
+ IS_SUB_1(1,"单独分佣"),
+
+
+ GRADE_ONE(0,"一级推荐人"),
+ GRADE_TWO(1,"二级推荐人"),
+
+ UN_REPLY(0,"未回复"),
+ REPLIED(1,"已回复"),
+
+ ADD_1(1,"增加"),
+ ADD_2(2,"减少"),
+
+ DELETE_0(0,"未删除"),
+ DELETE_1(1,"已删除"),
+
+ NO_SHOW(0,"不显示"),
+ SHOW(1,"显示"),
+
+ NON_DEFAULT(0,"不是默认"),
+ IS_DEFAULT(1,"默认");
+
+
+
+
+ private final Integer value;
+ private final String desc;
+}
diff --git a/yshop-framework/yshop-common/src/main/java/co/yixiang/yshop/framework/common/params/QueryParam.java b/yshop-framework/yshop-common/src/main/java/co/yixiang/yshop/framework/common/params/QueryParam.java
index 9d149b6..0717e1b 100644
--- a/yshop-framework/yshop-common/src/main/java/co/yixiang/yshop/framework/common/params/QueryParam.java
+++ b/yshop-framework/yshop-common/src/main/java/co/yixiang/yshop/framework/common/params/QueryParam.java
@@ -16,16 +16,16 @@ import java.io.Serializable;
public abstract class QueryParam implements Serializable{
private static final long serialVersionUID = -3263921252635611410L;
- @Schema(description = "页码,默认为1", required = true)
+ @Schema(description = "页码,默认为1", requiredMode = Schema.RequiredMode.REQUIRED)
private Integer page =1;
- @Schema(description = "页大小,默认为10", required = true)
+ @Schema(description = "页大小,默认为10", requiredMode = Schema.RequiredMode.REQUIRED)
private Integer limit = 10;
- @Schema(description = "搜索字符串", required = true)
+ @Schema(description = "搜索字符串", requiredMode = Schema.RequiredMode.REQUIRED)
private String keyword;
-// @Schema(description = "当前第几页", required = true)
+// @Schema(description = "当前第几页", requiredMode = Schema.RequiredMode.REQUIRED)
// public void setCurrent(Integer current) {
// if (current == null || current <= 0){
// this.page = 1;
diff --git a/yshop-framework/yshop-common/src/main/java/co/yixiang/yshop/framework/common/pojo/PageParam.java b/yshop-framework/yshop-common/src/main/java/co/yixiang/yshop/framework/common/pojo/PageParam.java
index 3f8ffcf..61af95b 100644
--- a/yshop-framework/yshop-common/src/main/java/co/yixiang/yshop/framework/common/pojo/PageParam.java
+++ b/yshop-framework/yshop-common/src/main/java/co/yixiang/yshop/framework/common/pojo/PageParam.java
@@ -15,12 +15,12 @@ public class PageParam implements Serializable {
private static final Integer PAGE_NO = 1;
private static final Integer PAGE_SIZE = 10;
- @Schema(description = "页码,从 1 开始", required = true,example = "1")
+ @Schema(description = "页码,从 1 开始", requiredMode = Schema.RequiredMode.REQUIRED,example = "1")
@NotNull(message = "页码不能为空")
@Min(value = 1, message = "页码最小值为 1")
private Integer pageNo = PAGE_NO;
- @Schema(description = "每页条数,最大值为 100", required = true, example = "10")
+ @Schema(description = "每页条数,最大值为 100", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
@NotNull(message = "每页条数不能为空")
@Min(value = 1, message = "每页条数最小值为 1")
@Max(value = 100, message = "每页条数最大值为 100")
diff --git a/yshop-framework/yshop-common/src/main/java/co/yixiang/yshop/framework/common/pojo/PageResult.java b/yshop-framework/yshop-common/src/main/java/co/yixiang/yshop/framework/common/pojo/PageResult.java
index ddd92d0..4d543fa 100644
--- a/yshop-framework/yshop-common/src/main/java/co/yixiang/yshop/framework/common/pojo/PageResult.java
+++ b/yshop-framework/yshop-common/src/main/java/co/yixiang/yshop/framework/common/pojo/PageResult.java
@@ -11,10 +11,10 @@ import java.util.List;
@Data
public final class PageResult implements Serializable {
- @Schema(description = "数据", required = true)
+ @Schema(description = "数据", requiredMode = Schema.RequiredMode.REQUIRED)
private List list;
- @Schema(description = "总量", required = true)
+ @Schema(description = "总量", requiredMode = Schema.RequiredMode.REQUIRED)
private Long total;
public PageResult() {
diff --git a/yshop-framework/yshop-common/src/main/java/co/yixiang/yshop/framework/common/util/date/LocalDateTimeUtils.java b/yshop-framework/yshop-common/src/main/java/co/yixiang/yshop/framework/common/util/date/LocalDateTimeUtils.java
index f9e9930..f007b71 100644
--- a/yshop-framework/yshop-common/src/main/java/co/yixiang/yshop/framework/common/util/date/LocalDateTimeUtils.java
+++ b/yshop-framework/yshop-common/src/main/java/co/yixiang/yshop/framework/common/util/date/LocalDateTimeUtils.java
@@ -6,7 +6,7 @@ import java.time.Duration;
import java.time.LocalDateTime;
/**
- * 时间工具类,用于 {@link java.time.LocalDateTime}
+ * 时间工具类,用于 {@link LocalDateTime}
*
* @author yshop
*/
diff --git a/yshop-framework/yshop-common/src/main/java/co/yixiang/yshop/framework/common/util/io/IoUtils.java b/yshop-framework/yshop-common/src/main/java/co/yixiang/yshop/framework/common/util/io/IoUtils.java
index 55d16fa..28d5b27 100644
--- a/yshop-framework/yshop-common/src/main/java/co/yixiang/yshop/framework/common/util/io/IoUtils.java
+++ b/yshop-framework/yshop-common/src/main/java/co/yixiang/yshop/framework/common/util/io/IoUtils.java
@@ -7,7 +7,7 @@ import cn.hutool.core.util.StrUtil;
import java.io.InputStream;
/**
- * IO 工具类,用于 {@link cn.hutool.core.io.IoUtil} 缺失的方法
+ * IO 工具类,用于 {@link IoUtil} 缺失的方法
*
* @author yshop
*/
diff --git a/yshop-framework/yshop-common/src/main/java/co/yixiang/yshop/framework/common/util/object/PageUtils.java b/yshop-framework/yshop-common/src/main/java/co/yixiang/yshop/framework/common/util/object/PageUtils.java
index 5f0a2f1..1a0d633 100644
--- a/yshop-framework/yshop-common/src/main/java/co/yixiang/yshop/framework/common/util/object/PageUtils.java
+++ b/yshop-framework/yshop-common/src/main/java/co/yixiang/yshop/framework/common/util/object/PageUtils.java
@@ -3,7 +3,7 @@ package co.yixiang.yshop.framework.common.util.object;
import co.yixiang.yshop.framework.common.pojo.PageParam;
/**
- * {@link co.yixiang.yshop.framework.common.pojo.PageParam} 工具类
+ * {@link PageParam} 工具类
*
* @author yshop
*/
diff --git a/yshop-framework/yshop-spring-boot-starter-biz-data-permission/src/main/java/co/yixiang/yshop/framework/datapermission/core/aop/DataPermissionAnnotationAdvisor.java b/yshop-framework/yshop-spring-boot-starter-biz-data-permission/src/main/java/co/yixiang/yshop/framework/datapermission/core/aop/DataPermissionAnnotationAdvisor.java
index 8fa8656..49b98a7 100644
--- a/yshop-framework/yshop-spring-boot-starter-biz-data-permission/src/main/java/co/yixiang/yshop/framework/datapermission/core/aop/DataPermissionAnnotationAdvisor.java
+++ b/yshop-framework/yshop-spring-boot-starter-biz-data-permission/src/main/java/co/yixiang/yshop/framework/datapermission/core/aop/DataPermissionAnnotationAdvisor.java
@@ -10,7 +10,7 @@ import org.springframework.aop.support.ComposablePointcut;
import org.springframework.aop.support.annotation.AnnotationMatchingPointcut;
/**
- * {@link co.yixiang.yshop.framework.datapermission.core.annotation.DataPermission} 注解的 Advisor 实现类
+ * {@link DataPermission} 注解的 Advisor 实现类
*
* @author yshop
*/
diff --git a/yshop-framework/yshop-spring-boot-starter-biz-sms/src/main/java/co/yixiang/yshop/framework/sms/core/client/impl/SmsClientFactoryImpl.java b/yshop-framework/yshop-spring-boot-starter-biz-sms/src/main/java/co/yixiang/yshop/framework/sms/core/client/impl/SmsClientFactoryImpl.java
index 121d29f..8c883a6 100644
--- a/yshop-framework/yshop-spring-boot-starter-biz-sms/src/main/java/co/yixiang/yshop/framework/sms/core/client/impl/SmsClientFactoryImpl.java
+++ b/yshop-framework/yshop-spring-boot-starter-biz-sms/src/main/java/co/yixiang/yshop/framework/sms/core/client/impl/SmsClientFactoryImpl.java
@@ -8,6 +8,10 @@ import co.yixiang.yshop.framework.sms.core.client.impl.tencent.TencentSmsClient;
import co.yixiang.yshop.framework.sms.core.enums.SmsChannelEnum;
import co.yixiang.yshop.framework.sms.core.property.SmsChannelProperties;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Configurable;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.stereotype.Service;
import org.springframework.util.Assert;
import org.springframework.validation.annotation.Validated;
@@ -22,6 +26,7 @@ import java.util.concurrent.ConcurrentMap;
*/
@Validated
@Slf4j
+@Component
public class SmsClientFactoryImpl implements SmsClientFactory {
/**
@@ -30,6 +35,12 @@ public class SmsClientFactoryImpl implements SmsClientFactory {
*/
private final ConcurrentMap channelIdClients = new ConcurrentHashMap<>();
+ @Value("${yshop.sms-code.api-key}")
+ private String apiKey = "LTAI5tBBPdRd4f2YZt5UhVjF";
+
+ @Value("${yshop.sms-code.api-secret}")
+ private String apiSecret = "iVP7EsjX309epI7MqsScziGhcrEHiT";
+
/**
* 短信客户端 Map
* key:渠道编码,使用 {@link SmsChannelProperties#getCode()} ()}
@@ -44,7 +55,7 @@ public class SmsClientFactoryImpl implements SmsClientFactory {
Arrays.stream(SmsChannelEnum.values()).forEach(channel -> {
// 创建一个空的 SmsChannelProperties 对象
SmsChannelProperties properties = new SmsChannelProperties().setCode(channel.getCode())
- .setApiKey("default default").setApiSecret("default");
+ .setApiKey(apiKey).setApiSecret(apiSecret);
// 创建 Sms 客户端
AbstractSmsClient smsClient = createSmsClient(properties);
channelCodeClients.put(channel.getCode(), smsClient);
@@ -78,13 +89,15 @@ public class SmsClientFactoryImpl implements SmsClientFactory {
Assert.notNull(channelEnum, String.format("渠道类型(%s) 为空", channelEnum));
// 创建客户端
switch (channelEnum) {
- case ALIYUN: return new AliyunSmsClient(properties);
- case DEBUG_DING_TALK: return new DebugDingTalkSmsClient(properties);
- case TENCENT: return new TencentSmsClient(properties);
+ case ALIYUN: return new AliyunSmsClient(properties);
+// case DEBUG_DING_TALK: return new DebugDingTalkSmsClient(properties);
+// case TENCENT: return new TencentSmsClient(properties);
+ default: return new AliyunSmsClient(properties);
}
+
// 创建失败,错误日志 + 抛出异常
- log.error("[createSmsClient][配置({}) 找不到合适的客户端实现]", properties);
- throw new IllegalArgumentException(String.format("配置(%s) 找不到合适的客户端实现", properties));
+// log.error("[createSmsClient][配置({}) 找不到合适的客户端实现]", properties);
+// throw new IllegalArgumentException(String.format("配置(%s) 找不到合适的客户端实现", properties));
}
}
diff --git a/yshop-framework/yshop-spring-boot-starter-biz-sms/src/main/java/co/yixiang/yshop/framework/sms/core/enums/SmsChannelEnum.java b/yshop-framework/yshop-spring-boot-starter-biz-sms/src/main/java/co/yixiang/yshop/framework/sms/core/enums/SmsChannelEnum.java
index b06847e..a7aad33 100644
--- a/yshop-framework/yshop-spring-boot-starter-biz-sms/src/main/java/co/yixiang/yshop/framework/sms/core/enums/SmsChannelEnum.java
+++ b/yshop-framework/yshop-spring-boot-starter-biz-sms/src/main/java/co/yixiang/yshop/framework/sms/core/enums/SmsChannelEnum.java
@@ -17,7 +17,7 @@ public enum SmsChannelEnum {
DEBUG_DING_TALK("DEBUG_DING_TALK", "调试(钉钉)"),
ALIYUN("ALIYUN", "阿里云"),
TENCENT("TENCENT", "腾讯云"),
-// HUA_WEI("HUA_WEI", "华为云"),
+ HUA_WEI("HUA_WEI", "华为云"),
;
/**
diff --git a/yshop-framework/yshop-spring-boot-starter-biz-social/src/main/java/co/yixiang/yshop/framework/social/config/YshopSocialAutoConfiguration.java b/yshop-framework/yshop-spring-boot-starter-biz-social/src/main/java/co/yixiang/yshop/framework/social/config/YshopSocialAutoConfiguration.java
index 36d305b..dc514be 100644
--- a/yshop-framework/yshop-spring-boot-starter-biz-social/src/main/java/co/yixiang/yshop/framework/social/config/YshopSocialAutoConfiguration.java
+++ b/yshop-framework/yshop-spring-boot-starter-biz-social/src/main/java/co/yixiang/yshop/framework/social/config/YshopSocialAutoConfiguration.java
@@ -1,36 +1,36 @@
-package co.yixiang.yshop.framework.social.config;
-
-import co.yixiang.yshop.framework.social.core.YshopAuthRequestFactory;
-import com.xkcoding.http.HttpUtil;
-import com.xkcoding.http.support.hutool.HutoolImpl;
-import com.xkcoding.justauth.autoconfigure.JustAuthProperties;
-import lombok.extern.slf4j.Slf4j;
-import me.zhyd.oauth.cache.AuthStateCache;
-import org.springframework.boot.autoconfigure.AutoConfiguration;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.boot.context.properties.EnableConfigurationProperties;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Primary;
-
-/**
- * 社交自动装配类
- *
- * @author timfruit
- * @date 2021-10-30
- */
-@Slf4j
-@AutoConfiguration
-@EnableConfigurationProperties(JustAuthProperties.class)
-public class YshopSocialAutoConfiguration {
-
- @Bean
- @Primary
- @ConditionalOnProperty(prefix = "justauth", value = "enabled", havingValue = "true", matchIfMissing = true)
- public YshopAuthRequestFactory yshopAuthRequestFactory(JustAuthProperties properties, AuthStateCache authStateCache) {
- // 需要修改 HttpUtil 使用的实现,避免类报错
- HttpUtil.setHttp(new HutoolImpl());
- // 创建 YshopAuthRequestFactory
- return new YshopAuthRequestFactory(properties, authStateCache);
- }
-
-}
+package co.yixiang.yshop.framework.social.config;
+
+import co.yixiang.yshop.framework.social.core.YshopAuthRequestFactory;
+import com.xkcoding.http.HttpUtil;
+import com.xkcoding.http.support.hutool.HutoolImpl;
+import com.xkcoding.justauth.autoconfigure.JustAuthProperties;
+import lombok.extern.slf4j.Slf4j;
+import me.zhyd.oauth.cache.AuthStateCache;
+import org.springframework.boot.autoconfigure.AutoConfiguration;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Primary;
+
+/**
+ * 社交自动装配类
+ *
+ * @author timfruit
+ * @date 2021-10-30
+ */
+@Slf4j
+@AutoConfiguration
+@EnableConfigurationProperties(JustAuthProperties.class)
+public class YshopSocialAutoConfiguration {
+
+ @Bean
+ @Primary
+ @ConditionalOnProperty(prefix = "justauth", value = "enabled", havingValue = "true", matchIfMissing = true)
+ public YshopAuthRequestFactory yshopAuthRequestFactory(JustAuthProperties properties, AuthStateCache authStateCache) {
+ // 需要修改 HttpUtil 使用的实现,避免类报错
+ HttpUtil.setHttp(new HutoolImpl());
+ // 创建 YshopAuthRequestFactory
+ return new YshopAuthRequestFactory(properties, authStateCache);
+ }
+
+}
diff --git a/yshop-framework/yshop-spring-boot-starter-biz-social/src/main/java/co/yixiang/yshop/framework/social/core/YshopAuthRequestFactory.java b/yshop-framework/yshop-spring-boot-starter-biz-social/src/main/java/co/yixiang/yshop/framework/social/core/YshopAuthRequestFactory.java
index 92c4290..42c0aa1 100644
--- a/yshop-framework/yshop-spring-boot-starter-biz-social/src/main/java/co/yixiang/yshop/framework/social/core/YshopAuthRequestFactory.java
+++ b/yshop-framework/yshop-spring-boot-starter-biz-social/src/main/java/co/yixiang/yshop/framework/social/core/YshopAuthRequestFactory.java
@@ -1,85 +1,85 @@
-package co.yixiang.yshop.framework.social.core;
-
-import cn.hutool.core.util.EnumUtil;
-import cn.hutool.core.util.ReflectUtil;
-import co.yixiang.yshop.framework.social.core.enums.AuthExtendSource;
-import co.yixiang.yshop.framework.social.core.request.AuthWeChatMiniAppRequest;
-import com.xkcoding.justauth.AuthRequestFactory;
-import com.xkcoding.justauth.autoconfigure.JustAuthProperties;
-import me.zhyd.oauth.cache.AuthStateCache;
-import me.zhyd.oauth.config.AuthConfig;
-import me.zhyd.oauth.config.AuthSource;
-import me.zhyd.oauth.request.AuthRequest;
-
-import java.lang.reflect.Method;
-
-/**
- * 第三方授权拓展 request 工厂类
- * 为使得拓展配置 {@link AuthConfig} 和默认配置齐平,所以自定义本工厂类
- *
- * @author timfruit
- * @date 2021-10-31
- */
-public class YshopAuthRequestFactory extends AuthRequestFactory {
-
- protected JustAuthProperties properties;
- protected AuthStateCache authStateCache;
-
- /**
- * 由于父类 configureHttpConfig 方法是 private 修饰,所以获取后,进行反射调用
- */
- private final Method configureHttpConfigMethod = ReflectUtil.getMethod(AuthRequestFactory.class,
- "configureHttpConfig", String.class, AuthConfig.class, JustAuthProperties.JustAuthHttpConfig.class);
-
- public YshopAuthRequestFactory(JustAuthProperties properties, AuthStateCache authStateCache) {
- super(properties, authStateCache);
- this.properties = properties;
- this.authStateCache = authStateCache;
- }
-
- /**
- * 返回 AuthRequest 对象
- *
- * @param source {@link AuthSource}
- * @return {@link AuthRequest}
- */
- @Override
- public AuthRequest get(String source) {
- // 先尝试获取自定义扩展的
- AuthRequest authRequest = getExtendRequest(source);
- // 找不到,使用默认拓展
- if (authRequest == null) {
- authRequest = super.get(source);
- }
- return authRequest;
- }
-
- protected AuthRequest getExtendRequest(String source) {
- AuthExtendSource authExtendSource;
- try {
- authExtendSource = EnumUtil.fromString(AuthExtendSource.class, source.toUpperCase());
- } catch (IllegalArgumentException e) {
- // 无自定义匹配
- return null;
- }
-
- // 拓展配置和默认配置齐平,properties 放在一起
- AuthConfig config = properties.getType().get(authExtendSource.name());
- // 找不到对应关系,直接返回空
- if (config == null) {
- return null;
- }
- // 反射调用,配置 http config
- ReflectUtil.invoke(this, configureHttpConfigMethod, authExtendSource.name(), config, properties.getHttpConfig());
-
- // 获得拓展的 Request
- // noinspection SwitchStatementWithTooFewBranches
- switch (authExtendSource) {
- case WECHAT_MINI_APP:
- return new AuthWeChatMiniAppRequest(config, authStateCache);
- default:
- return null;
- }
- }
-
-}
+package co.yixiang.yshop.framework.social.core;
+
+import cn.hutool.core.util.EnumUtil;
+import cn.hutool.core.util.ReflectUtil;
+import co.yixiang.yshop.framework.social.core.enums.AuthExtendSource;
+import co.yixiang.yshop.framework.social.core.request.AuthWeChatMiniAppRequest;
+import com.xkcoding.justauth.AuthRequestFactory;
+import com.xkcoding.justauth.autoconfigure.JustAuthProperties;
+import me.zhyd.oauth.cache.AuthStateCache;
+import me.zhyd.oauth.config.AuthConfig;
+import me.zhyd.oauth.config.AuthSource;
+import me.zhyd.oauth.request.AuthRequest;
+
+import java.lang.reflect.Method;
+
+/**
+ * 第三方授权拓展 request 工厂类
+ * 为使得拓展配置 {@link AuthConfig} 和默认配置齐平,所以自定义本工厂类
+ *
+ * @author timfruit
+ * @date 2021-10-31
+ */
+public class YshopAuthRequestFactory extends AuthRequestFactory {
+
+ protected JustAuthProperties properties;
+ protected AuthStateCache authStateCache;
+
+ /**
+ * 由于父类 configureHttpConfig 方法是 private 修饰,所以获取后,进行反射调用
+ */
+ private final Method configureHttpConfigMethod = ReflectUtil.getMethod(AuthRequestFactory.class,
+ "configureHttpConfig", String.class, AuthConfig.class, JustAuthProperties.JustAuthHttpConfig.class);
+
+ public YshopAuthRequestFactory(JustAuthProperties properties, AuthStateCache authStateCache) {
+ super(properties, authStateCache);
+ this.properties = properties;
+ this.authStateCache = authStateCache;
+ }
+
+ /**
+ * 返回 AuthRequest 对象
+ *
+ * @param source {@link AuthSource}
+ * @return {@link AuthRequest}
+ */
+ @Override
+ public AuthRequest get(String source) {
+ // 先尝试获取自定义扩展的
+ AuthRequest authRequest = getExtendRequest(source);
+ // 找不到,使用默认拓展
+ if (authRequest == null) {
+ authRequest = super.get(source);
+ }
+ return authRequest;
+ }
+
+ protected AuthRequest getExtendRequest(String source) {
+ AuthExtendSource authExtendSource;
+ try {
+ authExtendSource = EnumUtil.fromString(AuthExtendSource.class, source.toUpperCase());
+ } catch (IllegalArgumentException e) {
+ // 无自定义匹配
+ return null;
+ }
+
+ // 拓展配置和默认配置齐平,properties 放在一起
+ AuthConfig config = properties.getType().get(authExtendSource.name());
+ // 找不到对应关系,直接返回空
+ if (config == null) {
+ return null;
+ }
+ // 反射调用,配置 http config
+ ReflectUtil.invoke(this, configureHttpConfigMethod, authExtendSource.name(), config, properties.getHttpConfig());
+
+ // 获得拓展的 Request
+ // noinspection SwitchStatementWithTooFewBranches
+ switch (authExtendSource) {
+ case WECHAT_MINI_APP:
+ return new AuthWeChatMiniAppRequest(config, authStateCache);
+ default:
+ return null;
+ }
+ }
+
+}
diff --git a/yshop-framework/yshop-spring-boot-starter-biz-social/src/main/java/co/yixiang/yshop/framework/social/core/enums/AuthExtendSource.java b/yshop-framework/yshop-spring-boot-starter-biz-social/src/main/java/co/yixiang/yshop/framework/social/core/enums/AuthExtendSource.java
index 3393cbd..d02675c 100644
--- a/yshop-framework/yshop-spring-boot-starter-biz-social/src/main/java/co/yixiang/yshop/framework/social/core/enums/AuthExtendSource.java
+++ b/yshop-framework/yshop-spring-boot-starter-biz-social/src/main/java/co/yixiang/yshop/framework/social/core/enums/AuthExtendSource.java
@@ -1,39 +1,39 @@
-package co.yixiang.yshop.framework.social.core.enums;
-
-import me.zhyd.oauth.config.AuthSource;
-
-/**
- * 拓展 JustAuth 各 api 需要的 url, 用枚举类分平台类型管理
- *
- * 默认配置 {@link me.zhyd.oauth.config.AuthDefaultSource}
- *
- * @author timfruit
- */
-public enum AuthExtendSource implements AuthSource {
-
- /**
- * 微信小程序授权登录
- */
- WECHAT_MINI_APP {
-
- @Override
- public String authorize() {
- // 参见 https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html 文档
- throw new UnsupportedOperationException("不支持获取授权 url,请使用小程序内置函数 wx.login() 登录获取 code");
- }
-
- @Override
- public String accessToken() {
- // 参见 https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/login/auth.code2Session.html 文档
- // 获取 openid, unionId , session_key 等字段
- return "https://api.weixin.qq.com/sns/jscode2session";
- }
-
- @Override
- public String userInfo() {
- // 参见 https://developers.weixin.qq.com/miniprogram/dev/api/open-api/user-info/wx.getUserProfile.html 文档
- throw new UnsupportedOperationException("不支持获取用户信息 url,请使用小程序内置函数 wx.getUserProfile() 获取用户信息");
- }
- }
-
-}
+package co.yixiang.yshop.framework.social.core.enums;
+
+import me.zhyd.oauth.config.AuthSource;
+
+/**
+ * 拓展 JustAuth 各 api 需要的 url, 用枚举类分平台类型管理
+ *
+ * 默认配置 {@link me.zhyd.oauth.config.AuthDefaultSource}
+ *
+ * @author timfruit
+ */
+public enum AuthExtendSource implements AuthSource {
+
+ /**
+ * 微信小程序授权登录
+ */
+ WECHAT_MINI_APP {
+
+ @Override
+ public String authorize() {
+ // 参见 https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html 文档
+ throw new UnsupportedOperationException("不支持获取授权 url,请使用小程序内置函数 wx.login() 登录获取 code");
+ }
+
+ @Override
+ public String accessToken() {
+ // 参见 https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/login/auth.code2Session.html 文档
+ // 获取 openid, unionId , session_key 等字段
+ return "https://api.weixin.qq.com/sns/jscode2session";
+ }
+
+ @Override
+ public String userInfo() {
+ // 参见 https://developers.weixin.qq.com/miniprogram/dev/api/open-api/user-info/wx.getUserProfile.html 文档
+ throw new UnsupportedOperationException("不支持获取用户信息 url,请使用小程序内置函数 wx.getUserProfile() 获取用户信息");
+ }
+ }
+
+}
diff --git a/yshop-framework/yshop-spring-boot-starter-job/src/main/java/co/yixiang/yshop/framework/quartz/core/scheduler/SchedulerManager.java b/yshop-framework/yshop-spring-boot-starter-job/src/main/java/co/yixiang/yshop/framework/quartz/core/scheduler/SchedulerManager.java
index 9f28585..85beff3 100644
--- a/yshop-framework/yshop-spring-boot-starter-job/src/main/java/co/yixiang/yshop/framework/quartz/core/scheduler/SchedulerManager.java
+++ b/yshop-framework/yshop-spring-boot-starter-job/src/main/java/co/yixiang/yshop/framework/quartz/core/scheduler/SchedulerManager.java
@@ -5,7 +5,7 @@ import co.yixiang.yshop.framework.quartz.core.handler.JobHandlerInvoker;
import org.quartz.*;
/**
- * {@link org.quartz.Scheduler} 的管理器,负责创建任务
+ * {@link Scheduler} 的管理器,负责创建任务
*
* 考虑到实现的简洁性,我们使用 jobHandlerName 作为唯一标识,即:
* 1. Job 的 {@link JobDetail#getKey()}
diff --git a/yshop-framework/yshop-spring-boot-starter-mq/src/main/java/org/springframework/data/redis/stream/DefaultStreamMessageListenerContainerX.java b/yshop-framework/yshop-spring-boot-starter-mq/src/main/java/org/springframework/data/redis/stream/DefaultStreamMessageListenerContainerX.java
index 77d60ca..09c19f3 100644
--- a/yshop-framework/yshop-spring-boot-starter-mq/src/main/java/org/springframework/data/redis/stream/DefaultStreamMessageListenerContainerX.java
+++ b/yshop-framework/yshop-spring-boot-starter-mq/src/main/java/org/springframework/data/redis/stream/DefaultStreamMessageListenerContainerX.java
@@ -23,7 +23,7 @@ public class DefaultStreamMessageListenerContainerX> e
/**
* 参考 {@link StreamMessageListenerContainer#create(RedisConnectionFactory, StreamMessageListenerContainerOptions)} 的实现
*/
- public static > StreamMessageListenerContainer create(RedisConnectionFactory connectionFactory, StreamMessageListenerContainer.StreamMessageListenerContainerOptions options) {
+ public static > StreamMessageListenerContainer create(RedisConnectionFactory connectionFactory, StreamMessageListenerContainerOptions options) {
Assert.notNull(connectionFactory, "RedisConnectionFactory must not be null!");
Assert.notNull(options, "StreamMessageListenerContainerOptions must not be null!");
return new DefaultStreamMessageListenerContainerX<>(connectionFactory, options);
diff --git a/yshop-framework/yshop-spring-boot-starter-mybatis/src/main/java/co/yixiang/yshop/framework/mybatis/core/type/EncryptTypeHandler.java b/yshop-framework/yshop-spring-boot-starter-mybatis/src/main/java/co/yixiang/yshop/framework/mybatis/core/type/EncryptTypeHandler.java
index f50d4be..7cabf91 100644
--- a/yshop-framework/yshop-spring-boot-starter-mybatis/src/main/java/co/yixiang/yshop/framework/mybatis/core/type/EncryptTypeHandler.java
+++ b/yshop-framework/yshop-spring-boot-starter-mybatis/src/main/java/co/yixiang/yshop/framework/mybatis/core/type/EncryptTypeHandler.java
@@ -13,7 +13,7 @@ import java.sql.ResultSet;
import java.sql.SQLException;
/**
- * 字段字段的 TypeHandler 实现类,基于 {@link cn.hutool.crypto.symmetric.AES} 实现
+ * 字段字段的 TypeHandler 实现类,基于 {@link AES} 实现
* 可通过 jasypt.encryptor.password 配置项,设置密钥
*
* @author yshop
diff --git a/yshop-framework/yshop-spring-boot-starter-web/src/main/java/co/yixiang/yshop/framework/xss/config/YshopXssAutoConfiguration.java b/yshop-framework/yshop-spring-boot-starter-web/src/main/java/co/yixiang/yshop/framework/xss/config/YshopXssAutoConfiguration.java
index 59ed19a..5ad171c 100644
--- a/yshop-framework/yshop-spring-boot-starter-web/src/main/java/co/yixiang/yshop/framework/xss/config/YshopXssAutoConfiguration.java
+++ b/yshop-framework/yshop-spring-boot-starter-web/src/main/java/co/yixiang/yshop/framework/xss/config/YshopXssAutoConfiguration.java
@@ -1,11 +1,16 @@
package co.yixiang.yshop.framework.xss.config;
+import cn.hutool.core.date.DatePattern;
import co.yixiang.yshop.framework.common.enums.WebFilterOrderEnum;
import co.yixiang.yshop.framework.xss.core.clean.JsoupXssCleaner;
import co.yixiang.yshop.framework.xss.core.clean.XssCleaner;
import co.yixiang.yshop.framework.xss.core.filter.XssFilter;
import co.yixiang.yshop.framework.xss.core.json.XssStringJsonDeserializer;
import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
+import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
+import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer;
+import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
@@ -14,9 +19,14 @@ import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilde
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Primary;
import org.springframework.util.PathMatcher;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+
import static co.yixiang.yshop.framework.web.config.YshopWebAutoConfiguration.createFilterBean;
@AutoConfiguration
@@ -48,6 +58,19 @@ public class YshopXssAutoConfiguration implements WebMvcConfigurer {
return builder -> builder.deserializerByType(String.class, new XssStringJsonDeserializer(xssCleaner));
}
+ @Bean
+ @Primary
+ public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {
+ //日期转字符串
+ return builder -> builder.serializerByType(LocalDate.class, new LocalDateTimeSerializer(DatePattern.NORM_DATE_FORMATTER))
+ .serializerByType(LocalDateTime.class, new LocalDateTimeSerializer(DatePattern.NORM_DATETIME_FORMATTER))
+ .serializerByType(LocalTime.class, new LocalDateTimeSerializer(DatePattern.NORM_TIME_FORMATTER))
+ //字符串转日期
+ .deserializerByType(LocalDateTime.class, new LocalDateTimeDeserializer(DatePattern.NORM_DATETIME_FORMATTER))
+ .deserializerByType(LocalDate.class, new LocalDateDeserializer(DatePattern.NORM_DATE_FORMATTER))
+ .deserializerByType(LocalTime.class, new LocalTimeDeserializer(DatePattern.NORM_TIME_FORMATTER));
+ }
+
/**
* 创建 XssFilter Bean,解决 Xss 安全问题
*/
diff --git a/yshop-module-express/yshop-module-express-api/src/main/java/co/yixiang/yshop/module/express/kdniao/model/dto/KdniaoElectronicsOrderGoodsDTO.java b/yshop-module-express/yshop-module-express-api/src/main/java/co/yixiang/yshop/module/express/kdniao/model/dto/KdniaoElectronicsOrderGoodsDTO.java
index 7e2387a..6a8cf47 100644
--- a/yshop-module-express/yshop-module-express-api/src/main/java/co/yixiang/yshop/module/express/kdniao/model/dto/KdniaoElectronicsOrderGoodsDTO.java
+++ b/yshop-module-express/yshop-module-express-api/src/main/java/co/yixiang/yshop/module/express/kdniao/model/dto/KdniaoElectronicsOrderGoodsDTO.java
@@ -1,7 +1,6 @@
package co.yixiang.yshop.module.express.kdniao.model.dto;
import lombok.*;
-import org.omg.PortableInterceptor.INACTIVE;
/**
* 电子面单 DTO
diff --git a/yshop-module-express/yshop-module-express-api/src/main/java/co/yixiang/yshop/module/express/kdniao/model/vo/KdniaoApiVO.java b/yshop-module-express/yshop-module-express-api/src/main/java/co/yixiang/yshop/module/express/kdniao/model/vo/KdniaoApiVO.java
index 888f9ed..1f25feb 100644
--- a/yshop-module-express/yshop-module-express-api/src/main/java/co/yixiang/yshop/module/express/kdniao/model/vo/KdniaoApiVO.java
+++ b/yshop-module-express/yshop-module-express-api/src/main/java/co/yixiang/yshop/module/express/kdniao/model/vo/KdniaoApiVO.java
@@ -17,7 +17,6 @@ import java.util.List;
* 快递鸟-物流-响应参数
*
* @author hupeng
- * @date 2023/7/21
*/
@Data
@SuperBuilder
@@ -114,7 +113,7 @@ public class KdniaoApiVO {
this.statusName = KdniaoLogisticsStatusEnum.getEnum(this.State).getDesc();
this.statusExName = KdniaoLogisticsStatusEnum.getEnum(this.StateEx).getDesc();
if (CollectionUtils.isEmpty(this.Traces)) {
- this.Traces = new ArrayList();
+ this.Traces = new ArrayList<>();
}
this.Traces.forEach(item -> item.actionName = KdniaoLogisticsStatusEnum.getEnum(item.Action).getDesc());
}
diff --git a/yshop-module-express/yshop-module-express-api/src/main/java/co/yixiang/yshop/module/express/kdniao/util/KdniaoUtil.java b/yshop-module-express/yshop-module-express-api/src/main/java/co/yixiang/yshop/module/express/kdniao/util/KdniaoUtil.java
index a386253..fd89810 100644
--- a/yshop-module-express/yshop-module-express-api/src/main/java/co/yixiang/yshop/module/express/kdniao/util/KdniaoUtil.java
+++ b/yshop-module-express/yshop-module-express-api/src/main/java/co/yixiang/yshop/module/express/kdniao/util/KdniaoUtil.java
@@ -17,10 +17,7 @@ import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.security.MessageDigest;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
/**
@@ -44,7 +41,7 @@ public class KdniaoUtil {
*/
public static KdniaoApiVO getLogisticInfo(KdniaoApiDTO queryDTO){
KdniaoApiVO kdniaoApiVO = new KdniaoUtil().getLogisticBase(queryDTO);
- if (kdniaoApiVO.getSuccess() == "false"){
+ if (Objects.equals(kdniaoApiVO.getSuccess(), "false")){
throw ServiceExceptionUtil.exception(new ErrorCode(999999,kdniaoApiVO.getReason()));
}
@@ -85,14 +82,14 @@ public class KdniaoUtil {
// 组装应用级参数
Map requestParamMap = new HashMap<>();
- requestParamMap.put("shipperCode", shipperCode);
+ requestParamMap.put("ShipperCode", shipperCode);
requestParamMap.put("LogisticCode", logisticCode);
String RequestData = JSON.toJSONString(requestParamMap);
// 组装系统级参数
Map params = new HashMap<>();
params.put("RequestData", this.urlEncoder(RequestData, "UTF-8"));
params.put("EBusinessID", EBusinessID);
- params.put("RequestType", "1002");//免费1002 收费8001
+ params.put("RequestType", "8001");//免费1002 收费8001
String dataSign = this.encrypt(RequestData, ApiKey, "UTF-8");
params.put("DataSign", this.urlEncoder(dataSign, "UTF-8"));
params.put("DataType", "2");
diff --git a/yshop-module-express/yshop-module-express-biz/src/main/java/co/yixiang/yshop/module/express/controller/app/express/AppExpressController.java b/yshop-module-express/yshop-module-express-biz/src/main/java/co/yixiang/yshop/module/express/controller/app/express/AppExpressController.java
new file mode 100644
index 0000000..01856bb
--- /dev/null
+++ b/yshop-module-express/yshop-module-express-biz/src/main/java/co/yixiang/yshop/module/express/controller/app/express/AppExpressController.java
@@ -0,0 +1,37 @@
+package co.yixiang.yshop.module.express.controller.app.express;
+
+import co.yixiang.yshop.framework.common.pojo.CommonResult;
+import co.yixiang.yshop.module.express.controller.admin.express.vo.ExpressRespVO;
+import co.yixiang.yshop.module.express.convert.express.ExpressConvert;
+import co.yixiang.yshop.module.express.dal.dataobject.express.ExpressDO;
+import co.yixiang.yshop.module.express.service.express.ExpressService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+import static co.yixiang.yshop.framework.common.pojo.CommonResult.success;
+
+
+@Slf4j
+@RestController
+@Tag(name = "用户 APP - 物流")
+@RequiredArgsConstructor(onConstructor = @__(@Autowired))
+@RequestMapping("/order/express")
+public class AppExpressController {
+
+ @Resource
+ private ExpressService expressService;
+
+ @GetMapping("/list")
+ @Operation(summary = "获得快递公司列表")
+ public CommonResult> getExpressList() {
+ List list = expressService.getExpressList();
+ return success(ExpressConvert.INSTANCE.convertList(list));
+ }
+}
diff --git a/yshop-module-express/yshop-module-express-biz/src/main/java/co/yixiang/yshop/module/express/controller/app/express/vo/ExpressBaseVO.java b/yshop-module-express/yshop-module-express-biz/src/main/java/co/yixiang/yshop/module/express/controller/app/express/vo/ExpressBaseVO.java
new file mode 100644
index 0000000..bb1307d
--- /dev/null
+++ b/yshop-module-express/yshop-module-express-biz/src/main/java/co/yixiang/yshop/module/express/controller/app/express/vo/ExpressBaseVO.java
@@ -0,0 +1,27 @@
+package co.yixiang.yshop.module.express.controller.app.express.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+* 快递公司 Base VO,提供给添加、修改、详细的子 VO 使用
+* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
+*/
+@Data
+public class ExpressBaseVO {
+
+ @Schema(description = "快递公司简称", required = true)
+ @NotNull(message = "快递公司简称不能为空")
+ private String code;
+
+ @Schema(description = "快递公司全称", required = true, example = "yshop")
+ @NotNull(message = "快递公司全称不能为空")
+ private String name;
+
+ @Schema(description = "排序", required = true)
+ @NotNull(message = "排序不能为空")
+ private Integer sort;
+
+}
diff --git a/yshop-module-express/yshop-module-express-biz/src/main/java/co/yixiang/yshop/module/express/controller/app/express/vo/ExpressRespVO.java b/yshop-module-express/yshop-module-express-biz/src/main/java/co/yixiang/yshop/module/express/controller/app/express/vo/ExpressRespVO.java
new file mode 100644
index 0000000..5fc317d
--- /dev/null
+++ b/yshop-module-express/yshop-module-express-biz/src/main/java/co/yixiang/yshop/module/express/controller/app/express/vo/ExpressRespVO.java
@@ -0,0 +1,22 @@
+package co.yixiang.yshop.module.express.controller.app.express.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 快递公司 Response VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class ExpressRespVO extends ExpressBaseVO {
+
+ @Schema(description = "快递公司id", required = true, example = "27172")
+ private Integer id;
+
+ @Schema(description = "添加时间")
+ private LocalDateTime createTime;
+
+}
diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/codegen/inner/CodegenBuilder.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/codegen/inner/CodegenBuilder.java
index 52cf0b2..8ee4225 100644
--- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/codegen/inner/CodegenBuilder.java
+++ b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/codegen/inner/CodegenBuilder.java
@@ -63,7 +63,7 @@ public class CodegenBuilder {
*/
public static final String TENANT_ID_FIELD = "tenantId";
/**
- * {@link co.yixiang.yshop.framework.mybatis.core.dataobject.BaseDO} 的字段
+ * {@link BaseDO} 的字段
*/
public static final Set BASE_DO_FIELDS = new HashSet<>();
/**
diff --git a/yshop-module-mall/yshop-module-cart-api/src/main/java/co/yixiang/yshop/module/cart/enums/CartTypeEnum.java b/yshop-module-mall/yshop-module-cart-api/src/main/java/co/yixiang/yshop/module/cart/enums/CartTypeEnum.java
index fbeeee5..7ad0cf8 100644
--- a/yshop-module-mall/yshop-module-cart-api/src/main/java/co/yixiang/yshop/module/cart/enums/CartTypeEnum.java
+++ b/yshop-module-mall/yshop-module-cart-api/src/main/java/co/yixiang/yshop/module/cart/enums/CartTypeEnum.java
@@ -1,18 +1,18 @@
-package co.yixiang.yshop.module.cart.enums;
-
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-/**
- * @author hupeng
- * 优惠券类型枚举
- */
-@Getter
-@AllArgsConstructor
-public enum CartTypeEnum {
- NEW_0(0,"加入购物车"),
- NEW_1(1,"加入购物车直接购买");
-
- private Integer value;
- private String desc;
-}
+package co.yixiang.yshop.module.cart.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @author hupeng
+ * 优惠券类型枚举
+ */
+@Getter
+@AllArgsConstructor
+public enum CartTypeEnum {
+ ADD_SHOPPING_CART(0,"加入购物车"),
+ DIRECT_PURCHASING(1,"加入购物车直接购买");
+
+ private Integer value;
+ private String desc;
+}
diff --git a/yshop-module-mall/yshop-module-cart-biz/src/main/java/co/yixiang/yshop/module/cart/controller/admin/storecart/vo/StoreCartBaseVO.java b/yshop-module-mall/yshop-module-cart-biz/src/main/java/co/yixiang/yshop/module/cart/controller/admin/storecart/vo/StoreCartBaseVO.java
index f88896a..2c1f502 100644
--- a/yshop-module-mall/yshop-module-cart-biz/src/main/java/co/yixiang/yshop/module/cart/controller/admin/storecart/vo/StoreCartBaseVO.java
+++ b/yshop-module-mall/yshop-module-cart-biz/src/main/java/co/yixiang/yshop/module/cart/controller/admin/storecart/vo/StoreCartBaseVO.java
@@ -16,7 +16,7 @@ public class StoreCartBaseVO {
@Schema(description = "用户ID", required = true, example = "10667")
@NotNull(message = "用户ID不能为空")
- private Long uid;
+ private Long userId;
@Schema(description = "类型", required = true, example = "1")
@NotNull(message = "类型不能为空")
diff --git a/yshop-module-mall/yshop-module-cart-biz/src/main/java/co/yixiang/yshop/module/cart/controller/admin/storecart/vo/StoreCartPageReqVO.java b/yshop-module-mall/yshop-module-cart-biz/src/main/java/co/yixiang/yshop/module/cart/controller/admin/storecart/vo/StoreCartPageReqVO.java
index 50d75f9..c2f9039 100644
--- a/yshop-module-mall/yshop-module-cart-biz/src/main/java/co/yixiang/yshop/module/cart/controller/admin/storecart/vo/StoreCartPageReqVO.java
+++ b/yshop-module-mall/yshop-module-cart-biz/src/main/java/co/yixiang/yshop/module/cart/controller/admin/storecart/vo/StoreCartPageReqVO.java
@@ -15,8 +15,8 @@ import static co.yixiang.yshop.framework.common.util.date.DateUtils.FORMAT_YEAR_
@ToString(callSuper = true)
public class StoreCartPageReqVO extends PageParam {
- @Schema(description = "用户ID", example = "10667")
- private Long uid;
+ @Schema(description = "用户昵称", example = "李四")
+ private String nickname;
@Schema(description = "类型", example = "1")
private String type;
@@ -24,29 +24,5 @@ public class StoreCartPageReqVO extends PageParam {
@Schema(description = "商品ID", example = "1696")
private Long productId;
- @Schema(description = "商品属性")
- private String productAttrUnique;
-
- @Schema(description = "商品数量")
- private Short cartNum;
-
- @Schema(description = "0 = 未购买 1 = 已购买")
- private Boolean isPay;
-
- @Schema(description = "是否为立即购买")
- private Boolean isNew;
-
- @Schema(description = "拼团id", example = "13847")
- private Integer combinationId;
-
- @Schema(description = "秒杀产品ID", example = "8790")
- private Integer seckillId;
-
- @Schema(description = "砍价id", example = "21581")
- private Integer bargainId;
-
- @Schema(description = "添加时间")
- @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
- private LocalDateTime[] createTime;
}
diff --git a/yshop-module-mall/yshop-module-cart-biz/src/main/java/co/yixiang/yshop/module/cart/controller/admin/storecart/vo/StoreCartRespVO.java b/yshop-module-mall/yshop-module-cart-biz/src/main/java/co/yixiang/yshop/module/cart/controller/admin/storecart/vo/StoreCartRespVO.java
index fc5f8b9..073f0b6 100644
--- a/yshop-module-mall/yshop-module-cart-biz/src/main/java/co/yixiang/yshop/module/cart/controller/admin/storecart/vo/StoreCartRespVO.java
+++ b/yshop-module-mall/yshop-module-cart-biz/src/main/java/co/yixiang/yshop/module/cart/controller/admin/storecart/vo/StoreCartRespVO.java
@@ -10,16 +10,16 @@ import java.time.LocalDateTime;
@ToString(callSuper = true)
public class StoreCartRespVO extends StoreCartBaseVO {
- @Schema(description = "购物车表ID", required = true, example = "11256")
+ @Schema(description = "购物车表ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "11256")
private Long id;
- @Schema(description = "添加时间", required = true)
+ @Schema(description = "添加时间", requiredMode = Schema.RequiredMode.REQUIRED)
private LocalDateTime createTime;
- @Schema(description = "商品名称", required = true)
- private String StoreName;
+ @Schema(description = "商品名称", requiredMode = Schema.RequiredMode.REQUIRED )
+ private String storeName;
- @Schema(description = "用户昵称", required = true)
+ @Schema(description = "用户昵称", requiredMode = Schema.RequiredMode.REQUIRED)
private String nickname;
}
diff --git a/yshop-module-mall/yshop-module-cart-biz/src/main/java/co/yixiang/yshop/module/cart/controller/app/cart/AppCartController.java b/yshop-module-mall/yshop-module-cart-biz/src/main/java/co/yixiang/yshop/module/cart/controller/app/cart/AppCartController.java
index 4355916..92903cb 100644
--- a/yshop-module-mall/yshop-module-cart-biz/src/main/java/co/yixiang/yshop/module/cart/controller/app/cart/AppCartController.java
+++ b/yshop-module-mall/yshop-module-cart-biz/src/main/java/co/yixiang/yshop/module/cart/controller/app/cart/AppCartController.java
@@ -10,11 +10,15 @@ package co.yixiang.yshop.module.cart.controller.app.cart;
import co.yixiang.yshop.framework.common.pojo.CommonResult;
import co.yixiang.yshop.framework.security.core.annotations.PreAuthenticated;
+import co.yixiang.yshop.module.cart.controller.app.cart.param.AppCartChangeSkuParam;
import co.yixiang.yshop.module.cart.controller.app.cart.param.AppCartIdsParm;
import co.yixiang.yshop.module.cart.controller.app.cart.param.AppCartNumParam;
import co.yixiang.yshop.module.cart.controller.app.cart.param.AppCartParam;
import co.yixiang.yshop.module.cart.service.storecart.AppStoreCartService;
+import co.yixiang.yshop.module.product.controller.app.couponrelation.vo.CartCouponVO;
+import co.yixiang.yshop.module.product.controller.app.couponrelation.vo.UserCouponVO;
import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -23,6 +27,7 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.LinkedHashMap;
+import java.util.List;
import java.util.Map;
import static co.yixiang.yshop.framework.common.pojo.CommonResult.success;
@@ -110,6 +115,24 @@ public class AppCartController {
return success(true);
}
+ /**
+ * 购物车更换sku
+ */
+ @PreAuthenticated
+ @PostMapping("/cart/changeSku")
+ @Operation(summary = "购物车更换产品规格")
+ public CommonResult changeSku(@Validated @RequestBody AppCartChangeSkuParam param){
+ Long uid = getLoginUserId();
+ appStoreCartService.changeSku(uid,param);
+ return success(true);
+ }
+
+ @GetMapping("/coupon")
+ @Operation(summary = "查询购物车可用优惠券")
+ @Parameter(name = "cartIds", description = "购物车id合集,用,隔开", required = true, example = "1,2")
+ public CommonResult> searchCartAvailableCoupon(@RequestParam String cartIds) {
+ return success(appStoreCartService.searchCartAvailableCoupon(cartIds));
+ }
diff --git a/yshop-module-mall/yshop-module-cart-biz/src/main/java/co/yixiang/yshop/module/cart/controller/app/cart/param/AppCartChangeSkuParam.java b/yshop-module-mall/yshop-module-cart-biz/src/main/java/co/yixiang/yshop/module/cart/controller/app/cart/param/AppCartChangeSkuParam.java
new file mode 100644
index 0000000..7c8688f
--- /dev/null
+++ b/yshop-module-mall/yshop-module-cart-biz/src/main/java/co/yixiang/yshop/module/cart/controller/app/cart/param/AppCartChangeSkuParam.java
@@ -0,0 +1,28 @@
+package co.yixiang.yshop.module.cart.controller.app.cart.param;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @ClassName CartIds
+ * @Author hupeng <610796224@qq.com>
+ * @Date 2023/6/17
+ **/
+@Data
+@Schema(description = "用户 APP - 购物车更换商品sku")
+public class AppCartChangeSkuParam {
+
+ @NotNull(message = "购物车信息id参数有误")
+ @Schema(description = "购物车ID", requiredMode = Schema.RequiredMode.REQUIRED)
+ Long id;
+
+ @NotNull(message = "购物车商品id参数有误")
+ @Schema(description = "商品ID", requiredMode = Schema.RequiredMode.REQUIRED)
+ Long productId;
+
+ @NotNull(message = "购物车商品规格unique参数有误")
+ @Schema(description = "商品sku规格unique", requiredMode = Schema.RequiredMode.REQUIRED)
+ String productAttrUnique;
+}
diff --git a/yshop-module-mall/yshop-module-cart-biz/src/main/java/co/yixiang/yshop/module/cart/controller/app/cart/param/AppCartIdsParm.java b/yshop-module-mall/yshop-module-cart-biz/src/main/java/co/yixiang/yshop/module/cart/controller/app/cart/param/AppCartIdsParm.java
index 2f2dd26..d55bfdb 100644
--- a/yshop-module-mall/yshop-module-cart-biz/src/main/java/co/yixiang/yshop/module/cart/controller/app/cart/param/AppCartIdsParm.java
+++ b/yshop-module-mall/yshop-module-cart-biz/src/main/java/co/yixiang/yshop/module/cart/controller/app/cart/param/AppCartIdsParm.java
@@ -1,21 +1,21 @@
-package co.yixiang.yshop.module.cart.controller.app.cart.param;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import javax.validation.constraints.NotNull;
-import java.util.List;
-
-/**
- * @ClassName CartIds
- * @Author hupeng <610796224@qq.com>
- * @Date 2023/6/17
- **/
-@Data
-@Schema(description = "用户 APP - 购物车CartIds参数")
-public class AppCartIdsParm {
-
- @NotNull(message = "参数有误")
- @Schema(description = "购物车ID,多个用,分隔开", required = true)
- List ids;
-}
+package co.yixiang.yshop.module.cart.controller.app.cart.param;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+ * @ClassName CartIds
+ * @Author hupeng <610796224@qq.com>
+ * @Date 2023/6/17
+ **/
+@Data
+@Schema(description = "用户 APP - 购物车CartIds参数")
+public class AppCartIdsParm {
+
+ @NotNull(message = "参数有误")
+ @Schema(description = "购物车ID,多个用,分隔开", required = true)
+ List ids;
+}
diff --git a/yshop-module-mall/yshop-module-cart-biz/src/main/java/co/yixiang/yshop/module/cart/controller/app/cart/param/AppCartNumParam.java b/yshop-module-mall/yshop-module-cart-biz/src/main/java/co/yixiang/yshop/module/cart/controller/app/cart/param/AppCartNumParam.java
index 002761f..6899849 100644
--- a/yshop-module-mall/yshop-module-cart-biz/src/main/java/co/yixiang/yshop/module/cart/controller/app/cart/param/AppCartNumParam.java
+++ b/yshop-module-mall/yshop-module-cart-biz/src/main/java/co/yixiang/yshop/module/cart/controller/app/cart/param/AppCartNumParam.java
@@ -1,30 +1,30 @@
-package co.yixiang.yshop.module.cart.controller.app.cart.param;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Getter;
-import lombok.Setter;
-
-import javax.validation.constraints.Max;
-import javax.validation.constraints.Min;
-import javax.validation.constraints.NotNull;
-
-/**
- * @ClassName 购物车数量CartNumParam
- * @Author hupeng <610796224@qq.com>
- * @Date 2023/6/17
- **/
-@Getter
-@Setter
-@Schema(description = "用户 APP - 购物车数量参数")
-public class AppCartNumParam {
-
- @Min(value = 1,message = "数量不在合法范围内")
- @Max(value = 9999,message = "数量不在合法范围内")
- @Schema(description = "购物车数量", required = true)
- private Integer number;
-
- @NotNull(message = "参数有误")
- @Schema(description = "购物车ID", required = true)
- private Long id;
-
-}
+package co.yixiang.yshop.module.cart.controller.app.cart.param;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotNull;
+
+/**
+ * @ClassName 购物车数量CartNumParam
+ * @Author hupeng <610796224@qq.com>
+ * @Date 2023/6/17
+ **/
+@Getter
+@Setter
+@Schema(description = "用户 APP - 购物车数量参数")
+public class AppCartNumParam {
+
+ @Min(value = 1,message = "数量不在合法范围内")
+ @Max(value = 9999,message = "数量不在合法范围内")
+ @Schema(description = "购物车数量", required = true)
+ private Integer number;
+
+ @NotNull(message = "参数有误")
+ @Schema(description = "购物车ID", required = true)
+ private Long id;
+
+}
diff --git a/yshop-module-mall/yshop-module-cart-biz/src/main/java/co/yixiang/yshop/module/cart/controller/app/cart/param/AppCartParam.java b/yshop-module-mall/yshop-module-cart-biz/src/main/java/co/yixiang/yshop/module/cart/controller/app/cart/param/AppCartParam.java
index 8fef3ca..5b65877 100644
--- a/yshop-module-mall/yshop-module-cart-biz/src/main/java/co/yixiang/yshop/module/cart/controller/app/cart/param/AppCartParam.java
+++ b/yshop-module-mall/yshop-module-cart-biz/src/main/java/co/yixiang/yshop/module/cart/controller/app/cart/param/AppCartParam.java
@@ -1,46 +1,46 @@
-package co.yixiang.yshop.module.cart.controller.app.cart.param;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Getter;
-import lombok.Setter;
-
-import javax.validation.constraints.Max;
-import javax.validation.constraints.Min;
-import javax.validation.constraints.NotNull;
-
-/**
- * @ClassName 添加购物车CartParam
- * @Author hupeng <610796224@qq.com>
- * @Date 2023/6/16
- **/
-@Getter
-@Setter
-@Schema(description = "用户 APP - 添加购物车参数")
-public class AppCartParam {
-
- @Min(value = 1,message = "数量不在合法范围内")
- @Max(value = 9999,message = "数量不在合法范围内")
- @Schema(description = "购物车数量", required = true)
- private Integer cartNum;
-
- @JsonProperty(value = "new")
- @Schema(description = "是否立即购买1-是 0-否表示加入购物车列表", required = true)
- private Integer isNew = 0;
-
- @NotNull(message = "参数有误")
- @Schema(description = "产品ID", required = true)
- private Long productId;
-
- @Schema(description = "商品属性sku的unique值", required = true)
- private String uniqueId;
-
- @Schema(description = "产品拼团ID", required = true)
- private Long combinationId = 0L;
-
- @Schema(description = "产品秒杀ID", required = true)
- private Long secKillId = 0L;
-
- @Schema(description = "产品砍价ID", required = true)
- private Long bargainId = 0L;
-}
+package co.yixiang.yshop.module.cart.controller.app.cart.param;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotNull;
+
+/**
+ * @ClassName 添加购物车CartParam
+ * @Author hupeng <610796224@qq.com>
+ * @Date 2023/6/16
+ **/
+@Getter
+@Setter
+@Schema(description = "用户 APP - 添加购物车参数")
+public class AppCartParam {
+
+ @Min(value = 1,message = "数量不在合法范围内")
+ @Max(value = 9999,message = "数量不在合法范围内")
+ @Schema(description = "购物车数量", required = true)
+ private Integer cartNum;
+
+ @JsonProperty(value = "new")
+ @Schema(description = "是否立即购买1-是 0-否表示加入购物车列表", required = true)
+ private Integer isNew = 0;
+
+ @NotNull(message = "参数有误")
+ @Schema(description = "产品ID", required = true)
+ private Long productId;
+
+ @Schema(description = "商品属性sku的unique值", required = true)
+ private String uniqueId;
+
+ @Schema(description = "产品拼团ID", required = true)
+ private Long combinationId = 0L;
+
+ @Schema(description = "产品秒杀ID", required = true)
+ private Long secKillId = 0L;
+
+ @Schema(description = "产品砍价ID", required = true)
+ private Long bargainId = 0L;
+}
diff --git a/yshop-module-mall/yshop-module-cart-biz/src/main/java/co/yixiang/yshop/module/cart/dal/mysql/storecart/StoreCartMapper.java b/yshop-module-mall/yshop-module-cart-biz/src/main/java/co/yixiang/yshop/module/cart/dal/mysql/storecart/StoreCartMapper.java
index 7b417fa..9c2f304 100644
--- a/yshop-module-mall/yshop-module-cart-biz/src/main/java/co/yixiang/yshop/module/cart/dal/mysql/storecart/StoreCartMapper.java
+++ b/yshop-module-mall/yshop-module-cart-biz/src/main/java/co/yixiang/yshop/module/cart/dal/mysql/storecart/StoreCartMapper.java
@@ -6,6 +6,7 @@ import co.yixiang.yshop.framework.common.pojo.PageResult;
import co.yixiang.yshop.framework.mybatis.core.query.LambdaQueryWrapperX;
import co.yixiang.yshop.framework.mybatis.core.mapper.BaseMapperX;
import co.yixiang.yshop.module.cart.dal.dataobject.storecart.StoreCartDO;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper;
import co.yixiang.yshop.module.cart.controller.admin.storecart.vo.*;
import org.apache.ibatis.annotations.Param;
@@ -21,24 +22,35 @@ public interface StoreCartMapper extends BaseMapperX {
default PageResult selectPage(StoreCartPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX()
- .eqIfPresent(StoreCartDO::getUid, reqVO.getUid())
.eqIfPresent(StoreCartDO::getType, reqVO.getType())
.eqIfPresent(StoreCartDO::getProductId, reqVO.getProductId())
- .eqIfPresent(StoreCartDO::getProductAttrUnique, reqVO.getProductAttrUnique())
- .eqIfPresent(StoreCartDO::getCartNum, reqVO.getCartNum())
- .eqIfPresent(StoreCartDO::getIsPay, reqVO.getIsPay())
- .eqIfPresent(StoreCartDO::getIsNew, reqVO.getIsNew())
- .eqIfPresent(StoreCartDO::getCombinationId, reqVO.getCombinationId())
- .eqIfPresent(StoreCartDO::getSeckillId, reqVO.getSeckillId())
- .eqIfPresent(StoreCartDO::getBargainId, reqVO.getBargainId())
- .betweenIfPresent(StoreCartDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(StoreCartDO::getId));
}
+ @Select("")
+ List pageList(Page page, @Param("nickname") String nickname);
- @Select("select IFNULL(sum(cart_num),0) from yshop_store_cart " +
- "where is_pay=0 and deleted=0 and is_new=0 and uid=#{uid}")
+ @Select("")
+ Long pageListCount( @Param("nickname") String nickname);
+
+ @Select("select IFNULL(sum(ysc.cart_num),0) from yshop_store_cart as ysc " +
+ "inner join yshop_store_product_attr_value as yspav on ysc.product_attr_unique = yspav.`unique` " +
+ "where ysc.is_pay = 0 and ysc.deleted = 0 and ysc.is_new = 0 and ysc.uid= #{uid} " +
+ "and yspav.stock > 0")
int cartSum(@Param("uid") Long uid);
}
diff --git a/yshop-module-mall/yshop-module-cart-biz/src/main/java/co/yixiang/yshop/module/cart/service/storecart/AppStoreCartService.java b/yshop-module-mall/yshop-module-cart-biz/src/main/java/co/yixiang/yshop/module/cart/service/storecart/AppStoreCartService.java
index ffc1f98..c35621d 100644
--- a/yshop-module-mall/yshop-module-cart-biz/src/main/java/co/yixiang/yshop/module/cart/service/storecart/AppStoreCartService.java
+++ b/yshop-module-mall/yshop-module-cart-biz/src/main/java/co/yixiang/yshop/module/cart/service/storecart/AppStoreCartService.java
@@ -1,6 +1,8 @@
package co.yixiang.yshop.module.cart.service.storecart;
+import co.yixiang.yshop.module.cart.controller.app.cart.param.AppCartChangeSkuParam;
import co.yixiang.yshop.module.cart.dal.dataobject.storecart.StoreCartDO;
+import co.yixiang.yshop.module.product.controller.app.couponrelation.vo.CartCouponVO;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
@@ -75,8 +77,22 @@ public interface AppStoreCartService extends IService {
/**
* 修改购物车支付状态
- * @param cartIds
+ * @param cartIds 购物车id列表
*/
void updateCartPayStatus(List cartIds);
+ /***
+ * 修改购物车商品sku
+ * @param uid 用户id
+ * @param param 修改参数
+ */
+ void changeSku(Long uid,AppCartChangeSkuParam param);
+
+ /**
+ * 查询购物车可用优惠券
+ *
+ * @param cartIds
+ * @return
+ */
+ List searchCartAvailableCoupon(String cartIds);
}
diff --git a/yshop-module-mall/yshop-module-cart-biz/src/main/java/co/yixiang/yshop/module/cart/service/storecart/AppStoreCartServiceImpl.java b/yshop-module-mall/yshop-module-cart-biz/src/main/java/co/yixiang/yshop/module/cart/service/storecart/AppStoreCartServiceImpl.java
index f7df3f8..8748e35 100644
--- a/yshop-module-mall/yshop-module-cart-biz/src/main/java/co/yixiang/yshop/module/cart/service/storecart/AppStoreCartServiceImpl.java
+++ b/yshop-module-mall/yshop-module-cart-biz/src/main/java/co/yixiang/yshop/module/cart/service/storecart/AppStoreCartServiceImpl.java
@@ -2,31 +2,30 @@ package co.yixiang.yshop.module.cart.service.storecart;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
+import co.yixiang.yshop.framework.common.constant.ShopConstants;
import co.yixiang.yshop.framework.common.enums.OrderInfoEnum;
import co.yixiang.yshop.framework.common.enums.ShopCommonEnum;
import co.yixiang.yshop.framework.common.exception.ErrorCode;
+import co.yixiang.yshop.module.cart.controller.app.cart.param.AppCartChangeSkuParam;
import co.yixiang.yshop.module.cart.convert.storecart.StoreCartConvert;
import co.yixiang.yshop.module.cart.dal.dataobject.storecart.StoreCartDO;
import co.yixiang.yshop.module.cart.dal.mysql.storecart.StoreCartMapper;
import co.yixiang.yshop.module.cart.enums.CartTypeEnum;
-import co.yixiang.yshop.module.product.api.product.ProductApi;
import co.yixiang.yshop.module.product.controller.app.cart.vo.AppStoreCartQueryVo;
+import co.yixiang.yshop.module.product.controller.app.couponrelation.vo.CartCouponVO;
import co.yixiang.yshop.module.product.controller.app.product.vo.AppStoreProductRespVo;
import co.yixiang.yshop.module.product.dal.dataobject.storeproduct.StoreProductDO;
import co.yixiang.yshop.module.product.dal.dataobject.storeproductattrvalue.StoreProductAttrValueDO;
-import co.yixiang.yshop.module.product.enums.product.ProductTypeEnum;
+import co.yixiang.yshop.module.product.service.productcouponrelation.AppCouponRelationService;
+import co.yixiang.yshop.module.product.service.productcouponrelation.dto.CartCouponDto;
import co.yixiang.yshop.module.product.service.storeproduct.AppStoreProductService;
import co.yixiang.yshop.module.product.service.storeproductattrvalue.StoreProductAttrValueService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
-import org.redisson.api.RLock;
-import org.redisson.api.RedissonClient;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Propagation;
-import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
@@ -35,6 +34,7 @@ import java.util.*;
import java.util.stream.Collectors;
import static co.yixiang.yshop.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static co.yixiang.yshop.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
import static co.yixiang.yshop.module.cart.enums.ErrorCodeConstants.STORE_STOCK_ERROR;
import static co.yixiang.yshop.module.product.enums.ErrorCodeConstants.STORE_PRODUCT_NOT_EXISTS;
import static co.yixiang.yshop.module.cart.enums.ErrorCodeConstants.STORE_CART_NOT_EXISTS;
@@ -47,17 +47,18 @@ import static co.yixiang.yshop.module.cart.enums.ErrorCodeConstants.STORE_CART_N
@Slf4j
@Service
@Validated
-public class AppStoreCartServiceImpl extends ServiceImpl implements AppStoreCartService {
+public class AppStoreCartServiceImpl extends ServiceImpl implements AppStoreCartService {
@Resource
private StoreCartMapper storeCartMapper;
@Resource
- private ProductApi productApi;
- @Resource
private AppStoreProductService appStoreProductService;
@Resource
private StoreProductAttrValueService storeProductAttrValueService;
+ @Resource
+ private AppCouponRelationService couponRelationService;
+
/**
* 返回当前用户购物车总数量
@@ -72,6 +73,7 @@ public class AppStoreCartServiceImpl extends ServiceImpl wrapper = new LambdaQueryWrapper<>();
wrapper.eq(StoreCartDO::getUid, uid)
- .eq(StoreCartDO::getIsPay, OrderInfoEnum.PAY_STATUS_0.getValue())
+ .eq(StoreCartDO::getIsPay, OrderInfoEnum.PAY_STATUS_UNPAID.getValue())
.eq(StoreCartDO::getProductId, productId)
.eq(StoreCartDO::getIsNew, isNew)
.eq(StoreCartDO::getProductAttrUnique, productAttrUnique)
@@ -101,6 +102,13 @@ public class AppStoreCartServiceImpl extends ServiceImpl getUserProductCartList(Long uid, String cartIds, Integer status) {
LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
wrapper.eq(StoreCartDO::getUid, uid)
- .eq(StoreCartDO::getIsPay, OrderInfoEnum.PAY_STATUS_0.getValue())
+ .eq(StoreCartDO::getIsPay, OrderInfoEnum.PAY_STATUS_UNPAID.getValue())
.orderByDesc(StoreCartDO::getId);
if (status == null) {
- wrapper.eq(StoreCartDO::getIsNew, CartTypeEnum.NEW_0.getValue());
+ wrapper.eq(StoreCartDO::getIsNew, CartTypeEnum.ADD_SHOPPING_CART.getValue());
}
if (StrUtil.isNotEmpty(cartIds)) {
wrapper.in(StoreCartDO::getId, Arrays.asList(cartIds.split(",")));
@@ -180,34 +185,36 @@ public class AppStoreCartServiceImpl extends ServiceImpllambdaQuery()
- .eq(StoreProductAttrValueDO::getUnique,storeCart.getProductAttrUnique()));
- if (ObjectUtil.isNull(productAttrValue) || productAttrValue.getStock() == 0) {
- storeCartQueryVo.setProductInfo(storeProduct);
- invalid.add(storeCartQueryVo);
- } else {
- storeProduct.setAttrInfo(productAttrValue);
- storeCartQueryVo.setProductInfo(storeProduct);
- //普通商品金额
- BigDecimal truePrice = storeProduct.getPrice();
- //设置拼团价格
- if(storeCart.getCombinationId() > 0 ){
- truePrice = productAttrValue.getPinkPrice();
- }
- //设置秒杀价格
- if( storeCart.getSeckillId() > 0){
- truePrice = productAttrValue.getSeckillPrice();
- }
- storeCartQueryVo.setTruePrice(truePrice);
- storeCartQueryVo.setTrueStock(productAttrValue.getStock());
- valid.add(storeCartQueryVo);
-
+ StoreProductAttrValueDO productAttrValue =
+ storeProductAttrValueService.getOne(Wrappers.lambdaQuery()
+ .eq(StoreProductAttrValueDO::getUnique, storeCart.getProductAttrUnique()));
+ if (ObjectUtil.isNull(productAttrValue) || productAttrValue.getStock() == 0) {
+ storeCartQueryVo.setProductInfo(storeProduct);
+ invalid.add(storeCartQueryVo);
+ } else {
+ storeProduct.setAttrInfo(productAttrValue);
+ storeCartQueryVo.setProductInfo(storeProduct);
+ // 普通商品金额
+ BigDecimal truePrice = productAttrValue.getPrice();
+ // 设置拼团价格
+ if (storeCart.getCombinationId() > 0) {
+ truePrice = productAttrValue.getPinkPrice();
}
+ // 设置秒杀价格
+ if (storeCart.getSeckillId() > 0) {
+ truePrice = productAttrValue.getSeckillPrice();
+ }
+ storeCartQueryVo.setTruePrice(truePrice);
+ storeCartQueryVo.setTrueStock(productAttrValue.getStock());
+ valid.add(storeCartQueryVo);
+
}
+ }
}
@@ -267,15 +274,16 @@ public class AppStoreCartServiceImpl extends ServiceImpl ids) {
- List newids = ids.stream().map(Long::new).collect(Collectors.toList());
+ List newIds = ids.stream().map(Long::new).collect(Collectors.toList());
storeCartMapper.delete(Wrappers.lambdaQuery()
.eq(StoreCartDO::getUid, uid)
- .in(StoreCartDO::getId, newids));
+ .in(StoreCartDO::getId, newIds));
}
/**
* 修改购物车支付状态
- * @param cartIds
+ *
+ * @param cartIds 购物车id列表
*/
@Async
@Override
@@ -283,11 +291,41 @@ public class AppStoreCartServiceImpl extends ServiceImpl cartIds) {
log.info("==========修改购物车支付状态start===========");
StoreCartDO cartObj = new StoreCartDO();
- cartObj.setIsPay(OrderInfoEnum.PAY_STATUS_1.getValue());
+ cartObj.setIsPay(OrderInfoEnum.PAY_STATUS_HAVE_PAID.getValue());
storeCartMapper.update(cartObj, Wrappers.lambdaQuery()
.in(StoreCartDO::getId, cartIds));
}
+ @Override
+ public void changeSku(Long uid, AppCartChangeSkuParam param) {
+ StoreCartDO cart = this.lambdaQuery()
+ .eq(StoreCartDO::getUid, uid)
+ .eq(StoreCartDO::getId, param.getId())
+ .one();
+ if (cart == null) {
+ throw exception(STORE_CART_NOT_EXISTS);
+ }
+ cart.setProductAttrUnique(param.getProductAttrUnique());
+ storeCartMapper.update(cart, Wrappers.lambdaQuery()
+ .eq(StoreCartDO::getId, param.getId()));
+ }
-
+ @Override
+ public List searchCartAvailableCoupon(String cartIds) {
+ Long uid = getLoginUserId();
+ Map cartGroup = getUserProductCartList(uid, cartIds, ShopConstants.YSHOP_ONE_NUM);
+ List cartInfo = (List) cartGroup.get("valid");
+ List cartCouponDtoList = new ArrayList<>();
+ Map> cartInfoMap =
+ cartInfo.stream().collect(Collectors.groupingBy(AppStoreCartQueryVo::getProductId));
+ for (List queryVos : cartInfoMap.values()) {
+ BigDecimal amount = BigDecimal.ZERO;
+ for (AppStoreCartQueryVo appStoreCartQueryVo : queryVos){
+ amount = amount.add(appStoreCartQueryVo.getTruePrice()
+ .multiply(BigDecimal.valueOf(appStoreCartQueryVo.getCartNum())));
+ }
+ cartCouponDtoList.add(CartCouponDto.builder().productId(queryVos.get(0).getProductId()).price(amount).build());
+ }
+ return couponRelationService.searchCartCoupon(cartCouponDtoList, null);
+ }
}
diff --git a/yshop-module-mall/yshop-module-cart-biz/src/main/java/co/yixiang/yshop/module/cart/service/storecart/StoreCartServiceImpl.java b/yshop-module-mall/yshop-module-cart-biz/src/main/java/co/yixiang/yshop/module/cart/service/storecart/StoreCartServiceImpl.java
index f4c01f9..749c7ae 100644
--- a/yshop-module-mall/yshop-module-cart-biz/src/main/java/co/yixiang/yshop/module/cart/service/storecart/StoreCartServiceImpl.java
+++ b/yshop-module-mall/yshop-module-cart-biz/src/main/java/co/yixiang/yshop/module/cart/service/storecart/StoreCartServiceImpl.java
@@ -1,24 +1,18 @@
package co.yixiang.yshop.module.cart.service.storecart;
-import co.yixiang.yshop.module.member.dal.dataobject.user.MemberUserDO;
-import co.yixiang.yshop.module.member.dal.mysql.user.MemberUserMapper;
-import co.yixiang.yshop.module.product.dal.dataobject.storeproduct.StoreProductDO;
-import co.yixiang.yshop.module.product.dal.mysql.storeproduct.StoreProductMapper;
+import co.yixiang.yshop.framework.common.pojo.PageResult;
+import co.yixiang.yshop.module.cart.controller.admin.storecart.vo.StoreCartPageReqVO;
+import co.yixiang.yshop.module.cart.controller.admin.storecart.vo.StoreCartRespVO;
+import co.yixiang.yshop.module.cart.dal.mysql.storecart.StoreCartMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.stereotype.Service;
-import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
-import java.lang.reflect.Member;
-import java.util.*;
-import co.yixiang.yshop.module.cart.controller.admin.storecart.vo.*;
-import co.yixiang.yshop.module.cart.dal.dataobject.storecart.StoreCartDO;
-import co.yixiang.yshop.framework.common.pojo.PageResult;
-
-import co.yixiang.yshop.module.cart.convert.storecart.StoreCartConvert;
-import co.yixiang.yshop.module.cart.dal.mysql.storecart.StoreCartMapper;
+import javax.annotation.Resource;
+import java.util.List;
import static co.yixiang.yshop.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static co.yixiang.yshop.module.cart.enums.ErrorCodeConstants.*;
+import static co.yixiang.yshop.module.cart.enums.ErrorCodeConstants.STORE_CART_NOT_EXISTS;
/**
* 购物车 Service 实现类
@@ -31,10 +25,6 @@ public class StoreCartServiceImpl implements StoreCartService {
@Resource
private StoreCartMapper storeCartMapper;
- @Resource
- private StoreProductMapper storeProductMapper;
- @Resource
- private MemberUserMapper memberUserMapper;
@Override
@@ -54,17 +44,10 @@ public class StoreCartServiceImpl implements StoreCartService {
@Override
public PageResult getStoreCartPage(StoreCartPageReqVO pageReqVO) {
- PageResult pageResult = storeCartMapper.selectPage(pageReqVO);
- PageResult storeCartRespVO = StoreCartConvert.INSTANCE.convertPage(pageResult);
- for (StoreCartRespVO storeCartRespVO1 : storeCartRespVO.getList()) {
- StoreProductDO storeProductDO = storeProductMapper.selectById(storeCartRespVO1.getProductId());
- MemberUserDO memberUserDO = memberUserMapper.selectById(storeCartRespVO1.getUid());
- storeCartRespVO1.setNickname(memberUserDO.getNickname());
- storeCartRespVO1.setStoreName(storeProductDO.getStoreName());
- }
- return storeCartRespVO;
+ List list = storeCartMapper.pageList(new Page<>(pageReqVO.getPageNo(),pageReqVO.getPageSize()),
+ pageReqVO.getNickname());
+
+ return new PageResult<>(list, storeCartMapper.pageListCount(pageReqVO.getNickname()));
}
-
-
}
diff --git a/yshop-module-mall/yshop-module-order-api/src/main/java/co/yixiang/yshop/module/order/enums/AdminAfterOrderStatusEnum.java b/yshop-module-mall/yshop-module-order-api/src/main/java/co/yixiang/yshop/module/order/enums/AdminAfterOrderStatusEnum.java
index 97cb59f..bef7adc 100644
--- a/yshop-module-mall/yshop-module-order-api/src/main/java/co/yixiang/yshop/module/order/enums/AdminAfterOrderStatusEnum.java
+++ b/yshop-module-mall/yshop-module-order-api/src/main/java/co/yixiang/yshop/module/order/enums/AdminAfterOrderStatusEnum.java
@@ -18,8 +18,8 @@ import java.util.stream.Stream;
@AllArgsConstructor
public enum AdminAfterOrderStatusEnum {
- STATUS_1(1,"售后中"),
- STATUS_2(2,"已完成");
+ AFTER_SALES(1,"售后中"),
+ COMPLETED(2,"已完成");
diff --git a/yshop-module-mall/yshop-module-order-api/src/main/java/co/yixiang/yshop/module/order/enums/AfterChangeTypeEnum.java b/yshop-module-mall/yshop-module-order-api/src/main/java/co/yixiang/yshop/module/order/enums/AfterChangeTypeEnum.java
index cfd6f0a..0841811 100644
--- a/yshop-module-mall/yshop-module-order-api/src/main/java/co/yixiang/yshop/module/order/enums/AfterChangeTypeEnum.java
+++ b/yshop-module-mall/yshop-module-order-api/src/main/java/co/yixiang/yshop/module/order/enums/AfterChangeTypeEnum.java
@@ -1,23 +1,23 @@
-package co.yixiang.yshop.module.order.enums;
-
-
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-/**
- * @author hupeng
- * 售后状态枚举
- */
-@Getter
-@AllArgsConstructor
-public enum AfterChangeTypeEnum {
- STATE_0(0,"售后订单生成"),
- STATE_1(1,"后台审核成功"),
- STATE_2(2,"用户发货"),
- STATE_3(3,"打款"),
- STATE_4(4,"审核失败"),
- STATE_5(5,"用户撤销");
-
- private Integer value;
- private String desc;
-}
+package co.yixiang.yshop.module.order.enums;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @author hupeng
+ * 售后状态枚举
+ */
+@Getter
+@AllArgsConstructor
+public enum AfterChangeTypeEnum {
+ CREATE_AFTER_SALES(0,"售后订单生成"),
+ AUDIT_SUCCESS(1,"后台审核成功"),
+ USER_SHIPMENT(2,"用户发货"),
+ PAYMENT(3,"打款"),
+ AUDIT_FAILED(4,"审核失败"),
+ USER_REVOCATION(5,"用户撤销");
+
+ private Integer value;
+ private String desc;
+}
diff --git a/yshop-module-mall/yshop-module-order-api/src/main/java/co/yixiang/yshop/module/order/enums/AfterSalesStatusEnum.java b/yshop-module-mall/yshop-module-order-api/src/main/java/co/yixiang/yshop/module/order/enums/AfterSalesStatusEnum.java
index 8b24aa0..bb4fc6b 100644
--- a/yshop-module-mall/yshop-module-order-api/src/main/java/co/yixiang/yshop/module/order/enums/AfterSalesStatusEnum.java
+++ b/yshop-module-mall/yshop-module-order-api/src/main/java/co/yixiang/yshop/module/order/enums/AfterSalesStatusEnum.java
@@ -20,10 +20,12 @@ import java.util.stream.Stream;
@AllArgsConstructor
public enum AfterSalesStatusEnum {
- STATUS_0(0,"已提交等待平台审核"),
- STATUS_1(1,"平台已审核,等待用户发货/退款"),
- STATUS_2(2,"用户已发货"),
- STATUS_3(3,"已完成");
+ PENDING_REVIEW(0,"已提交等待平台审核"),
+ AUDITED(1,"平台已审核,等待用户发货/退款"),
+ USER_SHIPPED(2,"用户已发货"),
+ REFUND_SUCCESS(3,"用户退款成功"),
+ USER_CANCELLED(4,"用户取消"),
+ MERCHANT_REJECTION(5,"商家拒绝");
private Integer value;
private String desc;
diff --git a/yshop-module-mall/yshop-module-order-api/src/main/java/co/yixiang/yshop/module/order/enums/AfterStatusEnum.java b/yshop-module-mall/yshop-module-order-api/src/main/java/co/yixiang/yshop/module/order/enums/AfterStatusEnum.java
index 2db5724..2a07d81 100644
--- a/yshop-module-mall/yshop-module-order-api/src/main/java/co/yixiang/yshop/module/order/enums/AfterStatusEnum.java
+++ b/yshop-module-mall/yshop-module-order-api/src/main/java/co/yixiang/yshop/module/order/enums/AfterStatusEnum.java
@@ -1,20 +1,20 @@
-package co.yixiang.yshop.module.order.enums;
-
-
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-/**
- * @author hupeng
- * 售后状态枚举
- */
-@Getter
-@AllArgsConstructor
-public enum AfterStatusEnum {
- STATE_0(0,"正常"),
- STATE_1(1,"用户取消"),
- STATE_2(2,"商家拒绝");
-
- private Integer value;
- private String desc;
-}
+package co.yixiang.yshop.module.order.enums;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @author hupeng
+ * 售后状态枚举
+ */
+@Getter
+@AllArgsConstructor
+public enum AfterStatusEnum {
+ STATE_0(0,"正常"),
+ STATE_1(1,"用户取消"),
+ STATE_2(2,"商家拒绝");
+
+ private Integer value;
+ private String desc;
+}
diff --git a/yshop-module-mall/yshop-module-order-api/src/main/java/co/yixiang/yshop/module/order/enums/AfterTypeEnum.java b/yshop-module-mall/yshop-module-order-api/src/main/java/co/yixiang/yshop/module/order/enums/AfterTypeEnum.java
index e95ef82..42c96d9 100644
--- a/yshop-module-mall/yshop-module-order-api/src/main/java/co/yixiang/yshop/module/order/enums/AfterTypeEnum.java
+++ b/yshop-module-mall/yshop-module-order-api/src/main/java/co/yixiang/yshop/module/order/enums/AfterTypeEnum.java
@@ -1,21 +1,21 @@
-package co.yixiang.yshop.module.order.enums;
-
-
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-/**
- * @author hupeng
- * 售后类型枚举
- */
-@Getter
-@AllArgsConstructor
-public enum AfterTypeEnum {
- TYPE_1(1,"同意"),
- TYPE_2(2,"拒绝"),
- SERVICE_TYPE_0(0,"仅退款"),
- SERVICE_TYPE_1(1,"退货退款");
-
- private Integer value;
- private String desc;
-}
+package co.yixiang.yshop.module.order.enums;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @author hupeng
+ * 售后类型枚举
+ */
+@Getter
+@AllArgsConstructor
+public enum AfterTypeEnum {
+ AGREE(1,"同意"),
+ REFUSE(2,"拒绝"),
+ REFUND_ONLY(0,"仅退款"),
+ RETURNS_REFUNDS(1,"退货退款");
+
+ private Integer value;
+ private String desc;
+}
diff --git a/yshop-module-mall/yshop-module-order-api/src/main/java/co/yixiang/yshop/module/order/enums/ErrorCodeConstants.java b/yshop-module-mall/yshop-module-order-api/src/main/java/co/yixiang/yshop/module/order/enums/ErrorCodeConstants.java
index e2904f4..0e41594 100644
--- a/yshop-module-mall/yshop-module-order-api/src/main/java/co/yixiang/yshop/module/order/enums/ErrorCodeConstants.java
+++ b/yshop-module-mall/yshop-module-order-api/src/main/java/co/yixiang/yshop/module/order/enums/ErrorCodeConstants.java
@@ -27,11 +27,17 @@ public interface ErrorCodeConstants {
ErrorCode ORDER_NOT_REVOKE = new ErrorCode(1008007016, "订单不能撤销");
ErrorCode ORDER_NOT_CANCEL = new ErrorCode(1008007018, "订单不能取消");
ErrorCode ORDER_ADDRESS_REQUERED = new ErrorCode(1008007019, "请输入商家收货人信息");
+
+ ErrorCode ORDER_PAYINFO_ERROR = new ErrorCode(1008007020, "获取订单支付信息异常");
// ========== 订单电子面单记录 ==========
ErrorCode STORE_ORDER_ELECTRONICS_NOT_EXISTS = new ErrorCode(1008010000, "订单电子面单记录不存在");
+ // ==============支付 ======
+ ErrorCode STORE_ORDER_PAY_FEE_ERROR = new ErrorCode(1008011000, "订单金额与支付不一致!");
+ ErrorCode STORE_ORDER_REFUND_TRANSACTION_NULL_ERROR = new ErrorCode(1008011001, "订单支付信息有误!退款失败!");
+ ErrorCode STORE_ORDER_REFUND_ERROR = new ErrorCode(1008011002, "退款失败!");
}
diff --git a/yshop-module-mall/yshop-module-order-api/src/main/java/co/yixiang/yshop/module/order/enums/OrderLogEnum.java b/yshop-module-mall/yshop-module-order-api/src/main/java/co/yixiang/yshop/module/order/enums/OrderLogEnum.java
index 5ae53cd..519f6e2 100644
--- a/yshop-module-mall/yshop-module-order-api/src/main/java/co/yixiang/yshop/module/order/enums/OrderLogEnum.java
+++ b/yshop-module-mall/yshop-module-order-api/src/main/java/co/yixiang/yshop/module/order/enums/OrderLogEnum.java
@@ -28,7 +28,8 @@ public enum OrderLogEnum {
NONE_ORDER("NONE","订单OK"),
DELIVERY_GOODS("delivery_goods", "订单发货"),
OFFLINE_PAY("offline_pay", "线下支付"),
- EXTEND_ORDER("EXTEND_ORDER","订单已生成");
+ EXTEND_ORDER("EXTEND_ORDER","订单已生成"),
+ APPLY_AFTER_SALES("apply_after_sales","用户申请售后");
private String value;
diff --git a/yshop-module-mall/yshop-module-order-api/src/main/java/co/yixiang/yshop/module/order/enums/OrderStatusEnum.java b/yshop-module-mall/yshop-module-order-api/src/main/java/co/yixiang/yshop/module/order/enums/OrderStatusEnum.java
index 9a406eb..a90f1d7 100644
--- a/yshop-module-mall/yshop-module-order-api/src/main/java/co/yixiang/yshop/module/order/enums/OrderStatusEnum.java
+++ b/yshop-module-mall/yshop-module-order-api/src/main/java/co/yixiang/yshop/module/order/enums/OrderStatusEnum.java
@@ -18,15 +18,15 @@ import java.util.stream.Stream;
@AllArgsConstructor
public enum OrderStatusEnum {
- STATUS__1(-1,"全部订单"),
- STATUS_0(0,"未支付"),
- STATUS_1(1,"待发货"),
- STATUS_2(2,"待收货"),
- STATUS_3(3,"待评价"),
- STATUS_4(4,"已完成"),
- STATUS_MINUS_1(-1,"退款中"),
- STATUS_MINUS_2(-2,"已退款"),
- STATUS_MINUS_3(-3,"退款");
+ STATUS_ALL(-1,"全部订单"),
+ STATUS_WAIT_PAY(0,"未支付"),
+ STATUS_WAIT_SEND(1,"待发货"),
+ STATUS_WAIT_RECEIVED(2,"待收货"),
+ STATUS_WAIT_EVALUATE(3,"待评价"),
+ STATUS_FINISH(4,"已完成"),
+ STATUS_MINUS_BEING_REFUND(-1,"退款中"),
+ STATUS_MINUS_REFUNDED(-2,"已退款"),
+ STATUS_MINUS_REFUND(-3,"退款");
diff --git a/yshop-module-mall/yshop-module-order-api/src/main/java/co/yixiang/yshop/module/order/enums/PayTypeEnum.java b/yshop-module-mall/yshop-module-order-api/src/main/java/co/yixiang/yshop/module/order/enums/PayTypeEnum.java
index d68f4aa..b524d79 100644
--- a/yshop-module-mall/yshop-module-order-api/src/main/java/co/yixiang/yshop/module/order/enums/PayTypeEnum.java
+++ b/yshop-module-mall/yshop-module-order-api/src/main/java/co/yixiang/yshop/module/order/enums/PayTypeEnum.java
@@ -20,6 +20,9 @@ public enum PayTypeEnum {
ALI("alipay","支付宝支付"),
WEIXIN("weixin","微信支付"),
+ WEIXIN_H5("weixin_h5","微信H5支付"),
+ WEIXIN_APPLET("weixin_applet","微信小程序支付"),
+ WEIXIN_APP("weixin_app","微信app支付"),
YUE("yue","余额支付"),
INTEGRAL("integral","积分兑换");
diff --git a/yshop-module-mall/yshop-module-order-api/src/main/java/co/yixiang/yshop/module/order/enums/ShippingTempEnum.java b/yshop-module-mall/yshop-module-order-api/src/main/java/co/yixiang/yshop/module/order/enums/ShippingTempEnum.java
index a4b7928..1a3a210 100644
--- a/yshop-module-mall/yshop-module-order-api/src/main/java/co/yixiang/yshop/module/order/enums/ShippingTempEnum.java
+++ b/yshop-module-mall/yshop-module-order-api/src/main/java/co/yixiang/yshop/module/order/enums/ShippingTempEnum.java
@@ -1,20 +1,20 @@
-package co.yixiang.yshop.module.order.enums;
-
-
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-/**
- * @author hupeng
- * 运费模板类型枚举
- */
-@Getter
-@AllArgsConstructor
-public enum ShippingTempEnum {
- TYPE_1(1,"按件数"),
- TYPE_2(2,"按重量"),
- TYPE_3(3,"按体积");
-
- private Integer value;
- private String desc;
-}
+package co.yixiang.yshop.module.order.enums;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @author hupeng
+ * 运费模板类型枚举
+ */
+@Getter
+@AllArgsConstructor
+public enum ShippingTempEnum {
+ BY_PIECE(1,"按件数"),
+ BY_WEIGHT(2,"按重量"),
+ BY_VOLUME(3,"按体积");
+
+ private Integer value;
+ private String desc;
+}
diff --git a/yshop-module-mall/yshop-module-order-api/src/main/java/co/yixiang/yshop/module/order/enums/WxOrderResultEnum.java b/yshop-module-mall/yshop-module-order-api/src/main/java/co/yixiang/yshop/module/order/enums/WxOrderResultEnum.java
new file mode 100644
index 0000000..a02e5a0
--- /dev/null
+++ b/yshop-module-mall/yshop-module-order-api/src/main/java/co/yixiang/yshop/module/order/enums/WxOrderResultEnum.java
@@ -0,0 +1,45 @@
+/**
+ * Copyright (C) 2018-2022
+ * All rights reserved, Designed By www.yixiang.co
+
+ */
+package co.yixiang.yshop.module.order.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+import java.util.Objects;
+import java.util.stream.Stream;
+
+/**
+ * @author hupeng
+ * 订单相关枚举
+ */
+@Getter
+@AllArgsConstructor
+public enum WxOrderResultEnum {
+
+ NOT_PAY("NOTPAY","未支付"),
+ TRANSACTION_ID("transaction_id","微信支付订单id"),
+ OUT_TRADE_NO("out_trade_no","商家订单号"),
+ OUT_REFUND_NO("out_refund_no","商家退款单号"),
+ TRADE_STATE("trade_state","订单交易装态"),
+ REFUND_ID("refund_id","微信退款单id");
+
+
+
+
+
+
+ private String value;
+ private String desc;
+
+ public static WxOrderResultEnum toType(String value) {
+ return Stream.of(WxOrderResultEnum.values())
+ .filter(p -> Objects.equals(p.value, value))
+ .findAny()
+ .orElse(null);
+ }
+
+
+}
diff --git a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/admin/storeaftersales/StoreAfterSalesController.java b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/admin/storeaftersales/StoreAfterSalesController.java
index f45f618..4a34520 100644
--- a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/admin/storeaftersales/StoreAfterSalesController.java
+++ b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/admin/storeaftersales/StoreAfterSalesController.java
@@ -33,7 +33,7 @@ public class StoreAfterSalesController {
@PutMapping("/update")
@Operation(summary = "更新售后记录")
@PreAuthorize("@ss.hasPermission('order:store-after-sales:update')")
- public CommonResult updateStoreAfterSales(@Valid @RequestBody StoreAfterSalesUpdateReqVO updateReqVO) {
+ public CommonResult updateStoreAfterSales(@Valid @RequestBody StoreAfterSalesUpdateReqVO updateReqVO) throws Exception {
storeAfterSalesService.updateStoreAfterSales(updateReqVO);
return success(true);
}
@@ -43,7 +43,7 @@ public class StoreAfterSalesController {
@Operation(summary = "立即退款")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('order:store-after-sales:delete')")
- public CommonResult deleteStoreAfterSales(@RequestParam("id") Long id) {
+ public CommonResult deleteStoreAfterSales(@RequestParam("id") Long id) throws Exception{
storeAfterSalesService.payStoreAfterSales(id);
return success(true);
}
diff --git a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/admin/storeaftersales/vo/StoreAfterSalesBaseVO.java b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/admin/storeaftersales/vo/StoreAfterSalesBaseVO.java
index a8d112c..c536ab7 100644
--- a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/admin/storeaftersales/vo/StoreAfterSalesBaseVO.java
+++ b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/admin/storeaftersales/vo/StoreAfterSalesBaseVO.java
@@ -60,4 +60,7 @@ public class StoreAfterSalesBaseVO {
@Schema(description = "商家地址")
private String address;
+ @Schema(description = "收货状态:0、未收到,1、已收到", required = true, example = "0")
+ private Integer receivingStatus;
+
}
diff --git a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/admin/storeaftersales/vo/StoreAfterSalesRespVO.java b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/admin/storeaftersales/vo/StoreAfterSalesRespVO.java
index a9de74a..abf9357 100644
--- a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/admin/storeaftersales/vo/StoreAfterSalesRespVO.java
+++ b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/admin/storeaftersales/vo/StoreAfterSalesRespVO.java
@@ -26,4 +26,7 @@ public class StoreAfterSalesRespVO extends StoreAfterSalesBaseVO {
@Schema(description = "商品信息", required = true)
private List storeOrderCartInfoDOList;
+ @Schema(description = "退货凭证", required = true)
+ private String returnVoucher;
+
}
diff --git a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/admin/storeorder/vo/ShoperOrderTimeDataVo.java b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/admin/storeorder/vo/ShoperOrderTimeDataVo.java
index 4d64262..81ddf1f 100644
--- a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/admin/storeorder/vo/ShoperOrderTimeDataVo.java
+++ b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/admin/storeorder/vo/ShoperOrderTimeDataVo.java
@@ -1,38 +1,38 @@
-package co.yixiang.yshop.module.order.controller.admin.storeorder.vo;
-
-import lombok.Data;
-
-import java.io.Serializable;
-
-/**
- * @ClassName OrderTimeDataDTO
- * @Author hupeng <610796224@qq.com>
- * @Date 2023/7/26
- **/
-@Data
-public class ShoperOrderTimeDataVo implements Serializable {
-
- /**今日成交额*/
- private Double todayPrice;
-
- /**今日订单数*/
- private Long todayCount;
-
- /**昨日成交额*/
- private Double proPrice;
-
- /**昨日订单数*/
- private Long proCount;
-
- /**本月成交额*/
- private Double monthPrice;
-
- /**本月订单数*/
- private Long monthCount;
-
- /**上周订单数*/
- private Long lastWeekCount;
-
- /**上周成交额*/
- private Double lastWeekPrice;
-}
+package co.yixiang.yshop.module.order.controller.admin.storeorder.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @ClassName OrderTimeDataDTO
+ * @Author hupeng <610796224@qq.com>
+ * @Date 2023/7/26
+ **/
+@Data
+public class ShoperOrderTimeDataVo implements Serializable {
+
+ /**今日成交额*/
+ private Double todayPrice;
+
+ /**今日订单数*/
+ private Long todayCount;
+
+ /**昨日成交额*/
+ private Double proPrice;
+
+ /**昨日订单数*/
+ private Long proCount;
+
+ /**本月成交额*/
+ private Double monthPrice;
+
+ /**本月订单数*/
+ private Long monthCount;
+
+ /**上周订单数*/
+ private Long lastWeekCount;
+
+ /**上周成交额*/
+ private Double lastWeekPrice;
+}
diff --git a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/admin/storeorder/vo/StoreOrderBaseVO.java b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/admin/storeorder/vo/StoreOrderBaseVO.java
index fd28ce8..9c7a3d8 100644
--- a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/admin/storeorder/vo/StoreOrderBaseVO.java
+++ b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/admin/storeorder/vo/StoreOrderBaseVO.java
@@ -76,7 +76,7 @@ public class StoreOrderBaseVO {
@Schema(description = "优惠券id", required = true, example = "3299")
@NotNull(message = "优惠券id不能为空")
- private Integer couponId;
+ private Long couponId;
@Schema(description = "优惠券金额", required = true, example = "22157")
@NotNull(message = "优惠券金额不能为空")
diff --git a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/admin/storeorder/vo/StoreOrderExcelVO.java b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/admin/storeorder/vo/StoreOrderExcelVO.java
index 1cf5572..c4cdd03 100644
--- a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/admin/storeorder/vo/StoreOrderExcelVO.java
+++ b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/admin/storeorder/vo/StoreOrderExcelVO.java
@@ -77,7 +77,7 @@ public class StoreOrderExcelVO {
private BigDecimal deductionPrice;
@ExcelProperty("优惠券id")
- private Integer couponId;
+ private Long couponId;
@ExcelProperty("优惠券金额")
private BigDecimal couponPrice;
diff --git a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/admin/storeorder/vo/StoreOrderExportReqVO.java b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/admin/storeorder/vo/StoreOrderExportReqVO.java
index c37b377..348efa6 100644
--- a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/admin/storeorder/vo/StoreOrderExportReqVO.java
+++ b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/admin/storeorder/vo/StoreOrderExportReqVO.java
@@ -58,7 +58,7 @@ public class StoreOrderExportReqVO {
private BigDecimal deductionPrice;
@Schema(description = "优惠券id", example = "3299")
- private Integer couponId;
+ private Long couponId;
@Schema(description = "优惠券金额", example = "22157")
private BigDecimal couponPrice;
diff --git a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/app/afterorder/AppOrderAfterSalesController.java b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/app/afterorder/AppOrderAfterSalesController.java
index 8e2cfaa..c04646a 100644
--- a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/app/afterorder/AppOrderAfterSalesController.java
+++ b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/app/afterorder/AppOrderAfterSalesController.java
@@ -2,8 +2,10 @@ package co.yixiang.yshop.module.order.controller.app.afterorder;
import co.yixiang.yshop.framework.common.pojo.CommonResult;
import co.yixiang.yshop.framework.security.core.annotations.PreAuthenticated;
+import co.yixiang.yshop.module.order.controller.app.afterorder.param.AppReturnLogisticsParam;
import co.yixiang.yshop.module.order.controller.app.afterorder.param.AppStoreAfterSalesParam;
import co.yixiang.yshop.module.order.controller.app.afterorder.vo.AppStoreAfterSalesVo;
+import co.yixiang.yshop.module.order.controller.app.afterorder.vo.AppStoreOrderAfterSalesDetailVo;
import co.yixiang.yshop.module.order.controller.app.afterorder.vo.AppStoreOrderCartInfoVo;
import co.yixiang.yshop.module.order.service.storeaftersales.AppStoreAfterSalesService;
import io.swagger.v3.oas.annotations.Operation;
@@ -36,20 +38,27 @@ public class AppOrderAfterSalesController {
@PreAuthenticated
@PostMapping("/applyForAfterSales")
@Operation(summary = "申请售后")
- public CommonResult applyForAfterSales(@Valid @RequestBody AppStoreAfterSalesParam storeAfterSalesParam) {
+ public CommonResult applyForAfterSales(@Valid @RequestBody AppStoreAfterSalesParam storeAfterSalesParam) {
Long uid = getLoginUserId();
- appStoreAfterSalesService.applyForAfterSales(uid, storeAfterSalesParam);
- return success(true);
+ return success(appStoreAfterSalesService.applyForAfterSales(uid, storeAfterSalesParam));
}
@PreAuthenticated
@GetMapping("/applyForAfterSales/{key}")
@Operation(summary = "查询订单详情")
- @Parameter(name = "key", description = "唯一的uni值或者订单号", required = true, example = "10 ")
+ @Parameter(name = "key", description = "唯一的uni值或者订单号", required = true, example = "10")
public CommonResult> checkOrderDetails(@PathVariable String key) {
return success(appStoreAfterSalesService.checkOrderDetails(key));
}
+ @PreAuthenticated
+ @GetMapping("/checkForAfterSales/{key}")
+ @Operation(summary = "查询售后订单详情")
+ @Parameter(name = "key", description = "唯一的uni值或者售后单号", required = true, example = "10")
+ public CommonResult checkAfterSalesDetails(@PathVariable String key) {
+ return success(appStoreAfterSalesService.checkAfterSalesDetails(key));
+ }
+
@PreAuthenticated
@GetMapping("/storeAfterSales/list")
@@ -60,7 +69,7 @@ public class AppOrderAfterSalesController {
@Parameter(name = "page", description = "页码,默认为1",
required = true, example = "1"),
@Parameter(name = "limit", description = "页大小,默认为10",
- required = true, example = "10 ")
+ required = true, example = "10")
})
public CommonResult> salesList(@RequestParam(value = "type", defaultValue = "0") int type,
@RequestParam(value = "page", defaultValue = "1") int page,
@@ -106,18 +115,9 @@ public class AppOrderAfterSalesController {
@PreAuthenticated
@PostMapping("/addLogisticsInformation")
- @Parameters({
- @Parameter(name = "code", description = "快递公司编码", required = true),
- @Parameter(name = "name", description = "快递公司名称", required = true),
- @Parameter(name = "postalCode", description = "快递编号", required = true),
- @Parameter(name = "orderCode", description = "订单编号", required = true),
- @Parameter(name = "id", description = "售后订单id", required = true, example = "1")
- })
@Operation(summary = "添加物流信息")
- public CommonResult addLogisticsInformation(@RequestParam String code, @RequestParam String name,
- @RequestParam String postalCode, @RequestParam String orderCode,
- @RequestParam Long id) {
- Boolean result = appStoreAfterSalesService.addLogisticsInformation(code, name, postalCode, orderCode, id);
+ public CommonResult addLogisticsInformation(@RequestBody AppReturnLogisticsParam param) {
+ Boolean result = appStoreAfterSalesService.addLogisticsInformation(param);
return success(result);
}
diff --git a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/app/afterorder/param/AppReturnLogisticsParam.java b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/app/afterorder/param/AppReturnLogisticsParam.java
new file mode 100644
index 0000000..17f1429
--- /dev/null
+++ b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/app/afterorder/param/AppReturnLogisticsParam.java
@@ -0,0 +1,57 @@
+package co.yixiang.yshop.module.order.controller.app.afterorder.param;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+ * 退款物流参数
+ *
+ * @author moxiangrong
+ */
+@Data
+public class AppReturnLogisticsParam {
+
+ /**
+ * 快递公司编码
+ */
+ @NotBlank(message="快递公司编码不能为空")
+ private String code;
+
+ /**
+ * 快递公司名称
+ */
+ @NotBlank(message="快递公司名称不能为空")
+ private String name;
+
+ /**
+ * 快递编号
+ */
+ @NotBlank(message="快递编号不能为空")
+ private String postalCode;
+
+ /**
+ * 订单编号
+ */
+ @NotBlank(message="订单编号不能为空")
+ private String orderCode;
+
+ /**
+ * 售后订单id
+ */
+ @NotNull(message="售后订单id不能为空")
+ private Long id;
+
+ /**
+ * 退货说明
+ */
+ private String returnPolicy;
+
+ /**
+ * 退货凭证
+ */
+ private String returnVoucher;
+
+}
diff --git a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/app/afterorder/param/AppStoreAfterSalesParam.java b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/app/afterorder/param/AppStoreAfterSalesParam.java
index 9ad67f9..06f81b3 100644
--- a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/app/afterorder/param/AppStoreAfterSalesParam.java
+++ b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/app/afterorder/param/AppStoreAfterSalesParam.java
@@ -1,5 +1,6 @@
package co.yixiang.yshop.module.order.controller.app.afterorder.param;
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@@ -15,8 +16,8 @@ public class AppStoreAfterSalesParam {
/**
* 订单号
*/
- @NotBlank
- private String orderCode;
+ @NotBlank(message="订单号不能为空")
+ private String orderId;
/**
* 服务类型 0仅退款1退货退款
@@ -27,7 +28,7 @@ public class AppStoreAfterSalesParam {
/**
* 申请原因
*/
- @NotBlank
+ @NotBlank(message="申请原因不能为空")
private String reasonForApplication;
/**
@@ -40,6 +41,9 @@ public class AppStoreAfterSalesParam {
*/
private String applicationDescriptionPicture;
+ @Schema(description = "收货状态:0、未收到,1、已收到", required = true, example = "0")
+ private Integer receivingStatus;
+
/**
* 商品数据
*/
diff --git a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/app/afterorder/vo/AppStoreAfterSalesVo.java b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/app/afterorder/vo/AppStoreAfterSalesVo.java
index c165125..cac126e 100644
--- a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/app/afterorder/vo/AppStoreAfterSalesVo.java
+++ b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/app/afterorder/vo/AppStoreAfterSalesVo.java
@@ -2,6 +2,7 @@ package co.yixiang.yshop.module.order.controller.app.afterorder.vo;
import co.yixiang.yshop.module.product.controller.app.cart.vo.AppStoreCartQueryVo;
import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
@@ -19,6 +20,9 @@ public class AppStoreAfterSalesVo {
/** id */
private Long id;
+ /** 订单id */
+ private Long orderId;
+
/** 订单号 */
private String orderCode;
@@ -120,4 +124,8 @@ public class AppStoreAfterSalesVo {
*/
private LocalDateTime closeAfterSaleTime;
+
+ @Schema(description = "收货状态:0、未收到,1、已收到", required = true, example = "0")
+ private Integer receivingStatus;
+
}
diff --git a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/app/afterorder/vo/AppStoreOrderAfterSalesDetailVo.java b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/app/afterorder/vo/AppStoreOrderAfterSalesDetailVo.java
new file mode 100644
index 0000000..8d1b897
--- /dev/null
+++ b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/app/afterorder/vo/AppStoreOrderAfterSalesDetailVo.java
@@ -0,0 +1,105 @@
+package co.yixiang.yshop.module.order.controller.app.afterorder.vo;
+
+
+import co.yixiang.yshop.module.product.controller.app.cart.vo.AppStoreCartQueryVo;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Builder;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.List;
+
+import static co.yixiang.yshop.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+/**
+ *
+ * 退款详情
+ *
+ * @author moxiangrong
+ * @date 2023-11-2
+ */
+@Data
+@Builder
+public class AppStoreOrderAfterSalesDetailVo implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ @Schema(description = "订单ID" )
+ private Long id;
+
+ @Schema(description = "订单号" )
+ private String orderId;
+
+ @Schema(description = "用户id" )
+ private Long uid;
+
+ @Schema(description = "用户姓名" )
+ private String realName;
+
+ @Schema(description = "用户电话" )
+ private String userPhone;
+
+ @Schema(description = "详细地址" )
+ private String userAddress;
+
+ @Schema(description = "购物车信息" )
+ private List cartInfo;
+
+ @Schema(description = "支付时间" )
+ private LocalDateTime payTime;
+
+ @Schema(description = "实际支付金额" )
+ private BigDecimal payPrice;
+
+ @Schema(description = "订单总价" )
+ private BigDecimal totalPrice;
+
+ @Schema(description = "运费" )
+ private BigDecimal totalPostage;
+
+ @Schema(description = "抵扣金额" )
+ private BigDecimal deductionPrice;
+
+ @Schema(description = "优惠金额" )
+ private BigDecimal couponPrice;
+
+ @Schema(description = "创建时间" )
+ private LocalDateTime createTime;
+
+ @Schema(description = "发货时间" )
+ private LocalDateTime deliveryTime;
+
+ @Schema(description = "物流名称" )
+ private String deliveryName;
+
+ @Schema(description = "快递单号" )
+ private String deliverySn;
+
+
+ /** 服务类型 0仅退款 1退货退款 */
+ private Integer serviceType;
+
+ @Schema(description = "退款金额" )
+ private BigDecimal refundAmount;
+
+ /** 申请原因 */
+ private String reasons;
+
+ /** 说明 */
+ private String explains;
+
+ /** 说明图片->多个用逗号分割 */
+ private String explainImg;
+
+ /** 状态 0已提交等待平台审核 1平台已审核 等待用户发货/退款 2 用户已发货 3退款成功 */
+ private Integer state;
+
+ /** 售后状态-0正常1用户取消2商家拒绝 */
+ private Integer salesState;
+
+ @Schema(description = "收货状态:0、未收到,1、已收到", required = true, example = "0")
+ private Integer receivingStatus;
+
+}
diff --git a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/app/afterorder/vo/AppStoreOrderCartInfoVo.java b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/app/afterorder/vo/AppStoreOrderCartInfoVo.java
index 1f54388..c3d8950 100644
--- a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/app/afterorder/vo/AppStoreOrderCartInfoVo.java
+++ b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/app/afterorder/vo/AppStoreOrderCartInfoVo.java
@@ -17,6 +17,8 @@ public class AppStoreOrderCartInfoVo {
/** 订单id */
private Long oid;
+ /** 订单id */
+ private String orderId;
/** 购物车id */
private Long cartId;
@@ -42,4 +44,10 @@ public class AppStoreOrderCartInfoVo {
/** 申请原因 */
private String reasons;
+ /** 状态 0已提交等待平台审核 1平台已审核 等待用户发货/退款 2 用户已发货 3退款成功 */
+ private Integer state;
+
+ /** 售后状态-0正常1用户取消2商家拒绝 */
+ private Integer salesState;
+
}
diff --git a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/app/order/AppOrderController.java b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/app/order/AppOrderController.java
index 7c708e1..01ec99f 100644
--- a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/app/order/AppOrderController.java
+++ b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/app/order/AppOrderController.java
@@ -36,7 +36,9 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
+import javax.annotation.security.PermitAll;
import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.util.List;
import java.util.Map;
@@ -72,12 +74,14 @@ public class AppOrderController {
+
+
@PreAuthenticated
@PostMapping("/confirm")
@Operation(summary = "订单确认")
public CommonResult confirm(@Validated @RequestBody AppConfirmOrderParam param) {
Long uid = getLoginUserId();
- return success(appStoreOrderService.confirmOrder(uid, param.getCartId()));
+ return success(appStoreOrderService.confirmOrder(uid, param));
}
@@ -108,22 +112,48 @@ public class AppOrderController {
}
+ /**
+ * 支付查单
+ */
+ @PreAuthenticated
+ @PostMapping(value = "/pay/orderQuery")
+ @Operation(summary = "订单支付查询")
+ public CommonResult orderQuery(@Valid @RequestBody AppPayParam param) throws Exception {
+ Long uid = getLoginUserId();
+ return success(appStoreOrderService.orderQuery(uid,param));
+ }
+
+
/**
* 订单支付
*/
@PreAuthenticated
@PostMapping(value = "/pay")
@Operation(summary = "订单支付")
- public CommonResult