Browse Source

Merge branch 'master' of http://git.ydd100.cn/wangtao01/liebao-cloud

# Conflicts:
#	lb-feginclient/src/main/java/com/ydd/api/EleRetailApi.java
#	lb-feginclient/src/main/java/com/ydd/api/ElemeApi.java
#	lb-feginclient/src/main/java/com/ydd/api/PrintApi.java
wangtao 3 years ago
parent
commit
4f8af42ea9

+ 1 - 2
lb-feginclient/src/main/java/com/ydd/api/DeliveryCallbackApi.java

@@ -24,7 +24,6 @@ public interface DeliveryCallbackApi {
     @PostMapping(value="/callback/apt")
     ResObject<AptCallbackOrderVo> doOrder(@RequestParam("params")Map<String, String> params);
 
-
     @PostMapping(value="/callback/fengniaoToken")
     ResObject<FengniaoV3Token> doToken(@RequestParam("code") String code,@RequestParam("merchantId") String merchantId);
 
@@ -35,7 +34,7 @@ public interface DeliveryCallbackApi {
     ResObject<FengniaoV3CallbackOrderVo> doFengniaoOrder(@RequestBody JSONObject params);
 
     @PostMapping(value="/callback/huolalaAuth")
-   String huolalaAuth(@RequestParam("code") String code);
+    String huolalaAuth(@RequestParam("code") String code);
 
     @PostMapping(value="/callback/huolalaOrder")
     ResObject<HuolalaCallbackOrderVo> huolalaOrder(@RequestBody JSONObject params, @RequestParam("token") String token);

+ 6 - 6
lb-feginclient/src/main/java/com/ydd/api/MeiTuanApi.java

@@ -15,21 +15,21 @@ import java.util.Map;
 public interface MeiTuanApi {
 
     @PostMapping(value="/meituan/syncRiderPosition")
-    public ResObject syncRiderPosition(@RequestBody SyncRiderPositionStatusVo syncRiderPositionVo);
+    ResObject syncRiderPosition(@RequestBody SyncRiderPositionStatusVo syncRiderPositionVo);
     @PostMapping(value="/meituan/shopReleaseBindUrl")
-    public String shopReleaseBindUrl(@RequestParam("token")String token,@RequestParam("shopCode")String shopCode,@RequestParam("businessId")String businessId);
+    String shopReleaseBindUrl(@RequestParam("token") String token, @RequestParam("shopCode") String shopCode, @RequestParam("businessId") String businessId);
     @PostMapping(value="/meituan/storeMapUrl")
-    public String storeMapUrl(@RequestParam("shopCode")String shopCode,@RequestParam("shopName")String shopName,@RequestParam("mtBindType")Integer mtBindType);
+    String storeMapUrl(@RequestParam("shopCode") String shopCode, @RequestParam("shopName") String shopName, @RequestParam("mtBindType") Integer mtBindType);
     @PostMapping(value="/meituan/confirmOrder")
-    public ResObject confirmOrder(@RequestBody ConfirmOrderVo confirmOrderVo);
+    ResObject confirmOrder(@RequestBody ConfirmOrderVo confirmOrderVo);
     @PostMapping(value="/meituan/doStoreMap")
-    public ResObject<MeituanShopMappingResultVo> doStoreMap(@RequestParam Map<String, String> params);
+    ResObject<MeituanShopMappingResultVo> doStoreMap(@RequestParam Map<String, String> params);
     @PostMapping(value="/meituan/doShopReleaseBind")
     ResObject<MeituanShopReleaseBindResultVo> doShopReleaseBind(@RequestParam Map<String, String> params);
     @PostMapping(value="/meituan/doPrivacyNoDecline")
     ResObject doPrivacyNoDecline(@RequestParam Map<String, String> params);
     @PostMapping(value="/meituan/doRemindOrder")
-   ResObject<MeituanRemindOrderResultVo> doRemindOrder(@RequestParam Map<String, String> params);
+    ResObject<MeituanRemindOrderResultVo> doRemindOrder(@RequestParam Map<String, String> params);
 
     @PostMapping(value="/meituan/doOrderPartRefund")
     ResObject<MeituanOrderPartRefundResultVo> doOrderPartRefund(@RequestParam Map<String, String> params);

+ 29 - 0
lb-module/src/main/java/com/ydd/module/dto/HelpDetailDto.java

@@ -0,0 +1,29 @@
+package com.ydd.module.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.util.List;
+
+/**
+ * Project:lb-server
+ * Class:ShopDto
+ * Description:TODO
+ * Time:2021/3/1 17:43
+ *
+ * @author zoe
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+public class HelpDetailDto {
+
+   private Integer id;
+
+
+   private String title;
+
+   private String content;
+}

+ 33 - 0
lb-module/src/main/java/com/ydd/module/dto/HelpDto.java

@@ -0,0 +1,33 @@
+package com.ydd.module.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.util.List;
+
+/**
+ * Project:lb-server
+ * Class:ShopDto
+ * Description:TODO
+ * Time:2021/3/1 17:43
+ *
+ * @author zoe
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+public class HelpDto {
+
+    @ApiModelProperty(value = "一级栏目ID")
+    private Integer firstColumnId;
+
+    @ApiModelProperty(value = "一级栏目名称")
+    private String firstColumnNames;
+
+    @ApiModelProperty(value = "帮助中心id")
+    private Integer id;
+
+    private List<HelpSecondDto> HelpSeconds;
+}

+ 27 - 0
lb-module/src/main/java/com/ydd/module/dto/HelpSecondDto.java

@@ -0,0 +1,27 @@
+package com.ydd.module.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+/**
+ * Project:lb-server
+ * Class:ShopDto
+ * Description:TODO
+ * Time:2021/3/1 17:43
+ *
+ * @author zoe
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+public class HelpSecondDto {
+
+    @ApiModelProperty(value = "二级栏目ID")
+    private Integer secondColumnId;
+
+    @ApiModelProperty(value = "二级栏目名称")
+    private String secondColumnNames;
+
+}

+ 24 - 0
lb-module/src/main/java/com/ydd/module/request/OrderMarkerRequest.java

@@ -0,0 +1,24 @@
+package com.ydd.module.request;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * PC订单角标
+ *
+ * @author 叶君翔
+ * @date 2021/11/03 16:12
+ */
+@Data
+public class OrderMarkerRequest {
+
+    /**
+     * shopId,多个逗号隔开
+     */
+    private String searchShopIdStr;
+
+    private List<Long> shopIds;
+
+
+}

+ 28 - 0
lb-module/src/main/java/com/ydd/module/service/impl/AutoFinishOrder.java

@@ -0,0 +1,28 @@
+package com.ydd.module.service.impl;
+
+import com.ydd.module.service.IOrderService;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+/**
+ * 外卖订单超过6小时未配送自动变为其他平台完成
+ */
+@Slf4j
+@Component
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+public class AutoFinishOrder {
+
+    private final IOrderService iOrderService;
+
+
+    /**
+     * 自动30分钟
+     */
+    //@Scheduled(cron = "0 */1 * * * ? ")
+    public void finish() {
+        iOrderService.autofinish();
+    }
+
+}

+ 61 - 0
lb-module/src/main/java/com/ydd/module/service/impl/WaimaiFoodImgServiceImpl.java

@@ -0,0 +1,61 @@
+package com.ydd.module.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydd.api.EleRetailApi;
+import com.ydd.api.ElemeApi;
+import com.ydd.api.MeiTuanApi;
+import com.ydd.module.domain.Shop;
+import com.ydd.module.domain.ShopWaimai;
+import com.ydd.module.domain.WaimaiFoodImg;
+import com.ydd.module.mapper.WaimaiFoodImgMapper;
+import com.ydd.module.service.IShopWaimaiService;
+import com.ydd.module.service.IWaimaiFoodImgService;
+import com.ydd.third.common.vo.ResObject;
+import com.ydd.third.common.vo.waimai.eleme.api.entity.product.OItem;
+import com.ydd.third.waimai.eleRetai.vo.MeEleNewretailItemGatewayClientDtoDomainmodelSkuPhotoDTO;
+import com.ydd.third.waimai.eleRetai.vo.MeEleNewretailItemGatewayClientDtoDomainmodelSkuQueryDetailResultDTO;
+import com.ydd.third.waimai.eleRetai.vo.MeEleNewretailItemGatewayClientDtoDomainmodelSkuQueryResultDTO;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 【请填写功能名称】Service业务层处理
+ *
+ * @author douya
+ * @date 2021-09-22
+ */
+@Service
+public class WaimaiFoodImgServiceImpl extends ServiceImpl<WaimaiFoodImgMapper, WaimaiFoodImg> implements IWaimaiFoodImgService {
+
+
+
+    @Autowired
+    private IShopWaimaiService iShopWaimaiService;
+
+    @Override
+    public List<WaimaiFoodImg> queryList(WaimaiFoodImg waimaiFoodImg) {
+        LambdaQueryWrapper<WaimaiFoodImg> lqw = Wrappers.lambdaQuery();
+        if (StringUtils.isNotBlank(waimaiFoodImg.getSkuId())) {
+            lqw.eq(WaimaiFoodImg::getSkuId, waimaiFoodImg.getSkuId());
+        }
+        if (StringUtils.isNotBlank(waimaiFoodImg.getImg())) {
+            lqw.eq(WaimaiFoodImg::getImg, waimaiFoodImg.getImg());
+        }
+        if (StringUtils.isNotBlank(waimaiFoodImg.getImgs())) {
+            lqw.eq(WaimaiFoodImg::getImgs, waimaiFoodImg.getImgs());
+        }
+        return this.list(lqw);
+    }
+
+}

+ 16 - 0
lb-module/src/main/java/com/ydd/module/vo/BaseVo.java

@@ -0,0 +1,16 @@
+package com.ydd.module.vo;
+
+import java.io.Serializable;
+
+/**
+ * 基础的VO
+ *
+ * @author douya
+ * @description
+ * @date 2021/1/21
+ */
+public class BaseVo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+}

+ 20 - 0
lb-third/lb-third-common/src/main/java/com/ydd/third/print/request/PrintDto.java

@@ -0,0 +1,20 @@
+package com.ydd.third.print.request;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * 打印订单
+ */
+@Data
+public class PrintDto implements Serializable {
+
+    PrintOrderDto printOrderDto;
+    List<PrintDeviceDto> deviceDtoList;
+    PrintDeviceDto printDeviceDto;
+    Boolean isforce;
+    Long shopId;
+}

+ 21 - 0
lb-third/lb-third-waimai/src/main/java/com/ydd/WaiMaiApplication.java

@@ -0,0 +1,21 @@
+package com.ydd;
+
+import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
+import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
+
+/**
+ * 启动程序
+ * 
+ * @author
+ */
+@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class,DruidDataSourceAutoConfigure.class,SecurityAutoConfiguration.class })
+public class WaiMaiApplication
+{
+    public static void main(String[] args)
+    {
+        SpringApplication.run(WaiMaiApplication.class, args);
+    }
+}

