From 4a18e76373fb7f4c79a61cb53bb9df1545084ed5 Mon Sep 17 00:00:00 2001 From: hupeng Date: Tue, 17 Dec 2019 18:48:13 +0800 Subject: [PATCH] =?UTF-8?q?yshop1.5=E7=89=88=E6=9C=AC=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E7=A7=92=E6=9D=80=E5=8A=9F=E8=83=BD,=E6=89=8B=E6=9C=BA?= =?UTF-8?q?=E7=AB=AF=E6=96=B0=E5=A2=9EH5=E6=94=AF=E4=BB=98,=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E5=85=B6=E4=BB=96bug,=E5=AF=BC=E5=87=BA=E6=9C=80?= =?UTF-8?q?=E6=96=B0sql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- shell/start.sh | 2 +- shell/stop.sh | 2 +- sql/yxshop.sql | 191 ++++++++++++++++-- yshop-api/pom.xml | 8 +- .../activity/entity/YxStoreSeckill.java | 113 +++++++++++ .../activity/mapper/YxStoreSeckillMapper.java | 60 ++++++ .../activity/mapping/StoreSeckillMap.java | 17 ++ .../service/YxStoreSeckillService.java | 51 +++++ .../impl/YxStoreSeckillServiceImpl.java | 132 ++++++++++++ .../controller/StoreSeckillController.java | 138 +++++++++++++ .../activity/web/dto/SeckillConfigDTO.java | 17 ++ .../activity/web/dto/SeckillTimeDTO.java | 21 ++ .../activity/web/dto/StoreSeckillDTO.java | 32 +++ .../web/param/YxStoreSeckillQueryParam.java | 22 ++ .../web/vo/YxStoreSeckillQueryVo.java | 120 +++++++++++ .../order/service/YxStoreOrderService.java | 3 + .../service/impl/YxStoreOrderServiceImpl.java | 70 ++++++- .../web/controller/StoreOrderController.java | 98 +++++---- .../security/config/SecurityConfig.java | 4 + .../service/YxSystemGroupDataService.java | 2 + .../service/impl/YxStoreCartServiceImpl.java | 55 ++++- .../impl/YxSystemGroupDataServiceImpl.java | 12 +- .../web/controller/StoreCartController.java | 8 +- .../controller/YxUserRechargeController.java | 91 --------- .../mapper/activity/YxStoreSeckillMapper.xml | 18 ++ yshop-common/pom.xml | 2 +- yshop-generator/pom.xml | 4 +- yshop-logging/pom.xml | 4 +- yshop-mp/pom.xml | 4 +- yshop-shop/pom.xml | 6 +- .../activity/domain/YxStoreSeckill.java | 153 ++++++++++++++ .../repository/YxStoreSeckillRepository.java | 12 ++ .../rest/YxStoreCombinationController.java | 1 - .../rest/YxStoreSeckillController.java | 73 +++++++ .../service/YxStoreSeckillService.java | 66 ++++++ .../service/dto/YxStoreSeckillDTO.java | 98 +++++++++ .../dto/YxStoreSeckillQueryCriteria.java | 17 ++ .../impl/YxStoreSeckillServiceImpl.java | 100 +++++++++ .../service/mapper/YxStoreSeckillMapper.java | 16 ++ .../shop/rest/YxStoreOrderController.java | 1 - .../shop/service/YxStoreOrderService.java | 2 +- .../service/impl/YxStoreOrderServiceImpl.java | 7 +- yshop-system/pom.xml | 8 +- yshop-tools/pom.xml | 4 +- 45 files changed, 1673 insertions(+), 194 deletions(-) create mode 100644 yshop-api/src/main/java/co/yixiang/modules/activity/entity/YxStoreSeckill.java create mode 100644 yshop-api/src/main/java/co/yixiang/modules/activity/mapper/YxStoreSeckillMapper.java create mode 100644 yshop-api/src/main/java/co/yixiang/modules/activity/mapping/StoreSeckillMap.java create mode 100644 yshop-api/src/main/java/co/yixiang/modules/activity/service/YxStoreSeckillService.java create mode 100644 yshop-api/src/main/java/co/yixiang/modules/activity/service/impl/YxStoreSeckillServiceImpl.java create mode 100644 yshop-api/src/main/java/co/yixiang/modules/activity/web/controller/StoreSeckillController.java create mode 100644 yshop-api/src/main/java/co/yixiang/modules/activity/web/dto/SeckillConfigDTO.java create mode 100644 yshop-api/src/main/java/co/yixiang/modules/activity/web/dto/SeckillTimeDTO.java create mode 100644 yshop-api/src/main/java/co/yixiang/modules/activity/web/dto/StoreSeckillDTO.java create mode 100644 yshop-api/src/main/java/co/yixiang/modules/activity/web/param/YxStoreSeckillQueryParam.java create mode 100644 yshop-api/src/main/java/co/yixiang/modules/activity/web/vo/YxStoreSeckillQueryVo.java delete mode 100644 yshop-api/src/main/java/co/yixiang/modules/user/web/controller/YxUserRechargeController.java create mode 100644 yshop-api/src/main/resources/mapper/activity/YxStoreSeckillMapper.xml create mode 100644 yshop-shop/src/main/java/co/yixiang/modules/activity/domain/YxStoreSeckill.java create mode 100644 yshop-shop/src/main/java/co/yixiang/modules/activity/repository/YxStoreSeckillRepository.java create mode 100644 yshop-shop/src/main/java/co/yixiang/modules/activity/rest/YxStoreSeckillController.java create mode 100644 yshop-shop/src/main/java/co/yixiang/modules/activity/service/YxStoreSeckillService.java create mode 100644 yshop-shop/src/main/java/co/yixiang/modules/activity/service/dto/YxStoreSeckillDTO.java create mode 100644 yshop-shop/src/main/java/co/yixiang/modules/activity/service/dto/YxStoreSeckillQueryCriteria.java create mode 100644 yshop-shop/src/main/java/co/yixiang/modules/activity/service/impl/YxStoreSeckillServiceImpl.java create mode 100644 yshop-shop/src/main/java/co/yixiang/modules/activity/service/mapper/YxStoreSeckillMapper.java diff --git a/pom.xml b/pom.xml index 26133c83..f24b4d5e 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ co.yixiang yshop pom - 1.4 + 1.5 yshop-common diff --git a/shell/start.sh b/shell/start.sh index 1655cdc1..dbf372dd 100644 --- a/shell/start.sh +++ b/shell/start.sh @@ -1 +1 @@ -nohup java -jar yshop-api-1.4.jar --spring.profiles.active=prod & \ No newline at end of file +nohup java -jar yshop-api-1.5.jar --spring.profiles.active=prod & \ No newline at end of file diff --git a/shell/stop.sh b/shell/stop.sh index 4804cec1..86e081a1 100644 --- a/shell/stop.sh +++ b/shell/stop.sh @@ -1,4 +1,4 @@ -PID=$(ps -ef | grep yshop-api-1.4.jar | grep -v grep | awk '{ print $2 }') +PID=$(ps -ef | grep yshop-api-1.5.jar | grep -v grep | awk '{ print $2 }') if [ -z "$PID" ];then echo Application is already stopped else diff --git a/sql/yxshop.sql b/sql/yxshop.sql index 363fe63b..a63b73ee 100644 --- a/sql/yxshop.sql +++ b/sql/yxshop.sql @@ -11,7 +11,7 @@ Target Server Version : 50723 File Encoding : 65001 - Date: 13/12/2019 19:13:01 + Date: 17/12/2019 18:20:31 */ SET NAMES utf8mb4; @@ -227,7 +227,7 @@ CREATE TABLE `log` ( `username` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `address` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 17570 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; +) ENGINE = InnoDB AUTO_INCREMENT = 17693 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of log @@ -3533,6 +3533,126 @@ INSERT INTO `log` VALUES (17566, '2019-12-13 17:31:34', '查询菜单', NULL, 'I INSERT INTO `log` VALUES (17567, '2019-12-13 19:04:45', '用户登录', NULL, 'INFO', 'co.yixiang.modules.security.rest.AuthenticationController.login()', '{ authorizationUser: {username=admin, password= ******} }', '127.0.0.1', 759, 'admin', '内网IP'); INSERT INTO `log` VALUES (17568, '2019-12-13 19:04:53', '查询YxUserBill', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxUserBillController.getYxUserBills()', '{ criteria: YxUserBillQueryCriteria(nickname=, category=, type=) pageable: Page request [number: 0, size 10, sort: UNSORTED] }', '127.0.0.1', 36, 'admin', '内网IP'); INSERT INTO `log` VALUES (17569, '2019-12-13 19:04:59', '查询YxUserBill', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxUserBillController.getYxUserBills()', '{ criteria: YxUserBillQueryCriteria(nickname=, category=, type=) pageable: Page request [number: 1, size 10, sort: UNSORTED] }', '127.0.0.1', 13, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17570, '2019-12-14 09:18:07', '用户登录', NULL, 'INFO', 'co.yixiang.modules.security.rest.AuthenticationController.login()', '{ authorizationUser: {username=admin, password= ******} }', '127.0.0.1', 661, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17571, '2019-12-14 09:18:13', '查询YxExpress', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxExpressController.getYxExpresss()', '{ criteria: YxExpressQueryCriteria() pageable: Page request [number: 0, size 20, sort: UNSORTED] }', '127.0.0.1', 43, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17572, '2019-12-14 09:19:29', '查询YxExpress', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxExpressController.getYxExpresss()', '{ criteria: YxExpressQueryCriteria() pageable: Page request [number: 0, size 20, sort: UNSORTED] }', '127.0.0.1', 17, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17573, '2019-12-14 09:53:23', '查询YxExpress', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxExpressController.getYxExpresss()', '{ criteria: YxExpressQueryCriteria() pageable: Page request [number: 0, size 20, sort: UNSORTED] }', '127.0.0.1', 44, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17574, '2019-12-14 09:53:44', '查询YxExpress', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxExpressController.getYxExpresss()', '{ criteria: YxExpressQueryCriteria() pageable: Page request [number: 0, size 20, sort: UNSORTED] }', '127.0.0.1', 8, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17575, '2019-12-14 09:56:30', '查询YxExpress', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxExpressController.getYxExpresss()', '{ criteria: YxExpressQueryCriteria() pageable: Page request [number: 0, size 20, sort: UNSORTED] }', '127.0.0.1', 10, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17576, '2019-12-14 09:56:52', '查询YxExpress', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxExpressController.getYxExpresss()', '{ criteria: YxExpressQueryCriteria() pageable: Page request [number: 0, size 20, sort: UNSORTED] }', '127.0.0.1', 4, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17577, '2019-12-14 10:03:14', '查询YxExpress', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxExpressController.getYxExpresss()', '{ criteria: YxExpressQueryCriteria() pageable: Page request [number: 0, size 20, sort: UNSORTED] }', '127.0.0.1', 3, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17578, '2019-12-15 20:23:28', '用户登录', NULL, 'INFO', 'co.yixiang.modules.security.rest.AuthenticationController.login()', '{ authorizationUser: {username=15136175246, password= ******} }', '127.0.0.1', 1327, '', '内网IP'); +INSERT INTO `log` VALUES (17579, '2019-12-15 20:23:33', '用户登录', NULL, 'INFO', 'co.yixiang.modules.security.rest.AuthenticationController.login()', '{ authorizationUser: {username=15136175246, password= ******} }', '127.0.0.1', 29, '', '内网IP'); +INSERT INTO `log` VALUES (17580, '2019-12-16 12:11:01', '用户登录', 'co.yixiang.exception.BadRequestException: 验证码已过期\r\n at co.yixiang.modules.security.rest.AuthenticationController.login(AuthenticationController.java:67)\r\n at co.yixiang.modules.security.rest.AuthenticationController$$FastClassBySpringCGLIB$$7265dd5e.invoke()\r\n at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)\r\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:746)\r\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)\r\n at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:88)\r\n at co.yixiang.aspect.LogAspect.logAround(LogAspect.java:50)\r\n at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\r\n at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n at java.lang.reflect.Method.invoke(Method.java:498)\r\n at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:644)\r\n at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:633)\r\n at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:70)\r\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175)\r\n at org.springframework.aop.aspectj.AspectJAfterThrowingAdvice.invoke(AspectJAfterThrowingAdvice.java:62)\r\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175)\r\n at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:93)\r\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\r\n at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688)\r\n at co.yixiang.modules.security.rest.AuthenticationController$$EnhancerBySpringCGLIB$$5c3a0529.login()\r\n at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\r\n at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n at java.lang.reflect.Method.invoke(Method.java:498)\r\n at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:215)\r\n at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:142)\r\n at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102)\r\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)\r\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:800)\r\n at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\r\n at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1038)\r\n at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942)\r\n at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:998)\r\n at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:901)\r\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)\r\n at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:875)\r\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)\r\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)\r\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\r\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101)\r\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:123)\r\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:320)\r\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127)\r\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91)\r\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)\r\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)\r\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)\r\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)\r\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)\r\n at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)\r\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)\r\n at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170)\r\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)\r\n at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)\r\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)\r\n at co.yixiang.modules.security.security.JwtAuthorizationTokenFilter.doFilterInternal(JwtAuthorizationTokenFilter.java:67)\r\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\r\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)\r\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116)\r\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)\r\n at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:66)\r\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\r\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)\r\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)\r\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)\r\n at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56)\r\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\r\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)\r\n at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:215)\r\n at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:178)\r\n at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:357)\r\n at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:270)\r\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)\r\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\r\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)\r\n at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)\r\n at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)\r\n at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)\r\n at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\r\n at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)\r\n at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)\r\n at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)\r\n at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)\r\n at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:770)\r\n at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1415)\r\n at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\r\n at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\r\n at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\r\n at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\r\n at java.lang.Thread.run(Thread.java:748)\r\n', 'ERROR', 'co.yixiang.modules.security.rest.AuthenticationController.login()', '{ authorizationUser: {username=admin, password= ******} }', '127.0.0.1', 21, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17581, '2019-12-16 12:11:10', '用户登录', NULL, 'INFO', 'co.yixiang.modules.security.rest.AuthenticationController.login()', '{ authorizationUser: {username=admin, password= ******} }', '127.0.0.1', 1033, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17582, '2019-12-16 12:31:39', '查询记录', NULL, 'INFO', 'co.yixiang.modules.activity.rest.YxStorePinkController.getYxStorePinks()', '{ criteria: YxStorePinkQueryCriteria(kId=0) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 144, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17583, '2019-12-16 12:31:54', '查询拼团', NULL, 'INFO', 'co.yixiang.modules.activity.rest.YxStoreCombinationController.getYxStoreCombinations()', '{ criteria: YxStoreCombinationQueryCriteria(title=null, isDel=0) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 31, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17584, '2019-12-16 12:32:04', '查询菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.getMenus()', '{ criteria: MenuQueryCriteria(blurry=null) }', '127.0.0.1', 65, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17585, '2019-12-16 12:32:52', '查询菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.getMenus()', '{ criteria: MenuQueryCriteria(blurry=null) }', '127.0.0.1', 3, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17586, '2019-12-16 13:04:37', '查询菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.getMenus()', '{ criteria: MenuQueryCriteria(blurry=null) }', '127.0.0.1', 3, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17587, '2019-12-16 13:04:37', '查询菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.getMenus()', '{ criteria: MenuQueryCriteria(blurry=null) }', '127.0.0.1', 4, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17588, '2019-12-16 13:06:29', '新增菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.create()', '{ resources: co.yixiang.modules.system.domain.Menu@72 }', '127.0.0.1', 91, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17589, '2019-12-16 13:06:29', '查询菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.getMenus()', '{ criteria: MenuQueryCriteria(blurry=null) }', '127.0.0.1', 30, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17590, '2019-12-16 13:06:40', '查询角色', NULL, 'INFO', 'co.yixiang.modules.system.rest.RoleController.getRoles()', '{ criteria: RoleQueryCriteria(blurry=null) pageable: Page request [number: 0, size 10, sort: level: ASC] }', '127.0.0.1', 140, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17591, '2019-12-16 13:06:49', '修改角色菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.RoleController.updateMenu()', '{ resources: Role{id=1, name=\'null\', remark=\'null\', createDateTime=null} }', '127.0.0.1', 118, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17592, '2019-12-16 13:06:54', '查询菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.getMenus()', '{ criteria: MenuQueryCriteria(blurry=null) }', '127.0.0.1', 5, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17593, '2019-12-16 13:11:32', '查询商品', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxStoreProductController.getYxStoreProducts()', '{ criteria: YxStoreProductQueryCriteria(storeName=null, isDel=null, isShow=0) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 23, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17594, '2019-12-16 13:11:32', '查询商品', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxStoreProductController.getYxStoreProducts()', '{ criteria: YxStoreProductQueryCriteria(storeName=null, isDel=1, isShow=null) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 23, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17595, '2019-12-16 13:11:32', '查询商品', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxStoreProductController.getYxStoreProducts()', '{ criteria: YxStoreProductQueryCriteria(storeName=null, isDel=0, isShow=1) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 32, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17596, '2019-12-16 13:37:43', '查询商品', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxStoreProductController.getYxStoreProducts()', '{ criteria: YxStoreProductQueryCriteria(storeName=null, isDel=null, isShow=0) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 46, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17597, '2019-12-16 13:37:43', '查询商品', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxStoreProductController.getYxStoreProducts()', '{ criteria: YxStoreProductQueryCriteria(storeName=null, isDel=1, isShow=null) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 46, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17598, '2019-12-16 13:37:43', '查询商品', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxStoreProductController.getYxStoreProducts()', '{ criteria: YxStoreProductQueryCriteria(storeName=null, isDel=0, isShow=1) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 64, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17599, '2019-12-16 13:39:52', '查询商品', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxStoreProductController.getYxStoreProducts()', '{ criteria: YxStoreProductQueryCriteria(storeName=null, isDel=1, isShow=null) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 4, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17600, '2019-12-16 13:39:52', '查询商品', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxStoreProductController.getYxStoreProducts()', '{ criteria: YxStoreProductQueryCriteria(storeName=null, isDel=0, isShow=1) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 11, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17601, '2019-12-16 13:39:52', '查询商品', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxStoreProductController.getYxStoreProducts()', '{ criteria: YxStoreProductQueryCriteria(storeName=null, isDel=null, isShow=0) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 10, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17602, '2019-12-16 13:39:53', '查询角色', NULL, 'INFO', 'co.yixiang.modules.system.rest.RoleController.getRoles()', '{ criteria: RoleQueryCriteria(blurry=null) pageable: Page request [number: 0, size 10, sort: level: ASC] }', '127.0.0.1', 116, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17603, '2019-12-16 13:42:40', '查询商品', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxStoreProductController.getYxStoreProducts()', '{ criteria: YxStoreProductQueryCriteria(storeName=null, isDel=null, isShow=0) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 2, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17604, '2019-12-16 13:42:40', '查询商品', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxStoreProductController.getYxStoreProducts()', '{ criteria: YxStoreProductQueryCriteria(storeName=null, isDel=0, isShow=1) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 7, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17605, '2019-12-16 13:42:40', '查询商品', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxStoreProductController.getYxStoreProducts()', '{ criteria: YxStoreProductQueryCriteria(storeName=null, isDel=1, isShow=null) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 6, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17606, '2019-12-16 13:58:41', '查询商品分类', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxStoreCategoryController.getYxStoreCategorys()', '{ criteria: YxStoreCategoryQueryCriteria(cateName=null) pageable: Page request [number: 0, size 20, sort: UNSORTED] }', '127.0.0.1', 98, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17607, '2019-12-16 14:00:32', '查询商品', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxStoreProductController.getYxStoreProducts()', '{ criteria: YxStoreProductQueryCriteria(storeName=null, isDel=0, isShow=1) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 270, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17608, '2019-12-16 14:00:32', '查询商品', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxStoreProductController.getYxStoreProducts()', '{ criteria: YxStoreProductQueryCriteria(storeName=null, isDel=0, isShow=1) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 270, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17609, '2019-12-16 14:00:55', '修改YxStoreSeckill', NULL, 'INFO', 'co.yixiang.modules.activity.rest.YxStoreSeckillController.update()', '{ resources: YxStoreSeckill(id=1, productId=20, image=https://image.dayouqiantu.cn/5ca04fa9c08ef.jpg, images=https://image.dayouqiantu.cn/5ca05103ad634.jpg,https://image.dayouqiantu.cn/5ca04fa9c08ef.jpg, title=70gA4彩色打印复印, info=70gA4彩色打印复印, price=0, cost=0.5, otPrice=1, giveIntegral=0, sort=0, stock=100, sales=1, unitName=张, postage=0, description=

7文件请传QQ2412733099,

718504558或2412733099@qq.com邮箱,

手机/微信:13733990583

量大请联系店主,一定让您满意而归

   实体店面经营 保质保量

A4黑白2毛/张,量大1毛/张,

A3黑白双面5毛/张,量大3毛/张,

更大量请联系店主报价,

每消费1元可积1分,1分抵现金1毛,

付款时直接抵扣

(如此优惠的基础上还可积分,积分抵现金)



, startTime=1576476046, stopTime=1577203200, startTimeDate=Mon Dec 16 14:00:46 CST 2019, endTimeDate=Wed Dec 25 00:00:00 CST 2019, addTime=1576476055, status=1, isPostage=1, isHot=1, isDel=0, num=0, isShow=1) }', '127.0.0.1', 104, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17610, '2019-12-16 14:00:55', '查询商品', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxStoreProductController.getYxStoreProducts()', '{ criteria: YxStoreProductQueryCriteria(storeName=null, isDel=0, isShow=1) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 24, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17611, '2019-12-16 14:01:38', '查询商品', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxStoreProductController.getYxStoreProducts()', '{ criteria: YxStoreProductQueryCriteria(storeName=null, isDel=0, isShow=1) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 26, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17612, '2019-12-16 14:01:38', '查询商品', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxStoreProductController.getYxStoreProducts()', '{ criteria: YxStoreProductQueryCriteria(storeName=null, isDel=0, isShow=1) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 51, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17613, '2019-12-16 14:29:01', '修改YxStoreSeckill', NULL, 'INFO', 'co.yixiang.modules.activity.rest.YxStoreSeckillController.update()', '{ resources: YxStoreSeckill(id=2, productId=20, image=https://image.dayouqiantu.cn/5ca04fa9c08ef.jpg, images=https://image.dayouqiantu.cn/5ca05103ad634.jpg,https://image.dayouqiantu.cn/5ca04fa9c08ef.jpg, title=70gA4彩色打印复印, info=70gA4彩色打印复印, price=0, cost=0.5, otPrice=1, giveIntegral=0, sort=0, stock=100, sales=1, unitName=张, postage=0, description=

7文件请传QQ2412733099,

718504558或2412733099@qq.com邮箱,

手机/微信:13733990583

量大请联系店主,一定让您满意而归

   实体店面经营 保质保量

A4黑白2毛/张,量大1毛/张,

A3黑白双面5毛/张,量大3毛/张,

更大量请联系店主报价,

每消费1元可积1分,1分抵现金1毛,

付款时直接抵扣

(如此优惠的基础上还可积分,积分抵现金)



, startTime=1576477734, stopTime=1576598400, startTimeDate=Mon Dec 16 14:28:54 CST 2019, endTimeDate=Wed Dec 18 00:00:00 CST 2019, addTime=1576477741, status=1, isPostage=1, isHot=1, isDel=0, num=1, isShow=1) }', '127.0.0.1', 83, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17614, '2019-12-16 14:29:02', '查询商品', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxStoreProductController.getYxStoreProducts()', '{ criteria: YxStoreProductQueryCriteria(storeName=null, isDel=0, isShow=1) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 17, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17615, '2019-12-16 14:45:06', '查询商品', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxStoreProductController.getYxStoreProducts()', '{ criteria: YxStoreProductQueryCriteria(storeName=null, isDel=0, isShow=1) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 109, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17616, '2019-12-16 14:45:06', '查询商品', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxStoreProductController.getYxStoreProducts()', '{ criteria: YxStoreProductQueryCriteria(storeName=null, isDel=0, isShow=1) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 109, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17617, '2019-12-16 14:46:17', '查询YxStoreSeckill', NULL, 'INFO', 'co.yixiang.modules.activity.rest.YxStoreSeckillController.getYxStoreSeckills()', '{ criteria: YxStoreSeckillQueryCriteria(title=null) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 68, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17618, '2019-12-16 14:49:26', '查询YxStoreSeckill', NULL, 'INFO', 'co.yixiang.modules.activity.rest.YxStoreSeckillController.getYxStoreSeckills()', '{ criteria: YxStoreSeckillQueryCriteria(title=null) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 7, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17619, '2019-12-16 14:49:39', '查询YxStoreSeckill', NULL, 'INFO', 'co.yixiang.modules.activity.rest.YxStoreSeckillController.getYxStoreSeckills()', '{ criteria: YxStoreSeckillQueryCriteria(title=null) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 8, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17620, '2019-12-16 14:50:22', '查询YxStoreSeckill', NULL, 'INFO', 'co.yixiang.modules.activity.rest.YxStoreSeckillController.getYxStoreSeckills()', '{ criteria: YxStoreSeckillQueryCriteria(title=null) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 7, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17621, '2019-12-16 14:50:34', '查询YxStoreSeckill', NULL, 'INFO', 'co.yixiang.modules.activity.rest.YxStoreSeckillController.getYxStoreSeckills()', '{ criteria: YxStoreSeckillQueryCriteria(title=null) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 7, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17622, '2019-12-16 14:51:01', '查询YxStoreSeckill', NULL, 'INFO', 'co.yixiang.modules.activity.rest.YxStoreSeckillController.getYxStoreSeckills()', '{ criteria: YxStoreSeckillQueryCriteria(title=null) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 14, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17623, '2019-12-16 14:51:47', '查询YxStoreSeckill', NULL, 'INFO', 'co.yixiang.modules.activity.rest.YxStoreSeckillController.getYxStoreSeckills()', '{ criteria: YxStoreSeckillQueryCriteria(title=null) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 6, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17624, '2019-12-16 15:46:29', '查询记录', NULL, 'INFO', 'co.yixiang.modules.activity.rest.YxStorePinkController.getYxStorePinks()', '{ criteria: YxStorePinkQueryCriteria(kId=0) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 483, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17625, '2019-12-16 15:46:32', '查询拼团', NULL, 'INFO', 'co.yixiang.modules.activity.rest.YxStoreCombinationController.getYxStoreCombinations()', '{ criteria: YxStoreCombinationQueryCriteria(title=null, isDel=0) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 38, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17626, '2019-12-16 15:46:42', '查询YxStoreSeckill', NULL, 'INFO', 'co.yixiang.modules.activity.rest.YxStoreSeckillController.getYxStoreSeckills()', '{ criteria: YxStoreSeckillQueryCriteria(title=null) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 10, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17627, '2019-12-16 15:49:07', '查询YxStoreSeckill', NULL, 'INFO', 'co.yixiang.modules.activity.rest.YxStoreSeckillController.getYxStoreSeckills()', '{ criteria: YxStoreSeckillQueryCriteria(title=null) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 168, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17628, '2019-12-16 15:49:37', '查询YxStoreSeckill', NULL, 'INFO', 'co.yixiang.modules.activity.rest.YxStoreSeckillController.getYxStoreSeckills()', '{ criteria: YxStoreSeckillQueryCriteria(title=null) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 6, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17629, '2019-12-16 15:54:34', '查询YxStoreSeckill', NULL, 'INFO', 'co.yixiang.modules.activity.rest.YxStoreSeckillController.getYxStoreSeckills()', '{ criteria: YxStoreSeckillQueryCriteria(title=null) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 103, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17630, '2019-12-16 15:54:52', '修改YxStoreSeckill', NULL, 'INFO', 'co.yixiang.modules.activity.rest.YxStoreSeckillController.update()', '{ resources: YxStoreSeckill(id=2, productId=20, image=https://image.dayouqiantu.cn/5ca04fa9c08ef.jpg, images=https://image.dayouqiantu.cn/5ca05103ad634.jpg,https://image.dayouqiantu.cn/5ca04fa9c08ef.jpg, title=70gA4彩色打印复印, info=70gA4彩色打印复印, price=1, cost=0.5, otPrice=1, giveIntegral=0, sort=0, stock=100, sales=1, unitName=张, postage=0, description=

7文件请传QQ2412733099,

718504558或2412733099@qq.com邮箱,

手机/微信:13733990583

量大请联系店主,一定让您满意而归

   实体店面经营 保质保量

A4黑白2毛/张,量大1毛/张,

A3黑白双面5毛/张,量大3毛/张,

更大量请联系店主报价,

每消费1元可积1分,1分抵现金1毛,

付款时直接抵扣

(如此优惠的基础上还可积分,积分抵现金)



, startTime=1576477734, stopTime=1576598400, startTimeDate=Mon Dec 16 14:28:54 CST 2019, endTimeDate=Wed Dec 18 00:00:00 CST 2019, addTime=1576477741, status=1, isPostage=1, isHot=0, isDel=0, num=1, isShow=1) }', '127.0.0.1', 124, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17631, '2019-12-16 15:54:52', '查询YxStoreSeckill', NULL, 'INFO', 'co.yixiang.modules.activity.rest.YxStoreSeckillController.getYxStoreSeckills()', '{ criteria: YxStoreSeckillQueryCriteria(title=null) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 7, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17632, '2019-12-16 15:55:14', '修改YxStoreSeckill', NULL, 'INFO', 'co.yixiang.modules.activity.rest.YxStoreSeckillController.update()', '{ resources: YxStoreSeckill(id=1, productId=20, image=https://image.dayouqiantu.cn/5ca04fa9c08ef.jpg, images=https://image.dayouqiantu.cn/5ca05103ad634.jpg,https://image.dayouqiantu.cn/5ca04fa9c08ef.jpg, title=70gA4彩色打印复印, info=70gA4彩色打印复印, price=1, cost=0.5, otPrice=1, giveIntegral=0, sort=0, stock=100, sales=1, unitName=张, postage=0, description=

7文件请传QQ2412733099,

718504558或2412733099@qq.com邮箱,

手机/微信:13733990583

量大请联系店主,一定让您满意而归

   实体店面经营 保质保量

A4黑白2毛/张,量大1毛/张,

A3黑白双面5毛/张,量大3毛/张,

更大量请联系店主报价,

每消费1元可积1分,1分抵现金1毛,

付款时直接抵扣

(如此优惠的基础上还可积分,积分抵现金)



, startTime=1576476046, stopTime=1577203200, startTimeDate=Mon Dec 16 14:00:46 CST 2019, endTimeDate=Wed Dec 25 00:00:00 CST 2019, addTime=1576476055, status=1, isPostage=1, isHot=0, isDel=0, num=1, isShow=1) }', '127.0.0.1', 48, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17633, '2019-12-16 15:55:14', '查询YxStoreSeckill', NULL, 'INFO', 'co.yixiang.modules.activity.rest.YxStoreSeckillController.getYxStoreSeckills()', '{ criteria: YxStoreSeckillQueryCriteria(title=null) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 12, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17634, '2019-12-16 16:05:37', '查询菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.getMenus()', '{ criteria: MenuQueryCriteria(blurry=null) }', '127.0.0.1', 80, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17635, '2019-12-16 16:06:29', '查询菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.getMenus()', '{ criteria: MenuQueryCriteria(blurry=null) }', '127.0.0.1', 7, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17636, '2019-12-16 16:07:42', '新增菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.create()', '{ resources: co.yixiang.modules.system.domain.Menu@73 }', '127.0.0.1', 119, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17637, '2019-12-16 16:07:42', '查询菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.getMenus()', '{ criteria: MenuQueryCriteria(blurry=null) }', '127.0.0.1', 94, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17638, '2019-12-16 16:07:47', '查询角色', NULL, 'INFO', 'co.yixiang.modules.system.rest.RoleController.getRoles()', '{ criteria: RoleQueryCriteria(blurry=null) pageable: Page request [number: 0, size 10, sort: level: ASC] }', '127.0.0.1', 44, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17639, '2019-12-16 16:07:56', '修改角色菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.RoleController.updateMenu()', '{ resources: Role{id=1, name=\'null\', remark=\'null\', createDateTime=null} }', '127.0.0.1', 155, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17640, '2019-12-16 16:08:13', '查询菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.getMenus()', '{ criteria: MenuQueryCriteria(blurry=null) }', '127.0.0.1', 2, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17641, '2019-12-16 16:08:27', '查询菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.getMenus()', '{ criteria: MenuQueryCriteria(blurry=null) }', '127.0.0.1', 2, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17642, '2019-12-16 16:08:45', '查询菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.getMenus()', '{ criteria: MenuQueryCriteria(blurry=null) }', '127.0.0.1', 3, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17643, '2019-12-16 16:09:13', '修改菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.update()', '{ resources: co.yixiang.modules.system.domain.Menu@73 }', '127.0.0.1', 85, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17644, '2019-12-16 16:09:14', '查询菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.getMenus()', '{ criteria: MenuQueryCriteria(blurry=null) }', '127.0.0.1', 18, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17645, '2019-12-16 16:09:17', '查询菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.getMenus()', '{ criteria: MenuQueryCriteria(blurry=null) }', '127.0.0.1', 3, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17646, '2019-12-16 16:10:05', '查询菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.getMenus()', '{ criteria: MenuQueryCriteria(blurry=null) }', '127.0.0.1', 3, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17647, '2019-12-16 16:10:06', '查询菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.getMenus()', '{ criteria: MenuQueryCriteria(blurry=null) }', '127.0.0.1', 2, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17648, '2019-12-16 16:10:07', '查询角色', NULL, 'INFO', 'co.yixiang.modules.system.rest.RoleController.getRoles()', '{ criteria: RoleQueryCriteria(blurry=null) pageable: Page request [number: 0, size 10, sort: level: ASC] }', '127.0.0.1', 151, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17649, '2019-12-16 16:11:17', '查询菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.getMenus()', '{ criteria: MenuQueryCriteria(blurry=null) }', '127.0.0.1', 2, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17650, '2019-12-16 16:11:27', '查询YxStoreSeckill', NULL, 'INFO', 'co.yixiang.modules.activity.rest.YxStoreSeckillController.getYxStoreSeckills()', '{ criteria: YxStoreSeckillQueryCriteria(title=null) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 11, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17651, '2019-12-16 16:12:00', '修改菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.update()', '{ resources: co.yixiang.modules.system.domain.Menu@73 }', '127.0.0.1', 55, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17652, '2019-12-16 16:12:00', '查询菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.getMenus()', '{ criteria: MenuQueryCriteria(blurry=null) }', '127.0.0.1', 7, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17653, '2019-12-16 16:12:07', '查询YxStoreSeckill', NULL, 'INFO', 'co.yixiang.modules.activity.rest.YxStoreSeckillController.getYxStoreSeckills()', '{ criteria: YxStoreSeckillQueryCriteria(title=null) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 4, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17654, '2019-12-16 16:12:10', '查询数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.getYxSystemGroupDatas()', '{ criteria: YxSystemGroupDataQueryCriteria(groupName=routine_seckill_time) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 67, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17655, '2019-12-16 16:12:28', '查询数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.getYxSystemGroupDatas()', '{ criteria: YxSystemGroupDataQueryCriteria(groupName=routine_home_banner) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 7, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17656, '2019-12-16 16:14:07', '查询数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.getYxSystemGroupDatas()', '{ criteria: YxSystemGroupDataQueryCriteria(groupName=routine_seckill_time) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 5, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17657, '2019-12-16 16:15:12', '查询数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.getYxSystemGroupDatas()', '{ criteria: YxSystemGroupDataQueryCriteria(groupName=routine_seckill_time) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 3, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17658, '2019-12-16 16:16:30', '查询YxStoreSeckill', NULL, 'INFO', 'co.yixiang.modules.activity.rest.YxStoreSeckillController.getYxStoreSeckills()', '{ criteria: YxStoreSeckillQueryCriteria(title=null) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 7, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17659, '2019-12-16 16:16:34', '查询数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.getYxSystemGroupDatas()', '{ criteria: YxSystemGroupDataQueryCriteria(groupName=routine_seckill_time) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 2, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17660, '2019-12-16 16:16:45', '新增数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.create()', '{ jsonStr: {\"id\":\"\",\"groupName\":\"sign_day_num\",\"day\":1,\"sign_num\":0} }', '127.0.0.1', 76, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17661, '2019-12-16 16:16:46', '查询数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.getYxSystemGroupDatas()', '{ criteria: YxSystemGroupDataQueryCriteria(groupName=routine_seckill_time) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 8, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17662, '2019-12-16 16:19:29', '新增数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.create()', '{ jsonStr: {\"id\":\"\",\"groupName\":\"routine_seckill_time\",\"time\":5,\"continued\":2} }', '127.0.0.1', 36, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17663, '2019-12-16 16:19:29', '查询数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.getYxSystemGroupDatas()', '{ criteria: YxSystemGroupDataQueryCriteria(groupName=routine_seckill_time) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 3, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17664, '2019-12-16 16:19:43', '新增数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.create()', '{ jsonStr: {\"id\":\"\",\"groupName\":\"routine_seckill_time\",\"value\":\"\",\"addTime\":\"\",\"sort\":\"\",\"status\":\"\",\"time\":\"7\",\"continued\":\"3\"} }', '127.0.0.1', 41, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17665, '2019-12-16 16:19:43', '查询数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.getYxSystemGroupDatas()', '{ criteria: YxSystemGroupDataQueryCriteria(groupName=routine_seckill_time) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 3, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17666, '2019-12-16 16:20:04', '新增数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.create()', '{ jsonStr: {\"id\":\"\",\"groupName\":\"routine_seckill_time\",\"value\":\"\",\"addTime\":\"\",\"sort\":\"\",\"status\":\"\",\"time\":\"10\",\"continued\":\"2\"} }', '127.0.0.1', 53, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17667, '2019-12-16 16:20:04', '查询数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.getYxSystemGroupDatas()', '{ criteria: YxSystemGroupDataQueryCriteria(groupName=routine_seckill_time) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 3, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17668, '2019-12-16 16:20:23', '新增数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.create()', '{ jsonStr: {\"id\":\"\",\"groupName\":\"routine_seckill_time\",\"value\":\"\",\"addTime\":\"\",\"sort\":\"\",\"status\":\"\",\"time\":\"12\",\"continued\":\"3\"} }', '127.0.0.1', 41, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17669, '2019-12-16 16:20:23', '查询数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.getYxSystemGroupDatas()', '{ criteria: YxSystemGroupDataQueryCriteria(groupName=routine_seckill_time) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 8, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17670, '2019-12-16 16:20:35', '新增数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.create()', '{ jsonStr: {\"id\":\"\",\"groupName\":\"routine_seckill_time\",\"value\":\"\",\"addTime\":\"\",\"sort\":\"\",\"status\":\"\",\"time\":\"15\",\"continued\":\"4\"} }', '127.0.0.1', 45, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17671, '2019-12-16 16:20:36', '查询数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.getYxSystemGroupDatas()', '{ criteria: YxSystemGroupDataQueryCriteria(groupName=routine_seckill_time) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 7, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17672, '2019-12-16 16:20:45', '新增数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.create()', '{ jsonStr: {\"id\":\"\",\"groupName\":\"routine_seckill_time\",\"value\":\"\",\"addTime\":\"\",\"sort\":\"\",\"status\":\"\",\"time\":\"19\",\"continued\":\"2\"} }', '127.0.0.1', 48, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17673, '2019-12-16 16:20:45', '查询数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.getYxSystemGroupDatas()', '{ criteria: YxSystemGroupDataQueryCriteria(groupName=routine_seckill_time) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 6, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17674, '2019-12-16 16:21:48', '查询数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.getYxSystemGroupDatas()', '{ criteria: YxSystemGroupDataQueryCriteria(groupName=routine_seckill_time) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 5, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17675, '2019-12-16 16:21:53', '修改数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.update()', '{ jsonStr: {\"id\":223,\"groupName\":\"routine_seckill_time\",\"time\":\"192\",\"continued\":\"2\"} }', '127.0.0.1', 68, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17676, '2019-12-16 16:21:53', '查询数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.getYxSystemGroupDatas()', '{ criteria: YxSystemGroupDataQueryCriteria(groupName=routine_seckill_time) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 4, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17677, '2019-12-16 16:21:57', '修改数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.update()', '{ jsonStr: {\"id\":223,\"groupName\":\"routine_seckill_time\",\"time\":\"19\",\"continued\":\"2\"} }', '127.0.0.1', 52, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17678, '2019-12-16 16:21:57', '查询数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.getYxSystemGroupDatas()', '{ criteria: YxSystemGroupDataQueryCriteria(groupName=routine_seckill_time) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 7, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17679, '2019-12-16 16:22:08', '查询YxStoreSeckill', NULL, 'INFO', 'co.yixiang.modules.activity.rest.YxStoreSeckillController.getYxStoreSeckills()', '{ criteria: YxStoreSeckillQueryCriteria(title=null) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 6, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17680, '2019-12-16 17:41:56', '用户登录', NULL, 'INFO', 'co.yixiang.modules.security.rest.AuthenticationController.login()', '{ authorizationUser: {username=15136175246, password= ******} }', '127.0.0.1', 1090, '', '内网IP'); +INSERT INTO `log` VALUES (17681, '2019-12-16 17:43:55', '用户登录', NULL, 'INFO', 'co.yixiang.modules.security.rest.AuthenticationController.login()', '{ authorizationUser: {username=15136175246, password= ******} }', '127.0.0.1', 25, '', '内网IP'); +INSERT INTO `log` VALUES (17682, '2019-12-16 19:46:25', '用户登录', NULL, 'INFO', 'co.yixiang.modules.security.rest.AuthenticationController.login()', '{ authorizationUser: {username=15136175246, password= ******} }', '127.0.0.1', 2110, '', '内网IP'); +INSERT INTO `log` VALUES (17683, '2019-12-16 19:46:30', '用户登录', NULL, 'INFO', 'co.yixiang.modules.security.rest.AuthenticationController.login()', '{ authorizationUser: {username=15136175246, password= ******} }', '127.0.0.1', 26, '', '内网IP'); +INSERT INTO `log` VALUES (17684, '2019-12-16 19:50:16', '用户登录', NULL, 'INFO', 'co.yixiang.modules.security.rest.AuthenticationController.login()', '{ authorizationUser: {username=15136175246, password= ******} }', '127.0.0.1', 646, '', '内网IP'); +INSERT INTO `log` VALUES (17685, '2019-12-16 20:31:21', '用户登录', NULL, 'INFO', 'co.yixiang.modules.security.rest.AuthenticationController.login()', '{ authorizationUser: {username=15136175246, password= ******} }', '127.0.0.1', 1167, '', '内网IP'); +INSERT INTO `log` VALUES (17686, '2019-12-17 11:17:45', '用户登录', NULL, 'INFO', 'co.yixiang.modules.security.rest.AuthenticationController.login()', '{ authorizationUser: {username=15136175246, password= ******} }', '127.0.0.1', 882, '', '内网IP'); +INSERT INTO `log` VALUES (17687, '2019-12-17 12:14:58', '用户登录', NULL, 'INFO', 'co.yixiang.modules.security.rest.AuthenticationController.login()', '{ authorizationUser: {username=15136175246, password= ******} }', '127.0.0.1', 1025, '', '内网IP'); +INSERT INTO `log` VALUES (17688, '2019-12-17 13:20:07', '用户登录', NULL, 'INFO', 'co.yixiang.modules.security.rest.AuthenticationController.login()', '{ authorizationUser: {username=15136175246, password= ******} }', '127.0.0.1', 858, '', '内网IP'); +INSERT INTO `log` VALUES (17689, '2019-12-17 13:20:10', '用户登录', NULL, 'INFO', 'co.yixiang.modules.security.rest.AuthenticationController.login()', '{ authorizationUser: {username=15136175246, password= ******} }', '127.0.0.1', 18, '', '内网IP'); -- ---------------------------- -- Table structure for menu @@ -3553,7 +3673,7 @@ CREATE TABLE `menu` ( `component_name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '-', PRIMARY KEY (`id`) USING BTREE, INDEX `FKqcf9gem97gqa5qjm4d3elcqt5`(`pid`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 83 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; +) ENGINE = InnoDB AUTO_INCREMENT = 85 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of menu @@ -3617,6 +3737,8 @@ INSERT INTO `menu` VALUES (79, '2019-12-05 14:12:16', b'0', '签到天数配置' INSERT INTO `menu` VALUES (80, '2019-12-11 17:28:38', b'0', '用户账单', 'shop/user/bill', 46, 24, 'list', 'bill', b'0', b'0', 'Bill'); INSERT INTO `menu` VALUES (81, '2019-12-12 16:36:00', b'0', '物流快递', 'shop/express/index', 53, 43, 'express', 'express', b'0', b'0', 'Express'); INSERT INTO `menu` VALUES (82, '2019-12-13 14:42:50', b'0', '微信模板消息', 'wechat/template/index', 48, 35, 'anq', 'template', b'0', b'0', 'Template'); +INSERT INTO `menu` VALUES (83, '2019-12-16 13:06:29', b'0', '秒杀产品', 'activity/seckill/index', 63, 66, 'seckill', 'seckill', b'0', b'0', 'Seckill'); +INSERT INTO `menu` VALUES (84, '2019-12-16 16:07:42', b'0', '秒杀配置', 'shop/set/seckill', 63, 67, 'configure', 'seckillconfig', b'0', b'0', 'Seckillconfig'); -- ---------------------------- -- Table structure for permission @@ -3948,6 +4070,8 @@ INSERT INTO `roles_menus` VALUES (79, 1); INSERT INTO `roles_menus` VALUES (80, 1); INSERT INTO `roles_menus` VALUES (81, 1); INSERT INTO `roles_menus` VALUES (82, 1); +INSERT INTO `roles_menus` VALUES (83, 1); +INSERT INTO `roles_menus` VALUES (84, 1); INSERT INTO `roles_menus` VALUES (1, 2); INSERT INTO `roles_menus` VALUES (2, 2); INSERT INTO `roles_menus` VALUES (3, 2); @@ -4099,7 +4223,7 @@ CREATE TABLE `visits` ( `week_day` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE, UNIQUE INDEX `UK_11aksgq87euk9bcyeesfs4vtp`(`date`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 163 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; +) ENGINE = InnoDB AUTO_INCREMENT = 167 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of visits @@ -4171,6 +4295,10 @@ INSERT INTO `visits` VALUES (159, '2019-12-10 19:39:46', '2019-12-10', 1, 1, 'Tu INSERT INTO `visits` VALUES (160, '2019-12-11 11:11:35', '2019-12-11', 1, 52, 'Wed'); INSERT INTO `visits` VALUES (161, '2019-12-12 13:33:10', '2019-12-12', 1, 2, 'Thu'); INSERT INTO `visits` VALUES (162, '2019-12-13 14:17:04', '2019-12-13', 1, 6, 'Fri'); +INSERT INTO `visits` VALUES (163, '2019-12-14 09:17:31', '2019-12-14', 1, 2, 'Sat'); +INSERT INTO `visits` VALUES (164, '2019-12-15 20:23:23', '2019-12-15', 1, 1, 'Sun'); +INSERT INTO `visits` VALUES (165, '2019-12-16 10:44:59', '2019-12-16', 1, 5, 'Mon'); +INSERT INTO `visits` VALUES (166, '2019-12-17 09:34:14', '2019-12-17', 1, 1, 'Tue'); -- ---------------------------- -- Table structure for yx_article @@ -4446,7 +4574,7 @@ CREATE TABLE `yx_store_cart` ( INDEX `uid_2`(`uid`, `is_del`) USING BTREE, INDEX `uid_3`(`uid`, `is_new`) USING BTREE, INDEX `type`(`type`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 97 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '购物车表' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 100 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '购物车表' ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of yx_store_cart @@ -4527,6 +4655,9 @@ INSERT INTO `yx_store_cart` VALUES (93, 12, 'product', 19, '', 1, 1575552290, 0, INSERT INTO `yx_store_cart` VALUES (94, 12, 'product', 19, '', 1, 1575552309, 0, 0, 1, 1, 0, 0); INSERT INTO `yx_store_cart` VALUES (95, 12, 'product', 19, '00e86525a7af4dcf9e653ae0a2062369', 1, 1575771477, 1, 0, 1, 0, 0, 0); INSERT INTO `yx_store_cart` VALUES (96, 12, 'product', 19, '00e86525a7af4dcf9e653ae0a2062369', 1, 1576234305, 1, 0, 1, 0, 0, 0); +INSERT INTO `yx_store_cart` VALUES (97, 12, 'product', 19, '00e86525a7af4dcf9e653ae0a2062369', 5, 1576290026, 0, 0, 1, 0, 0, 0); +INSERT INTO `yx_store_cart` VALUES (98, 12, 'product', 20, '', 1, 1576559862, 0, 0, 1, 0, 0, 0); +INSERT INTO `yx_store_cart` VALUES (99, 12, 'product', 20, '', 1, 1576561530, 1, 0, 1, 0, 2, 0); -- ---------------------------- -- Table structure for yx_store_category @@ -4665,7 +4796,7 @@ CREATE TABLE `yx_store_coupon` ( -- ---------------------------- INSERT INTO `yx_store_coupon` VALUES (1, '双十一', 0, 1.00, 100.00, 10, 0, 1, 1573281957, 0); INSERT INTO `yx_store_coupon` VALUES (2, '44444446', 0, 1.00, 1.00, 1, 0, 1, 1574130748, 0); -INSERT INTO `yx_store_coupon` VALUES (3, '999', 0, 1.00, 1.00, 1, 1, 0, 1574131073, 0); +INSERT INTO `yx_store_coupon` VALUES (3, '999', 0, 1.00, 1.00, 1, 1, 1, 1574131073, 0); -- ---------------------------- -- Table structure for yx_store_coupon_issue @@ -4696,9 +4827,9 @@ CREATE TABLE `yx_store_coupon_issue` ( -- ---------------------------- -- Records of yx_store_coupon_issue -- ---------------------------- -INSERT INTO `yx_store_coupon_issue` VALUES (11, '双十一', 1, 1573352364, 1573750800, 1000, 999, 0, 1, 0, 1573352375, '2019-11-15 01:00:00', '2019-11-10 10:19:24'); -INSERT INTO `yx_store_coupon_issue` VALUES (12, '双十一', 1, 1573353166, 1574092800, 100, 99, 0, 1, 0, 1573353175, '2019-11-19 00:00:00', '2019-11-10 10:32:46'); -INSERT INTO `yx_store_coupon_issue` VALUES (13, '双十一', 1, 1573353254, 1574784000, 10, 9, 0, 1, 0, 1573353261, '2019-11-27 00:00:00', '2019-11-10 10:34:14'); +INSERT INTO `yx_store_coupon_issue` VALUES (11, '双十一', 1, 1573352364, 1577277208, 1000, 999, 0, 1, 0, 1573352375, '2020-01-15 01:00:00', '2019-12-02 10:19:24'); +INSERT INTO `yx_store_coupon_issue` VALUES (12, '双十一', 1, 1573353166, 1577277208, 100, 99, 0, 1, 0, 1573353175, '2019-12-26 00:00:00', '2019-11-10 10:32:46'); +INSERT INTO `yx_store_coupon_issue` VALUES (13, '双十一', 1, 1573353254, 1577277208, 10, 9, 0, 1, 0, 1573353261, '2019-12-26 00:00:00', '2019-11-10 10:34:14'); -- ---------------------------- -- Table structure for yx_store_coupon_issue_user @@ -4822,7 +4953,7 @@ CREATE TABLE `yx_store_order` ( INDEX `status`(`status`) USING BTREE, INDEX `is_del`(`is_del`) USING BTREE, INDEX `coupon_id`(`coupon_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 101 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '订单表' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 102 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '订单表' ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of yx_store_order @@ -4883,7 +5014,7 @@ INSERT INTO `yx_store_order` VALUES (85, '20191118091147010', 14, 'zhang', '1513 INSERT INTO `yx_store_order` VALUES (86, '20191118092248659', 14, 'zhang', '15136175247', '上海 静安区 城区 999', '80', 0.00, 1, 120.00, 0.00, 120.00, 0.00, 0.00, 0, 0.00, 0, NULL, 'weixin', 1574040168, 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, '', NULL, NULL, NULL, 1.00, 0.00, NULL, '', 1, '2b31ac7ae31540569ba10db538aed627', NULL, 0, 0, 0, 0, 100.00, 0, 0, '', 0, 1, 1, 0, 0); INSERT INTO `yx_store_order` VALUES (87, '20191118093545580', 14, 'zhang', '15136175247', '上海 静安区 城区 999', '81', 0.00, 1, 120.00, 0.00, 120.00, 0.00, 0.00, 0, 0.00, 0, NULL, 'weixin', 1574040945, 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, '', NULL, NULL, NULL, 1.00, 0.00, NULL, '', 1, 'e859607310ec47eb8aaec87956a0cc1b', NULL, 0, 0, 0, 0, 100.00, 0, 0, '', 0, 1, 1, 0, 0); INSERT INTO `yx_store_order` VALUES (88, '20191118101528735', 14, 'zhang', '15136175247', '上海 静安区 城区 999', '82', 0.00, 1, 120.00, 0.00, 120.00, 0.00, 0.00, 0, 0.00, 0, NULL, 'weixin', 1574043328, 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, '', NULL, NULL, NULL, 1.00, 0.00, NULL, '', 1, 'e9b44d207cc249d4a505b8b809e17789', NULL, 0, 0, 0, 0, 100.00, 0, 0, '', 0, 1, 1, 0, 0); -INSERT INTO `yx_store_order` VALUES (91, '20191120180255448', 12, 'hu', '15136175246', '上海 闸北区 城区 99999', '85', 0.00, 1, 120.00, 0.00, 120.00, 0.00, 0.00, 0, 0.00, 1, 1574244175, 'yue', 1574244175, 0, 2, NULL, NULL, 1574326954, '拼团取消开团', NULL, 120.00, '', NULL, NULL, NULL, 1.00, 0.00, NULL, '', 0, '63975e6c877541008bf8338044920085', NULL, 0, 0, 2, 1, 0.20, 0, 0, '', 0, 1, 1, 0, 0); +INSERT INTO `yx_store_order` VALUES (91, '20191120180255448', 12, 'hu', '15136175246', '上海 闸北区 城区 99999', '85', 0.00, 1, 120.00, 0.00, 120.00, 0.00, 0.00, 0, 0.00, 1, 1574244175, 'yue', 1574244175, -1, 2, NULL, NULL, 1574326954, '拼团取消开团', NULL, 120.00, '', NULL, NULL, NULL, 1.00, 0.00, NULL, '', 0, '63975e6c877541008bf8338044920085', NULL, 0, 0, 2, 1, 0.20, 0, 0, '', 0, 1, 1, 0, 0); INSERT INTO `yx_store_order` VALUES (92, '20191121170829222', 12, 'hu', '15136175246', '上海 闸北区 城区 99999', '86', 0.00, 1, 1.00, 0.00, 1.00, 0.00, 0.00, 0, 0.00, 1, 1574327309, 'yue', 1574327309, 1, 0, NULL, NULL, NULL, NULL, NULL, 0.00, 'ZTO', '中通快递', 'express', '9999999', 0.00, 0.00, NULL, '', 0, 'd0c1574db2da4ee5a714223e30b00431', NULL, 0, 0, 2, 2, 0.00, 0, 0, '', 0, 1, 1, 0, 0); INSERT INTO `yx_store_order` VALUES (93, '20191121174323679', 11, '胡鹏', '15139175246', '重庆 荣昌县 广顺镇 999', '87', 0.00, 1, 1.00, 0.00, 1.00, 0.00, 0.00, 0, 0.00, 1, 1574329404, 'yue', 1574329403, 1, 0, NULL, NULL, NULL, NULL, NULL, 0.00, '', '顺丰快递', 'express', '9669999', 0.00, 0.00, NULL, '', 0, 'd59ebdae5a4b457b910c366c1f5e5d61', NULL, 0, 0, 2, 2, 0.00, 0, 0, '', 0, 1, 1, 0, 0); INSERT INTO `yx_store_order` VALUES (96, '20191122202407197', 12, 'hu', '15136175246', '上海 闸北区 城区 99999', '88', 0.00, 1, 1.00, 0.00, 1.00, 0.00, 0.00, 0, 0.00, 1, 1574425447, 'yue', 1574425447, 2, 0, NULL, NULL, NULL, NULL, NULL, 0.00, '', '顺丰快递', 'express', '99999', 0.00, 0.00, NULL, '', 0, '69c1587a72364eb1b14dc51173511b17', NULL, 0, 0, 2, 4, 0.00, 0, 0, '', 0, 1, 1, 0, 0); @@ -4891,6 +5022,7 @@ INSERT INTO `yx_store_order` VALUES (97, '20191130142549154', 12, 'hu', '1513617 INSERT INTO `yx_store_order` VALUES (98, '20191130142917149', 12, 'hu', '15136175246', '上海 闸北区 城区 99999', '90', 0.00, 1, 120.00, 0.00, 120.00, 0.00, 0.00, 0, 0.00, 0, NULL, 'weixin', 1575095357, 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, '', NULL, NULL, NULL, 1.00, 0.00, NULL, '', 1, '42fa607a1bf243e8b797767c81be8950', NULL, 0, 0, 0, 0, 100.00, 0, 0, '', 0, 1, 1, 0, 0); INSERT INTO `yx_store_order` VALUES (99, '20191208101834125', 12, 'hu', '15136175246', '上海 闸北区 城区 99999', '95', 0.00, 1, 118.80, 0.00, 118.80, 0.00, 0.00, 0, 0.00, 1, 1575771514, 'yue', 1575771514, 1, 0, NULL, NULL, NULL, NULL, NULL, 0.00, 'STO', '申通快递', 'express', '773002763618907', 1.00, 0.00, NULL, '', 0, 'ffe728984deb4fde9efc3ff9ce900bfb', NULL, 0, 0, 0, 0, 100.00, 0, 0, '', 0, 1, 1, 0, 0); INSERT INTO `yx_store_order` VALUES (100, '20191213185147846', 12, 'hu', '15136175246', '上海 闸北区 城区 99999', '96', 0.00, 1, 118.80, 0.00, 118.80, 0.00, 0.00, 0, 0.00, 1, 1576234308, 'yue', 1576234307, 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, '', NULL, NULL, NULL, 1.00, 0.00, NULL, '', 0, '6f7c8d3152d9432b96b0144f56cfa97f', NULL, 0, 0, 0, 0, 100.00, 0, 0, '', 0, 1, 1, 0, 0); +INSERT INTO `yx_store_order` VALUES (101, '20191217144936011', 12, 'hu', '15136175246', '上海 闸北区 城区 99999', '99', 0.00, 1, 1.00, 0.00, 1.00, 0.00, 0.00, 0, 0.00, 1, 1576565376, 'yue', 1576565376, 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, '', NULL, NULL, NULL, 0.00, 0.00, NULL, '', 0, '6f7494dc75e64d76a9c47b5caeb6a6cd', NULL, 0, 0, 0, 0, 0.50, 2, 0, '', 0, 1, 1, 0, 0); -- ---------------------------- -- Table structure for yx_store_order_cart_info @@ -4907,7 +5039,7 @@ CREATE TABLE `yx_store_order_cart_info` ( UNIQUE INDEX `oid`(`oid`, `unique`) USING BTREE, INDEX `cart_id`(`cart_id`) USING BTREE, INDEX `product_id`(`product_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 97 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '订单购物详情表' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 98 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '订单购物详情表' ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of yx_store_order_cart_info @@ -4978,6 +5110,7 @@ INSERT INTO `yx_store_order_cart_info` VALUES (93, 97, 89, 19, '{\"addTime\":157 INSERT INTO `yx_store_order_cart_info` VALUES (94, 98, 90, 19, '{\"addTime\":1575095354,\"productId\":19,\"seckillId\":0,\"vipTruePrice\":120.0,\"combinationId\":0,\"costPrice\":100.0,\"trueStock\":993,\"truePrice\":120.0,\"type\":\"product\",\"cartNum\":1,\"productInfo\":{\"otPrice\":0.50,\"userCollect\":false,\"description\":\"

文件请传QQ2412733099,

718504558或2412733099@qq.com邮箱,

手机/微信:13733990583

量大请联系店主,一定让您满意而归

   实体店面经营 保质保量

A4黑白2毛/张,量大1毛/张,

A3黑白双面5毛/张,量大3毛/张,

更大量请联系店主报价,

每消费1元可积1分,1分抵现金1毛,

付款时直接抵扣

(如此优惠的基础上还可积分,积分抵现金)



    

\",\"merUse\":0,\"isPostage\":1,\"image_base\":\"https://image.dayouqiantu.cn/5ca011a1cd487.jpg\",\"isBest\":1,\"sales\":17,\"price\":120.00,\"isBargain\":0,\"userLike\":false,\"vipPrice\":0.20,\"storeName\":\"70gA4黑白打印复印\",\"id\":19,\"keyword\":\"打印复印\",\"stock\":99,\"image\":\"https://image.dayouqiantu.cn/5ca011a1cd487.jpg\",\"cost\":0.20,\"isGood\":1,\"unitName\":\"张\",\"isBenefit\":1,\"giveIntegral\":1.00,\"isNew\":1,\"sort\":1,\"sliderImageArr\":[\"https://image.dayouqiantu.cn/5ca01c7fc9238.jpg\",\"https://image.dayouqiantu.cn/5ca01c7676042.jpg\"],\"sliderImage\":\"https://image.dayouqiantu.cn/5ca01c7fc9238.jpg,https://image.dayouqiantu.cn/5ca01c7676042.jpg\",\"barCode\":\"\",\"isShow\":1,\"postage\":0.00,\"codePath\":\"\",\"soureLink\":\"\",\"cateId\":\"24\",\"isSeckill\":0,\"storeInfo\":\"打印复印资料A4黑白彩色印刷画册书本装订图文数码快印服务\",\"isDel\":0,\"isHot\":1,\"attrInfo\":{\"image\":\"https://image.dayouqiantu.cn/5ca011a1cd487.jpg\",\"cost\":100.00,\"productId\":19,\"price\":120.00,\"unique\":\"00e86525a7af4dcf9e653ae0a2062369\",\"suk\":\"A1,白色\",\"id\":22,\"stock\":993}},\"uid\":12,\"productAttrUnique\":\"00e86525a7af4dcf9e653ae0a2062369\",\"bargainId\":0,\"id\":90}', 'e76d7e013f46469492b62998752ad052'); INSERT INTO `yx_store_order_cart_info` VALUES (95, 99, 95, 19, '{\"addTime\":1575771477,\"productId\":19,\"seckillId\":0,\"vipTruePrice\":120.0,\"combinationId\":0,\"costPrice\":100.0,\"trueStock\":993,\"truePrice\":118.8,\"type\":\"product\",\"cartNum\":1,\"productInfo\":{\"otPrice\":0.50,\"userCollect\":false,\"description\":\"

文件请传QQ2412733099,

718504558或2412733099@qq.com邮箱,

手机/微信:13733990583

量大请联系店主,一定让您满意而归

   实体店面经营 保质保量

A4黑白2毛/张,量大1毛/张,

A3黑白双面5毛/张,量大3毛/张,

更大量请联系店主报价,

每消费1元可积1分,1分抵现金1毛,

付款时直接抵扣

(如此优惠的基础上还可积分,积分抵现金)



    

\",\"merUse\":0,\"isPostage\":1,\"image_base\":\"https://image.dayouqiantu.cn/5ca011a1cd487.jpg\",\"isBest\":1,\"sales\":17,\"price\":120.00,\"isBargain\":0,\"userLike\":false,\"vipPrice\":0.20,\"storeName\":\"70gA4黑白打印复印\",\"id\":19,\"keyword\":\"打印复印\",\"stock\":99,\"image\":\"https://image.dayouqiantu.cn/5ca011a1cd487.jpg\",\"cost\":0.20,\"isGood\":1,\"unitName\":\"张\",\"isBenefit\":1,\"giveIntegral\":1.00,\"isNew\":1,\"sort\":1,\"sliderImageArr\":[\"https://image.dayouqiantu.cn/5ca01c7fc9238.jpg\",\"https://image.dayouqiantu.cn/5ca01c7676042.jpg\"],\"sliderImage\":\"https://image.dayouqiantu.cn/5ca01c7fc9238.jpg,https://image.dayouqiantu.cn/5ca01c7676042.jpg\",\"barCode\":\"\",\"isShow\":1,\"postage\":0.00,\"codePath\":\"\",\"soureLink\":\"\",\"cateId\":\"24\",\"isSeckill\":0,\"storeInfo\":\"打印复印资料A4黑白彩色印刷画册书本装订图文数码快印服务\",\"isDel\":0,\"isHot\":1,\"attrInfo\":{\"image\":\"https://image.dayouqiantu.cn/5ca011a1cd487.jpg\",\"cost\":100.00,\"productId\":19,\"price\":120.00,\"unique\":\"00e86525a7af4dcf9e653ae0a2062369\",\"suk\":\"A1,白色\",\"id\":22,\"stock\":993}},\"uid\":12,\"productAttrUnique\":\"00e86525a7af4dcf9e653ae0a2062369\",\"bargainId\":0,\"id\":95}', '16e9212266b949cdac21e7e45881a84f'); INSERT INTO `yx_store_order_cart_info` VALUES (96, 100, 96, 19, '{\"addTime\":1576234305,\"productId\":19,\"seckillId\":0,\"vipTruePrice\":120.0,\"combinationId\":0,\"costPrice\":100.0,\"trueStock\":992,\"truePrice\":118.8,\"type\":\"product\",\"cartNum\":1,\"productInfo\":{\"otPrice\":0.50,\"userCollect\":false,\"description\":\"

文件请传QQ2412733099,

718504558或2412733099@qq.com邮箱,

手机/微信:13733990583

量大请联系店主,一定让您满意而归

   实体店面经营 保质保量

A4黑白2毛/张,量大1毛/张,

A3黑白双面5毛/张,量大3毛/张,

更大量请联系店主报价,

每消费1元可积1分,1分抵现金1毛,

付款时直接抵扣

(如此优惠的基础上还可积分,积分抵现金)



    

\",\"merUse\":0,\"isPostage\":1,\"image_base\":\"https://image.dayouqiantu.cn/5ca011a1cd487.jpg\",\"isBest\":1,\"sales\":18,\"price\":120.00,\"isBargain\":0,\"userLike\":false,\"vipPrice\":0.20,\"storeName\":\"70gA4黑白打印复印\",\"id\":19,\"keyword\":\"打印复印\",\"stock\":99,\"image\":\"https://image.dayouqiantu.cn/5ca011a1cd487.jpg\",\"cost\":0.20,\"isGood\":1,\"unitName\":\"张\",\"isBenefit\":1,\"giveIntegral\":1.00,\"isNew\":1,\"sort\":1,\"sliderImageArr\":[\"https://image.dayouqiantu.cn/5ca01c7fc9238.jpg\",\"https://image.dayouqiantu.cn/5ca01c7676042.jpg\"],\"sliderImage\":\"https://image.dayouqiantu.cn/5ca01c7fc9238.jpg,https://image.dayouqiantu.cn/5ca01c7676042.jpg\",\"barCode\":\"\",\"isShow\":1,\"postage\":0.00,\"codePath\":\"\",\"soureLink\":\"\",\"cateId\":\"24\",\"isSeckill\":0,\"storeInfo\":\"打印复印资料A4黑白彩色印刷画册书本装订图文数码快印服务\",\"isDel\":0,\"isHot\":1,\"attrInfo\":{\"image\":\"https://image.dayouqiantu.cn/5ca011a1cd487.jpg\",\"cost\":100.00,\"productId\":19,\"price\":120.00,\"unique\":\"00e86525a7af4dcf9e653ae0a2062369\",\"suk\":\"A1,白色\",\"id\":22,\"stock\":992}},\"uid\":12,\"productAttrUnique\":\"00e86525a7af4dcf9e653ae0a2062369\",\"bargainId\":0,\"id\":96}', 'd186a2b7f7f146389c33223f3ce180cf'); +INSERT INTO `yx_store_order_cart_info` VALUES (97, 101, 99, 20, '{\"addTime\":1576561530,\"productId\":20,\"seckillId\":2,\"vipTruePrice\":0.0,\"combinationId\":0,\"costPrice\":0.5,\"trueStock\":100,\"truePrice\":1.0,\"type\":\"product\",\"cartNum\":1,\"productInfo\":{\"userCollect\":false,\"isPostage\":1,\"image_base\":\"https://image.dayouqiantu.cn/5ca04fa9c08ef.jpg\",\"sales\":1,\"price\":1.00,\"userLike\":false,\"storeName\":\"70gA4彩色打印复印\",\"id\":2,\"stock\":100,\"image\":\"https://image.dayouqiantu.cn/5ca04fa9c08ef.jpg\",\"cost\":0.50,\"sliderImageArr\":[],\"isShow\":1,\"postage\":0.00,\"isDel\":0},\"uid\":12,\"productAttrUnique\":\"\",\"bargainId\":0,\"id\":99}', 'e132b2634fc64a8eb5fe4022ca04dcb7'); -- ---------------------------- -- Table structure for yx_store_order_status @@ -4992,7 +5125,7 @@ CREATE TABLE `yx_store_order_status` ( PRIMARY KEY (`id`) USING BTREE, INDEX `oid`(`oid`) USING BTREE, INDEX `change_type`(`change_type`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 147 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '订单操作记录表' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 150 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '订单操作记录表' ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of yx_store_order_status @@ -5104,6 +5237,9 @@ INSERT INTO `yx_store_order_status` VALUES (143, 61, 'delivery_goods', '已发 INSERT INTO `yx_store_order_status` VALUES (144, 42, 'delivery_goods', '已发货 快递公司:顺丰速运快递单号:999999', 1576229079); INSERT INTO `yx_store_order_status` VALUES (145, 100, 'cache_key_create_order', '订单生成', 1576234308); INSERT INTO `yx_store_order_status` VALUES (146, 100, 'pay_success', '用户付款成功', 1576234308); +INSERT INTO `yx_store_order_status` VALUES (147, 91, 'refund_price', '退款给用户:120元', 1576286856); +INSERT INTO `yx_store_order_status` VALUES (148, 101, 'cache_key_create_order', '订单生成', 1576565376); +INSERT INTO `yx_store_order_status` VALUES (149, 101, 'pay_success', '用户付款成功', 1576565376); -- ---------------------------- -- Table structure for yx_store_pink @@ -5381,8 +5517,8 @@ CREATE TABLE `yx_store_seckill` ( `unit_name` varchar(16) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '单位名', `postage` decimal(8, 2) UNSIGNED NOT NULL DEFAULT 0.00 COMMENT '邮费', `description` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '内容', - `start_time` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '开始时间', - `stop_time` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '结束时间', + `start_time` int(11) NOT NULL DEFAULT 0 COMMENT '开始时间', + `stop_time` int(11) NOT NULL DEFAULT 0 COMMENT '结束时间', `add_time` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '添加时间', `status` tinyint(1) UNSIGNED NOT NULL COMMENT '产品状态', `is_postage` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '是否包邮', @@ -5390,6 +5526,8 @@ CREATE TABLE `yx_store_seckill` ( `is_del` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '删除 0未删除1已删除', `num` int(11) UNSIGNED NOT NULL COMMENT '最多秒杀几个', `is_show` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '显示', + `end_time_date` datetime(0) NOT NULL, + `start_time_date` datetime(0) NOT NULL, PRIMARY KEY (`id`) USING BTREE, INDEX `product_id`(`product_id`) USING BTREE, INDEX `start_time`(`start_time`, `stop_time`) USING BTREE, @@ -5399,7 +5537,13 @@ CREATE TABLE `yx_store_seckill` ( INDEX `add_time`(`add_time`) USING BTREE, INDEX `sort`(`sort`) USING BTREE, INDEX `is_postage`(`is_postage`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '商品秒杀产品表' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '商品秒杀产品表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of yx_store_seckill +-- ---------------------------- +INSERT INTO `yx_store_seckill` VALUES (1, 20, 'https://image.dayouqiantu.cn/5ca04fa9c08ef.jpg', 'https://image.dayouqiantu.cn/5ca05103ad634.jpg,https://image.dayouqiantu.cn/5ca04fa9c08ef.jpg', '70gA4彩色打印复印', '70gA4彩色打印复印', 1.00, 0.50, 1.00, 0.00, 0, 100, 1, '张', 0.00, '

7文件请传QQ2412733099,

718504558或2412733099@qq.com邮箱,

手机/微信:13733990583

量大请联系店主,一定让您满意而归

   实体店面经营 保质保量

A4黑白2毛/张,量大1毛/张,

A3黑白双面5毛/张,量大3毛/张,

更大量请联系店主报价,

每消费1元可积1分,1分抵现金1毛,

付款时直接抵扣

(如此优惠的基础上还可积分,积分抵现金)



', 1576476046, 1577203200, '1576476055', 1, 1, 0, 0, 1, 1, '2019-12-25 00:00:00', '2019-12-16 14:00:46'); +INSERT INTO `yx_store_seckill` VALUES (2, 20, 'https://image.dayouqiantu.cn/5ca04fa9c08ef.jpg', 'https://image.dayouqiantu.cn/5ca05103ad634.jpg,https://image.dayouqiantu.cn/5ca04fa9c08ef.jpg', '70gA4彩色打印复印', '70gA4彩色打印复印', 1.00, 0.50, 1.00, 0.00, 0, 99, 2, '张', 0.00, '

7文件请传QQ2412733099,

718504558或2412733099@qq.com邮箱,

手机/微信:13733990583

量大请联系店主,一定让您满意而归

   实体店面经营 保质保量

A4黑白2毛/张,量大1毛/张,

A3黑白双面5毛/张,量大3毛/张,

更大量请联系店主报价,

每消费1元可积1分,1分抵现金1毛,

付款时直接抵扣

(如此优惠的基础上还可积分,积分抵现金)



', 1576477734, 1576598400, '1576477741', 1, 1, 0, 0, 1, 1, '2019-12-18 00:00:00', '2019-12-16 14:28:54'); -- ---------------------------- -- Table structure for yx_store_seckill_attr @@ -5599,7 +5743,7 @@ CREATE TABLE `yx_system_group_data` ( `sort` int(11) NULL DEFAULT 0 COMMENT '数据排序', `status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '状态(1:开启;2:关闭;)', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 217 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '组合数据详情表' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 226 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '组合数据详情表' ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of yx_system_group_data @@ -5634,6 +5778,13 @@ INSERT INTO `yx_system_group_data` VALUES (211, 'sign_day_num', '{\"addTime\":\" INSERT INTO `yx_system_group_data` VALUES (212, 'sign_day_num', '{\"addTime\":\"\",\"sign_num\":\"60\",\"id\":\"\",\"sort\":\"\",\"value\":\"\",\"day\":\"第六天\",\"status\":\"\"}', 1575527354, NULL, 1); INSERT INTO `yx_system_group_data` VALUES (213, 'sign_day_num', '{\"addTime\":\"\",\"sign_num\":\"100\",\"id\":\"\",\"sort\":\"\",\"value\":\"\",\"day\":\"奖励\",\"status\":\"\"}', 1575527381, NULL, 1); INSERT INTO `yx_system_group_data` VALUES (216, 'routine_home_menus', '{\"name\":\"积分签到\",\"id\":180,\"pic\":\"https://image.dayouqiantu.cn/5de8a693f365e.jpg\",\"url\":\"/user/sign\"}', 0, 0, 1); +INSERT INTO `yx_system_group_data` VALUES (218, 'routine_seckill_time', '{\"continued\":2,\"id\":\"\",\"time\":5}', 1576484368, NULL, 1); +INSERT INTO `yx_system_group_data` VALUES (219, 'routine_seckill_time', '{\"addTime\":\"\",\"continued\":\"3\",\"id\":\"\",\"sort\":\"\",\"time\":\"7\",\"value\":\"\",\"status\":\"\"}', 1576484383, NULL, 1); +INSERT INTO `yx_system_group_data` VALUES (220, 'routine_seckill_time', '{\"addTime\":\"\",\"continued\":\"2\",\"id\":\"\",\"sort\":\"\",\"time\":\"10\",\"value\":\"\",\"status\":\"\"}', 1576484404, NULL, 1); +INSERT INTO `yx_system_group_data` VALUES (221, 'routine_seckill_time', '{\"addTime\":\"\",\"continued\":\"3\",\"id\":\"\",\"sort\":\"\",\"time\":\"12\",\"value\":\"\",\"status\":\"\"}', 1576484422, NULL, 1); +INSERT INTO `yx_system_group_data` VALUES (222, 'routine_seckill_time', '{\"addTime\":\"\",\"continued\":\"4\",\"id\":\"\",\"sort\":\"\",\"time\":\"15\",\"value\":\"\",\"status\":\"\"}', 1576484435, NULL, 1); +INSERT INTO `yx_system_group_data` VALUES (223, 'routine_seckill_time', '{\"continued\":\"2\",\"id\":223,\"time\":\"19\"}', 1576484444, NULL, 1); +INSERT INTO `yx_system_group_data` VALUES (224, 'routine_home_menus', '{\"name\":\"秒杀\",\"id\":180,\"pic\":\"https://image.dayouqiantu.cn/5df74a3bbac9f.png\",\"url\":\"/activity/goods_seckill\"}', 0, 0, 1); -- ---------------------------- -- Table structure for yx_system_store @@ -5784,7 +5935,7 @@ CREATE TABLE `yx_user` ( -- Records of yx_user -- ---------------------------- INSERT INTO `yx_user` VALUES (11, 'hupeng', 'hupeng', 'e10adc3949ba59abbe56e057f20f883e', 'e10adc3949ba59abbe56e057f20f883e', '', 0, '', '', 0, 0, '会敲代码的喵', 'http://thirdwx.qlogo.cn/mmopen/vi_32/DYAIOgq83er0oNIia5bws9DCW1VM9qNbObKU9icwtvMpp7zE534e4Y9gwqR5Izvllladvop0ibpJJg2n6ticNSB9gA/132', '', 1573120584, '', 1573120584, '', 9999.00, 12.70, 0.00, 0, 1, 0, 0, 1573613651, 'wechat', 0, 2, 1, 0, '', 0, ''); -INSERT INTO `yx_user` VALUES (12, '15136175246', '151361752469', 'e10adc3949ba59abbe56e057f20f883e', 'e10adc3949ba59abbe56e057f20f883e', '', 0, '', '', 0, 0, '会敲代码的喵2', 'https://image.dayouqiantu.cn/5dc2c7f3a104c.png', '15136175246', 1573120881, '', 1573120881, '', 9361.00, 28.00, 40.00, 2, 1, 1, 11, 1573527758, 'h5', 0, 11, 1, 0, '', 0, ''); +INSERT INTO `yx_user` VALUES (12, '15136175246', '151361752469', 'e10adc3949ba59abbe56e057f20f883e', 'e10adc3949ba59abbe56e057f20f883e', '', 0, '', '', 0, 0, '会敲代码的喵2', 'https://image.dayouqiantu.cn/5dc2c7f3a104c.png', '15136175246', 1573120881, '', 1573120881, '', 9480.00, 28.00, 40.00, 2, 1, 1, 11, 1573527758, 'h5', 0, 12, 1, 0, '', 0, ''); INSERT INTO `yx_user` VALUES (14, '15136175247', '15136175247', 'e10adc3949ba59abbe56e057f20f883e', 'e10adc3949ba59abbe56e057f20f883e', '', 0, '', '', 0, 0, '15136175247', 'https://image.dayouqiantu.cn/5dc2c7f3a104c.png', '15136175247', 1573612696, '', 1573612696, '', 9400.00, 0.00, 2.00, 0, 1, 0, 12, 1573612702, 'h5', 0, 5, 0, 0, '', 0, ''); -- ---------------------------- @@ -5843,7 +5994,7 @@ CREATE TABLE `yx_user_bill` ( INDEX `add_time`(`add_time`) USING BTREE, INDEX `pm`(`pm`) USING BTREE, INDEX `type`(`category`, `type`, `link_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 51 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户账单表' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 53 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户账单表' ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of yx_user_bill @@ -5893,6 +6044,8 @@ INSERT INTO `yx_user_bill` VALUES (47, 12, '99', 0, '购买商品', 'now_money', INSERT INTO `yx_user_bill` VALUES (48, 12, '0', 1, '签到奖励', 'integral', 'sign', 20.00, 20.00, '', 1575771932, 1); INSERT INTO `yx_user_bill` VALUES (49, 11, '96', 1, '获得推广佣金', 'now_money', 'brokerage', 0.70, 12.70, '会敲代码的喵2成功消费1.00元,奖励推广佣金0.7', 1575868078, 1); INSERT INTO `yx_user_bill` VALUES (50, 12, '100', 0, '购买商品', 'now_money', 'pay_product', 118.80, 9479.80, '余额支付', 1576234308, 1); +INSERT INTO `yx_user_bill` VALUES (51, 12, '91', 1, '商品退款', 'now_money', 'pay_product_refund', 120.00, 9481.00, '订单退款到余额', 1576286856, 1); +INSERT INTO `yx_user_bill` VALUES (52, 12, '101', 0, '购买商品', 'now_money', 'pay_product', 1.00, 9481.00, '余额支付', 1576565376, 1); -- ---------------------------- -- Table structure for yx_user_enter diff --git a/yshop-api/pom.xml b/yshop-api/pom.xml index cff340ae..fccb0992 100644 --- a/yshop-api/pom.xml +++ b/yshop-api/pom.xml @@ -5,7 +5,7 @@ yshop co.yixiang - 1.4 + 1.5 4.0.0 @@ -21,18 +21,18 @@ co.yixiang yshop-common - 1.4 + 1.5 co.yixiang yshop-tools - 1.4 + 1.5 co.yixiang yshop-mp - 1.4 + 1.5 diff --git a/yshop-api/src/main/java/co/yixiang/modules/activity/entity/YxStoreSeckill.java b/yshop-api/src/main/java/co/yixiang/modules/activity/entity/YxStoreSeckill.java new file mode 100644 index 00000000..9e47053b --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/activity/entity/YxStoreSeckill.java @@ -0,0 +1,113 @@ +package co.yixiang.modules.activity.entity; + +import java.math.BigDecimal; + +import com.baomidou.mybatisplus.annotation.IdType; +import co.yixiang.common.entity.BaseEntity; + +import java.util.Date; + +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + *

+ * 商品秒杀产品表 + *

+ * + * @author xuwenbo + * @since 2019-12-14 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@ApiModel(value = "YxStoreSeckill对象", description = "商品秒杀产品表") +public class YxStoreSeckill extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "商品秒杀产品表id") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "商品id") + private Integer productId; + + @ApiModelProperty(value = "推荐图") + private String image; + + @ApiModelProperty(value = "轮播图") + private String images; + + @ApiModelProperty(value = "活动标题") + private String title; + + @ApiModelProperty(value = "简介") + private String info; + + @ApiModelProperty(value = "价格") + private BigDecimal price; + + @ApiModelProperty(value = "成本") + private BigDecimal cost; + + @ApiModelProperty(value = "原价") + private BigDecimal otPrice; + + @ApiModelProperty(value = "返多少积分") + private BigDecimal giveIntegral; + + @ApiModelProperty(value = "排序") + private Integer sort; + + @ApiModelProperty(value = "库存") + private Integer stock; + + @ApiModelProperty(value = "销量") + private Integer sales; + + @ApiModelProperty(value = "单位名") + private String unitName; + + @ApiModelProperty(value = "邮费") + private BigDecimal postage; + + @ApiModelProperty(value = "内容") + private String description; + + @ApiModelProperty(value = "开始时间") + private Integer startTime; + + @ApiModelProperty(value = "结束时间") + private Integer stopTime; + + @ApiModelProperty(value = "添加时间") + private String addTime; + + @ApiModelProperty(value = "产品状态") + private Integer status; + + @ApiModelProperty(value = "是否包邮") + private Integer isPostage; + + @ApiModelProperty(value = "热门推荐") + private Integer isHot; + + @ApiModelProperty(value = "删除 0未删除1已删除") + private Integer isDel; + + @ApiModelProperty(value = "最多秒杀几个") + private Integer num; + + @ApiModelProperty(value = "显示") + private Integer isShow; + + private Date endTimeDate; + + private Date startTimeDate; + +} diff --git a/yshop-api/src/main/java/co/yixiang/modules/activity/mapper/YxStoreSeckillMapper.java b/yshop-api/src/main/java/co/yixiang/modules/activity/mapper/YxStoreSeckillMapper.java new file mode 100644 index 00000000..99ecddf8 --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/activity/mapper/YxStoreSeckillMapper.java @@ -0,0 +1,60 @@ +package co.yixiang.modules.activity.mapper; + +import co.yixiang.modules.shop.web.vo.YxStoreProductQueryVo; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import co.yixiang.modules.activity.entity.YxStoreSeckill; +import co.yixiang.modules.activity.web.param.YxStoreSeckillQueryParam; +import co.yixiang.modules.activity.web.vo.YxStoreSeckillQueryVo; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.Update; +import org.springframework.stereotype.Repository; + +import java.io.Serializable; +import java.util.List; + +/** + *

+ * 商品秒杀产品表 Mapper 接口 + *

+ * + * @author xuwenbo + * @since 2019-12-14 + */ +@Repository +public interface YxStoreSeckillMapper extends BaseMapper { + + @Update("update yx_store_seckill set stock=stock-#{num}, sales=sales+#{num}" + + " where id=#{seckillId}") + int decStockIncSales(@Param("num") int num,@Param("seckillId") int seckillId); + + @Select("SELECT c.id,c.image,c.price,c.title as storeName,c.is_show as isShow,c.cost," + + "c.is_postage as isPostage,c.postage,c.sales,c.stock,c.is_del as isDel" + + " FROM yx_store_seckill c " + + " WHERE c.id = #{id} ") + YxStoreProductQueryVo seckillInfo(int id); + + /** + * 根据ID获取查询对象 + * @param id + * @return + */ + YxStoreSeckillQueryVo getYxStoreSeckillById(Serializable id); + + /** + * 获取分页对象 + * @param page + * @param yxStoreSeckillQueryParam + * @return + */ + IPage getYxStoreSeckillPageList(@Param("page") Page page, @Param("param") YxStoreSeckillQueryParam yxStoreSeckillQueryParam); + + @Select("select t.id, t.image, t.images, t.title, t.info, t.price, t.cost, t.sort, t.stock, t.sales, " + + "t.postage, t.description, t.status, t.num from yx_store_seckill t" + + "INNER JOIN yx_store_product s ON s.id=t.product_id " + + "WHERE t.is_show = 1 AND t.is_del = 0 AND t.start_time < unix_timestamp(now()) " + + "AND t.stop_time > unix_timestamp(now()) ORDER BY t.sort desc,t.id desc") + List getCombList(Page pageModel, @Param("time") String time); +} diff --git a/yshop-api/src/main/java/co/yixiang/modules/activity/mapping/StoreSeckillMap.java b/yshop-api/src/main/java/co/yixiang/modules/activity/mapping/StoreSeckillMap.java new file mode 100644 index 00000000..502b5c72 --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/activity/mapping/StoreSeckillMap.java @@ -0,0 +1,17 @@ +package co.yixiang.modules.activity.mapping; + +import co.yixiang.mapper.EntityMapper; +import co.yixiang.modules.activity.entity.YxStoreSeckill; +import co.yixiang.modules.activity.web.vo.YxStoreSeckillQueryVo; +import org.mapstruct.Mapper; +import org.mapstruct.ReportingPolicy; + + +/** +* @author hupeng +* @date 2019-12-17 +*/ +@Mapper(componentModel = "spring",uses = {},unmappedTargetPolicy = ReportingPolicy.IGNORE) +public interface StoreSeckillMap extends EntityMapper { + +} \ No newline at end of file diff --git a/yshop-api/src/main/java/co/yixiang/modules/activity/service/YxStoreSeckillService.java b/yshop-api/src/main/java/co/yixiang/modules/activity/service/YxStoreSeckillService.java new file mode 100644 index 00000000..8dab5e56 --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/activity/service/YxStoreSeckillService.java @@ -0,0 +1,51 @@ +package co.yixiang.modules.activity.service; + +import co.yixiang.modules.activity.entity.YxStoreSeckill; +import co.yixiang.common.service.BaseService; +import co.yixiang.modules.activity.web.dto.StoreSeckillDTO; +import co.yixiang.modules.activity.web.param.YxStoreSeckillQueryParam; +import co.yixiang.modules.activity.web.vo.YxStoreSeckillQueryVo; +import co.yixiang.common.web.vo.Paging; + +import java.io.Serializable; +import java.util.List; + +/** + *

+ * 商品秒杀产品表 服务类 + *

+ * + * @author xuwenbo + * @since 2019-12-14 + */ +public interface YxStoreSeckillService extends BaseService { + + void decStockIncSales(int num,int seckillId); + + YxStoreSeckill getSeckill(int id); + + StoreSeckillDTO getDetail(int id) throws Exception; + + + /** + * 分页获取产品详情 + * @param page + * @param limit + * @return + */ + List getList(int page, int limit, int startTime,int endTime); + /** + * 根据ID获取查询对象 + * @param id + * @return + */ + YxStoreSeckillQueryVo getYxStoreSeckillById(Serializable id) throws Exception; + + /** + * 获取分页对象 + * @param yxStoreSeckillQueryParam + * @return + */ + Paging getYxStoreSeckillPageList(YxStoreSeckillQueryParam yxStoreSeckillQueryParam) throws Exception; + +} diff --git a/yshop-api/src/main/java/co/yixiang/modules/activity/service/impl/YxStoreSeckillServiceImpl.java b/yshop-api/src/main/java/co/yixiang/modules/activity/service/impl/YxStoreSeckillServiceImpl.java new file mode 100644 index 00000000..25b0b2da --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/activity/service/impl/YxStoreSeckillServiceImpl.java @@ -0,0 +1,132 @@ +package co.yixiang.modules.activity.service.impl; + +import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.ObjectUtil; +import co.yixiang.exception.ErrorRequestException; +import co.yixiang.modules.activity.entity.YxStoreCombination; +import co.yixiang.modules.activity.entity.YxStoreSeckill; +import co.yixiang.modules.activity.mapper.YxStoreSeckillMapper; +import co.yixiang.modules.activity.mapping.StoreSeckillMap; +import co.yixiang.modules.activity.service.YxStoreSeckillService; +import co.yixiang.modules.activity.web.dto.StoreSeckillDTO; +import co.yixiang.modules.activity.web.param.YxStoreSeckillQueryParam; +import co.yixiang.modules.activity.web.vo.YxStoreSeckillQueryVo; +import co.yixiang.common.service.impl.BaseServiceImpl; +import co.yixiang.common.web.vo.Paging; +import co.yixiang.modules.shop.service.YxStoreProductReplyService; +import co.yixiang.utils.OrderUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.beans.factory.annotation.Autowired; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.metadata.OrderItem; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.io.Serializable; +import java.util.List; + + +/** + *

+ * 商品秒杀产品表 服务实现类 + *

+ * + * @author hupeng + * @since 2019-12-14 + */ +@Slf4j +@Service +@Transactional(rollbackFor = Exception.class) +public class YxStoreSeckillServiceImpl extends BaseServiceImpl implements YxStoreSeckillService { + + @Autowired + private YxStoreSeckillMapper yxStoreSeckillMapper; + + @Autowired + private StoreSeckillMap storeSeckillMap; + + @Autowired + private YxStoreProductReplyService replyService; + + /** + * 减库存增加销量 + * @param num + * @param seckillId + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void decStockIncSales(int num, int seckillId) { + yxStoreSeckillMapper.decStockIncSales(num,seckillId); + } + + @Override + public YxStoreSeckill getSeckill(int id) { + QueryWrapper wrapper = new QueryWrapper<>(); + int nowTime = OrderUtil.getSecondTimestampTwo(); + wrapper.eq("id",id).eq("is_del",0).eq("status",1) + .le("start_time",nowTime).ge("stop_time",nowTime); + return yxStoreSeckillMapper.selectOne(wrapper); + } + + /** + * 产品详情 + * @param id + * @return + */ + @Override + public StoreSeckillDTO getDetail(int id) throws Exception{ + YxStoreSeckillQueryVo yxStoreSeckillQueryVo = getYxStoreSeckillById(id); + + if(ObjectUtil.isNull(yxStoreSeckillQueryVo)){ + throw new ErrorRequestException("秒杀产品不存在或已下架"); + } + + StoreSeckillDTO storeSeckillDTO = StoreSeckillDTO.builder() + .storeInfo(yxStoreSeckillQueryVo) + .reply(replyService.getReply(yxStoreSeckillQueryVo.getProductId())) + .replyCount(replyService.productReplyCount(yxStoreSeckillQueryVo.getProductId())) + .build(); + + return storeSeckillDTO; + } + + /** + * 秒杀产品列表 + * @param page + * @param limit + * @param startTime + * @param endTime + * @return + */ + @Override + public List getList(int page, int limit,int startTime,int endTime) { + Page pageModel = new Page<>(page, limit); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("is_del",0).eq("status",1) + .le("start_time",startTime).ge("stop_time",endTime).orderByDesc("sort"); + List yxStoreSeckillQueryVos = storeSeckillMap + .toDto(yxStoreSeckillMapper.selectPage(pageModel,wrapper).getRecords()); + yxStoreSeckillQueryVos.forEach(item->{ + Integer sum = item.getSales() + item.getStock(); + item.setPercent(NumberUtil.round(NumberUtil.mul(NumberUtil.div(item.getSales(),sum), + 100),0).intValue()); + }); + return yxStoreSeckillQueryVos; + } + + @Override + public YxStoreSeckillQueryVo getYxStoreSeckillById(Serializable id) throws Exception{ + + return yxStoreSeckillMapper.getYxStoreSeckillById(id); + } + + @Override + public Paging getYxStoreSeckillPageList(YxStoreSeckillQueryParam yxStoreSeckillQueryParam) throws Exception{ + Page page = setPageParam(yxStoreSeckillQueryParam,OrderItem.desc("create_time")); + IPage iPage = yxStoreSeckillMapper.getYxStoreSeckillPageList(page,yxStoreSeckillQueryParam); + return new Paging(iPage); + } + +} diff --git a/yshop-api/src/main/java/co/yixiang/modules/activity/web/controller/StoreSeckillController.java b/yshop-api/src/main/java/co/yixiang/modules/activity/web/controller/StoreSeckillController.java new file mode 100644 index 00000000..43126287 --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/activity/web/controller/StoreSeckillController.java @@ -0,0 +1,138 @@ +package co.yixiang.modules.activity.web.controller; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import co.yixiang.modules.activity.service.YxStoreSeckillService; +import co.yixiang.modules.activity.web.dto.SeckillConfigDTO; +import co.yixiang.modules.activity.web.dto.SeckillTimeDTO; +import co.yixiang.modules.activity.web.vo.YxStoreSeckillQueryVo; +import co.yixiang.common.web.controller.BaseController; +import co.yixiang.common.api.ApiResult; +import co.yixiang.modules.shop.entity.YxSystemGroupData; +import co.yixiang.modules.shop.service.YxSystemGroupDataService; +import co.yixiang.utils.OrderUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.stream.Collectors; + +/** + *

+ * 商品秒杀产品 前端控制器 + *

+ * + * @author xuwenbo + * @since 2019-12-14 + */ +@Slf4j +@RestController +@RequestMapping +@Api(value = "商品秒杀", tags = "商品秒杀", description = "商品秒杀") +@RequiredArgsConstructor(onConstructor = @__(@Autowired)) +public class StoreSeckillController extends BaseController { + + private final YxStoreSeckillService yxStoreSeckillService; + + private final YxSystemGroupDataService yxSystemGroupDataService; + + /** + * 秒杀产品列表 + */ + @GetMapping("/seckill/list/{time}") + @ApiOperation(value = "秒杀产品列表", notes = "秒杀产品列表", response = YxStoreSeckillQueryVo.class) + public ApiResult getYxStoreSeckillPageList(@PathVariable String time, + @RequestParam(value = "page", defaultValue = "1") int page, + @RequestParam(value = "limit", defaultValue = "10") int limit) throws Exception { + if(StrUtil.isBlank(time)) return ApiResult.fail("参数错误"); + YxSystemGroupData systemGroupData = yxSystemGroupDataService + .findData(Integer.valueOf(time)); + if(ObjectUtil.isNull(systemGroupData)) return ApiResult.fail("参数错误"); + int today = OrderUtil.dateToTimestampT(DateUtil.beginOfDay(new Date()));//今天开始的时间戳 + JSONObject jsonObject = JSONObject.parseObject(systemGroupData.getValue()); + int startTime = today + (jsonObject.getInteger("time") * 3600); + int endTime = today + ((jsonObject.getInteger("time")+jsonObject.getInteger("continued")) * 3600); + + + return ApiResult.ok(yxStoreSeckillService.getList(page,limit,startTime,endTime)); + } + + + /** + * 根据id获取商品秒杀产品详情 + */ + @GetMapping("/seckill/detail/{id}") + @ApiOperation(value = "获取YxStoreSeckill对象详情", notes = "查看商品秒杀产品表", response = YxStoreSeckillQueryVo.class) + public ApiResult getYxStoreSeckill(@PathVariable Integer id) throws Exception { + return ApiResult.ok(yxStoreSeckillService.getDetail(id)); + } + + + /** + * 秒杀产品时间区间 + */ + @GetMapping("/seckill/index") + @ApiOperation(value = "秒杀产品时间区间", notes = "秒杀产品时间区间", response = YxStoreSeckillQueryVo.class) + public ApiResult getYxStoreSeckillIndex() throws Exception { + //获取秒杀配置 + AtomicInteger seckillTimeIndex = new AtomicInteger(); + SeckillConfigDTO seckillConfigDTO = new SeckillConfigDTO(); + List yxSystemGroupDataList = yxSystemGroupDataService.list(new QueryWrapper().eq("group_name", "routine_seckill_time")); + List list = new ArrayList<>(); + int today = OrderUtil.dateToTimestampT(DateUtil.beginOfDay(new Date())); + yxSystemGroupDataList.forEach(i -> { + String jsonStr = i.getValue(); + JSONObject jsonObject = JSON.parseObject(jsonStr); + int time = Integer.valueOf(jsonObject.get("time").toString());//时间 5 + int continued = Integer.valueOf(jsonObject.get("continued").toString());//活动持续事件 3 + SimpleDateFormat sdf = new SimpleDateFormat("HH"); + String nowTime = sdf.format(new Date()); + String index = nowTime.substring(0, 1); + int currentHour = index.equals("0") ? Integer.valueOf(nowTime.substring(1, 2)) : Integer.valueOf(nowTime); + SeckillTimeDTO seckillseckillTimeDTO = new SeckillTimeDTO(); + seckillseckillTimeDTO.setId(i.getId()); + //活动结束时间 + int activityEndHour = Integer.valueOf(time).intValue() + Integer.valueOf(continued).intValue(); + if (activityEndHour > 24) { + seckillseckillTimeDTO.setState("即将开始"); + seckillseckillTimeDTO.setTime(jsonObject.get("time").toString().length() > 1 ? jsonObject.get("time").toString() + ":00" : "0" + jsonObject.get("time").toString() + ":00"); + seckillseckillTimeDTO.setStatus(2); + seckillseckillTimeDTO.setStop(today + activityEndHour * 3600); + } else { + if (currentHour >= time && currentHour < activityEndHour) { + seckillseckillTimeDTO.setState("抢购中"); + seckillseckillTimeDTO.setTime(jsonObject.get("time").toString().length() > 1 ? jsonObject.get("time").toString() + ":00" : "0" + jsonObject.get("time").toString() + ":00"); + seckillseckillTimeDTO.setStatus(1); + seckillseckillTimeDTO.setStop(today + activityEndHour * 3600); + seckillTimeIndex.set(yxSystemGroupDataList.indexOf(i)); + + } else if (currentHour < time) { + seckillseckillTimeDTO.setState("即将开始"); + seckillseckillTimeDTO.setTime(jsonObject.get("time").toString().length() > 1 ? jsonObject.get("time").toString() + ":00" : "0" + jsonObject.get("time").toString() + ":00"); + seckillseckillTimeDTO.setStatus(2); + seckillseckillTimeDTO.setStop(OrderUtil.dateToTimestamp(new Date()) + activityEndHour * 3600); + } else if (currentHour >= activityEndHour) { + seckillseckillTimeDTO.setState("已结束"); + seckillseckillTimeDTO.setTime(jsonObject.get("time").toString().length() > 1 ? jsonObject.get("time").toString() + ":00" : "0" + jsonObject.get("time").toString() + ":00"); + seckillseckillTimeDTO.setStatus(0); + seckillseckillTimeDTO.setStop(today + activityEndHour * 3600); + } + } + list.add(seckillseckillTimeDTO); + }); + seckillConfigDTO.setSeckillTimeIndex(seckillTimeIndex.get()); + seckillConfigDTO.setSeckillTime(list); + return ApiResult.ok(seckillConfigDTO); + } +} + diff --git a/yshop-api/src/main/java/co/yixiang/modules/activity/web/dto/SeckillConfigDTO.java b/yshop-api/src/main/java/co/yixiang/modules/activity/web/dto/SeckillConfigDTO.java new file mode 100644 index 00000000..3922795b --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/activity/web/dto/SeckillConfigDTO.java @@ -0,0 +1,17 @@ +package co.yixiang.modules.activity.web.dto; + + +import lombok.Data; + +import java.util.List; + +@Data +public class SeckillConfigDTO { + + + private List seckillTime; + + private String lovely; + + private Integer seckillTimeIndex; +} diff --git a/yshop-api/src/main/java/co/yixiang/modules/activity/web/dto/SeckillTimeDTO.java b/yshop-api/src/main/java/co/yixiang/modules/activity/web/dto/SeckillTimeDTO.java new file mode 100644 index 00000000..f12e1bd9 --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/activity/web/dto/SeckillTimeDTO.java @@ -0,0 +1,21 @@ +package co.yixiang.modules.activity.web.dto; + +import lombok.Data; + +@Data +public class SeckillTimeDTO { + + private Integer id; + /** + * 00:00 + */ + private String time; + /** + *状态 + */ + private String state; + + private Integer status; + + private Integer stop; +} diff --git a/yshop-api/src/main/java/co/yixiang/modules/activity/web/dto/StoreSeckillDTO.java b/yshop-api/src/main/java/co/yixiang/modules/activity/web/dto/StoreSeckillDTO.java new file mode 100644 index 00000000..eb1e4238 --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/activity/web/dto/StoreSeckillDTO.java @@ -0,0 +1,32 @@ +package co.yixiang.modules.activity.web.dto; + +import co.yixiang.modules.activity.web.vo.YxStoreSeckillQueryVo; +import co.yixiang.modules.shop.web.vo.YxStoreProductReplyQueryVo; +import lombok.Builder; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + *

+ * 秒杀产品表 查询结果对象 + *

+ * + * @author hupeng + * @date 2019-12-17 + */ +@Data +@Builder +public class StoreSeckillDTO implements Serializable { + private static final long serialVersionUID = 1L; + + private YxStoreProductReplyQueryVo reply; + + private Integer replyCount = 0; + + private YxStoreSeckillQueryVo storeInfo; + + + +} \ No newline at end of file diff --git a/yshop-api/src/main/java/co/yixiang/modules/activity/web/param/YxStoreSeckillQueryParam.java b/yshop-api/src/main/java/co/yixiang/modules/activity/web/param/YxStoreSeckillQueryParam.java new file mode 100644 index 00000000..5ca65f29 --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/activity/web/param/YxStoreSeckillQueryParam.java @@ -0,0 +1,22 @@ +package co.yixiang.modules.activity.web.param; + +import io.swagger.annotations.ApiModel; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import co.yixiang.common.web.param.QueryParam; + +/** + *

+ * 商品秒杀产品表 查询参数对象 + *

+ * + * @author xuwenbo + * @date 2019-12-14 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@ApiModel(value="YxStoreSeckillQueryParam对象", description="商品秒杀产品表查询参数") +public class YxStoreSeckillQueryParam extends QueryParam { + private static final long serialVersionUID = 1L; +} diff --git a/yshop-api/src/main/java/co/yixiang/modules/activity/web/vo/YxStoreSeckillQueryVo.java b/yshop-api/src/main/java/co/yixiang/modules/activity/web/vo/YxStoreSeckillQueryVo.java new file mode 100644 index 00000000..79e2d86a --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/activity/web/vo/YxStoreSeckillQueryVo.java @@ -0,0 +1,120 @@ +package co.yixiang.modules.activity.web.vo; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import java.io.Serializable; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.List; + +/** + *

+ * 商品秒杀产品表 查询结果对象 + *

+ * + * @author xuwenbo + * @date 2019-12-14 + */ +@Data +@ApiModel(value="YxStoreSeckillQueryVo对象", description="商品秒杀产品表查询参数") +public class YxStoreSeckillQueryVo implements Serializable{ + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "商品秒杀产品表id") + private Integer id; + + @ApiModelProperty(value = "商品id") + private Integer productId; + + @ApiModelProperty(value = "推荐图") + private String image; + + @ApiModelProperty(value = "轮播图") + private String images; + + private List sliderImageArr; + + public List getSliderImageArr() { + if(StrUtil.isNotEmpty(images)){ + return Arrays.asList(images.split(",")); + }else { + return new ArrayList<>(); + } + + } + + @ApiModelProperty(value = "轮播图") + private String[] pics; + @ApiModelProperty(value = "活动标题") + private String title; + + @ApiModelProperty(value = "简介") + private String info; + + @ApiModelProperty(value = "价格") + private BigDecimal price; + + @ApiModelProperty(value = "成本") + private BigDecimal cost; + + @ApiModelProperty(value = "原价") + private BigDecimal otPrice; + + @ApiModelProperty(value = "返多少积分") + private BigDecimal giveIntegral; + + @ApiModelProperty(value = "排序") + private Integer sort; + + @ApiModelProperty(value = "库存") + private Integer stock; + + @ApiModelProperty(value = "销量") + private Integer sales; + + @ApiModelProperty(value = "单位名") + private String unitName; + + @ApiModelProperty(value = "邮费") + private BigDecimal postage; + + @ApiModelProperty(value = "内容") + private String description; + + @ApiModelProperty(value = "开始时间") + private Integer startTime; + + @ApiModelProperty(value = "结束时间") + private Integer stopTime; + + @ApiModelProperty(value = "添加时间") + private String addTime; + + @ApiModelProperty(value = "产品状态") + private Integer status; + + @ApiModelProperty(value = "是否包邮") + private Integer isPostage; + + @ApiModelProperty(value = "热门推荐") + private Integer isHot; + + @ApiModelProperty(value = "删除 0未删除1已删除") + private Integer isDel; + + @ApiModelProperty(value = "最多秒杀几个") + private Integer num; + + @ApiModelProperty(value = "显示") + private Integer isShow; + + private Integer percent; //百分比 + + + +} \ No newline at end of file diff --git a/yshop-api/src/main/java/co/yixiang/modules/order/service/YxStoreOrderService.java b/yshop-api/src/main/java/co/yixiang/modules/order/service/YxStoreOrderService.java index e4ce7fbd..91f782f7 100644 --- a/yshop-api/src/main/java/co/yixiang/modules/order/service/YxStoreOrderService.java +++ b/yshop-api/src/main/java/co/yixiang/modules/order/service/YxStoreOrderService.java @@ -15,6 +15,7 @@ import co.yixiang.modules.order.web.vo.YxStoreOrderQueryVo; import co.yixiang.common.web.vo.Paging; import co.yixiang.modules.shop.web.vo.YxStoreCartQueryVo; import com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult; +import com.github.binarywang.wxpay.bean.order.WxPayMwebOrderResult; import com.github.binarywang.wxpay.exception.WxPayException; @@ -81,6 +82,8 @@ public interface YxStoreOrderService extends BaseService { WxPayMpOrderResult wxPay(String orderId) throws WxPayException; + WxPayMwebOrderResult wxH5Pay(String orderId) throws WxPayException; + String aliPay(String orderId) throws Exception; void delCacheOrderInfo(int uid, String key); diff --git a/yshop-api/src/main/java/co/yixiang/modules/order/service/impl/YxStoreOrderServiceImpl.java b/yshop-api/src/main/java/co/yixiang/modules/order/service/impl/YxStoreOrderServiceImpl.java index 2d9c4769..c8b67389 100644 --- a/yshop-api/src/main/java/co/yixiang/modules/order/service/impl/YxStoreOrderServiceImpl.java +++ b/yshop-api/src/main/java/co/yixiang/modules/order/service/impl/YxStoreOrderServiceImpl.java @@ -8,6 +8,7 @@ import co.yixiang.domain.vo.TradeVo; import co.yixiang.exception.ErrorRequestException; import co.yixiang.modules.activity.service.YxStoreCombinationService; import co.yixiang.modules.activity.service.YxStorePinkService; +import co.yixiang.modules.activity.service.YxStoreSeckillService; import co.yixiang.modules.manage.service.YxExpressService; import co.yixiang.modules.manage.web.dto.ChartDataDTO; import co.yixiang.modules.manage.web.dto.OrderDataDTO; @@ -59,6 +60,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult; +import com.github.binarywang.wxpay.bean.order.WxPayMwebOrderResult; import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest; import com.github.binarywang.wxpay.config.WxPayConfig; import com.github.binarywang.wxpay.exception.WxPayException; @@ -150,6 +152,9 @@ public class YxStoreOrderServiceImpl extends BaseServiceImpl cartIds = new ArrayList<>(); int combinationId = 0; + int seckillId = 0; for (YxStoreCartQueryVo cart : cartInfo) { combinationId = cart.getCombinationId(); + seckillId = cart.getSeckillId(); cartIds.add(cart.getId().toString()); totalNum += cart.getCartNum(); //计算积分 BigDecimal cartInfoGainIntegral = BigDecimal.ZERO; - if(combinationId == 0 ){//拼团等活动不参与积分 + if(combinationId == 0 && seckillId == 0){//拼团等活动不参与积分 if(cart.getProductInfo().getGiveIntegral().intValue() > 0){ cartInfoGainIntegral = NumberUtil.mul(cart.getCartNum(),cart. getProductInfo().getGiveIntegral()); @@ -1089,7 +1139,7 @@ public class YxStoreOrderServiceImpl extends BaseServiceImpl 0) deduction = true; + if(combinationId > 0 || seckillId > 0) deduction = true; if(deduction){ couponId = 0; useIntegral = 0; @@ -1175,7 +1225,7 @@ public class YxStoreOrderServiceImpl extends BaseServiceImpl 0){ combinationService.decStockIncSales(cart.getCartNum(),combinationId); - }else { + }else if(seckillId > 0){ + storeSeckillService.decStockIncSales(cart.getCartNum(),seckillId); + } else { productService.decProductStock(cart.getCartNum(),cart.getProductId(), cart.getProductAttrUnique()); } @@ -1246,14 +1298,16 @@ public class YxStoreOrderServiceImpl extends BaseServiceImpl cartInfo = cacheDTO.getCartInfo(); for (YxStoreCartQueryVo cart : cartInfo) { combinationId = cart.getCombinationId(); + seckillId = cart.getSeckillId(); } //拼团等不参与抵扣 - if(combinationId > 0) deduction = true; + if(combinationId > 0 || seckillId > 0) deduction = true; if(deduction){ diff --git a/yshop-api/src/main/java/co/yixiang/modules/order/web/controller/StoreOrderController.java b/yshop-api/src/main/java/co/yixiang/modules/order/web/controller/StoreOrderController.java index 8a7c6307..3ba7a43a 100644 --- a/yshop-api/src/main/java/co/yixiang/modules/order/web/controller/StoreOrderController.java +++ b/yshop-api/src/main/java/co/yixiang/modules/order/web/controller/StoreOrderController.java @@ -31,6 +31,7 @@ import co.yixiang.utils.SecurityUtils; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult; +import com.github.binarywang.wxpay.bean.order.WxPayMwebOrderResult; import com.github.binarywang.wxpay.exception.WxPayException; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -96,7 +97,7 @@ public class StoreOrderController extends BaseController { confirmOrderDTO.setUsableCoupon(couponUserService .beUsableCoupon(uid,priceGroup.getTotalPrice())); - //todo 积分抵扣下个版本 已经do + //积分抵扣 OtherDTO other = new OtherDTO(); other.setIntegralRatio(systemConfigService.getData("integral_ratio")); @@ -108,8 +109,15 @@ public class StoreOrderController extends BaseController { combinationId = cartQueryVo.getCombinationId(); } - //拼团砍价类产品不参与抵扣 - if(combinationId > 0) confirmOrderDTO.setDeduction(true); + int secKillId = 0; + if(cartId.split(",").length == 1){ + YxStoreCartQueryVo cartQueryVo = cartService.getYxStoreCartById(Integer + .valueOf(cartId)); + secKillId = cartQueryVo.getSeckillId(); + } + + //拼团砍价秒杀类产品不参与抵扣 + if(combinationId > 0 || secKillId > 0) confirmOrderDTO.setDeduction(true); confirmOrderDTO.setAddressInfo(addressService.getUserDefaultAddress(uid)); @@ -117,7 +125,7 @@ public class StoreOrderController extends BaseController { confirmOrderDTO.setPriceGroup(priceGroup); confirmOrderDTO.setOrderKey(storeOrderService.cacheOrderInfo(uid,cartInfo, priceGroup,other)); - //todo VIP会员 + confirmOrderDTO.setUserInfo(userService.getYxUserById(uid)); @@ -167,25 +175,32 @@ public class StoreOrderController extends BaseController { if(StrUtil.isNotEmpty(orderId)){ switch (param.getPayType()){ case "weixin": - if(param.getFrom().equals("weixinh5")){//此此为支付宝支付 - - throw new ErrorRequestException("H5模式不支持微信支付,请用公众号演示"); - } try { - map.put("status","WECHAT_PAY"); - WxPayMpOrderResult wxPayMpOrderResult = storeOrderService - .wxPay(orderId); - //重新组装 Map jsConfig = new HashMap<>(); - jsConfig.put("appId",wxPayMpOrderResult.getAppId()); - jsConfig.put("timestamp",wxPayMpOrderResult.getTimeStamp()); - jsConfig.put("nonceStr",wxPayMpOrderResult.getNonceStr()); - jsConfig.put("package",wxPayMpOrderResult.getPackageValue()); - jsConfig.put("signType",wxPayMpOrderResult.getSignType()); - jsConfig.put("paySign",wxPayMpOrderResult.getPaySign()); - orderDTO.setJsConfig(jsConfig); - map.put("result",orderDTO); - return ApiResult.ok(map,"订单创建成功"); + if(param.getFrom().equals("weixinh5")){ + WxPayMwebOrderResult wxPayMwebOrderResult = storeOrderService + .wxH5Pay(orderId); + log.info("wxPayMwebOrderResult:{}",wxPayMwebOrderResult); + jsConfig.put("mweb_url",wxPayMwebOrderResult.getMwebUrl()); + orderDTO.setJsConfig(jsConfig); + map.put("result",orderDTO); + map.put("status","WECHAT_H5_PAY"); + return ApiResult.ok(map); + }else{ + map.put("status","WECHAT_PAY"); + WxPayMpOrderResult wxPayMpOrderResult = storeOrderService + .wxPay(orderId); + jsConfig.put("appId",wxPayMpOrderResult.getAppId()); + jsConfig.put("timestamp",wxPayMpOrderResult.getTimeStamp()); + jsConfig.put("nonceStr",wxPayMpOrderResult.getNonceStr()); + jsConfig.put("package",wxPayMpOrderResult.getPackageValue()); + jsConfig.put("signType",wxPayMpOrderResult.getSignType()); + jsConfig.put("paySign",wxPayMpOrderResult.getPaySign()); + orderDTO.setJsConfig(jsConfig); + map.put("result",orderDTO); + return ApiResult.ok(map,"订单创建成功"); + } + } catch (WxPayException e) { return ApiResult.fail(e.getMessage()); } @@ -230,24 +245,33 @@ public class StoreOrderController extends BaseController { if(StrUtil.isNotEmpty(orderId)){ switch (param.getPaytype()){ case "weixin": - if(param.getFrom().equals("weixinh5")){ - throw new ErrorRequestException("H5模式不支持微信支付,请用公众号演示"); - } try { - map.put("status","WECHAT_PAY"); - WxPayMpOrderResult wxPayMpOrderResult = storeOrderService - .wxPay(orderId); - //重新组装 Map jsConfig = new HashMap<>(); - jsConfig.put("appId",wxPayMpOrderResult.getAppId()); - jsConfig.put("timestamp",wxPayMpOrderResult.getTimeStamp()); - jsConfig.put("nonceStr",wxPayMpOrderResult.getNonceStr()); - jsConfig.put("package",wxPayMpOrderResult.getPackageValue()); - jsConfig.put("signType",wxPayMpOrderResult.getSignType()); - jsConfig.put("paySign",wxPayMpOrderResult.getPaySign()); - orderDTO.setJsConfig(jsConfig); - map.put("result",orderDTO); - return ApiResult.ok(map); + if(param.getFrom().equals("weixinh5")){ + WxPayMwebOrderResult wxPayMwebOrderResult = storeOrderService + .wxH5Pay(orderId); + log.info("wxPayMwebOrderResult:{}",wxPayMwebOrderResult); + jsConfig.put("mweb_url",wxPayMwebOrderResult.getMwebUrl()); + orderDTO.setJsConfig(jsConfig); + map.put("result",orderDTO); + map.put("status","WECHAT_H5_PAY"); + return ApiResult.ok(map); + }else{ + map.put("status","WECHAT_PAY"); + WxPayMpOrderResult wxPayMpOrderResult = storeOrderService + .wxPay(orderId); + //重新组装 + jsConfig.put("appId",wxPayMpOrderResult.getAppId()); + jsConfig.put("timestamp",wxPayMpOrderResult.getTimeStamp()); + jsConfig.put("nonceStr",wxPayMpOrderResult.getNonceStr()); + jsConfig.put("package",wxPayMpOrderResult.getPackageValue()); + jsConfig.put("signType",wxPayMpOrderResult.getSignType()); + jsConfig.put("paySign",wxPayMpOrderResult.getPaySign()); + orderDTO.setJsConfig(jsConfig); + map.put("result",orderDTO); + return ApiResult.ok(map); + } + } catch (WxPayException e) { return ApiResult.fail(e.getMessage()); } diff --git a/yshop-api/src/main/java/co/yixiang/modules/security/config/SecurityConfig.java b/yshop-api/src/main/java/co/yixiang/modules/security/config/SecurityConfig.java index 666b9755..4a390f56 100644 --- a/yshop-api/src/main/java/co/yixiang/modules/security/config/SecurityConfig.java +++ b/yshop-api/src/main/java/co/yixiang/modules/security/config/SecurityConfig.java @@ -115,6 +115,10 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { .antMatchers("/wechat/notify").anonymous() .antMatchers("/wechat/serve").anonymous() .antMatchers("/logistics").anonymous() + .antMatchers("/seckill/index").anonymous() + .antMatchers("/seckill/list/**").anonymous() + .antMatchers("/seckill/list/**").anonymous() + .antMatchers("/seckill/detail/*").anonymous() // 支付宝回调 .antMatchers("/api/aliPay/return").anonymous() .antMatchers("/api/aliPay/notify").anonymous() diff --git a/yshop-api/src/main/java/co/yixiang/modules/shop/service/YxSystemGroupDataService.java b/yshop-api/src/main/java/co/yixiang/modules/shop/service/YxSystemGroupDataService.java index 7c128dec..59eb25b5 100644 --- a/yshop-api/src/main/java/co/yixiang/modules/shop/service/YxSystemGroupDataService.java +++ b/yshop-api/src/main/java/co/yixiang/modules/shop/service/YxSystemGroupDataService.java @@ -22,4 +22,6 @@ public interface YxSystemGroupDataService extends BaseService List> getDatas(String name); + YxSystemGroupData findData(Integer id); + } diff --git a/yshop-api/src/main/java/co/yixiang/modules/shop/service/impl/YxStoreCartServiceImpl.java b/yshop-api/src/main/java/co/yixiang/modules/shop/service/impl/YxStoreCartServiceImpl.java index a9d60bfc..14cf0f02 100644 --- a/yshop-api/src/main/java/co/yixiang/modules/shop/service/impl/YxStoreCartServiceImpl.java +++ b/yshop-api/src/main/java/co/yixiang/modules/shop/service/impl/YxStoreCartServiceImpl.java @@ -4,8 +4,13 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import co.yixiang.exception.ErrorRequestException; import co.yixiang.modules.activity.entity.YxStoreCombination; +import co.yixiang.modules.activity.entity.YxStoreSeckill; import co.yixiang.modules.activity.mapper.YxStoreCombinationMapper; +import co.yixiang.modules.activity.mapper.YxStoreSeckillMapper; import co.yixiang.modules.activity.service.YxStoreCombinationService; +import co.yixiang.modules.activity.service.YxStoreSeckillService; +import co.yixiang.modules.order.entity.YxStoreOrder; +import co.yixiang.modules.order.service.YxStoreOrderService; import co.yixiang.modules.shop.entity.YxStoreCart; import co.yixiang.modules.shop.entity.YxStoreProductAttrValue; import co.yixiang.modules.shop.mapper.YxStoreCartMapper; @@ -70,6 +75,15 @@ public class YxStoreCartServiceImpl extends BaseServiceImpl 0){ storeProduct = storeCombinationMapper.combinatiionInfo(storeCart.getCombinationId()); + }else if(storeCart.getSeckillId() > 0){ + storeProduct = storeSeckillMapper.seckillInfo(storeCart.getSeckillId()); }else{ storeProduct = productService .getYxStoreProductById(storeCart.getProductId()); @@ -177,12 +193,17 @@ public class YxStoreCartServiceImpl extends BaseServiceImpl 0 || storeCart.getSeckillId() > 0){ + vipPrice = productAttrValue.getPrice().doubleValue(); + }else{ + vipPrice = userService.setLevelPrice( + productAttrValue.getPrice().doubleValue(),uid); + } storeCartQueryVo.setTruePrice(vipPrice); - //todo 设置会员价 + //设置会员价 storeCartQueryVo.setVipTruePrice(productAttrValue.getPrice() .doubleValue()); storeCartQueryVo.setCostPrice(productAttrValue.getCost() @@ -193,8 +214,15 @@ public class YxStoreCartServiceImpl extends BaseServiceImpl 0 || storeCart.getSeckillId() > 0){ + vipPrice = storeProduct.getPrice().doubleValue(); + }else{ + vipPrice = userService.setLevelPrice( + storeProduct.getPrice().doubleValue(),uid); + } + storeCartQueryVo.setTruePrice(vipPrice); //todo 设置会员价 storeCartQueryVo.setVipTruePrice(0d); @@ -236,6 +264,20 @@ public class YxStoreCartServiceImpl extends BaseServiceImpl 0){//秒杀 + YxStoreSeckill yxStoreSeckill = storeSeckillService.getSeckill(seckillId); + if(ObjectUtil.isNull(yxStoreSeckill)){ + throw new ErrorRequestException("该产品已下架或删除"); + } + if(yxStoreSeckill.getStock() < cartNum){ + throw new ErrorRequestException("该产品库存不足"); + } + int seckillOrderCount = storeOrderService.count(new QueryWrapper() + .eq("uid", uid).eq("paid",1).eq("seckill_id",seckillId)); + if(yxStoreSeckill.getNum() <= seckillOrderCount || yxStoreSeckill.getNum() < cartNum){ + throw new ErrorRequestException("每人限购:"+yxStoreSeckill.getNum()+"件"); + } + }else{ YxStoreProductQueryVo productQueryVo = productService .getYxStoreProductById(productId); @@ -263,7 +305,6 @@ public class YxStoreCartServiceImpl extends BaseServiceImpl - * 用户充值表 前端控制器 - *

- * - * @author hupeng - * @since 2019-12-08 - */ -@Slf4j -@RestController -@RequestMapping("/yxUserRecharge") -@Api("用户充值表 API") -public class YxUserRechargeController extends BaseController { - - @Autowired - private YxUserRechargeService yxUserRechargeService; - - /** - * 添加用户充值表 - */ - @PostMapping("/add") - @ApiOperation(value = "添加YxUserRecharge对象",notes = "添加用户充值表",response = ApiResult.class) - public ApiResult addYxUserRecharge(@Valid @RequestBody YxUserRecharge yxUserRecharge) throws Exception{ - boolean flag = yxUserRechargeService.save(yxUserRecharge); - return ApiResult.result(flag); - } - - /** - * 修改用户充值表 - */ - @PostMapping("/update") - @ApiOperation(value = "修改YxUserRecharge对象",notes = "修改用户充值表",response = ApiResult.class) - public ApiResult updateYxUserRecharge(@Valid @RequestBody YxUserRecharge yxUserRecharge) throws Exception{ - boolean flag = yxUserRechargeService.updateById(yxUserRecharge); - return ApiResult.result(flag); - } - - /** - * 删除用户充值表 - */ - @PostMapping("/delete") - @ApiOperation(value = "删除YxUserRecharge对象",notes = "删除用户充值表",response = ApiResult.class) - public ApiResult deleteYxUserRecharge(@Valid @RequestBody IdParam idParam) throws Exception{ - boolean flag = yxUserRechargeService.removeById(idParam.getId()); - return ApiResult.result(flag); - } - - /** - * 获取用户充值表 - */ - @PostMapping("/info") - @ApiOperation(value = "获取YxUserRecharge对象详情",notes = "查看用户充值表",response = YxUserRechargeQueryVo.class) - public ApiResult getYxUserRecharge(@Valid @RequestBody IdParam idParam) throws Exception{ - YxUserRechargeQueryVo yxUserRechargeQueryVo = yxUserRechargeService.getYxUserRechargeById(idParam.getId()); - return ApiResult.ok(yxUserRechargeQueryVo); - } - - /** - * 用户充值表分页列表 - */ - @PostMapping("/getPageList") - @ApiOperation(value = "获取YxUserRecharge分页列表",notes = "用户充值表分页列表",response = YxUserRechargeQueryVo.class) - public ApiResult> getYxUserRechargePageList(@Valid @RequestBody(required = false) YxUserRechargeQueryParam yxUserRechargeQueryParam) throws Exception{ - Paging paging = yxUserRechargeService.getYxUserRechargePageList(yxUserRechargeQueryParam); - return ApiResult.ok(paging); - } - -} - diff --git a/yshop-api/src/main/resources/mapper/activity/YxStoreSeckillMapper.xml b/yshop-api/src/main/resources/mapper/activity/YxStoreSeckillMapper.xml new file mode 100644 index 00000000..034b4ff7 --- /dev/null +++ b/yshop-api/src/main/resources/mapper/activity/YxStoreSeckillMapper.xml @@ -0,0 +1,18 @@ + + + + + + + id, product_id, image, images, title, info, price, cost, ot_price, give_integral, sort, stock, sales, unit_name, postage, description, start_time, stop_time, add_time, status, is_postage, is_hot, is_del, num, is_show, end_time_date, start_time_date + + + + + + + diff --git a/yshop-common/pom.xml b/yshop-common/pom.xml index b123e209..ceb95ec9 100644 --- a/yshop-common/pom.xml +++ b/yshop-common/pom.xml @@ -5,7 +5,7 @@ yshop co.yixiang - 1.4 + 1.5 4.0.0 diff --git a/yshop-generator/pom.xml b/yshop-generator/pom.xml index 0b583d97..a41f6115 100644 --- a/yshop-generator/pom.xml +++ b/yshop-generator/pom.xml @@ -5,7 +5,7 @@ yshop co.yixiang - 1.4 + 1.5 4.0.0 @@ -20,7 +20,7 @@ co.yixiang yshop-common - 1.4 + 1.5 diff --git a/yshop-logging/pom.xml b/yshop-logging/pom.xml index 5de70805..d270ba45 100644 --- a/yshop-logging/pom.xml +++ b/yshop-logging/pom.xml @@ -5,7 +5,7 @@ yshop co.yixiang - 1.4 + 1.5 4.0.0 @@ -16,7 +16,7 @@ co.yixiang yshop-common - 1.4 + 1.5 \ No newline at end of file diff --git a/yshop-mp/pom.xml b/yshop-mp/pom.xml index 63eef5ae..06d8b12f 100644 --- a/yshop-mp/pom.xml +++ b/yshop-mp/pom.xml @@ -5,7 +5,7 @@ yshop co.yixiang - 1.4 + 1.5 4.0.0 @@ -31,7 +31,7 @@ co.yixiang yshop-common - 1.4 + 1.5 diff --git a/yshop-shop/pom.xml b/yshop-shop/pom.xml index 68146b21..fae12ebd 100644 --- a/yshop-shop/pom.xml +++ b/yshop-shop/pom.xml @@ -5,7 +5,7 @@ yshop co.yixiang - 1.4 + 1.5 4.0.0 @@ -20,12 +20,12 @@ co.yixiang yshop-logging - 1.4 + 1.5 co.yixiang yshop-mp - 1.4 + 1.5 diff --git a/yshop-shop/src/main/java/co/yixiang/modules/activity/domain/YxStoreSeckill.java b/yshop-shop/src/main/java/co/yixiang/modules/activity/domain/YxStoreSeckill.java new file mode 100644 index 00000000..5ba85d27 --- /dev/null +++ b/yshop-shop/src/main/java/co/yixiang/modules/activity/domain/YxStoreSeckill.java @@ -0,0 +1,153 @@ +package co.yixiang.modules.activity.domain; + +import lombok.Data; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.bean.copier.CopyOptions; +import javax.persistence.*; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; +import java.io.Serializable; +import java.util.Date; + +/** +* @author xuwenbo +* @date 2019-12-14 +*/ +@Entity +@Data +@Table(name="yx_store_seckill") +public class YxStoreSeckill implements Serializable { + + // 商品秒杀产品表id + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id") + private Integer id; + + // 商品id + @Column(name = "product_id",nullable = false) + private Integer productId; + + // 推荐图 + @Column(name = "image",nullable = false) + @NotBlank(message = "请上传产品图片") + private String image; + + // 轮播图 + @Column(name = "images",nullable = false) + @NotBlank(message = "请上传产品轮播图") + private String images; + + // 活动标题 + @Column(name = "title",nullable = false) + @NotBlank(message = "请输入产品标题") + private String title; + + // 简介 + @Column(name = "info",nullable = false) + @NotBlank(message = "请输入秒杀简介") + private String info; + + // 价格 + @Column(name = "price",nullable = false) + @NotNull(message = "秒杀价必填") + @Min(value = 0,message = "秒杀价必须大于0") + private BigDecimal price; + + // 成本 + @Column(name = "cost",nullable = false) + @NotNull(message = "成本价必填") + @Min(value = 0,message = "成本价必须大于0") + private BigDecimal cost; + + // 原价 + @Column(name = "ot_price",nullable = false) + @NotNull(message = "原价必填") + @Min(value = 0,message = "原价必须大于0") + private BigDecimal otPrice; + + // 返多少积分 + @Column(name = "give_integral",nullable = false) + private BigDecimal giveIntegral; + + // 排序 + @Column(name = "sort",nullable = false) + @NotNull(message = "排序必填") + private Integer sort; + + // 库存 + @Column(name = "stock",nullable = false) + @NotNull(message = "库存必填") + private Integer stock; + + // 销量 + @Column(name = "sales",nullable = false) + @NotNull(message = "销量必填") + private Integer sales; + + // 单位名 + @Column(name = "unit_name",nullable = false) + @NotBlank(message = "单位名不能为空") + private String unitName; + + // 邮费 + @Column(name = "postage",nullable = false) + @NotNull(message = "邮费必填") + private BigDecimal postage; + + // 内容 + @Column(name = "description") + private String description; + + // 开始时间 + @Column(name = "start_time",nullable = false) + private Integer startTime; + + // 结束时间 + @Column(name = "stop_time",nullable = false) + private Integer stopTime; + + @NotNull(message = "开始时间不能为空") + private Date startTimeDate; + + @NotNull(message = "结束时间不能为空") + private Date endTimeDate; + + // 添加时间 + @Column(name = "add_time",nullable = false) + private String addTime; + + // 产品状态 + @Column(name = "status",nullable = false) + @NotNull(message = "活动状态必须选择") + private Integer status; + + // 是否包邮 + @Column(name = "is_postage",nullable = false) + @NotNull(message = "包邮状态必须选择") + private Integer isPostage; + + // 热门推荐 + @Column(name = "is_hot",insertable = false) + private Integer isHot; + + // 删除 0未删除1已删除 + @Column(name = "is_del",insertable = false) + private Integer isDel; + + // 最多秒杀几个 + @Column(name = "num",nullable = false) + @NotNull(message = "限购必填") + @Min(value = 1,message = "限购必须大于0") + private Integer num; + + // 显示 + @Column(name = "is_show",nullable = false) + private Integer isShow; + + public void copy(YxStoreSeckill source){ + BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true)); + } +} \ No newline at end of file diff --git a/yshop-shop/src/main/java/co/yixiang/modules/activity/repository/YxStoreSeckillRepository.java b/yshop-shop/src/main/java/co/yixiang/modules/activity/repository/YxStoreSeckillRepository.java new file mode 100644 index 00000000..788fcc19 --- /dev/null +++ b/yshop-shop/src/main/java/co/yixiang/modules/activity/repository/YxStoreSeckillRepository.java @@ -0,0 +1,12 @@ +package co.yixiang.modules.activity.repository; + +import co.yixiang.modules.activity.domain.YxStoreSeckill; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; + +/** +* @author xuwenbo +* @date 2019-12-14 +*/ +public interface YxStoreSeckillRepository extends JpaRepository, JpaSpecificationExecutor { +} \ No newline at end of file diff --git a/yshop-shop/src/main/java/co/yixiang/modules/activity/rest/YxStoreCombinationController.java b/yshop-shop/src/main/java/co/yixiang/modules/activity/rest/YxStoreCombinationController.java index 6c33322a..a0ebe6b6 100644 --- a/yshop-shop/src/main/java/co/yixiang/modules/activity/rest/YxStoreCombinationController.java +++ b/yshop-shop/src/main/java/co/yixiang/modules/activity/rest/YxStoreCombinationController.java @@ -46,7 +46,6 @@ public class YxStoreCombinationController { @PutMapping(value = "/yxStoreCombination") @PreAuthorize("hasAnyRole('ADMIN','YXSTORECOMBINATION_ALL','YXSTORECOMBINATION_EDIT')") public ResponseEntity update(@Validated @RequestBody YxStoreCombination resources){ - //if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作"); if(ObjectUtil.isNotNull(resources.getStartTimeDate())){ resources.setStartTime(OrderUtil. dateToTimestamp(resources.getStartTimeDate())); diff --git a/yshop-shop/src/main/java/co/yixiang/modules/activity/rest/YxStoreSeckillController.java b/yshop-shop/src/main/java/co/yixiang/modules/activity/rest/YxStoreSeckillController.java new file mode 100644 index 00000000..4ef08aca --- /dev/null +++ b/yshop-shop/src/main/java/co/yixiang/modules/activity/rest/YxStoreSeckillController.java @@ -0,0 +1,73 @@ +package co.yixiang.modules.activity.rest; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import co.yixiang.aop.log.Log; +import co.yixiang.exception.BadRequestException; +import co.yixiang.modules.activity.domain.YxStoreSeckill; +import co.yixiang.modules.activity.service.YxStoreSeckillService; +import co.yixiang.modules.activity.service.dto.YxStoreSeckillQueryCriteria; +import co.yixiang.utils.OrderUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import io.swagger.annotations.*; + +/** +* @author xuwenbo +* @date 2019-12-14 +*/ +@Api(tags = "秒杀管理") +@RestController +@RequestMapping("api") +public class YxStoreSeckillController { + + @Autowired + private YxStoreSeckillService yxStoreSeckillService; + + @Log("查询YxStoreSeckill") + @ApiOperation(value = "查询YxStoreSeckill") + @GetMapping(value = "/yxStoreSeckill") + @PreAuthorize("hasAnyRole('ADMIN','YXSTORESECKILL_ALL','YXSTORESECKILL_SELECT')") + public ResponseEntity getYxStoreSeckills(YxStoreSeckillQueryCriteria criteria, Pageable pageable){ + return new ResponseEntity(yxStoreSeckillService.queryAll(criteria,pageable),HttpStatus.OK); + } + + + + @Log("修改YxStoreSeckill") + @ApiOperation(value = "修改YxStoreSeckill") + @PutMapping(value = "/yxStoreSeckill") + @PreAuthorize("hasAnyRole('ADMIN','YXSTORESECKILL_ALL','YXSTORESECKILL_EDIT')") + public ResponseEntity update(@Validated @RequestBody YxStoreSeckill resources){ + if(ObjectUtil.isNotNull(resources.getStartTimeDate())){ + resources.setStartTime(OrderUtil. + dateToTimestamp(resources.getStartTimeDate())); + } + if(ObjectUtil.isNotNull(resources.getEndTimeDate())){ + resources.setStopTime(OrderUtil. + dateToTimestamp(resources.getEndTimeDate())); + } + if(ObjectUtil.isNull(resources.getId())){ + resources.setAddTime(String.valueOf(OrderUtil.getSecondTimestampTwo())); + return new ResponseEntity(yxStoreSeckillService.create(resources),HttpStatus.CREATED); + }else{ + yxStoreSeckillService.update(resources); + return new ResponseEntity(HttpStatus.NO_CONTENT); + } + } + + @Log("删除YxStoreSeckill") + @ApiOperation(value = "删除YxStoreSeckill") + @DeleteMapping(value = "/yxStoreSeckill/{id}") + @PreAuthorize("hasAnyRole('ADMIN','YXSTORESECKILL_ALL','YXSTORESECKILL_DELETE')") + public ResponseEntity delete(@PathVariable Integer id){ + //if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作"); + yxStoreSeckillService.delete(id); + return new ResponseEntity(HttpStatus.OK); + } +} \ No newline at end of file diff --git a/yshop-shop/src/main/java/co/yixiang/modules/activity/service/YxStoreSeckillService.java b/yshop-shop/src/main/java/co/yixiang/modules/activity/service/YxStoreSeckillService.java new file mode 100644 index 00000000..8fc57150 --- /dev/null +++ b/yshop-shop/src/main/java/co/yixiang/modules/activity/service/YxStoreSeckillService.java @@ -0,0 +1,66 @@ +package co.yixiang.modules.activity.service; + +import co.yixiang.modules.activity.domain.YxStoreSeckill; +import co.yixiang.modules.activity.service.dto.YxStoreSeckillDTO; +import co.yixiang.modules.activity.service.dto.YxStoreSeckillQueryCriteria; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.data.domain.Pageable; +import java.util.Map; +import java.util.List; + +/** +* @author xuwenbo +* @date 2019-12-14 +*/ +//@CacheConfig(cacheNames = "yxStoreSeckill") +public interface YxStoreSeckillService { + + /** + * 查询数据分页 + * @param criteria + * @param pageable + * @return + */ + //@Cacheable + Map queryAll(YxStoreSeckillQueryCriteria criteria, Pageable pageable); + + /** + * 查询所有数据不分页 + * @param criteria + * @return + */ + //@Cacheable + List queryAll(YxStoreSeckillQueryCriteria criteria); + + /** + * 根据ID查询 + * @param id + * @return + */ + //@Cacheable(key = "#p0") + YxStoreSeckillDTO findById(Integer id); + + /** + * 创建 + * @param resources + * @return + */ + //@CacheEvict(allEntries = true) + YxStoreSeckillDTO create(YxStoreSeckill resources); + + /** + * 编辑 + * @param resources + */ + //@CacheEvict(allEntries = true) + void update(YxStoreSeckill resources); + + /** + * 删除 + * @param id + */ + //@CacheEvict(allEntries = true) + void delete(Integer id); +} \ No newline at end of file diff --git a/yshop-shop/src/main/java/co/yixiang/modules/activity/service/dto/YxStoreSeckillDTO.java b/yshop-shop/src/main/java/co/yixiang/modules/activity/service/dto/YxStoreSeckillDTO.java new file mode 100644 index 00000000..8859da0f --- /dev/null +++ b/yshop-shop/src/main/java/co/yixiang/modules/activity/service/dto/YxStoreSeckillDTO.java @@ -0,0 +1,98 @@ +package co.yixiang.modules.activity.service.dto; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; +import java.io.Serializable; +import java.util.Date; + + +/** +* @author xuwenbo +* @date 2019-12-14 +*/ +@Data +public class YxStoreSeckillDTO implements Serializable { + + // 商品秒杀产品表id + private Integer id; + + // 商品id + private Integer productId; + + // 推荐图 + private String image; + + // 轮播图 + private String images; + + // 活动标题 + private String title; + + // 简介 + private String info; + + // 价格 + private BigDecimal price; + + // 成本 + private BigDecimal cost; + + // 原价 + private BigDecimal otPrice; + + // 返多少积分 + private BigDecimal giveIntegral; + + // 排序 + private Integer sort; + + // 库存 + private Integer stock; + + // 销量 + private Integer sales; + + // 单位名 + private String unitName; + + // 邮费 + private BigDecimal postage; + + // 内容 + private String description; + + // 开始时间 + private Integer startTime; + + // 结束时间 + private Integer stopTime; + + // 添加时间 + private String addTime; + + // 产品状态 + private Integer status; + + // 是否包邮 + private Integer isPostage; + + // 热门推荐 + private Integer isHot; + + // 删除 0未删除1已删除 + private Integer isDel; + + // 最多秒杀几个 + private Integer num; + + // 显示 + private Integer isShow; + + private Date startTimeDate; + + private Date endTimeDate; + + private String statusStr; +} \ No newline at end of file diff --git a/yshop-shop/src/main/java/co/yixiang/modules/activity/service/dto/YxStoreSeckillQueryCriteria.java b/yshop-shop/src/main/java/co/yixiang/modules/activity/service/dto/YxStoreSeckillQueryCriteria.java new file mode 100644 index 00000000..46c2c1d5 --- /dev/null +++ b/yshop-shop/src/main/java/co/yixiang/modules/activity/service/dto/YxStoreSeckillQueryCriteria.java @@ -0,0 +1,17 @@ +package co.yixiang.modules.activity.service.dto; + +import lombok.Data; +import java.math.BigDecimal; +import co.yixiang.annotation.Query; + +/** +* @author xuwenbo +* @date 2019-12-14 +*/ +@Data +public class YxStoreSeckillQueryCriteria{ + + // 模糊 + @Query(type = Query.Type.INNER_LIKE) + private String title; +} \ No newline at end of file diff --git a/yshop-shop/src/main/java/co/yixiang/modules/activity/service/impl/YxStoreSeckillServiceImpl.java b/yshop-shop/src/main/java/co/yixiang/modules/activity/service/impl/YxStoreSeckillServiceImpl.java new file mode 100644 index 00000000..54ce47b7 --- /dev/null +++ b/yshop-shop/src/main/java/co/yixiang/modules/activity/service/impl/YxStoreSeckillServiceImpl.java @@ -0,0 +1,100 @@ +package co.yixiang.modules.activity.service.impl; + +import co.yixiang.modules.activity.domain.YxStoreSeckill; +import co.yixiang.utils.OrderUtil; +import co.yixiang.utils.ValidationUtil; +import co.yixiang.modules.activity.repository.YxStoreSeckillRepository; +import co.yixiang.modules.activity.service.YxStoreSeckillService; +import co.yixiang.modules.activity.service.dto.YxStoreSeckillDTO; +import co.yixiang.modules.activity.service.dto.YxStoreSeckillQueryCriteria; +import co.yixiang.modules.activity.service.mapper.YxStoreSeckillMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import java.util.LinkedHashMap; +import java.util.Optional; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import co.yixiang.utils.PageUtil; +import co.yixiang.utils.QueryHelp; +import java.util.List; +import java.util.Map; + +/** +* @author xuwenbo +* @date 2019-12-14 +*/ +@Service +@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) +public class YxStoreSeckillServiceImpl implements YxStoreSeckillService { + + @Autowired + private YxStoreSeckillRepository yxStoreSeckillRepository; + + @Autowired + private YxStoreSeckillMapper yxStoreSeckillMapper; + + @Override + public Map queryAll(YxStoreSeckillQueryCriteria criteria, Pageable pageable){ + Page page = yxStoreSeckillRepository.findAll((root, criteriaQuery, criteriaBuilder) -> + QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable); + List storeSeckillDTOS = yxStoreSeckillMapper + .toDto(page.getContent()); + int nowTime = OrderUtil.getSecondTimestampTwo(); + for (YxStoreSeckillDTO storeSeckillDTO : storeSeckillDTOS){ + if(storeSeckillDTO.getStatus() > 0){ + if(storeSeckillDTO.getStartTime() > nowTime){ + storeSeckillDTO.setStatusStr("活动未开始"); + }else if(storeSeckillDTO.getStopTime() < nowTime){ + storeSeckillDTO.setStatusStr("活动已结束"); + }else if(storeSeckillDTO.getStopTime() > nowTime && storeSeckillDTO.getStartTime() < nowTime){ + storeSeckillDTO.setStatusStr("正在进行中"); + } + }else { + storeSeckillDTO.setStatusStr("关闭"); + } + + } + Map map = new LinkedHashMap<>(2); + map.put("content",storeSeckillDTOS); + map.put("totalElements",page.getTotalElements()); + + return map; + } + + @Override + public List queryAll(YxStoreSeckillQueryCriteria criteria){ + return yxStoreSeckillMapper.toDto(yxStoreSeckillRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder))); + } + + @Override + public YxStoreSeckillDTO findById(Integer id) { + Optional yxStoreSeckill = yxStoreSeckillRepository.findById(id); + ValidationUtil.isNull(yxStoreSeckill,"YxStoreSeckill","id",id); + return yxStoreSeckillMapper.toDto(yxStoreSeckill.get()); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public YxStoreSeckillDTO create(YxStoreSeckill resources) { + return yxStoreSeckillMapper.toDto(yxStoreSeckillRepository.save(resources)); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(YxStoreSeckill resources) { + Optional optionalYxStoreSeckill = yxStoreSeckillRepository.findById(resources.getId()); + ValidationUtil.isNull( optionalYxStoreSeckill,"YxStoreSeckill","id",resources.getId()); + YxStoreSeckill yxStoreSeckill = optionalYxStoreSeckill.get(); + yxStoreSeckill.copy(resources); + yxStoreSeckillRepository.save(yxStoreSeckill); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delete(Integer id) { + yxStoreSeckillRepository.deleteById(id); + } +} \ No newline at end of file diff --git a/yshop-shop/src/main/java/co/yixiang/modules/activity/service/mapper/YxStoreSeckillMapper.java b/yshop-shop/src/main/java/co/yixiang/modules/activity/service/mapper/YxStoreSeckillMapper.java new file mode 100644 index 00000000..c77e3727 --- /dev/null +++ b/yshop-shop/src/main/java/co/yixiang/modules/activity/service/mapper/YxStoreSeckillMapper.java @@ -0,0 +1,16 @@ +package co.yixiang.modules.activity.service.mapper; + +import co.yixiang.mapper.EntityMapper; +import co.yixiang.modules.activity.domain.YxStoreSeckill; +import co.yixiang.modules.activity.service.dto.YxStoreSeckillDTO; +import org.mapstruct.Mapper; +import org.mapstruct.ReportingPolicy; + +/** +* @author xuwenbo +* @date 2019-12-14 +*/ +@Mapper(componentModel = "spring",uses = {},unmappedTargetPolicy = ReportingPolicy.IGNORE) +public interface YxStoreSeckillMapper extends EntityMapper { + +} \ No newline at end of file diff --git a/yshop-shop/src/main/java/co/yixiang/modules/shop/rest/YxStoreOrderController.java b/yshop-shop/src/main/java/co/yixiang/modules/shop/rest/YxStoreOrderController.java index d38ff239..93a49de0 100644 --- a/yshop-shop/src/main/java/co/yixiang/modules/shop/rest/YxStoreOrderController.java +++ b/yshop-shop/src/main/java/co/yixiang/modules/shop/rest/YxStoreOrderController.java @@ -89,7 +89,6 @@ public class YxStoreOrderController { criteria.setRefundStatus(0); break; case "1": - System.out.println(orderStatus); criteria.setIsDel(0); criteria.setPaid(1); criteria.setStatus(0); diff --git a/yshop-shop/src/main/java/co/yixiang/modules/shop/service/YxStoreOrderService.java b/yshop-shop/src/main/java/co/yixiang/modules/shop/service/YxStoreOrderService.java index 1c3af04a..4514dd7b 100644 --- a/yshop-shop/src/main/java/co/yixiang/modules/shop/service/YxStoreOrderService.java +++ b/yshop-shop/src/main/java/co/yixiang/modules/shop/service/YxStoreOrderService.java @@ -18,7 +18,7 @@ public interface YxStoreOrderService { Map chartCount(); - String orderType(int id,int pinkId,int combinationId); + String orderType(int id,int pinkId,int combinationId,int seckillId); void refund(YxStoreOrder resources); diff --git a/yshop-shop/src/main/java/co/yixiang/modules/shop/service/impl/YxStoreOrderServiceImpl.java b/yshop-shop/src/main/java/co/yixiang/modules/shop/service/impl/YxStoreOrderServiceImpl.java index e6896842..96db7849 100644 --- a/yshop-shop/src/main/java/co/yixiang/modules/shop/service/impl/YxStoreOrderServiceImpl.java +++ b/yshop-shop/src/main/java/co/yixiang/modules/shop/service/impl/YxStoreOrderServiceImpl.java @@ -148,7 +148,7 @@ public class YxStoreOrderServiceImpl implements YxStoreOrderService { } @Override - public String orderType(int id,int pinkId, int combinationId) { + public String orderType(int id,int pinkId, int combinationId,int seckillId) { String str = "[普通订单]"; if(pinkId > 0 || combinationId > 0){ YxStorePink storePink = storePinkRepository.findByOrderIdKey(id); @@ -171,6 +171,8 @@ public class YxStoreOrderServiceImpl implements YxStoreOrderService { } } + }else if(seckillId > 0){ + str = "[秒杀订单]"; } return str; } @@ -211,7 +213,8 @@ public class YxStoreOrderServiceImpl implements YxStoreOrderService { yxStoreOrderDTO.setPayTypeName(payTypeName); yxStoreOrderDTO.setPinkName(orderType(yxStoreOrder.getId() - ,yxStoreOrder.getPinkId(),yxStoreOrder.getCombinationId())); + ,yxStoreOrder.getPinkId(),yxStoreOrder.getCombinationId() + ,yxStoreOrder.getSeckillId())); List cartInfos = yxStoreOrderCartInfoRepository .findByOid(yxStoreOrder.getId()); diff --git a/yshop-system/pom.xml b/yshop-system/pom.xml index 8d03493b..930c53da 100644 --- a/yshop-system/pom.xml +++ b/yshop-system/pom.xml @@ -5,7 +5,7 @@ yshop co.yixiang - 1.4 + 1.5 4.0.0 @@ -20,7 +20,7 @@ co.yixiang yshop-generator - 1.4 + 1.5 co.yixiang @@ -32,12 +32,12 @@ co.yixiang yshop-tools - 1.4 + 1.5 co.yixiang yshop-shop - 1.4 + 1.5 diff --git a/yshop-tools/pom.xml b/yshop-tools/pom.xml index d8afba33..6e965813 100644 --- a/yshop-tools/pom.xml +++ b/yshop-tools/pom.xml @@ -5,7 +5,7 @@ yshop co.yixiang - 1.4 + 1.5 4.0.0 @@ -23,7 +23,7 @@ co.yixiang yshop-logging - 1.4 + 1.5