diff --git a/README.md b/README.md index 539caf52..7273a5ed 100644 --- a/README.md +++ b/README.md @@ -70,7 +70,7 @@ yshop基于当前流行技术组合的前后端分离商城系统: SpringBoot2 - + @@ -84,7 +84,7 @@ yshop基于当前流行技术组合的前后端分离商城系统: SpringBoot2 - + @@ -92,7 +92,7 @@ yshop基于当前流行技术组合的前后端分离商城系统: SpringBoot2 - +
@@ -131,7 +131,15 @@ yshop基于当前流行技术组合的前后端分离商城系统: SpringBoot2 - 1.3.1版本手机端新增商户管理、后台新增统计 - 1.3.2新增后台微信相关及其支付配置,新增自动回复配置 - 1.3.3新增 后台微信图文发送功能,小程序配置,增加小程序授权等,修复一些bug等 -- 1.4版本规划:补充公众号功能、发布mpvue小程序 +- yshop1.4版本发布,更新如下: + - 1.1、新增积分签到 + - 1.2、新增会员等级、任务等功能,新增会员价格等 + - 1.3、修复Redisson linux系统启动报错问题 + - 1.4、修复商户简单权限功能 + - 1.5、修复加入购物车覆盖问题 + - 1.6、修复拼团出现undefined + - 1.7、会员后台新增余额调整 + - 1.8、修复新增配置数据有时候不成功问题等 #### 反馈交流 diff --git a/pom.xml b/pom.xml index 29c14ae3..3d9314e9 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ co.yixiang yshop pom - 1.3 + 1.4 yshop-common diff --git a/shell/start.sh b/shell/start.sh index 5d9ba7d6..1655cdc1 100644 --- a/shell/start.sh +++ b/shell/start.sh @@ -1 +1 @@ -nohup java -jar yshop-api-1.2.jar --spring.profiles.active=prod & \ No newline at end of file +nohup java -jar yshop-api-1.4.jar --spring.profiles.active=prod & \ No newline at end of file diff --git a/shell/stop.sh b/shell/stop.sh index 07e780a2..4804cec1 100644 --- a/shell/stop.sh +++ b/shell/stop.sh @@ -1,4 +1,4 @@ -PID=$(ps -ef | grep yshop-api-1.2.jar | grep -v grep | awk '{ print $2 }') +PID=$(ps -ef | grep yshop-api-1.4.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 429d6ef5..9d2fb12e 100644 --- a/sql/yxshop.sql +++ b/sql/yxshop.sql @@ -11,7 +11,7 @@ Target Server Version : 50723 File Encoding : 65001 - Date: 29/11/2019 18:50:16 + Date: 08/12/2019 14:44:46 */ SET NAMES utf8mb4; @@ -147,7 +147,7 @@ CREATE TABLE `gen_config` ( -- ---------------------------- -- Records of gen_config -- ---------------------------- -INSERT INTO `gen_config` VALUES (1, 'hupeng', b'0', 'yshop-system', 'co.yixiang.modules.activity', 'E:\\java\\yxshop-private\\yshop-qd\\src\\views\\activity\\combinlistaaa', 'E:\\java\\yxshop-private\\yshop-qd\\src\\api', NULL); +INSERT INTO `gen_config` VALUES (1, 'hupeng', b'0', 'yshop-system', 'co.yixiang.modules.shop', 'E:\\java\\yxshop-private\\yshop-qd\\src\\views\\shop\\userlevel', 'E:\\java\\yxshop-private\\yshop-qd\\src\\api', NULL); -- ---------------------------- -- Table structure for job @@ -222,7 +222,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 = 17112 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; +) ENGINE = InnoDB AUTO_INCREMENT = 17272 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of log @@ -3070,6 +3070,166 @@ INSERT INTO `log` VALUES (17108, '2019-11-29 15:38:13', '查询Redis缓存', 'or INSERT INTO `log` VALUES (17109, '2019-11-29 15:51:08', '查询Redis缓存', NULL, 'INFO', 'co.yixiang.modules.monitor.rest.RedisController.getRedis()', '{ key: * pageable: Page request [number: 0, size 10, sort: UNSORTED] }', '127.0.0.1', 160, 'admin', '内网IP'); INSERT INTO `log` VALUES (17110, '2019-11-29 16:08:22', '查询Redis缓存', 'org.springframework.data.redis.RedisSystemException: Error in execution; nested exception is io.lettuce.core.RedisCommandExecutionException: WRONGTYPE Operation against a key holding the wrong kind of value\r\n at org.springframework.data.redis.connection.lettuce.LettuceExceptionConverter.convert(LettuceExceptionConverter.java:54)\r\n at org.springframework.data.redis.connection.lettuce.LettuceExceptionConverter.convert(LettuceExceptionConverter.java:52)\r\n at org.springframework.data.redis.connection.lettuce.LettuceExceptionConverter.convert(LettuceExceptionConverter.java:41)\r\n at org.springframework.data.redis.PassThroughExceptionTranslationStrategy.translate(PassThroughExceptionTranslationStrategy.java:44)\r\n at org.springframework.data.redis.FallbackExceptionTranslationStrategy.translate(FallbackExceptionTranslationStrategy.java:42)\r\n at org.springframework.data.redis.connection.lettuce.LettuceConnection.convertLettuceAccessException(LettuceConnection.java:268)\r\n at org.springframework.data.redis.connection.lettuce.LettuceStringCommands.convertLettuceAccessException(LettuceStringCommands.java:799)\r\n at org.springframework.data.redis.connection.lettuce.LettuceStringCommands.get(LettuceStringCommands.java:68)\r\n at org.springframework.data.redis.connection.DefaultedRedisConnection.get(DefaultedRedisConnection.java:253)\r\n at org.springframework.data.redis.core.DefaultValueOperations$1.inRedis(DefaultValueOperations.java:57)\r\n at org.springframework.data.redis.core.AbstractOperations$ValueDeserializingRedisCallback.doInRedis(AbstractOperations.java:59)\r\n at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:224)\r\n at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:184)\r\n at org.springframework.data.redis.core.AbstractOperations.execute(AbstractOperations.java:95)\r\n at org.springframework.data.redis.core.DefaultValueOperations.get(DefaultValueOperations.java:53)\r\n at co.yixiang.modules.monitor.service.impl.RedisServiceImpl.findByKey(RedisServiceImpl.java:48)\r\n at co.yixiang.modules.monitor.rest.RedisController.getRedis(RedisController.java:28)\r\n at co.yixiang.modules.monitor.rest.RedisController$$FastClassBySpringCGLIB$$3cd2e92f.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.security.access.intercept.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:69)\r\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\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.monitor.rest.RedisController$$EnhancerBySpringCGLIB$$da47b915.getRedis()\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.doGet(FrameworkServlet.java:890)\r\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)\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\nCaused by: io.lettuce.core.RedisCommandExecutionException: WRONGTYPE Operation against a key holding the wrong kind of value\r\n at io.lettuce.core.ExceptionFactory.createExecutionException(ExceptionFactory.java:135)\r\n at io.lettuce.core.ExceptionFactory.createExecutionException(ExceptionFactory.java:108)\r\n at io.lettuce.core.protocol.AsyncCommand.completeResult(AsyncCommand.java:120)\r\n at io.lettuce.core.protocol.AsyncCommand.complete(AsyncCommand.java:111)\r\n at io.lettuce.core.protocol.CommandHandler.complete(CommandHandler.java:646)\r\n at io.lettuce.core.protocol.CommandHandler.decode(CommandHandler.java:604)\r\n at io.lettuce.core.protocol.CommandHandler.channelRead(CommandHandler.java:556)\r\n at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)\r\n at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)\r\n at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)\r\n at io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:86)\r\n at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)\r\n at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)\r\n at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)\r\n at io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:86)\r\n at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)\r\n at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)\r\n at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)\r\n at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1434)\r\n at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)\r\n at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)\r\n at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:965)\r\n at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163)\r\n at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:628)\r\n at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:563)\r\n at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:480)\r\n at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:442)\r\n at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:884)\r\n at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)\r\n ... 1 more\r\n', 'ERROR', 'co.yixiang.modules.monitor.rest.RedisController.getRedis()', '{ key: * pageable: Page request [number: 0, size 10, sort: UNSORTED] }', '127.0.0.1', 379, 'admin', '内网IP'); INSERT INTO `log` VALUES (17111, '2019-11-29 16:10:37', '查询Redis缓存', NULL, 'INFO', 'co.yixiang.modules.monitor.rest.RedisController.getRedis()', '{ key: * pageable: Page request [number: 0, size 10, sort: UNSORTED] }', '127.0.0.1', 133, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17112, '2019-11-29 22:31:16', '用户登录', NULL, 'INFO', 'co.yixiang.modules.security.rest.AuthenticationController.login()', '{ authorizationUser: {username=15136175246, password= ******} }', '127.0.0.1', 724, '', '内网IP'); +INSERT INTO `log` VALUES (17113, '2019-11-30 10:10:49', '用户登录', NULL, 'INFO', 'co.yixiang.modules.security.rest.AuthenticationController.login()', '{ authorizationUser: {username=15136175246, password= ******} }', '127.0.0.1', 108, '', '内网IP'); +INSERT INTO `log` VALUES (17114, '2019-11-30 11:34:02', '用户登录', NULL, 'INFO', 'co.yixiang.modules.security.rest.AuthenticationController.login()', '{ authorizationUser: {username=15136175246, password= ******} }', '127.0.0.1', 19, '', '内网IP'); +INSERT INTO `log` VALUES (17115, '2019-12-04 10:29:58', '用户登录', NULL, 'INFO', 'co.yixiang.modules.security.rest.AuthenticationController.login()', '{ authorizationUser: {username=admin, password= ******} }', '127.0.0.1', 917, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17116, '2019-12-04 10:30:08', '查询用户', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxUserController.getYxUsers()', '{ criteria: YxUserQueryCriteria(nickname=null, phone=null, isPromoter=null) pageable: Page request [number: 0, size 10, sort: uid: DESC] }', '127.0.0.1', 92, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17117, '2019-12-04 10:34:26', '查询用户', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxUserController.getYxUsers()', '{ criteria: YxUserQueryCriteria(nickname=null, phone=null, isPromoter=null) pageable: Page request [number: 0, size 10, sort: uid: DESC] }', '127.0.0.1', 8, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17118, '2019-12-04 10:36:12', '查询用户', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxUserController.getYxUsers()', '{ criteria: YxUserQueryCriteria(nickname=null, phone=null, isPromoter=null) pageable: Page request [number: 0, size 10, sort: uid: DESC] }', '127.0.0.1', 10, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17119, '2019-12-04 10:37:42', '查询用户', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxUserController.getYxUsers()', '{ criteria: YxUserQueryCriteria(nickname=null, phone=null, isPromoter=null) pageable: Page request [number: 0, size 10, sort: uid: DESC] }', '127.0.0.1', 6, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17120, '2019-12-04 10:37:51', '查询商品', 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', 436, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17121, '2019-12-04 10:37:51', '查询商品', 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', 447, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17122, '2019-12-04 10:37:51', '查询商品', 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', 459, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17123, '2019-12-04 10:38:01', '查询用户', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxUserController.getYxUsers()', '{ criteria: YxUserQueryCriteria(nickname=null, phone=null, isPromoter=null) pageable: Page request [number: 0, size 10, sort: uid: DESC] }', '127.0.0.1', 4, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17124, '2019-12-04 10:39:49', '查询用户', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxUserController.getYxUsers()', '{ criteria: YxUserQueryCriteria(nickname=null, phone=null, isPromoter=null) pageable: Page request [number: 0, size 10, sort: uid: DESC] }', '127.0.0.1', 9, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17125, '2019-12-04 10:40:36', '查询用户', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxUserController.getYxUsers()', '{ criteria: YxUserQueryCriteria(nickname=null, phone=null, isPromoter=null) pageable: Page request [number: 0, size 10, sort: uid: DESC] }', '127.0.0.1', 5, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17126, '2019-12-04 10:46:43', '查询用户', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxUserController.getYxUsers()', '{ criteria: YxUserQueryCriteria(nickname=null, phone=null, isPromoter=null) pageable: Page request [number: 0, size 10, sort: uid: DESC] }', '127.0.0.1', 7, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17127, '2019-12-04 10:47:53', '查询用户', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxUserController.getYxUsers()', '{ criteria: YxUserQueryCriteria(nickname=null, phone=null, isPromoter=null) pageable: Page request [number: 0, size 10, sort: uid: DESC] }', '127.0.0.1', 4, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17128, '2019-12-04 10:51:27', '查询用户', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxUserController.getYxUsers()', '{ criteria: YxUserQueryCriteria(nickname=null, phone=null, isPromoter=null) pageable: Page request [number: 0, size 10, sort: uid: DESC] }', '127.0.0.1', 7, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17129, '2019-12-04 10:56:57', '查询用户', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxUserController.getYxUsers()', '{ criteria: YxUserQueryCriteria(nickname=null, phone=null, isPromoter=null) pageable: Page request [number: 0, size 10, sort: uid: DESC] }', '127.0.0.1', 6, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17130, '2019-12-04 16:09:07', '查询用户', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxUserController.getYxUsers()', '{ criteria: YxUserQueryCriteria(nickname=null, phone=null, isPromoter=null) pageable: Page request [number: 0, size 10, sort: uid: DESC] }', '127.0.0.1', 53, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17131, '2019-12-04 16:11:24', '查询用户', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxUserController.getYxUsers()', '{ criteria: YxUserQueryCriteria(nickname=null, phone=null, isPromoter=null) pageable: Page request [number: 0, size 10, sort: uid: DESC] }', '127.0.0.1', 6, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17132, '2019-12-04 16:14:28', '查询用户', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxUserController.getYxUsers()', '{ criteria: YxUserQueryCriteria(nickname=null, phone=null, isPromoter=null) pageable: Page request [number: 0, size 10, sort: uid: DESC] }', '127.0.0.1', 7, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17133, '2019-12-04 16:22:16', '用户登录', NULL, 'INFO', 'co.yixiang.modules.security.rest.AuthenticationController.login()', '{ authorizationUser: {username=admin, password= ******} }', '127.0.0.1', 112, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17134, '2019-12-04 16:34:26', '查询菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.getMenus()', '{ criteria: MenuQueryCriteria(blurry=null) }', '127.0.0.1', 66, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17135, '2019-12-04 16:34:38', '查询菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.getMenus()', '{ criteria: MenuQueryCriteria(blurry=null) }', '127.0.0.1', 3, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17136, '2019-12-04 16:35:41', '新增菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.create()', '{ resources: co.yixiang.modules.system.domain.Menu@6c }', '127.0.0.1', 66, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17137, '2019-12-04 16:35:41', '查询菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.getMenus()', '{ criteria: MenuQueryCriteria(blurry=null) }', '127.0.0.1', 14, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17138, '2019-12-04 16:35:50', '查询菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.getMenus()', '{ criteria: MenuQueryCriteria(blurry=null) }', '127.0.0.1', 4, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17139, '2019-12-04 16:36:03', '查询角色', 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', 180, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17140, '2019-12-04 16:36:10', '修改角色菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.RoleController.updateMenu()', '{ resources: Role{id=1, name=\'null\', remark=\'null\', createDateTime=null} }', '127.0.0.1', 163, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17141, '2019-12-04 16:36:20', '查询角色', 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', 34, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17142, '2019-12-04 16:36:23', '查询YxSystemUserLevel', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserLevelController.getYxSystemUserLevels()', '{ criteria: YxSystemUserLevelQueryCriteria() pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 34, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17143, '2019-12-04 16:40:00', '查询YxSystemUserLevel', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserLevelController.getYxSystemUserLevels()', '{ criteria: YxSystemUserLevelQueryCriteria() pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 42, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17144, '2019-12-04 16:40:47', '查询YxSystemUserLevel', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserLevelController.getYxSystemUserLevels()', '{ criteria: YxSystemUserLevelQueryCriteria() pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 8, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17145, '2019-12-04 16:45:13', '查询YxSystemUserLevel', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserLevelController.getYxSystemUserLevels()', '{ criteria: YxSystemUserLevelQueryCriteria() pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 3, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17146, '2019-12-04 16:45:52', '查询YxSystemUserLevel', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserLevelController.getYxSystemUserLevels()', '{ criteria: YxSystemUserLevelQueryCriteria() pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 6, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17147, '2019-12-04 17:00:11', '上传文件', 'co.yixiang.exception.BadRequestException: 请先添加相应配置,再操作\r\n at co.yixiang.service.impl.QiNiuServiceImpl.upload(QiNiuServiceImpl.java:81)\r\n at co.yixiang.service.impl.QiNiuServiceImpl$$FastClassBySpringCGLIB$$e5e388f1.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.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:294)\r\n at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98)\r\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\r\n at org.springframework.cache.interceptor.CacheInterceptor.lambda$invoke$0(CacheInterceptor.java:53)\r\n at org.springframework.cache.interceptor.CacheAspectSupport.invokeOperation(CacheAspectSupport.java:365)\r\n at org.springframework.cache.interceptor.CacheAspectSupport.execute(CacheAspectSupport.java:420)\r\n at org.springframework.cache.interceptor.CacheAspectSupport.execute(CacheAspectSupport.java:345)\r\n at org.springframework.cache.interceptor.CacheInterceptor.invoke(CacheInterceptor.java:61)\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.service.impl.QiNiuServiceImpl$$EnhancerBySpringCGLIB$$81b7afa6.upload()\r\n at co.yixiang.rest.QiniuController.upload(QiniuController.java:64)\r\n at co.yixiang.rest.QiniuController$$FastClassBySpringCGLIB$$60ff4db.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.rest.QiniuController$$EnhancerBySpringCGLIB$$488be3b9.upload()\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.rest.QiniuController.upload()', '{ file: org.springframework.web.multipart.support.StandardMultipartHttpServletRequest$StandardMultipartFile@353d45d8 }', '127.0.0.1', 61, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17148, '2019-12-04 17:00:39', '上传文件', 'co.yixiang.exception.BadRequestException: 请先添加相应配置,再操作\r\n at co.yixiang.service.impl.QiNiuServiceImpl.upload(QiNiuServiceImpl.java:81)\r\n at co.yixiang.service.impl.QiNiuServiceImpl$$FastClassBySpringCGLIB$$e5e388f1.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.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:294)\r\n at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98)\r\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\r\n at org.springframework.cache.interceptor.CacheInterceptor.lambda$invoke$0(CacheInterceptor.java:53)\r\n at org.springframework.cache.interceptor.CacheAspectSupport.invokeOperation(CacheAspectSupport.java:365)\r\n at org.springframework.cache.interceptor.CacheAspectSupport.execute(CacheAspectSupport.java:420)\r\n at org.springframework.cache.interceptor.CacheAspectSupport.execute(CacheAspectSupport.java:345)\r\n at org.springframework.cache.interceptor.CacheInterceptor.invoke(CacheInterceptor.java:61)\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.service.impl.QiNiuServiceImpl$$EnhancerBySpringCGLIB$$81b7afa6.upload()\r\n at co.yixiang.rest.QiniuController.upload(QiniuController.java:64)\r\n at co.yixiang.rest.QiniuController$$FastClassBySpringCGLIB$$60ff4db.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.rest.QiniuController$$EnhancerBySpringCGLIB$$488be3b9.upload()\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.rest.QiniuController.upload()', '{ file: org.springframework.web.multipart.support.StandardMultipartHttpServletRequest$StandardMultipartFile@13aa7b56 }', '127.0.0.1', 5, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17149, '2019-12-04 17:01:16', '修改YxSystemUserLevel', 'org.springframework.dao.InvalidDataAccessResourceUsageException: could not execute statement; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not execute statement\r\n at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:279)\r\n at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:253)\r\n at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:536)\r\n at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:746)\r\n at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:714)\r\n at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:533)\r\n at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:304)\r\n at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98)\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.shop.service.impl.YxSystemUserLevelServiceImpl$$EnhancerBySpringCGLIB$$344b188a.update()\r\n at co.yixiang.modules.shop.rest.YxSystemUserLevelController.update(YxSystemUserLevelController.java:49)\r\n at co.yixiang.modules.shop.rest.YxSystemUserLevelController$$FastClassBySpringCGLIB$$529b8887.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.security.access.intercept.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:69)\r\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\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.shop.rest.YxSystemUserLevelController$$EnhancerBySpringCGLIB$$72ba73ce.update()\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.doPut(FrameworkServlet.java:912)\r\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:663)\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\nCaused by: org.hibernate.exception.SQLGrammarException: could not execute statement\r\n at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:63)\r\n at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:42)\r\n at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:113)\r\n at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:99)\r\n at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:178)\r\n at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:3356)\r\n at org.hibernate.persister.entity.AbstractEntityPersister.updateOrInsert(AbstractEntityPersister.java:3229)\r\n at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:3630)\r\n at org.hibernate.action.internal.EntityUpdateAction.execute(EntityUpdateAction.java:146)\r\n at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:604)\r\n at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:478)\r\n at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:356)\r\n at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:39)\r\n at org.hibernate.internal.SessionImpl.doFlush(SessionImpl.java:1454)\r\n at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:511)\r\n at org.hibernate.internal.SessionImpl.flushBeforeTransactionCompletion(SessionImpl.java:3283)\r\n at org.hibernate.internal.SessionImpl.beforeTransactionCompletion(SessionImpl.java:2479)\r\n at org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl.beforeTransactionCompletion(JdbcCoordinatorImpl.java:473)\r\n at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.beforeCompletionCallback(JdbcResourceLocalTransactionCoordinatorImpl.java:178)\r\n at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.access$300(JdbcResourceLocalTransactionCoordinatorImpl.java:39)\r\n at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.commit(JdbcResourceLocalTransactionCoordinatorImpl.java:271)\r\n at org.hibernate.engine.transaction.internal.TransactionImpl.commit(TransactionImpl.java:98)\r\n at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:532)\r\n ... 112 more\r\nCaused by: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'explain=\'普通会员\', grade=1, icon=\'http://datong.crmeb.net/public/uploads/at\' at line 1\r\n at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120)\r\n at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)\r\n at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)\r\n at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:974)\r\n at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1113)\r\n at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1061)\r\n at com.mysql.cj.jdbc.ClientPreparedStatement.executeLargeUpdate(ClientPreparedStatement.java:1381)\r\n at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdate(ClientPreparedStatement.java:1046)\r\n at net.sf.log4jdbc.sql.jdbcapi.PreparedStatementSpy.executeUpdate(PreparedStatementSpy.java:1080)\r\n at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_executeUpdate(FilterChainImpl.java:3201)\r\n at com.alibaba.druid.filter.FilterAdapter.preparedStatement_executeUpdate(FilterAdapter.java:1091)\r\n at com.alibaba.druid.filter.FilterEventAdapter.preparedStatement_executeUpdate(FilterEventAdapter.java:491)\r\n at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_executeUpdate(FilterChainImpl.java:3199)\r\n at com.alibaba.druid.proxy.jdbc.PreparedStatementProxyImpl.executeUpdate(PreparedStatementProxyImpl.java:194)\r\n at com.alibaba.druid.pool.DruidPooledPreparedStatement.executeUpdate(DruidPooledPreparedStatement.java:256)\r\n at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:175)\r\n ... 130 more\r\n', 'ERROR', 'co.yixiang.modules.shop.rest.YxSystemUserLevelController.update()', '{ resources: YxSystemUserLevel(id=1, merId=0, name=普通会员, money=20, validDate=0, isForever=1, isPay=0, isShow=1, grade=1, discount=99, image=http://datong.crmeb.net/public/uploads/attach/2019/03/28/5c9ccca8cd632.jpg, icon=http://datong.crmeb.net/public/uploads/attach/2019/03/28/5c9ccca8bc1e0.png, explain=普通会员, addTime=1553824559, isDel=0) }', '127.0.0.1', 347, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17150, '2019-12-04 17:06:03', '查询YxSystemConfig', NULL, 'INFO', 'co.yixiang.modules.wechat.rest.YxSystemConfigController.getYxSystemConfigs()', '{ criteria: YxSystemConfigQueryCriteria() pageable: Page request [number: 0, size 50, sort: UNSORTED] }', '127.0.0.1', 43, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17151, '2019-12-04 17:07:10', '修改YxSystemUserLevel', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserLevelController.update()', '{ resources: YxSystemUserLevel(id=1, merId=0, name=普通会员, money=20, validDate=0, isForever=1, isPay=0, isShow=1, grade=1, discount=99, image=http://datong.crmeb.net/public/uploads/attach/2019/03/28/5c9ccca8cd632.jpg, icon=http://datong.crmeb.net/public/uploads/attach/2019/03/28/5c9ccca8bc1e0.png, explain=普通会员, addTime=1553824559, isDel=0) }', '127.0.0.1', 112, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17152, '2019-12-04 17:07:10', '查询YxSystemUserLevel', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserLevelController.getYxSystemUserLevels()', '{ criteria: YxSystemUserLevelQueryCriteria() pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 15, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17153, '2019-12-04 17:08:22', '新增YxSystemUserLevel', 'org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement\r\n at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:296)\r\n at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:253)\r\n at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:527)\r\n at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61)\r\n at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242)\r\n at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:153)\r\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\r\n at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:135)\r\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\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.data.repository.core.support.SurroundingTransactionDetectorMethodInterceptor.invoke(SurroundingTransactionDetectorMethodInterceptor.java:61)\r\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\r\n at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)\r\n at com.sun.proxy.$Proxy184.save(Unknown Source)\r\n at co.yixiang.modules.shop.service.impl.YxSystemUserLevelServiceImpl.create(YxSystemUserLevelServiceImpl.java:57)\r\n at co.yixiang.modules.shop.service.impl.YxSystemUserLevelServiceImpl$$FastClassBySpringCGLIB$$380b125.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.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:294)\r\n at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98)\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.shop.service.impl.YxSystemUserLevelServiceImpl$$EnhancerBySpringCGLIB$$388b8118.create()\r\n at co.yixiang.modules.shop.rest.YxSystemUserLevelController.create(YxSystemUserLevelController.java:41)\r\n at co.yixiang.modules.shop.rest.YxSystemUserLevelController$$FastClassBySpringCGLIB$$529b8887.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.security.access.intercept.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:69)\r\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\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.shop.rest.YxSystemUserLevelController$$EnhancerBySpringCGLIB$$dd0da9e.create()\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\nCaused by: org.hibernate.exception.ConstraintViolationException: could not execute statement\r\n at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:59)\r\n at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:42)\r\n at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:113)\r\n at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:99)\r\n at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:178)\r\n at org.hibernate.dialect.identity.GetGeneratedKeysDelegate.executeAndExtract(GetGeneratedKeysDelegate.java:57)\r\n at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:42)\r\n at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3072)\r\n at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3663)\r\n at org.hibernate.action.internal.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:81)\r\n at org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:645)\r\n at org.hibernate.engine.spi.ActionQueue.addResolvedEntityInsertAction(ActionQueue.java:282)\r\n at org.hibernate.engine.spi.ActionQueue.addInsertAction(ActionQueue.java:263)\r\n at org.hibernate.engine.spi.ActionQueue.addAction(ActionQueue.java:317)\r\n at org.hibernate.event.internal.AbstractSaveEventListener.addInsertAction(AbstractSaveEventListener.java:359)\r\n at org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:292)\r\n at org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:200)\r\n at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:131)\r\n at org.hibernate.event.internal.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:192)\r\n at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:135)\r\n at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:62)\r\n at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:800)\r\n at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:785)\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.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:350)\r\n at com.sun.proxy.$Proxy127.persist(Unknown Source)\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.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:308)\r\n at com.sun.proxy.$Proxy127.persist(Unknown Source)\r\n at org.springframework.data.jpa.repository.support.SimpleJpaRepository.save(SimpleJpaRepository.java:489)\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.data.repository.core.support.RepositoryComposition$RepositoryFragments.invoke(RepositoryComposition.java:359)\r\n at org.springframework.data.repository.core.support.RepositoryComposition.invoke(RepositoryComposition.java:200)\r\n at org.springframework.data.repository.core.support.RepositoryFactorySupport$ImplementationMethodExecutionInterceptor.invoke(RepositoryFactorySupport.java:644)\r\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\r\n at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.doInvoke(RepositoryFactorySupport.java:608)\r\n at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.lambda$invoke$3(RepositoryFactorySupport.java:595)\r\n at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:595)\r\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\r\n at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:59)\r\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\r\n at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:294)\r\n at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98)\r\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\r\n at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:139)\r\n ... 123 more\r\nCaused by: java.sql.SQLIntegrityConstraintViolationException: Column \'add_time\' cannot be null\r\n at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:117)\r\n at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)\r\n at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)\r\n at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:974)\r\n at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1113)\r\n at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1061)\r\n at com.mysql.cj.jdbc.ClientPreparedStatement.executeLargeUpdate(ClientPreparedStatement.java:1381)\r\n at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdate(ClientPreparedStatement.java:1046)\r\n at net.sf.log4jdbc.sql.jdbcapi.PreparedStatementSpy.executeUpdate(PreparedStatementSpy.java:1080)\r\n at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_executeUpdate(FilterChainImpl.java:3201)\r\n at com.alibaba.druid.filter.FilterAdapter.preparedStatement_executeUpdate(FilterAdapter.java:1091)\r\n at com.alibaba.druid.filter.FilterEventAdapter.preparedStatement_executeUpdate(FilterEventAdapter.java:491)\r\n at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_executeUpdate(FilterChainImpl.java:3199)\r\n at com.alibaba.druid.proxy.jdbc.PreparedStatementProxyImpl.executeUpdate(PreparedStatementProxyImpl.java:194)\r\n at com.alibaba.druid.pool.DruidPooledPreparedStatement.executeUpdate(DruidPooledPreparedStatement.java:256)\r\n at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:175)\r\n ... 172 more\r\n', 'ERROR', 'co.yixiang.modules.shop.rest.YxSystemUserLevelController.create()', '{ resources: YxSystemUserLevel(id=null, merId=null, name=111, money=null, validDate=0, isForever=1, isPay=null, isShow=1, grade=11, discount=99, image=, icon=, explain=333, addTime=null, isDel=null) }', '127.0.0.1', 87, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17154, '2019-12-04 17:10:16', '新增', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserLevelController.create()', '{ resources: YxSystemUserLevel(id=7, merId=null, name=111, money=null, validDate=0, isForever=1, isPay=null, isShow=1, grade=11, discount=99, image=, icon=, explain=333, addTime=1575450616, isDel=null) }', '127.0.0.1', 68, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17155, '2019-12-04 17:10:16', '查询', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserLevelController.getYxSystemUserLevels()', '{ criteria: YxSystemUserLevelQueryCriteria() pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 46, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17156, '2019-12-04 17:14:43', '删除YxSystemUserLevel', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserLevelController.delete()', '{ id: 7 }', '127.0.0.1', 128, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17157, '2019-12-04 17:14:43', '查询', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserLevelController.getYxSystemUserLevels()', '{ criteria: YxSystemUserLevelQueryCriteria() pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 26, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17158, '2019-12-04 17:18:20', '查询', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserLevelController.getYxSystemUserLevels()', '{ criteria: YxSystemUserLevelQueryCriteria() pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 9, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17159, '2019-12-04 17:20:42', '查询', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserLevelController.getYxSystemUserLevels()', '{ criteria: YxSystemUserLevelQueryCriteria() pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 7, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17160, '2019-12-04 17:20:42', '查询YxSystemUserTask', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserTaskController.getYxSystemUserTasks()', '{ criteria: YxSystemUserTaskQueryCriteria() pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 24, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17161, '2019-12-04 17:20:50', '查询YxSystemUserTask', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserTaskController.getYxSystemUserTasks()', '{ criteria: YxSystemUserTaskQueryCriteria() pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 8, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17162, '2019-12-04 17:20:50', '查询', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserLevelController.getYxSystemUserLevels()', '{ criteria: YxSystemUserLevelQueryCriteria() pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 13, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17163, '2019-12-04 17:21:05', '查询', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserLevelController.getYxSystemUserLevels()', '{ criteria: YxSystemUserLevelQueryCriteria() pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 4, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17164, '2019-12-04 17:21:05', '查询YxSystemUserTask', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserTaskController.getYxSystemUserTasks()', '{ criteria: YxSystemUserTaskQueryCriteria() pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 6, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17165, '2019-12-04 17:22:20', '查询YxSystemUserTask', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserTaskController.getYxSystemUserTasks()', '{ criteria: YxSystemUserTaskQueryCriteria() pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 15, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17166, '2019-12-04 17:22:30', '查询YxSystemUserTask', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserTaskController.getYxSystemUserTasks()', '{ criteria: YxSystemUserTaskQueryCriteria() pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 3, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17167, '2019-12-04 17:22:30', '查询', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserLevelController.getYxSystemUserLevels()', '{ criteria: YxSystemUserLevelQueryCriteria() pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 5, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17168, '2019-12-04 17:23:38', '查询YxSystemUserTask', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserTaskController.getYxSystemUserTasks()', '{ criteria: YxSystemUserTaskQueryCriteria() pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 8, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17169, '2019-12-04 17:24:42', '查询', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserLevelController.getYxSystemUserLevels()', '{ criteria: YxSystemUserLevelQueryCriteria() pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 4, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17170, '2019-12-04 17:25:12', '查询菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.getMenus()', '{ criteria: MenuQueryCriteria(blurry=null) }', '127.0.0.1', 83, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17171, '2019-12-04 17:25:30', '查询菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.getMenus()', '{ criteria: MenuQueryCriteria(blurry=null) }', '127.0.0.1', 3, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17172, '2019-12-04 17:26:19', '新增菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.create()', '{ resources: co.yixiang.modules.system.domain.Menu@6d }', '127.0.0.1', 100, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17173, '2019-12-04 17:26:19', '查询菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.getMenus()', '{ criteria: MenuQueryCriteria(blurry=null) }', '127.0.0.1', 14, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17174, '2019-12-04 17:26:27', '查询角色', 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', 20, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17175, '2019-12-04 17:26:32', '修改角色菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.RoleController.updateMenu()', '{ resources: Role{id=1, name=\'null\', remark=\'null\', createDateTime=null} }', '127.0.0.1', 110, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17176, '2019-12-04 17:27:16', '查询部门', NULL, 'INFO', 'co.yixiang.modules.system.rest.DeptController.getDepts()', '{ criteria: DeptQueryCriteria(ids=[], name=null, enabled=null, pid=null) }', '127.0.0.1', 76, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17177, '2019-12-04 17:27:16', '查询用户', NULL, 'INFO', 'co.yixiang.modules.system.rest.UserController.getUsers()', '{ criteria: UserQueryCriteria(id=null, deptIds=[], blurry=null, enabled=null, deptId=null) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 96, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17178, '2019-12-04 17:27:16', '查询字典详情', NULL, 'INFO', 'co.yixiang.modules.system.rest.DictDetailController.getDictDetails()', '{ criteria: DictDetailQueryCriteria(label=null, dictName=user_status) pageable: Page request [number: 0, size 2000, sort: sort: ASC] }', '127.0.0.1', 143, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17179, '2019-12-04 17:27:27', '查询', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserLevelController.getYxSystemUserLevels()', '{ criteria: YxSystemUserLevelQueryCriteria() pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 5, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17180, '2019-12-04 17:27:30', '查询', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserLevelController.getYxSystemUserLevels()', '{ criteria: YxSystemUserLevelQueryCriteria() pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 11, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17181, '2019-12-04 17:27:32', '查询YxSystemUserTask', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserTaskController.getYxSystemUserTasks()', '{ criteria: YxSystemUserTaskQueryCriteria() pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 4, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17182, '2019-12-04 18:22:09', '用户登录', 'co.yixiang.exception.BadRequestException: 验证码错误\r\n at co.yixiang.modules.security.rest.AuthenticationController.login(AuthenticationController.java:70)\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$$39b333ba.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', 34, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17183, '2019-12-04 18:22:18', '用户登录', NULL, 'INFO', 'co.yixiang.modules.security.rest.AuthenticationController.login()', '{ authorizationUser: {username=admin, password= ******} }', '127.0.0.1', 727, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17184, '2019-12-04 18:22:19', '查询YxSystemUserTask', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserTaskController.getYxSystemUserTasks()', '{ criteria: YxSystemUserTaskQueryCriteria() pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 151, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17185, '2019-12-04 18:22:36', '查询YxSystemUserTask', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserTaskController.getYxSystemUserTasks()', '{ criteria: YxSystemUserTaskQueryCriteria() pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 30, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17186, '2019-12-04 18:23:26', '查询YxSystemUserTask', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserTaskController.getYxSystemUserTasks()', '{ criteria: YxSystemUserTaskQueryCriteria() pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 44, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17187, '2019-12-04 18:26:39', '查询YxSystemUserTask', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserTaskController.getYxSystemUserTasks()', '{ criteria: YxSystemUserTaskQueryCriteria() pageable: Page request [number: 1, size 10, sort: id: DESC] }', '127.0.0.1', 15, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17188, '2019-12-04 18:26:43', '查询YxSystemUserTask', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserTaskController.getYxSystemUserTasks()', '{ criteria: YxSystemUserTaskQueryCriteria() pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 22, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17189, '2019-12-04 18:40:54', '查询YxSystemUserTask', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserTaskController.getYxSystemUserTasks()', '{ criteria: YxSystemUserTaskQueryCriteria() pageable: Page request [number: 1, size 10, sort: id: DESC] }', '127.0.0.1', 19, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17190, '2019-12-04 18:41:04', '查询YxSystemUserTask', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserTaskController.getYxSystemUserTasks()', '{ criteria: YxSystemUserTaskQueryCriteria() pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 26, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17191, '2019-12-04 18:46:00', '查询YxSystemUserTask', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserTaskController.getYxSystemUserTasks()', '{ criteria: YxSystemUserTaskQueryCriteria() pageable: Page request [number: 1, size 10, sort: id: DESC] }', '127.0.0.1', 21, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17192, '2019-12-04 18:46:09', '查询YxSystemUserTask', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserTaskController.getYxSystemUserTasks()', '{ criteria: YxSystemUserTaskQueryCriteria() pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 26, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17193, '2019-12-04 18:47:01', '查询', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserLevelController.getYxSystemUserLevels()', '{ criteria: YxSystemUserLevelQueryCriteria() pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 30, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17194, '2019-12-04 18:47:08', '查询YxSystemUserTask', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserTaskController.getYxSystemUserTasks()', '{ criteria: YxSystemUserTaskQueryCriteria() pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 29, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17195, '2019-12-04 18:55:09', '查询YxSystemUserTask', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserTaskController.getYxSystemUserTasks()', '{ criteria: YxSystemUserTaskQueryCriteria() pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 42, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17196, '2019-12-04 19:23:20', '查询YxSystemUserTask', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserTaskController.getYxSystemUserTasks()', '{ criteria: YxSystemUserTaskQueryCriteria() pageable: Page request [number: 1, size 10, sort: id: DESC] }', '127.0.0.1', 128, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17197, '2019-12-04 19:23:40', '查询YxSystemUserTask', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserTaskController.getYxSystemUserTasks()', '{ criteria: YxSystemUserTaskQueryCriteria() pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 52, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17198, '2019-12-04 19:26:44', '查询YxSystemUserTask', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserTaskController.getYxSystemUserTasks()', '{ criteria: YxSystemUserTaskQueryCriteria() pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 85, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17199, '2019-12-04 19:27:23', '查询YxSystemUserTask', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserTaskController.getYxSystemUserTasks()', '{ criteria: YxSystemUserTaskQueryCriteria() pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 422, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17200, '2019-12-04 19:27:44', '查询YxSystemUserTask', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserTaskController.getYxSystemUserTasks()', '{ criteria: YxSystemUserTaskQueryCriteria() pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 23, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17201, '2019-12-04 19:34:32', '查询YxSystemUserTask', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserTaskController.getYxSystemUserTasks()', '{ criteria: YxSystemUserTaskQueryCriteria() pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 24, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17202, '2019-12-04 19:34:55', '查询YxSystemUserTask', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserTaskController.getYxSystemUserTasks()', '{ criteria: YxSystemUserTaskQueryCriteria() pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 29, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17203, '2019-12-04 19:35:02', '查询YxSystemUserTask', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserTaskController.getYxSystemUserTasks()', '{ criteria: YxSystemUserTaskQueryCriteria() pageable: Page request [number: 1, size 10, sort: id: DESC] }', '127.0.0.1', 18, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17204, '2019-12-04 19:36:21', '查询YxSystemUserTask', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserTaskController.getYxSystemUserTasks()', '{ criteria: YxSystemUserTaskQueryCriteria() pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 24, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17205, '2019-12-04 19:36:45', '查询YxSystemUserTask', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserTaskController.getYxSystemUserTasks()', '{ criteria: YxSystemUserTaskQueryCriteria() pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 20, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17206, '2019-12-04 19:38:34', '查询', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserLevelController.getYxSystemUserLevels()', '{ criteria: YxSystemUserLevelQueryCriteria() pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 54, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17207, '2019-12-04 19:38:50', '查询用户', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxUserController.getYxUsers()', '{ criteria: YxUserQueryCriteria(nickname=null, phone=null, isPromoter=null) pageable: Page request [number: 0, size 10, sort: uid: DESC] }', '127.0.0.1', 42, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17208, '2019-12-04 19:38:59', '查询YxSystemUserTask', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserTaskController.getYxSystemUserTasks()', '{ criteria: YxSystemUserTaskQueryCriteria() pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 30, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17209, '2019-12-04 19:39:16', '修改YxSystemUserTask', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserTaskController.update()', '{ resources: YxSystemUserTask(id=1, name=满足积分101分, realName=积分数, taskType=SatisfactionIntegral, number=100, levelId=1, sort=0, isShow=1, isMust=1, illustrate=, addTime=1553827616) }', '127.0.0.1', 99, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17210, '2019-12-04 19:39:16', '查询YxSystemUserTask', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserTaskController.getYxSystemUserTasks()', '{ criteria: YxSystemUserTaskQueryCriteria() pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 29, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17211, '2019-12-04 19:39:23', '修改YxSystemUserTask', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserTaskController.update()', '{ resources: YxSystemUserTask(id=1, name=满足积分100分, realName=积分数, taskType=SatisfactionIntegral, number=100, levelId=1, sort=0, isShow=1, isMust=1, illustrate=, addTime=1553827616) }', '127.0.0.1', 43, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17212, '2019-12-04 19:39:23', '查询YxSystemUserTask', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserTaskController.getYxSystemUserTasks()', '{ criteria: YxSystemUserTaskQueryCriteria() pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 25, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17213, '2019-12-05 14:04:52', '用户登录', NULL, 'INFO', 'co.yixiang.modules.security.rest.AuthenticationController.login()', '{ authorizationUser: {username=admin, password= ******} }', '127.0.0.1', 792, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17214, '2019-12-05 14:10:01', '查询菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.getMenus()', '{ criteria: MenuQueryCriteria(blurry=null) }', '127.0.0.1', 44, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17215, '2019-12-05 14:10:21', '查询菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.getMenus()', '{ criteria: MenuQueryCriteria(blurry=null) }', '127.0.0.1', 2, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17216, '2019-12-05 14:12:16', '新增菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.create()', '{ resources: co.yixiang.modules.system.domain.Menu@6e }', '127.0.0.1', 409, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17217, '2019-12-05 14:12:16', '查询菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.getMenus()', '{ criteria: MenuQueryCriteria(blurry=null) }', '127.0.0.1', 86, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17218, '2019-12-05 14:13:41', '查询权限', NULL, 'INFO', 'co.yixiang.modules.system.rest.PermissionController.getPermissions()', '{ criteria: PermissionQueryCriteria(blurry=null) }', '127.0.0.1', 41, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17219, '2019-12-05 14:13:46', '查询角色', 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 (17220, '2019-12-05 14:13:54', '修改角色菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.RoleController.updateMenu()', '{ resources: Role{id=1, name=\'null\', remark=\'null\', createDateTime=null} }', '127.0.0.1', 83, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17221, '2019-12-05 14:13:58', '查询角色', 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', 28, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17222, '2019-12-05 14:15:01', '查询角色', 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', 1, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17223, '2019-12-05 14:15:01', '查询菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.getMenus()', '{ criteria: MenuQueryCriteria(blurry=null) }', '127.0.0.1', 2, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17224, '2019-12-05 14:15:09', '查询YxSystemConfig', NULL, 'INFO', 'co.yixiang.modules.wechat.rest.YxSystemConfigController.getYxSystemConfigs()', '{ criteria: YxSystemConfigQueryCriteria() pageable: Page request [number: 0, size 50, sort: UNSORTED] }', '127.0.0.1', 18, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17225, '2019-12-05 14:15:13', '查询数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.getYxSystemGroupDatas()', '{ criteria: YxSystemGroupDataQueryCriteria(groupName=routine_my_menus) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 129, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17226, '2019-12-05 14:15:16', '查询YxSystemConfig', NULL, 'INFO', 'co.yixiang.modules.wechat.rest.YxSystemConfigController.getYxSystemConfigs()', '{ criteria: YxSystemConfigQueryCriteria() pageable: Page request [number: 0, size 50, sort: UNSORTED] }', '127.0.0.1', 6, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17227, '2019-12-05 14:15:51', '查询数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.getYxSystemGroupDatas()', '{ criteria: YxSystemGroupDataQueryCriteria(groupName=routine_my_menus) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 7, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17228, '2019-12-05 14:17:22', '查询YxSystemConfig', NULL, 'INFO', 'co.yixiang.modules.wechat.rest.YxSystemConfigController.getYxSystemConfigs()', '{ criteria: YxSystemConfigQueryCriteria() pageable: Page request [number: 0, size 50, sort: UNSORTED] }', '127.0.0.1', 4, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17229, '2019-12-05 14:17:23', '查询数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.getYxSystemGroupDatas()', '{ criteria: YxSystemGroupDataQueryCriteria(groupName=routine_my_menus) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 3, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17230, '2019-12-05 14:17:38', '查询数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.getYxSystemGroupDatas()', '{ criteria: YxSystemGroupDataQueryCriteria(groupName=routine_my_menus) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 8, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17231, '2019-12-05 14:18:16', '修改菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.update()', '{ resources: co.yixiang.modules.system.domain.Menu@6e }', '127.0.0.1', 69, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17232, '2019-12-05 14:18:16', '查询菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.getMenus()', '{ criteria: MenuQueryCriteria(blurry=null) }', '127.0.0.1', 6, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17233, '2019-12-05 14:18:28', '查询数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.getYxSystemGroupDatas()', '{ criteria: YxSystemGroupDataQueryCriteria(groupName=routine_my_menus) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 4, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17234, '2019-12-05 14:18:31', '查询数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.getYxSystemGroupDatas()', '{ criteria: YxSystemGroupDataQueryCriteria(groupName=sign_day_num) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 5, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17235, '2019-12-05 14:21:28', '新增数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.create()', '{ jsonStr: {\"id\":\"\",\"groupName\":\"sign_day_num\",\"day\":1,\"sign_num\":\"10\"} }', '127.0.0.1', 76, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17236, '2019-12-05 14:21:28', '查询数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.getYxSystemGroupDatas()', '{ criteria: YxSystemGroupDataQueryCriteria(groupName=sign_day_num) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 4, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17237, '2019-12-05 14:23:21', '新增数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.create()', '{ jsonStr: {\"id\":\"\",\"groupName\":\"\",\"value\":\"\",\"addTime\":\"\",\"sort\":\"\",\"status\":\"\",\"day\":\"第二天\",\"sign_num\":\"20\"} }', '127.0.0.1', 47, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17238, '2019-12-05 14:23:21', '查询数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.getYxSystemGroupDatas()', '{ criteria: YxSystemGroupDataQueryCriteria(groupName=sign_day_num) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 2, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17239, '2019-12-05 14:24:31', '查询数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.getYxSystemGroupDatas()', '{ criteria: YxSystemGroupDataQueryCriteria(groupName=sign_day_num) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 2, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17240, '2019-12-05 14:24:48', '新增数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.create()', '{ jsonStr: {\"id\":\"\",\"groupName\":\"sign_day_num\",\"day\":\"第二天\",\"sign_num\":\"20\"} }', '127.0.0.1', 43, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17241, '2019-12-05 14:24:48', '查询数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.getYxSystemGroupDatas()', '{ criteria: YxSystemGroupDataQueryCriteria(groupName=sign_day_num) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 4, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17242, '2019-12-05 14:25:04', '新增数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.create()', '{ jsonStr: {\"id\":\"\",\"groupName\":\"\",\"value\":\"\",\"addTime\":\"\",\"sort\":\"\",\"status\":\"\",\"day\":\"第三天\",\"sign_num\":\"30\"} }', '127.0.0.1', 42, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17243, '2019-12-05 14:25:04', '查询数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.getYxSystemGroupDatas()', '{ criteria: YxSystemGroupDataQueryCriteria(groupName=sign_day_num) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 4, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17244, '2019-12-05 14:27:16', '查询数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.getYxSystemGroupDatas()', '{ criteria: YxSystemGroupDataQueryCriteria(groupName=sign_day_num) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 4, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17245, '2019-12-05 14:27:32', '新增数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.create()', '{ jsonStr: {\"id\":\"\",\"groupName\":\"sign_day_num\",\"day\":\"第三天\",\"sign_num\":\"30\"} }', '127.0.0.1', 39, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17246, '2019-12-05 14:27:33', '查询数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.getYxSystemGroupDatas()', '{ criteria: YxSystemGroupDataQueryCriteria(groupName=sign_day_num) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 7, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17247, '2019-12-05 14:27:42', '新增数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.create()', '{ jsonStr: {\"id\":\"\",\"groupName\":\"sign_day_num\",\"value\":\"\",\"addTime\":\"\",\"sort\":\"\",\"status\":\"\",\"day\":\"第四天\",\"sign_num\":\"40\"} }', '127.0.0.1', 41, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17248, '2019-12-05 14:27:43', '查询数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.getYxSystemGroupDatas()', '{ criteria: YxSystemGroupDataQueryCriteria(groupName=sign_day_num) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 3, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17249, '2019-12-05 14:29:06', '新增数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.create()', '{ jsonStr: {\"id\":\"\",\"groupName\":\"sign_day_num\",\"value\":\"\",\"addTime\":\"\",\"sort\":\"\",\"status\":\"\",\"day\":\"第五天\",\"sign_num\":\"50\"} }', '127.0.0.1', 22, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17250, '2019-12-05 14:29:06', '查询数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.getYxSystemGroupDatas()', '{ criteria: YxSystemGroupDataQueryCriteria(groupName=sign_day_num) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 5, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17251, '2019-12-05 14:29:15', '新增数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.create()', '{ jsonStr: {\"id\":\"\",\"groupName\":\"sign_day_num\",\"value\":\"\",\"addTime\":\"\",\"sort\":\"\",\"status\":\"\",\"day\":\"第六天\",\"sign_num\":\"60\"} }', '127.0.0.1', 65, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17252, '2019-12-05 14:29:15', '查询数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.getYxSystemGroupDatas()', '{ criteria: YxSystemGroupDataQueryCriteria(groupName=sign_day_num) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 2, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17253, '2019-12-05 14:29:42', '新增数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.create()', '{ jsonStr: {\"id\":\"\",\"groupName\":\"sign_day_num\",\"value\":\"\",\"addTime\":\"\",\"sort\":\"\",\"status\":\"\",\"day\":\"奖励\",\"sign_num\":\"100\"} }', '127.0.0.1', 39, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17254, '2019-12-05 14:29:42', '查询数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.getYxSystemGroupDatas()', '{ criteria: YxSystemGroupDataQueryCriteria(groupName=sign_day_num) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 3, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17255, '2019-12-05 14:30:46', '查询数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.getYxSystemGroupDatas()', '{ criteria: YxSystemGroupDataQueryCriteria(groupName=sign_day_num) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 6, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17256, '2019-12-05 14:31:01', '查询数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.getYxSystemGroupDatas()', '{ criteria: YxSystemGroupDataQueryCriteria(groupName=sign_day_num) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 4, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17257, '2019-12-05 14:31:21', '查询数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.getYxSystemGroupDatas()', '{ criteria: YxSystemGroupDataQueryCriteria(groupName=sign_day_num) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 7, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17258, '2019-12-05 14:31:33', '修改数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.update()', '{ jsonStr: {\"id\":205,\"groupName\":\"sign_day_num\",\"day\":\"第一天\",\"sign_num\":\"10\"} }', '127.0.0.1', 77, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17259, '2019-12-05 14:31:33', '查询数据配置', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemGroupDataController.getYxSystemGroupDatas()', '{ criteria: YxSystemGroupDataQueryCriteria(groupName=sign_day_num) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 25, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17260, '2019-12-05 14:46:06', '用户登录', NULL, 'INFO', 'co.yixiang.modules.security.rest.AuthenticationController.login()', '{ authorizationUser: {username=15136175246, password= ******} }', '127.0.0.1', 189, '', '内网IP'); +INSERT INTO `log` VALUES (17261, '2019-12-05 14:49:15', '用户登录', NULL, 'INFO', 'co.yixiang.modules.security.rest.AuthenticationController.login()', '{ authorizationUser: {username=15136175246, password= ******} }', '127.0.0.1', 380, '', '内网IP'); +INSERT INTO `log` VALUES (17262, '2019-12-07 09:58:15', '用户登录', NULL, 'INFO', 'co.yixiang.modules.security.rest.AuthenticationController.login()', '{ authorizationUser: {username=15136175246, password= ******} }', '127.0.0.1', 1661, '', '内网IP'); +INSERT INTO `log` VALUES (17263, '2019-12-08 09:59:26', '用户登录', NULL, 'INFO', 'co.yixiang.modules.security.rest.AuthenticationController.login()', '{ authorizationUser: {username=15136175246, password= ******} }', '127.0.0.1', 1085, '', '内网IP'); +INSERT INTO `log` VALUES (17264, '2019-12-08 10:32:09', '用户登录', '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$$92afee88.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', 20, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17265, '2019-12-08 10:32:16', '用户登录', NULL, 'INFO', 'co.yixiang.modules.security.rest.AuthenticationController.login()', '{ authorizationUser: {username=admin, password= ******} }', '127.0.0.1', 848, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17266, '2019-12-08 10:34:59', '查询商品', 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', 72, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17267, '2019-12-08 10:34:59', '查询商品', 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', 72, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17268, '2019-12-08 10:34:59', '查询商品', 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', 80, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17269, '2019-12-08 10:35:07', '查询商品分类', 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', 17, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17270, '2019-12-08 10:38:40', '查询用户', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxUserController.getYxUsers()', '{ criteria: YxUserQueryCriteria(nickname=null, phone=null, isPromoter=null) pageable: Page request [number: 0, size 10, sort: uid: DESC] }', '127.0.0.1', 37, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17271, '2019-12-08 10:41:25', '查询', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxSystemUserLevelController.getYxSystemUserLevels()', '{ criteria: YxSystemUserLevelQueryCriteria() pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 523, 'admin', '内网IP'); -- ---------------------------- -- Table structure for menu @@ -3090,7 +3250,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 = 77 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; +) ENGINE = InnoDB AUTO_INCREMENT = 80 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of menu @@ -3148,6 +3308,9 @@ INSERT INTO `menu` VALUES (73, '2019-11-18 14:23:04', b'0', '拼团产品', 'act INSERT INTO `menu` VALUES (74, '2019-11-21 19:35:58', b'0', '拼团列表', 'activity/combinlist/index', 63, 65, 'log', 'pink', b'0', b'0', 'Pink'); INSERT INTO `menu` VALUES (75, '2019-11-28 17:06:22', b'0', '微信支付配置', 'wechat/config/pay', 48, 35, 'log', 'wxpayconfig', b'0', b'0', 'Wxpayconfig'); INSERT INTO `menu` VALUES (76, '2019-11-29 15:13:46', b'0', '小程序配置', 'wechat/config/wxapp', 48, 36, 'log', 'wxapp', b'0', b'0', 'Wxapp'); +INSERT INTO `menu` VALUES (77, '2019-12-04 16:35:41', b'0', '会员等级', 'shop/userlevel/index', 46, 22, 'log', 'userlevel', b'0', b'0', 'Userlevel'); +INSERT INTO `menu` VALUES (78, '2019-12-04 17:26:19', b'0', '等级任务', 'shop/usertask/index', 46, 23, 'log', 'usertask', b'0', b'0', 'Usertask'); +INSERT INTO `menu` VALUES (79, '2019-12-05 14:12:16', b'0', '签到天数配置', 'shop/set/sign', 55, 57, 'log', 'signday', b'0', b'0', 'Signday'); -- ---------------------------- -- Table structure for permission @@ -3473,6 +3636,9 @@ INSERT INTO `roles_menus` VALUES (73, 1); INSERT INTO `roles_menus` VALUES (74, 1); INSERT INTO `roles_menus` VALUES (75, 1); INSERT INTO `roles_menus` VALUES (76, 1); +INSERT INTO `roles_menus` VALUES (77, 1); +INSERT INTO `roles_menus` VALUES (78, 1); +INSERT INTO `roles_menus` VALUES (79, 1); INSERT INTO `roles_menus` VALUES (1, 2); INSERT INTO `roles_menus` VALUES (2, 2); INSERT INTO `roles_menus` VALUES (3, 2); @@ -3624,7 +3790,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 = 152 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; +) ENGINE = InnoDB AUTO_INCREMENT = 158 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of visits @@ -3685,6 +3851,12 @@ INSERT INTO `visits` VALUES (148, '2019-11-26 09:57:20', '2019-11-26', 1, 1, 'Tu INSERT INTO `visits` VALUES (149, '2019-11-27 12:29:21', '2019-11-27', 1, 31, 'Wed'); INSERT INTO `visits` VALUES (150, '2019-11-28 10:34:08', '2019-11-28', 1, 4, 'Thu'); INSERT INTO `visits` VALUES (151, '2019-11-29 10:30:17', '2019-11-29', 1, 5, 'Fri'); +INSERT INTO `visits` VALUES (152, '2019-11-30 10:07:25', '2019-11-30', 1, 1, 'Sat'); +INSERT INTO `visits` VALUES (153, '2019-12-04 10:27:07', '2019-12-04', 1, 3, 'Wed'); +INSERT INTO `visits` VALUES (154, '2019-12-05 14:04:33', '2019-12-05', 1, 3, 'Thu'); +INSERT INTO `visits` VALUES (155, '2019-12-06 20:07:01', '2019-12-06', 1, 1, 'Fri'); +INSERT INTO `visits` VALUES (156, '2019-12-07 09:45:53', '2019-12-07', 1, 1, 'Sat'); +INSERT INTO `visits` VALUES (157, '2019-12-08 09:31:19', '2019-12-08', 1, 3, 'Sun'); -- ---------------------------- -- Table structure for yx_article @@ -3718,7 +3890,7 @@ CREATE TABLE `yx_article` ( -- Records of yx_article -- ---------------------------- INSERT INTO `yx_article` VALUES (1, '', '333', '333', 'https://i.loli.net/2019/10/08/CRnUIMgVQlk3eGL.png', '33333', NULL, '', '', '5', NULL, '', NULL, '2019-08-22 12:26', NULL, NULL, NULL, NULL, NULL, NULL); -INSERT INTO `yx_article` VALUES (2, '', 'yshop1.3版本上线了', 'yshop', 'https://i.loli.net/2019/10/08/EgR73JrMevH9lfh.png', 'yshop1.3版本上线了', '

yshop1.3版本上线了

', '', '', '2', NULL, '', NULL, '2019-08-22 12:26', NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO `yx_article` VALUES (2, '', 'yshop1.3版本上线了', 'yshop', 'https://i.loli.net/2019/10/08/EgR73JrMevH9lfh.png', 'yshop1.3版本上线了', '

yshop1.3版本上线了

', '', '', '3', NULL, '', NULL, '2019-08-22 12:26', NULL, NULL, NULL, NULL, NULL, NULL); -- ---------------------------- -- Table structure for yx_article_category @@ -4376,7 +4548,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 = 89 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '购物车表' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 96 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '购物车表' ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of yx_store_cart @@ -4449,6 +4621,13 @@ INSERT INTO `yx_store_cart` VALUES (85, 12, 'product', 19, '', 1, 1574244169, 1, INSERT INTO `yx_store_cart` VALUES (86, 12, 'product', 19, '', 1, 1574320376, 1, 0, 1, 2, 0, 0); INSERT INTO `yx_store_cart` VALUES (87, 11, 'product', 19, '', 1, 1574329392, 1, 0, 1, 2, 0, 0); INSERT INTO `yx_store_cart` VALUES (88, 12, 'product', 19, '', 1, 1574424869, 1, 0, 1, 2, 0, 0); +INSERT INTO `yx_store_cart` VALUES (89, 12, 'product', 19, '00e86525a7af4dcf9e653ae0a2062369', 1, 1575095144, 1, 0, 1, 0, 0, 0); +INSERT INTO `yx_store_cart` VALUES (90, 12, 'product', 19, '00e86525a7af4dcf9e653ae0a2062369', 1, 1575095354, 1, 0, 1, 0, 0, 0); +INSERT INTO `yx_store_cart` VALUES (91, 12, 'product', 19, '00e86525a7af4dcf9e653ae0a2062369', 2, 1575551197, 0, 0, 0, 0, 0, 0); +INSERT INTO `yx_store_cart` VALUES (92, 12, 'product', 20, 'ba5d202555c44d378e6644ca1296ee01', 1, 1575551310, 0, 0, 0, 0, 0, 0); +INSERT INTO `yx_store_cart` VALUES (93, 12, 'product', 19, '', 1, 1575552290, 0, 0, 1, 2, 0, 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); -- ---------------------------- -- Table structure for yx_store_category @@ -4518,8 +4697,8 @@ CREATE TABLE `yx_store_combination` ( -- ---------------------------- -- Records of yx_store_combination -- ---------------------------- -INSERT INTO `yx_store_combination` VALUES (1, 19, NULL, 'https://image.dayouqiantu.cn/5ca011a1cd487.jpg', 'https://image.dayouqiantu.cn/5ca01c7fc9238.jpg,https://image.dayouqiantu.cn/5ca01c7676042.jpg', '70gA4黑白打印复印', NULL, 2, '打印复印资料A4黑白彩色印刷画册书本装订图文数码快印服务', 1.00, 1, 19, 98, '1574064564', 1, 1, 0, 1, NULL, 1, 0.00, '

文件请传QQ2412733099,

718504558或2412733099@qq.com邮箱,

手机/微信:13733990583

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

   实体店面经营 保质保量

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

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

更大量请联系店主报价,

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

付款时直接抵扣

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



    

', 1574064557, 1574352000, 24, 0, 0, '张', '2019-11-22 00:00:00', '2019-11-18 16:09:17'); -INSERT INTO `yx_store_combination` VALUES (2, 19, NULL, 'https://image.dayouqiantu.cn/5ca011a1cd487.jpg', 'https://image.dayouqiantu.cn/5ca01c7fc9238.jpg,https://image.dayouqiantu.cn/5ca01c7676042.jpg', '70gA4黑白打印复印', NULL, 2, '打印复印资料A4黑白彩色印刷画册书本装订图文数码快印服务', 1.00, 1, 24, 93, '1574066608', 1, 1, 0, 1, NULL, 1, 0.00, '

文件请传QQ2412733099,

718504558或2412733099@qq.com邮箱,

手机/微信:13733990583

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

   实体店面经营 保质保量

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

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

更大量请联系店主报价,

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

付款时直接抵扣

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



    

', 1574066592, 1574870400, 24, 0, 0, '张', '2019-11-28 00:00:00', '2019-11-18 16:43:12'); +INSERT INTO `yx_store_combination` VALUES (1, 19, NULL, 'https://image.dayouqiantu.cn/5ca011a1cd487.jpg', 'https://image.dayouqiantu.cn/5ca01c7fc9238.jpg,https://image.dayouqiantu.cn/5ca01c7676042.jpg', '70gA4黑白打印复印', NULL, 2, '打印复印资料A4黑白彩色印刷画册书本装订图文数码快印服务', 1.00, 1, 19, 98, '1574064564', 1, 1, 0, 1, NULL, 1, 0.00, '

文件请传QQ2412733099,

718504558或2412733099@qq.com邮箱,

手机/微信:13733990583

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

   实体店面经营 保质保量

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

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

更大量请联系店主报价,

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

付款时直接抵扣

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



    

', 1574064557, 1577289600, 24, 0, 0, '张', '2019-11-22 00:00:00', '2019-11-18 16:09:17'); +INSERT INTO `yx_store_combination` VALUES (2, 19, NULL, 'https://image.dayouqiantu.cn/5ca011a1cd487.jpg', 'https://image.dayouqiantu.cn/5ca01c7fc9238.jpg,https://image.dayouqiantu.cn/5ca01c7676042.jpg', '70gA4黑白打印复印', NULL, 2, '打印复印资料A4黑白彩色印刷画册书本装订图文数码快印服务', 1.00, 1, 24, 93, '1574066608', 1, 1, 0, 1, NULL, 1, 0.00, '

文件请传QQ2412733099,

718504558或2412733099@qq.com邮箱,

手机/微信:13733990583

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

   实体店面经营 保质保量

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

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

更大量请联系店主报价,

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

付款时直接抵扣

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



    

', 1574066592, 1577289600, 24, 0, 0, '张', '2019-11-28 00:00:00', '2019-11-18 16:43:12'); -- ---------------------------- -- Table structure for yx_store_combination_attr @@ -4671,9 +4850,9 @@ CREATE TABLE `yx_store_coupon_user` ( -- ---------------------------- -- Records of yx_store_coupon_user -- ---------------------------- -INSERT INTO `yx_store_coupon_user` VALUES (1, 1, 12, '双十一', 1.00, 100.00, 1573353024, 1574217024, 0, 'get', 0, 0); +INSERT INTO `yx_store_coupon_user` VALUES (1, 1, 12, '双十一', 1.00, 100.00, 1573353024, 1574217024, 0, 'get', 2, 0); INSERT INTO `yx_store_coupon_user` VALUES (2, 1, 12, '双十一', 1.00, 100.00, 1573353194, 1574217194, 1573380051, 'get', 1, 0); -INSERT INTO `yx_store_coupon_user` VALUES (3, 1, 12, '双十一', 1.00, 100.00, 1573353269, 1574217269, 0, 'get', 0, 0); +INSERT INTO `yx_store_coupon_user` VALUES (3, 1, 12, '双十一', 1.00, 100.00, 1573353269, 1574217269, 0, 'get', 2, 0); -- ---------------------------- -- Table structure for yx_store_order @@ -4743,7 +4922,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 = 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_order @@ -4756,7 +4935,7 @@ INSERT INTO `yx_store_order` VALUES (28, '20191107173121292', 3, 'HU22', '151361 INSERT INTO `yx_store_order` VALUES (29, '20191107173257032', 7, '胡鹏', '15136175246', '山西 太原市 迎泽区 666', '27', 0.00, 1, 0.20, 0.00, 0.20, 0.00, 0.00, 0, 0.00, 0, NULL, 'weixin', 1573119177, 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, NULL, NULL, NULL, 1.00, 0.00, NULL, '', 0, '043f42ca2015446f8b12ffc3890a4cdb', NULL, 0, 0, 0, 0, 0.20, 0, 0, '', 0, 1, 0, 0, 0); INSERT INTO `yx_store_order` VALUES (30, '20191107173722332', 8, '胡鹏', '15136175246', '山西 大同市 灵丘县 999', '29', 0.00, 1, 0.20, 0.00, 0.20, 0.00, 0.00, 0, 0.00, 0, NULL, 'weixin', 1573119442, 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, NULL, NULL, NULL, 1.00, 0.00, NULL, '', 0, 'f9dd9de7f09442bcbeb3b0ffc3d7c090', NULL, 0, 0, 0, 0, 0.20, 0, 0, '', 0, 1, 0, 0, 0); INSERT INTO `yx_store_order` VALUES (31, '20191107175713269', 11, '胡鹏', '15139175246', '重庆 荣昌县 广顺镇 999', '30', 0.00, 1, 0.20, 0.00, 0.20, 0.00, 0.00, 0, 0.00, 1, 1573120639, 'weixin', 1573120633, 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, NULL, NULL, NULL, 1.00, 0.00, NULL, '', 0, 'dae5d2e5965f444da857f31536287cdf', NULL, 0, 0, 0, 0, 0.20, 0, 0, '', 0, 1, 0, 0, 0); -INSERT INTO `yx_store_order` VALUES (32, '20191107184639089', 12, 'hu', '15136175246', '上海 闸北区 城区 99999', '31', 0.00, 1, 0.20, 0.00, 0.20, 0.00, 0.00, 0, 0.00, 0, NULL, 'weixin', 1573123599, 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, NULL, NULL, NULL, 1.00, 0.00, NULL, '', 0, 'fb07f53a51974b46863b57b9a6b543fd', NULL, 0, 0, 0, 0, 0.20, 0, 0, '', 0, 1, 1, 0, 0); +INSERT INTO `yx_store_order` VALUES (32, '20191107184639089', 12, 'hu', '15136175246', '上海 闸北区 城区 99999', '31', 0.00, 1, 0.20, 0.00, 0.20, 0.00, 0.00, 0, 0.00, 0, NULL, 'weixin', 1573123599, 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, NULL, NULL, NULL, 1.00, 0.00, NULL, '', 1, 'fb07f53a51974b46863b57b9a6b543fd', NULL, 0, 0, 0, 0, 0.20, 0, 0, '', 0, 1, 1, 0, 0); INSERT INTO `yx_store_order` VALUES (33, '20191107185008487', 12, 'hu', '15136175246', '上海 闸北区 城区 99999', '32', 0.00, 1, 0.20, 0.00, 0.20, 0.00, 0.00, 0, 0.00, 1, 1573124914, 'yue', 1573123808, 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, NULL, NULL, NULL, 1.00, 0.00, NULL, '', 0, 'be898332372b4d1dbea444d2f547a031', NULL, 0, 0, 0, 0, 0.20, 0, 0, '', 0, 1, 1, 0, 0); INSERT INTO `yx_store_order` VALUES (34, '20191107185115070', 12, 'hu', '15136175246', '上海 闸北区 城区 99999', '33', 0.00, 1, 0.20, 0.00, 0.20, 0.00, 0.00, 0, 0.00, 1, 1573124900, 'yue', 1573123875, 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, NULL, NULL, NULL, 1.00, 0.00, NULL, '', 0, 'ef53cabfeff64a65b9c70ab5997d27ef', NULL, 0, 0, 0, 0, 0.20, 0, 0, '', 0, 1, 1, 0, 0); INSERT INTO `yx_store_order` VALUES (35, '20191110180051521', 12, 'hu', '15136175246', '上海 闸北区 城区 99999', '34', 0.00, 1, 120.00, 0.00, 119.00, 0.00, 0.00, 2, 1.00, 1, 1573380051, 'yue', 1573380051, 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, NULL, NULL, NULL, 1.00, 0.00, NULL, '', 0, 'ff56e24a213c40a08381fb10f5e30de5', NULL, 0, 0, 0, 0, 100.00, 0, 0, '', 0, 1, 1, 0, 0); @@ -4808,6 +4987,9 @@ INSERT INTO `yx_store_order` VALUES (91, '20191120180255448', 12, 'hu', '1513617 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, 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, NULL, NULL, NULL, 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, 1, 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); +INSERT INTO `yx_store_order` VALUES (97, '20191130142549154', 12, 'hu', '15136175246', '上海 闸北区 城区 99999', '89', 0.00, 1, 120.00, 0.00, 120.00, 0.00, 0.00, 0, 0.00, 0, NULL, 'weixin', 1575095149, 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, NULL, NULL, NULL, 1.00, 0.00, NULL, '', 1, 'e12352b189954c35bac63da6698ff8a3', NULL, 0, 0, 0, 0, 100.00, 0, 0, '', 0, 1, 1, 0, 0); +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, 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, NULL, NULL, NULL, 1.00, 0.00, NULL, '', 0, 'ffe728984deb4fde9efc3ff9ce900bfb', NULL, 0, 0, 0, 0, 100.00, 0, 0, '', 0, 1, 1, 0, 0); -- ---------------------------- -- Table structure for yx_store_order_cart_info @@ -4824,7 +5006,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 = 93 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '订单购物详情表' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 96 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '订单购物详情表' ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of yx_store_order_cart_info @@ -4891,6 +5073,9 @@ INSERT INTO `yx_store_order_cart_info` VALUES (89, 91, 85, 19, '{\"addTime\":157 INSERT INTO `yx_store_order_cart_info` VALUES (90, 92, 86, 19, '{\"addTime\":1574320376,\"productId\":19,\"seckillId\":0,\"vipTruePrice\":0.0,\"combinationId\":2,\"costPrice\":0.0,\"trueStock\":96,\"truePrice\":1.0,\"type\":\"product\",\"cartNum\":1,\"productInfo\":{\"userCollect\":false,\"isPostage\":1,\"image_base\":\"https://image.dayouqiantu.cn/5ca011a1cd487.jpg\",\"sales\":21,\"price\":1.00,\"userLike\":false,\"storeName\":\"70gA4黑白打印复印\",\"id\":2,\"stock\":96,\"image\":\"https://image.dayouqiantu.cn/5ca011a1cd487.jpg\",\"cost\":0,\"sliderImageArr\":[],\"isShow\":1,\"postage\":0.00,\"isDel\":0},\"uid\":12,\"productAttrUnique\":\"\",\"bargainId\":0,\"id\":86}', '15bd4c8455204bfe8329d9520c40b7b1'); INSERT INTO `yx_store_order_cart_info` VALUES (91, 93, 87, 19, '{\"addTime\":1574329392,\"productId\":19,\"seckillId\":0,\"vipTruePrice\":0.0,\"combinationId\":2,\"costPrice\":0.0,\"trueStock\":95,\"truePrice\":1.0,\"type\":\"product\",\"cartNum\":1,\"productInfo\":{\"userCollect\":false,\"isPostage\":1,\"image_base\":\"https://image.dayouqiantu.cn/5ca011a1cd487.jpg\",\"sales\":22,\"price\":1.00,\"userLike\":false,\"storeName\":\"70gA4黑白打印复印\",\"id\":2,\"stock\":95,\"image\":\"https://image.dayouqiantu.cn/5ca011a1cd487.jpg\",\"cost\":0,\"sliderImageArr\":[],\"isShow\":1,\"postage\":0.00,\"isDel\":0},\"uid\":11,\"productAttrUnique\":\"\",\"bargainId\":0,\"id\":87}', '7233bf11cc3a460d83ce80a3e82d35be'); INSERT INTO `yx_store_order_cart_info` VALUES (92, 96, 88, 19, '{\"addTime\":1574424869,\"productId\":19,\"seckillId\":0,\"vipTruePrice\":0.0,\"combinationId\":2,\"costPrice\":0.0,\"trueStock\":94,\"truePrice\":1.0,\"type\":\"product\",\"cartNum\":1,\"productInfo\":{\"userCollect\":false,\"isPostage\":1,\"image_base\":\"https://image.dayouqiantu.cn/5ca011a1cd487.jpg\",\"sales\":23,\"price\":1.00,\"userLike\":false,\"storeName\":\"70gA4黑白打印复印\",\"id\":2,\"stock\":94,\"image\":\"https://image.dayouqiantu.cn/5ca011a1cd487.jpg\",\"cost\":0,\"sliderImageArr\":[],\"isShow\":1,\"postage\":0.00,\"isDel\":0},\"uid\":12,\"productAttrUnique\":\"\",\"bargainId\":0,\"id\":88}', 'af8ca64055ac4c739cfded03c2c0b784'); +INSERT INTO `yx_store_order_cart_info` VALUES (93, 97, 89, 19, '{\"addTime\":1575095144,\"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\":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\":993}},\"uid\":12,\"productAttrUnique\":\"00e86525a7af4dcf9e653ae0a2062369\",\"bargainId\":0,\"id\":89}', '247853fbd42241269dc6812edc71fba1'); +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'); -- ---------------------------- -- Table structure for yx_store_order_status @@ -4905,7 +5090,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 = 135 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '订单操作记录表' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 139 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '订单操作记录表' ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of yx_store_order_status @@ -5005,6 +5190,10 @@ INSERT INTO `yx_store_order_status` VALUES (131, 96, 'delivery_goods', '已发 INSERT INTO `yx_store_order_status` VALUES (132, 93, 'delivery_goods', '已发货 快递公司:顺丰快递快递单号:9669999', 1574752215); INSERT INTO `yx_store_order_status` VALUES (133, 91, 'order_edit', '退款给用户:120.0元', 1574757130); INSERT INTO `yx_store_order_status` VALUES (134, 91, 'order_edit', '退款给用户:120.0元', 1574757363); +INSERT INTO `yx_store_order_status` VALUES (135, 97, 'cache_key_create_order', '订单生成', 1575095149); +INSERT INTO `yx_store_order_status` VALUES (136, 98, 'cache_key_create_order', '订单生成', 1575095357); +INSERT INTO `yx_store_order_status` VALUES (137, 99, 'cache_key_create_order', '订单生成', 1575771514); +INSERT INTO `yx_store_order_status` VALUES (138, 99, 'pay_success', '用户付款成功', 1575771514); -- ---------------------------- -- Table structure for yx_store_pink @@ -5097,7 +5286,7 @@ CREATE TABLE `yx_store_product` ( -- Records of yx_store_product -- ---------------------------- INSERT INTO `yx_store_product` VALUES (19, NULL, 'https://image.dayouqiantu.cn/5ca011a1cd487.jpg', 'https://image.dayouqiantu.cn/5ca01c7fc9238.jpg,https://image.dayouqiantu.cn/5ca01c7676042.jpg', '70gA4黑白打印复印', '打印复印资料A4黑白彩色印刷画册书本装订图文数码快印服务', '打印复印', '', '24', 120.00, 0.20, 0.50, 0.00, '张', 1, 18, 99, 1, 1, 1, 1, 1, '

文件请传QQ2412733099,

718504558或2412733099@qq.com邮箱,

手机/微信:13733990583

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

   实体店面经营 保质保量

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

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

更大量请联系店主报价,

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

付款时直接抵扣

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



    

', NULL, 1, 0, 0, 1.00, 0.20, 0, 0, 1, NULL, NULL, '', ''); -INSERT INTO `yx_store_product` VALUES (20, 0, 'https://image.dayouqiantu.cn/5ca04fa9c08ef.jpg', 'https://image.dayouqiantu.cn/5ca05103ad634.jpg,https://image.dayouqiantu.cn/5ca04fa9c08ef.jpg', '70gA4彩色打印复印', '70gA4彩色打印复印', '彩色打印复印', '', '24', 0.50, 0.50, 1.00, 0.00, '张', 0, 1, 100, 0, 1, 1, 1, 1, '

7文件请传QQ2412733099,

718504558或2412733099@qq.com邮箱,

手机/微信:13733990583

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

   实体店面经营 保质保量

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

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

更大量请联系店主报价,

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

付款时直接抵扣

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



', 1573108370, 1, 0, 0, 0.00, 0.50, 0, 0, 1, 0, 0, '', ''); +INSERT INTO `yx_store_product` VALUES (20, 0, 'https://image.dayouqiantu.cn/5ca04fa9c08ef.jpg', 'https://image.dayouqiantu.cn/5ca05103ad634.jpg,https://image.dayouqiantu.cn/5ca04fa9c08ef.jpg', '70gA4彩色打印复印', '70gA4彩色打印复印', '彩色打印复印', '', '24', 0.50, 0.50, 1.00, 0.00, '张', 0, 1, 100, 1, 1, 1, 1, 1, '

7文件请传QQ2412733099,

718504558或2412733099@qq.com邮箱,

手机/微信:13733990583

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

   实体店面经营 保质保量

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

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

更大量请联系店主报价,

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

付款时直接抵扣

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



', 1573108370, 1, 0, 0, 0.00, 0.50, 0, 0, 1, 0, 0, '', ''); -- ---------------------------- -- Table structure for yx_store_product_attr @@ -5165,7 +5354,7 @@ INSERT INTO `yx_store_product_attr_value` VALUES (10, 20, 'A3,白色', 999, NULL INSERT INTO `yx_store_product_attr_value` VALUES (11, 20, 'A3,红色', 998, NULL, 0.50, 'https://image.dayouqiantu.cn/5ca04fa9c08ef.jpg', '75d1d355cdb44970beb3524911c7bae7', 0.50); INSERT INTO `yx_store_product_attr_value` VALUES (12, 20, 'A4,白色', 999, NULL, 0.20, 'https://image.dayouqiantu.cn/5ca04fa9c08ef.jpg', '8e9aed0696654a6bafc2f68a7b4d9960', 0.50); INSERT INTO `yx_store_product_attr_value` VALUES (13, 20, 'A4,红色', 999, NULL, 0.20, 'https://image.dayouqiantu.cn/5ca04fa9c08ef.jpg', 'de81216b2dc743d0b2b626a514e2f78c', 0.50); -INSERT INTO `yx_store_product_attr_value` VALUES (22, 19, 'A1,白色', 993, NULL, 120.00, 'https://image.dayouqiantu.cn/5ca011a1cd487.jpg', '00e86525a7af4dcf9e653ae0a2062369', 100.00); +INSERT INTO `yx_store_product_attr_value` VALUES (22, 19, 'A1,白色', 992, NULL, 120.00, 'https://image.dayouqiantu.cn/5ca011a1cd487.jpg', '00e86525a7af4dcf9e653ae0a2062369', 100.00); INSERT INTO `yx_store_product_attr_value` VALUES (23, 19, 'A1,蓝色', 9999, NULL, 119.00, 'https://image.dayouqiantu.cn/5ca011a1cd487.jpg', '26b0cd2c869e445f850212f62ee2de26', 100.00); INSERT INTO `yx_store_product_attr_value` VALUES (24, 19, 'A4,白色', 999, NULL, 150.00, 'https://image.dayouqiantu.cn/5ca011a1cd487.jpg', '6c2deabbdebd4f57a7c7b4c9e1c08bce', 100.00); INSERT INTO `yx_store_product_attr_value` VALUES (25, 19, 'A4,蓝色', 9998, NULL, 170.00, 'https://image.dayouqiantu.cn/5ca011a1cd487.jpg', 'd8c72945fdbe4035a95a393aff1eea46', 100.00); @@ -5392,33 +5581,6 @@ CREATE TABLE `yx_store_visit` ( PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '产品浏览分析表' ROW_FORMAT = Dynamic; --- ---------------------------- --- Table structure for yx_system_admin --- ---------------------------- -DROP TABLE IF EXISTS `yx_system_admin`; -CREATE TABLE `yx_system_admin` ( - `id` smallint(5) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '后台管理员表ID', - `account` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '后台管理员账号', - `pwd` char(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '后台管理员密码', - `real_name` varchar(16) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '后台管理员姓名', - `roles` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '后台管理员权限(menus_id)', - `last_ip` varchar(16) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '后台管理员最后一次登录ip', - `last_time` int(10) UNSIGNED NULL DEFAULT NULL COMMENT '后台管理员最后一次登录时间', - `add_time` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '后台管理员添加时间', - `login_count` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '登录次数', - `level` tinyint(3) UNSIGNED NOT NULL DEFAULT 1 COMMENT '后台管理员级别', - `status` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '后台管理员状态 1有效0无效', - `is_del` tinyint(1) UNSIGNED NOT NULL DEFAULT 0, - PRIMARY KEY (`id`) USING BTREE, - INDEX `account`(`account`) USING BTREE, - INDEX `status`(`status`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '后台管理员表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of yx_system_admin --- ---------------------------- -INSERT INTO `yx_system_admin` VALUES (1, 'admin', '0192023a7bbd73250516f069df18b500', 'admin', '1', '127.0.0.1', 1569919508, 1569919508, 0, 0, 1, 0); - -- ---------------------------- -- Table structure for yx_system_attachment -- ---------------------------- @@ -5435,7 +5597,7 @@ CREATE TABLE `yx_system_attachment` ( `image_type` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '图片上传类型 1本地 2七牛云 3OSS 4COS ', `module_type` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '图片上传模块类型 1 后台上传 2 用户生成', PRIMARY KEY (`att_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1250 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '附件管理表' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 1252 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '附件管理表' ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of yx_system_attachment @@ -5444,6 +5606,8 @@ INSERT INTO `yx_system_attachment` VALUES (1217, '11_0_user_wap.jpg', 'E:\\yshop INSERT INTO `yx_system_attachment` VALUES (1224, '11_0_user_spread.jpg', 'E:\\yshop\\file\\qrcode\\11_0_user_spread.jpg', 'qrcode/11_0_user_spread.jpg', '57949', 'image/jpeg', 1, 1573720469, 1, 2); INSERT INTO `yx_system_attachment` VALUES (1225, '1_12_0_pink_share_wap.jpg', 'E:\\yshop\\file\\qrcode\\1_12_0_pink_share_wap.jpg', 'qrcode/1_12_0_pink_share_wap.jpg', '76105', 'image/jpeg', 1, 1574310271, 1, 2); INSERT INTO `yx_system_attachment` VALUES (1249, '1_12_0_pink_user_spread.jpg', 'E:\\yshop\\file\\qrcode\\1_12_0_pink_user_spread.jpg', 'qrcode/1_12_0_pink_user_spread.jpg', '66223', 'image/jpeg', 1, 1574315903, 1, 2); +INSERT INTO `yx_system_attachment` VALUES (1250, '12_0_user_wap.jpg', 'E:\\yshop\\file\\qrcode\\12_0_user_wap.jpg', 'qrcode/12_0_user_wap.jpg', '304900', 'image/jpeg', 1, 1575039046, 1, 2); +INSERT INTO `yx_system_attachment` VALUES (1251, '12_0_user_spread.jpg', 'E:\\yshop\\file\\qrcode\\12_0_user_spread.jpg', 'qrcode/12_0_user_spread.jpg', '56818', 'image/jpeg', 1, 1575039047, 1, 2); -- ---------------------------- -- Table structure for yx_system_attachment_category @@ -5499,55 +5663,6 @@ INSERT INTO `yx_system_config` VALUES (193, 'wxpay_mchKey', '55555', NULL, NULL) INSERT INTO `yx_system_config` VALUES (194, 'wxapp_appId', '22222', NULL, NULL); INSERT INTO `yx_system_config` VALUES (195, 'wxapp_secret', '22222222', NULL, NULL); --- ---------------------------- --- Table structure for yx_system_config_tab --- ---------------------------- -DROP TABLE IF EXISTS `yx_system_config_tab`; -CREATE TABLE `yx_system_config_tab` ( - `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '配置分类id', - `title` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '配置分类名称', - `eng_title` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '配置分类英文名称', - `status` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '配置分类状态', - `info` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '配置分类是否显示', - `icon` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '图标', - `type` int(2) NULL DEFAULT 0 COMMENT '配置类型', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 22 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '配置分类表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of yx_system_config_tab --- ---------------------------- -INSERT INTO `yx_system_config_tab` VALUES (1, '基础配置', 'basics', 1, 0, 'cog', 0); -INSERT INTO `yx_system_config_tab` VALUES (2, '公众号配置', 'wechat', 1, 0, 'weixin', 1); -INSERT INTO `yx_system_config_tab` VALUES (4, '公众号支付配置', 'pay', 1, 0, 'jpy', 2); -INSERT INTO `yx_system_config_tab` VALUES (5, '商城配置', 'store', 1, 0, 'shopping-cart', 0); -INSERT INTO `yx_system_config_tab` VALUES (7, '小程序配置', 'routine', 1, 0, 'weixin', 1); -INSERT INTO `yx_system_config_tab` VALUES (9, '分销配置', 'fenxiao', 1, 0, 'sitemap', 3); -INSERT INTO `yx_system_config_tab` VALUES (10, '物流配置', 'express', 1, 0, 'motorcycle', 0); -INSERT INTO `yx_system_config_tab` VALUES (11, '积分配置', 'point', 1, 0, 'powerpoint-o', 3); -INSERT INTO `yx_system_config_tab` VALUES (12, '优惠券配置', 'coupon', 1, 0, 'heartbeat', 3); -INSERT INTO `yx_system_config_tab` VALUES (14, '小程序支付配置', 'routine_pay', 1, 0, 'jpy', 2); -INSERT INTO `yx_system_config_tab` VALUES (16, '首页配置', 'routine_index_page', 1, 1, 'home', 0); -INSERT INTO `yx_system_config_tab` VALUES (17, '文件上传配置', 'upload_set', 1, 0, 'cloud-upload', 0); -INSERT INTO `yx_system_config_tab` VALUES (18, '短信配置', 'system_sms', 1, 0, 'send', 3); -INSERT INTO `yx_system_config_tab` VALUES (19, '缓存配置', 'cache_config', 1, 0, 'cube', 0); -INSERT INTO `yx_system_config_tab` VALUES (20, '短信提醒开关', 'short_letter_switch', 1, 0, 'rss', 0); -INSERT INTO `yx_system_config_tab` VALUES (21, '小票打印配置', 'printing_deploy', 1, 0, 'plug', 0); - --- ---------------------------- --- Table structure for yx_system_file --- ---------------------------- -DROP TABLE IF EXISTS `yx_system_file`; -CREATE TABLE `yx_system_file` ( - `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '文件对比ID', - `cthash` char(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '文件内容', - `filename` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '文价名称', - `atime` char(12) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '上次访问时间', - `mtime` char(12) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '上次修改时间', - `ctime` char(12) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '上次改变时间', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '文件对比表' ROW_FORMAT = Dynamic; - -- ---------------------------- -- Table structure for yx_system_group -- ---------------------------- @@ -5574,7 +5689,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 = 205 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '组合数据详情表' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 217 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '组合数据详情表' ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of yx_system_group_data @@ -5586,7 +5701,7 @@ INSERT INTO `yx_system_group_data` VALUES (183, 'routine_hot_search', '{\"id\":1 INSERT INTO `yx_system_group_data` VALUES (184, 'routine_hot_search', '{\"id\":184,\"title\":\"springboot\"}', 0, 0, 1); INSERT INTO `yx_system_group_data` VALUES (187, 'routine_home_roll_news', '{\"id\":187,\"url\":\"/news_list\",\"info\":\"springboot2+JPA+Mybatisplus商城系统\"}', 1572086163, NULL, 1); INSERT INTO `yx_system_group_data` VALUES (188, 'routine_hot_search', '{\"id\":188,\"title\":\"打印\"}', 1572086172, NULL, 1); -INSERT INTO `yx_system_group_data` VALUES (189, 'routine_my_menus', '{\"name\":\"联系客服\",\"id\":189,\"pic\":\"https://image.dayouqiantu.cn/5db428d0ce371.png\",\"url\":\"/not\"}', 1572087722, NULL, 0); +INSERT INTO `yx_system_group_data` VALUES (189, 'routine_my_menus', '{\"name\":\"会员中心\",\"id\":189,\"pic\":\"https://image.dayouqiantu.cn/5dec896eeb25a.png\",\"url\":\"/user/vip\"}', 1572087722, NULL, 1); INSERT INTO `yx_system_group_data` VALUES (190, 'routine_my_menus', '{\"name\":\"优惠券\",\"id\":190,\"pic\":\"https://image.dayouqiantu.cn/5db428984d64d.png\",\"url\":\"/user/user_coupon\"}', 0, 0, 1); INSERT INTO `yx_system_group_data` VALUES (191, 'routine_my_menus', '{\"name\":\"收藏商品\",\"id\":191,\"pic\":\"https://image.dayouqiantu.cn/5db428a8d3ab0.png\",\"url\":\"/collection\"}', 0, 0, 1); INSERT INTO `yx_system_group_data` VALUES (192, 'routine_my_menus', '{\"name\":\"地址管理\",\"id\":192,\"pic\":\"https://image.dayouqiantu.cn/5db428bd61b73.png\",\"url\":\"/user/add_manage\"}', 0, 0, 1); @@ -5598,460 +5713,17 @@ INSERT INTO `yx_system_group_data` VALUES (197, 'routine_home_menus', '{\"name\" INSERT INTO `yx_system_group_data` VALUES (198, 'routine_home_banner', '{\"name\":\"222\",\"id\":\"\",\"pic\":\"https://image.dayouqiantu.cn/5c9f0657dda90.jpg\",\"sort\":\"\",\"url\":\"/\",\"status\":\"\"}', 1573109952, NULL, 1); INSERT INTO `yx_system_group_data` VALUES (200, 'routine_home_menus', '{\"name\":\"领取优惠券\",\"id\":200,\"pic\":\"https://image.dayouqiantu.cn/5db428984d64d.png\",\"url\":\"/user/get_coupon\"}', 0, 0, 1); INSERT INTO `yx_system_group_data` VALUES (201, 'routine_home_roll_news', '{\"id\":\"\",\"url\":\"/\",\"info\":\"new hhhh\"}', 1574047234, NULL, 1); -INSERT INTO `yx_system_group_data` VALUES (202, 'routine_home_menus', '{\"name\":\"拼团活动\",\"id\":180,\"pic\":\"https://image.dayouqiantu.cn/5dd38ddeead7f.png\",\"url\":\"/activity/group\"}', 0, 0, 1); +INSERT INTO `yx_system_group_data` VALUES (202, 'routine_home_menus', '{\"name\":\"拼团活动\",\"id\":180,\"pic\":\"https://image.dayouqiantu.cn/5de1e120c08cd.png\",\"url\":\"/activity/group\"}', 0, 0, 1); INSERT INTO `yx_system_group_data` VALUES (203, 'routine_my_menus', '{\"name\":\"商户管理\",\"id\":\"\",\"pic\":\"https://image.dayouqiantu.cn/5ddb7a37d58d9.png\",\"sort\":\"\",\"url\":\"/customer/index\",\"status\":\"\"}', 0, 0, 1); INSERT INTO `yx_system_group_data` VALUES (204, 'routine_home_roll_news', '{\"id\":\"\",\"url\":\"/index\",\"info\":\"新添加\"}', 1574681945, NULL, 1); - --- ---------------------------- --- Table structure for yx_system_log --- ---------------------------- -DROP TABLE IF EXISTS `yx_system_log`; -CREATE TABLE `yx_system_log` ( - `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '管理员操作记录ID', - `admin_id` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '管理员id', - `admin_name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '管理员姓名', - `path` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '链接', - `page` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '行为', - `method` varchar(12) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '访问类型', - `ip` varchar(16) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '登录IP', - `type` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '类型', - `add_time` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '操作时间', - `merchant_id` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '商户id', - PRIMARY KEY (`id`) USING BTREE, - INDEX `admin_id`(`admin_id`) USING BTREE, - INDEX `add_time`(`add_time`) USING BTREE, - INDEX `type`(`type`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '管理员操作记录表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Table structure for yx_system_menus --- ---------------------------- -DROP TABLE IF EXISTS `yx_system_menus`; -CREATE TABLE `yx_system_menus` ( - `id` smallint(5) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '菜单ID', - `pid` smallint(5) UNSIGNED NOT NULL DEFAULT 0 COMMENT '父级id', - `icon` varchar(16) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '图标', - `menu_name` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '按钮名', - `module` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT '模块名', - `controller` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '控制器', - `action` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT '方法名', - `params` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '[]' COMMENT '参数', - `sort` tinyint(3) NOT NULL DEFAULT 1 COMMENT '排序', - `is_show` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '是否显示', - `access` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '子管理员是否可用', - PRIMARY KEY (`id`) USING BTREE, - INDEX `pid`(`pid`) USING BTREE, - INDEX `is_show`(`is_show`) USING BTREE, - INDEX `access`(`access`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 482 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '菜单表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of yx_system_menus --- ---------------------------- -INSERT INTO `yx_system_menus` VALUES (1, 289, '', '系统设置', 'admin', 'setting.systemConfig', 'index', '[]', 127, 1, 1); -INSERT INTO `yx_system_menus` VALUES (2, 153, '', '权限规则', 'admin', 'setting.systemMenus', 'index', '[]', 7, 1, 1); -INSERT INTO `yx_system_menus` VALUES (4, 153, '', '管理员列表', 'admin', 'setting.systemAdmin', 'index', '[]', 9, 1, 1); -INSERT INTO `yx_system_menus` VALUES (7, 467, '', '配置分类', 'admin', 'setting.systemConfigTab', 'index', '[]', 1, 1, 1); -INSERT INTO `yx_system_menus` VALUES (8, 153, '', '身份管理', 'admin', 'setting.systemRole', 'index', '[]', 10, 1, 1); -INSERT INTO `yx_system_menus` VALUES (9, 467, '', '组合数据', 'admin', 'setting.systemGroup', 'index', '[]', 1, 1, 1); -INSERT INTO `yx_system_menus` VALUES (11, 0, 'wechat', '公众号', 'admin', 'wechat', 'index', '[]', 91, 1, 1); -INSERT INTO `yx_system_menus` VALUES (12, 354, '', '微信关注回复', 'admin', 'wechat.reply', 'index', '{\"key\":\"subscribe\",\"title\":\"\\u7f16\\u8f91\\u65e0\\u914d\\u7f6e\\u9ed8\\u8ba4\\u56de\\u590d\"}', 86, 1, 1); -INSERT INTO `yx_system_menus` VALUES (17, 360, '', '微信菜单', 'admin', 'wechat.menus', 'index', '[]', 95, 1, 1); -INSERT INTO `yx_system_menus` VALUES (19, 11, '', '图文管理', 'admin', 'wechat.wechatNewsCategory', 'index', '[]', 60, 1, 1); -INSERT INTO `yx_system_menus` VALUES (21, 0, 'magic', '维护', 'admin', 'system', 'index', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (23, 0, 'laptop', '商品', 'admin', 'store', 'index', '[]', 110, 1, 1); -INSERT INTO `yx_system_menus` VALUES (24, 23, '', '商品管理', 'admin', 'store.storeProduct', 'index', '{\"type\":\"1\"}', 100, 1, 1); -INSERT INTO `yx_system_menus` VALUES (25, 23, '', '商品分类', 'admin', 'store.storeCategory', 'index', '[]', 1, 1, 1); -INSERT INTO `yx_system_menus` VALUES (26, 285, '', '订单管理', 'admin', 'order.storeOrder', 'index', '[]', 1, 1, 1); -INSERT INTO `yx_system_menus` VALUES (30, 354, '', '关键字回复', 'admin', 'wechat.reply', 'keyword', '[]', 85, 1, 1); -INSERT INTO `yx_system_menus` VALUES (31, 354, '', '无效关键词回复', 'admin', 'wechat.reply', 'index', '{\"key\":\"default\",\"title\":\"\\u7f16\\u8f91\\u65e0\\u6548\\u5173\\u952e\\u5b57\\u9ed8\\u8ba4\\u56de\\u590d\"}', 84, 1, 1); -INSERT INTO `yx_system_menus` VALUES (33, 284, '', '附加权限', 'admin', 'article.articleCategory', '', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (34, 33, '', '添加文章分类', 'admin', 'article.articleCategory', 'create', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (35, 33, '', '编辑文章分类', 'admin', 'article.articleCategory', 'edit', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (36, 33, '', '删除文章分类', 'admin', 'article.articleCategory', 'delete', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (37, 31, '', '附加权限', 'admin', 'wechat.reply', '', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (38, 283, '', '附加权限', 'admin', 'article.article', '', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (39, 38, '', '添加文章', 'admin', 'article. article', 'create', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (40, 38, '', '编辑文章', 'admin', 'article. article', 'add_new', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (41, 38, '', '删除文章', 'admin', 'article. article', 'delete', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (42, 19, '', '附加权限', 'admin', 'wechat.wechatNewsCategory', '', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (43, 42, '', '添加图文消息', 'admin', 'wechat.wechatNewsCategory', 'create', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (44, 42, '', '编辑图文消息', 'admin', 'wechat.wechatNewsCategory', 'edit', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (45, 42, '', '删除图文消息', 'admin', 'wechat.wechatNewsCategory', 'delete', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (46, 7, '', '配置分类附加权限', 'admin', 'setting.systemConfigTab', '', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (47, 46, '', '添加配置分类', 'admin', 'setting.systemConfigTab', 'create', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (48, 117, '', '添加配置', 'admin', 'setting.systemConfig', 'create', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (49, 46, '', '编辑配置分类', 'admin', 'setting.systemConfigTab', 'edit', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (50, 46, '', '删除配置分类', 'admin', 'setting.systemConfigTab', 'delete', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (51, 46, '', '查看子字段', 'admin', 'system.systemConfigTab', 'sonConfigTab', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (52, 9, '', '组合数据附加权限', 'admin', 'setting.systemGroup', '', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (53, 468, '', '添加数据', 'admin', 'setting.systemGroupData', 'create', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (54, 468, '', '编辑数据', 'admin', 'setting.systemGroupData', 'edit', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (55, 468, '', '删除数据', 'admin', 'setting.systemGroupData', 'delete', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (56, 468, '', '数据列表', 'admin', 'setting.systemGroupData', 'index', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (57, 52, '', '添加数据组', 'admin', 'setting.systemGroup', 'create', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (58, 52, '', '删除数据组', 'admin', 'setting.systemGroup', 'delete', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (59, 4, '', '管理员列表附加权限', 'admin', 'setting.systemAdmin', '', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (60, 59, '', '添加管理员', 'admin', 'setting.systemAdmin', 'create', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (61, 59, '', '编辑管理员', 'admin', 'setting.systemAdmin', 'edit', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (62, 59, '', '删除管理员', 'admin', 'setting.systemAdmin', 'delete', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (63, 8, '', '身份管理附加权限', 'admin', 'setting.systemRole', '', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (64, 63, '', '添加身份', 'admin', 'setting.systemRole', 'create', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (65, 63, '', '修改身份', 'admin', 'setting.systemRole', 'edit', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (66, 63, '', '删除身份', 'admin', 'setting.systemRole', 'delete', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (67, 8, '', '身份管理展示页', 'admin', 'setting.systemRole', 'index', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (68, 4, '', '管理员列表展示页', 'admin', 'setting.systemAdmin', 'index', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (69, 7, '', '配置分类展示页', 'admin', 'setting.systemConfigTab', 'index', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (70, 9, '', '组合数据展示页', 'admin', 'setting.systemGroup', 'index', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (71, 284, '', '文章分类管理展示页', 'admin', 'article.articleCategory', 'index', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (72, 283, '', '文章管理展示页', 'admin', 'article.article', 'index', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (73, 19, '', '图文消息展示页', 'admin', 'wechat.wechatNewsCategory', 'index', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (74, 2, '', '菜单管理附加权限', 'admin', 'setting.systemMenus', '', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (75, 74, '', '添加菜单', 'admin', 'setting.systemMenus', 'create', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (76, 74, '', '编辑菜单', 'admin', 'setting.systemMenus', 'edit', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (77, 74, '', '删除菜单', 'admin', 'setting.systemMenus', 'delete', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (78, 2, '', '菜单管理展示页', 'admin', 'setting.systemMenus', 'index', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (80, 0, 'leanpub', '内容', 'admin', 'article', 'index', '[]', 90, 1, 1); -INSERT INTO `yx_system_menus` VALUES (82, 11, '', '微信用户管理', 'admin', 'user', 'list', '[]', 5, 1, 1); -INSERT INTO `yx_system_menus` VALUES (84, 82, '', '用户标签', 'admin', 'wechat.wechatUser', 'tag', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (89, 30, '', '关键字回复附加权限', 'admin', 'wechat.reply', '', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (90, 89, '', '添加关键字', 'admin', 'wechat.reply', 'add_keyword', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (91, 89, '', '修改关键字', 'admin', 'wechat.reply', 'info_keyword', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (92, 89, '', '删除关键字', 'admin', 'wechat.reply', 'delete', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (93, 30, '', '关键字回复展示页', 'admin', 'wechat.reply', 'keyword', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (94, 31, '', '无效关键词回复展示页', 'admin', 'wechat.reply', 'index', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (95, 31, '', '无效关键词回复附加权限', 'admin', 'wechat.reply', '', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (96, 95, '', '无效关键词回复提交按钮', 'admin', 'wechat.reply', 'save', '{\"key\":\"default\",\"title\":\"编辑无效关键字默认回复\"}', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (97, 12, '', '微信关注回复展示页', 'admin', 'wechat.reply', 'index', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (98, 12, '', '微信关注回复附加权限', 'admin', 'wechat.reply', '', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (99, 98, '', '微信关注回复提交按钮', 'admin', 'wechat.reply', 'save', '{\"key\":\"subscribe\",\"title\":\"编辑无配置默认回复\"}', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (100, 74, '', '添加提交菜单', 'admin', 'setting.systemMenus', 'save', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (101, 74, '', '编辑提交菜单', 'admin', 'setting.systemMenus', 'update', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (102, 59, '', '提交添加管理员', 'admin', 'setting.systemAdmin', 'save', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (103, 59, '', '提交修改管理员', 'admin', 'setting.systemAdmin', 'update', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (104, 63, '', '提交添加身份', 'admin', 'setting.systemRole', 'save', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (105, 63, '', '提交修改身份', 'admin', 'setting.systemRole', 'update', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (106, 46, '', '提交添加配置分类', 'admin', 'setting.systemConfigTab', 'save', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (107, 46, '', '提交修改配置分类', 'admin', 'setting.systemConfigTab', 'update', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (108, 117, '', '提交添加配置列表', 'admin', 'setting.systemConfig', 'save', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (109, 52, '', '提交添加数据组', 'admin', 'setting.systemGroup', 'save', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (110, 52, '', '提交修改数据组', 'admin', 'setting.systemGroup', 'update', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (111, 468, '', '提交添加数据', 'admin', 'setting.systemGroupData', 'save', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (112, 468, '', '提交修改数据', 'admin', 'setting.systemGroupData', 'update', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (113, 33, '', '提交添加文章分类', 'admin', 'article.articleCategory', 'save', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (114, 33, '', '提交添加文章分类', 'admin', 'article.articleCategory', 'update', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (115, 42, '', '提交添加图文消息', 'admin', 'wechat.wechatNewsCategory', 'save', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (116, 42, '', '提交编辑图文消息', 'admin', 'wechat.wechatNewsCategory', 'update', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (117, 1, '', '配置列表附加权限', 'admin', 'setting.systemConfig', '', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (118, 1, '', '配置列表展示页', 'admin', 'setting.systemConfig', 'index', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (119, 117, '', '提交保存配置列表', 'admin', 'setting.systemConfig', 'save_basics', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (123, 89, '', '提交添加关键字', 'admin', 'wechat.reply', 'save_keyword', '{\"dis\":\"1\"}', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (124, 89, '', '提交修改关键字', 'admin', 'wechat.reply', 'save_keyword', '{\"dis\":\"2\"}', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (126, 17, '', '微信菜单展示页', 'admin', 'wechat.menus', 'index', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (127, 17, '', '微信菜单附加权限', 'admin', 'wechat.menus', '', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (128, 127, '', '提交微信菜单按钮', 'admin', 'wechat.menus', 'save', '{\"dis\":\"1\"}', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (129, 82, '', '用户行为纪录', 'admin', 'wechat.wechatMessage', 'index', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (130, 469, '', '系统日志', 'admin', 'system.systemLog', 'index', '[]', 5, 1, 1); -INSERT INTO `yx_system_menus` VALUES (131, 130, '', '管理员操作记录展示页', 'admin', 'system.systemLog', 'index', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (132, 129, '', '微信用户行为纪录展示页', 'admin', 'wechat.wechatMessage', 'index', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (133, 82, '', '微信用户', 'admin', 'wechat.wechatUser', 'index', '[]', 1, 1, 1); -INSERT INTO `yx_system_menus` VALUES (134, 133, '', '微信用户展示页', 'admin', 'wechat.wechatUser', 'index', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (137, 135, '', '添加通知模板', 'admin', 'system.systemNotice', 'create', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (138, 135, '', '编辑通知模板', 'admin', 'system.systemNotice', 'edit', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (139, 135, '', '删除辑通知模板', 'admin', 'system.systemNotice', 'delete', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (140, 135, '', '提交编辑辑通知模板', 'admin', 'system.systemNotice', 'update', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (141, 135, '', '提交添加辑通知模板', 'admin', 'system.systemNotice', 'save', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (142, 25, '', '产品分类展示页', 'admin', 'store.storeCategory', 'index', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (143, 25, '', '产品分类附加权限', 'admin', 'store.storeCategory', '', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (144, 117, '', '获取配置列表上传文件的名称', 'admin', 'setting.systemConfig', 'getimagename', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (145, 117, '', '配置列表上传文件', 'admin', 'setting.systemConfig', 'view_upload', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (146, 24, '', '产品管理展示页', 'admin', 'store.storeProduct', 'index', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (147, 24, '', '产品管理附加权限', 'admin', 'store.storeProduct', '', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (148, 286, '', '优惠券', '', '', '', '[]', 10, 1, 1); -INSERT INTO `yx_system_menus` VALUES (149, 148, '', '优惠券制作', 'admin', 'ump.storeCoupon', 'index', '[]', 5, 1, 1); -INSERT INTO `yx_system_menus` VALUES (150, 148, '', '会员领取记录', 'admin', 'ump.storeCouponUser', 'index', '[]', 1, 1, 1); -INSERT INTO `yx_system_menus` VALUES (151, 0, 'user', '会员', 'admin', 'user', 'index', '[]', 107, 1, 1); -INSERT INTO `yx_system_menus` VALUES (153, 289, '', '管理权限', 'admin', 'setting.systemAdmin', '', '[]', 50, 1, 1); -INSERT INTO `yx_system_menus` VALUES (155, 154, '', '商户产品展示页', 'admin', 'store.storeMerchant', 'index', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (156, 154, '', '商户产品附加权限', 'admin', 'store.storeMerchant', '', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (158, 157, '', '商户文章管理展示页', 'admin', 'wechat.wechatNews', 'merchantIndex', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (159, 157, '', '商户文章管理附加权限', 'admin', 'wechat.wechatNews', '', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (170, 290, '', '评论管理', 'admin', 'store.store_product_reply', 'index', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (173, 469, '', '文件校验', 'admin', 'system.systemFile', 'index', '[]', 1, 1, 1); -INSERT INTO `yx_system_menus` VALUES (174, 360, '', '微信模板消息', 'admin', 'wechat.wechatTemplate', 'index', '[]', 1, 1, 1); -INSERT INTO `yx_system_menus` VALUES (175, 289, '', '客服管理', 'admin', 'wechat.storeService', 'index', '[]', 70, 1, 1); -INSERT INTO `yx_system_menus` VALUES (177, 151, '', '会员管理', 'admin', 'user.user', 'index', '[]', 10, 1, 1); -INSERT INTO `yx_system_menus` VALUES (179, 307, '', '充值记录', 'admin', 'finance.userRecharge', 'index', '[]', 1, 1, 1); -INSERT INTO `yx_system_menus` VALUES (190, 26, '', '订单管理展示页', 'admin', 'order.storeOrder', 'index', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (191, 26, '', '订单管理附加权限', 'admin', 'order.storeOrder', '', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (192, 191, '', '订单管理去发货', 'admin', 'order.storeOrder', 'deliver_goods', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (193, 191, '', '订单管理备注', 'admin', 'order.storeOrder', 'remark', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (194, 191, '', '订单管理去送货', 'admin', 'order.storeOrder', 'delivery', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (195, 191, '', '订单管理已收货', 'admin', 'order.storeOrder', 'take_delivery', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (196, 191, '', '订单管理退款', 'admin', 'order.storeOrder', 'refund_y', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (197, 191, '', '订单管理修改订单', 'admin', 'order.storeOrder', 'edit', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (198, 191, '', '订单管理修改订单提交', 'admin', 'order.storeOrder', 'update', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (199, 191, '', '订单管理退积分', 'admin', 'order.storeOrder', 'integral_back', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (200, 191, '', '订单管理退积分提交', 'admin', 'order.storeOrder', 'updateIntegralBack', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (201, 191, '', '订单管理立即支付', 'admin', 'order.storeOrder', 'offline', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (202, 191, '', '订单管理退款原因', 'admin', 'order.storeOrder', 'refund_n', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (203, 191, '', '订单管理退款原因提交', 'admin', 'order.storeOrder', 'updateRefundN', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (204, 191, '', '订单管理修改配送信息', 'admin', 'order.storeOrder', 'distribution', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (205, 191, '', '订单管理修改配送信息提交', 'admin', 'order.storeOrder', 'updateDistribution', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (206, 191, '', '订单管理退款提交', 'admin', 'order.storeOrder', 'updateRefundY', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (207, 191, '', '订单管理去发货提交', 'admin', 'order.storeOrder', 'updateDeliveryGoods', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (208, 191, '', '订单管理去送货提交', 'admin', 'order.storeOrder', 'updateDelivery', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (209, 175, '', '客服管理展示页', 'admin', 'store.storeService', 'index', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (210, 175, '', '客服管理附加权限', 'admin', 'store.storeService', '', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (211, 210, '', '客服管理添加', 'admin', 'store.storeService', 'create', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (212, 210, '', '客服管理添加提交', 'admin', 'store.storeService', 'save', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (213, 210, '', '客服管理编辑', 'admin', 'store.storeService', 'edit', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (214, 210, '', '客服管理编辑提交', 'admin', 'store.storeService', 'update', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (215, 210, '', '客服管理删除', 'admin', 'store.storeService', 'delete', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (216, 179, '', '用户充值记录展示页', 'admin', 'user.userRecharge', 'index', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (217, 179, '', '用户充值记录附加权限', 'admin', 'user.userRecharge', '', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (218, 217, '', '用户充值记录退款', 'admin', 'user.userRecharge', 'edit', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (219, 217, '', '用户充值记录退款提交', 'admin', 'user.userRecharge', 'updaterefundy', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (220, 180, '', '预售卡管理批量修改预售卡金额', 'admin', 'presell.presellCard', 'batch_price', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (221, 180, '', '预售卡管理批量修改预售卡金额提交', 'admin', 'presell.presellCard', 'savebatch', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (222, 210, '', '客服管理聊天记录查询', 'admin', 'store.storeService', 'chat_user', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (223, 210, '', '客服管理聊天记录查询详情', 'admin', 'store.storeService', 'chat_list', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (224, 170, '', '评论管理展示页', 'admin', 'store.storeProductReply', 'index', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (225, 170, '', '评论管理附加权限', 'admin', 'store.storeProductReply', '', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (226, 225, '', '评论管理回复评论', 'admin', 'store.storeProductReply', 'set_reply', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (227, 225, '', '评论管理修改回复评论', 'admin', 'store.storeProductReply', 'edit_reply', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (228, 225, '', '评论管理删除评论', 'admin', 'store.storeProductReply', 'delete', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (229, 149, '', '优惠券管理展示页', 'admin', 'store.storeCoupon', 'index', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (230, 149, '', '优惠券管理附加权限', 'admin', 'store.storeCoupon', '', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (231, 230, '', '优惠券管理添加', 'admin', 'store.storeCoupon', 'create', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (232, 230, '', '优惠券管理添加提交', 'admin', 'store.storeCoupon', 'save', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (233, 230, '', '优惠券管理删除', 'admin', 'store.storeCoupon', 'delete', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (234, 230, '', '优惠券管理立即失效', 'admin', 'store.storeCoupon', 'status', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (235, 148, '', '已发布管理', 'admin', 'ump.storeCouponIssue', 'index', '[]', 3, 1, 1); -INSERT INTO `yx_system_menus` VALUES (236, 82, '', '用户分组', 'admin', 'wechat.wechatUser', 'group', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (237, 21, '', '刷新缓存', 'admin', 'system.clear', 'index', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (238, 272, '', '拼团产品', 'admin', 'ump.storeCombination', 'index', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (239, 306, '', '提现申请', 'admin', 'finance.user_extract', 'index', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (241, 273, '', '秒杀产品', 'admin', 'ump.storeSeckill', 'index', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (244, 294, '', '财务报表', 'admin', 'record.storeStatistics', 'index', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (246, 295, '', '用户统计', 'admin', 'user.user', 'user_analysis', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (247, 153, '', '个人资料', 'admin', 'setting.systemAdmin', 'admininfo', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (248, 247, '', '个人资料附加权限', 'admin', 'setting.systemAdmin', '', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (249, 248, '', '个人资料提交保存', 'admin', 'system.systemAdmin', 'setAdminInfo', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (250, 247, '', '个人资料展示页', 'admin', 'setting.systemAdmin', 'admininfo', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (252, 21, '', '在线更新', 'admin', 'system.systemUpgradeclient', 'index', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (254, 271, '', '砍价产品', 'admin', 'ump.storeBargain', 'index', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (255, 289, '', '后台通知', 'admin', 'setting.systemNotice', 'index', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (261, 147, '', '编辑产品', 'admin', 'store.storeproduct', 'edit', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (262, 147, '', '添加产品', 'admin', 'store.storeproduct', 'create', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (263, 147, '', '编辑产品详情', 'admin', 'store.storeproduct', 'edit_content', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (264, 147, '', '开启秒杀', 'admin', 'store.storeproduct', 'seckill', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (265, 147, '', '开启秒杀', 'admin', 'store.store_product', 'bargain', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (266, 147, '', '产品编辑属性', 'admin', 'store.storeproduct', 'attr', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (269, 0, 'cubes', '小程序', 'admin', 'routine', 'index', '[]', 92, 1, 1); -INSERT INTO `yx_system_menus` VALUES (270, 289, '', '支付配置', 'admin', 'setting.systemConfig', 'index', '{\"type\":\"2\",\"tab_id\":\"4\"}', 120, 1, 1); -INSERT INTO `yx_system_menus` VALUES (271, 286, '', '砍价管理', 'admin', '', '', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (272, 286, '', '拼团管理', 'admin', '', '', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (273, 286, '', '秒杀管理', 'admin', '', '', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (276, 469, '', '附件管理', 'admin', 'widget.images', 'index', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (278, 469, '', '清除数据', 'admin', 'system.systemCleardata', 'index', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (283, 80, '', '文章管理', 'admin', 'article.article', 'index', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (284, 80, '', '文章分类', 'admin', 'article.article_category', 'index', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (285, 0, 'building-o', '订单', 'admin', 'order', 'index', '[]', 109, 1, 1); -INSERT INTO `yx_system_menus` VALUES (286, 0, 'paper-plane', '营销', 'admin', 'ump', 'index', '[]', 105, 1, 1); -INSERT INTO `yx_system_menus` VALUES (287, 0, 'money', '财务', 'admin', 'finance', 'index', '[]', 103, 1, 1); -INSERT INTO `yx_system_menus` VALUES (288, 0, 'line-chart', '数据', 'admin', 'record', 'index', '[]', 100, 1, 1); -INSERT INTO `yx_system_menus` VALUES (289, 0, 'gear', '设置', 'admin', 'setting', 'index', '[]', 90, 1, 1); -INSERT INTO `yx_system_menus` VALUES (290, 285, '', '售后服务', 'admin', '', '', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (293, 288, '', '交易数据', 'admin', '', '', '[]', 100, 1, 1); -INSERT INTO `yx_system_menus` VALUES (294, 288, '', '财务数据', 'admin', '', '', '[]', 80, 1, 1); -INSERT INTO `yx_system_menus` VALUES (295, 288, '', '会员数据', 'admin', '', '', '[]', 70, 1, 1); -INSERT INTO `yx_system_menus` VALUES (296, 288, '', '营销数据', 'admin', '', '', '[]', 90, 1, 1); -INSERT INTO `yx_system_menus` VALUES (297, 288, '', '排行榜', 'admin', '', '', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (300, 294, '', '提现统计', 'admin', 'record.record', 'chart_cash', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (301, 294, '', '充值统计', 'admin', 'record.record', 'chart_recharge', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (302, 294, '', '返佣统计', 'admin', 'record.record', 'chart_rebate', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (303, 295, '', '会员增长', 'admin', 'record.record', 'user_chart', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (304, 295, '', '会员业务', 'admin', 'record.record', 'user_business_chart', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (305, 295, '', '会员属性', 'admin', 'record.record', 'user_attr', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (306, 287, '', '财务操作', 'admin', '', '', '[]', 100, 1, 1); -INSERT INTO `yx_system_menus` VALUES (307, 287, '', '财务记录', 'admin', '', '', '[]', 50, 1, 1); -INSERT INTO `yx_system_menus` VALUES (308, 287, '', '佣金记录', 'admin', '', '', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (312, 307, '', '资金监控', 'admin', 'finance.finance', 'bill', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (313, 308, '', '佣金记录', 'admin', 'finance.finance', 'commission_list', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (314, 296, '', '积分统计', 'admin', 'record.record', 'chart_score', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (315, 296, '', '优惠券统计', 'admin', 'record.record', 'chart_coupon', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (316, 296, '', '拼团统计', 'admin', 'record.record', 'chart_combination', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (317, 296, '', '秒杀统计', 'admin', 'record.record', 'chart_seckill', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (318, 296, '', '砍价统计', 'admin', 'record.record', 'chart_bargain', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (319, 297, '', '产品销售排行', 'admin', 'record.record', 'ranking_saleslists', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (320, 297, '', '返佣排行', 'admin', 'record.record', 'ranking_commission', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (321, 297, '', '积分排行', 'admin', 'record.record', 'ranking_point', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (329, 285, '', '营销订单', 'admin', 'user', 'user', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (333, 272, '', '拼团列表', 'admin', 'ump.storeCombination', 'combina_list', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (334, 329, '', '秒杀订单', 'admin', 'user', '', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (335, 329, '', '积分兑换', 'admin', 'user', '', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (337, 0, 'users', '分销', 'admin', 'agent', 'index', '[]', 106, 1, 1); -INSERT INTO `yx_system_menus` VALUES (340, 293, '', '订单统计', 'admin', 'record.record', 'chart_order', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (341, 293, '', '产品统计', 'admin', 'record.record', 'chart_product', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (349, 286, '', '积分', 'admin', 'userPoint', 'index', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (350, 349, '', '积分配置', 'admin', 'setting.systemConfig', 'index', '{\"type\":\"3\",\"tab_id\":\"11\"}', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (351, 349, '', '积分日志', 'admin', 'ump.userPoint', 'index', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (352, 148, '', '优惠券配置', 'admin', 'setting.systemConfig', 'index', '{\"type\":\"3\",\"tab_id\":\"12\"}', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (353, 337, '', '分销配置', 'admin', 'setting.systemConfig', 'index', '{\"type\":\"3\",\"tab_id\":\"9\"}', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (354, 11, '', '自动回复', '', '', '', '[]', 80, 1, 1); -INSERT INTO `yx_system_menus` VALUES (360, 11, '', '公众号配置', '', '', '', '[]', 100, 1, 1); -INSERT INTO `yx_system_menus` VALUES (361, 289, '', '应用配置', 'admin', 'setting.systemConfig', 'index', '{\"type\":\"1\",\"tab_id\":\"2\"}', 127, 1, 1); -INSERT INTO `yx_system_menus` VALUES (362, 276, '', '附加权限', 'admin', 'widget.images', '', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (363, 362, '', '上传图片', 'admin', 'widget.images', 'upload', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (364, 362, '', '删除图片', 'admin', 'widget.images', 'delete', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (365, 362, '', '附件管理', 'admin', 'widget.images', 'index', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (366, 254, '', '其它权限管理', '', '', '', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (367, 366, '', '编辑砍价', 'admin', 'ump.storeBargain', 'edit', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (368, 366, '', '砍价产品更新', 'admin', 'ump.storeBargain', 'update', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (369, 143, '', '添加产品分类', 'admin', 'store.storeCategory', 'create', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (370, 143, '', '编辑产品分类', 'admin', 'store.storeCategory', 'edit', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (371, 337, '', '分销员管理', 'admin', 'agent.agentManage', 'index', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (372, 462, '', '首页幻灯片', 'admin', 'setting.system_group_data', 'index', '{\"gid\":\"48\"}', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (373, 462, '', '首页导航按钮', 'admin', 'setting.system_group_data', 'index', '{\"gid\":\"47\"}', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (374, 295, '', '分销会员业务', 'admin', 'record.record', 'user_distribution_chart', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (376, 269, '', '小程序模板消息', 'admin', 'routine.routineTemplate', 'index', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (377, 469, '', '数据备份', 'admin', 'system.systemDatabackup', 'index', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (378, 289, '', '物流公司', 'admin', 'system.express', 'index', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (379, 469, '', '文件管理', 'admin', 'system.systemFile', 'opendir', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (380, 379, '', '权限规则', 'admin', 'system.systemFile', '', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (381, 380, '', '打开文件', 'admin', 'system.systemFile', 'openfile', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (382, 380, '', '编辑文件', 'admin', 'system.systemFile', 'savefile', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (386, 362, '', '移动图片分类展示', 'admin', 'widget.images', 'moveimg', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (387, 362, '', '编辑分类', 'admin', 'widget.images', 'updatecate', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (388, 362, '', '添加分类', 'admin', 'widget.images', 'savecate', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (389, 362, '', '移动图片分类', 'admin', 'widget.images', 'moveimgcecate', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (390, 362, '', '编辑分类展示', 'admin', 'widget.images', 'editcate', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (392, 362, '', '删除分类', 'admin', 'widget.images', 'deletecate', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (393, 362, '', '添加分类展示', 'admin', 'widget.images', 'addcate', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (394, 191, '', '订单获取列表', 'admin', 'order.storeOrder', 'order_list', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (395, 82, '', '微信用户附加权限', 'admin', 'wechat.wechatUser', '', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (396, 395, '', '推送消息', 'admin', 'wechat.wechat_news_category', 'push', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (397, 395, '', '推送优惠券', 'admin', 'ump.storeCouponUser', 'grant', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (398, 177, '', '会员列表页', 'admin', 'user.user', 'index', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (399, 177, '', '会员附加权限', '', 'user.user', '', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (400, 399, '', '修改用户状态', '', 'user.user', 'set_status', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (401, 399, '', '编辑用户', 'admin', 'user.user', 'edit', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (402, 399, '', '更新用户', 'admin', 'user.user', 'update', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (403, 399, '', '查看用户', 'admin', 'user.user', 'see', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (405, 399, '', '发优惠券', 'admin', 'ump.storeCouponUser', 'grant', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (406, 399, '', '推送图文', 'admin', 'wechat.wechatNewsCategory', 'push', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (407, 399, '', '发站内信', 'admin', 'user.userNotice', 'notice', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (415, 371, '', '分销管理附加权限', 'admin', 'agent.agentManage', '', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (416, 174, '', '微信模版消息附加权限', 'admin', 'wechat.wechatTemplate', '', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (417, 416, '', '添加模版消息', 'admin', 'wechat.wechatTemplate', 'save', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (418, 416, '', '添加模版消息展示', 'admin', 'wechat.wechatTemplate', 'create', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (419, 416, '', '编辑模版消息展示', 'admin', 'wechat.wechatTemplate', 'edit', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (420, 416, '', '更新模版消息展示', 'admin', 'wechat.wechatTemplate', 'update', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (421, 416, '', '删除模版消息展示', 'admin', 'wechat.wechatTemplate', 'delete', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (422, 376, '', '小程序模版消息附加权限', 'admin', 'routine.routineTemplate', '', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (423, 422, '', '添加模版消息展示', 'admin', 'routine.routineTemplate', 'create', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (424, 422, '', '添加模版消息', 'admin', 'routine.routineTemplate', 'save', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (425, 422, '', '编辑模版消息展示', 'admin', 'routine.routineTemplate', 'edit', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (426, 422, '', '编辑模版消息', 'admin', 'routine.routineTemplate', 'update', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (427, 422, '', '删除模版消息', 'admin', 'routine.routineTemplate', 'delete', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (439, 377, '', '数据库备份附加权限', 'admin', 'system.systemDatabackup', '', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (440, 439, '', '查看表结构', 'admin', 'system.systemDatabackup', 'seetable', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (441, 439, '', '优化表', 'admin', 'system.systemDatabackup', 'optimize', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (442, 439, '', '修复表', 'admin', 'system.systemDatabackup', 'repair', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (443, 439, '', '备份表', 'admin', 'system.systemDatabackup', 'backup', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (444, 439, '', '删除备份', 'admin', 'system.systemDatabackup', 'delFile', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (445, 439, '', '恢复备份', 'admin', 'system.systemDatabackup', 'import', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (446, 439, '', '下载备份', 'admin', 'system.systemDatabackup', 'downloadFile', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (447, 377, '', '数据备份展示页', 'admin', 'system.systemDatabackup', 'index', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (448, 379, '', '文件管理展示页', 'admin', 'system.systemFile', 'index', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (450, 371, '', '分销管理列表页', 'admin', 'agent.agentManage', 'index', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (451, 376, '', '小程序模版消息列表页', 'admin', 'routine.routineTemplate', 'index', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (452, 174, '', '微信模版消息列表页', 'admin', 'wechat.wechatTemplate', 'index', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (453, 276, '', '附件管理展示页', 'admin', 'widget.images', 'index', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (456, 151, '', '会员等级', 'admin', 'user.user_level', 'index', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (458, 462, '', '签到天数配置', 'admin', 'setting.system_group_data', 'index', '{\"gid\":\"55\"}', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (459, 462, '', '订单详情动态图', 'admin', 'setting.system_group_data', 'index', '{\"gid\":\"53\"}', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (460, 462, '', '个人中心菜单', 'admin', 'setting.system_group_data', 'index', '{\"gid\":\"54\"}', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (461, 462, '', '小程序首页滚动新闻', 'admin', 'setting.system_group_data', 'index', '{\"gid\":\"50\"}', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (462, 289, '', '数据配置', 'admin', '', '', '[]', 100, 1, 1); -INSERT INTO `yx_system_menus` VALUES (463, 462, '', '热门榜单推荐banner', 'admin', 'setting.system_group_data', 'index', '{\"gid\":\"57\"}', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (464, 462, '', '首发新品推荐banner', 'admin', 'setting.system_group_data', 'index', '{\"gid\":\"58\"}', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (465, 462, '', '促销单品推荐banner', 'admin', 'setting.system_group_data', 'index', '{\"gid\":\"59\"}', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (466, 462, '', '个人中心分销海报', 'admin', 'setting.system_group_data', 'index', '{\"gid\":\"60\"}', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (467, 21, '', '开发配置', 'admin', 'system', '', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (468, 1, '', '配置组合数据附加权限', 'admin', 'setting.systemGroupData', 'index', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (469, 21, '', '安全维护', 'admin', 'system', '', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (470, 1, '', '配置组合数据展示页', 'admin', 'setting.systemGroup', 'index', '[]', 0, 0, 1); -INSERT INTO `yx_system_menus` VALUES (471, 462, '', '小程序精品推荐', 'admin', 'setting.system_group_data', 'index', '{\"gid\":\"52\"}', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (472, 462, '', '首页活动区域图片', 'admin', 'setting.system_group_data', 'index', '{\"gid\":\"51\"}', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (473, 273, '', '秒杀配置', 'admin', 'setting.system_group_data', 'index', '{\"gid\":\"49\"}', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (474, 289, '', '短信设置', 'admin', 'sms', 'index', '[]', 1, 1, 1); -INSERT INTO `yx_system_menus` VALUES (475, 474, '', '短信模板', 'admin', 'sms.smsTemplateApply', 'index', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (477, 474, '', '短信购买', 'admin', 'sms.smsPay', 'index', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (478, 474, '', '短信配置', 'admin', 'sms.smsConfig', 'index', '{\"type\":\"4\",\"tab_id\":\"18\"}', 1, 1, 1); -INSERT INTO `yx_system_menus` VALUES (479, 474, '', '公共短信模板', 'admin', 'sms.smsPublicTemp', 'index', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (480, 289, '', '门店设置', 'admin', 'system.system_store', 'index', '[]', 0, 1, 1); -INSERT INTO `yx_system_menus` VALUES (481, 462, '', '首页配置', 'admin', 'setting.system_group_data', 'index', '{\"gid\":\"61\"}', 0, 1, 1); - --- ---------------------------- --- Table structure for yx_system_notice --- ---------------------------- -DROP TABLE IF EXISTS `yx_system_notice`; -CREATE TABLE `yx_system_notice` ( - `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '通知模板id', - `title` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '通知标题', - `type` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '通知类型', - `icon` varchar(16) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '图标', - `url` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '链接', - `table_title` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '通知数据', - `template` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '通知模板', - `push_admin` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '通知管理员id', - `status` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '状态', - PRIMARY KEY (`id`) USING BTREE, - UNIQUE INDEX `type`(`type`) USING BTREE, - INDEX `status`(`status`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '通知模板表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Table structure for yx_system_notice_admin --- ---------------------------- -DROP TABLE IF EXISTS `yx_system_notice_admin`; -CREATE TABLE `yx_system_notice_admin` ( - `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '通知记录ID', - `notice_type` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '通知类型', - `admin_id` smallint(5) UNSIGNED NOT NULL COMMENT '通知的管理员', - `link_id` int(10) UNSIGNED NOT NULL COMMENT '关联ID', - `table_data` text CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '通知的数据', - `is_click` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 COMMENT '点击次数', - `is_visit` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 COMMENT '访问次数', - `visit_time` int(11) NOT NULL COMMENT '访问时间', - `add_time` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '通知时间', - PRIMARY KEY (`id`) USING BTREE, - INDEX `admin_id`(`admin_id`, `notice_type`) USING BTREE, - INDEX `add_time`(`add_time`) USING BTREE, - INDEX `is_visit`(`is_visit`) USING BTREE, - INDEX `is_click`(`is_click`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '通知记录表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Table structure for yx_system_role --- ---------------------------- -DROP TABLE IF EXISTS `yx_system_role`; -CREATE TABLE `yx_system_role` ( - `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '身份管理id', - `role_name` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '身份管理名称', - `rules` text CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '身份管理权限(menus_id)', - `level` tinyint(3) UNSIGNED NOT NULL DEFAULT 0, - `status` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '状态', - PRIMARY KEY (`id`) USING BTREE, - INDEX `status`(`status`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '身份管理表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of yx_system_role --- ---------------------------- -INSERT INTO `yx_system_role` VALUES (1, '超级管理员', '23,24,146,147,264,265,266,263,261,262,25,142,143,369,370,285,26,190,191,394,208,207,206,198,199,200,201,202,203,204,205,197,196,192,193,194,195,329,334,335,290,170,224,225,226,227,228,151,177,398,399,407,406,400,401,402,403,405,176,449,408,409,410,411,412,413,456,337,353,371,450,415,286,148,149,229,230,231,232,233,234,235,150,352,271,254,366,368,367,272,333,238,273,473,241,349,351,350,287,306,239,307,179,217,219,218,216,312,308,313,288,293,341,340,296,318,317,316,315,314,294,300,301,302,244,295,305,304,303,374,246,297,319,321,320,269,376,451,422,423,424,425,426,427,11,360,17,127,128,126,174,452,416,421,420,417,418,419,355,356,357,358,359,354,12,97,98,99,30,93,89,124,92,91,90,123,31,94,95,96,37,19,73,42,115,116,43,44,45,82,133,134,395,396,397,84,236,129,132,289,1,470,468,112,111,53,54,55,56,117,119,108,48,144,145,118,361,270,462,471,472,466,458,459,460,461,463,464,465,372,373,153,8,63,104,105,64,65,66,67,4,68,59,102,103,62,61,60,2,74,100,75,76,77,101,78,247,248,249,250,474,478,475,476,477,479,378,255,80,283,72,38,41,39,40,284,71,33,113,114,34,35,36,175,209,210,222,223,211,212,213,214,215,21,469,130,131,173,276,362,365,364,363,386,387,388,389,390,392,393,453,278,377,447,439,444,445,446,443,442,441,440,379,448,380,382,381,467,9,52,109,110,57,58,70,7,46,106,107,47,49,50,51,69,252,237,0', 0, 1); +INSERT INTO `yx_system_group_data` VALUES (205, 'sign_day_num', '{\"sign_num\":\"10\",\"id\":205,\"day\":\"第一天\"}', 1575526887, NULL, 1); +INSERT INTO `yx_system_group_data` VALUES (207, 'sign_day_num', '{\"sign_num\":\"20\",\"id\":\"\",\"day\":\"第二天\"}', 1575527087, NULL, 1); +INSERT INTO `yx_system_group_data` VALUES (209, 'sign_day_num', '{\"sign_num\":\"30\",\"id\":\"\",\"day\":\"第三天\"}', 1575527252, NULL, 1); +INSERT INTO `yx_system_group_data` VALUES (210, 'sign_day_num', '{\"addTime\":\"\",\"sign_num\":\"40\",\"id\":\"\",\"sort\":\"\",\"value\":\"\",\"day\":\"第四天\",\"status\":\"\"}', 1575527262, NULL, 1); +INSERT INTO `yx_system_group_data` VALUES (211, 'sign_day_num', '{\"addTime\":\"\",\"sign_num\":\"50\",\"id\":\"\",\"sort\":\"\",\"value\":\"\",\"day\":\"第五天\",\"status\":\"\"}', 1575527345, NULL, 1); +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); -- ---------------------------- -- Table structure for yx_system_store @@ -6102,12 +5774,12 @@ CREATE TABLE `yx_system_user_level` ( -- ---------------------------- -- Records of yx_system_user_level -- ---------------------------- -INSERT INTO `yx_system_user_level` VALUES (1, 0, '普通会员1', 20.00, 0, 1, 0, 1, 1, 99.00, 'http://datong.crmeb.net/public/uploads/attach/2019/03/28/5c9ccca8cd632.jpg', 'http://datong.crmeb.net/public/uploads/attach/2019/03/28/5c9ccca8bc1e0.png', '普通会员', 1553824559, 0); -INSERT INTO `yx_system_user_level` VALUES (2, 0, '青铜会员', 0.00, 0, 1, 0, 1, 2, 98.00, 'http://datong.crmeb.net/public/uploads/attach/2019/03/28/5c9ccca904016.jpg', 'http://datong.crmeb.net/public/uploads/attach/2019/03/28/5c9ccca8f0a30.png', '青铜会员', 1553824639, 0); -INSERT INTO `yx_system_user_level` VALUES (3, 0, '黄铜会员', 0.00, 0, 1, 0, 1, 3, 95.00, 'http://datong.crmeb.net/public/uploads/attach/2019/03/28/5c9ccca8c3bff.jpg', 'http://datong.crmeb.net/public/uploads/attach/2019/03/28/5c9ccca8e9365.png', '黄铜会员', 1553824742, 0); -INSERT INTO `yx_system_user_level` VALUES (4, 0, '白银会员', 0.00, 0, 1, 0, 1, 4, 94.00, 'http://datong.crmeb.net/public/uploads/attach/2019/03/28/5c9ccca8d6ae1.jpg', 'http://datong.crmeb.net/public/uploads/attach/2019/03/28/5c9ccca8a27f0.png', '白银会员', 1553824797, 0); -INSERT INTO `yx_system_user_level` VALUES (5, 0, '黄金会员', 0.00, 0, 1, 0, 1, 5, 90.00, 'http://datong.crmeb.net/public/uploads/attach/2019/03/28/5c9ccca8b27f1.jpg', 'http://datong.crmeb.net/public/uploads/attach/2019/03/28/5c9ccca8aa5b9.png', '黄金会员', 1553824837, 0); -INSERT INTO `yx_system_user_level` VALUES (6, 0, '钻石会员', 0.00, 0, 1, 0, 1, 6, 88.00, 'http://datong.crmeb.net/public/uploads/attach/2019/03/28/5c9ccca8dfe16.jpg', 'http://datong.crmeb.net/public/uploads/attach/2019/03/28/5c9ccca90d2d3.png', '钻石会员', 1553824871, 1); +INSERT INTO `yx_system_user_level` VALUES (1, 0, '普通会员', 20.00, 0, 1, 0, 1, 1, 99.00, 'http://pic.dayouqiantu.cn/5c9ccca8cd632.jpg', 'http://pic.dayouqiantu.cn/5c9ccca8bc1e0.png', '普通会员', 1553824559, 0); +INSERT INTO `yx_system_user_level` VALUES (2, 0, '青铜会员', 0.00, 0, 1, 0, 1, 2, 98.00, 'http://pic.dayouqiantu.cn/5c9ccca904016.jpg', 'http://pic.dayouqiantu.cn/5c9ccca8f0a30.png', '青铜会员', 1553824639, 0); +INSERT INTO `yx_system_user_level` VALUES (3, 0, '黄铜会员', 0.00, 0, 1, 0, 1, 3, 95.00, 'http://pic.dayouqiantu.cn/5c9ccca8b27f1.jpg', 'http://pic.dayouqiantu.cn/5c9ccca8e9365.png', '黄铜会员', 1553824742, 0); +INSERT INTO `yx_system_user_level` VALUES (4, 0, '白银会员', 0.00, 0, 1, 0, 1, 4, 94.00, 'http://pic.dayouqiantu.cn/5c9ccca8d6ae1.jpg', 'http://pic.dayouqiantu.cn/5c9ccca8a27f0.png', '白银会员', 1553824797, 0); +INSERT INTO `yx_system_user_level` VALUES (5, 0, '黄金会员', 0.00, 0, 1, 0, 1, 5, 90.00, 'http://pic.dayouqiantu.cn/5c9ccca8b27f1.jpg', 'http://pic.dayouqiantu.cn/5c9ccca8aa5b9.png', '黄金会员', 1553824837, 0); +INSERT INTO `yx_system_user_level` VALUES (6, 0, '钻石会员', 0.00, 0, 1, 0, 1, 6, 88.00, 'http://pic.dayouqiantu.cn/5c9ccca8dfe16.jpg', 'http://pic.dayouqiantu.cn/5c9ccca90d2d3.png', '钻石会员', 1553824871, 1); -- ---------------------------- -- Table structure for yx_system_user_task @@ -6126,25 +5798,29 @@ CREATE TABLE `yx_system_user_task` ( `illustrate` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '任务说明', `add_time` int(11) NOT NULL DEFAULT 0 COMMENT '新增时间', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 15 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '等级任务设置' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 19 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '等级任务设置' ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of yx_system_user_task -- ---------------------------- -INSERT INTO `yx_system_user_task` VALUES (1, '满足积分100分', '积分数', 'SatisfactionIntegral', 100, 1, 0, 1, 1, '', 1553827616); +INSERT INTO `yx_system_user_task` VALUES (1, '满足积分20分', '积分数', 'SatisfactionIntegral', 20, 1, 0, 1, 1, '', 1553827616); INSERT INTO `yx_system_user_task` VALUES (2, '消费满100元', '消费金额', 'ConsumptionAmount', 100, 1, 0, 1, 1, '', 1553827625); INSERT INTO `yx_system_user_task` VALUES (3, '满足积分200分', '积分数', 'SatisfactionIntegral', 200, 2, 0, 1, 1, '', 1553827638); INSERT INTO `yx_system_user_task` VALUES (4, '累计签到20天', '累计签到', 'CumulativeAttendance', 20, 2, 0, 1, 1, '', 1553827681); INSERT INTO `yx_system_user_task` VALUES (5, '满足积分500分', '积分数', 'SatisfactionIntegral', 500, 3, 0, 1, 1, '', 1553827695); INSERT INTO `yx_system_user_task` VALUES (6, '累计签到30天', '累计签到', 'CumulativeAttendance', 30, 3, 0, 1, 1, '', 1553827703); INSERT INTO `yx_system_user_task` VALUES (7, '满足积分1000分', '积分数', 'SatisfactionIntegral', 1000, 4, 0, 1, 1, '', 1553827731); -INSERT INTO `yx_system_user_task` VALUES (8, '分享给朋友10次', '分享给朋友', 'SharingTimes', 10, 4, 0, 1, 1, '', 1553827740); +INSERT INTO `yx_system_user_task` VALUES (8, '累计签到10天', '累计签到', 'CumulativeAttendance', 10, 4, 0, 1, 1, '', 1553827740); INSERT INTO `yx_system_user_task` VALUES (9, '满足积分1200分', '积分数', 'SatisfactionIntegral', 1200, 5, 0, 1, 1, '', 1553827759); INSERT INTO `yx_system_user_task` VALUES (10, '累计签到60天', '累计签到', 'CumulativeAttendance', 60, 5, 0, 1, 1, '', 1553827768); -INSERT INTO `yx_system_user_task` VALUES (11, '消费5次', '消费次数', 'ConsumptionFrequency', 5, 5, 0, 1, 1, '', 1553827776); +INSERT INTO `yx_system_user_task` VALUES (11, '消费满10000元', '消费次数', 'ConsumptionAmount', 10000, 5, 0, 1, 1, '', 1553827776); INSERT INTO `yx_system_user_task` VALUES (12, '满足积分2000分', '积分数', 'SatisfactionIntegral', 2000, 6, 0, 1, 1, '', 1553827791); INSERT INTO `yx_system_user_task` VALUES (13, '消费满10000元', '消费次数', 'ConsumptionAmount', 10000, 6, 0, 1, 1, '', 1553827803); INSERT INTO `yx_system_user_task` VALUES (14, '累计签到100天', '累计签到', 'CumulativeAttendance', 100, 6, 0, 1, 1, '', 1553827814); +INSERT INTO `yx_system_user_task` VALUES (15, '消费满1000元', '消费金额', 'ConsumptionAmount', 1000, 4, 0, 1, 1, '', 1575456513); +INSERT INTO `yx_system_user_task` VALUES (16, '累计签到2天', '累计签到', 'CumulativeAttendance', 2, 1, 0, 1, 1, '', 1575456576); +INSERT INTO `yx_system_user_task` VALUES (17, '消费满100元', '消费次数', 'ConsumptionAmount', 100, 2, 0, 1, 1, '', 1575456612); +INSERT INTO `yx_system_user_task` VALUES (18, '消费满1000元', '消费金额', 'ConsumptionAmount', 1000, 3, 0, 1, 1, '', 1575456692); -- ---------------------------- -- Table structure for yx_user @@ -6198,7 +5874,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.00, 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, '', 9598.60, 28.00, 0.00, 0, 1, 0, 11, 1573527758, 'h5', 0, 9, 1, 0, '', 1, ''); +INSERT INTO `yx_user` VALUES (12, '15136175246', '151361752469', 'e10adc3949ba59abbe56e057f20f883e', 'e10adc3949ba59abbe56e057f20f883e', '', 0, '', '', 0, 0, '会敲代码的喵2', 'https://image.dayouqiantu.cn/5dc2c7f3a104c.png', '15136175246', 1573120881, '', 1573120881, '', 9479.80, 28.00, 40.00, 2, 1, 1, 11, 1573527758, 'h5', 0, 10, 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, ''); -- ---------------------------- @@ -6257,7 +5933,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 = 43 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户账单表' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 49 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户账单表' ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of yx_user_bill @@ -6299,6 +5975,12 @@ INSERT INTO `yx_user_bill` VALUES (39, 11, '93', 0, '购买商品', 'now_money', INSERT INTO `yx_user_bill` VALUES (40, 12, '96', 0, '购买商品', 'now_money', 'pay_product', 1.00, 9359.60, '余额支付', 1574425447, 1); INSERT INTO `yx_user_bill` VALUES (41, 12, '91', 1, '商品退款', 'now_money', 'pay_product_refund', 120.00, 9478.60, '订单退款到余额', 1574757130, 1); INSERT INTO `yx_user_bill` VALUES (42, 12, '91', 1, '商品退款', 'now_money', 'pay_product_refund', 120.00, 9598.60, '订单退款到余额', 1574757363, 1); +INSERT INTO `yx_user_bill` VALUES (43, 14, '0', 1, '系统增加余额', 'now_money', 'system_add', 10.00, 9410.00, '系统增加了10.0余额', 1575446946, 1); +INSERT INTO `yx_user_bill` VALUES (44, 14, '0', 0, '系统增加余额', 'now_money', 'system_sub', 10.00, 9400.00, '系统扣除了10.0余额', 1575447084, 1); +INSERT INTO `yx_user_bill` VALUES (45, 12, '0', 1, '签到奖励', 'integral', 'sign', 10.00, 0.00, '', 1575549244, 1); +INSERT INTO `yx_user_bill` VALUES (46, 12, '0', 1, '签到奖励', 'integral', 'sign', 10.00, 10.00, '', 1575684021, 1); +INSERT INTO `yx_user_bill` VALUES (47, 12, '99', 0, '购买商品', 'now_money', 'pay_product', 118.80, 9598.60, '余额支付', 1575771514, 1); +INSERT INTO `yx_user_bill` VALUES (48, 12, '0', 1, '签到奖励', 'integral', 'sign', 20.00, 20.00, '', 1575771932, 1); -- ---------------------------- -- Table structure for yx_user_enter @@ -6394,7 +6076,12 @@ CREATE TABLE `yx_user_level` ( `discount` int(11) NOT NULL DEFAULT 0 COMMENT '享受折扣', PRIMARY KEY (`id`) USING BTREE, UNIQUE INDEX `id`(`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户等级记录表' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户等级记录表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of yx_user_level +-- ---------------------------- +INSERT INTO `yx_user_level` VALUES (1, 12, 1, 1, 0, 1, 0, 1, '恭喜你成为了普通会员', 0, 0, 1575728091, 99); -- ---------------------------- -- Table structure for yx_user_notice @@ -6459,7 +6146,14 @@ CREATE TABLE `yx_user_sign` ( `add_time` int(11) NOT NULL DEFAULT 0 COMMENT '添加时间', PRIMARY KEY (`id`) USING BTREE, INDEX `uid`(`uid`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '签到记录表' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '签到记录表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of yx_user_sign +-- ---------------------------- +INSERT INTO `yx_user_sign` VALUES (2, 12, '签到奖励', 10, 0, 1575549244); +INSERT INTO `yx_user_sign` VALUES (3, 12, '签到奖励', 10, 10, 1575684021); +INSERT INTO `yx_user_sign` VALUES (4, 12, '签到奖励', 20, 20, 1575771932); -- ---------------------------- -- Table structure for yx_user_task_finish @@ -6473,19 +6167,15 @@ CREATE TABLE `yx_user_task_finish` ( `add_time` int(11) NOT NULL DEFAULT 0 COMMENT '添加时间', PRIMARY KEY (`id`) USING BTREE, UNIQUE INDEX `id`(`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户任务完成记录表' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户任务完成记录表' ROW_FORMAT = Dynamic; -- ---------------------------- --- Table structure for yx_user_token +-- Records of yx_user_task_finish -- ---------------------------- -DROP TABLE IF EXISTS `yx_user_token`; -CREATE TABLE `yx_user_token` ( - `uid` int(10) UNSIGNED NOT NULL COMMENT '用户 id', - `token` varchar(300) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'token', - `create_time` datetime(0) NOT NULL COMMENT '创建时间', - `expires_time` datetime(0) NOT NULL COMMENT '到期事件', - `login_ip` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '登录ip' -) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; +INSERT INTO `yx_user_task_finish` VALUES (1, 2, 12, 0, 1575725509); +INSERT INTO `yx_user_task_finish` VALUES (2, 1, 12, 0, 1575726526); +INSERT INTO `yx_user_task_finish` VALUES (3, 16, 12, 0, 1575726526); +INSERT INTO `yx_user_task_finish` VALUES (4, 17, 12, 0, 1575729673); -- ---------------------------- -- Table structure for yx_wechat_media diff --git a/yshop-api/pom.xml b/yshop-api/pom.xml index 688e994f..cff340ae 100644 --- a/yshop-api/pom.xml +++ b/yshop-api/pom.xml @@ -5,7 +5,7 @@ yshop co.yixiang - 1.3 + 1.4 4.0.0 @@ -21,18 +21,18 @@ co.yixiang yshop-common - 1.3 + 1.4 co.yixiang yshop-tools - 1.3 + 1.4 co.yixiang yshop-mp - 1.3 + 1.4 diff --git a/yshop-api/src/main/java/co/yixiang/modules/manage/web/controller/ShoperController.java b/yshop-api/src/main/java/co/yixiang/modules/manage/web/controller/ShoperController.java index b3ea9308..2e176137 100644 --- a/yshop-api/src/main/java/co/yixiang/modules/manage/web/controller/ShoperController.java +++ b/yshop-api/src/main/java/co/yixiang/modules/manage/web/controller/ShoperController.java @@ -12,6 +12,8 @@ import co.yixiang.modules.manage.web.param.OrderRemarkParam; import co.yixiang.modules.order.service.YxStoreOrderService; import co.yixiang.modules.order.web.dto.OrderCountDTO; import co.yixiang.modules.order.web.vo.YxStoreOrderQueryVo; +import co.yixiang.modules.user.service.YxUserService; +import co.yixiang.modules.user.web.vo.YxUserQueryVo; import co.yixiang.utils.SecurityUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,6 +38,7 @@ import java.util.Map; public class ShoperController extends BaseController { private final YxStoreOrderService storeOrderService; + //private final YxUserService yxUserService; /** * 订单数据统计 @@ -43,7 +46,8 @@ public class ShoperController extends BaseController { @GetMapping("/admin/order/statistics") @ApiOperation(value = "订单数据统计",notes = "订单数据统计") public ApiResult statistics(){ - int uid = SecurityUtils.getUserId().intValue(); + //int uid = SecurityUtils.getUserId().intValue(); + OrderCountDTO orderCountDTO = storeOrderService.orderData(0); OrderTimeDataDTO orderTimeDataDTO = storeOrderService.getOrderTimeData(); 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 9227e890..a2d25160 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 @@ -50,7 +50,6 @@ import co.yixiang.modules.user.web.vo.YxUserQueryVo; import co.yixiang.modules.user.web.vo.YxWechatUserQueryVo; //import co.yixiang.redisson.DelayJob; //import co.yixiang.redisson.DelayJobService; -import co.yixiang.redisson.DelayJob; import co.yixiang.redisson.DelayJobService; import co.yixiang.utils.OrderUtil; import co.yixiang.utils.RedisUtil; @@ -1155,10 +1154,12 @@ public class YxStoreOrderServiceImpl extends BaseServiceImpl delayJob = new HashMap<>(); + delayJob.put("delayJobName","CANCEL_ORVERTIME_ORDER"); + delayJob.put("orderId",storeOrder.getId()); delayJobService.submitJob(delayJob, CommonConstant.ORDER_OUTTIME_UNPAY); + log.info("添加定时任务成功 订单id: [{}]:", storeOrder.getId()); return storeOrder; } diff --git a/yshop-api/src/main/java/co/yixiang/modules/shop/service/YxStoreProductService.java b/yshop-api/src/main/java/co/yixiang/modules/shop/service/YxStoreProductService.java index fafd2c2a..292f4883 100644 --- a/yshop-api/src/main/java/co/yixiang/modules/shop/service/YxStoreProductService.java +++ b/yshop-api/src/main/java/co/yixiang/modules/shop/service/YxStoreProductService.java @@ -20,6 +20,7 @@ import java.util.List; */ public interface YxStoreProductService extends BaseService { + void incProductStock(int num,int productId,String unique); void decProductStock(int num,int productId,String unique); 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 9c34ad54..a9d60bfc 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 @@ -18,6 +18,7 @@ import co.yixiang.modules.shop.web.vo.YxStoreCartQueryVo; import co.yixiang.common.service.impl.BaseServiceImpl; import co.yixiang.common.web.vo.Paging; import co.yixiang.modules.shop.web.vo.YxStoreProductQueryVo; +import co.yixiang.modules.user.service.YxUserService; import co.yixiang.utils.OrderUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.Builder; @@ -69,6 +70,9 @@ public class YxStoreCartServiceImpl extends BaseServiceImpl wrapper = new QueryWrapper<>(); wrapper.eq("uid",uid).eq("type",type).eq("is_pay",0).eq("is_del",0) + .eq("product_id",productId) .eq("is_new",isNew).eq("product_attr_unique",productAttrUnique) .eq("combination_id",combinationId).eq("bargain_id",bargainId) .eq("seckill_id",seckillId); diff --git a/yshop-api/src/main/java/co/yixiang/modules/shop/service/impl/YxStoreProductServiceImpl.java b/yshop-api/src/main/java/co/yixiang/modules/shop/service/impl/YxStoreProductServiceImpl.java index 44b96543..c1d7fafe 100644 --- a/yshop-api/src/main/java/co/yixiang/modules/shop/service/impl/YxStoreProductServiceImpl.java +++ b/yshop-api/src/main/java/co/yixiang/modules/shop/service/impl/YxStoreProductServiceImpl.java @@ -16,6 +16,7 @@ import co.yixiang.modules.shop.web.vo.YxStoreProductAttrQueryVo; import co.yixiang.modules.shop.web.vo.YxStoreProductQueryVo; import co.yixiang.common.service.impl.BaseServiceImpl; import co.yixiang.common.web.vo.Paging; +import co.yixiang.modules.user.service.YxUserService; import co.yixiang.utils.CateDTO; import co.yixiang.utils.TreeUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -28,6 +29,7 @@ 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.math.BigDecimal; import java.util.List; import java.util.Map; @@ -60,6 +62,10 @@ public class YxStoreProductServiceImpl extends BaseServiceImpl returnMap = storeProductAttrService.getProductAttrDetail(id,0,0); ProductDTO productDTO = new ProductDTO(); YxStoreProductQueryVo storeProductQueryVo = storeProductMap.toDto(storeProduct); + //设置VIP价格 + double vipPrice = userService.setLevelPrice( + storeProductQueryVo.getPrice().doubleValue(),uid); + storeProductQueryVo.setVipPrice(BigDecimal.valueOf(vipPrice)); storeProductQueryVo.setUserCollect(relationService .isProductRelation(id,"product",uid,"collect")); productDTO.setStoreInfo(storeProductQueryVo); diff --git a/yshop-api/src/main/java/co/yixiang/modules/task/CancelOrderService.java b/yshop-api/src/main/java/co/yixiang/modules/task/CancelOrderService.java index 190327dd..a31e2bea 100644 --- a/yshop-api/src/main/java/co/yixiang/modules/task/CancelOrderService.java +++ b/yshop-api/src/main/java/co/yixiang/modules/task/CancelOrderService.java @@ -3,36 +3,40 @@ package co.yixiang.modules.task; import cn.hutool.core.util.ObjectUtil; import co.yixiang.modules.order.entity.YxStoreOrder; import co.yixiang.modules.order.service.YxStoreOrderService; -import co.yixiang.redisson.DelayJob; import co.yixiang.redisson.ExecuteJob; import co.yixiang.utils.BeanUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; +import java.util.Map; + @Component @Slf4j public class CancelOrderService implements ExecuteJob { @Override - public void execute(DelayJob job) { - log.info("系统开始处理延时任务---订单超时未付款---" + job.getOderId()); + public void execute(Map job) { + if(job.get("delayJobName").equals("CANCEL_ORVERTIME_ORDER")){ + log.info("系统开始处理延时任务---订单超时未付款---" + job.get("orderId")); - YxStoreOrderService yxorderService = BeanUtil.getBean(YxStoreOrderService.class); + YxStoreOrderService yxorderService = BeanUtil.getBean(YxStoreOrderService.class); - YxStoreOrder order = null; - try { - order = yxorderService.getOne(new QueryWrapper().eq("id", job.getOderId()).eq("is_del",0)); - } catch (Exception e) { - e.printStackTrace(); + YxStoreOrder order = null; + try { + order = yxorderService.getOne(new QueryWrapper().eq("id", job.get("orderId")).eq("is_del",0)); + } catch (Exception e) { + e.printStackTrace(); + } + if(ObjectUtil.isNull(order)) { + return; + } + if(order.getPaid() != 0){ + return; + } + yxorderService.cancelOrderByTask((int)job.get("orderId")); + log.info("系统结束处理延时任务---订单超时未付款取消---" + job.get("orderId")); } - if(ObjectUtil.isNull(order)) { - return; - } - if(order.getPaid() != 0){ - return; - } - yxorderService.cancelOrderByTask(job.getOderId()); - log.info("系统结束处理延时任务---订单超时未付款取消---" + job.getOderId()); + } } diff --git a/yshop-api/src/main/java/co/yixiang/modules/user/entity/YxSystemUserLevel.java b/yshop-api/src/main/java/co/yixiang/modules/user/entity/YxSystemUserLevel.java new file mode 100644 index 00000000..98b7bc48 --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/user/entity/YxSystemUserLevel.java @@ -0,0 +1,77 @@ +package co.yixiang.modules.user.entity; + +import java.math.BigDecimal; + +import com.baomidou.mybatisplus.annotation.IdType; +import co.yixiang.common.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + *

+ * 设置用户等级表 + *

+ * + * @author hupeng + * @since 2019-12-06 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@ApiModel(value = "YxSystemUserLevel对象", description = "设置用户等级表") +public class YxSystemUserLevel extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "商户id") + private Integer merId; + + @ApiModelProperty(value = "会员名称") + private String name; + + @ApiModelProperty(value = "购买金额") + private BigDecimal money; + + @ApiModelProperty(value = "有效时间") + private Integer validDate; + + @ApiModelProperty(value = "是否为永久会员") + private Integer isForever; + + @ApiModelProperty(value = "是否购买,1=购买,0=不购买") + private Integer isPay; + + @ApiModelProperty(value = "是否显示 1=显示,0=隐藏") + private Integer isShow; + + @ApiModelProperty(value = "会员等级") + private Integer grade; + + @ApiModelProperty(value = "享受折扣") + private BigDecimal discount; + + @ApiModelProperty(value = "会员卡背景") + private String image; + + @ApiModelProperty(value = "会员图标") + private String icon; + + @ApiModelProperty(value = "说明") + @TableField(value = "`explain`") + private String explain; + + @ApiModelProperty(value = "添加时间") + private Integer addTime; + + @ApiModelProperty(value = "是否删除.1=删除,0=未删除") + private Integer isDel; + +} diff --git a/yshop-api/src/main/java/co/yixiang/modules/user/entity/YxSystemUserTask.java b/yshop-api/src/main/java/co/yixiang/modules/user/entity/YxSystemUserTask.java new file mode 100644 index 00000000..5fc2d9c8 --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/user/entity/YxSystemUserTask.java @@ -0,0 +1,61 @@ +package co.yixiang.modules.user.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import co.yixiang.common.entity.BaseEntity; +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 hupeng + * @since 2019-12-06 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@ApiModel(value = "YxSystemUserTask对象", description = "等级任务设置") +public class YxSystemUserTask extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "任务名称") + private String name; + + @ApiModelProperty(value = "配置原名") + private String realName; + + @ApiModelProperty(value = "任务类型") + private String taskType; + + @ApiModelProperty(value = "限定数") + private Integer number; + + @ApiModelProperty(value = "等级id") + private Integer levelId; + + @ApiModelProperty(value = "排序") + private Integer sort; + + @ApiModelProperty(value = "是否显示") + private Integer isShow; + + @ApiModelProperty(value = "是否务必达成任务,1务必达成,0=满足其一") + private Integer isMust; + + @ApiModelProperty(value = "任务说明") + private String illustrate; + + @ApiModelProperty(value = "新增时间") + private Integer addTime; + +} diff --git a/yshop-api/src/main/java/co/yixiang/modules/user/entity/YxUserLevel.java b/yshop-api/src/main/java/co/yixiang/modules/user/entity/YxUserLevel.java new file mode 100644 index 00000000..6fad172a --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/user/entity/YxUserLevel.java @@ -0,0 +1,67 @@ +package co.yixiang.modules.user.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import co.yixiang.common.entity.BaseEntity; +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 hupeng + * @since 2019-12-06 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@ApiModel(value = "YxUserLevel对象", description = "用户等级记录表") +public class YxUserLevel extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "用户uid") + private Integer uid; + + @ApiModelProperty(value = "等级vip") + private Integer levelId; + + @ApiModelProperty(value = "会员等级") + private Integer grade; + + @ApiModelProperty(value = "过期时间") + private Integer validTime; + + @ApiModelProperty(value = "是否永久") + private Integer isForever; + + @ApiModelProperty(value = "商户id") + private Integer merId; + + @ApiModelProperty(value = "0:禁止,1:正常") + private Integer status; + + @ApiModelProperty(value = "备注") + private String mark; + + @ApiModelProperty(value = "是否已通知") + private Integer remind; + + @ApiModelProperty(value = "是否删除,0=未删除,1=删除") + private Integer isDel; + + @ApiModelProperty(value = "添加时间") + private Integer addTime; + + @ApiModelProperty(value = "享受折扣") + private Integer discount; + +} diff --git a/yshop-api/src/main/java/co/yixiang/modules/user/entity/YxUserSign.java b/yshop-api/src/main/java/co/yixiang/modules/user/entity/YxUserSign.java new file mode 100644 index 00000000..a0411ecd --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/user/entity/YxUserSign.java @@ -0,0 +1,46 @@ +package co.yixiang.modules.user.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import co.yixiang.common.entity.BaseEntity; +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 hupeng + * @since 2019-12-05 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@ApiModel(value = "YxUserSign对象", description = "签到记录表") +public class YxUserSign extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "用户uid") + private Integer uid; + + @ApiModelProperty(value = "签到说明") + private String title; + + @ApiModelProperty(value = "获得积分") + private Integer number; + + @ApiModelProperty(value = "剩余积分") + private Integer balance; + + @ApiModelProperty(value = "添加时间") + private Integer addTime; + +} diff --git a/yshop-api/src/main/java/co/yixiang/modules/user/entity/YxUserTaskFinish.java b/yshop-api/src/main/java/co/yixiang/modules/user/entity/YxUserTaskFinish.java new file mode 100644 index 00000000..e1724f00 --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/user/entity/YxUserTaskFinish.java @@ -0,0 +1,43 @@ +package co.yixiang.modules.user.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import co.yixiang.common.entity.BaseEntity; +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 hupeng + * @since 2019-12-07 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@ApiModel(value = "YxUserTaskFinish对象", description = "用户任务完成记录表") +public class YxUserTaskFinish extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "任务id") + private Integer taskId; + + @ApiModelProperty(value = "用户id") + private Integer uid; + + @ApiModelProperty(value = "是否有效") + private Integer status; + + @ApiModelProperty(value = "添加时间") + private Integer addTime; + +} diff --git a/yshop-api/src/main/java/co/yixiang/modules/user/mapper/YxSystemUserLevelMapper.java b/yshop-api/src/main/java/co/yixiang/modules/user/mapper/YxSystemUserLevelMapper.java new file mode 100644 index 00000000..06a331da --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/user/mapper/YxSystemUserLevelMapper.java @@ -0,0 +1,40 @@ +package co.yixiang.modules.user.mapper; + +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.user.entity.YxSystemUserLevel; +import co.yixiang.modules.user.web.param.YxSystemUserLevelQueryParam; +import co.yixiang.modules.user.web.vo.YxSystemUserLevelQueryVo; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +import java.io.Serializable; + +/** + *

+ * 设置用户等级表 Mapper 接口 + *

+ * + * @author hupeng + * @since 2019-12-06 + */ +@Repository +public interface YxSystemUserLevelMapper extends BaseMapper { + + /** + * 根据ID获取查询对象 + * @param id + * @return + */ + YxSystemUserLevelQueryVo getYxSystemUserLevelById(Serializable id); + + /** + * 获取分页对象 + * @param page + * @param yxSystemUserLevelQueryParam + * @return + */ + IPage getYxSystemUserLevelPageList(@Param("page") Page page, @Param("param") YxSystemUserLevelQueryParam yxSystemUserLevelQueryParam); + +} diff --git a/yshop-api/src/main/java/co/yixiang/modules/user/mapper/YxSystemUserTaskMapper.java b/yshop-api/src/main/java/co/yixiang/modules/user/mapper/YxSystemUserTaskMapper.java new file mode 100644 index 00000000..a649f21e --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/user/mapper/YxSystemUserTaskMapper.java @@ -0,0 +1,40 @@ +package co.yixiang.modules.user.mapper; + +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.user.entity.YxSystemUserTask; +import co.yixiang.modules.user.web.param.YxSystemUserTaskQueryParam; +import co.yixiang.modules.user.web.vo.YxSystemUserTaskQueryVo; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +import java.io.Serializable; + +/** + *

+ * 等级任务设置 Mapper 接口 + *

+ * + * @author hupeng + * @since 2019-12-06 + */ +@Repository +public interface YxSystemUserTaskMapper extends BaseMapper { + + /** + * 根据ID获取查询对象 + * @param id + * @return + */ + YxSystemUserTaskQueryVo getYxSystemUserTaskById(Serializable id); + + /** + * 获取分页对象 + * @param page + * @param yxSystemUserTaskQueryParam + * @return + */ + IPage getYxSystemUserTaskPageList(@Param("page") Page page, @Param("param") YxSystemUserTaskQueryParam yxSystemUserTaskQueryParam); + +} diff --git a/yshop-api/src/main/java/co/yixiang/modules/user/mapper/YxUserBillMapper.java b/yshop-api/src/main/java/co/yixiang/modules/user/mapper/YxUserBillMapper.java index 928e9458..82b4c51e 100644 --- a/yshop-api/src/main/java/co/yixiang/modules/user/mapper/YxUserBillMapper.java +++ b/yshop-api/src/main/java/co/yixiang/modules/user/mapper/YxUserBillMapper.java @@ -1,9 +1,6 @@ package co.yixiang.modules.user.mapper; -import co.yixiang.modules.user.web.dto.BillDTO; -import co.yixiang.modules.user.web.dto.BillOrderRecordDTO; -import co.yixiang.modules.user.web.dto.PromUserDTO; -import co.yixiang.modules.user.web.dto.UserBillDTO; +import co.yixiang.modules.user.web.dto.*; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Constants; @@ -30,6 +27,17 @@ import java.util.List; @Repository public interface YxUserBillMapper extends BaseMapper { + @Select("select IFNULL(sum(number),0) from yx_user_bill " + + "where status=1 and type='sign' and pm=1 and category='integral' " + + "and uid=#{uid}") + double sumIntegral(@Param("uid") int uid); + + @Select("SELECT FROM_UNIXTIME(a.add_time,'%Y-%m-%d') as addTime,a.title,a.number " + + "FROM yx_user_bill a INNER JOIN yx_user u ON u.uid=a.uid WHERE a.category = 'integral'" + + " AND a.type = 'sign' AND a.status = 1 AND a.uid = #{uid} " + + "ORDER BY a.add_time DESC") + List getSignList(@Param("uid") int uid, Page page); + @Select("SELECT o.order_id as orderId,FROM_UNIXTIME(b.add_time, '%Y-%m-%d %H:%i') as time," + "b.number,u.avatar,u.nickname FROM yx_user_bill b " + "INNER JOIN yx_store_order o ON o.id=b.link_id " + diff --git a/yshop-api/src/main/java/co/yixiang/modules/user/mapper/YxUserLevelMapper.java b/yshop-api/src/main/java/co/yixiang/modules/user/mapper/YxUserLevelMapper.java new file mode 100644 index 00000000..0d69f789 --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/user/mapper/YxUserLevelMapper.java @@ -0,0 +1,47 @@ +package co.yixiang.modules.user.mapper; + +import co.yixiang.modules.user.web.dto.UserLevelInfoDTO; +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.user.entity.YxUserLevel; +import co.yixiang.modules.user.web.param.YxUserLevelQueryParam; +import co.yixiang.modules.user.web.vo.YxUserLevelQueryVo; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import org.springframework.stereotype.Repository; + +import java.io.Serializable; + +/** + *

+ * 用户等级记录表 Mapper 接口 + *

+ * + * @author hupeng + * @since 2019-12-06 + */ +@Repository +public interface YxUserLevelMapper extends BaseMapper { + + @Select("SELECT l.id,a.add_time as addTime,l.discount,a.level_id as levelId,l.name," + + "l.icon,l.grade FROM yx_user_level a INNER JOIN yx_system_user_level l " + + "ON l.id=a.level_id WHERE a.status = 1 AND a.is_del = 0 AND a.id = #{id} LIMIT 1") + UserLevelInfoDTO getUserLevelInfo(int id); + + /** + * 根据ID获取查询对象 + * @param id + * @return + */ + YxUserLevelQueryVo getYxUserLevelById(Serializable id); + + /** + * 获取分页对象 + * @param page + * @param yxUserLevelQueryParam + * @return + */ + IPage getYxUserLevelPageList(@Param("page") Page page, @Param("param") YxUserLevelQueryParam yxUserLevelQueryParam); + +} diff --git a/yshop-api/src/main/java/co/yixiang/modules/user/mapper/YxUserSignMapper.java b/yshop-api/src/main/java/co/yixiang/modules/user/mapper/YxUserSignMapper.java new file mode 100644 index 00000000..b0bd64e7 --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/user/mapper/YxUserSignMapper.java @@ -0,0 +1,49 @@ +package co.yixiang.modules.user.mapper; + +import co.yixiang.modules.user.entity.YxUserBill; +import co.yixiang.modules.user.web.dto.BillDTO; +import co.yixiang.modules.user.web.dto.SignDTO; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import co.yixiang.modules.user.entity.YxUserSign; +import co.yixiang.modules.user.web.param.YxUserSignQueryParam; +import co.yixiang.modules.user.web.vo.YxUserSignQueryVo; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import org.springframework.stereotype.Repository; + +import java.io.Serializable; +import java.util.List; + +/** + *

+ * 签到记录表 Mapper 接口 + *

+ * + * @author hupeng + * @since 2019-12-05 + */ +@Repository +public interface YxUserSignMapper extends BaseMapper { + + + + /** + * 根据ID获取查询对象 + * @param id + * @return + */ + YxUserSignQueryVo getYxUserSignById(Serializable id); + + /** + * 获取分页对象 + * @param page + * @param yxUserSignQueryParam + * @return + */ + IPage getYxUserSignPageList(@Param("page") Page page, @Param("param") YxUserSignQueryParam yxUserSignQueryParam); + +} diff --git a/yshop-api/src/main/java/co/yixiang/modules/user/mapper/YxUserTaskFinishMapper.java b/yshop-api/src/main/java/co/yixiang/modules/user/mapper/YxUserTaskFinishMapper.java new file mode 100644 index 00000000..c1d3dbc2 --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/user/mapper/YxUserTaskFinishMapper.java @@ -0,0 +1,40 @@ +package co.yixiang.modules.user.mapper; + +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.user.entity.YxUserTaskFinish; +import co.yixiang.modules.user.web.param.YxUserTaskFinishQueryParam; +import co.yixiang.modules.user.web.vo.YxUserTaskFinishQueryVo; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +import java.io.Serializable; + +/** + *

+ * 用户任务完成记录表 Mapper 接口 + *

+ * + * @author hupeng + * @since 2019-12-07 + */ +@Repository +public interface YxUserTaskFinishMapper extends BaseMapper { + + /** + * 根据ID获取查询对象 + * @param id + * @return + */ + YxUserTaskFinishQueryVo getYxUserTaskFinishById(Serializable id); + + /** + * 获取分页对象 + * @param page + * @param yxUserTaskFinishQueryParam + * @return + */ + IPage getYxUserTaskFinishPageList(@Param("page") Page page, @Param("param") YxUserTaskFinishQueryParam yxUserTaskFinishQueryParam); + +} diff --git a/yshop-api/src/main/java/co/yixiang/modules/user/mapping/SystemUserLevelMap.java b/yshop-api/src/main/java/co/yixiang/modules/user/mapping/SystemUserLevelMap.java new file mode 100644 index 00000000..817a0365 --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/user/mapping/SystemUserLevelMap.java @@ -0,0 +1,17 @@ +package co.yixiang.modules.user.mapping; + +import co.yixiang.mapper.EntityMapper; +import co.yixiang.modules.user.entity.YxSystemUserLevel; +import co.yixiang.modules.user.web.vo.YxSystemUserLevelQueryVo; +import org.mapstruct.Mapper; +import org.mapstruct.ReportingPolicy; + + +/** +* @author hupeng +* @date 2019-12-7 +*/ +@Mapper(componentModel = "spring",uses = {},unmappedTargetPolicy = ReportingPolicy.IGNORE) +public interface SystemUserLevelMap extends EntityMapper { + +} \ No newline at end of file diff --git a/yshop-api/src/main/java/co/yixiang/modules/user/mapping/SystemUserTaskMap.java b/yshop-api/src/main/java/co/yixiang/modules/user/mapping/SystemUserTaskMap.java new file mode 100644 index 00000000..3d7c7836 --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/user/mapping/SystemUserTaskMap.java @@ -0,0 +1,17 @@ +package co.yixiang.modules.user.mapping; + +import co.yixiang.mapper.EntityMapper; +import co.yixiang.modules.user.entity.YxSystemUserTask; +import co.yixiang.modules.user.web.vo.YxSystemUserTaskQueryVo; +import org.mapstruct.Mapper; +import org.mapstruct.ReportingPolicy; + + +/** +* @author hupeng +* @date 2019-12-7 +*/ +@Mapper(componentModel = "spring",uses = {},unmappedTargetPolicy = ReportingPolicy.IGNORE) +public interface SystemUserTaskMap extends EntityMapper { + +} \ No newline at end of file diff --git a/yshop-api/src/main/java/co/yixiang/modules/user/service/YxSystemUserLevelService.java b/yshop-api/src/main/java/co/yixiang/modules/user/service/YxSystemUserLevelService.java new file mode 100644 index 00000000..3e905a73 --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/user/service/YxSystemUserLevelService.java @@ -0,0 +1,45 @@ +package co.yixiang.modules.user.service; + +import co.yixiang.modules.user.entity.YxSystemUserLevel; +import co.yixiang.common.service.BaseService; +import co.yixiang.modules.user.web.dto.UserLevelDTO; +import co.yixiang.modules.user.web.param.YxSystemUserLevelQueryParam; +import co.yixiang.modules.user.web.vo.YxSystemUserLevelQueryVo; +import co.yixiang.common.web.vo.Paging; + +import java.io.Serializable; +import java.util.List; + +/** + *

+ * 设置用户等级表 服务类 + *

+ * + * @author hupeng + * @since 2019-12-06 + */ +public interface YxSystemUserLevelService extends BaseService { + + int getNextLevelId(int levelId); + + boolean getClear(int levelId); + + List getLevelListAndGrade(Integer levelId,boolean isTask); + + UserLevelDTO getLevelInfo(int uid,boolean isTask); + + /** + * 根据ID获取查询对象 + * @param id + * @return + */ + YxSystemUserLevelQueryVo getYxSystemUserLevelById(Serializable id); + + /** + * 获取分页对象 + * @param yxSystemUserLevelQueryParam + * @return + */ + Paging getYxSystemUserLevelPageList(YxSystemUserLevelQueryParam yxSystemUserLevelQueryParam) throws Exception; + +} diff --git a/yshop-api/src/main/java/co/yixiang/modules/user/service/YxSystemUserTaskService.java b/yshop-api/src/main/java/co/yixiang/modules/user/service/YxSystemUserTaskService.java new file mode 100644 index 00000000..dfe89c18 --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/user/service/YxSystemUserTaskService.java @@ -0,0 +1,44 @@ +package co.yixiang.modules.user.service; + +import co.yixiang.modules.user.entity.YxSystemUserTask; +import co.yixiang.common.service.BaseService; +import co.yixiang.modules.user.web.dto.TaskDTO; +import co.yixiang.modules.user.web.dto.UserLevelInfoDTO; +import co.yixiang.modules.user.web.param.YxSystemUserTaskQueryParam; +import co.yixiang.modules.user.web.vo.YxSystemUserTaskQueryVo; +import co.yixiang.common.web.vo.Paging; + +import java.io.Serializable; +import java.util.List; + +/** + *

+ * 等级任务设置 服务类 + *

+ * + * @author hupeng + * @since 2019-12-06 + */ +public interface YxSystemUserTaskService extends BaseService { + + List tidyTask(List task,int uid); + + int getTaskComplete(int levelId,int uid); + + TaskDTO getTaskList(int levelId, int uid, UserLevelInfoDTO level); + + /** + * 根据ID获取查询对象 + * @param id + * @return + */ + YxSystemUserTaskQueryVo getYxSystemUserTaskById(Serializable id) throws Exception; + + /** + * 获取分页对象 + * @param yxSystemUserTaskQueryParam + * @return + */ + Paging getYxSystemUserTaskPageList(YxSystemUserTaskQueryParam yxSystemUserTaskQueryParam) throws Exception; + +} diff --git a/yshop-api/src/main/java/co/yixiang/modules/user/service/YxUserBillService.java b/yshop-api/src/main/java/co/yixiang/modules/user/service/YxUserBillService.java index 83935296..cac1fafd 100644 --- a/yshop-api/src/main/java/co/yixiang/modules/user/service/YxUserBillService.java +++ b/yshop-api/src/main/java/co/yixiang/modules/user/service/YxUserBillService.java @@ -22,6 +22,8 @@ import java.util.Map; */ public interface YxUserBillService extends BaseService { + int cumulativeAttendance(int uid); + Map spreadOrder(int uid,int page,int limit); List getUserBillList(int page, int limit, int uid, int type); diff --git a/yshop-api/src/main/java/co/yixiang/modules/user/service/YxUserLevelService.java b/yshop-api/src/main/java/co/yixiang/modules/user/service/YxUserLevelService.java new file mode 100644 index 00000000..26e7111a --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/user/service/YxUserLevelService.java @@ -0,0 +1,44 @@ +package co.yixiang.modules.user.service; + +import co.yixiang.modules.user.entity.YxUserLevel; +import co.yixiang.common.service.BaseService; +import co.yixiang.modules.user.web.dto.UserLevelInfoDTO; +import co.yixiang.modules.user.web.param.YxUserLevelQueryParam; +import co.yixiang.modules.user.web.vo.YxUserLevelQueryVo; +import co.yixiang.common.web.vo.Paging; + +import java.io.Serializable; + +/** + *

+ * 用户等级记录表 服务类 + *

+ * + * @author hupeng + * @since 2019-12-06 + */ +public interface YxUserLevelService extends BaseService { + + void setUserLevel(int uid,int levelId); + + void setLevelComplete(int uid); + + UserLevelInfoDTO getUserLevelInfo(int id); + + int getUserLevel(int uid,int grade); + + /** + * 根据ID获取查询对象 + * @param id + * @return + */ + YxUserLevelQueryVo getYxUserLevelById(Serializable id) throws Exception; + + /** + * 获取分页对象 + * @param yxUserLevelQueryParam + * @return + */ + Paging getYxUserLevelPageList(YxUserLevelQueryParam yxUserLevelQueryParam) throws Exception; + +} diff --git a/yshop-api/src/main/java/co/yixiang/modules/user/service/YxUserService.java b/yshop-api/src/main/java/co/yixiang/modules/user/service/YxUserService.java index b29c3c30..aaa01101 100644 --- a/yshop-api/src/main/java/co/yixiang/modules/user/service/YxUserService.java +++ b/yshop-api/src/main/java/co/yixiang/modules/user/service/YxUserService.java @@ -23,6 +23,8 @@ import java.util.List; */ public interface YxUserService extends BaseService { + double setLevelPrice(double price, int uid); + void incMoney(int uid,double price); void incIntegral(int uid,double integral); diff --git a/yshop-api/src/main/java/co/yixiang/modules/user/service/YxUserSignService.java b/yshop-api/src/main/java/co/yixiang/modules/user/service/YxUserSignService.java new file mode 100644 index 00000000..ce3a6ad2 --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/user/service/YxUserSignService.java @@ -0,0 +1,47 @@ +package co.yixiang.modules.user.service; + +import co.yixiang.modules.user.entity.YxUserSign; +import co.yixiang.common.service.BaseService; +import co.yixiang.modules.user.web.dto.SignDTO; +import co.yixiang.modules.user.web.param.YxUserSignQueryParam; +import co.yixiang.modules.user.web.vo.YxUserSignQueryVo; +import co.yixiang.common.web.vo.Paging; + +import java.io.Serializable; +import java.util.List; + +/** + *

+ * 签到记录表 服务类 + *

+ * + * @author hupeng + * @since 2019-12-05 + */ +public interface YxUserSignService extends BaseService { + + int sign(int uid); + + List getSignList(int uid,int page,int limit); + + boolean getYesterDayIsSign(int uid); + + boolean getToDayIsSign(int uid); + + int getSignSumDay(int uid); + + /** + * 根据ID获取查询对象 + * @param id + * @return + */ + YxUserSignQueryVo getYxUserSignById(Serializable id) throws Exception; + + /** + * 获取分页对象 + * @param yxUserSignQueryParam + * @return + */ + Paging getYxUserSignPageList(YxUserSignQueryParam yxUserSignQueryParam) throws Exception; + +} diff --git a/yshop-api/src/main/java/co/yixiang/modules/user/service/YxUserTaskFinishService.java b/yshop-api/src/main/java/co/yixiang/modules/user/service/YxUserTaskFinishService.java new file mode 100644 index 00000000..3aa715d5 --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/user/service/YxUserTaskFinishService.java @@ -0,0 +1,37 @@ +package co.yixiang.modules.user.service; + +import co.yixiang.modules.user.entity.YxUserTaskFinish; +import co.yixiang.common.service.BaseService; +import co.yixiang.modules.user.web.param.YxUserTaskFinishQueryParam; +import co.yixiang.modules.user.web.vo.YxUserTaskFinishQueryVo; +import co.yixiang.common.web.vo.Paging; + +import java.io.Serializable; + +/** + *

+ * 用户任务完成记录表 服务类 + *

+ * + * @author hupeng + * @since 2019-12-07 + */ +public interface YxUserTaskFinishService extends BaseService { + + void setFinish(int uid,int taskId); + + /** + * 根据ID获取查询对象 + * @param id + * @return + */ + YxUserTaskFinishQueryVo getYxUserTaskFinishById(Serializable id) throws Exception; + + /** + * 获取分页对象 + * @param yxUserTaskFinishQueryParam + * @return + */ + Paging getYxUserTaskFinishPageList(YxUserTaskFinishQueryParam yxUserTaskFinishQueryParam) throws Exception; + +} diff --git a/yshop-api/src/main/java/co/yixiang/modules/user/service/impl/YxSystemUserLevelServiceImpl.java b/yshop-api/src/main/java/co/yixiang/modules/user/service/impl/YxSystemUserLevelServiceImpl.java new file mode 100644 index 00000000..0e6304a5 --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/user/service/impl/YxSystemUserLevelServiceImpl.java @@ -0,0 +1,156 @@ +package co.yixiang.modules.user.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import co.yixiang.modules.user.entity.YxSystemUserLevel; +import co.yixiang.modules.user.mapper.YxSystemUserLevelMapper; +import co.yixiang.modules.user.mapping.SystemUserLevelMap; +import co.yixiang.modules.user.service.YxSystemUserLevelService; +import co.yixiang.modules.user.service.YxSystemUserTaskService; +import co.yixiang.modules.user.service.YxUserLevelService; +import co.yixiang.modules.user.web.dto.TaskDTO; +import co.yixiang.modules.user.web.dto.UserLevelDTO; +import co.yixiang.modules.user.web.dto.UserLevelInfoDTO; +import co.yixiang.modules.user.web.param.YxSystemUserLevelQueryParam; +import co.yixiang.modules.user.web.vo.YxSystemUserLevelQueryVo; +import co.yixiang.common.service.impl.BaseServiceImpl; +import co.yixiang.common.web.vo.Paging; +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-06 + */ +@Slf4j +@Service +@Transactional(rollbackFor = Exception.class) +public class YxSystemUserLevelServiceImpl extends BaseServiceImpl implements YxSystemUserLevelService { + + @Autowired + private YxSystemUserLevelMapper yxSystemUserLevelMapper; + + @Autowired + private YxUserLevelService userLevelService; + + @Autowired + private SystemUserLevelMap systemUserLevelMap; + + @Autowired + private YxSystemUserTaskService systemUserTaskService; + + /** + * 获取当前的下一个会员id + * @param levelId + * @return + */ + @Override + public int getNextLevelId(int levelId) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("is_del",0).eq("is_show",1).orderByAsc("grade"); + List list = yxSystemUserLevelMapper.selectList(wrapper); + int grade = 0; + for (YxSystemUserLevel userLevel : list) { + if(userLevel.getId() == levelId) grade = userLevel.getGrade(); + } + + QueryWrapper wrapperT = new QueryWrapper<>(); + wrapperT.eq("is_del",0).eq("is_show",1).orderByAsc("grade") + .gt("grade",grade).last("limit 1"); + YxSystemUserLevel userLevel = yxSystemUserLevelMapper.selectOne(wrapperT); + if(ObjectUtil.isNull(userLevel)) return 0; + return userLevel.getId(); + } + + @Override + public boolean getClear(int levelId) { + List systemUserLevelQueryVos = getLevelListAndGrade( + levelId,false); + for (YxSystemUserLevelQueryVo userLevelQueryVo : systemUserLevelQueryVos) { + if(userLevelQueryVo.getId() == levelId) return userLevelQueryVo.getIsClear(); + } + return false; + } + + /** + * 获取会员等级列表 + * @param levelId + * @param isTask + * @return + */ + @Override + public List getLevelListAndGrade(Integer levelId, boolean isTask) { + int grade = 0; + + // QueryWrapper wrapper = new QueryWrapper<>(); + // wrapper.eq("is_del",0).eq("is_show",1).orderByAsc("grade").last("LIMIT 1"); + +// if(levelId == 0){ +// //levelId = yxSystemUserLevelMapper.selectOne(wrapper).getId(); +// }else{ +// levelId = 0; +// } + + QueryWrapper wrapperT = new QueryWrapper<>(); + wrapperT.eq("is_del",0).eq("is_show",1).orderByAsc("grade"); + List list = yxSystemUserLevelMapper.selectList(wrapperT); + List newList = systemUserLevelMap.toDto(list); + for (YxSystemUserLevelQueryVo userLevelQueryVo : newList) { + if(userLevelQueryVo.getId() == levelId) grade = userLevelQueryVo.getGrade(); + + if(grade < userLevelQueryVo.getGrade()){ + userLevelQueryVo.setIsClear(true); + }else{ + userLevelQueryVo.setIsClear(false);//开启会员解锁 + } + } + return newList; + } + + /** + * 获取会员等级列表 + * @return + */ + @Override + public UserLevelDTO getLevelInfo(int uid,boolean isTask) { + int id = userLevelService.getUserLevel(uid,0); //用户当前等级id + UserLevelInfoDTO userLevelInfoDTO = null; + if(id > 0) userLevelInfoDTO = userLevelService.getUserLevelInfo(id); + int levelId = 0; + if(ObjectUtil.isNotNull(userLevelInfoDTO)) levelId = userLevelInfoDTO.getId(); + List list = getLevelListAndGrade(levelId,false); + TaskDTO taskDTO = systemUserTaskService.getTaskList(list.get(0).getId(),uid,null); + + UserLevelDTO userLevelDTO = new UserLevelDTO(); + userLevelDTO.setList(list); + userLevelDTO.setTask(taskDTO); + + return userLevelDTO; + } + + @Override + public YxSystemUserLevelQueryVo getYxSystemUserLevelById(Serializable id){ + return yxSystemUserLevelMapper.getYxSystemUserLevelById(id); + } + + @Override + public Paging getYxSystemUserLevelPageList(YxSystemUserLevelQueryParam yxSystemUserLevelQueryParam) throws Exception{ + Page page = setPageParam(yxSystemUserLevelQueryParam,OrderItem.desc("create_time")); + IPage iPage = yxSystemUserLevelMapper.getYxSystemUserLevelPageList(page,yxSystemUserLevelQueryParam); + return new Paging(iPage); + } + +} diff --git a/yshop-api/src/main/java/co/yixiang/modules/user/service/impl/YxSystemUserTaskServiceImpl.java b/yshop-api/src/main/java/co/yixiang/modules/user/service/impl/YxSystemUserTaskServiceImpl.java new file mode 100644 index 00000000..4832e9c5 --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/user/service/impl/YxSystemUserTaskServiceImpl.java @@ -0,0 +1,185 @@ +package co.yixiang.modules.user.service.impl; + +import cn.hutool.core.util.NumberUtil; +import co.yixiang.modules.order.mapper.YxStoreOrderMapper; +import co.yixiang.modules.user.entity.YxSystemUserTask; +import co.yixiang.modules.user.entity.YxUserTaskFinish; +import co.yixiang.modules.user.mapper.YxSystemUserTaskMapper; +import co.yixiang.modules.user.mapper.YxUserBillMapper; +import co.yixiang.modules.user.mapper.YxUserTaskFinishMapper; +import co.yixiang.modules.user.mapping.SystemUserTaskMap; +import co.yixiang.modules.user.service.YxSystemUserLevelService; +import co.yixiang.modules.user.service.YxSystemUserTaskService; +import co.yixiang.modules.user.service.YxUserBillService; +import co.yixiang.modules.user.service.YxUserTaskFinishService; +import co.yixiang.modules.user.web.dto.TaskDTO; +import co.yixiang.modules.user.web.dto.UserLevelInfoDTO; +import co.yixiang.modules.user.web.param.YxSystemUserTaskQueryParam; +import co.yixiang.modules.user.web.vo.YxSystemUserTaskQueryVo; +import co.yixiang.common.service.impl.BaseServiceImpl; +import co.yixiang.common.web.vo.Paging; +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.text.MessageFormat; +import java.util.List; +import java.util.stream.Collectors; + + +/** + *

+ * 等级任务设置 服务实现类 + *

+ * + * @author hupeng + * @since 2019-12-06 + */ +@Slf4j +@Service +@Transactional(rollbackFor = Exception.class) +public class YxSystemUserTaskServiceImpl extends BaseServiceImpl implements YxSystemUserTaskService { + + @Autowired + private YxSystemUserTaskMapper yxSystemUserTaskMapper; + + @Autowired + private SystemUserTaskMap systemUserTaskMap; + + @Autowired + private YxSystemUserLevelService systemUserLevelService; + + @Autowired + private YxUserTaskFinishMapper yxUserTaskFinishMapper; + + @Autowired + private YxUserBillMapper userBillMapper; + + @Autowired + private YxStoreOrderMapper storeOrderMapper; + + @Autowired + private YxUserTaskFinishService userTaskFinishService; + + @Autowired + private YxUserBillService userBillService; + + /** + * 设置任务内容完成情况 + * @param task + * @return + */ + @Override + public List tidyTask(List task,int uid) { + QueryWrapper wrapper = new QueryWrapper<>(); + for (YxSystemUserTaskQueryVo taskQueryVo : task) { + wrapper.in("task_id",taskQueryVo.getId()).eq("uid",uid); + int count = yxUserTaskFinishMapper.selectCount(wrapper); + if(count > 0){ + taskQueryVo.setNewNumber(taskQueryVo.getNumber()); + taskQueryVo.setSpeed(100); + taskQueryVo.setFinish(1); + taskQueryVo.setTaskTypeTitle(""); + }else{ + double sumNumber = 0d; + String title = ""; + switch (taskQueryVo.getTaskType()){ + case "SatisfactionIntegral": + sumNumber = userBillMapper.sumIntegral(uid); + title = "还需要{0}经验"; + break; + case "ConsumptionAmount": + sumNumber = storeOrderMapper.sumPrice(uid); + title = "还需消费{0}元"; + break; + case "CumulativeAttendance": + sumNumber = userBillService.cumulativeAttendance(uid); + title = "还需签到{0}天"; + break; + } + + //System.out.println("sumNumber:"+sumNumber); + //System.out.println("sumNumber2:"+taskQueryVo.getNumber()); + if(sumNumber >= taskQueryVo.getNumber()){ + userTaskFinishService.setFinish(uid,taskQueryVo.getId()); + taskQueryVo.setFinish(1); + taskQueryVo.setSpeed(100); + taskQueryVo.setTaskTypeTitle(""); + taskQueryVo.setNewNumber(taskQueryVo.getNumber()); + }else{ + double numdata = NumberUtil.sub(taskQueryVo.getNumber().doubleValue(),sumNumber); + taskQueryVo.setTaskTypeTitle(MessageFormat.format(title,numdata)); + double speed = NumberUtil.div(sumNumber,taskQueryVo.getNumber().doubleValue()); + taskQueryVo.setSpeed(Double.valueOf(NumberUtil.mul(speed,100)).intValue()); + taskQueryVo.setFinish(0); + taskQueryVo.setNewNumber(Double.valueOf(sumNumber).intValue()); + } + } + } + + return task; + } + + /** + * 后去已经完成的任务数量 + * @param levelId + * @param uid + * @return + */ + @Override + public int getTaskComplete(int levelId, int uid) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("level_id",levelId).eq("is_show",1); + List list = yxSystemUserTaskMapper.selectList(wrapper); + List taskIds = list.stream().map(YxSystemUserTask::getId) + .collect(Collectors.toList()); + + QueryWrapper wrapperT = new QueryWrapper<>(); + wrapperT.in("task_id",taskIds).eq("uid",uid); + int count = yxUserTaskFinishMapper.selectCount(wrapperT); + //System.out.println("count:"+count); + return count; + } + + /** + * 获取等级会员任务列表 + * @param levelId + * @param uid + * @param level + * @return + */ + @Override + public TaskDTO getTaskList(int levelId, int uid, UserLevelInfoDTO level) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("level_id",levelId).eq("is_show",1) + .orderByDesc("sort"); + List list = systemUserTaskMap.toDto(yxSystemUserTaskMapper + .selectList(wrapper)); + + TaskDTO taskDTO = new TaskDTO(); + taskDTO.setList(list); + taskDTO.setReachCount(getTaskComplete(levelId,uid)); + taskDTO.setTask(tidyTask(list,uid)); + + return taskDTO; + } + + @Override + public YxSystemUserTaskQueryVo getYxSystemUserTaskById(Serializable id) throws Exception{ + return yxSystemUserTaskMapper.getYxSystemUserTaskById(id); + } + + @Override + public Paging getYxSystemUserTaskPageList(YxSystemUserTaskQueryParam yxSystemUserTaskQueryParam) throws Exception{ + Page page = setPageParam(yxSystemUserTaskQueryParam,OrderItem.desc("create_time")); + IPage iPage = yxSystemUserTaskMapper.getYxSystemUserTaskPageList(page,yxSystemUserTaskQueryParam); + return new Paging(iPage); + } + +} diff --git a/yshop-api/src/main/java/co/yixiang/modules/user/service/impl/YxUserBillServiceImpl.java b/yshop-api/src/main/java/co/yixiang/modules/user/service/impl/YxUserBillServiceImpl.java index 6b18d3eb..4a5c3566 100644 --- a/yshop-api/src/main/java/co/yixiang/modules/user/service/impl/YxUserBillServiceImpl.java +++ b/yshop-api/src/main/java/co/yixiang/modules/user/service/impl/YxUserBillServiceImpl.java @@ -46,6 +46,20 @@ public class YxUserBillServiceImpl extends BaseServiceImpl wrapper = new QueryWrapper<>(); + wrapper.eq("uid",uid).eq("category","integral") + .eq("type","sign").eq("pm",1); + return yxUserBillMapper.selectCount(wrapper); + } + @Override public Map spreadOrder(int uid, int page, int limit) { QueryWrapper wrapper = new QueryWrapper<>(); @@ -83,25 +97,33 @@ public class YxUserBillServiceImpl extends BaseServiceImpl getUserBillList(int page, int limit, int uid, int type) { QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.eq("category","now_money").eq("uid",uid). - orderByDesc("add_time").groupBy("time"); + wrapper.eq("uid",uid).orderByDesc("add_time").groupBy("time"); switch (type){ case 0: + wrapper.eq("category","now_money"); String str = "recharge,brokerage,pay_product,system_add,pay_product_refund,system_sub"; wrapper.in("type",str.split(",")); break; case 1: + wrapper.eq("category","now_money"); wrapper.eq("type","pay_product"); break; case 2: + wrapper.eq("category","now_money"); wrapper.eq("type","recharge"); break; case 3: + wrapper.eq("category","now_money"); wrapper.eq("type","brokerage"); break; case 4: + wrapper.eq("category","now_money"); wrapper.eq("type","extract"); break; + case 5: + wrapper.eq("category","integral"); + wrapper.eq("type","sign"); + break; } Page pageModel = new Page<>(page, limit); List billDTOList = yxUserBillMapper.getBillList(wrapper,pageModel); diff --git a/yshop-api/src/main/java/co/yixiang/modules/user/service/impl/YxUserLevelServiceImpl.java b/yshop-api/src/main/java/co/yixiang/modules/user/service/impl/YxUserLevelServiceImpl.java new file mode 100644 index 00000000..62151764 --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/user/service/impl/YxUserLevelServiceImpl.java @@ -0,0 +1,180 @@ +package co.yixiang.modules.user.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import co.yixiang.exception.ErrorRequestException; +import co.yixiang.modules.user.entity.YxSystemUserTask; +import co.yixiang.modules.user.entity.YxUser; +import co.yixiang.modules.user.entity.YxUserLevel; +import co.yixiang.modules.user.mapper.YxSystemUserTaskMapper; +import co.yixiang.modules.user.mapper.YxUserLevelMapper; +import co.yixiang.modules.user.service.YxSystemUserLevelService; +import co.yixiang.modules.user.service.YxSystemUserTaskService; +import co.yixiang.modules.user.service.YxUserLevelService; +import co.yixiang.modules.user.service.YxUserService; +import co.yixiang.modules.user.web.dto.UserLevelInfoDTO; +import co.yixiang.modules.user.web.param.YxUserLevelQueryParam; +import co.yixiang.modules.user.web.vo.YxSystemUserLevelQueryVo; +import co.yixiang.modules.user.web.vo.YxUserLevelQueryVo; +import co.yixiang.common.service.impl.BaseServiceImpl; +import co.yixiang.common.web.vo.Paging; +import co.yixiang.modules.user.web.vo.YxUserQueryVo; +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-06 + */ +@Slf4j +@Service +@Transactional(rollbackFor = Exception.class) +public class YxUserLevelServiceImpl extends BaseServiceImpl implements YxUserLevelService { + + @Autowired + private YxUserLevelMapper yxUserLevelMapper; + + @Autowired + private YxUserService userService; + + @Autowired + private YxSystemUserLevelService systemUserLevelService; + + @Autowired + private YxSystemUserTaskMapper yxSystemUserTaskMapper; + + @Autowired + private YxSystemUserTaskService systemUserTaskService; + + /** + * 设置会员等级 + * @param uid + * @param levelId + */ + @Override + public void setUserLevel(int uid, int levelId){ + YxSystemUserLevelQueryVo systemUserLevelQueryVo = systemUserLevelService + .getYxSystemUserLevelById(levelId); + if(ObjectUtil.isNull(systemUserLevelQueryVo)) return; + + int validTime = systemUserLevelQueryVo.getValidDate() * 86400; + + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("is_del",0).eq("status",1).eq("uid",uid) + .eq("level_id",levelId).last("limit 1"); + YxUserLevel userLevel = yxUserLevelMapper.selectOne(wrapper); + if(ObjectUtil.isNotNull(userLevel)){ + //todo + }else{ + YxUserLevel yxUserLevel = new YxUserLevel(); + yxUserLevel.setIsForever(systemUserLevelQueryVo.getIsForever()); + yxUserLevel.setStatus(1); + yxUserLevel.setIsDel(0); + yxUserLevel.setGrade(systemUserLevelQueryVo.getGrade()); + yxUserLevel.setUid(uid); + yxUserLevel.setAddTime(OrderUtil.getSecondTimestampTwo()); + yxUserLevel.setLevelId(levelId); + yxUserLevel.setDiscount(systemUserLevelQueryVo.getDiscount().intValue()); + + if(systemUserLevelQueryVo.getIsForever() == 1){ + yxUserLevel.setValidTime(0); + }else{ + yxUserLevel.setValidTime(validTime+OrderUtil.getSecondTimestampTwo()); + } + + yxUserLevel.setMark("恭喜你成为了"+systemUserLevelQueryVo.getName()); + yxUserLevelMapper.insert(yxUserLevel); + + YxUser yxUser = new YxUser(); + yxUser.setLevel(levelId); + yxUser.setUid(uid); + userService.updateById(yxUser); + } + + } + + /** + * 检查是否能成为会员 + * @param uid + */ + @Override + public void setLevelComplete(int uid) { + YxUserQueryVo userQueryVo = userService.getYxUserById(uid); + if(ObjectUtil.isNull(userQueryVo)) return; + + int levelId = getUserLevel(uid,9); + + int nextLevelId = systemUserLevelService.getNextLevelId(levelId); + if(nextLevelId == 0) return; + + //QueryWrapper wrapper = new QueryWrapper<>(); + //wrapper.eq("level_id",nextLevelId).eq("is_show",1); + // List taskList = yxSystemUserTaskMapper.selectList(wrapper); + + int finishCount = systemUserTaskService.getTaskComplete(nextLevelId,uid); + if(finishCount == 3){ + setUserLevel(uid,nextLevelId); + } + + + } + + @Override + public UserLevelInfoDTO getUserLevelInfo(int id) { + return yxUserLevelMapper.getUserLevelInfo(id); + } + + /** + * 获取当前用户会员等级返回当前用户等级id + * @param uid + * @param grade + * @return + */ + @Override + public int getUserLevel(int uid, int grade) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("is_del",0).eq("status",1) + .eq("uid",uid).orderByDesc("grade"); + if(grade > 0) wrapper.lt("grade",grade); + YxUserLevel userLevel = yxUserLevelMapper.selectOne(wrapper); + if(ObjectUtil.isNull(userLevel)) return 0; + if(userLevel.getIsForever() == 1) return userLevel.getId(); + int nowTime = OrderUtil.getSecondTimestampTwo(); + if(nowTime > userLevel.getValidTime()){ + if(userLevel.getStatus() == 1){ + userLevel.setStatus(0); + yxUserLevelMapper.updateById(userLevel); + } + + return getUserLevel(uid,userLevel.getGrade()); + } + return userLevel.getId(); + } + + @Override + public YxUserLevelQueryVo getYxUserLevelById(Serializable id) throws Exception{ + return yxUserLevelMapper.getYxUserLevelById(id); + } + + @Override + public Paging getYxUserLevelPageList(YxUserLevelQueryParam yxUserLevelQueryParam) throws Exception{ + Page page = setPageParam(yxUserLevelQueryParam,OrderItem.desc("create_time")); + IPage iPage = yxUserLevelMapper.getYxUserLevelPageList(page,yxUserLevelQueryParam); + return new Paging(iPage); + } + +} diff --git a/yshop-api/src/main/java/co/yixiang/modules/user/service/impl/YxUserServiceImpl.java b/yshop-api/src/main/java/co/yixiang/modules/user/service/impl/YxUserServiceImpl.java index 27b832a3..eea55c13 100644 --- a/yshop-api/src/main/java/co/yixiang/modules/user/service/impl/YxUserServiceImpl.java +++ b/yshop-api/src/main/java/co/yixiang/modules/user/service/impl/YxUserServiceImpl.java @@ -9,8 +9,11 @@ import co.yixiang.modules.order.web.vo.YxStoreOrderQueryVo; import co.yixiang.modules.shop.service.YxSystemConfigService; import co.yixiang.modules.user.entity.YxUser; import co.yixiang.modules.user.entity.YxUserBill; +import co.yixiang.modules.user.entity.YxUserLevel; import co.yixiang.modules.user.mapper.YxUserMapper; +import co.yixiang.modules.user.service.YxSystemUserLevelService; import co.yixiang.modules.user.service.YxUserBillService; +import co.yixiang.modules.user.service.YxUserLevelService; import co.yixiang.modules.user.service.YxUserService; import co.yixiang.modules.user.web.dto.PromUserDTO; import co.yixiang.modules.user.web.dto.UserRankDTO; @@ -61,6 +64,27 @@ public class YxUserServiceImpl extends BaseServiceImpl imp @Autowired private YxUserBillService billService; + @Autowired + private YxUserLevelService userLevelService; + + /** + * 返回会员价 + * @param price + * @param uid + * @return + */ + @Override + public double setLevelPrice(double price, int uid) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("is_del",0).eq("status",1) + .eq("uid",uid).orderByDesc("grade").last("limit 1"); + YxUserLevel userLevel = userLevelService.getOne(wrapper); + int discount = 100; + if(ObjectUtil.isNotNull(userLevel)) discount = userLevel.getDiscount(); + return NumberUtil.mul(NumberUtil.div(discount,100),price); + } + + /** * 更新用户余额 @@ -399,6 +423,8 @@ public class YxUserServiceImpl extends BaseServiceImpl imp }else{ userQueryVo.setStatu(0); } + //todo 测试环境设置所有人是管理员,生成环境记得去掉 + userQueryVo.setAdminid(1); return userQueryVo; } diff --git a/yshop-api/src/main/java/co/yixiang/modules/user/service/impl/YxUserSignServiceImpl.java b/yshop-api/src/main/java/co/yixiang/modules/user/service/impl/YxUserSignServiceImpl.java new file mode 100644 index 00000000..68e8d25f --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/user/service/impl/YxUserSignServiceImpl.java @@ -0,0 +1,210 @@ +package co.yixiang.modules.user.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ArrayUtil; +import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.ObjectUtil; +import co.yixiang.exception.ErrorRequestException; +import co.yixiang.modules.shop.service.YxSystemGroupDataService; +import co.yixiang.modules.user.entity.YxUser; +import co.yixiang.modules.user.entity.YxUserBill; +import co.yixiang.modules.user.entity.YxUserSign; +import co.yixiang.modules.user.mapper.YxUserBillMapper; +import co.yixiang.modules.user.mapper.YxUserSignMapper; +import co.yixiang.modules.user.service.YxUserBillService; +import co.yixiang.modules.user.service.YxUserService; +import co.yixiang.modules.user.service.YxUserSignService; +import co.yixiang.modules.user.web.dto.SignDTO; +import co.yixiang.modules.user.web.param.YxUserSignQueryParam; +import co.yixiang.modules.user.web.vo.YxUserQueryVo; +import co.yixiang.modules.user.web.vo.YxUserSignQueryVo; +import co.yixiang.common.service.impl.BaseServiceImpl; +import co.yixiang.common.web.vo.Paging; +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.math.BigDecimal; +import java.util.Date; +import java.util.List; +import java.util.Map; + + +/** + *

+ * 签到记录表 服务实现类 + *

+ * + * @author hupeng + * @since 2019-12-05 + */ +@Slf4j +@Service +@Transactional(rollbackFor = Exception.class) +public class YxUserSignServiceImpl extends BaseServiceImpl implements YxUserSignService { + + @Autowired + private YxUserSignMapper yxUserSignMapper; + + @Autowired + private YxSystemGroupDataService systemGroupDataService; + + @Autowired + private YxUserService yxUserService; + + @Autowired + private YxUserBillService billService; + + @Autowired + private YxUserBillMapper userBillMapper; + + + /** + * 用户签到 + * @param uid + */ + @Override + public int sign(int uid) { + List> list = systemGroupDataService.getDatas("sign_day_num"); + if(ObjectUtil.isNull(list)) throw new ErrorRequestException("请先配置签到天数"); + + YxUserQueryVo userQueryVo = yxUserService.getYxUserById(uid); + int signNumber = 0; //积分 + int userSignNum = userQueryVo.getSignNum(); //签到次数 + if(getYesterDayIsSign(uid)){ + if(userQueryVo.getSignNum() > (list.size() - 1)){ + userSignNum = 0; + } + }else{ + userSignNum = 0; + } + int index = 0; + for (Map map : list) { + if(index == userSignNum){ + signNumber = Integer.valueOf(map.get("sign_num").toString()); + break; + } + index++; + } + + userSignNum += 1; + + YxUserSign userSign = new YxUserSign(); + userSign.setUid(uid); + String title = "签到奖励"; + if(userSignNum == list.size()){ + title = "连续签到奖励"; + } + userSign.setTitle(title); + userSign.setNumber(signNumber); + userSign.setBalance(userQueryVo.getIntegral().intValueExact()); + userSign.setAddTime(OrderUtil.getSecondTimestampTwo()); + yxUserSignMapper.insert(userSign); + + //用户积分增加 + YxUser yxUser = new YxUser(); + yxUser.setIntegral(NumberUtil.add(userQueryVo.getIntegral(),signNumber)); + yxUser.setUid(uid); + yxUser.setSignNum(userSignNum); + yxUserService.updateById(yxUser); + + //插入流水 + YxUserBill userBill = new YxUserBill(); + userBill.setUid(uid); + userBill.setTitle(title); + userBill.setLinkId("0"); + userBill.setCategory("integral"); + userBill.setType("sign"); + userBill.setNumber(BigDecimal.valueOf(signNumber)); + userBill.setBalance(userQueryVo.getIntegral()); + userBill.setMark(""); + userBill.setStatus(1); + userBill.setPm(1); + userBill.setAddTime(OrderUtil.getSecondTimestampTwo()); + billService.save(userBill); + + return signNumber; + } + + /** + * 分页获取用户签到数据 + * @param uid + * @param page + * @param limit + * @return + */ + @Override + public List getSignList(int uid, int page, int limit) { + Page pageModel = new Page<>(page, limit); + return userBillMapper.getSignList(uid,pageModel); + } + + /** + * 获取用户昨天是否签到 + * @param uid + * @return + */ + @Override + public boolean getYesterDayIsSign(int uid) { + int today = OrderUtil.dateToTimestampT(DateUtil.beginOfDay(new Date())); + int yesterday = OrderUtil.dateToTimestampT(DateUtil.beginOfDay(DateUtil. + yesterday())); + + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("uid",uid).lt("add_time",today).ge("add_time",yesterday); + int count = yxUserSignMapper.selectCount(wrapper); + if(count > 0) return true; + return false; + } + + /** + * 获取用户今天是否签到 + * @param uid + * @return + */ + @Override + public boolean getToDayIsSign(int uid) { + int today = OrderUtil.dateToTimestampT(DateUtil.beginOfDay(new Date())); + int yesterday = OrderUtil.dateToTimestampT(DateUtil.beginOfDay(DateUtil. + yesterday())); + + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("uid",uid).ge("add_time",today); + int count = yxUserSignMapper.selectCount(wrapper); + if(count > 0) return true; + return false; + } + + /** + * 获取用户累计签到次数 + * @param uid + * @return + */ + @Override + public int getSignSumDay(int uid) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("uid",uid); + int count = yxUserSignMapper.selectCount(wrapper); + return count; + } + + @Override + public YxUserSignQueryVo getYxUserSignById(Serializable id) throws Exception{ + return yxUserSignMapper.getYxUserSignById(id); + } + + @Override + public Paging getYxUserSignPageList(YxUserSignQueryParam yxUserSignQueryParam) throws Exception{ + Page page = setPageParam(yxUserSignQueryParam,OrderItem.desc("create_time")); + IPage iPage = yxUserSignMapper.getYxUserSignPageList(page,yxUserSignQueryParam); + return new Paging(iPage); + } + +} diff --git a/yshop-api/src/main/java/co/yixiang/modules/user/service/impl/YxUserTaskFinishServiceImpl.java b/yshop-api/src/main/java/co/yixiang/modules/user/service/impl/YxUserTaskFinishServiceImpl.java new file mode 100644 index 00000000..c3a50720 --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/user/service/impl/YxUserTaskFinishServiceImpl.java @@ -0,0 +1,74 @@ +package co.yixiang.modules.user.service.impl; + +import co.yixiang.modules.user.entity.YxUserTaskFinish; +import co.yixiang.modules.user.mapper.YxUserTaskFinishMapper; +import co.yixiang.modules.user.service.YxUserTaskFinishService; +import co.yixiang.modules.user.web.param.YxUserTaskFinishQueryParam; +import co.yixiang.modules.user.web.vo.YxUserTaskFinishQueryVo; +import co.yixiang.common.service.impl.BaseServiceImpl; +import co.yixiang.common.web.vo.Paging; +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; + + +/** + *

+ * 用户任务完成记录表 服务实现类 + *

+ * + * @author hupeng + * @since 2019-12-07 + */ +@Slf4j +@Service +@Transactional(rollbackFor = Exception.class) +public class YxUserTaskFinishServiceImpl extends BaseServiceImpl implements YxUserTaskFinishService { + + @Autowired + private YxUserTaskFinishMapper yxUserTaskFinishMapper; + + + /** + * 设置任务完成 + * @param uid + * @param taskId + */ + @Override + public void setFinish(int uid, int taskId) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("uid",uid).eq("task_id",taskId); + int count = yxUserTaskFinishMapper.selectCount(wrapper); + if(count == 0){ + YxUserTaskFinish userTaskFinish = new YxUserTaskFinish(); + userTaskFinish.setAddTime(OrderUtil.getSecondTimestampTwo()); + userTaskFinish.setUid(uid); + userTaskFinish.setTaskId(taskId); + userTaskFinish.setStatus(0); + + yxUserTaskFinishMapper.insert(userTaskFinish); + } + + } + + @Override + public YxUserTaskFinishQueryVo getYxUserTaskFinishById(Serializable id) throws Exception{ + return yxUserTaskFinishMapper.getYxUserTaskFinishById(id); + } + + @Override + public Paging getYxUserTaskFinishPageList(YxUserTaskFinishQueryParam yxUserTaskFinishQueryParam) throws Exception{ + Page page = setPageParam(yxUserTaskFinishQueryParam,OrderItem.desc("create_time")); + IPage iPage = yxUserTaskFinishMapper.getYxUserTaskFinishPageList(page,yxUserTaskFinishQueryParam); + return new Paging(iPage); + } + +} diff --git a/yshop-api/src/main/java/co/yixiang/modules/user/web/controller/UserController.java b/yshop-api/src/main/java/co/yixiang/modules/user/web/controller/UserController.java index e3f28626..84c07e6c 100644 --- a/yshop-api/src/main/java/co/yixiang/modules/user/web/controller/UserController.java +++ b/yshop-api/src/main/java/co/yixiang/modules/user/web/controller/UserController.java @@ -8,14 +8,18 @@ import co.yixiang.modules.order.service.YxStoreOrderService; import co.yixiang.modules.shop.service.YxStoreProductRelationService; import co.yixiang.modules.shop.service.YxSystemGroupDataService; import co.yixiang.modules.user.entity.YxUser; -import co.yixiang.modules.user.service.YxUserService; +import co.yixiang.modules.user.service.*; import co.yixiang.modules.user.web.param.YxUserQueryParam; +import co.yixiang.modules.user.web.vo.YxSystemUserLevelQueryVo; import co.yixiang.modules.user.web.vo.YxUserQueryVo; import co.yixiang.utils.SecurityUtils; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.omg.CORBA.PRIVATE_MEMBER; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -41,6 +45,9 @@ public class UserController extends BaseController { private final YxSystemGroupDataService systemGroupDataService; private final YxStoreOrderService orderService; private final YxStoreProductRelationService relationService; + private final YxUserSignService userSignService; + private final YxUserBillService userBillService; + private final YxSystemUserLevelService systemUserLevelService; @@ -74,7 +81,18 @@ public class UserController extends BaseController { @ApiOperation(value = "个人中心",notes = "个人中心") public ApiResult user(){ int uid = SecurityUtils.getUserId().intValue(); - return ApiResult.ok(yxUserService.getNewYxUserById(uid)); + YxUserQueryVo yxUserQueryVo = yxUserService.getNewYxUserById(uid); + + + if(yxUserQueryVo.getLevel() > 0) { + yxUserQueryVo.setVip(true); + YxSystemUserLevelQueryVo systemUserLevelQueryVo = systemUserLevelService + .getYxSystemUserLevelById(yxUserQueryVo.getLevel()); + yxUserQueryVo.setVipIcon(systemUserLevelQueryVo.getIcon()); + yxUserQueryVo.setVipId(yxUserQueryVo.getLevel()); + yxUserQueryVo.setVipName(systemUserLevelQueryVo.getName()); + } + return ApiResult.ok(yxUserQueryVo); } /** @@ -126,13 +144,68 @@ public class UserController extends BaseController { } /** - * 获取活动状态 + * 签到用户信息 */ @PostMapping("/sign/user") - @ApiOperation(value = "获取活动状态",notes = "获取活动状态") - public ApiResult sign(){ + @ApiOperation(value = "签到用户信息",notes = "签到用户信息") + public ApiResult sign(@RequestBody String jsonStr){ + JSONObject jsonObject = JSON.parseObject(jsonStr); int uid = SecurityUtils.getUserId().intValue(); - return ApiResult.ok(yxUserService.getYxUserById(uid)); + YxUserQueryVo userQueryVo = yxUserService.getYxUserById(uid); + int sumSignDay = userSignService.getSignSumDay(uid); + boolean isDaySign = userSignService.getToDayIsSign(uid); + boolean isYesterDaySign = userSignService.getYesterDayIsSign(uid); + userQueryVo.setSumSignDay(sumSignDay); + userQueryVo.setIsDaySign(isDaySign); + userQueryVo.setIsYesterDaySign(isYesterDaySign); + if(!isDaySign && !isYesterDaySign) userQueryVo.setSignNum(0); + return ApiResult.ok(userQueryVo); + } + + /** + * 签到配置 + */ + @GetMapping("/sign/config") + @ApiOperation(value = "签到配置",notes = "签到配置") + public ApiResult signConfig(){ + return ApiResult.ok(systemGroupDataService.getDatas("sign_day_num")); + } + + /** + * 签到列表 + */ + @GetMapping("/sign/list") + @ApiOperation(value = "签到列表",notes = "签到列表") + public ApiResult signList(@RequestParam(value = "page",defaultValue = "1") int page, + @RequestParam(value = "limit",defaultValue = "10") int limit){ + int uid = SecurityUtils.getUserId().intValue(); + return ApiResult.ok(userSignService.getSignList(uid,page,limit)); + } + + /** + * 签到列表(年月) + */ + @GetMapping("/sign/month") + @ApiOperation(value = "签到列表(年月)",notes = "签到列表(年月)") + public ApiResult signMonthList(@RequestParam(value = "page",defaultValue = "1") int page, + @RequestParam(value = "limit",defaultValue = "10") int limit){ + int uid = SecurityUtils.getUserId().intValue(); + return ApiResult.ok(userBillService.getUserBillList(page,limit,uid,5)); + } + + /** + * 开始签到 + */ + @PostMapping("/sign/integral") + @ApiOperation(value = "开始签到",notes = "开始签到") + public ApiResult signIntegral(){ + int uid = SecurityUtils.getUserId().intValue(); + boolean isDaySign = userSignService.getToDayIsSign(uid); + if(isDaySign) return ApiResult.fail("已签到"); + int integral = userSignService.sign(uid); + Map map = new LinkedHashMap<>(); + map.put("integral",integral); + return ApiResult.ok(map,"签到获得" + integral + "积分"); } diff --git a/yshop-api/src/main/java/co/yixiang/modules/user/web/controller/UserLevelController.java b/yshop-api/src/main/java/co/yixiang/modules/user/web/controller/UserLevelController.java new file mode 100644 index 00000000..23d9e3fe --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/user/web/controller/UserLevelController.java @@ -0,0 +1,76 @@ +package co.yixiang.modules.user.web.controller; + +import co.yixiang.common.api.ApiResult; +import co.yixiang.common.web.controller.BaseController; +import co.yixiang.common.web.param.IdParam; +import co.yixiang.common.web.vo.Paging; +import co.yixiang.modules.user.entity.YxUserLevel; +import co.yixiang.modules.user.service.YxSystemUserLevelService; +import co.yixiang.modules.user.service.YxSystemUserTaskService; +import co.yixiang.modules.user.service.YxUserLevelService; +import co.yixiang.modules.user.web.param.YxUserLevelQueryParam; +import co.yixiang.modules.user.web.vo.YxUserLevelQueryVo; +import co.yixiang.utils.SecurityUtils; +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 javax.validation.Valid; + +/** + *

+ * 用户等级 前端控制器 + *

+ * + * @author hupeng + * @since 2019-12-06 + */ +@Slf4j +@RestController +@RequiredArgsConstructor(onConstructor = @__(@Autowired)) +@Api(value = "用户等级", tags = "用户等级", description = "用户等级") +public class UserLevelController extends BaseController { + + + private final YxUserLevelService userLevelService; + private final YxSystemUserLevelService systemUserLevelService; + private final YxSystemUserTaskService systemUserTaskService; + + /** + * 会员等级列表 + */ + @GetMapping("/user/level/grade") + @ApiOperation(value = "会员等级列表",notes = "会员等级列表") + public ApiResult getLevelInfo(){ + int uid = SecurityUtils.getUserId().intValue(); + return ApiResult.ok(systemUserLevelService.getLevelInfo(uid,true)); + } + + /** + * 获取等级任务 + */ + @GetMapping("/user/level/task/{id}") + @ApiOperation(value = "获取等级任务",notes = "获取等级任务") + public ApiResult getTask(@PathVariable Integer id){ + int uid = SecurityUtils.getUserId().intValue(); + return ApiResult.ok(systemUserTaskService.getTaskList(id,uid,null)); + } + + /** + * 检测用户是否可以成为会员 + */ + @GetMapping("/user/level/detection") + @ApiOperation(value = "检测用户是否可以成为会员",notes = "检测用户是否可以成为会员") + public ApiResult detection(){ + int uid = SecurityUtils.getUserId().intValue(); + userLevelService.setLevelComplete(uid); + return ApiResult.ok("ok"); + } + + + +} + diff --git a/yshop-api/src/main/java/co/yixiang/modules/user/web/controller/YxUserExtractController.java b/yshop-api/src/main/java/co/yixiang/modules/user/web/controller/YxUserExtractController.java deleted file mode 100644 index 6e8d1c2c..00000000 --- a/yshop-api/src/main/java/co/yixiang/modules/user/web/controller/YxUserExtractController.java +++ /dev/null @@ -1,91 +0,0 @@ -package co.yixiang.modules.user.web.controller; - -import co.yixiang.modules.user.entity.YxUserExtract; -import co.yixiang.modules.user.service.YxUserExtractService; -import co.yixiang.modules.user.web.param.YxUserExtractQueryParam; -import co.yixiang.modules.user.web.vo.YxUserExtractQueryVo; -import co.yixiang.common.web.controller.BaseController; -import co.yixiang.common.api.ApiResult; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import javax.validation.Valid; - -import co.yixiang.common.web.vo.Paging; -import co.yixiang.common.web.param.IdParam; - -/** - *

- * 用户提现表 前端控制器 - *

- * - * @author hupeng - * @since 2019-11-11 - */ -@Slf4j -@RestController -@RequestMapping("/yxUserExtract") -@Api("用户提现表 API") -public class YxUserExtractController extends BaseController { - - @Autowired - private YxUserExtractService yxUserExtractService; - - /** - * 添加用户提现表 - */ - @PostMapping("/add") - @ApiOperation(value = "添加YxUserExtract对象",notes = "添加用户提现表",response = ApiResult.class) - public ApiResult addYxUserExtract(@Valid @RequestBody YxUserExtract yxUserExtract) throws Exception{ - boolean flag = yxUserExtractService.save(yxUserExtract); - return ApiResult.result(flag); - } - - /** - * 修改用户提现表 - */ - @PostMapping("/update") - @ApiOperation(value = "修改YxUserExtract对象",notes = "修改用户提现表",response = ApiResult.class) - public ApiResult updateYxUserExtract(@Valid @RequestBody YxUserExtract yxUserExtract) throws Exception{ - boolean flag = yxUserExtractService.updateById(yxUserExtract); - return ApiResult.result(flag); - } - - /** - * 删除用户提现表 - */ - @PostMapping("/delete") - @ApiOperation(value = "删除YxUserExtract对象",notes = "删除用户提现表",response = ApiResult.class) - public ApiResult deleteYxUserExtract(@Valid @RequestBody IdParam idParam) throws Exception{ - boolean flag = yxUserExtractService.removeById(idParam.getId()); - return ApiResult.result(flag); - } - - /** - * 获取用户提现表 - */ - @PostMapping("/info") - @ApiOperation(value = "获取YxUserExtract对象详情",notes = "查看用户提现表",response = YxUserExtractQueryVo.class) - public ApiResult getYxUserExtract(@Valid @RequestBody IdParam idParam) throws Exception{ - YxUserExtractQueryVo yxUserExtractQueryVo = yxUserExtractService.getYxUserExtractById(idParam.getId()); - return ApiResult.ok(yxUserExtractQueryVo); - } - - /** - * 用户提现表分页列表 - */ - @PostMapping("/getPageList") - @ApiOperation(value = "获取YxUserExtract分页列表",notes = "用户提现表分页列表",response = YxUserExtractQueryVo.class) - public ApiResult> getYxUserExtractPageList(@Valid @RequestBody(required = false) YxUserExtractQueryParam yxUserExtractQueryParam) throws Exception{ - Paging paging = yxUserExtractService.getYxUserExtractPageList(yxUserExtractQueryParam); - return ApiResult.ok(paging); - } - -} - diff --git a/yshop-api/src/main/java/co/yixiang/modules/user/web/dto/SignDTO.java b/yshop-api/src/main/java/co/yixiang/modules/user/web/dto/SignDTO.java new file mode 100644 index 00000000..7fbb5f61 --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/user/web/dto/SignDTO.java @@ -0,0 +1,19 @@ +package co.yixiang.modules.user.web.dto; + + +import lombok.Data; + +import java.io.Serializable; + + +/** + * @ClassName SignDTO + * @Author hupeng <610796224@qq.com> + * @Date 2019/12/5 + **/ +@Data +public class SignDTO implements Serializable { + private String addTime; + private String title; + private Integer number; +} diff --git a/yshop-api/src/main/java/co/yixiang/modules/user/web/dto/TaskDTO.java b/yshop-api/src/main/java/co/yixiang/modules/user/web/dto/TaskDTO.java new file mode 100644 index 00000000..3d4f67ee --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/user/web/dto/TaskDTO.java @@ -0,0 +1,19 @@ +package co.yixiang.modules.user.web.dto; + +import co.yixiang.modules.user.web.vo.YxSystemUserTaskQueryVo; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * @ClassName TaskDTO + * @Author hupeng <610796224@qq.com> + * @Date 2019/12/6 + **/ +@Data +public class TaskDTO implements Serializable { + private List list; + private Integer reachCount; + private List task; +} diff --git a/yshop-api/src/main/java/co/yixiang/modules/user/web/dto/TaskFinishDTO.java b/yshop-api/src/main/java/co/yixiang/modules/user/web/dto/TaskFinishDTO.java new file mode 100644 index 00000000..a4951856 --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/user/web/dto/TaskFinishDTO.java @@ -0,0 +1,19 @@ +package co.yixiang.modules.user.web.dto; + + +import lombok.Data; + +import java.io.Serializable; + + +/** + * @ClassName TaskFinishDTO + * @Author hupeng <610796224@qq.com> + * @Date 2019/12/6 + **/ +@Data +public class TaskFinishDTO implements Serializable { + private String addTime; + private String title; + private Integer number; +} diff --git a/yshop-api/src/main/java/co/yixiang/modules/user/web/dto/UserLevelDTO.java b/yshop-api/src/main/java/co/yixiang/modules/user/web/dto/UserLevelDTO.java new file mode 100644 index 00000000..1cee3554 --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/user/web/dto/UserLevelDTO.java @@ -0,0 +1,19 @@ +package co.yixiang.modules.user.web.dto; + +import co.yixiang.modules.user.entity.YxSystemUserLevel; +import co.yixiang.modules.user.web.vo.YxSystemUserLevelQueryVo; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * @ClassName UserLevelDTO + * @Author hupeng <610796224@qq.com> + * @Date 2019/12/6 + **/ +@Data +public class UserLevelDTO implements Serializable { + private List list; + private TaskDTO task; +} diff --git a/yshop-api/src/main/java/co/yixiang/modules/user/web/dto/UserLevelInfoDTO.java b/yshop-api/src/main/java/co/yixiang/modules/user/web/dto/UserLevelInfoDTO.java new file mode 100644 index 00000000..9770e00c --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/user/web/dto/UserLevelInfoDTO.java @@ -0,0 +1,21 @@ +package co.yixiang.modules.user.web.dto; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @ClassName UserLevelInfoDTO + * @Author hupeng <610796224@qq.com> + * @Date 2019/12/7 + **/ +@Data +public class UserLevelInfoDTO implements Serializable { + private Integer id; + private Integer addTime; + private Double discount; + private Integer levelId; + private String name; + private String icon; + private Integer grade; +} diff --git a/yshop-api/src/main/java/co/yixiang/modules/user/web/param/YxSystemUserLevelQueryParam.java b/yshop-api/src/main/java/co/yixiang/modules/user/web/param/YxSystemUserLevelQueryParam.java new file mode 100644 index 00000000..e8b6dc97 --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/user/web/param/YxSystemUserLevelQueryParam.java @@ -0,0 +1,22 @@ +package co.yixiang.modules.user.web.param; + +import io.swagger.annotations.ApiModel; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import co.yixiang.common.web.param.QueryParam; + +/** + *

+ * 设置用户等级表 查询参数对象 + *

+ * + * @author hupeng + * @date 2019-12-06 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@ApiModel(value="YxSystemUserLevelQueryParam对象", description="设置用户等级表查询参数") +public class YxSystemUserLevelQueryParam extends QueryParam { + private static final long serialVersionUID = 1L; +} diff --git a/yshop-api/src/main/java/co/yixiang/modules/user/web/param/YxSystemUserTaskQueryParam.java b/yshop-api/src/main/java/co/yixiang/modules/user/web/param/YxSystemUserTaskQueryParam.java new file mode 100644 index 00000000..1a544030 --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/user/web/param/YxSystemUserTaskQueryParam.java @@ -0,0 +1,22 @@ +package co.yixiang.modules.user.web.param; + +import io.swagger.annotations.ApiModel; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import co.yixiang.common.web.param.QueryParam; + +/** + *

+ * 等级任务设置 查询参数对象 + *

+ * + * @author hupeng + * @date 2019-12-06 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@ApiModel(value="YxSystemUserTaskQueryParam对象", description="等级任务设置查询参数") +public class YxSystemUserTaskQueryParam extends QueryParam { + private static final long serialVersionUID = 1L; +} diff --git a/yshop-api/src/main/java/co/yixiang/modules/user/web/param/YxUserLevelQueryParam.java b/yshop-api/src/main/java/co/yixiang/modules/user/web/param/YxUserLevelQueryParam.java new file mode 100644 index 00000000..ca8e2ad2 --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/user/web/param/YxUserLevelQueryParam.java @@ -0,0 +1,22 @@ +package co.yixiang.modules.user.web.param; + +import io.swagger.annotations.ApiModel; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import co.yixiang.common.web.param.QueryParam; + +/** + *

+ * 用户等级记录表 查询参数对象 + *

+ * + * @author hupeng + * @date 2019-12-06 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@ApiModel(value="YxUserLevelQueryParam对象", description="用户等级记录表查询参数") +public class YxUserLevelQueryParam extends QueryParam { + private static final long serialVersionUID = 1L; +} diff --git a/yshop-api/src/main/java/co/yixiang/modules/user/web/param/YxUserSignQueryParam.java b/yshop-api/src/main/java/co/yixiang/modules/user/web/param/YxUserSignQueryParam.java new file mode 100644 index 00000000..16d3f649 --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/user/web/param/YxUserSignQueryParam.java @@ -0,0 +1,22 @@ +package co.yixiang.modules.user.web.param; + +import io.swagger.annotations.ApiModel; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import co.yixiang.common.web.param.QueryParam; + +/** + *

+ * 签到记录表 查询参数对象 + *

+ * + * @author hupeng + * @date 2019-12-05 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@ApiModel(value="YxUserSignQueryParam对象", description="签到记录表查询参数") +public class YxUserSignQueryParam extends QueryParam { + private static final long serialVersionUID = 1L; +} diff --git a/yshop-api/src/main/java/co/yixiang/modules/user/web/param/YxUserTaskFinishQueryParam.java b/yshop-api/src/main/java/co/yixiang/modules/user/web/param/YxUserTaskFinishQueryParam.java new file mode 100644 index 00000000..e613a5fe --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/user/web/param/YxUserTaskFinishQueryParam.java @@ -0,0 +1,22 @@ +package co.yixiang.modules.user.web.param; + +import io.swagger.annotations.ApiModel; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import co.yixiang.common.web.param.QueryParam; + +/** + *

+ * 用户任务完成记录表 查询参数对象 + *

+ * + * @author hupeng + * @date 2019-12-07 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@ApiModel(value="YxUserTaskFinishQueryParam对象", description="用户任务完成记录表查询参数") +public class YxUserTaskFinishQueryParam extends QueryParam { + private static final long serialVersionUID = 1L; +} diff --git a/yshop-api/src/main/java/co/yixiang/modules/user/web/vo/YxSystemUserLevelQueryVo.java b/yshop-api/src/main/java/co/yixiang/modules/user/web/vo/YxSystemUserLevelQueryVo.java new file mode 100644 index 00000000..42541368 --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/user/web/vo/YxSystemUserLevelQueryVo.java @@ -0,0 +1,67 @@ +package co.yixiang.modules.user.web.vo; + +import co.yixiang.modules.user.web.dto.TaskDTO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +import java.math.BigDecimal; +import java.util.Date; + +/** + *

+ * 设置用户等级表 查询结果对象 + *

+ * + * @author hupeng + * @date 2019-12-06 + */ +@Data +@ApiModel(value = "YxSystemUserLevelQueryVo对象", description = "设置用户等级表查询参数") +public class YxSystemUserLevelQueryVo implements Serializable { + private static final long serialVersionUID = 1L; + + private Integer id; + + @ApiModelProperty(value = "商户id") + private Integer merId; + + @ApiModelProperty(value = "会员名称") + private String name; + + @ApiModelProperty(value = "购买金额") + private BigDecimal money; + + @ApiModelProperty(value = "有效时间") + private Integer validDate; + + + @ApiModelProperty(value = "会员等级") + private Integer grade; + + @ApiModelProperty(value = "享受折扣") + private BigDecimal discount; + + @ApiModelProperty(value = "会员卡背景") + private String image; + + @ApiModelProperty(value = "会员图标") + private String icon; + + @ApiModelProperty(value = "说明") + private String explain; + + @ApiModelProperty(value = "添加时间") + private Integer addTime; + + private TaskDTO taskList; + + private Boolean isClear; + + private Integer isForever; + + + +} \ No newline at end of file diff --git a/yshop-api/src/main/java/co/yixiang/modules/user/web/vo/YxSystemUserTaskQueryVo.java b/yshop-api/src/main/java/co/yixiang/modules/user/web/vo/YxSystemUserTaskQueryVo.java new file mode 100644 index 00000000..b204aa19 --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/user/web/vo/YxSystemUserTaskQueryVo.java @@ -0,0 +1,64 @@ +package co.yixiang.modules.user.web.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +import java.util.Date; + +/** + *

+ * 等级任务设置 查询结果对象 + *

+ * + * @author hupeng + * @date 2019-12-06 + */ +@Data +@ApiModel(value = "YxSystemUserTaskQueryVo对象", description = "等级任务设置查询参数") +public class YxSystemUserTaskQueryVo implements Serializable { + private static final long serialVersionUID = 1L; + + private Integer id; + + @ApiModelProperty(value = "任务名称") + private String name; + + @ApiModelProperty(value = "配置原名") + private String realName; + + @ApiModelProperty(value = "任务类型") + private String taskType; + + @ApiModelProperty(value = "限定数") + private Integer number; + + @ApiModelProperty(value = "等级id") + private Integer levelId; + + @ApiModelProperty(value = "排序") + private Integer sort; + + @ApiModelProperty(value = "是否显示") + private Integer isShow; + + @ApiModelProperty(value = "是否务必达成任务,1务必达成,0=满足其一") + private Integer isMust; + + @ApiModelProperty(value = "任务说明") + private String illustrate; + + @ApiModelProperty(value = "新增时间") + private Integer addTime; + + private Integer newNumber;//已经完成了多少 + + private Integer speed;//进度比例 + + private Integer finish;//是否完成 + + private String taskTypeTitle;//任务类型标题 + +} \ No newline at end of file diff --git a/yshop-api/src/main/java/co/yixiang/modules/user/web/vo/YxUserLevelQueryVo.java b/yshop-api/src/main/java/co/yixiang/modules/user/web/vo/YxUserLevelQueryVo.java new file mode 100644 index 00000000..12f49458 --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/user/web/vo/YxUserLevelQueryVo.java @@ -0,0 +1,61 @@ +package co.yixiang.modules.user.web.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import java.io.Serializable; + +import java.util.Date; + +/** + *

+ * 用户等级记录表 查询结果对象 + *

+ * + * @author hupeng + * @date 2019-12-06 + */ +@Data +@ApiModel(value="YxUserLevelQueryVo对象", description="用户等级记录表查询参数") +public class YxUserLevelQueryVo implements Serializable{ + private static final long serialVersionUID = 1L; + +private Integer id; + +@ApiModelProperty(value = "用户uid") +private Integer uid; + +@ApiModelProperty(value = "等级vip") +private Integer levelId; + +@ApiModelProperty(value = "会员等级") +private Integer grade; + +@ApiModelProperty(value = "过期时间") +private Integer validTime; + +@ApiModelProperty(value = "是否永久") +private Boolean isForever; + +@ApiModelProperty(value = "商户id") +private Integer merId; + +@ApiModelProperty(value = "0:禁止,1:正常") +private Boolean status; + +@ApiModelProperty(value = "备注") +private String mark; + +@ApiModelProperty(value = "是否已通知") +private Boolean remind; + +@ApiModelProperty(value = "是否删除,0=未删除,1=删除") +private Boolean isDel; + +@ApiModelProperty(value = "添加时间") +private Integer addTime; + +@ApiModelProperty(value = "享受折扣") +private Integer discount; + +} \ No newline at end of file diff --git a/yshop-api/src/main/java/co/yixiang/modules/user/web/vo/YxUserQueryVo.java b/yshop-api/src/main/java/co/yixiang/modules/user/web/vo/YxUserQueryVo.java index 2e37b050..7f2ce3e4 100644 --- a/yshop-api/src/main/java/co/yixiang/modules/user/web/vo/YxUserQueryVo.java +++ b/yshop-api/src/main/java/co/yixiang/modules/user/web/vo/YxUserQueryVo.java @@ -39,6 +39,12 @@ public class YxUserQueryVo implements Serializable { private Integer statu; + private Integer sumSignDay; + + private Boolean isDaySign; + + private Boolean isYesterDaySign; + // @ApiModelProperty(value = "用户密码(跟pwd)") @@ -139,4 +145,12 @@ public class YxUserQueryVo implements Serializable { @ApiModelProperty(value = "用户登陆类型,h5,wechat,routine") private String loginType; + private Boolean vip; + + private Integer vipId; + + private String vipIcon; + + private String vipName; + } \ No newline at end of file diff --git a/yshop-api/src/main/java/co/yixiang/modules/user/web/vo/YxUserSignQueryVo.java b/yshop-api/src/main/java/co/yixiang/modules/user/web/vo/YxUserSignQueryVo.java new file mode 100644 index 00000000..6a77673b --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/user/web/vo/YxUserSignQueryVo.java @@ -0,0 +1,41 @@ +package co.yixiang.modules.user.web.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +import java.util.Date; + +/** + *

+ * 签到记录表 查询结果对象 + *

+ * + * @author hupeng + * @date 2019-12-05 + */ +@Data +@ApiModel(value = "YxUserSignQueryVo对象", description = "签到记录表查询参数") +public class YxUserSignQueryVo implements Serializable { + private static final long serialVersionUID = 1L; + + private Integer id; + + @ApiModelProperty(value = "用户uid") + private Integer uid; + + @ApiModelProperty(value = "签到说明") + private String title; + + @ApiModelProperty(value = "获得积分") + private Integer number; + + @ApiModelProperty(value = "剩余积分") + private Integer balance; + + @ApiModelProperty(value = "添加时间") + private Integer addTime; + +} \ No newline at end of file diff --git a/yshop-api/src/main/java/co/yixiang/modules/user/web/vo/YxUserTaskFinishQueryVo.java b/yshop-api/src/main/java/co/yixiang/modules/user/web/vo/YxUserTaskFinishQueryVo.java new file mode 100644 index 00000000..8b5d390e --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/user/web/vo/YxUserTaskFinishQueryVo.java @@ -0,0 +1,37 @@ +package co.yixiang.modules.user.web.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import java.io.Serializable; + +import java.util.Date; + +/** + *

+ * 用户任务完成记录表 查询结果对象 + *

+ * + * @author hupeng + * @date 2019-12-07 + */ +@Data +@ApiModel(value="YxUserTaskFinishQueryVo对象", description="用户任务完成记录表查询参数") +public class YxUserTaskFinishQueryVo implements Serializable{ + private static final long serialVersionUID = 1L; + +private Integer id; + +@ApiModelProperty(value = "任务id") +private Integer taskId; + +@ApiModelProperty(value = "用户id") +private Integer uid; + +@ApiModelProperty(value = "是否有效") +private Boolean status; + +@ApiModelProperty(value = "添加时间") +private Integer addTime; + +} \ No newline at end of file diff --git a/yshop-api/src/main/resources/mapper/user/YxSystemUserLevelMapper.xml b/yshop-api/src/main/resources/mapper/user/YxSystemUserLevelMapper.xml new file mode 100644 index 00000000..9ab75ead --- /dev/null +++ b/yshop-api/src/main/resources/mapper/user/YxSystemUserLevelMapper.xml @@ -0,0 +1,18 @@ + + + + + + + id, mer_id, name, money, valid_date, is_forever, is_pay, is_show, grade, discount, image, icon, `explain`, add_time, is_del + + + + + + + diff --git a/yshop-api/src/main/resources/mapper/user/YxSystemUserTaskMapper.xml b/yshop-api/src/main/resources/mapper/user/YxSystemUserTaskMapper.xml new file mode 100644 index 00000000..9caa5226 --- /dev/null +++ b/yshop-api/src/main/resources/mapper/user/YxSystemUserTaskMapper.xml @@ -0,0 +1,18 @@ + + + + + + + id, name, real_name, task_type, number, level_id, sort, is_show, is_must, illustrate, add_time + + + + + + + diff --git a/yshop-api/src/main/resources/mapper/user/YxUserLevelMapper.xml b/yshop-api/src/main/resources/mapper/user/YxUserLevelMapper.xml new file mode 100644 index 00000000..a97c27f0 --- /dev/null +++ b/yshop-api/src/main/resources/mapper/user/YxUserLevelMapper.xml @@ -0,0 +1,18 @@ + + + + + + + id, uid, level_id, grade, valid_time, is_forever, mer_id, status, mark, remind, is_del, add_time, discount + + + + + + + diff --git a/yshop-api/src/main/resources/mapper/user/YxUserSignMapper.xml b/yshop-api/src/main/resources/mapper/user/YxUserSignMapper.xml new file mode 100644 index 00000000..4530f6b1 --- /dev/null +++ b/yshop-api/src/main/resources/mapper/user/YxUserSignMapper.xml @@ -0,0 +1,18 @@ + + + + + + + id, uid, title, number, balance, add_time + + + + + + + diff --git a/yshop-api/src/main/resources/mapper/user/YxUserTaskFinishMapper.xml b/yshop-api/src/main/resources/mapper/user/YxUserTaskFinishMapper.xml new file mode 100644 index 00000000..d8221de5 --- /dev/null +++ b/yshop-api/src/main/resources/mapper/user/YxUserTaskFinishMapper.xml @@ -0,0 +1,18 @@ + + + + + + + id, task_id, uid, status, add_time + + + + + + + diff --git a/yshop-api/src/test/java/co/yixiang/test/CodeGenerator.java b/yshop-api/src/test/java/co/yixiang/test/CodeGenerator.java index 6311357d..e1ede55f 100644 --- a/yshop-api/src/test/java/co/yixiang/test/CodeGenerator.java +++ b/yshop-api/src/test/java/co/yixiang/test/CodeGenerator.java @@ -24,10 +24,10 @@ public class CodeGenerator { private static final String USER_NAME = "root"; - private static final String PASSWORD = "Admin@123"; + private static final String PASSWORD = "root"; private static final String DRIVER_NAME = "com.mysql.cj.jdbc.Driver"; - private static final String DRIVER_URL = "jdbc:mysql://106.12.82.39:3306/yxshop?autoReconnect=true&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8"; + private static final String DRIVER_URL = "jdbc:mysql://localhost:3306/yxshop?autoReconnect=true&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8"; private static final String PARENT_PACKAGE = "co.yixiang"; private static final String SUPER_ENTITY = PARENT_PACKAGE + ".common.entity.BaseEntity"; @@ -43,11 +43,11 @@ public class CodeGenerator { // ############################ 配置部分 start ############################ // 模块名称 - private static final String MODULE_NAME = "activity"; + private static final String MODULE_NAME = "user"; // 作者 private static final String AUTHOR = "hupeng"; // 生成的表名称 - private static final String TABLE_NAME = "yx_system_attachment"; // 主键数据库列名称 + private static final String TABLE_NAME = "yx_user_task_finish"; // 主键数据库列名称 private static final String PK_ID_COLUMN_NAME = "id"; // 代码生成策略 true:All/false:SIMPLE private static final boolean GENERATOR_STRATEGY = true; diff --git a/yshop-common/pom.xml b/yshop-common/pom.xml index 44938742..b123e209 100644 --- a/yshop-common/pom.xml +++ b/yshop-common/pom.xml @@ -5,7 +5,7 @@ yshop co.yixiang - 1.3 + 1.4 4.0.0 diff --git a/yshop-common/src/main/java/co/yixiang/redisson/DelayJob.java b/yshop-common/src/main/java/co/yixiang/redisson/DelayJob.java deleted file mode 100644 index 41abac66..00000000 --- a/yshop-common/src/main/java/co/yixiang/redisson/DelayJob.java +++ /dev/null @@ -1,16 +0,0 @@ -package co.yixiang.redisson; - -import lombok.Data; - -import java.io.Serializable; - - -/** - * Created by kl on 2018/7/20. - * Content :延时job - */ -@Data -public class DelayJob implements Serializable { - private Integer oderId;//job执行参数 - private Class aClass;//具体执行实例实现 -} \ No newline at end of file diff --git a/yshop-common/src/main/java/co/yixiang/redisson/DelayJobService.java b/yshop-common/src/main/java/co/yixiang/redisson/DelayJobService.java index d109bb38..67e8da26 100644 --- a/yshop-common/src/main/java/co/yixiang/redisson/DelayJobService.java +++ b/yshop-common/src/main/java/co/yixiang/redisson/DelayJobService.java @@ -1,44 +1,34 @@ -package co.yixiang.redisson; - -import org.redisson.api.RBlockingQueue; -import org.redisson.api.RDelayedQueue; -import org.redisson.api.RedissonClient; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.concurrent.TimeUnit; - -/** - * Created by kl on 2018/7/20. - * Content :订单延时job服务 - */ -@Component -public class DelayJobService { - - @Autowired - private RedissonClient client; - - /** - * 添加超时任务到redis队列 - * @param job 任务 - * @param delay 超时时间 - */ - public void submitJob(DelayJob job, Long delay){ - RBlockingQueue blockingQueue = client.getBlockingQueue(JobTimer.CUSTOMER_JOB_TIMER_JOBS); - RDelayedQueue delayedQueue = client.getDelayedQueue(blockingQueue); - delayedQueue.offer(job,delay,TimeUnit.MILLISECONDS); - delayedQueue.destroy(); - } - /** - * 用户付款后取消队列 - * @param job 任务 - */ - public void cancelJob(DelayJob job){ - RBlockingQueue blockingQueue = client.getBlockingQueue(JobTimer.CUSTOMER_JOB_TIMER_JOBS); - RDelayedQueue delayedQueue = client.getDelayedQueue(blockingQueue); - delayedQueue.remove(job); - delayedQueue.destroy(); - - - } -} \ No newline at end of file +package co.yixiang.redisson; + +import org.redisson.api.RBlockingQueue; +import org.redisson.api.RDelayedQueue; +import org.redisson.api.RQueue; +import org.redisson.api.RedissonClient; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.TimeUnit; + +/** + * Created by kl on 2018/7/20. + * Content :订单延时job服务 + */ +@Component +public class DelayJobService { + + @Autowired + private RedissonClient client; + + /** + * 添加超时任务到redis队列 + * @param job 任务 + * @param delay 超时时间 + */ + public void submitJob(Map job, Long delay){ + RQueue> blockingQueue = client.getQueue(JobTimer.CUSTOMER_JOB_TIMER_JOBS); + RDelayedQueue> delayedQueue = client.getDelayedQueue(blockingQueue); + delayedQueue.offer(job,delay,TimeUnit.MILLISECONDS); + delayedQueue.destroy(); + } +} diff --git a/yshop-common/src/main/java/co/yixiang/redisson/ExecuteJob.java b/yshop-common/src/main/java/co/yixiang/redisson/ExecuteJob.java index f541502d..5ae8618f 100644 --- a/yshop-common/src/main/java/co/yixiang/redisson/ExecuteJob.java +++ b/yshop-common/src/main/java/co/yixiang/redisson/ExecuteJob.java @@ -1,10 +1,12 @@ -package co.yixiang.redisson; - -/** - * Created by kl on 2018/7/20. - * Content :延时job执行器接口 - */ -public interface ExecuteJob { - - void execute(DelayJob job); -} +package co.yixiang.redisson; + +import java.util.Map; + +/** + * Created by kl on 2018/7/20. + * Content :延时job执行器接口 + */ +public interface ExecuteJob { + + void execute(Map job); +} diff --git a/yshop-common/src/main/java/co/yixiang/redisson/JobTimer.java b/yshop-common/src/main/java/co/yixiang/redisson/JobTimer.java index 51a7553b..ece4574f 100644 --- a/yshop-common/src/main/java/co/yixiang/redisson/JobTimer.java +++ b/yshop-common/src/main/java/co/yixiang/redisson/JobTimer.java @@ -1,68 +1,64 @@ -package co.yixiang.redisson; - -import org.redisson.api.RBlockingQueue; -import org.redisson.api.RDelayedQueue; -import org.redisson.api.RedissonClient; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.ApplicationContext; -import org.springframework.stereotype.Component; - -import javax.annotation.PostConstruct; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.TimeUnit; - -/** - * 消费已经到点的延时job服务,通过job参数调用业务执行器实现 - */ -@Component -public class JobTimer { - - static final String CUSTOMER_JOB_TIMER_JOBS = "customer_job_timer_jobs"; - @Autowired - private RedissonClient client; - - @Autowired - private ApplicationContext context; - - ExecutorService executorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() * 2); - @PostConstruct - public void startJobTimer() { - RBlockingQueue blockingQueue = client.getBlockingQueue(CUSTOMER_JOB_TIMER_JOBS); - RDelayedQueue delayedQueue = client.getDelayedQueue(blockingQueue); - new Thread(() -> { - while (true) { - try { - DelayJob job = (DelayJob) blockingQueue.take(); - executorService.execute(new ExecutorTask(context, job)); - } catch (Exception e) { - e.printStackTrace(); - try { - TimeUnit.SECONDS.sleep(60); - } catch (Exception ex) { - - } - }finally { - delayedQueue.destroy(); - } - } - }).start(); - } - class ExecutorTask implements Runnable { - - private ApplicationContext context; - - private DelayJob delayJob; - - public ExecutorTask(ApplicationContext context, DelayJob delayJob) { - this.context = context; - this.delayJob = delayJob; - } - - @Override - public void run() { - ExecuteJob service = (ExecuteJob) context.getBean(delayJob.getAClass()); - service.execute(delayJob); - } - } -} +package co.yixiang.redisson; + +import org.redisson.api.RBlockingQueue; +import org.redisson.api.RDelayedQueue; +import org.redisson.api.RedissonClient; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import java.util.Map; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; + +/** + * 消费已经到点的延时job服务,通过job参数调用业务执行器实现 + */ +@Component +public class JobTimer { + + static final String CUSTOMER_JOB_TIMER_JOBS = "customer_job_timer_jobs"; + @Autowired + private RedissonClient client; + + @Autowired + private ExecuteJob service; + + ExecutorService executorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() * 2); + @PostConstruct + public void startJobTimer() { + RBlockingQueue> blockingQueue = client.getBlockingQueue(CUSTOMER_JOB_TIMER_JOBS); + RDelayedQueue> delayedQueue = client.getDelayedQueue(blockingQueue); + new Thread(() -> { + while (true) { + try { + Map job = blockingQueue.take(); + executorService.execute(new ExecutorTask(job)); + } catch (Exception e) { + e.printStackTrace(); + try { + TimeUnit.SECONDS.sleep(60); + } catch (Exception ex) { + + } + }finally { + delayedQueue.destroy(); + } + } + }).start(); + } + class ExecutorTask implements Runnable { + + + private Map delayJob; + + public ExecutorTask(Map delayJob) { + this.delayJob = delayJob; + } + @Override + public void run() { + service.execute(delayJob); + } + } +} diff --git a/yshop-common/src/main/java/co/yixiang/redisson/RedissonConfig.java b/yshop-common/src/main/java/co/yixiang/redisson/RedissonConfig.java index 67c79f05..aee3c4ad 100644 --- a/yshop-common/src/main/java/co/yixiang/redisson/RedissonConfig.java +++ b/yshop-common/src/main/java/co/yixiang/redisson/RedissonConfig.java @@ -1,116 +1,116 @@ -package co.yixiang.redisson; - -import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; -import lombok.extern.slf4j.Slf4j; -import org.redisson.Redisson; -import org.redisson.api.RedissonClient; -import org.redisson.config.Config; -import org.redisson.spring.cache.CacheConfig; -import org.redisson.spring.cache.RedissonSpringCacheManager; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.cache.Cache; -import org.springframework.cache.CacheManager; -import org.springframework.cache.annotation.CachingConfigurerSupport; -import org.springframework.cache.annotation.EnableCaching; -import org.springframework.cache.interceptor.CacheErrorHandler; -import org.springframework.cache.interceptor.KeyGenerator; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -import java.util.HashMap; -import java.util.Map; - -/** - * redisson 配置类 - * Created on 2018/6/19 - */ -@Configuration -@EnableCaching -@Slf4j -public class RedissonConfig extends CachingConfigurerSupport { - - @Value("${spring.redis.host}") - private String host; - - @Value("${spring.redis.port}") - private String port; - - @Value("${spring.redis.password}") - private String password; - - @Bean - public RedissonClient getRedisson() { - - Config config = new Config(); - if (StrUtil.isNotEmpty(password)) { - config.useSingleServer().setAddress("redis://" + host + ":" + port) - .setPassword(password); - } else { - config.useSingleServer().setAddress("redis://" + host + ":" + port); - } - //config.useSingleServer().setAddress("redis://" + host + ":" + port).setPassword(password); - //添加主从配置 -// config.useMasterSlaveServers().setMasterAddress("").setPassword("").addSlaveAddress(new String[]{"",""}); - - return Redisson.create(config); - } - - @Bean - CacheManager cacheManager(RedissonClient redissonClient) { - Map config = new HashMap<>(16); - // create "testMap" cache with ttl = 24 minutes and maxIdleTime = 12 minutes - config.put("testMap", new CacheConfig(24 * 60 * 1000, 12 * 60 * 1000)); - return new RedissonSpringCacheManager(redissonClient, config); - } - - /** - * 自定义缓存key生成策略,默认将使用该策略 - * 使用方法 @Cacheable - * - * @return - */ - @Bean - @Override - public KeyGenerator keyGenerator() { - return (target, method, params) -> { - StringBuilder sb = new StringBuilder(); - sb.append(target.getClass().getName()); - sb.append(method.getName()); - for (Object obj : params) { - sb.append(JSON.toJSONString(obj).hashCode()); - } - return sb.toString(); - }; - } - - @Bean - @Override - public CacheErrorHandler errorHandler() { - // 异常处理,当Redis发生异常时,打印日志,但是程序正常走 - log.info("初始化 -> [{}]", "Redis CacheErrorHandler"); - CacheErrorHandler cacheErrorHandler = new CacheErrorHandler() { - @Override - public void handleCacheGetError(RuntimeException e, Cache cache, Object key) { - log.error("Redis occur handleCacheGetError:key -> [{}]", key, e); - } - - @Override - public void handleCachePutError(RuntimeException e, Cache cache, Object key, Object value) { - log.error("Redis occur handleCachePutError:key -> [{}];value -> [{}]", key, value, e); - } - - @Override - public void handleCacheEvictError(RuntimeException e, Cache cache, Object key) { - log.error("Redis occur handleCacheEvictError:key -> [{}]", key, e); - } - - @Override - public void handleCacheClearError(RuntimeException e, Cache cache) { - log.error("Redis occur handleCacheClearError:", e); - } - }; - return cacheErrorHandler; - } - -} +package co.yixiang.redisson; + +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import lombok.extern.slf4j.Slf4j; +import org.redisson.Redisson; +import org.redisson.api.RedissonClient; +import org.redisson.config.Config; +import org.redisson.spring.cache.CacheConfig; +import org.redisson.spring.cache.RedissonSpringCacheManager; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.cache.Cache; +import org.springframework.cache.CacheManager; +import org.springframework.cache.annotation.CachingConfigurerSupport; +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.cache.interceptor.CacheErrorHandler; +import org.springframework.cache.interceptor.KeyGenerator; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import java.util.HashMap; +import java.util.Map; + +/** + * redisson 配置类 + * Created on 2018/6/19 + */ +@Configuration +@EnableCaching +@Slf4j +public class RedissonConfig extends CachingConfigurerSupport { + + @Value("${spring.redis.host}") + private String host; + + @Value("${spring.redis.port}") + private String port; + + @Value("${spring.redis.password}") + private String password; + + @Bean + public RedissonClient getRedisson() { + + Config config = new Config(); + if (StrUtil.isNotEmpty(password)) { + config.useSingleServer().setAddress("redis://" + host + ":" + port) + .setPassword(password); + } else { + config.useSingleServer().setAddress("redis://" + host + ":" + port); + } + //config.useSingleServer().setAddress("redis://" + host + ":" + port).setPassword(password); + //添加主从配置 +// config.useMasterSlaveServers().setMasterAddress("").setPassword("").addSlaveAddress(new String[]{"",""}); + + return Redisson.create(config); + } + + @Bean + CacheManager cacheManager(RedissonClient redissonClient) { + Map config = new HashMap<>(16); + // create "testMap" cache with ttl = 24 minutes and maxIdleTime = 12 minutes + config.put("testMap", new CacheConfig(24 * 60 * 1000, 12 * 60 * 1000)); + return new RedissonSpringCacheManager(redissonClient, config); + } + + /** + * 自定义缓存key生成策略,默认将使用该策略 + * 使用方法 @Cacheable + * + * @return + */ + @Bean + @Override + public KeyGenerator keyGenerator() { + return (target, method, params) -> { + StringBuilder sb = new StringBuilder(); + sb.append(target.getClass().getName()); + sb.append(method.getName()); + for (Object obj : params) { + sb.append(JSON.toJSONString(obj).hashCode()); + } + return sb.toString(); + }; + } + + @Bean + @Override + public CacheErrorHandler errorHandler() { + // 异常处理,当Redis发生异常时,打印日志,但是程序正常走 + log.info("初始化 -> [{}]", "Redis CacheErrorHandler"); + CacheErrorHandler cacheErrorHandler = new CacheErrorHandler() { + @Override + public void handleCacheGetError(RuntimeException e, Cache cache, Object key) { + log.error("Redis occur handleCacheGetError:key -> [{}]", key, e); + } + + @Override + public void handleCachePutError(RuntimeException e, Cache cache, Object key, Object value) { + log.error("Redis occur handleCachePutError:key -> [{}];value -> [{}]", key, value, e); + } + + @Override + public void handleCacheEvictError(RuntimeException e, Cache cache, Object key) { + log.error("Redis occur handleCacheEvictError:key -> [{}]", key, e); + } + + @Override + public void handleCacheClearError(RuntimeException e, Cache cache) { + log.error("Redis occur handleCacheClearError:", e); + } + }; + return cacheErrorHandler; + } + +} diff --git a/yshop-generator/pom.xml b/yshop-generator/pom.xml index 68624d54..0b583d97 100644 --- a/yshop-generator/pom.xml +++ b/yshop-generator/pom.xml @@ -5,7 +5,7 @@ yshop co.yixiang - 1.3 + 1.4 4.0.0 @@ -20,7 +20,7 @@ co.yixiang yshop-common - 1.3 + 1.4 diff --git a/yshop-logging/pom.xml b/yshop-logging/pom.xml index ce0e1385..5de70805 100644 --- a/yshop-logging/pom.xml +++ b/yshop-logging/pom.xml @@ -5,7 +5,7 @@ yshop co.yixiang - 1.3 + 1.4 4.0.0 @@ -16,7 +16,7 @@ co.yixiang yshop-common - 1.3 + 1.4 \ No newline at end of file diff --git a/yshop-mp/pom.xml b/yshop-mp/pom.xml index 2deef241..63eef5ae 100644 --- a/yshop-mp/pom.xml +++ b/yshop-mp/pom.xml @@ -5,7 +5,7 @@ yshop co.yixiang - 1.3 + 1.4 4.0.0 @@ -31,7 +31,7 @@ co.yixiang yshop-common - 1.3 + 1.4 diff --git a/yshop-mp/src/main/java/co/yixiang/mp/controller/YxArticleController.java b/yshop-mp/src/main/java/co/yixiang/mp/controller/YxArticleController.java index 6a9485f5..9a549e7d 100644 --- a/yshop-mp/src/main/java/co/yixiang/mp/controller/YxArticleController.java +++ b/yshop-mp/src/main/java/co/yixiang/mp/controller/YxArticleController.java @@ -60,7 +60,7 @@ public class YxArticleController { @DeleteMapping(value = "/yxArticle/{id}") @PreAuthorize("hasAnyRole('ADMIN','YXARTICLE_ALL','YXARTICLE_DELETE')") public ResponseEntity delete(@PathVariable Integer id){ - //if(id > 0) throw new BadRequestException("演示环境禁止操作"); + //if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作"); yxArticleService.delete(id); return new ResponseEntity(HttpStatus.OK); } @@ -69,7 +69,7 @@ public class YxArticleController { @GetMapping(value = "/yxArticle/publish/{id}") @PreAuthorize("hasAnyRole('ADMIN','YXARTICLE_ALL','YXARTICLE_DELETE')") public ResponseEntity publish(@PathVariable Integer id) throws Exception{ - //if(id > 0) throw new BadRequestException("演示环境禁止操作"); + //if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作"); YxArticleDTO yxArticleDTO= yxArticleService.findById(id); yxArticleService.uploadNews(yxArticleDTO); return new ResponseEntity(HttpStatus.OK); diff --git a/yshop-mp/src/main/java/co/yixiang/mp/controller/YxCacheController.java b/yshop-mp/src/main/java/co/yixiang/mp/controller/YxCacheController.java index 392e8430..8fb5dde6 100644 --- a/yshop-mp/src/main/java/co/yixiang/mp/controller/YxCacheController.java +++ b/yshop-mp/src/main/java/co/yixiang/mp/controller/YxCacheController.java @@ -47,7 +47,7 @@ public class YxCacheController { @PostMapping(value = "/yxCache") @PreAuthorize("hasAnyRole('ADMIN','YXCACHE_ALL','YXCACHE_CREATE')") public ResponseEntity create( @RequestBody String jsonStr){ - //if(StrUtil.isNotEmpty(jsonStr)) throw new BadRequestException("演示环境禁止操作"); + //if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作"); JSONObject jsonObject = JSON.parseObject(jsonStr); String jsonButton = jsonObject.get("buttons").toString(); YxCache yxCache = new YxCache(); diff --git a/yshop-mp/src/main/java/co/yixiang/mp/controller/YxWechatReplyController.java b/yshop-mp/src/main/java/co/yixiang/mp/controller/YxWechatReplyController.java index 12c460a6..b16b27cc 100644 --- a/yshop-mp/src/main/java/co/yixiang/mp/controller/YxWechatReplyController.java +++ b/yshop-mp/src/main/java/co/yixiang/mp/controller/YxWechatReplyController.java @@ -41,7 +41,7 @@ public class YxWechatReplyController { @PostMapping(value = "/yxWechatReply") @PreAuthorize("hasAnyRole('ADMIN','YXWECHATREPLY_ALL','YXWECHATREPLY_CREATE')") public ResponseEntity create(@RequestBody String jsonStr){ - //if(StrUtil.isNotEmpty(jsonStr)) throw new BadRequestException("演示环境禁止操作"); + //if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作"); JSONObject jsonObject = JSON.parseObject(jsonStr); YxWechatReply yxWechatReply = new YxWechatReply(); YxWechatReply isExist = yxWechatReplyService.isExist(jsonObject.get("key").toString()); diff --git a/yshop-system/pom.xml b/yshop-system/pom.xml index 3757f212..a91d401a 100644 --- a/yshop-system/pom.xml +++ b/yshop-system/pom.xml @@ -5,7 +5,7 @@ yshop co.yixiang - 1.3 + 1.4 4.0.0 @@ -20,7 +20,7 @@ co.yixiang yshop-generator - 1.3 + 1.4 co.yixiang @@ -32,12 +32,12 @@ co.yixiang yshop-tools - 1.3 + 1.4 co.yixiang yshop-mp - 1.3 + 1.4 diff --git a/yshop-system/src/main/java/co/yixiang/modules/activity/rest/YxStoreCombinationController.java b/yshop-system/src/main/java/co/yixiang/modules/activity/rest/YxStoreCombinationController.java index 3bf88fd1..6c33322a 100644 --- a/yshop-system/src/main/java/co/yixiang/modules/activity/rest/YxStoreCombinationController.java +++ b/yshop-system/src/main/java/co/yixiang/modules/activity/rest/YxStoreCombinationController.java @@ -1,6 +1,7 @@ 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.YxStoreCombination; @@ -45,7 +46,7 @@ public class YxStoreCombinationController { @PutMapping(value = "/yxStoreCombination") @PreAuthorize("hasAnyRole('ADMIN','YXSTORECOMBINATION_ALL','YXSTORECOMBINATION_EDIT')") public ResponseEntity update(@Validated @RequestBody YxStoreCombination resources){ - //if(ObjectUtil.isNotNull(resources)) throw new BadRequestException("演示环境禁止操作"); + //if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作"); if(ObjectUtil.isNotNull(resources.getStartTimeDate())){ resources.setStartTime(OrderUtil. dateToTimestamp(resources.getStartTimeDate())); @@ -67,7 +68,7 @@ public class YxStoreCombinationController { @ApiOperation(value = "开启关闭") @PostMapping(value = "/yxStoreCombination/onsale/{id}") public ResponseEntity onSale(@PathVariable Integer id,@RequestBody String jsonStr){ - //if(id > 0) throw new BadRequestException("演示环境禁止操作"); + //if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作"); JSONObject jsonObject = JSON.parseObject(jsonStr); int status = Integer.valueOf(jsonObject.get("status").toString()); //System.out.println(status); @@ -80,7 +81,7 @@ public class YxStoreCombinationController { @DeleteMapping(value = "/yxStoreCombination/{id}") @PreAuthorize("hasAnyRole('ADMIN','YXSTORECOMBINATION_ALL','YXSTORECOMBINATION_DELETE')") public ResponseEntity delete(@PathVariable Integer id){ - //if(id > 0) throw new BadRequestException("演示环境禁止操作"); + //if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作"); YxStoreCombination combination = new YxStoreCombination(); combination.setIsDel(1); yxStoreCombinationService.update(combination); diff --git a/yshop-system/src/main/java/co/yixiang/modules/monitor/rest/RedisController.java b/yshop-system/src/main/java/co/yixiang/modules/monitor/rest/RedisController.java index 1c04352f..e5bde946 100644 --- a/yshop-system/src/main/java/co/yixiang/modules/monitor/rest/RedisController.java +++ b/yshop-system/src/main/java/co/yixiang/modules/monitor/rest/RedisController.java @@ -35,7 +35,7 @@ public class RedisController { @DeleteMapping(value = "/redis") @PreAuthorize("hasAnyRole('ADMIN','REDIS_ALL','REDIS_DELETE')") public ResponseEntity delete(@RequestBody RedisVo resources){ - //if(ObjectUtil.isNotNull(resources)) throw new BadRequestException("演示环境禁止操作"); + //if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作"); redisService.delete(resources.getKey()); return new ResponseEntity(HttpStatus.OK); } diff --git a/yshop-system/src/main/java/co/yixiang/modules/quartz/rest/QuartzJobController.java b/yshop-system/src/main/java/co/yixiang/modules/quartz/rest/QuartzJobController.java index d78ecec1..7dbf36dd 100644 --- a/yshop-system/src/main/java/co/yixiang/modules/quartz/rest/QuartzJobController.java +++ b/yshop-system/src/main/java/co/yixiang/modules/quartz/rest/QuartzJobController.java @@ -1,6 +1,7 @@ package co.yixiang.modules.quartz.rest; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import co.yixiang.exception.BadRequestException; import co.yixiang.modules.quartz.domain.QuartzJob; import co.yixiang.modules.quartz.service.QuartzJobService; @@ -46,7 +47,7 @@ public class QuartzJobController { @PostMapping(value = "/jobs") @PreAuthorize("hasAnyRole('ADMIN','JOB_ALL','JOB_CREATE')") public ResponseEntity create(@Validated @RequestBody QuartzJob resources){ - //if(ObjectUtil.isNotNull(resources)) throw new BadRequestException("演示环境禁止操作"); + //if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作"); if (resources.getId() != null) { throw new BadRequestException("A new "+ ENTITY_NAME +" cannot already have an ID"); } @@ -57,7 +58,7 @@ public class QuartzJobController { @PutMapping(value = "/jobs") @PreAuthorize("hasAnyRole('ADMIN','JOB_ALL','JOB_EDIT')") public ResponseEntity update(@Validated(QuartzJob.Update.class) @RequestBody QuartzJob resources){ - //if(ObjectUtil.isNotNull(resources)) throw new BadRequestException("演示环境禁止操作"); + //if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作"); quartzJobService.update(resources); return new ResponseEntity(HttpStatus.NO_CONTENT); } @@ -66,7 +67,7 @@ public class QuartzJobController { @PutMapping(value = "/jobs/{id}") @PreAuthorize("hasAnyRole('ADMIN','JOB_ALL','JOB_EDIT')") public ResponseEntity updateIsPause(@PathVariable Long id){ - //if(id > 0) throw new BadRequestException("演示环境禁止操作"); + //if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作"); quartzJobService.updateIsPause(quartzJobService.findById(id)); return new ResponseEntity(HttpStatus.NO_CONTENT); } @@ -75,7 +76,7 @@ public class QuartzJobController { @PutMapping(value = "/jobs/exec/{id}") @PreAuthorize("hasAnyRole('ADMIN','JOB_ALL','JOB_EDIT')") public ResponseEntity execution(@PathVariable Long id){ - //if(id > 0) throw new BadRequestException("演示环境禁止操作"); + //if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作"); quartzJobService.execution(quartzJobService.findById(id)); return new ResponseEntity(HttpStatus.NO_CONTENT); } @@ -84,7 +85,7 @@ public class QuartzJobController { @DeleteMapping(value = "/jobs/{id}") @PreAuthorize("hasAnyRole('ADMIN','JOB_ALL','JOB_DELETE')") public ResponseEntity delete(@PathVariable Long id){ - //if(id > 0) throw new BadRequestException("演示环境禁止操作"); + //if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作"); quartzJobService.delete(quartzJobService.findById(id)); return new ResponseEntity(HttpStatus.OK); } diff --git a/yshop-system/src/main/java/co/yixiang/modules/shop/domain/YxStoreProduct.java b/yshop-system/src/main/java/co/yixiang/modules/shop/domain/YxStoreProduct.java index 8b3e5e73..78a89dec 100644 --- a/yshop-system/src/main/java/co/yixiang/modules/shop/domain/YxStoreProduct.java +++ b/yshop-system/src/main/java/co/yixiang/modules/shop/domain/YxStoreProduct.java @@ -70,9 +70,9 @@ public class YxStoreProduct implements Serializable { private BigDecimal price; // 会员价格 - @Column(name = "vip_price",nullable = false) - @NotNull(message = "会员价必填") - @Min(value = 0) + @Column(name = "vip_price",insertable = false) + //@NotNull(message = "会员价必填") + //@Min(value = 0) private BigDecimal vipPrice; // 市场价 @@ -112,7 +112,7 @@ public class YxStoreProduct implements Serializable { // 状态(0:未上架,1:上架) @Column(name = "is_show",insertable = false) - @NotNull(message = "状态必须选择") + //@NotNull(message = "状态必须选择") private Integer isShow; // 是否热卖 diff --git a/yshop-system/src/main/java/co/yixiang/modules/shop/domain/YxSystemUserLevel.java b/yshop-system/src/main/java/co/yixiang/modules/shop/domain/YxSystemUserLevel.java new file mode 100644 index 00000000..3fa6e566 --- /dev/null +++ b/yshop-system/src/main/java/co/yixiang/modules/shop/domain/YxSystemUserLevel.java @@ -0,0 +1,91 @@ +package co.yixiang.modules.shop.domain; + +import lombok.Data; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.bean.copier.CopyOptions; +import javax.persistence.*; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; +import java.io.Serializable; + +/** +* @author hupeng +* @date 2019-12-04 +*/ +@Entity +@Data +@Table(name="yx_system_user_level") +public class YxSystemUserLevel implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id") + private Integer id; + + // 商户id + @Column(name = "mer_id",insertable = false) + private Integer merId; + + // 会员名称 + @Column(name = "name",nullable = false) + @NotBlank(message = "请填写等级名称") + private String name; + + // 购买金额 + @Column(name = "money",insertable = false) + private BigDecimal money; + + // 有效时间 + @Column(name = "valid_date",nullable = false) + private Integer validDate; + + // 是否为永久会员 + @Column(name = "is_forever",nullable = false) + private Integer isForever; + + // 是否购买,1=购买,0=不购买 + @Column(name = "is_pay",insertable = false) + private Integer isPay; + + // 是否显示 1=显示,0=隐藏 + @Column(name = "is_show",nullable = false) + private Integer isShow; + + // 会员等级 + @Column(name = "grade",nullable = false) + @NotNull(message = "等级必填") + private Integer grade; + + // 享受折扣 + @Column(name = "discount",nullable = false) + @NotNull(message = "折扣必填") + private BigDecimal discount; + + // 会员卡背景 + @Column(name = "image",nullable = false) + @NotBlank(message = "请上传背景") + private String image; + + // 会员图标 + @Column(name = "icon",nullable = false) + @NotBlank(message = "请上传图标") + private String icon; + + // 说明 + @Column(name = "`explain`",nullable = false) + @NotBlank(message = "请填写说明") + private String explain; + + // 添加时间 + @Column(name = "add_time",nullable = false) + private Integer addTime; + + // 是否删除.1=删除,0=未删除 + @Column(name = "is_del",insertable = false) + private Integer isDel; + + public void copy(YxSystemUserLevel source){ + BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true)); + } +} \ No newline at end of file diff --git a/yshop-system/src/main/java/co/yixiang/modules/shop/domain/YxSystemUserTask.java b/yshop-system/src/main/java/co/yixiang/modules/shop/domain/YxSystemUserTask.java new file mode 100644 index 00000000..81a5028c --- /dev/null +++ b/yshop-system/src/main/java/co/yixiang/modules/shop/domain/YxSystemUserTask.java @@ -0,0 +1,66 @@ +package co.yixiang.modules.shop.domain; + +import lombok.Data; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.bean.copier.CopyOptions; +import javax.persistence.*; +import java.io.Serializable; + +/** +* @author hupeng +* @date 2019-12-04 +*/ +@Entity +@Data +@Table(name="yx_system_user_task") +public class YxSystemUserTask implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id") + private Integer id; + + // 任务名称 + @Column(name = "name",nullable = false) + private String name; + + // 配置原名 + @Column(name = "real_name",nullable = false) + private String realName; + + // 任务类型 + @Column(name = "task_type",nullable = false) + private String taskType; + + // 限定数 + @Column(name = "number",nullable = false) + private Integer number; + + // 等级id + @Column(name = "level_id",nullable = false) + private Integer levelId; + + // 排序 + @Column(name = "sort",nullable = false) + private Integer sort; + + // 是否显示 + @Column(name = "is_show",nullable = false) + private Integer isShow; + + // 是否务必达成任务,1务必达成,0=满足其一 + @Column(name = "is_must",nullable = false) + private Integer isMust; + + // 任务说明 + @Column(name = "illustrate",nullable = false) + private String illustrate; + + // 新增时间 + @Column(name = "add_time",nullable = false) + private Integer addTime; + + public void copy(YxSystemUserTask source){ + BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true)); + } +} \ No newline at end of file diff --git a/yshop-system/src/main/java/co/yixiang/modules/shop/repository/YxSystemUserLevelRepository.java b/yshop-system/src/main/java/co/yixiang/modules/shop/repository/YxSystemUserLevelRepository.java new file mode 100644 index 00000000..d79b81d3 --- /dev/null +++ b/yshop-system/src/main/java/co/yixiang/modules/shop/repository/YxSystemUserLevelRepository.java @@ -0,0 +1,12 @@ +package co.yixiang.modules.shop.repository; + +import co.yixiang.modules.shop.domain.YxSystemUserLevel; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; + +/** +* @author hupeng +* @date 2019-12-04 +*/ +public interface YxSystemUserLevelRepository extends JpaRepository, JpaSpecificationExecutor { +} \ No newline at end of file diff --git a/yshop-system/src/main/java/co/yixiang/modules/shop/repository/YxSystemUserTaskRepository.java b/yshop-system/src/main/java/co/yixiang/modules/shop/repository/YxSystemUserTaskRepository.java new file mode 100644 index 00000000..ea128cb2 --- /dev/null +++ b/yshop-system/src/main/java/co/yixiang/modules/shop/repository/YxSystemUserTaskRepository.java @@ -0,0 +1,12 @@ +package co.yixiang.modules.shop.repository; + +import co.yixiang.modules.shop.domain.YxSystemUserTask; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; + +/** +* @author hupeng +* @date 2019-12-04 +*/ +public interface YxSystemUserTaskRepository extends JpaRepository, JpaSpecificationExecutor { +} \ No newline at end of file diff --git a/yshop-system/src/main/java/co/yixiang/modules/shop/rest/YxStoreCategoryController.java b/yshop-system/src/main/java/co/yixiang/modules/shop/rest/YxStoreCategoryController.java index be649831..070198bb 100644 --- a/yshop-system/src/main/java/co/yixiang/modules/shop/rest/YxStoreCategoryController.java +++ b/yshop-system/src/main/java/co/yixiang/modules/shop/rest/YxStoreCategoryController.java @@ -1,6 +1,7 @@ package co.yixiang.modules.shop.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.shop.domain.YxStoreCategory; @@ -47,7 +48,7 @@ public class YxStoreCategoryController { @PostMapping(value = "/yxStoreCategory") @PreAuthorize("hasAnyRole('ADMIN','YXSTORECATEGORY_ALL','YXSTORECATEGORY_CREATE')") public ResponseEntity create(@Validated @RequestBody YxStoreCategory resources){ - //if(ObjectUtil.isNotNull(resources)) throw new BadRequestException("演示环境禁止操作"); + //if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作"); resources.setAddTime(OrderUtil.getSecondTimestampTwo()); return new ResponseEntity(yxStoreCategoryService.create(resources),HttpStatus.CREATED); } @@ -57,7 +58,7 @@ public class YxStoreCategoryController { @PutMapping(value = "/yxStoreCategory") @PreAuthorize("hasAnyRole('ADMIN','YXSTORECATEGORY_ALL','YXSTORECATEGORY_EDIT')") public ResponseEntity update(@Validated @RequestBody YxStoreCategory resources){ - //if(ObjectUtil.isNotNull(resources)) throw new BadRequestException("演示环境禁止操作"); + //if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作"); yxStoreCategoryService.update(resources); return new ResponseEntity(HttpStatus.NO_CONTENT); } @@ -67,7 +68,7 @@ public class YxStoreCategoryController { @DeleteMapping(value = "/yxStoreCategory/{id}") @PreAuthorize("hasAnyRole('ADMIN','YXSTORECATEGORY_ALL','YXSTORECATEGORY_DELETE')") public ResponseEntity delete(@PathVariable Integer id){ - //if(id > 0) throw new BadRequestException("演示环境禁止操作"); + //if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作"); yxStoreCategoryService.delete(id); return new ResponseEntity(HttpStatus.OK); } diff --git a/yshop-system/src/main/java/co/yixiang/modules/shop/rest/YxStoreProductController.java b/yshop-system/src/main/java/co/yixiang/modules/shop/rest/YxStoreProductController.java index 524baa5e..796c9b51 100644 --- a/yshop-system/src/main/java/co/yixiang/modules/shop/rest/YxStoreProductController.java +++ b/yshop-system/src/main/java/co/yixiang/modules/shop/rest/YxStoreProductController.java @@ -46,7 +46,7 @@ public class YxStoreProductController { @PostMapping(value = "/yxStoreProduct") @PreAuthorize("hasAnyRole('ADMIN','YXSTOREPRODUCT_ALL','YXSTOREPRODUCT_CREATE')") public ResponseEntity create(@Validated @RequestBody YxStoreProduct resources){ - //if(ObjectUtil.isNotNull(resources)) throw new BadRequestException("演示环境禁止操作"); + //if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作"); resources.setAddTime(OrderUtil.getSecondTimestampTwo()); if(ObjectUtil.isEmpty(resources.getGiveIntegral())) resources.setGiveIntegral(BigDecimal.ZERO); if(ObjectUtil.isEmpty(resources.getCost())) resources.setCost(BigDecimal.ZERO); @@ -58,7 +58,7 @@ public class YxStoreProductController { @PutMapping(value = "/yxStoreProduct") @PreAuthorize("hasAnyRole('ADMIN','YXSTOREPRODUCT_ALL','YXSTOREPRODUCT_EDIT')") public ResponseEntity update(@Validated @RequestBody YxStoreProduct resources){ - //if(ObjectUtil.isNotNull(resources)) throw new BadRequestException("演示环境禁止操作"); + //if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作"); yxStoreProductService.update(resources); return new ResponseEntity(HttpStatus.NO_CONTENT); } @@ -68,7 +68,7 @@ public class YxStoreProductController { @DeleteMapping(value = "/yxStoreProduct/{id}") @PreAuthorize("hasAnyRole('ADMIN','YXSTOREPRODUCT_ALL','YXSTOREPRODUCT_DELETE')") public ResponseEntity delete(@PathVariable Integer id){ - //if(id > 0) throw new BadRequestException("演示环境禁止操作"); + //if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作"); yxStoreProductService.delete(id); return new ResponseEntity(HttpStatus.OK); } diff --git a/yshop-system/src/main/java/co/yixiang/modules/shop/rest/YxSystemGroupDataController.java b/yshop-system/src/main/java/co/yixiang/modules/shop/rest/YxSystemGroupDataController.java index 36c5a27f..407d6b8a 100644 --- a/yshop-system/src/main/java/co/yixiang/modules/shop/rest/YxSystemGroupDataController.java +++ b/yshop-system/src/main/java/co/yixiang/modules/shop/rest/YxSystemGroupDataController.java @@ -45,7 +45,7 @@ public class YxSystemGroupDataController { @PostMapping(value = "/yxSystemGroupData") @PreAuthorize("hasAnyRole('ADMIN','YXSYSTEMGROUPDATA_ALL','YXSYSTEMGROUPDATA_CREATE')") public ResponseEntity create(@RequestBody String jsonStr){ - //if(StrUtil.isNotEmpty(jsonStr)) throw new BadRequestException("演示环境禁止操作"); + //if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作"); JSONObject jsonObject = JSON.parseObject(jsonStr); if(ObjectUtil.isNotNull(jsonObject.get("name"))){ @@ -88,7 +88,7 @@ public class YxSystemGroupDataController { @PutMapping(value = "/yxSystemGroupData") @PreAuthorize("hasAnyRole('ADMIN','YXSYSTEMGROUPDATA_ALL','YXSYSTEMGROUPDATA_EDIT')") public ResponseEntity update(@RequestBody String jsonStr){ - //if(StrUtil.isNotEmpty(jsonStr)) throw new BadRequestException("演示环境禁止操作"); + //if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作"); JSONObject jsonObject = JSON.parseObject(jsonStr); if(ObjectUtil.isNotNull(jsonObject.get("name"))){ if(StrUtil.isEmpty(jsonObject.get("name").toString())){ @@ -123,7 +123,7 @@ public class YxSystemGroupDataController { @DeleteMapping(value = "/yxSystemGroupData/{id}") @PreAuthorize("hasAnyRole('ADMIN','YXSYSTEMGROUPDATA_ALL','YXSYSTEMGROUPDATA_DELETE')") public ResponseEntity delete(@PathVariable Integer id){ - //if(id > 0) throw new BadRequestException("演示环境禁止操作"); + //if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作"); yxSystemGroupDataService.delete(id); return new ResponseEntity(HttpStatus.OK); } diff --git a/yshop-system/src/main/java/co/yixiang/modules/shop/rest/YxSystemUserLevelController.java b/yshop-system/src/main/java/co/yixiang/modules/shop/rest/YxSystemUserLevelController.java new file mode 100644 index 00000000..11c29e81 --- /dev/null +++ b/yshop-system/src/main/java/co/yixiang/modules/shop/rest/YxSystemUserLevelController.java @@ -0,0 +1,68 @@ +package co.yixiang.modules.shop.rest; + +import cn.hutool.core.util.StrUtil; +import co.yixiang.aop.log.Log; +import co.yixiang.exception.BadRequestException; +import co.yixiang.modules.shop.domain.YxSystemUserLevel; +import co.yixiang.modules.shop.service.YxSystemUserLevelService; +import co.yixiang.modules.shop.service.dto.YxSystemUserLevelQueryCriteria; +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 hupeng +* @date 2019-12-04 +*/ +@Api(tags = "YxSystemUserLevel管理") +@RestController +@RequestMapping("api") +public class YxSystemUserLevelController { + + @Autowired + private YxSystemUserLevelService yxSystemUserLevelService; + + @Log("查询") + @ApiOperation(value = "查询") + @GetMapping(value = "/yxSystemUserLevel") + @PreAuthorize("hasAnyRole('ADMIN','YXSYSTEMUSERLEVEL_ALL','YXSYSTEMUSERLEVEL_SELECT')") + public ResponseEntity getYxSystemUserLevels(YxSystemUserLevelQueryCriteria criteria, Pageable pageable){ + return new ResponseEntity(yxSystemUserLevelService.queryAll(criteria,pageable),HttpStatus.OK); + } + + @Log("新增") + @ApiOperation(value = "新增") + @PostMapping(value = "/yxSystemUserLevel") + @PreAuthorize("hasAnyRole('ADMIN','YXSYSTEMUSERLEVEL_ALL','YXSYSTEMUSERLEVEL_CREATE')") + public ResponseEntity create(@Validated @RequestBody YxSystemUserLevel resources){ + //if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作"); + resources.setAddTime(OrderUtil.getSecondTimestampTwo()); + return new ResponseEntity(yxSystemUserLevelService.create(resources),HttpStatus.CREATED); + } + + @Log("修改YxSystemUserLevel") + @ApiOperation(value = "修改YxSystemUserLevel") + @PutMapping(value = "/yxSystemUserLevel") + @PreAuthorize("hasAnyRole('ADMIN','YXSYSTEMUSERLEVEL_ALL','YXSYSTEMUSERLEVEL_EDIT')") + public ResponseEntity update(@Validated @RequestBody YxSystemUserLevel resources){ + //if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作"); + yxSystemUserLevelService.update(resources); + return new ResponseEntity(HttpStatus.NO_CONTENT); + } + + @Log("删除YxSystemUserLevel") + @ApiOperation(value = "删除YxSystemUserLevel") + @DeleteMapping(value = "/yxSystemUserLevel/{id}") + @PreAuthorize("hasAnyRole('ADMIN','YXSYSTEMUSERLEVEL_ALL','YXSYSTEMUSERLEVEL_DELETE')") + public ResponseEntity delete(@PathVariable Integer id){ + //if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作"); + yxSystemUserLevelService.delete(id); + return new ResponseEntity(HttpStatus.OK); + } +} \ No newline at end of file diff --git a/yshop-system/src/main/java/co/yixiang/modules/shop/rest/YxSystemUserTaskController.java b/yshop-system/src/main/java/co/yixiang/modules/shop/rest/YxSystemUserTaskController.java new file mode 100644 index 00000000..768e97a6 --- /dev/null +++ b/yshop-system/src/main/java/co/yixiang/modules/shop/rest/YxSystemUserTaskController.java @@ -0,0 +1,73 @@ +package co.yixiang.modules.shop.rest; + +import cn.hutool.core.util.StrUtil; +import co.yixiang.aop.log.Log; +import co.yixiang.exception.BadRequestException; +import co.yixiang.modules.shop.domain.YxSystemUserTask; +import co.yixiang.modules.shop.service.YxSystemUserTaskService; +import co.yixiang.modules.shop.service.dto.YxSystemUserTaskQueryCriteria; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Sort; +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 hupeng +* @date 2019-12-04 +*/ +@Api(tags = "YxSystemUserTask管理") +@RestController +@RequestMapping("api") +public class YxSystemUserTaskController { + + @Autowired + private YxSystemUserTaskService yxSystemUserTaskService; + + @Log("查询YxSystemUserTask") + @ApiOperation(value = "查询YxSystemUserTask") + @GetMapping(value = "/yxSystemUserTask") + @PreAuthorize("hasAnyRole('ADMIN','YXSYSTEMUSERTASK_ALL','YXSYSTEMUSERTASK_SELECT')") + public ResponseEntity getYxSystemUserTasks(YxSystemUserTaskQueryCriteria criteria, + Pageable pageable){ + Sort sort = new Sort(Sort.Direction.ASC, "levelId"); + Pageable pageableT = new PageRequest(pageable.getPageNumber(), + pageable.getPageSize(), + sort); + return new ResponseEntity(yxSystemUserTaskService.queryAll(criteria,pageableT), + HttpStatus.OK); + } + + @Log("新增YxSystemUserTask") + @ApiOperation(value = "新增YxSystemUserTask") + @PostMapping(value = "/yxSystemUserTask") + @PreAuthorize("hasAnyRole('ADMIN','YXSYSTEMUSERTASK_ALL','YXSYSTEMUSERTASK_CREATE')") + public ResponseEntity create(@Validated @RequestBody YxSystemUserTask resources){ + return new ResponseEntity(yxSystemUserTaskService.create(resources),HttpStatus.CREATED); + } + + @Log("修改YxSystemUserTask") + @ApiOperation(value = "修改YxSystemUserTask") + @PutMapping(value = "/yxSystemUserTask") + @PreAuthorize("hasAnyRole('ADMIN','YXSYSTEMUSERTASK_ALL','YXSYSTEMUSERTASK_EDIT')") + public ResponseEntity update(@Validated @RequestBody YxSystemUserTask resources){ + //if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作"); + yxSystemUserTaskService.update(resources); + return new ResponseEntity(HttpStatus.NO_CONTENT); + } + + @Log("删除YxSystemUserTask") + @ApiOperation(value = "删除YxSystemUserTask") + @DeleteMapping(value = "/yxSystemUserTask/{id}") + @PreAuthorize("hasAnyRole('ADMIN','YXSYSTEMUSERTASK_ALL','YXSYSTEMUSERTASK_DELETE')") + public ResponseEntity delete(@PathVariable Integer id){ + //if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作"); + yxSystemUserTaskService.delete(id); + return new ResponseEntity(HttpStatus.OK); + } +} \ No newline at end of file diff --git a/yshop-system/src/main/java/co/yixiang/modules/shop/rest/YxUserController.java b/yshop-system/src/main/java/co/yixiang/modules/shop/rest/YxUserController.java index 567fe044..c2c33063 100644 --- a/yshop-system/src/main/java/co/yixiang/modules/shop/rest/YxUserController.java +++ b/yshop-system/src/main/java/co/yixiang/modules/shop/rest/YxUserController.java @@ -2,6 +2,8 @@ package co.yixiang.modules.shop.rest; import cn.hutool.core.util.ObjectUtil; import co.yixiang.modules.shop.service.YxUserService; +import co.yixiang.modules.shop.service.dto.UserMoneyDTO; +import co.yixiang.modules.shop.service.dto.YxUserDTO; import co.yixiang.modules.wechat.service.YxSystemConfigService; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; @@ -85,4 +87,13 @@ public class YxUserController { return new ResponseEntity(HttpStatus.OK); } + @ApiOperation(value = "修改余额") + @PostMapping(value = "/yxUser/money") + @PreAuthorize("hasAnyRole('ADMIN','YXUSER_ALL','YXUSER_EDIT')") + public ResponseEntity updatePrice(@Validated @RequestBody UserMoneyDTO param){ + + yxUserService.updateMoney(param); + return new ResponseEntity(HttpStatus.NO_CONTENT); + } + } \ No newline at end of file diff --git a/yshop-system/src/main/java/co/yixiang/modules/shop/service/YxSystemUserLevelService.java b/yshop-system/src/main/java/co/yixiang/modules/shop/service/YxSystemUserLevelService.java new file mode 100644 index 00000000..d3f9c56f --- /dev/null +++ b/yshop-system/src/main/java/co/yixiang/modules/shop/service/YxSystemUserLevelService.java @@ -0,0 +1,66 @@ +package co.yixiang.modules.shop.service; + +import co.yixiang.modules.shop.domain.YxSystemUserLevel; +import co.yixiang.modules.shop.service.dto.YxSystemUserLevelDTO; +import co.yixiang.modules.shop.service.dto.YxSystemUserLevelQueryCriteria; +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 hupeng +* @date 2019-12-04 +*/ +//@CacheConfig(cacheNames = "yxSystemUserLevel") +public interface YxSystemUserLevelService { + + /** + * 查询数据分页 + * @param criteria + * @param pageable + * @return + */ + //@Cacheable + Map queryAll(YxSystemUserLevelQueryCriteria criteria, Pageable pageable); + + /** + * 查询所有数据不分页 + * @param criteria + * @return + */ + //@Cacheable + List queryAll(YxSystemUserLevelQueryCriteria criteria); + + /** + * 根据ID查询 + * @param id + * @return + */ + //@Cacheable(key = "#p0") + YxSystemUserLevelDTO findById(Integer id); + + /** + * 创建 + * @param resources + * @return + */ + //@CacheEvict(allEntries = true) + YxSystemUserLevelDTO create(YxSystemUserLevel resources); + + /** + * 编辑 + * @param resources + */ + //@CacheEvict(allEntries = true) + void update(YxSystemUserLevel resources); + + /** + * 删除 + * @param id + */ + //@CacheEvict(allEntries = true) + void delete(Integer id); +} \ No newline at end of file diff --git a/yshop-system/src/main/java/co/yixiang/modules/shop/service/YxSystemUserTaskService.java b/yshop-system/src/main/java/co/yixiang/modules/shop/service/YxSystemUserTaskService.java new file mode 100644 index 00000000..f800a892 --- /dev/null +++ b/yshop-system/src/main/java/co/yixiang/modules/shop/service/YxSystemUserTaskService.java @@ -0,0 +1,68 @@ +package co.yixiang.modules.shop.service; + +import co.yixiang.modules.shop.domain.YxSystemUserTask; +import co.yixiang.modules.shop.service.dto.YxSystemUserTaskDTO; +import co.yixiang.modules.shop.service.dto.YxSystemUserTaskQueryCriteria; +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 hupeng +* @date 2019-12-04 +*/ +//@CacheConfig(cacheNames = "yxSystemUserTask") +public interface YxSystemUserTaskService { + + /** + * 查询数据分页 + * @param criteria + * @param pageable + * @return + */ + //@Cacheable + Map queryAll(YxSystemUserTaskQueryCriteria criteria, Pageable pageable); + + /** + * 查询所有数据不分页 + * @param criteria + * @return + */ + //@Cacheable + List queryAll(YxSystemUserTaskQueryCriteria criteria); + + /** + * 根据ID查询 + * @param id + * @return + */ + //@Cacheable(key = "#p0") + YxSystemUserTaskDTO findById(Integer id); + + /** + * 创建 + * @param resources + * @return + */ + //@CacheEvict(allEntries = true) + YxSystemUserTaskDTO create(YxSystemUserTask resources); + + /** + * 编辑 + * @param resources + */ + //@CacheEvict(allEntries = true) + void update(YxSystemUserTask resources); + + /** + * 删除 + * @param id + */ + //@CacheEvict(allEntries = true) + void delete(Integer id); + + List> getTaskType(); +} \ No newline at end of file diff --git a/yshop-system/src/main/java/co/yixiang/modules/shop/service/YxUserService.java b/yshop-system/src/main/java/co/yixiang/modules/shop/service/YxUserService.java index 1b540e57..b65e2997 100644 --- a/yshop-system/src/main/java/co/yixiang/modules/shop/service/YxUserService.java +++ b/yshop-system/src/main/java/co/yixiang/modules/shop/service/YxUserService.java @@ -1,6 +1,7 @@ package co.yixiang.modules.shop.service; import co.yixiang.modules.shop.domain.YxUser; +import co.yixiang.modules.shop.service.dto.UserMoneyDTO; import co.yixiang.modules.shop.service.dto.YxUserDTO; import co.yixiang.modules.shop.service.dto.YxUserQueryCriteria; import org.springframework.data.domain.Pageable; @@ -14,6 +15,8 @@ import java.util.List; //@CacheConfig(cacheNames = "yxUser") public interface YxUserService { + void updateMoney(UserMoneyDTO param); + /** * 查询数据分页 * @param criteria diff --git a/yshop-system/src/main/java/co/yixiang/modules/shop/service/dto/UserMoneyDTO.java b/yshop-system/src/main/java/co/yixiang/modules/shop/service/dto/UserMoneyDTO.java new file mode 100644 index 00000000..adf4ac6c --- /dev/null +++ b/yshop-system/src/main/java/co/yixiang/modules/shop/service/dto/UserMoneyDTO.java @@ -0,0 +1,23 @@ +package co.yixiang.modules.shop.service.dto; + +import lombok.Data; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * @ClassName UserMoneyDTO + * @Author hupeng <610796224@qq.com> + * @Date 2019/12/4 + **/ +@Data +public class UserMoneyDTO implements Serializable { + @NotNull(message = "参数缺失") + private Integer uid; + @NotNull(message = "请选择修改余额方式") + private Integer ptype; + @NotNull(message = "金额必填") + @Min(message = "最低金额为0",value = 0) + private Double money; +} diff --git a/yshop-system/src/main/java/co/yixiang/modules/shop/service/dto/YxSystemUserLevelDTO.java b/yshop-system/src/main/java/co/yixiang/modules/shop/service/dto/YxSystemUserLevelDTO.java new file mode 100644 index 00000000..ad22e570 --- /dev/null +++ b/yshop-system/src/main/java/co/yixiang/modules/shop/service/dto/YxSystemUserLevelDTO.java @@ -0,0 +1,58 @@ +package co.yixiang.modules.shop.service.dto; + +import lombok.Data; +import java.math.BigDecimal; +import java.io.Serializable; + + +/** +* @author hupeng +* @date 2019-12-04 +*/ +@Data +public class YxSystemUserLevelDTO implements Serializable { + + private Integer id; + + // 商户id + private Integer merId; + + // 会员名称 + private String name; + + // 购买金额 + private BigDecimal money; + + // 有效时间 + private Integer validDate; + + // 是否为永久会员 + private Integer isForever; + + // 是否购买,1=购买,0=不购买 + private Integer isPay; + + // 是否显示 1=显示,0=隐藏 + private Integer isShow; + + // 会员等级 + private Integer grade; + + // 享受折扣 + private BigDecimal discount; + + // 会员卡背景 + private String image; + + // 会员图标 + private String icon; + + // 说明 + private String explain; + + // 添加时间 + private Integer addTime; + + // 是否删除.1=删除,0=未删除 + private Integer isDel; +} \ No newline at end of file diff --git a/yshop-system/src/main/java/co/yixiang/modules/shop/service/dto/YxSystemUserLevelQueryCriteria.java b/yshop-system/src/main/java/co/yixiang/modules/shop/service/dto/YxSystemUserLevelQueryCriteria.java new file mode 100644 index 00000000..074f2d5b --- /dev/null +++ b/yshop-system/src/main/java/co/yixiang/modules/shop/service/dto/YxSystemUserLevelQueryCriteria.java @@ -0,0 +1,13 @@ +package co.yixiang.modules.shop.service.dto; + +import lombok.Data; +import java.math.BigDecimal; +import co.yixiang.annotation.Query; + +/** +* @author hupeng +* @date 2019-12-04 +*/ +@Data +public class YxSystemUserLevelQueryCriteria{ +} \ No newline at end of file diff --git a/yshop-system/src/main/java/co/yixiang/modules/shop/service/dto/YxSystemUserTaskDTO.java b/yshop-system/src/main/java/co/yixiang/modules/shop/service/dto/YxSystemUserTaskDTO.java new file mode 100644 index 00000000..bd157673 --- /dev/null +++ b/yshop-system/src/main/java/co/yixiang/modules/shop/service/dto/YxSystemUserTaskDTO.java @@ -0,0 +1,47 @@ +package co.yixiang.modules.shop.service.dto; + +import lombok.Data; +import java.io.Serializable; + + +/** +* @author hupeng +* @date 2019-12-04 +*/ +@Data +public class YxSystemUserTaskDTO implements Serializable { + + private Integer id; + + // 任务名称 + private String name; + + // 配置原名 + private String realName; + + // 任务类型 + private String taskType; + + // 限定数 + private Integer number; + + // 等级id + private Integer levelId; + + private String levalName; + + // 排序 + private Integer sort; + + // 是否显示 + private Integer isShow; + + // 是否务必达成任务,1务必达成,0=满足其一 + private Integer isMust; + + // 任务说明 + private String illustrate; + + // 新增时间 + private Integer addTime; +} \ No newline at end of file diff --git a/yshop-system/src/main/java/co/yixiang/modules/shop/service/dto/YxSystemUserTaskQueryCriteria.java b/yshop-system/src/main/java/co/yixiang/modules/shop/service/dto/YxSystemUserTaskQueryCriteria.java new file mode 100644 index 00000000..ea06126f --- /dev/null +++ b/yshop-system/src/main/java/co/yixiang/modules/shop/service/dto/YxSystemUserTaskQueryCriteria.java @@ -0,0 +1,12 @@ +package co.yixiang.modules.shop.service.dto; + +import lombok.Data; +import co.yixiang.annotation.Query; + +/** +* @author hupeng +* @date 2019-12-04 +*/ +@Data +public class YxSystemUserTaskQueryCriteria{ +} \ No newline at end of file diff --git a/yshop-system/src/main/java/co/yixiang/modules/shop/service/impl/YxSystemUserLevelServiceImpl.java b/yshop-system/src/main/java/co/yixiang/modules/shop/service/impl/YxSystemUserLevelServiceImpl.java new file mode 100644 index 00000000..18d3ae24 --- /dev/null +++ b/yshop-system/src/main/java/co/yixiang/modules/shop/service/impl/YxSystemUserLevelServiceImpl.java @@ -0,0 +1,75 @@ +package co.yixiang.modules.shop.service.impl; + +import co.yixiang.modules.shop.domain.YxSystemUserLevel; +import co.yixiang.utils.ValidationUtil; +import co.yixiang.modules.shop.repository.YxSystemUserLevelRepository; +import co.yixiang.modules.shop.service.YxSystemUserLevelService; +import co.yixiang.modules.shop.service.dto.YxSystemUserLevelDTO; +import co.yixiang.modules.shop.service.dto.YxSystemUserLevelQueryCriteria; +import co.yixiang.modules.shop.service.mapper.YxSystemUserLevelMapper; +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.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 hupeng +* @date 2019-12-04 +*/ +@Service +@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) +public class YxSystemUserLevelServiceImpl implements YxSystemUserLevelService { + + @Autowired + private YxSystemUserLevelRepository yxSystemUserLevelRepository; + + @Autowired + private YxSystemUserLevelMapper yxSystemUserLevelMapper; + + @Override + public Map queryAll(YxSystemUserLevelQueryCriteria criteria, Pageable pageable){ + Page page = yxSystemUserLevelRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable); + return PageUtil.toPage(page.map(yxSystemUserLevelMapper::toDto)); + } + + @Override + public List queryAll(YxSystemUserLevelQueryCriteria criteria){ + return yxSystemUserLevelMapper.toDto(yxSystemUserLevelRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder))); + } + + @Override + public YxSystemUserLevelDTO findById(Integer id) { + Optional yxSystemUserLevel = yxSystemUserLevelRepository.findById(id); + ValidationUtil.isNull(yxSystemUserLevel,"YxSystemUserLevel","id",id); + return yxSystemUserLevelMapper.toDto(yxSystemUserLevel.get()); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public YxSystemUserLevelDTO create(YxSystemUserLevel resources) { + return yxSystemUserLevelMapper.toDto(yxSystemUserLevelRepository.save(resources)); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(YxSystemUserLevel resources) { + Optional optionalYxSystemUserLevel = yxSystemUserLevelRepository.findById(resources.getId()); + ValidationUtil.isNull( optionalYxSystemUserLevel,"YxSystemUserLevel","id",resources.getId()); + YxSystemUserLevel yxSystemUserLevel = optionalYxSystemUserLevel.get(); + yxSystemUserLevel.copy(resources); + yxSystemUserLevelRepository.save(yxSystemUserLevel); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delete(Integer id) { + yxSystemUserLevelRepository.deleteById(id); + } +} \ No newline at end of file diff --git a/yshop-system/src/main/java/co/yixiang/modules/shop/service/impl/YxSystemUserTaskServiceImpl.java b/yshop-system/src/main/java/co/yixiang/modules/shop/service/impl/YxSystemUserTaskServiceImpl.java new file mode 100644 index 00000000..526b0926 --- /dev/null +++ b/yshop-system/src/main/java/co/yixiang/modules/shop/service/impl/YxSystemUserTaskServiceImpl.java @@ -0,0 +1,114 @@ +package co.yixiang.modules.shop.service.impl; + +import co.yixiang.modules.shop.domain.YxSystemUserTask; +import co.yixiang.modules.shop.service.YxSystemUserLevelService; +import co.yixiang.utils.ValidationUtil; +import co.yixiang.modules.shop.repository.YxSystemUserTaskRepository; +import co.yixiang.modules.shop.service.YxSystemUserTaskService; +import co.yixiang.modules.shop.service.dto.YxSystemUserTaskDTO; +import co.yixiang.modules.shop.service.dto.YxSystemUserTaskQueryCriteria; +import co.yixiang.modules.shop.service.mapper.YxSystemUserTaskMapper; +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 hupeng +* @date 2019-12-04 +*/ +@Service +@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) +public class YxSystemUserTaskServiceImpl implements YxSystemUserTaskService { + + @Autowired + private YxSystemUserTaskRepository yxSystemUserTaskRepository; + + @Autowired + private YxSystemUserTaskMapper yxSystemUserTaskMapper; + + @Autowired + private YxSystemUserLevelService systemUserLevelService; + + @Override + public Map queryAll(YxSystemUserTaskQueryCriteria criteria, Pageable pageable){ + + Page page = yxSystemUserTaskRepository + .findAll((root, criteriaQuery, criteriaBuilder) + -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable); + + List systemUserTaskDTOS = yxSystemUserTaskMapper + .toDto(page.getContent()); + for (YxSystemUserTaskDTO systemUserTaskDTO : systemUserTaskDTOS) { + systemUserTaskDTO.setLevalName(systemUserLevelService + .findById(systemUserTaskDTO.getLevelId()).getName()); + } + + Map map = new LinkedHashMap<>(2); + map.put("content",systemUserTaskDTOS); + map.put("totalElements",page.getTotalElements()); + + return map; + + } + + @Override + public List queryAll(YxSystemUserTaskQueryCriteria criteria){ + return yxSystemUserTaskMapper.toDto(yxSystemUserTaskRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder))); + } + + @Override + public YxSystemUserTaskDTO findById(Integer id) { + Optional yxSystemUserTask = yxSystemUserTaskRepository.findById(id); + ValidationUtil.isNull(yxSystemUserTask,"YxSystemUserTask","id",id); + return yxSystemUserTaskMapper.toDto(yxSystemUserTask.get()); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public YxSystemUserTaskDTO create(YxSystemUserTask resources) { + return yxSystemUserTaskMapper.toDto(yxSystemUserTaskRepository.save(resources)); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(YxSystemUserTask resources) { + Optional optionalYxSystemUserTask = yxSystemUserTaskRepository.findById(resources.getId()); + ValidationUtil.isNull( optionalYxSystemUserTask,"YxSystemUserTask","id",resources.getId()); + YxSystemUserTask yxSystemUserTask = optionalYxSystemUserTask.get(); + yxSystemUserTask.copy(resources); + yxSystemUserTaskRepository.save(yxSystemUserTask); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delete(Integer id) { + yxSystemUserTaskRepository.deleteById(id); + } + + /** + * 任务类型 + * @return + */ + @Override + public List> getTaskType() { + List> list = null; + Map map = new LinkedHashMap<>(); + map.put("type","SatisfactionIntegral"); + map.put("type","SatisfactionIntegral"); + map.put("type","SatisfactionIntegral"); + map.put("type","SatisfactionIntegral"); + map.put("type","SatisfactionIntegral"); + map.put("type","SatisfactionIntegral"); + return null; + } +} \ No newline at end of file diff --git a/yshop-system/src/main/java/co/yixiang/modules/shop/service/impl/YxUserServiceImpl.java b/yshop-system/src/main/java/co/yixiang/modules/shop/service/impl/YxUserServiceImpl.java index f7468d56..3380df22 100644 --- a/yshop-system/src/main/java/co/yixiang/modules/shop/service/impl/YxUserServiceImpl.java +++ b/yshop-system/src/main/java/co/yixiang/modules/shop/service/impl/YxUserServiceImpl.java @@ -1,7 +1,12 @@ package co.yixiang.modules.shop.service.impl; +import cn.hutool.core.util.NumberUtil; +import co.yixiang.modules.shop.domain.YxUserBill; +import co.yixiang.modules.shop.service.YxUserBillService; +import co.yixiang.modules.shop.service.dto.UserMoneyDTO; import co.yixiang.modules.shop.service.mapper.YxUserMapper; import co.yixiang.modules.shop.domain.YxUser; +import co.yixiang.utils.OrderUtil; import co.yixiang.utils.ValidationUtil; import co.yixiang.modules.shop.repository.YxUserRepository; import co.yixiang.modules.shop.service.YxUserService; @@ -11,6 +16,8 @@ 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.math.BigDecimal; import java.util.Optional; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; @@ -33,6 +40,50 @@ public class YxUserServiceImpl implements YxUserService { @Autowired private YxUserMapper yxUserMapper; + @Autowired + private YxUserBillService yxUserBillService; + + @Override + @Transactional(rollbackFor = Exception.class) + public void updateMoney(UserMoneyDTO param) { + YxUserDTO userDTO = findById(param.getUid()); + Double newMoney = 0d; + String mark = ""; + String type = "system_add"; + Integer pm = 1; + String title = "系统增加余额"; + if(param.getPtype() == 1){ + mark = "系统增加了"+param.getMoney()+"余额"; + newMoney = NumberUtil.add(userDTO.getNowMoney(),param.getMoney()).doubleValue(); + }else{ + title = "系统减少余额"; + mark = "系统扣除了"+param.getMoney()+"余额"; + type = "system_sub"; + pm = 0; + newMoney = NumberUtil.sub(userDTO.getNowMoney(),param.getMoney()).doubleValue(); + if(newMoney < 0) newMoney = 0d; + + } + YxUser user = new YxUser(); + user.setUid(userDTO.getUid()); + user.setNowMoney(BigDecimal.valueOf(newMoney)); + update(user); + + YxUserBill userBill = new YxUserBill(); + userBill.setUid(userDTO.getUid()); + userBill.setLinkId("0"); + userBill.setPm(pm); + userBill.setTitle(title); + userBill.setCategory("now_money"); + userBill.setType(type); + userBill.setNumber(BigDecimal.valueOf(param.getMoney())); + userBill.setBalance(BigDecimal.valueOf(newMoney)); + userBill.setMark(mark); + userBill.setAddTime(OrderUtil.getSecondTimestampTwo()); + userBill.setStatus(1); + yxUserBillService.create(userBill); + } + @Override public Map queryAll(YxUserQueryCriteria criteria, Pageable pageable){ Page page = yxUserRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable); diff --git a/yshop-system/src/main/java/co/yixiang/modules/shop/service/mapper/YxSystemUserLevelMapper.java b/yshop-system/src/main/java/co/yixiang/modules/shop/service/mapper/YxSystemUserLevelMapper.java new file mode 100644 index 00000000..11432b16 --- /dev/null +++ b/yshop-system/src/main/java/co/yixiang/modules/shop/service/mapper/YxSystemUserLevelMapper.java @@ -0,0 +1,16 @@ +package co.yixiang.modules.shop.service.mapper; + +import co.yixiang.mapper.EntityMapper; +import co.yixiang.modules.shop.domain.YxSystemUserLevel; +import co.yixiang.modules.shop.service.dto.YxSystemUserLevelDTO; +import org.mapstruct.Mapper; +import org.mapstruct.ReportingPolicy; + +/** +* @author hupeng +* @date 2019-12-04 +*/ +@Mapper(componentModel = "spring",uses = {},unmappedTargetPolicy = ReportingPolicy.IGNORE) +public interface YxSystemUserLevelMapper extends EntityMapper { + +} \ No newline at end of file diff --git a/yshop-system/src/main/java/co/yixiang/modules/shop/service/mapper/YxSystemUserTaskMapper.java b/yshop-system/src/main/java/co/yixiang/modules/shop/service/mapper/YxSystemUserTaskMapper.java new file mode 100644 index 00000000..74d4ec32 --- /dev/null +++ b/yshop-system/src/main/java/co/yixiang/modules/shop/service/mapper/YxSystemUserTaskMapper.java @@ -0,0 +1,16 @@ +package co.yixiang.modules.shop.service.mapper; + +import co.yixiang.mapper.EntityMapper; +import co.yixiang.modules.shop.domain.YxSystemUserTask; +import co.yixiang.modules.shop.service.dto.YxSystemUserTaskDTO; +import org.mapstruct.Mapper; +import org.mapstruct.ReportingPolicy; + +/** +* @author hupeng +* @date 2019-12-04 +*/ +@Mapper(componentModel = "spring",uses = {},unmappedTargetPolicy = ReportingPolicy.IGNORE) +public interface YxSystemUserTaskMapper extends EntityMapper { + +} \ No newline at end of file diff --git a/yshop-system/src/main/java/co/yixiang/modules/system/rest/MenuController.java b/yshop-system/src/main/java/co/yixiang/modules/system/rest/MenuController.java index 822803ec..a60ff16e 100644 --- a/yshop-system/src/main/java/co/yixiang/modules/system/rest/MenuController.java +++ b/yshop-system/src/main/java/co/yixiang/modules/system/rest/MenuController.java @@ -1,6 +1,7 @@ package co.yixiang.modules.system.rest; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import co.yixiang.exception.BadRequestException; import co.yixiang.utils.SecurityUtils; import co.yixiang.aop.log.Log; @@ -74,7 +75,7 @@ public class MenuController { @PostMapping(value = "/menus") @PreAuthorize("hasAnyRole('ADMIN','MENU_ALL','MENU_CREATE')") public ResponseEntity create(@Validated @RequestBody Menu resources){ - //if(ObjectUtil.isNotNull(resources)) throw new BadRequestException("演示环境禁止操作"); + //if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作"); if (resources.getId() != null) { throw new BadRequestException("A new "+ ENTITY_NAME +" cannot already have an ID"); } @@ -85,7 +86,7 @@ public class MenuController { @PutMapping(value = "/menus") @PreAuthorize("hasAnyRole('ADMIN','MENU_ALL','MENU_EDIT')") public ResponseEntity update(@Validated(Menu.Update.class) @RequestBody Menu resources){ - //if(ObjectUtil.isNotNull(resources)) throw new BadRequestException("演示环境禁止操作"); + //if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作"); menuService.update(resources); return new ResponseEntity(HttpStatus.NO_CONTENT); } @@ -94,7 +95,7 @@ public class MenuController { @DeleteMapping(value = "/menus/{id}") @PreAuthorize("hasAnyRole('ADMIN','MENU_ALL','MENU_DELETE')") public ResponseEntity delete(@PathVariable Long id){ - //if(id>0) throw new BadRequestException("演示环境禁止操作"); + //if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作"); List menuList = menuService.findByPid(id); Set menuSet = new HashSet<>(); menuSet.add(menuService.findOne(id)); diff --git a/yshop-system/src/main/java/co/yixiang/modules/system/rest/PermissionController.java b/yshop-system/src/main/java/co/yixiang/modules/system/rest/PermissionController.java index 28109d16..e9d7b5b1 100644 --- a/yshop-system/src/main/java/co/yixiang/modules/system/rest/PermissionController.java +++ b/yshop-system/src/main/java/co/yixiang/modules/system/rest/PermissionController.java @@ -1,6 +1,7 @@ package co.yixiang.modules.system.rest; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import co.yixiang.exception.BadRequestException; import co.yixiang.aop.log.Log; import co.yixiang.modules.system.domain.Permission; @@ -67,7 +68,7 @@ public class PermissionController { @PutMapping(value = "/permissions") @PreAuthorize("hasAnyRole('ADMIN','PERMISSION_ALL','PERMISSION_EDIT')") public ResponseEntity update(@Validated(Permission.Update.class) @RequestBody Permission resources){ - //if(ObjectUtil.isNotNull(resources)) throw new BadRequestException("演示环境禁止操作"); + //if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作"); permissionService.update(resources); return new ResponseEntity(HttpStatus.NO_CONTENT); } @@ -76,7 +77,7 @@ public class PermissionController { @DeleteMapping(value = "/permissions/{id}") @PreAuthorize("hasAnyRole('ADMIN','PERMISSION_ALL','PERMISSION_DELETE')") public ResponseEntity delete(@PathVariable Long id){ - //if(id > 0) throw new BadRequestException("演示环境禁止操作"); + //if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作"); List permissions = permissionService.findByPid(id); Set permissionSet = new HashSet<>(); permissionSet.add(permissionMapper.toEntity(permissionService.findById(id))); diff --git a/yshop-system/src/main/java/co/yixiang/modules/system/rest/RoleController.java b/yshop-system/src/main/java/co/yixiang/modules/system/rest/RoleController.java index ffbfdea1..03b8a709 100644 --- a/yshop-system/src/main/java/co/yixiang/modules/system/rest/RoleController.java +++ b/yshop-system/src/main/java/co/yixiang/modules/system/rest/RoleController.java @@ -2,6 +2,7 @@ package co.yixiang.modules.system.rest; import cn.hutool.core.lang.Dict; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import co.yixiang.exception.BadRequestException; import co.yixiang.utils.SecurityUtils; import co.yixiang.utils.ThrowableUtil; @@ -84,7 +85,7 @@ public class RoleController { @PutMapping(value = "/roles") @PreAuthorize("hasAnyRole('ADMIN','ROLES_ALL','ROLES_EDIT')") public ResponseEntity update(@Validated(Role.Update.class) @RequestBody Role resources){ - //if(ObjectUtil.isNotNull(resources)) throw new BadRequestException("演示环境禁止操作"); + //if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作"); roleService.update(resources); return new ResponseEntity(HttpStatus.NO_CONTENT); } @@ -93,7 +94,7 @@ public class RoleController { @PutMapping(value = "/roles/permission") @PreAuthorize("hasAnyRole('ADMIN','ROLES_ALL','ROLES_EDIT')") public ResponseEntity updatePermission(@RequestBody Role resources){ - //if(ObjectUtil.isNotNull(resources)) throw new BadRequestException("演示环境禁止操作"); + //if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作"); roleService.updatePermission(resources,roleService.findById(resources.getId())); return new ResponseEntity(HttpStatus.NO_CONTENT); } @@ -102,7 +103,7 @@ public class RoleController { @PutMapping(value = "/roles/menu") @PreAuthorize("hasAnyRole('ADMIN','ROLES_ALL','ROLES_EDIT')") public ResponseEntity updateMenu(@RequestBody Role resources){ - // + //if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作"); roleService.updateMenu(resources,roleService.findById(resources.getId())); return new ResponseEntity(HttpStatus.NO_CONTENT); } @@ -111,7 +112,7 @@ public class RoleController { @DeleteMapping(value = "/roles/{id}") @PreAuthorize("hasAnyRole('ADMIN','ROLES_ALL','ROLES_DELETE')") public ResponseEntity delete(@PathVariable Long id){ - //if(id > 0) throw new BadRequestException("演示环境禁止操作"); + //if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作"); try { roleService.delete(id); }catch (Throwable e){ diff --git a/yshop-system/src/main/java/co/yixiang/modules/system/rest/UserController.java b/yshop-system/src/main/java/co/yixiang/modules/system/rest/UserController.java index a9b11ae1..011e7efa 100644 --- a/yshop-system/src/main/java/co/yixiang/modules/system/rest/UserController.java +++ b/yshop-system/src/main/java/co/yixiang/modules/system/rest/UserController.java @@ -1,6 +1,7 @@ package co.yixiang.modules.system.rest; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import co.yixiang.config.DataScope; import co.yixiang.domain.VerificationCode; import co.yixiang.exception.BadRequestException; @@ -125,7 +126,7 @@ public class UserController { @DeleteMapping(value = "/users/{id}") @PreAuthorize("hasAnyRole('ADMIN','USER_ALL','USER_DELETE')") public ResponseEntity delete(@PathVariable Long id){ - //if(id > 0) throw new BadRequestException("演示环境禁止操作"); + //if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作"); Integer currentLevel = Collections.min(roleService.findByUsers_Id(SecurityUtils.getUserId()).stream().map(RoleSmallDTO::getLevel).collect(Collectors.toList())); Integer optLevel = Collections.min(roleService.findByUsers_Id(id).stream().map(RoleSmallDTO::getLevel).collect(Collectors.toList())); @@ -143,7 +144,7 @@ public class UserController { */ @PostMapping(value = "/users/updatePass") public ResponseEntity updatePass(@RequestBody UserPassVo user){ - //if(ObjectUtil.isNotNull(user)) throw new BadRequestException("演示环境禁止操作"); + //if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作"); UserDetails userDetails = SecurityUtils.getUserDetails(); if(!userDetails.getPassword().equals(EncryptUtils.encryptPassword(user.getOldPass()))){ throw new BadRequestException("修改失败,旧密码错误"); @@ -162,7 +163,7 @@ public class UserController { */ @PostMapping(value = "/users/updateAvatar") public ResponseEntity updateAvatar(@RequestParam MultipartFile file){ - //if(ObjectUtil.isNotNull(file)) throw new BadRequestException("演示环境禁止操作"); + //if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作"); userService.updateAvatar(file); return new ResponseEntity(HttpStatus.OK); } diff --git a/yshop-system/src/main/java/co/yixiang/modules/wechat/rest/YxSystemConfigController.java b/yshop-system/src/main/java/co/yixiang/modules/wechat/rest/YxSystemConfigController.java index bef6f0f3..e1db54a5 100644 --- a/yshop-system/src/main/java/co/yixiang/modules/wechat/rest/YxSystemConfigController.java +++ b/yshop-system/src/main/java/co/yixiang/modules/wechat/rest/YxSystemConfigController.java @@ -44,7 +44,7 @@ public class YxSystemConfigController { @PostMapping(value = "/yxSystemConfig") @PreAuthorize("hasAnyRole('ADMIN','YXSYSTEMCONFIG_ALL','YXSYSTEMCONFIG_CREATE')") public ResponseEntity create(@RequestBody String jsonStr){ - //if(StrUtil.isNotEmpty(jsonStr)) throw new BadRequestException("演示环境禁止操作"); + //if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作"); JSONObject jsonObject = JSON.parseObject(jsonStr); jsonObject.forEach( (key,value)->{ diff --git a/yshop-tools/pom.xml b/yshop-tools/pom.xml index 5341a16e..d8afba33 100644 --- a/yshop-tools/pom.xml +++ b/yshop-tools/pom.xml @@ -5,7 +5,7 @@ yshop co.yixiang - 1.3 + 1.4 4.0.0 @@ -23,7 +23,7 @@ co.yixiang yshop-logging - 1.3 + 1.4 diff --git a/yshop-tools/src/main/java/co/yixiang/rest/QiniuController.java b/yshop-tools/src/main/java/co/yixiang/rest/QiniuController.java index f5f7a481..29690481 100644 --- a/yshop-tools/src/main/java/co/yixiang/rest/QiniuController.java +++ b/yshop-tools/src/main/java/co/yixiang/rest/QiniuController.java @@ -2,6 +2,7 @@ package co.yixiang.rest; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import co.yixiang.exception.BadRequestException; import lombok.extern.slf4j.Slf4j; import co.yixiang.aop.log.Log; @@ -40,7 +41,7 @@ public class QiniuController { @Log("配置七牛云存储") @PutMapping(value = "/qiNiuConfig") public ResponseEntity emailConfig(@Validated @RequestBody QiniuConfig qiniuConfig){ - //if(ObjectUtil.isNotNull(qiniuConfig)) throw new BadRequestException("演示环境禁止操作"); + //if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作"); qiNiuService.update(qiniuConfig); qiNiuService.update(qiniuConfig.getType()); return new ResponseEntity(HttpStatus.OK); @@ -60,7 +61,7 @@ public class QiniuController { @Log("上传文件") @PostMapping(value = "/qiNiuContent") public ResponseEntity upload(@RequestParam MultipartFile file){ - //if(ObjectUtil.isNotNull(file)) throw new BadRequestException("演示环境禁止操作"); + //if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作"); QiniuContent qiniuContent = qiNiuService.upload(file,qiNiuService.find()); Map map = new HashMap(3); map.put("id",qiniuContent.getId()); @@ -90,7 +91,7 @@ public class QiniuController { @Log("下载文件") @GetMapping(value = "/qiNiuContent/download/{id}") public ResponseEntity download(@PathVariable Long id){ - //if(id > 0) throw new BadRequestException("演示环境禁止操作"); + //if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作"); Map map = new HashMap(1); map.put("url", qiNiuService.download(qiNiuService.findByContentId(id),qiNiuService.find())); return new ResponseEntity(map,HttpStatus.OK); @@ -105,7 +106,7 @@ public class QiniuController { @Log("删除文件") @DeleteMapping(value = "/qiNiuContent/{id}") public ResponseEntity delete(@PathVariable Long id){ - //if(id > 0) throw new BadRequestException("演示环境禁止操作"); + //if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作"); qiNiuService.delete(qiNiuService.findByContentId(id),qiNiuService.find()); return new ResponseEntity(HttpStatus.OK); } @@ -118,7 +119,7 @@ public class QiniuController { @Log("删除图片") @DeleteMapping(value = "/qiNiuContent") public ResponseEntity deleteAll(@RequestBody Long[] ids) { - // if(ArrayUtil.isNotEmpty(ids)) throw new BadRequestException("演示环境禁止操作"); + //if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作"); qiNiuService.deleteAll(ids, qiNiuService.find()); return new ResponseEntity(HttpStatus.OK); }