+ 1 - 0
lb-third/lb-third-waimai/src/main/resources/META-INF/spring-devtools.properties

@@ -0,0 +1 @@
+restart.include.json=/com.alibaba.fastjson.*.jar

+ 122 - 0
lb-third/lb-third-waimai/src/main/resources/application-dev.yml

@@ -0,0 +1,122 @@
+# 数据源配置
+spring:
+  # redis 配置
+  redis:
+    # 地址
+    host: 153.37.175.42
+    # 端口,默认为6379
+    port: 6379
+    # 数据库索引
+    database: 7
+    # 密码
+    password: yingdiandian2015
+    # 连接超时时间
+    timeout: 3000
+    lettuce:
+      pool:
+        # 连接池中的最小空闲连接
+        min-idle: 1
+        # 连接池中的最大空闲连接
+        max-idle: 10
+        # 连接池的最大数据库连接数
+        max-active: 20
+        # #连接池最大阻塞等待时间(使用负值表示没有限制)
+        max-wait: -1ms
+##外卖平台配置参数
+waimai:
+  isTest: true
+  meituan:
+    developerId: 106407
+    signKey: f6oknqt6fla2oguu
+  ele:
+    appKey: DUR5tShWho
+    appScert: d412b07f33edf88cfff9a4d9a8cfb27dd5058768
+    callbackUrl: http://153.37.175.42:8086/app/waimai/eleme/callback/doOAuth
+    callBackState: lbelmxzy
+  eleretail:
+    url: https://nr.ele.me/eleme_nr_bfe_retail/api_bind_shop#/bindShop?source=07EA0D6AC36FB8B025FEB8FB7F9527B0832CB9D195CCB8BE&fromSys=2
+    appid: 34590482
+    appScert: pKmcIwTxER
+
+##同城配送平台配置参数
+delivery:
+  isTest: true
+  dada:
+    appKey: dadad28023664e5b2fd
+    appSecret: 937d2dd8ff9ac217b34b1dc429c52092
+    merchantId: 73753
+    redirectUrl: http://153.37.175.42:8086/app/delivery/dada/callback/doAuth
+
+  dadazy:
+    appKey: dada31b398bd1ed6b86
+    appSecret: fa2d6e6f742262f3ba2b79602159f58f
+    merchantId: 73753
+    redirectUrl: http://153.37.175.42:8086/app/delivery/dada/yz/callback/doAuth
+
+  shunfeng:
+    developerId: 1590983881
+    developerKey: e0a46758f99f6d082e7dcd2dab449963
+
+#  shunfeng:
+#    developerId: 1596294666
+#    developerKey: 696991000ea806c7effb23d9011e0b5f
+
+  shansong:
+    open:
+      appId: ssiIzMnFW4Ymk4tsv
+      appSecret: 1fsP39XfjktPMMjmAGo5MdlPUVOie8Fm
+
+    sh:
+      appId: ssPSLjO9ByGWSfl1Q
+      appSecret: 7UQ2VB0tmYrf0ePVoHqHgM4fvRyjoEMw
+      shopId: 20000000000000978
+
+  dwd:
+    appKey:
+    appSecret:
+    callbackUrl:
+
+  uupt:
+    appId: ccba8bd4a2d54a2fb6df97e87979f303
+    appKey: 2815a7a1f8e3405d81fd6263683ec4e7
+    openid: 910a0dfd12bb4bc0acec147bcb1ae246
+    callbackUrl: http://153.37.175.42:8086/app/delivery/uupt/callback/doOrder
+
+  meituan:
+    developerId: 106407
+    signKey: f6oknqt6fla2oguu
+    authState: meituanauth2021
+    businessId: 19
+
+  fengniao:
+    appId: 1327047163140400236
+    secretKey: 94b12ed3-5120-42f3-a9bc-8d78550c9797
+    devId: 118323307
+    chainstoreType: 2
+
+  aipaotui:
+    appId: 9d45d875ad81b55ed146cf64f2763020
+    appKey: 0f05a5d3f930cb3606b05fd392938743
+#    后台异步通知url地址-订单
+    notifyUrl: http://153.37.175.42:8086/app/delivery/aipt/callback/doOrder
+#    重定向url地址-绑定成功跳转的页面
+    redirectUrl: http://h5.liebaoai.cn/bing-success.html
+    phone: 18914090929
+
+  kuaifu:
+    appId: kfw_dTuBCMsnyG0C6ipJ
+    accessToken: 57af4d892cdf7fa5c372e3dae3a72d122b402fd7
+    openid: 1999328177
+    appSecret: kbd8WmrIZXvRdt36YBuQaRc2gc8j7LfH
+#    appId: kfw_QNx6S1xLezNJowbk
+#    accessToken: 91306e09e9cc6671127f6b3f55befcbc0e65fe5d
+#    openid: 2203183468
+#    appSecret: WcWeIQ5NsZ3cZLIghtmhTAR7bEGu7beN
+    callbackUrl: http://153.37.175.42:8086/app/delivery/kf/callback/doOrder
+    redirectUrl: http://153.37.175.42:8086/app/delivery/kf/callback/doAuth
+
+  huolala:
+    appKey: ZuDVdmFiJONYqayxCikQM30YUmkdGMRr
+    appSecret: 9dK84tHmuE3OSOonPzCFjWDrQtkIRV04
+    callbackUrl: http://153.37.175.42:8086/app/delivery/huolala/callback/doAuth
+    orderCallBackUrl: http://153.37.175.42:8086/app/delivery/huolala/callback/doOrder

+ 44 - 0
lb-third/lb-third-waimai/src/main/resources/application-prod.yml

@@ -0,0 +1,44 @@
+# 数据源配置
+spring:
+  # redis 配置
+  redis:
+    # 地址
+    host: 192.168.16.41
+    # 端口,默认为6379
+    port: 6379
+    # 数据库索引
+    database: 0
+    # 密码
+    password: Liebao%2021
+    # 连接超时时间
+    timeout: 5000
+    lettuce:
+      pool:
+        # 连接池中的最小空闲连接
+        min-idle: 2
+        # 连接池中的最大空闲连接
+        max-idle: 8
+        # 连接池的最大数据库连接数
+        max-active: 8
+        # #连接池最大阻塞等待时间(使用负值表示没有限制)
+        max-wait: -1ms
+##外卖平台配置参数
+waimai:
+  isTest: false
+  meituan:
+    developerId: 106406
+    signKey: u5q8uyvu0ajtxta5
+
+  ele:
+    appId: 77457529
+#    appKey: DUR5tShWho
+#    appScert: d412b07f33edf88cfff9a4d9a8cfb27dd5058768
+    appKey: 3HGXX8q6Rh
+    appScert: 426a7d5ee89a3c58525569305b52fa95de7696b0
+    callbackUrl: https://api.liebaoai.cn/app/waimai/eleme/callback/doOAuth
+    callBackState: lbelmxzy
+
+  eleretail:
+    url: https://nr.ele.me/eleme_nr_bfe_retail/api_bind_shop#/bindShop?source=30763AE66C2D05A84C8F67FAE3806674D7BB533E42CED969&fromSys=2
+    appid: 49547270
+    appScert: bsyk7rDtTap

+ 72 - 0
lb-third/lb-third-waimai/src/main/resources/application.yml

@@ -0,0 +1,72 @@
+# 项目相关配置
+project:
+  # 名称
+  name: liebao
+  # 版本
+  version: 1.0
+  # 版权年份
+  copyrightYear: 2021
+  # 实例演示开关
+  demoEnabled: true
+  # 文件路径,使用jvm系统变量,兼容windows和linux
+  profile: ${user.dir}/upload/uploadPath
+  # 获取ip地址开关
+  addressEnabled: false
+  # 验证码类型 math 数组计算 char 字符验证
+  captchaType: math
+
+# 开发环境配置
+server:
+  # 服务器的HTTP端口,默认为8080
+  port: 8083
+  servlet:
+    # 应用的访问路径
+    context-path: /delivery
+  # undertow 配置
+  undertow:
+    # HTTP post内容的最大大小。当值为-1时,默认值为大小是无限的
+    max-http-post-size: -1
+    # 以下的配置会影响buffer,这些buffer会用于服务器连接的IO操作,有点类似netty的池化内存管理
+    # 每块buffer的空间大小,越小的空间被利用越充分
+    buffer-size: 512
+    # 设置IO线程数, 它主要执行非阻塞的任务,它们会负责多个连接, 默认设置每个CPU核心一个线程
+    io-threads: 8
+    # 阻塞任务线程池, 当执行类似servlet请求阻塞操作, undertow会从这个线程池中取得线程,它的值设置取决于系统的负载
+    worker-threads: 256
+    # 是否分配的直接内存
+    direct-buffers: true
+#  # tomcat 配置
+#  tomcat:
+#    # tomcat的URI编码
+#    uri-encoding: UTF-8
+#    # tomcat最大线程数,默认为200
+#    max-threads: 500
+#    # Tomcat启动初始化的线程数,默认值25
+#    min-spare-threads: 30
+
+# 日志配置
+logging:
+  level:
+    com.ydd: @logging.level@
+    org.springframework: warn
+
+# Spring配置
+spring:
+  # 资源信息
+  messages:
+    # 国际化资源文件路径
+    basename: i18n/messages
+  profiles:
+    active: @profiles.active@
+  # 文件上传
+  servlet:
+    multipart:
+      # 单个文件大小
+      max-file-size: 50MB
+      # 设置总上传的文件大小
+      max-request-size: 100MB
+  # 服务模块
+  devtools:
+    restart:
+      # 热部署开关
+      enabled: true

+ 2 - 0
lb-third/lb-third-waimai/src/main/resources/banner.txt

@@ -0,0 +1,2 @@
+Application Version: ${ydd.version}
+Spring Boot Version: ${spring-boot.version}

+ 102 - 0
lb-third/lb-third-waimai/src/main/resources/logback.xml

@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+    <property name="log.path" value="./logs"/>
+    <!--<property name="console.log.pattern"-->
+              <!--value="%red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{36}%n) - %msg%n"/>-->
+    <property name="log.pattern" value="%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"/>
+
+	<!-- 控制台输出 -->
+	<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
+		<encoder>
+			<pattern>${log.pattern}</pattern>
+            <charset>utf-8</charset>
+		</encoder>
+	</appender>
+	
+	<!-- 系统日志输出 -->
+	<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
+	    <file>${log.path}/sys-info.log</file>
+        <!-- 循环政策:基于时间创建日志文件 -->
+		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 日志文件名格式 -->
+			<fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern>
+			<!-- 日志最大的历史 60天 -->
+			<maxHistory>60</maxHistory>
+		</rollingPolicy>
+		<encoder>
+			<pattern>${log.pattern}</pattern>
+		</encoder>
+		<filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <!-- 过滤的级别 -->
+            <level>INFO</level>
+            <!-- 匹配时的操作:接收(记录) -->
+            <onMatch>ACCEPT</onMatch>
+            <!-- 不匹配时的操作:拒绝(不记录) -->
+            <onMismatch>DENY</onMismatch>
+        </filter>
+	</appender>
+	
+	<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
+	    <file>${log.path}/sys-error.log</file>
+        <!-- 循环政策:基于时间创建日志文件 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 日志文件名格式 -->
+            <fileNamePattern>${log.path}/sys-error.%d{yyyy-MM-dd}.log</fileNamePattern>
+			<!-- 日志最大的历史 60天 -->
+			<maxHistory>60</maxHistory>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${log.pattern}</pattern>
+        </encoder>
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <!-- 过滤的级别 -->
+            <level>ERROR</level>
+			<!-- 匹配时的操作:接收(记录) -->
+            <onMatch>ACCEPT</onMatch>
+			<!-- 不匹配时的操作:拒绝(不记录) -->
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+	
+	<!-- 用户访问日志输出  -->
+    <appender name="sys-user" class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<file>${log.path}/sys-user.log</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 按天回滚 daily -->
+            <fileNamePattern>${log.path}/sys-user.%d{yyyy-MM-dd}.log</fileNamePattern>
+            <!-- 日志最大的历史 60天 -->
+            <maxHistory>60</maxHistory>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${log.pattern}</pattern>
+        </encoder>
+    </appender>
+	
+	<!-- 系统模块日志级别控制  -->
+    <logger name="com.ydd" level="INFO" >
+    </logger>
+	<!-- Spring日志级别控制  -->
+	<logger name="org.springframework" level="WARN" />
+    <logger name="org.apache.ibatis" level="ERROR"></logger>
+    <logger name="java.sql" level="INFO"></logger>
+    <!--log4jdbc -->
+    <logger name="jdbc.sqltiming" level="ERROR"/>
+
+    <root level="info">
+        <appender-ref ref="console" />
+    </root>
+
+    <!--系统操作日志-->
+    <root level="info">
+        <appender-ref ref="file_info" />
+    </root>
+
+    <root level="error">
+        <appender-ref ref="file_error" />
+    </root>
+
+	<!--系统用户操作日志-->
+    <logger name="sys-user" level="INFO">
+        <appender-ref ref="sys-user"/>
+    </logger>
+</configuration>